Class OpenNebula::VirtualMachine

  1. OpenNebula/VirtualMachine.rb

Constants

VM_METHODS = { :info => "vm.info", :allocate => "vm.allocate", :action => "vm.action", :migrate => "vm.migrate", :deploy => "vm.deploy" }   Constants and Class Methods
VM_STATE = %w{INIT PENDING HOLD ACTIVE STOPPED SUSPENDED DONE FAILED}
LCM_STATE = %w{LCM_INIT PROLOG BOOT RUNNING MIGRATE SAVE_STOP SAVE_SUSPEND SAVE_MIGRATE PROLOG_MIGRATE PROLOG_RESUME EPILOG_STOP EPILOG SHUTDOWN CANCEL FAILURE DELETE UNKNOWN}
SHORT_VM_STATES = { "INIT" => "init", "PENDING" => "pend", "HOLD" => "hold", "ACTIVE" => "actv", "STOPPED" => "stop", "SUSPENDED" => "susp", "DONE" => "done", "FAILED" => "fail" }
SHORT_LCM_STATES = { "PROLOG" => "prol", "BOOT" => "boot", "RUNNING" => "runn", "MIGRATE" => "migr", "SAVE_STOP" => "save", "SAVE_SUSPEND" => "save", "SAVE_MIGRATE" => "save", "PROLOG_MIGRATE"=> "migr", "PROLOG_RESUME" => "prol", "EPILOG_STOP" => "epil", "EPILOG" => "epil", "SHUTDOWN" => "shut", "CANCEL" => "shut", "FAILURE" => "fail", "DELETE" => "dele", "UNKNOWN" => "unkn" }
MIGRATE_REASON = %w{NONE ERROR STOP_RESUME USER CANCEL}
SHORT_MIGRATE_REASON = { "NONE" => "none", "ERROR" => "erro", "STOP_RESUME" => "stop", "USER" => "user", "CANCEL" => "canc" }

Public class methods

build_xml (pe_id=nil)

Creates a VirtualMachine description with just its identifier this method should be used to create plain VirtualMachine objects. id the id of the vm

Example:

vnet = VirtualMachine.new(VirtualMachine.build_xml(3),rpc_client)
[show source]
# File OpenNebula/VirtualMachine.rb, line 69
        def VirtualMachine.build_xml(pe_id=nil)
            if pe_id
                vm_xml = "<VM><ID>#{pe_id}</ID></VM>"
            else
                vm_xml = "<VM></VM>"
            end
            
            XMLUtilsElement.initialize_xml(vm_xml, 'VM')
        end
get_reason (reason)
[show source]
# File OpenNebula/VirtualMachine.rb, line 79
        def VirtualMachine.get_reason(reason)
            reason=MIGRATE_REASON[reason.to_i]
            reason_str=SHORT_MIGRATE_REASON[reason]

            reason_str
        end
new (xml, client)

Class constructor

[show source]
# File OpenNebula/VirtualMachine.rb, line 89
        def initialize(xml, client)
            super(xml,client)
            
            @element_name = "VM"
            @client       = client
        end

Public instance methods

allocate (description)
[show source]
# File OpenNebula/VirtualMachine.rb, line 104
        def allocate(description)
            super(VM_METHODS[:allocate],description)
        end
cancel ()
[show source]
# File OpenNebula/VirtualMachine.rb, line 121
        def cancel
            action('cancel')
        end
deploy (host_id)
[show source]
# File OpenNebula/VirtualMachine.rb, line 108
        def deploy(host_id)
            return Error.new('ID not defined') if !@pe_id

            rc = @client.call(VM_METHODS[:deploy], @pe_id, host_id.to_i)
            rc = nil if !OpenNebula.is_error?(rc)
        
            return rc
        end
finalize ()
[show source]
# File OpenNebula/VirtualMachine.rb, line 145
        def finalize
            action('finalize')
        end
hold ()
[show source]
# File OpenNebula/VirtualMachine.rb, line 125
        def hold
            action('hold')
        end
info ()

XML-RPC Methods for the Virtual Machine Object

[show source]
# File OpenNebula/VirtualMachine.rb, line 100
        def info()
            super(VM_METHODS[:info], 'VM')
        end
lcm_state ()

Returns the LCM state of the VirtualMachine (numeric value)

[show source]
# File OpenNebula/VirtualMachine.rb, line 186
        def lcm_state
            self['LCM_STATE'].to_i
        end
lcm_state_str ()

Returns the LCM state of the VirtualMachine (string value)

[show source]
# File OpenNebula/VirtualMachine.rb, line 191
        def lcm_state_str
            LCM_STATE[lcm_state]
        end
live_migrate (host_id)
[show source]
# File OpenNebula/VirtualMachine.rb, line 162
        def live_migrate(host_id)
            return Error.new('ID not defined') if !@pe_id

            rc = @client.call(VM_METHODS[:migrate], @pe_id, host_id.to_i, true)
            rc = nil if !OpenNebula.is_error?(rc)
            
            return rc
        end
migrate (host_id)
[show source]
# File OpenNebula/VirtualMachine.rb, line 153
        def migrate(host_id)
            return Error.new('ID not defined') if !@pe_id

            rc = @client.call(VM_METHODS[:migrate], @pe_id, host_id.to_i, false)
            rc = nil if !OpenNebula.is_error?(rc)
        
            return rc
        end
release ()
[show source]
# File OpenNebula/VirtualMachine.rb, line 129
        def release
            action('release')
        end
restart ()
[show source]
# File OpenNebula/VirtualMachine.rb, line 149
        def restart
            action('restart')
        end
resume ()
[show source]
# File OpenNebula/VirtualMachine.rb, line 141
        def resume
            action('resume')
        end
shutdown ()
[show source]
# File OpenNebula/VirtualMachine.rb, line 117
        def shutdown
            action('shutdown')
        end
state ()

Returns the VM state of the VirtualMachine (numeric value)

[show source]
# File OpenNebula/VirtualMachine.rb, line 176
        def state
            self['STATE'].to_i
        end
state_str ()

Returns the VM state of the VirtualMachine (string value)

[show source]
# File OpenNebula/VirtualMachine.rb, line 181
        def state_str
            VM_STATE[state]
        end
status ()

Returns the short status string for the VirtualMachine

[show source]
# File OpenNebula/VirtualMachine.rb, line 196
        def status
            short_state_str=SHORT_VM_STATES[state_str]

            if short_state_str=="actv"
                short_state_str=SHORT_LCM_STATES[lcm_state_str]
            end

            short_state_str
        end
stop ()
[show source]
# File OpenNebula/VirtualMachine.rb, line 133
        def stop
            action('stop')
        end
suspend ()
[show source]
# File OpenNebula/VirtualMachine.rb, line 137
        def suspend
            action('suspend')
        end