From 8ca5621ba425b6bada0c7fa4c8ffa3190f07b883 Mon Sep 17 00:00:00 2001 From: Ladislav Smola Date: Tue, 15 Dec 2015 10:41:50 +0100 Subject: [PATCH] OpenStack add server evacuate action OpenStack add server evacuate action --- lib/fog/openstack/compute.rb | 1 + lib/fog/openstack/models/compute/server.rb | 5 ++++ .../requests/compute/evacuate_server.rb | 26 +++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 lib/fog/openstack/requests/compute/evacuate_server.rb diff --git a/lib/fog/openstack/compute.rb b/lib/fog/openstack/compute.rb index 702544e85..e5d9e6d1f 100644 --- a/lib/fog/openstack/compute.rb +++ b/lib/fog/openstack/compute.rb @@ -106,6 +106,7 @@ module Fog request :get_vnc_console request :live_migrate_server request :migrate_server + request :evacuate_server # Service CRUD request :list_services diff --git a/lib/fog/openstack/models/compute/server.rb b/lib/fog/openstack/models/compute/server.rb index be064dfbb..4e4246d03 100644 --- a/lib/fog/openstack/models/compute/server.rb +++ b/lib/fog/openstack/models/compute/server.rb @@ -292,6 +292,11 @@ module Fog service.live_migrate_server(id, host, block_migration, disk_over_commit) end + def evacuate(host, on_shared_storage, admin_password = nil) + requires :id + service.evacuate_server(id, host, on_shared_storage, admin_password) + end + def associate_address(floating_ip) requires :id service.associate_address id, floating_ip diff --git a/lib/fog/openstack/requests/compute/evacuate_server.rb b/lib/fog/openstack/requests/compute/evacuate_server.rb new file mode 100644 index 000000000..9458b9a85 --- /dev/null +++ b/lib/fog/openstack/requests/compute/evacuate_server.rb @@ -0,0 +1,26 @@ +module Fog + module Compute + class OpenStack + class Real + def evacuate_server(server_id, host, on_shared_storage, admin_password = nil) + body = { + 'evacuate' => { + 'host' => host, + 'onSharedStorage' => on_shared_storage, + 'admin_password' => admin_password, + } + } + server_action(server_id, body) + end + end + + class Mock + def evacuate_server(server_id, host, on_shared_storage, admin_password = nil) + response = Excon::Response.new + response.status = 202 + response + end + end + end + end +end