From f83b4885e9e8d7643fd2a291ab0d17c713f66528 Mon Sep 17 00:00:00 2001 From: Sergio Rubio Date: Tue, 26 Feb 2013 20:09:45 +0100 Subject: [PATCH] [digitalocean|compute] Implement missing requests - power_off_server - power_on_server - shutdown_server Added required tests --- lib/fog/digitalocean/compute.rb | 3 ++ .../requests/compute/power_off_server.rb | 25 +++++++++++++++ .../requests/compute/power_on_server.rb | 25 +++++++++++++++ .../requests/compute/shutdown_server.rb | 25 +++++++++++++++ .../requests/compute/power_state_tests.rb | 31 +++++++++++++++++++ 5 files changed, 109 insertions(+) create mode 100644 lib/fog/digitalocean/requests/compute/power_off_server.rb create mode 100644 lib/fog/digitalocean/requests/compute/power_on_server.rb create mode 100644 lib/fog/digitalocean/requests/compute/shutdown_server.rb create mode 100644 tests/digitalocean/requests/compute/power_state_tests.rb diff --git a/lib/fog/digitalocean/compute.rb b/lib/fog/digitalocean/compute.rb index 70c7f8ad8..cf77223cf 100644 --- a/lib/fog/digitalocean/compute.rb +++ b/lib/fog/digitalocean/compute.rb @@ -30,6 +30,9 @@ module Fog request :destroy_server request :reboot_server request :power_cycle_server + request :power_off_server + request :power_on_server + request :shutdown_server # request :digitalocean_resize diff --git a/lib/fog/digitalocean/requests/compute/power_off_server.rb b/lib/fog/digitalocean/requests/compute/power_off_server.rb new file mode 100644 index 000000000..001ddd5da --- /dev/null +++ b/lib/fog/digitalocean/requests/compute/power_off_server.rb @@ -0,0 +1,25 @@ +module Fog + module Compute + class DigitalOcean + class Real + + def power_off_server( id ) + request( + :expects => [200], + :method => 'GET', + :path => "droplets/#{id}/power_off" + ) + end + + end + + class Mock + + def power_off_server( id ) + Fog::Mock.not_implemented + end + + end + end + end +end diff --git a/lib/fog/digitalocean/requests/compute/power_on_server.rb b/lib/fog/digitalocean/requests/compute/power_on_server.rb new file mode 100644 index 000000000..6d0beca7e --- /dev/null +++ b/lib/fog/digitalocean/requests/compute/power_on_server.rb @@ -0,0 +1,25 @@ +module Fog + module Compute + class DigitalOcean + class Real + + def power_on_server( id ) + request( + :expects => [200], + :method => 'GET', + :path => "droplets/#{id}/power_on" + ) + end + + end + + class Mock + + def power_on_server( id ) + Fog::Mock.not_implemented + end + + end + end + end +end diff --git a/lib/fog/digitalocean/requests/compute/shutdown_server.rb b/lib/fog/digitalocean/requests/compute/shutdown_server.rb new file mode 100644 index 000000000..8448c7889 --- /dev/null +++ b/lib/fog/digitalocean/requests/compute/shutdown_server.rb @@ -0,0 +1,25 @@ +module Fog + module Compute + class DigitalOcean + class Real + + def shutdown_server( id ) + request( + :expects => [200], + :method => 'GET', + :path => "droplets/#{id}/shutdown" + ) + end + + end + + class Mock + + def shutdown_server( id ) + Fog::Mock.not_implemented + end + + end + end + end +end diff --git a/tests/digitalocean/requests/compute/power_state_tests.rb b/tests/digitalocean/requests/compute/power_state_tests.rb new file mode 100644 index 000000000..8a9e7f867 --- /dev/null +++ b/tests/digitalocean/requests/compute/power_state_tests.rb @@ -0,0 +1,31 @@ +Shindo.tests('Fog::Compute[:digitalocean] | reboot_server request', ['digitalocean', 'compute']) do + + service = Fog::Compute[:digitalocean] + server = fog_test_server + + tests('success') do + + test('#power_off_server') do + service.power_off_server(server.id) + server.wait_for(120) { !ready? } + server.status == 'off' + end + + test('#power_on_server') do + service.power_on_server server.id + server.wait_for(120) { ready? } + server.ready? + end + + test('#shutdown_server') do + service.shutdown_server server.id + server.wait_for(120) { status == 'off' } + server.status == 'off' + end + + # restore status + server.start + + end + +end