Skip to content

Commit

Permalink
Merge pull request #19 from fog/moving_logic_to_requests
Browse files Browse the repository at this point in the history
Moved Logic code to Requests (There are some left behind)
  • Loading branch information
plribeiro3000 committed Jul 10, 2014
2 parents e858907 + e9fd56b commit d6cbe71
Show file tree
Hide file tree
Showing 22 changed files with 110 additions and 165 deletions.
53 changes: 0 additions & 53 deletions lib/fog/compute/xen_server/models/host.rb
Expand Up @@ -61,59 +61,6 @@ class Host < Fog::Model
has_many :resident_vms, :servers, :aliases => :resident_VMs

alias_method :resident_servers, :resident_vms

#
# 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
service.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
service.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
service.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
service.shutdown_host(reference)
end
end
end
end
Expand Down
4 changes: 0 additions & 4 deletions lib/fog/compute/xen_server/models/pbd.rb
Expand Up @@ -19,10 +19,6 @@ class Pbd < Fog::Model
has_one :sr, :storage_repositories, :aliases => :SR

alias_method :storage_repository, :sr

def unplug
service.unplug_pbd reference
end
end
end
end
Expand Down
61 changes: 2 additions & 59 deletions lib/fog/compute/xen_server/models/server.rb
Expand Up @@ -90,21 +90,6 @@ class Server < Fog::Compute::Server
has_many :vifs, :vifs, :aliases => :VIFs
has_many :vtpms, :vtpms, :aliases => :VTPMs

def destroy
# Make sure it's halted
stop('hard')
vbds.each do |vbd|
if vbd.type == "Disk"
vbd.unplug \
if vbd.allowed_operations.include?("unplug")
vbd.vdi.destroy \
if vbd.vdi.allowed_operations.include?("destroy")
end
end
service.destroy_server( reference )
true
end

def tools_installed?
!guest_metrics.nil?
end
Expand All @@ -127,13 +112,6 @@ def halted?
power_state == "Halted"
end

# operations
def start
return false if running?
service.start_server( reference )
true
end

def save(params = {})
requires :name
nets = attributes[:networks] || []
Expand All @@ -157,44 +135,9 @@ def save(params = {})
true
end

def reboot(stype = 'clean')
service.reboot_server(reference, stype)
true
end

def hard_reboot
reboot 'hard'
end

def clean_reboot
reboot 'clean'
end

def stop(stype = 'clean')
return false if !running?
service.shutdown_server( reference, stype )
wait_for { power_state == 'Halted' }
true
end

def hard_shutdown
stop 'hard'
end

def clean_shutdown
stop 'clean'
end

def provision
service.provision_server reference
end

def snapshot(name)
service.snapshot_server(reference, name)
end

def revert(snapshot_ref)
service.snapshot_revert(snapshot_ref)
warn 'This method is DEPRECATED. Use #snapshot_revert instead.'
snapshot_revert(snapshot_ref)
end
end
end
Expand Down
4 changes: 0 additions & 4 deletions lib/fog/compute/xen_server/models/storage_repository.rb
Expand Up @@ -36,10 +36,6 @@ def scan
reload
end

def destroy
service.destroy_sr reference
end

def save
requires :name
requires :type
Expand Down
16 changes: 0 additions & 16 deletions lib/fog/compute/xen_server/models/vbd.rb
Expand Up @@ -41,22 +41,6 @@ def save
ref = service.create_vbd attributes[:server], attributes[:vdi], attributes
merge_attributes service.vbds.get(ref).attributes
end

def unplug
service.unplug_vbd reference
end

def unplug_force
service.unplug_force_vbd reference
end

def eject
service.eject_vbd reference
end

def insert(vdi)
service.insert_vbd reference, vdi.reference
end
end
end
end
Expand Down
4 changes: 0 additions & 4 deletions lib/fog/compute/xen_server/models/vdi.rb
Expand Up @@ -64,10 +64,6 @@ def save
ref = service.create_vdi attributes
merge_attributes service.vdis.get(ref).attributes
end

def destroy
service.destroy_vdi reference
end
end
end
end
Expand Down
4 changes: 0 additions & 4 deletions lib/fog/compute/xen_server/models/vif.rb
Expand Up @@ -35,10 +35,6 @@ class Vif < Fog::Model

alias_method :server, :vm

def destroy
service.destroy_vif reference
end

def save
requires :server
raise ArgumentError.new('network is required for this operation') \
Expand Down
17 changes: 15 additions & 2 deletions lib/fog/compute/xen_server/requests/destroy_server.rb
Expand Up @@ -2,9 +2,22 @@ module Fog
module Compute
class XenServer
class Real
def destroy_server( vm_ref , extra_args = {})
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VM.destroy'}, vm_ref)
def destroy_server(ref , extra_args = {})
server = @connection.servers.get(ref)
server.hard_shutdown
server.vbds.each do |vbd|
if vbd.type == "Disk"
vbd.unplug \
if vbd.allowed_operations.include?("unplug")
vbd.vdi.destroy \
if vbd.vdi.allowed_operations.include?("destroy")
end
end
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VM.destroy'}, ref)
true
end

alias_method :destroy_vm, :destroy_server
end

class Mock
Expand Down
7 changes: 2 additions & 5 deletions lib/fog/compute/xen_server/requests/destroy_sr.rb
Expand Up @@ -7,11 +7,8 @@ class Real
#
# http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=SR
#
def destroy_sr( sr_ref )
@connection.request(
{:parser => Fog::Parsers::XenServer::Base.new, :method => 'SR.destroy'},
sr_ref
)
def destroy_sr(sr_ref)
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'SR.destroy'}, sr_ref)
end
end

Expand Down
2 changes: 1 addition & 1 deletion lib/fog/compute/xen_server/requests/destroy_vdi.rb
Expand Up @@ -2,7 +2,7 @@ module Fog
module Compute
class XenServer
class Real
def destroy_vdi( vdi_ref, extra_args = {})
def destroy_vdi(vdi_ref, extra_args = {})
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VDI.destroy'}, vdi_ref)
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/fog/compute/xen_server/requests/destroy_vif.rb
Expand Up @@ -2,7 +2,7 @@ module Fog
module Compute
class XenServer
class Real
def destroy_vif( ref, extra_args = {})
def destroy_vif(ref, extra_args = {})
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VIF.destroy'}, ref)
end
end
Expand Down
1 change: 1 addition & 0 deletions lib/fog/compute/xen_server/requests/insert_vbd.rb
Expand Up @@ -3,6 +3,7 @@ module Compute
class XenServer
class Real
def insert_vbd(ref, vdi_ref, extra_args = {})
vdi_ref = vdi_ref.reference if vdi.respond_to?(:reference)
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VBD.insert'}, ref, vdi_ref)
end
end
Expand Down
4 changes: 3 additions & 1 deletion lib/fog/compute/xen_server/requests/provision_server.rb
Expand Up @@ -2,9 +2,11 @@ module Fog
module Compute
class XenServer
class Real
def provision_server( ref )
def provision_server(ref)
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VM.provision'}, ref)
end

alias_method :provision_vm, :provision_server
end

class Mock
Expand Down
13 changes: 12 additions & 1 deletion lib/fog/compute/xen_server/requests/reboot_host.rb
Expand Up @@ -2,7 +2,18 @@ module Fog
module Compute
class XenServer
class Real
def reboot_host( ref )
# 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_host(ref, auto_disable = true)
disable_host(ref) if auto_disable
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "host.reboot"}, ref)
end
end
Expand Down
17 changes: 16 additions & 1 deletion lib/fog/compute/xen_server/requests/reboot_server.rb
Expand Up @@ -2,9 +2,24 @@ module Fog
module Compute
class XenServer
class Real
def reboot_server( ref, stype = 'clean' )
def reboot_server(ref, stype = 'clean')
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "VM.#{stype}_reboot"}, ref)
true
end

alias_method :reboot_vm, :reboot_server

def hard_reboot_server(ref)
reboot_server(ref, 'hard')
end

alias_method :hard_reboot_vm, :hard_reboot_server

def clean_reboot_server(ref)
reboot_server(ref, 'clean')
end

alias_method :clean_reboot_vm, :clean_reboot_server
end

class Mock
Expand Down
13 changes: 12 additions & 1 deletion lib/fog/compute/xen_server/requests/shutdown_host.rb
Expand Up @@ -2,7 +2,18 @@ module Fog
module Compute
class XenServer
class Real
def shutdown_host( ref )
# 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_host(ref, auto_disable = true)
disable_host(ref) if auto_disable
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "host.shutdown"}, ref)
end
end
Expand Down
22 changes: 20 additions & 2 deletions lib/fog/compute/xen_server/requests/shutdown_server.rb
Expand Up @@ -2,9 +2,27 @@ module Fog
module Compute
class XenServer
class Real
def shutdown_server( vm_ref, stype = 'clean' )
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "VM.#{stype}_shutdown"}, vm_ref)
def shutdown_server(ref, stype = 'clean')
server = @connection.servers.get(ref)
return false unless server.running?
@connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => "VM.#{stype}_shutdown"}, ref)
server.wait_for { power_state == 'Halted' }
true
end

alias_method :shutdown_vm, :shutdown_server

def hard_shutdown_server(ref)
shutdown_server(ref, 'hard')
end

alias_method :hard_shutdown_vm, :hard_shutdown_server

def clean_shutdown_server(ref)
shutdown_server(ref, 'clean')
end

alias_method :clean_shutdown_vm, :clean_shutdown_server
end

class Mock
Expand Down

0 comments on commit d6cbe71

Please sign in to comment.