mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[terremark] Flesh out the power control options of a server.
Make shutdown work.
This commit is contained in:
parent
4ca08fea11
commit
960dca64b2
4 changed files with 87 additions and 47 deletions
|
@ -25,12 +25,60 @@ module Fog
|
||||||
@status == '2'
|
@status == '2'
|
||||||
end
|
end
|
||||||
|
|
||||||
def reboot
|
def on?
|
||||||
|
@status == '4'
|
||||||
|
end
|
||||||
|
|
||||||
|
def off?
|
||||||
|
@status == '2'
|
||||||
|
end
|
||||||
|
|
||||||
|
def power_on(options = {})
|
||||||
requires :id
|
requires :id
|
||||||
connection.reset(@id)
|
begin
|
||||||
|
connection.power_on(@id)
|
||||||
|
rescue Excon::Errors::InternalServerError => e
|
||||||
|
#Frankly we shouldn't get here ...
|
||||||
|
raise e unless e.to_s =~ /because it is already powered on/
|
||||||
|
end
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def power_off
|
||||||
|
requires :id
|
||||||
|
begin
|
||||||
|
connection.power_off(@id)
|
||||||
|
rescue Excon::Errors::InternalServerError => e
|
||||||
|
#Frankly we shouldn't get here ...
|
||||||
|
raise e unless e.to_s =~ /because it is already powered off/
|
||||||
|
end
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def shutdown
|
||||||
|
requires :id
|
||||||
|
begin
|
||||||
|
connection.power_shutdown(@id)
|
||||||
|
rescue Excon::Errors::InternalServerError => e
|
||||||
|
#Frankly we shouldn't get here ...
|
||||||
|
raise e unless e.to_s =~ /because it is already powered off/
|
||||||
|
end
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def power_reset
|
||||||
|
requires :id
|
||||||
|
connection.power_reset(@id)
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def graceful_restart
|
||||||
|
requires :id
|
||||||
|
shutdown
|
||||||
|
wait_for { off? }
|
||||||
|
power_on
|
||||||
|
end
|
||||||
|
|
||||||
def save
|
def save
|
||||||
requires :name
|
requires :name
|
||||||
data = connection.instantiate_vapp(@name)
|
data = connection.instantiate_vapp(@name)
|
||||||
|
@ -48,7 +96,10 @@ module Fog
|
||||||
@id = new_href.split('/').last.to_i
|
@id = new_href.split('/').last.to_i
|
||||||
end
|
end
|
||||||
|
|
||||||
def type=(new_type); end
|
def type=(new_type); @type = new_type; end
|
||||||
|
def size=(new_size); @size = new_size; end
|
||||||
|
def IpAddress=(new_ipaddress); @IpAddress = new_ipaddress; end
|
||||||
|
def Links=(new_links); @Links = new_links; end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ module Fog
|
||||||
# * 'href'<~String> - href of owner
|
# * 'href'<~String> - href of owner
|
||||||
# * 'name'<~String> - name of owner
|
# * 'name'<~String> - name of owner
|
||||||
# * 'type'<~String> - type of owner
|
# * 'type'<~String> - type of owner
|
||||||
def reset(vapp_id)
|
def power_reset(vapp_id)
|
||||||
request(
|
request(
|
||||||
:expects => 202,
|
:expects => 202,
|
||||||
:method => 'POST',
|
:method => 'POST',
|
32
lib/fog/terremark/requests/shared/power_shutdown.rb
Normal file
32
lib/fog/terremark/requests/shared/power_shutdown.rb
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
module Fog
|
||||||
|
module Terremark
|
||||||
|
module Shared
|
||||||
|
module Real
|
||||||
|
|
||||||
|
# Shutdown a vapp
|
||||||
|
#
|
||||||
|
# ==== Parameters
|
||||||
|
# * vapp_id<~Integer> - Id of vapp to shutdown
|
||||||
|
#
|
||||||
|
# ==== Returns
|
||||||
|
# Nothing
|
||||||
|
def power_shutdown(vapp_id)
|
||||||
|
request(
|
||||||
|
:expects => 204,
|
||||||
|
:method => 'POST',
|
||||||
|
:path => "vApp/#{vapp_id}/power/action/shutdown"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
module Mock
|
||||||
|
|
||||||
|
def power_shutdown(vapp_id)
|
||||||
|
raise MockNotImplemented.new("Contributions welcome!")
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,43 +0,0 @@
|
||||||
module Fog
|
|
||||||
module Terremark
|
|
||||||
module Shared
|
|
||||||
module Real
|
|
||||||
|
|
||||||
# Shutdown a vapp
|
|
||||||
#
|
|
||||||
# ==== Parameters
|
|
||||||
# * vapp_id<~Integer> - Id of vapp to shutdown
|
|
||||||
#
|
|
||||||
# ==== Returns
|
|
||||||
# * response<~Excon::Response>:
|
|
||||||
# * body<~Hash>:
|
|
||||||
# * 'endTime'<~String> - endTime of task
|
|
||||||
# * 'href'<~String> - link to task
|
|
||||||
# * 'startTime'<~String> - startTime of task
|
|
||||||
# * 'status'<~String> - status of task
|
|
||||||
# * 'type'<~String> - type of task
|
|
||||||
# * 'Owner'<~String> -
|
|
||||||
# * 'href'<~String> - href of owner
|
|
||||||
# * 'name'<~String> - name of owner
|
|
||||||
# * 'type'<~String> - type of owner
|
|
||||||
def shutdown(vapp_id)
|
|
||||||
request(
|
|
||||||
:expects => 202,
|
|
||||||
:method => 'POST',
|
|
||||||
:parser => Fog::Parsers::Terremark::Shared::Task.new,
|
|
||||||
:path => "vApp/#{vapp_id}/power/action/shutdown"
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
module Mock
|
|
||||||
|
|
||||||
def shutdown(vapp_id)
|
|
||||||
raise MockNotImplemented.new("Contributions welcome!")
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Add table
Reference in a new issue