From fd939faf6b7b5add74b0fce2c916d6999b8fe2c9 Mon Sep 17 00:00:00 2001 From: Hunter Nield Date: Fri, 24 Feb 2012 11:37:35 +0800 Subject: [PATCH] [Openstack|Compute] Minor address cleanup --- lib/fog/openstack/models/compute/address.rb | 2 +- lib/fog/openstack/models/compute/server.rb | 10 ++++++++ .../requests/compute/allocate_address.rb | 6 ++--- .../requests/compute/associate_address.rb | 11 ++------- .../requests/compute/disassociate_address.rb | 13 ++--------- .../requests/compute/list_address_pools.rb | 23 +++++++++++++++++++ .../requests/compute/list_all_addresses.rb | 2 +- .../requests/compute/release_address.rb | 2 +- 8 files changed, 43 insertions(+), 26 deletions(-) create mode 100644 lib/fog/openstack/requests/compute/list_address_pools.rb diff --git a/lib/fog/openstack/models/compute/address.rb b/lib/fog/openstack/models/compute/address.rb index b9dbb97b7..e4bf882c5 100644 --- a/lib/fog/openstack/models/compute/address.rb +++ b/lib/fog/openstack/models/compute/address.rb @@ -9,6 +9,7 @@ module Fog identity :id attribute :ip + attribute :pool attribute :fixed_ip attribute :instance_id @@ -20,7 +21,6 @@ module Fog def destroy requires :id - connection.release_address(id) true end diff --git a/lib/fog/openstack/models/compute/server.rb b/lib/fog/openstack/models/compute/server.rb index f7c14203c..49b8611ab 100644 --- a/lib/fog/openstack/models/compute/server.rb +++ b/lib/fog/openstack/models/compute/server.rb @@ -180,6 +180,16 @@ module Fog connection.live_migrate_server(id, host, block_migration, disk_over_commit) end + def associate_address(floating_ip) + requires :id + connection.associate_address id, floating_ip + end + + def disassociate_address(floating_ip) + requires :id + connection.disassociate_address id, floating_ip + end + def min_count=(new_min_count) @min_count = new_min_count end diff --git a/lib/fog/openstack/requests/compute/allocate_address.rb b/lib/fog/openstack/requests/compute/allocate_address.rb index c0819c90e..c07034363 100644 --- a/lib/fog/openstack/requests/compute/allocate_address.rb +++ b/lib/fog/openstack/requests/compute/allocate_address.rb @@ -3,11 +3,11 @@ module Fog class OpenStack class Real - def allocate_address + def allocate_address(pool = nil) request( - :body => nil, - :expects => 200, + :body => MultiJson.encode({'pool' => pool}), + :expects => [200, 202], :method => 'POST', :path => 'os-floating-ips.json' ) diff --git a/lib/fog/openstack/requests/compute/associate_address.rb b/lib/fog/openstack/requests/compute/associate_address.rb index b177f4a11..eb2fd2d99 100644 --- a/lib/fog/openstack/requests/compute/associate_address.rb +++ b/lib/fog/openstack/requests/compute/associate_address.rb @@ -4,15 +4,8 @@ module Fog class Real def associate_address(server_id, ip_address) - body = { 'addFloatingIp' => { 'server' => server_id, 'address' => ip_address }} - - request( - :body => MultiJson.encode(body), - :expects => 202, - :method => 'POST', - :path => "servers/#{server_id}/action.json" - ) - + body = { "addFloatingIp" => {"address" => ip_address}} + server_action(server_id, body) end end diff --git a/lib/fog/openstack/requests/compute/disassociate_address.rb b/lib/fog/openstack/requests/compute/disassociate_address.rb index d5e62a901..8f380a2f0 100644 --- a/lib/fog/openstack/requests/compute/disassociate_address.rb +++ b/lib/fog/openstack/requests/compute/disassociate_address.rb @@ -4,17 +4,8 @@ module Fog class Real def disassociate_address(server_id, ip_address) - - body = { 'removeFloatingIp' => { 'server' => server_id, 'address' => ip_address }} - - request( - :body => MultiJson.encode(body), - :expects => 202, - :method => 'POST', - :path => "servers/#{server_id}/action.json" - ) - - + body = { "removeFloatingIp" => {"address" => ip_address}} + server_action(server_id, body) end end diff --git a/lib/fog/openstack/requests/compute/list_address_pools.rb b/lib/fog/openstack/requests/compute/list_address_pools.rb new file mode 100644 index 000000000..ad3b276cd --- /dev/null +++ b/lib/fog/openstack/requests/compute/list_address_pools.rb @@ -0,0 +1,23 @@ +module Fog + module Compute + class OpenStack + class Real + + def list_address_pools + request( + :expects => [200, 203], + :method => 'GET', + :path => "os-floating-ip-pools" + ) + + end + + end + + class Mock + + + end + end + end +end diff --git a/lib/fog/openstack/requests/compute/list_all_addresses.rb b/lib/fog/openstack/requests/compute/list_all_addresses.rb index 168e4c15f..d8c92147a 100644 --- a/lib/fog/openstack/requests/compute/list_all_addresses.rb +++ b/lib/fog/openstack/requests/compute/list_all_addresses.rb @@ -5,7 +5,7 @@ module Fog def list_all_addresses(server_id) request( - :expects => 200, + :expects => [200, 203], :method => 'GET', :path => "os-floating-ips.json" ) diff --git a/lib/fog/openstack/requests/compute/release_address.rb b/lib/fog/openstack/requests/compute/release_address.rb index 564bc4d25..245e8a289 100644 --- a/lib/fog/openstack/requests/compute/release_address.rb +++ b/lib/fog/openstack/requests/compute/release_address.rb @@ -5,7 +5,7 @@ module Fog def release_address(address_id) request( - :expects => 202, + :expects => [200, 202], :method => 'DELETE', :path => "os-floating-ips/#{address_id}" )