# File lib/fog/xenserver/models/compute/server.rb, line 55 def initialize(attributes={}) super end
# File lib/fog/xenserver/models/compute/server.rb, line 63 def affinity service.hosts.get __affinity end
# File lib/fog/xenserver/models/compute/server.rb, line 183 def clean_reboot reboot 'clean' end
# File lib/fog/xenserver/models/compute/server.rb, line 198 def clean_shutdown stop 'clean' end
# File lib/fog/xenserver/models/compute/server.rb, line 67 def consoles __consoles.collect {|console| service.consoles.get console } end
# File lib/fog/xenserver/models/compute/server.rb, line 71 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
This is not always present in XenServer VMs Guest needs XenTools installed to report this AFAIK
# File lib/fog/xenserver/models/compute/server.rb, line 116 def guest_metrics return nil unless __guest_metrics rec = service.get_record( __guest_metrics, 'VM_guest_metrics' ) Fog::Compute::XenServer::GuestMetrics.new(rec) end
# File lib/fog/xenserver/models/compute/server.rb, line 139 def halted? reload power_state == "Halted" end
# File lib/fog/xenserver/models/compute/server.rb, line 179 def hard_reboot reboot 'hard' end
# File lib/fog/xenserver/models/compute/server.rb, line 194 def hard_shutdown stop 'hard' end
# File lib/fog/xenserver/models/compute/server.rb, line 126 def home_hypervisor service.hosts.first end
# File lib/fog/xenserver/models/compute/server.rb, line 130 def mac_address networks.first.MAC end
associations
# File lib/fog/xenserver/models/compute/server.rb, line 105 def networks vifs.collect { |v| v.network } end
# File lib/fog/xenserver/models/compute/server.rb, line 202 def provision service.provision_server reference end
# File lib/fog/xenserver/models/compute/server.rb, line 174 def reboot(stype = 'clean') service.reboot_server(reference, stype) true end
# File lib/fog/xenserver/models/compute/server.rb, line 94 def refresh data = service.get_record( reference, 'VM' ) merge_attributes( data ) true end
# File lib/fog/xenserver/models/compute/server.rb, line 109 def resident_on service.hosts.get __resident_on end
# File lib/fog/xenserver/models/compute/server.rb, line 210 def revert(snapshot_ref) service.snapshot_revert(snapshot_ref) end
# File lib/fog/xenserver/models/compute/server.rb, line 134 def running? reload power_state == "Running" end
# File lib/fog/xenserver/models/compute/server.rb, line 151 def save(params = {}) requires :name nets = attributes[:networks] || [] if params[:auto_start].nil? auto_start = true else auto_start = params[:auto_start] end if template_name attr = service.get_record( service.create_server( name, template_name, nets, :auto_start => auto_start), 'VM' ) else attr = service.get_record( service.create_server_raw(attributes), 'VM' ) end merge_attributes attr true end
# File lib/fog/xenserver/models/compute/server.rb, line 86 def set_attribute(name, *val) data = service.set_attribute( 'VM', 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
# File lib/fog/xenserver/models/compute/server.rb, line 206 def snapshot(name) service.snapshot_server(reference, name) end
operations
# File lib/fog/xenserver/models/compute/server.rb, line 145 def start return false if running? service.start_server( reference ) true end
# File lib/fog/xenserver/models/compute/server.rb, line 187 def stop(stype = 'clean') return false if !running? service.shutdown_server( reference, stype ) wait_for { power_state == 'Halted' } true end
# File lib/fog/xenserver/models/compute/server.rb, line 122 def tools_installed? !guest_metrics.nil? end
# File lib/fog/xenserver/models/compute/server.rb, line 59 def vbds __vbds.collect {|vbd| service.vbds.get vbd } end
# File lib/fog/xenserver/models/compute/server.rb, line 100 def vifs __vifs.collect { |vif| service.vifs.get vif } end