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'
|
||||
end
|
||||
|
||||
def reboot
|
||||
def on?
|
||||
@status == '4'
|
||||
end
|
||||
|
||||
def off?
|
||||
@status == '2'
|
||||
end
|
||||
|
||||
def power_on(options = {})
|
||||
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
|
||||
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
|
||||
requires :name
|
||||
data = connection.instantiate_vapp(@name)
|
||||
|
@ -48,7 +96,10 @@ module Fog
|
|||
@id = new_href.split('/').last.to_i
|
||||
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
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ module Fog
|
|||
# * 'href'<~String> - href of owner
|
||||
# * 'name'<~String> - name of owner
|
||||
# * 'type'<~String> - type of owner
|
||||
def reset(vapp_id)
|
||||
def power_reset(vapp_id)
|
||||
request(
|
||||
:expects => 202,
|
||||
: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