add_disk(size)
click to toggle source
def add_disk(size)
if @disk_change == :deleted
raise RuntimeError, "Can't add a disk w/o saving changes or reloading"
else
@disk_change = :added
load_unless_loaded!
virtual_hardware[:Item] << { :ResourceType => '17',
:AddressOnParent => (disk_mess.map { |dm| dm[:AddressOnParent] }.sort.last.to_i + 1).to_s,
:VirtualQuantity => size.to_s }
end
true
end
cpus()
click to toggle source
def cpus
if cpu_mess
{ :count => cpu_mess[:VirtualQuantity].to_i,
:units => cpu_mess[:AllocationUnits] }
end
end
cpus=(qty)
click to toggle source
def cpus=(qty)
@changed = true
cpu_mess[:VirtualQuantity] = qty.to_s
end
delete()
click to toggle source
def delete
requires :href
connection.delete_vapp( href)
end
delete_disk(number)
click to toggle source
def delete_disk(number)
if @disk_change == :added
raise RuntimeError, "Can't delete a disk w/o saving changes or reloading"
else
@disk_change = :deleted
load_unless_loaded!
unless number == 0
virtual_hardware[:Item].delete_if { |vh| vh[:ResourceType] == '17' && vh[:AddressOnParent].to_i == number }
end
end
true
end
disks()
click to toggle source
def disks
disk_mess.map do |dm|
{ :number => dm[:AddressOnParent], :size => dm[:VirtualQuantity].to_i, :resource => dm[:HostResource] }
end
end
friendly_status()
click to toggle source
def friendly_status
load_unless_loaded!
case status
when '0'
'creating'
when '2'
'off'
when '4'
'on'
else
'unkown'
end
end
graceful_restart()
click to toggle source
def graceful_restart
requires :href
shutdown
wait_for { off? }
power_on
end
memory()
click to toggle source
def memory
if memory_mess
{ :amount => memory_mess[:VirtualQuantity].to_i,
:units => memory_mess[:AllocationUnits] }
end
end
memory=(amount)
click to toggle source
def memory=(amount)
@changed = true
memory_mess[:VirtualQuantity] = amount.to_s
end
name=(new_name)
click to toggle source
def name=(new_name)
attributes[:name] = new_name
@changed = true
end
off?()
click to toggle source
def off?
load_unless_loaded!
status == '2'
end
on?()
click to toggle source
def on?
load_unless_loaded!
status == '4'
end
power_off()
click to toggle source
def power_off
power_operation( :power_off => :powerOff )
end
power_on()
click to toggle source
def power_on
power_operation( :power_on => :powerOn )
end
power_reset()
click to toggle source
def power_reset
power_operation( :power_reset => :reset )
end
ready?()
click to toggle source
def ready?
load_unless_loaded!
status == '2'
end
reload()
click to toggle source
def reload
reset_tracking
super
end
save()
click to toggle source
def save
if new_record?
raise RuntimeError, "Should not be here"
else
if on?
if @changed
raise RuntimeError, "Can't save cpu, name or memory changes while the VM is on."
end
end
connection.configure_vapp( href, _compose_vapp_data )
end
reset_tracking
end
shutdown()
click to toggle source
def shutdown
power_operation( :power_shutdown => :shutdown )
end