mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
OpenStack: Add missing metadatum requests.
Add missing delete_meta and update_meta calls to the OpenStack API. Also updates the model with some tests on these new calls.
This commit is contained in:
parent
60fefe7b80
commit
8509d5c05d
4 changed files with 135 additions and 3 deletions
|
@ -100,6 +100,10 @@ module Fog
|
|||
request :update_metadata
|
||||
request :delete_metadata
|
||||
|
||||
# Metadatam
|
||||
request :delete_meta
|
||||
request :update_meta
|
||||
|
||||
# Address
|
||||
request :list_addresses
|
||||
request :list_address_pools
|
||||
|
|
43
lib/fog/openstack/requests/compute/delete_meta.rb
Normal file
43
lib/fog/openstack/requests/compute/delete_meta.rb
Normal file
|
@ -0,0 +1,43 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class OpenStack
|
||||
|
||||
class Real
|
||||
|
||||
def delete_meta(collection_name, parent_id, key)
|
||||
request(
|
||||
:expects => 204,
|
||||
:method => 'DELETE',
|
||||
:path => "#{collection_name}/#{parent_id}/metadata/#{key}"
|
||||
)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Mock
|
||||
|
||||
def delete_meta(collection_name, parent_id, key)
|
||||
|
||||
if collection_name == "images" then
|
||||
if not list_images_detail.body['images'].detect {|_| _['id'] == parent_id}
|
||||
raise Fog::Compute::OpenStack::NotFound
|
||||
end
|
||||
end
|
||||
|
||||
if collection_name == "servers" then
|
||||
if not list_servers_detail.body['servers'].detect {|_| _['id'] == parent_id}
|
||||
raise Fog::Compute::OpenStack::NotFound
|
||||
end
|
||||
end
|
||||
|
||||
response = Excon::Response.new
|
||||
response.status = 204
|
||||
response
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
46
lib/fog/openstack/requests/compute/update_meta.rb
Normal file
46
lib/fog/openstack/requests/compute/update_meta.rb
Normal file
|
@ -0,0 +1,46 @@
|
|||
module Fog
|
||||
module Compute
|
||||
class OpenStack
|
||||
|
||||
class Real
|
||||
|
||||
def update_meta(collection_name, parent_id, key, value)
|
||||
request(
|
||||
:body => Fog::JSON.encode({ 'meta' => {key => value}}),
|
||||
:expects => 200,
|
||||
:method => 'PUT',
|
||||
:path => "#{collection_name}/#{parent_id}/metadata/#{key}"
|
||||
)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Mock
|
||||
|
||||
def update_meta(collection_name, parent_id, key, value)
|
||||
|
||||
if collection_name == "images" then
|
||||
if not list_images_detail.body['images'].detect {|_| _['id'] == parent_id}
|
||||
raise Fog::Compute::OpenStack::NotFound
|
||||
end
|
||||
end
|
||||
|
||||
if collection_name == "servers" then
|
||||
if not list_servers_detail.body['servers'].detect {|_| _['id'] == parent_id}
|
||||
raise Fog::Compute::OpenStack::NotFound
|
||||
end
|
||||
end
|
||||
|
||||
#FIXME join w/ existing metadata here
|
||||
response = Excon::Response.new
|
||||
response.body = { "metadata" => {key => value} }
|
||||
response.status = 200
|
||||
response
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,6 +1,7 @@
|
|||
Shindo.tests("Fog::Compute[:openstack] | server", ['openstack']) do
|
||||
|
||||
tests('success') do
|
||||
|
||||
tests('#security_groups').succeeds do
|
||||
fog = Fog::Compute[:openstack]
|
||||
|
||||
|
@ -12,7 +13,6 @@ Shindo.tests("Fog::Compute[:openstack] | server", ['openstack']) do
|
|||
image = fog.images.first.id
|
||||
|
||||
server = fog.servers.new(:name => 'test server',
|
||||
:metadata => {"foo" => "bar"},
|
||||
:flavor_ref => flavor,
|
||||
:image_ref => image)
|
||||
|
||||
|
@ -23,8 +23,6 @@ Shindo.tests("Fog::Compute[:openstack] | server", ['openstack']) do
|
|||
found_groups = server.security_groups
|
||||
returns(1) { found_groups.length }
|
||||
|
||||
returns(1) { server.metadata.length }
|
||||
|
||||
group = found_groups.first
|
||||
returns('my_group') { group.name }
|
||||
returns(server.connection) { group.connection }
|
||||
|
@ -42,6 +40,47 @@ Shindo.tests("Fog::Compute[:openstack] | server", ['openstack']) do
|
|||
my_group.destroy if my_group
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
tests('#metadata').succeeds do
|
||||
fog = Fog::Compute[:openstack]
|
||||
|
||||
begin
|
||||
flavor = fog.flavors.first.id
|
||||
image = fog.images.first.id
|
||||
|
||||
server = fog.servers.new(:name => 'test server',
|
||||
:metadata => {"foo" => "bar"},
|
||||
:flavor_ref => flavor,
|
||||
:image_ref => image)
|
||||
|
||||
server.save
|
||||
|
||||
returns(1) { server.metadata.length }
|
||||
|
||||
server.metadata.each do |datum|
|
||||
datum.value = 'foo'
|
||||
datum.save
|
||||
datum.destroy
|
||||
end
|
||||
|
||||
ensure
|
||||
unless Fog.mocking? then
|
||||
server.destroy if server
|
||||
|
||||
begin
|
||||
fog.servers.get(server.id).wait_for do false end
|
||||
rescue Fog::Errors::Error
|
||||
# ignore, server went away
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue