[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-cim] Python script problems, part 2 - known good scripts
-----Original Message----- From: Jim Fehlig Sent: Thursday, June 14, 2007 3:04 PM To: Szymanski, Lukasz K Subject: Re: Some updates I tried both python scripts with success. The scripts have been tweaked a little so here they are for your viewing pleasure :-). I'm using a xen 3.1.0 based system with latest provider code. The xen code has patches that were sent to xen-devel, but don't think any of them would prevent these scripts from working. We'll have to dig in if you're still having problems. Jim Szymanski, Lukasz K wrote: > > Jim - > > So here is an update: I have two problems, possibly related. > > 1) > I applied the patch you emailed > I applied the latest from CIM > > As a result I get a request that starts, but never finishes executing. > The RequestStateChange starts with no errors, but the script just sits > there. Xm list shows the vm at a 'bp' state. If I crtl-C the script > and try to run it again, I cannot get past the initial > EnumerateInstanceNames at the beginning of the script. I have to > ctrl-C openwbem. It's as if there's a locking/spinning issue > somewhere. > > 2) > In a possibly related story, I cannot get the embedded instance script > to work either. The setting he is looking for is CMPI_string or > CMPI_instance, but not getting it (see ERROR) > > If I use the pywbem which comes with my SUSE, I get this in the > openwbem output > CMPIMethodProviderProxy::invokeMethod() > [INFO] [06/13/2007 12:18:18] 17404 --- > Xen_VirtualSystemManagementService.c(749) : Entering InvokeMethod() > [WARNING] [06/13/2007 12:18:18] 17404 --- > Xen_VirtualSystemManagementService.c(750) : --- > self="methodXen_VirtualSystemManagementService" > > [WARNING] [06/13/2007 12:18:18] 17404 --- > Xen_VirtualSystemManagementService.c(751) : --- context="** Object not > recognized (0x0x43002310) **" > > [WARNING] [06/13/2007 12:18:18] 17404 --- > Xen_VirtualSystemManagementService.c(752) : --- > reference="/root/cimv2:Xen_VirtualSystemManagementService.CreationClas > sName="Xen_VirtualSystemManagementService",SystemName="1089",Name="Xen > Hypervisor",SystemCreationClassName="CIM_ComputerSystem"" > > [WARNING] [06/13/2007 12:18:18] 17404 --- > Xen_VirtualSystemManagementService.c(753) : --- methodname="DefineSystem" > [WARNING] [06/13/2007 12:18:18] 17404 --- > Xen_VirtualSystemManagementService.c(754) : --- namespace="root/cimv2" > [WARNING] [06/13/2007 12:18:18] 17404 --- > Xen_VirtualSystemManagementService.c(762) : --- # argsin=3 [ERROR] > [06/13/2007 12:18:18] 17404 --- > Xen_VirtualSystemManagementService.c(827) : --- Invalid setting type - > UNKNOWN [INFO] [06/13/2007 12:18:18] 17404 --- > Xen_VirtualSystemManagementService.c(1076) : Exiting > InvokeMethod()=Failed [1124096320] XMLExecute::processSimpleReq caught > CIM exception: > Code: 4 > File: OW_CMPIMethodProviderProxy.cpp > Line: 106 > Message: invalid parameter passed to method (Invalid setting type) > > I thought maybe this was an outdated pywbem. If I go to the latest > from sourceforge, this is the output I get from the embedded script. > > Calling DefineSystem to create a new VM ... > Traceback (most recent call last): > File "inst_embed_test.py", line 66, in ? > (rval, out_params) = conn.InvokeMethod('DefineSystem', vsms[0], > **in_params) > File > "/usr/local/lib64/python2.4/site-packages/pywbem/cim_operations.py", > line 763, in InvokeMethod > result = self.methodcall(MethodName, obj, **params) > File > "/usr/local/lib64/python2.4/site-packages/pywbem/cim_operations.py", > line 262, in methodcall > plist = [cim_xml.PARAMVALUE(x[0], paramvalue(x[1]), paramtype(x[1])) > File > "/usr/local/lib64/python2.4/site-packages/pywbem/cim_operations.py", > line 260, in paramvalue > raise TypeError('Unsupported parameter type "%s"' % type(obj)) > TypeError: Unsupported parameter type "<type 'instance'>" > > ------------------------------- > > If you have seen any of this before and have a fix, then please let me > know. What version is your Xen, SUSE, python, etc.? Maybe I can work > backwords from something that works. > > Thanks, > Luke > #!/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', 'Bootloader':'/usr/lib/xen/boot/domUloader.py', 'BootloaderOptions':'--entry=xvda2:/boot/vmlinuz-xenpae,/boot/initrd-xenpae', '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']) #!/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 = ''' instance of Xen_ComputerSystemSettingData { VirtualSystemIdentifier = "sles10_graphics"; VirtualSystemType = "xen-3.0-x86_32p"; Bootloader = "/usr/lib/xen/boot/domUloader.py"; BootloaderOptions = "--entry=xvda2:/boot/vmlinuz-xenpae,/boot/initrd-xenpae"; UUID = "20904d23-8a89-1d63-134c-d2606f2fcc47"; OnPoweroff = 0; OnReboot = 1; OnCrash = 2; KernelOptions = "Term=xterm"; }; ''' # Create resource settings for the new VM proc_rasd = ''' instance of Xen_ProcessorSettingData { ResourceType = 3; VirtualQuantity = 2; AllocationUnits = "Cores"; Limit = 100; Weight = 512; }; ''' mem_rasd = ''' instance of Xen_MemorySettingData { ResourceType = 4; VirtualQuantity = 512; AllocationUnits = "MegaBytes"; }; ''' disk0_rasd = ''' instance of Xen_DiskSettingData { ResourceType = 19; DiskConfigInfo = "file:/var/lib/xen/images/sles10_graphics/disk0,xvda,w"; }; ''' disk1_rasd = ''' instance of Xen_DiskSettingData { ResourceType = 19; DiskConfigInfo = "file:/var/lib/xen/images/sles10_graphics/disk1,xvdb,w"; }; ''' nic_rasd = ''' instance of Xen_NetworkPortSettingData { ResourceType = 10; NICConfigInfo = "mac=00:16:3e:39:7a:f7"; }; ''' con_rasd = ''' instance of Xen_ConsoleSettingData { ResourceType = 24; Protocol = 1; ConsoleConfigInfo = "vncdisplay=5"; }; ''' 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) # 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |