mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[xenserver] add missing host operations (enable/disable, reboot, shutdown)
This commit is contained in:
parent
9db7f34aa8
commit
a3edb0a601
9 changed files with 216 additions and 0 deletions
|
@ -63,6 +63,10 @@ module Fog
|
||||||
request :unplug_pbd
|
request :unplug_pbd
|
||||||
request :destroy_sr
|
request :destroy_sr
|
||||||
request :create_sr
|
request :create_sr
|
||||||
|
request :reboot_host
|
||||||
|
request :disable_host
|
||||||
|
request :enable_host
|
||||||
|
request :shutdown_host
|
||||||
|
|
||||||
class Real
|
class Real
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,67 @@ module Fog
|
||||||
Fog::Compute::XenServer::HostMetrics.new(rec)
|
Fog::Compute::XenServer::HostMetrics.new(rec)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Reboot the host disabling it first unless auto_disable is
|
||||||
|
# set to false
|
||||||
|
#
|
||||||
|
# This function can only be called if there are no currently running
|
||||||
|
# VMs on the host and it is disabled. If there are running VMs, it will
|
||||||
|
# raise an exception.
|
||||||
|
#
|
||||||
|
# @param [Boolean] auto_disable disable the host first
|
||||||
|
#
|
||||||
|
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
||||||
|
#
|
||||||
|
def reboot(auto_disable = true)
|
||||||
|
disable if auto_disable
|
||||||
|
connection.reboot_host(reference)
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Puts the host into a state in which no new VMs can be started.
|
||||||
|
# Currently active VMs on the host continue to execute.
|
||||||
|
#
|
||||||
|
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
||||||
|
#
|
||||||
|
def disable
|
||||||
|
connection.disable_host(reference)
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Puts the host into a state in which new VMs can be started.
|
||||||
|
#
|
||||||
|
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
||||||
|
#
|
||||||
|
def enable
|
||||||
|
connection.enable_host(reference)
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Shutdown the host disabling it first unless auto_disable is
|
||||||
|
# set to false.
|
||||||
|
#
|
||||||
|
# This function can only be called if there are no currently running
|
||||||
|
# VMs on the host and it is disabled. If there are running VMs, it will
|
||||||
|
# raise an exception.
|
||||||
|
#
|
||||||
|
# @param [Boolean] auto_disable disable the host first
|
||||||
|
#
|
||||||
|
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
||||||
|
#
|
||||||
|
def shutdown(auto_disable = true)
|
||||||
|
disable if auto_disable
|
||||||
|
connection.shutdown_host(reference)
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_attribute(name, *val)
|
||||||
|
data = connection.set_attribute( 'host', reference, name, *val )
|
||||||
|
# Do not reload automatically for performance reasons
|
||||||
|
# We can set multiple attributes at the same time and
|
||||||
|
# then reload manually
|
||||||
|
#reload
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
29
lib/fog/xenserver/requests/compute/disable_host.rb
Normal file
29
lib/fog/xenserver/requests/compute/disable_host.rb
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
module Fog
|
||||||
|
module Compute
|
||||||
|
class XenServer
|
||||||
|
|
||||||
|
class Real
|
||||||
|
|
||||||
|
#
|
||||||
|
# Puts the host into a state in which no new VMs can be started.
|
||||||
|
# Currently active VMs on the host continue to execute.
|
||||||
|
#
|
||||||
|
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
||||||
|
#
|
||||||
|
def disable_host( ref )
|
||||||
|
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "host.disable"}, ref)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
class Mock
|
||||||
|
|
||||||
|
def disable_host( ref )
|
||||||
|
Fog::Mock.not_implemented
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
28
lib/fog/xenserver/requests/compute/enable_host.rb
Normal file
28
lib/fog/xenserver/requests/compute/enable_host.rb
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
module Fog
|
||||||
|
module Compute
|
||||||
|
class XenServer
|
||||||
|
|
||||||
|
class Real
|
||||||
|
|
||||||
|
#
|
||||||
|
# Puts the host into a state in which VMs can be started.
|
||||||
|
#
|
||||||
|
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
||||||
|
#
|
||||||
|
def enable_host( ref )
|
||||||
|
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "host.enable"}, ref)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
class Mock
|
||||||
|
|
||||||
|
def enable_host( ref )
|
||||||
|
Fog::Mock.not_implemented
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
23
lib/fog/xenserver/requests/compute/reboot_host.rb
Normal file
23
lib/fog/xenserver/requests/compute/reboot_host.rb
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
module Fog
|
||||||
|
module Compute
|
||||||
|
class XenServer
|
||||||
|
|
||||||
|
class Real
|
||||||
|
|
||||||
|
def reboot_host( ref )
|
||||||
|
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "host.reboot"}, ref)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
class Mock
|
||||||
|
|
||||||
|
def reboot_host( ref )
|
||||||
|
Fog::Mock.not_implemented
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
23
lib/fog/xenserver/requests/compute/shutdown_host.rb
Normal file
23
lib/fog/xenserver/requests/compute/shutdown_host.rb
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
module Fog
|
||||||
|
module Compute
|
||||||
|
class XenServer
|
||||||
|
|
||||||
|
class Real
|
||||||
|
|
||||||
|
def shutdown_host( ref )
|
||||||
|
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "host.shutdown"}, ref)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
class Mock
|
||||||
|
|
||||||
|
def shutdown_host( ref )
|
||||||
|
Fog::Mock.not_implemented
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -7,6 +7,9 @@ Shindo.tests('Fog::Compute[:xenserver] | host model', ['xenserver']) do
|
||||||
tests('The host model should') do
|
tests('The host model should') do
|
||||||
tests('have the action') do
|
tests('have the action') do
|
||||||
test('reload') { host.respond_to? 'reload' }
|
test('reload') { host.respond_to? 'reload' }
|
||||||
|
test('shutdown') { host.respond_to? 'shutdown' }
|
||||||
|
test('disable') { host.respond_to? 'disable' }
|
||||||
|
test('reboot') { host.respond_to? 'reboot' }
|
||||||
end
|
end
|
||||||
|
|
||||||
tests('have attributes') do
|
tests('have attributes') do
|
||||||
|
@ -65,6 +68,19 @@ Shindo.tests('Fog::Compute[:xenserver] | host model', ['xenserver']) do
|
||||||
test("object") { host.metrics.kind_of? Fog::Compute::XenServer::HostMetrics }
|
test("object") { host.metrics.kind_of? Fog::Compute::XenServer::HostMetrics }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
tests('be able to be') do
|
||||||
|
test('disable') do
|
||||||
|
host.disable
|
||||||
|
host.reload
|
||||||
|
host.enabled == false
|
||||||
|
end
|
||||||
|
test('enabled') do
|
||||||
|
host.enable
|
||||||
|
host.reload
|
||||||
|
host.enabled
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
16
tests/xenserver/requests/compute/disable_host_tests.rb
Normal file
16
tests/xenserver/requests/compute/disable_host_tests.rb
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
Shindo.tests('Fog::Compute[:xenserver] | disable_host request', ['xenserver']) do
|
||||||
|
|
||||||
|
compute = Fog::Compute[:xenserver]
|
||||||
|
host = compute.hosts.first
|
||||||
|
|
||||||
|
tests('#disable_host') do
|
||||||
|
test('disables the host') do
|
||||||
|
compute.disable_host host.reference
|
||||||
|
host.reload
|
||||||
|
!host.enabled
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
host.enable
|
||||||
|
end
|
16
tests/xenserver/requests/compute/enable_host_tests.rb
Normal file
16
tests/xenserver/requests/compute/enable_host_tests.rb
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
Shindo.tests('Fog::Compute[:xenserver] | enable_host request', ['xenserver']) do
|
||||||
|
|
||||||
|
compute = Fog::Compute[:xenserver]
|
||||||
|
host = compute.hosts.first
|
||||||
|
|
||||||
|
tests('#enable_host') do
|
||||||
|
test('enables the host') do
|
||||||
|
compute.enable_host host.reference
|
||||||
|
host.reload
|
||||||
|
host.enabled
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
host.enable
|
||||||
|
end
|
Loading…
Add table
Reference in a new issue