1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

[hp|compute_v2] Add request methods for server addresses, along with tests.

This commit is contained in:
Rupak Ganguly 2013-05-06 16:49:08 -04:00
parent 9384161dc4
commit 36a6a2206c
4 changed files with 133 additions and 3 deletions

View file

@ -56,9 +56,8 @@ module Fog
request :list_images_detail
request :list_key_pairs
request :list_metadata
#request :list_server_addresses
#request :list_server_private_addresses
#request :list_server_public_addresses
request :list_server_addresses
request :list_server_addresses_by_network
#request :list_server_volumes
request :list_servers
request :list_servers_detail

View file

@ -0,0 +1,42 @@
module Fog
module Compute
class HPV2
class Real
# List all server addresses
#
# ==== Parameters
# * 'server_id'<~String> - UUId of server to list addresses for
#
# ==== Returns
# * response<~Excon::Response>:
# * body<~Hash>:
# * 'addresses'<~Hash>:
# * 'custom':<~Array> - IP addresses for the server. The network name can change based on setup.
def list_server_addresses(server_id)
request(
:expects => [200,203],
:method => 'GET',
:path => "servers/#{server_id}/ips"
)
end
end
class Mock
def list_server_addresses(server_id)
response = Excon::Response.new
if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
response.status = 200
response.body = { 'addresses' => server['addresses'] }
response
else
raise Fog::Compute::HPV2::NotFound
end
end
end
end
end
end

View file

@ -0,0 +1,43 @@
module Fog
module Compute
class HPV2
class Real
# List private server addresses
#
# ==== Parameters
# * 'server_id'<~String> - UUId of server to list addresses for
# * 'network_id'<~String> - UUId of the network to list addresses for
#
# ==== Returns
# * response<~Excon::Response>:
# * body<~Hash>:
# * 'custom'<~Array> - IP addresses for the server, for the network. The network name can change based on setup.
def list_server_addresses_by_network(server_id, network_id)
request(
:expects => [200,203],
:method => 'GET',
:path => "servers/#{server_id}/ips/#{network_id}"
)
end
end
class Mock
def list_server_addresses_by_network(server_id, network_id)
response = Excon::Response.new
if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
response.status = 200
# since we cannot get to networks from compute, just return all addresses
response.body = { 'addresses' => server['addresses'] }
response
else
raise Fog::Compute::HPV2::NotFound
end
end
end
end
end
end

View file

@ -0,0 +1,46 @@
Shindo.tests("Fog::Compute::HPV2 | server address requests", ['hp', 'v2', 'compute']) do
service = Fog::Compute.new(:provider => 'HP', :version => :v2)
@base_image_id = ENV["BASE_IMAGE_ID"] || "7f60b54c-cd15-433f-8bed-00acbcd25a17"
tests('success') do
@server_name = 'fogaddresstests'
@server_id = nil
# check to see if there are any existing servers, otherwise create one
if (data = service.list_servers(:status => 'ACTIVE').body['servers'][0])
@server_id = data['id']
else
#@server = service.servers.create(:name => @server_name, :flavor_id => 100, :image_id => @base_image_id)
#@server.wait_for { ready? }
data = service.create_server(@server_name, 100, @base_image_id).body['server']
@server_id = data['id']
end
# the network name is currently named 'private'
tests("#list_server_addresses(#{@server_id})").formats({'addresses' => {'custom' => [{'version' => Integer, 'addr' => String}]}}) do
service.list_server_addresses(@server_id).body
end
tests("#list_server_addresses_by_network(#{@server_id}, 'network_uuid')").formats({'addresses' => {'custom' => [{'version' => Integer, 'addr' => String}]}}) do
service.list_server_addresses_by_network(@server_id, 'network_uuid').body
end
service.delete_server(@server_id)
end
tests('failure') do
tests('#list_server_addresses(0)').raises(Fog::Compute::HPV2::NotFound) do
service.list_server_addresses(0)
end
tests("#list_server_addresses_by_network(0, 'network_uuid')").raises(Fog::Compute::HPV2::NotFound) do
service.list_server_addresses_by_network(0, 'network_uuid')
end
end
end