mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[hp|compute_v2] Fix mocks for server addresses. Fix create_server and server model to accept networks and availability zones params.
This commit is contained in:
parent
13e312116f
commit
36ec19f035
4 changed files with 37 additions and 15 deletions
|
@ -28,6 +28,10 @@ module Fog
|
|||
attribute :security_groups
|
||||
attribute :config_drive
|
||||
attribute :user_data_encoded
|
||||
attribute :availability_zone, :aliases => 'OS-EXT-AZ:availability_zone'
|
||||
attribute :power_state, :aliases => 'OS-EXT-STS:power_state'
|
||||
attribute :task_state, :aliases => 'OS-EXT-STS:task_state'
|
||||
attribute :vm_state, :aliases => 'OS-EXT-STS:vm_state'
|
||||
# these are implemented as methods
|
||||
attribute :image_id
|
||||
attribute :flavor_id
|
||||
|
@ -44,6 +48,7 @@ module Fog
|
|||
self.min_count = attributes.delete(:min_count)
|
||||
self.max_count = attributes.delete(:max_count)
|
||||
#self.block_device_mapping = attributes.delete(:block_device_mapping)
|
||||
self.networks = attributes.delete(:networks)
|
||||
super
|
||||
end
|
||||
|
||||
|
@ -167,6 +172,10 @@ module Fog
|
|||
# @block_device_mapping = new_block_device_mapping
|
||||
#end
|
||||
|
||||
def networks=(new_networks)
|
||||
@networks = new_networks
|
||||
end
|
||||
|
||||
def ready?
|
||||
self.state == 'ACTIVE'
|
||||
end
|
||||
|
@ -233,7 +242,9 @@ module Fog
|
|||
'key_name' => key_name,
|
||||
'security_groups' => security_groups,
|
||||
'config_drive' => config_drive,
|
||||
'user_data' => user_data_encoded
|
||||
'user_data' => user_data_encoded,
|
||||
'availability_zone' => availability_zone,
|
||||
'networks' => @networks
|
||||
}
|
||||
options = options.reject {|key, value| value.nil?}
|
||||
# either create a regular server or a persistent server based on input
|
||||
|
|
|
@ -122,12 +122,20 @@ module Fog
|
|||
if options['security_groups']
|
||||
sec_group_name = options['security_groups'][0]
|
||||
else
|
||||
sec_group_name = "default"
|
||||
sec_group_name = 'default'
|
||||
end
|
||||
|
||||
# add the default network
|
||||
addresses = {'hpcloud' => [{'version'=>4, 'addr'=>Fog::HP::Mock.ip_address}] }
|
||||
if networks = options['networks']
|
||||
networks.each do |_|
|
||||
addresses["Network #{rand(100)}"] = [{'version'=>4, 'addr'=>Fog::HP::Mock.ip_address}]
|
||||
end
|
||||
end
|
||||
|
||||
id = Fog::HP::Mock.uuid.to_s
|
||||
data = {
|
||||
'addresses' => { "custom"=>[{"version"=>4, "addr"=>Fog::HP::Mock.ip_address}] },
|
||||
'addresses' => addresses,
|
||||
'flavor' => {"id"=>"#{flavor_id}", "links"=>[{"href"=>"http://nova1:8774/admin/flavors/#{flavor_id}", "rel"=>"bookmark"}]},
|
||||
'id' => id,
|
||||
'image' => {"id"=>"#{image_id}", "links"=>[{"href"=>"http://nova1:8774/admin/images/#{image_id}", "rel"=>"bookmark"}]},
|
||||
|
|
|
@ -7,17 +7,19 @@ module Fog
|
|||
#
|
||||
# ==== Parameters
|
||||
# * 'server_id'<~String> - UUId of server to list addresses for
|
||||
# * 'network_id'<~String> - UUId of the network to list addresses for
|
||||
# * 'network_name'<~String> - Name 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)
|
||||
# * 'version'<~Integer> - IP version, 4 or 6
|
||||
# * 'addr'<~String> - IP address
|
||||
def list_server_addresses_by_network(server_id, network_name)
|
||||
request(
|
||||
:expects => [200,203],
|
||||
:method => 'GET',
|
||||
:path => "servers/#{server_id}/ips/#{network_id}"
|
||||
:path => "servers/#{server_id}/ips/#{Fog::HP.escape(network_name)}"
|
||||
)
|
||||
end
|
||||
|
||||
|
@ -25,12 +27,13 @@ module Fog
|
|||
|
||||
class Mock
|
||||
|
||||
def list_server_addresses_by_network(server_id, network_id)
|
||||
def list_server_addresses_by_network(server_id, network_name)
|
||||
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'] }
|
||||
# get the addresses for the network, which is 'custom' in case of mocks
|
||||
address = server['addresses'].select { |key, _| key == network_name}
|
||||
response.body = address
|
||||
response
|
||||
else
|
||||
raise Fog::Compute::HPV2::NotFound
|
||||
|
|
|
@ -2,7 +2,7 @@ Shindo.tests("Fog::Compute::HPV2 | server address requests", ['hp', 'v2', 'compu
|
|||
|
||||
service = Fog::Compute.new(:provider => 'HP', :version => :v2)
|
||||
|
||||
@base_image_id = ENV["BASE_IMAGE_ID"] || "7f60b54c-cd15-433f-8bed-00acbcd25a17"
|
||||
@base_image_id = ENV['BASE_IMAGE_ID'] || '7f60b54c-cd15-433f-8bed-00acbcd25a17'
|
||||
|
||||
tests('success') do
|
||||
@server_name = 'fogaddresstests'
|
||||
|
@ -19,12 +19,12 @@ Shindo.tests("Fog::Compute::HPV2 | server address requests", ['hp', 'v2', 'compu
|
|||
end
|
||||
|
||||
# the network name is currently named 'private'
|
||||
tests("#list_server_addresses(#{@server_id})").formats({'addresses' => {'custom' => [{'version' => Integer, 'addr' => String}]}}) do
|
||||
tests("#list_server_addresses(#{@server_id})").formats({'addresses' => {'hpcloud' => [{'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
|
||||
tests("#list_server_addresses_by_network(#{@server_id}, 'network_name')").succeeds do
|
||||
service.list_server_addresses_by_network(@server_id, 'network_name').body
|
||||
end
|
||||
|
||||
service.delete_server(@server_id)
|
||||
|
@ -37,8 +37,8 @@ Shindo.tests("Fog::Compute::HPV2 | server address requests", ['hp', 'v2', 'compu
|
|||
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')
|
||||
tests("#list_server_addresses_by_network(0, 'network_name')").raises(Fog::Compute::HPV2::NotFound) do
|
||||
service.list_server_addresses_by_network(0, 'network_name')
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue