Luke,
Here is an example pywbem script using kernel/ramdisk instead of
bootloader. Something similar should work with the xm test ramdisk.
Jim
#!/usr/bin/python
import sys
import pywbem
import time
# Connect to cimom
conn = pywbem.WBEMConnection('http://localhost', ('root', 'novell'))
# Get instance of Virtual System Management Service
print 'Looking for Virtual System Management Service...'
vsms = conn.EnumerateInstanceNames("Xen_VirtualSystemManagementService")
print 'Got Virtual System Management Service: %s' % str(vsms[0])
# Create virtual system settings for new VM
vssd = pywbem.CIMInstance('Xen_ComputerSystemSettingData',
{'VirtualSystemIdentifier':'sles10_graphics',
'VirtualSystemType':'xen-3.0-x86_32p',
'Kernel':'/tests/kernels/vmlinuz-xenpae-sles10_sp1',
'RAMDisk':'/tests/kernels/initrd-xenpae-sles10_sp1',
'UUID':'20904d23-8a89-1d63-134c-d2606f2fcc47',
'KernelOptions':'Term=xterm',
'OnPoweroff':pywbem.Uint16(0),
'OnReboot':pywbem.Uint16(1),
'OnCrash':pywbem.Uint16(2)})
proc_rasd = pywbem.CIMInstance('Xen_ProcessorSettingData',
{'ResourceType':pywbem.Uint16(3),
'VirtualQuantity':pywbem.Uint64(2),
'AllocationUnits':'Cores',
'Weight':pywbem.Uint32(512),
'Limit':pywbem.Uint64(100)})
mem_rasd = pywbem.CIMInstance('Xen_MemorySettingData',
{'ResourceType':pywbem.Uint16(4),
'VirtualQuantity':pywbem.Uint64(512),
'AllocationUnits':'MegaBytes'})
disk0_rasd = pywbem.CIMInstance('Xen_DiskSettingData',
{'ResourceType':pywbem.Uint16(19),
'DiskConfigInfo':'file:/var/lib/xen/images/sles10_graphics/disk0,xvda,w'})
disk1_rasd = pywbem.CIMInstance('Xen_DiskSettingData',
{'ResourceType':pywbem.Uint16(19),
'DiskConfigInfo':'file:/var/lib/xen/images/sles10_graphics/disk1,xvdb,w'})
nic_rasd = pywbem.CIMInstance('Xen_NetworkPortSettingData',
{'ResourceType':pywbem.Uint16(10),
'NICConfigInfo':'mac=00:16:3e:39:7a:f7'})
con_rasd = pywbem.CIMInstance('Xen_ConsoleSettingData',
{'ResourceType':pywbem.Uint16(24),
'Protocol':pywbem.Uint16(1),
'ConsoleConfigInfo':'vncunused=1'})
rasds = [proc_rasd, mem_rasd, disk0_rasd, disk1_rasd, nic_rasd, con_rasd]
in_params = {'SystemSettings': vssd, 'ResourceSettings': rasds}
# Invoke DefineSystem on Virtual System Management Serive to define a new VM,
# providing the new VM settings and its resource settings.
new_vm = None
try:
print 'Calling DefineSystem to create a new VM ...'
(rval, out_params) = conn.InvokeMethod('DefineSystem', vsms[0], **in_params)
print 'Return Value of DefineSystem: %s' % rval
print 'Output = %s' % out_params
new_vm = out_params['ResultingSystem']
except pywbem.CIMError, arg:
print 'Caught exception when calling InvokeMethod'
if arg[0] != pywbem.CIM_ERR_NOT_SUPPORTED:
print 'InvokeMethod(instancename): %s' % arg[1]
sys.exit(1)
except ValueError, e:
pass
# Get instances of Xen_ComputerSystem
print 'Enumerating instances of Xen_ComputerSystem:'
inst_names = conn.EnumerateInstanceNames('Xen_ComputerSystem')
for n in inst_names:
inst = conn.GetInstance(n, LocalOnly=False)
print 'Domain %s: EnabledState %s' % (inst['Name'], inst['EnabledState'])
time.sleep(5)
print 'Activating newly defined VM ...'
try:
# state 2 = enabled(running)
(rval, out_params) = conn.InvokeMethod('RequestStateChange', new_vm,
RequestedState='2')
except Exception, e:
sys.stderr.write('Exception caught in starting VM: %s\n' % e)
sys.exit(1)
if rval == 0:
print 'Successfully activated new vm'
else:
sys.stderr.write('Unable to start VM, return code: %s\n' % rval)
sys.exit(1)
time.sleep(5)
print 'Enumerating instances of Xen_ComputerSystem:'
inst_names = conn.EnumerateInstanceNames('Xen_ComputerSystem')
for n in inst_names:
inst = conn.GetInstance(n, LocalOnly=False)
print 'Domain %s: EnabledState %s' % (inst['Name'], inst['EnabledState'])
_______________________________________________
Xen-cim mailing list
Xen-cim@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-cim
|