Subrahmanian, Raj wrote:
> Jim
> Could you shoot over the latest script you are using to create vms?
> There is this strange null pointer exception I am trying to hunt down.
> Thanks
>
Some example python script attached. Very minimal. Would be nice to
expand on it and add to repo. Pywbem documentation:
http://pywbem.sourceforge.net/documentation.shtml
For DefineSystem, I have a collection of "cimxml conf files'. I've
attached example PV and HVM one I'm currently using. Tweak them as
necessary and use the fakeclient program I sent invoke DefineSystem on
target node.
Jim
> Raj
>
#!/usr/bin/python
import sys
import pywbem
# Connect to cimom
conn = pywbem.WBEMConnection('http://localhost', ('root', 'novell'))
# Enumerate 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)
for key, value in inst.items():
if key in ('Name', 'RequestedState'):
print ' %s = %s' % (key, value)
# 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 = '''
instance of Xen_ComputerSystemSettingData {
VirtualSystemIdentifier = "vm1";
VirtualSystemType = "Xen Paravirtual";
Bootloader = "/usr/lib/xen/boot/domUloader.py";
BootloaderOptions = "--entry=hda2:/boot/vmlinux-xen,/boot/initrd-xen";
Root = "/dev/hda2";
KernelOptions = "Term=xterm";
};
'''
# Create resource settings for the new VM
proc_rasd = '''
instance of Xen_ProcessorSettingData {
ResourceType = 3;
VirtualQuantity = 1;
AllocationUnits = "Cores";
};
'''
mem_rasd = '''
instance of Xen_MemorySettingData {
ResourceType = 4;
VirtualQuantity = 256;
AllocationUnits = "MegaBytes";
};
'''
disk_rasd = '''
instance of Xen_DiskSettingData {
ResourceType = 19;
DiskConfigInfo = "file:/var/lib/xen/images/vm1/hda,hda,w";
};
'''
nic_rasd = '''
instance of Xen_NetworkPortSettingData {
ResourceType = 10;
NICConfigInfo = "mac=00:16:3e:9d:9e:ad";
};
'''
rasds = [proc_rasd, mem_rasd, disk_rasd, nic_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.
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
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 instance of newly created vm
print 'Enumerating instances of Xen_ComputerSystem:'
inst_names = conn.EnumerateInstanceNames('Xen_ComputerSystem')
for n in inst_names:
inst = conn.GetInstance(n)
for key, value in inst.items():
if key in ('Name', 'RequestedState'):
print ' %s = %s' % (key, value)
# Invoke RequestStateChange to activate new vm
inst_names = conn.EnumerateInstanceNames('Xen_ComputerSystem')
for n in inst_names:
inst = conn.GetInstance(n)
# Get instance of newly activated vm
<?xml version="1.0" encoding="UTF-8"?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="5" PROTOCOLVERSION="1.0">
<SIMPLEREQ>
<METHODCALL NAME="DefineSystem">
<LOCALINSTANCEPATH>
<LOCALNAMESPACEPATH>
<NAMESPACE NAME="root"/><NAMESPACE NAME="cimv2"/>
</LOCALNAMESPACEPATH>
<INSTANCENAME CLASSNAME="Xen_VirtualSystemManagementService">
<KEYBINDING NAME="CreationClassName">
<KEYVALUE VALUETYPE="string">Xen_VirtualSystemManagementService</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="Name">
<KEYVALUE VALUETYPE="string">Xen Hypervisor</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="SystemCreationClassName">
<KEYVALUE VALUETYPE="string">CIM_ComputerSystem</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="SystemName">
<KEYVALUE VALUETYPE="string">xen81</KEYVALUE>
</KEYBINDING>
</INSTANCENAME>
</LOCALINSTANCEPATH>
<PARAMVALUE NAME="SystemSettings" PARAMTYPE="string">
<VALUE>
instance of Xen_ComputerSystemSettingData {
VirtualSystemIdentifier = "sles10_pv";
VirtualSystemType = "Xen Paravirtual";
Bootloader = "/usr/lib/xen/boot/domUloader.py";
BootloaderOptions = "--entry=xvda2:/boot/vmlinuz-xenpae,/boot/initrd-xenpae";
KernelOptions = "3";
UUID = "1f54006c-1b7e-b1b4-3f9a-f9fe49a65e02";
localtime = False;
OnPoweroff = 0;
OnReboot = 1;
OnCrash = 2;
};
</VALUE>
</PARAMVALUE>
<PARAMVALUE NAME="ResourceSettings" PARAMTYPE="string">
<VALUE.ARRAY>
<VALUE>
instance of Xen_ProcessorSettingData {
ResourceType = 3;
VirtualQuantity = 1;
AllocationUnits = "Cores";
};
</VALUE>
<VALUE>
instance of Xen_MemorySettingData {
ResourceType = 4;
VirtualQuantity = 512;
AllocationUnits = "MegaBytes";
};
</VALUE>
<VALUE>
instance of Xen_DiskSettingData {
ResourceType = 19;
DiskConfigInfo = "file:/var/lib/xen/images/sles10_pv/disk0,xvda,w";
};
</VALUE>
<VALUE>
instance of Xen_NetworkPortSettingData {
ResourceType = 10;
NICConfigInfo = "mac=00:16:3e:4b:25:aa";
};
</VALUE>
<VALUE>
instance of Xen_ConsoleSettingData {
ResourceType = 24;
Protocol = 1;
ConsoleConfigInfo = "vncunused=1";
};
</VALUE>
</VALUE.ARRAY>
</PARAMVALUE>
</METHODCALL>
</SIMPLEREQ>
</MESSAGE>
</CIM>
<?xml version="1.0" encoding="UTF-8"?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="5" PROTOCOLVERSION="1.0">
<SIMPLEREQ>
<METHODCALL NAME="DefineSystem">
<LOCALINSTANCEPATH>
<LOCALNAMESPACEPATH>
<NAMESPACE NAME="root"/><NAMESPACE NAME="cimv2"/>
</LOCALNAMESPACEPATH>
<INSTANCENAME CLASSNAME="Xen_VirtualSystemManagementService">
<KEYBINDING NAME="CreationClassName">
<KEYVALUE VALUETYPE="string">Xen_VirtualSystemManagementService</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="Name">
<KEYVALUE VALUETYPE="string">Xen Hypervisor</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="SystemCreationClassName">
<KEYVALUE VALUETYPE="string">CIM_ComputerSystem</KEYVALUE>
</KEYBINDING>
<KEYBINDING NAME="SystemName">
<KEYVALUE VALUETYPE="string">xen81</KEYVALUE>
</KEYBINDING>
</INSTANCENAME>
</LOCALINSTANCEPATH>
<PARAMVALUE NAME="SystemSettings" PARAMTYPE="string">
<VALUE>
instance of Xen_ComputerSystemSettingData {
VirtualSystemIdentifier = "winxp_provider";
VirtualSystemType = "Xen HVM";
BootOrder = "c";
localtime = True;
OnPoweroff = 0;
OnReboot = 1;
OnCrash = 5;
};
</VALUE>
</PARAMVALUE>
<PARAMVALUE NAME="ResourceSettings" PARAMTYPE="string">
<VALUE.ARRAY>
<VALUE>
instance of Xen_ProcessorSettingData {
ResourceType = 3;
VirtualQuantity = 1;
AllocationUnits = "Cores";
};
</VALUE>
<VALUE>
instance of Xen_MemorySettingData {
ResourceType = 4;
VirtualQuantity = 512;
AllocationUnits = "Bytes";
};
</VALUE>
<VALUE>
instance of Xen_DiskSettingData {
ResourceType = 20;
DiskConfigInfo = "file:/tests/demo/disks/winxp-32-unmod.img,ioemu:hda,w";
};
</VALUE>
<VALUE>
instance of Xen_NetworkPortSettingData {
ResourceType = 10;
NICConfigInfo = "type=ioemu,mac=00:16:3e:8a:a9:48";
};
</VALUE>
<VALUE>
instance of Xen_ConsoleSettingData {
ResourceType = 24;
Protocol = 1;
};
</VALUE>
</VALUE.ARRAY>
</PARAMVALUE>
</METHODCALL>
</SIMPLEREQ>
</MESSAGE>
</CIM>
_______________________________________________
Xen-cim mailing list
Xen-cim@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-cim
|