From deeptik at linux.vnet.ibm.com Mon Jun 1 06:23:12 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Mon, 01 Jun 2009 11:53:12 +0530 Subject: [Libvirt-cim] [PATCH 1 of 4] [TEST] Move cleanup_guest_netpool() to vsmigrations.py In-Reply-To: <4A204F1D.8060700@linux.vnet.ibm.com> References: <4A1F9C9F.7010607@linux.vnet.ibm.com> <4A204F1D.8060700@linux.vnet.ibm.com> Message-ID: <4A2373D0.5060400@linux.vnet.ibm.com> Kaitlin Rupert wrote: >>> + # completely successful VM might be created on the target >>> machine + # and hence need to clean. >>> + target_list = domain_list(t_sysname, virt) >>> + if target_list != None and test_dom in target_list: >>> + ret_value = cxml.destroy(t_sysname) >>> >> The ret_value from cxml.destroy is False and hence even though the VM >> is getting destroyed we are getting the following false log: >> Failed to destroy the migrated domain >> 'VM_frm_elm3b217.beaverton.ibm.com' on 'localhost' >> Thu, 28 May 2009 22:35:49:TEST LOG:INFO - Failed to destroy >> the migrated domain 'VM_frm_elm3b217.beaverton.ibm.com' on 'localhost' >> >> use cxml.cim_destroy()instead. > > Good point - this should be cim_destroy(). > >> >>> + if not ret_value: >>> + logger.info("Failed to destroy the migrated domain '%s' >>> on '%s'", >>> + test_dom, t_sysname) >>> + >>> + ret_value = cxml.undefine(t_sysname) >>> >> Same here cxml.undefine() returns False and hence the following >> statement gets printed. >> Thu, 28 May 2009 22:52:39:TEST LOG:INFO - Failed to undefine >> the migrated domain 'VM_frm_elm3b217.beaverton.ibm.com' on 'localhost' > > I'm not sure I understand.. if the guest fails to undefine, we should > print an error. When you tested, did undefine() return false even > when the guest was removed properly? Sorry for not being very clear here. Yes! even after the guest was cleared using destroy()/undefine() I was seeing this log message in the cimtest.log. The problem is in the check we are doing after the destroy()/undefine() call and nothing major. > > I was unable to reproduce this. > >>> + if not ret_value: >>> + logger.info("Failed to undefine the migrated domain >>> '%s' on '%s'", >>> + test_dom, t_sysname) >>> + > > -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From tyan at redhat.com Mon Jun 1 06:45:12 2009 From: tyan at redhat.com (tyan) Date: Mon, 01 Jun 2009 14:45:12 +0800 Subject: [Libvirt-cim] cimtest setup failed in RHEL5Server-ia64 Message-ID: <4A2378F8.20604@redhat.com> Hi, Anybody ever setup cimtest on RHEL5Server ia64 system? I met with make issue. Think the file cimtest/suites/libvirt-cim/images/Makefile should be updated for ia64 system. # cd path_to_cimtest/suites/libvirt-cim/images/ # make if uname -r | grep -q xen; then \ cp /boot/vmlinuz-`uname -r` /tmp/default-xen-kernel; \ fi cp: cannot stat `/boot/vmlinuz-2.6.18-92.1.26.el5xen': No such file or directory make: *** [/tmp/default-xen-kernel] Error 1 Thanks TianYan From deeptik at linux.vnet.ibm.com Mon Jun 1 09:28:19 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Mon, 01 Jun 2009 02:28:19 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] #2 Modifying ResourcePool/01_enum.py to accomodate verifying Parent DiskPool and NetworkPool Message-ID: <7e1e9ac3a390df22b3fb.1243848499@elm3a148.beaverton.ibm.com> # HG changeset patch # User Deepti B. Kalakeri # Date 1243848479 25200 # Node ID 7e1e9ac3a390df22b3fbd8f8c760dd13e41aff88 # Parent fe2f7e27210c2437d410484bd8f16a0714994321 [TEST] #2 Modifying ResourcePool/01_enum.py to accomodate verifying Parent DiskPool and NetworkPool. Updates: -------- Including the diskpool and netpool for LXC as well. Tested with KVM on F10 with current sources. Signed-off-by: Deepti B. Kalakeri diff -r fe2f7e27210c -r 7e1e9ac3a390 suites/libvirt-cim/cimtest/ResourcePool/01_enum.py --- a/suites/libvirt-cim/cimtest/ResourcePool/01_enum.py Fri May 29 02:01:50 2009 -0700 +++ b/suites/libvirt-cim/cimtest/ResourcePool/01_enum.py Mon Jun 01 02:27:59 2009 -0700 @@ -30,9 +30,8 @@ from XenKvmLib.enumclass import EnumInstances from XenKvmLib.classes import get_typed_class from XenKvmLib import vxml -from CimTest import Globals -from CimTest.Globals import logger -from XenKvmLib.const import do_main, default_pool_name +from CimTest.Globals import logger, CIM_ERROR_ENUMERATE +from XenKvmLib.const import do_main, default_pool_name, LXC_netns_support from CimTest.ReturnCodes import PASS, FAIL, SKIP from XenKvmLib.xm_virt_util import net_list from XenKvmLib.vsms import RASD_TYPE_PROC, RASD_TYPE_MEM, RASD_TYPE_NET_ETHER, \ @@ -56,8 +55,8 @@ netxml = vxml.NetXML(server, bridgename, test_network, virt) ret = netxml.create_vnet() if not ret: - logger.error("Failed to create the Virtual Network '%s'", \ - test_network) + logger.error("Failed to create the Virtual Network '%s'", + test_network) return SKIP, None disk_instid = '%s/%s' % (dp_cn, default_pool_name) @@ -77,25 +76,30 @@ logger.error("Returned %s instead of %s", ret_value, exp_value) def verify_fields(pool_list, poolname, cn): - status = PASS if len(poolname) < 1: logger.error("%s return %i instances, expected atleast 1 instance", cn, len(poolname)) return FAIL - exp_value = pool_list[cn][0] + for i in range(0, len(poolname)): - ret_value = poolname[i].InstanceID - if ret_value == exp_value: - break - elif ret_value != exp_value and i == len(poolname)-1: - print_error('InstanceID', ret_value, exp_value) - status = FAIL - ret_value = poolname[0].ResourceType - exp_value = pool_list[cn][1] - if ret_value != exp_value: - print_error('ResourceType', ret_value, exp_value) - status = FAIL - return status + + rtype_ret_value = poolname[i].ResourceType + rtype_exp_value = pool_list[cn][1] + if rtype_ret_value != rtype_exp_value: + print_error('ResourceType', rtype_ret_value, rtype_exp_value) + return FAIL + + inst_ret_value = poolname[i].InstanceID + inst_exp_value = pool_list[cn][0] + if "DiskPool/0" == inst_ret_value or "NetworkPool/0" == inst_ret_value: + if poolname[i].Primordial != True: + print_error('Primordial', poolname[i].Primordial, "True") + return FAIL + elif inst_ret_value != inst_exp_value and i == len(poolname)-1: + print_error('InstanceID', inst_ret_value, inst_exp_value) + return FAIL + + return PASS @do_main(sup_types) @@ -114,37 +118,24 @@ mp = get_typed_class(virt, mp_cn) pp = get_typed_class(virt, pp_cn) dp = get_typed_class(virt, dp_cn) - np = get_typed_class(virt, np_cn) + cn_list = [ mp, pp, dp ] - try: - mempool = EnumInstances(ip, mp) - except Exception: - logger.error(Globals.CIM_ERROR_ENUMERATE, mp) - return FAIL - status = verify_fields(pool_list, mempool, mp) - - try: - propool = EnumInstances(ip, pp) - except Exception: - logger.error(Globals.CIM_ERROR_ENUMERATE, pp) - return FAIL - status = verify_fields(pool_list, propool, pp) - - if virt != 'LXC': + if virt == 'LXC' and LXC_netns_support is False: + pass + else: + np = get_typed_class(virt, np_cn) + cn_list.append(np) + + for cn in cn_list: try: - diskpool = EnumInstances(ip, dp) - except Exception: - logger.error(Globals.CIM_ERROR_ENUMERATE, dp) + pool = EnumInstances(ip, cn) + except Exception, details: + logger.error(CIM_ERROR_ENUMERATE, cn) + logger.error("Exception details: %s", details) return FAIL - status = verify_fields(pool_list, diskpool, dp) - - try: - netpool = EnumInstances(ip, np) - except Exception: - logger.error(Globals.CIM_ERROR_ENUMERATE, np) - return FAIL - status = verify_fields(pool_list, netpool, np) - + status = verify_fields(pool_list, pool, cn) + if status != PASS: + return status return status if __name__ == "__main__": From veillard at redhat.com Mon Jun 1 17:43:53 2009 From: veillard at redhat.com (Daniel Veillard) Date: Mon, 1 Jun 2009 19:43:53 +0200 Subject: [Libvirt-cim] cimtest setup failed in RHEL5Server-ia64 In-Reply-To: <4A2378F8.20604@redhat.com> References: <4A2378F8.20604@redhat.com> Message-ID: <20090601174353.GQ23850@redhat.com> On Mon, Jun 01, 2009 at 02:45:12PM +0800, tyan wrote: > Hi, > > Anybody ever setup cimtest on RHEL5Server ia64 system? I met with make > issue. Think the file cimtest/suites/libvirt-cim/images/Makefile should > be updated for ia64 system. > > # cd path_to_cimtest/suites/libvirt-cim/images/ > # make > if uname -r | grep -q xen; then \ > cp /boot/vmlinuz-`uname -r` /tmp/default-xen-kernel; \ > fi > cp: cannot stat `/boot/vmlinuz-2.6.18-92.1.26.el5xen': No such file or > directory > make: *** [/tmp/default-xen-kernel] Error 1 $ rpm -qilp kernel-xen-2.6.18-92.1.26.el5.ia64.rpm | grep vmlinuz-2.6.18-92.1.26.el5xen /boot/efi/EFI/redhat/vmlinuz-2.6.18-92.1.26.el5xen On itanium the kernel seems to be installed in a subdir, the simplest might be to copy it by hand. Maybe the Makefile could be fixed along the lines of find /boot -name vmlinuz-`uname -r` -exec cp {} /tmp/default-xen-kernel \; also in general the test suite makes an excessive use of /tmp in my opinion, using /var/tmp/cimtest or something similar would be ay nicer it would also avoid the regular cleanup of /tmp from wiping out the data installed for the previous runs. Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ From veillard at redhat.com Mon Jun 1 17:51:51 2009 From: veillard at redhat.com (Daniel Veillard) Date: Mon, 1 Jun 2009 19:51:51 +0200 Subject: [Libvirt-cim] cimtest setup failed in RHEL5Server-ia64 In-Reply-To: <20090601174353.GQ23850@redhat.com> References: <4A2378F8.20604@redhat.com> <20090601174353.GQ23850@redhat.com> Message-ID: <20090601175151.GR23850@redhat.com> On Mon, Jun 01, 2009 at 07:43:53PM +0200, Daniel Veillard wrote: > On Mon, Jun 01, 2009 at 02:45:12PM +0800, tyan wrote: > > Hi, > > > > Anybody ever setup cimtest on RHEL5Server ia64 system? I met with make > > issue. Think the file cimtest/suites/libvirt-cim/images/Makefile should > > be updated for ia64 system. > > > > # cd path_to_cimtest/suites/libvirt-cim/images/ > > # make > > if uname -r | grep -q xen; then \ > > cp /boot/vmlinuz-`uname -r` /tmp/default-xen-kernel; \ > > fi > > cp: cannot stat `/boot/vmlinuz-2.6.18-92.1.26.el5xen': No such file or > > directory > > make: *** [/tmp/default-xen-kernel] Error 1 > > $ rpm -qilp kernel-xen-2.6.18-92.1.26.el5.ia64.rpm | grep vmlinuz-2.6.18-92.1.26.el5xen > /boot/efi/EFI/redhat/vmlinuz-2.6.18-92.1.26.el5xen > > On itanium the kernel seems to be installed in a subdir, the simplest > might be to copy it by hand. > Maybe the Makefile could be fixed along the lines of > > find /boot -name vmlinuz-`uname -r` -exec cp {} /tmp/default-xen-kernel \; Though in retrospect that may not be sufficient, IIRC the test images get bootstrapped from initrd-1.1-i386.img ramdisk found on Xensource server, and unless there is ani ia64 image too, the kernel copy won't be sufficient... or well funny results may arise :-) Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ From kaitlin at linux.vnet.ibm.com Mon Jun 1 18:01:48 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 01 Jun 2009 11:01:48 -0700 Subject: [Libvirt-cim] cimtest setup failed in RHEL5Server-ia64 In-Reply-To: <20090601174353.GQ23850@redhat.com> References: <4A2378F8.20604@redhat.com> <20090601174353.GQ23850@redhat.com> Message-ID: <4A24178C.6040907@linux.vnet.ibm.com> Daniel Veillard wrote: > On Mon, Jun 01, 2009 at 02:45:12PM +0800, tyan wrote: >> Hi, >> >> Anybody ever setup cimtest on RHEL5Server ia64 system? I met with make >> issue. Think the file cimtest/suites/libvirt-cim/images/Makefile should >> be updated for ia64 system. Hi TianYan, Welcome to the list =) I don't have an ia64 box available, so I haven't been able to test on ia64. I haven't heard mention of anyone else doing so, so my guess is you're the first. >> >> # cd path_to_cimtest/suites/libvirt-cim/images/ >> # make >> if uname -r | grep -q xen; then \ >> cp /boot/vmlinuz-`uname -r` /tmp/default-xen-kernel; \ >> fi >> cp: cannot stat `/boot/vmlinuz-2.6.18-92.1.26.el5xen': No such file or >> directory >> make: *** [/tmp/default-xen-kernel] Error 1 > > $ rpm -qilp kernel-xen-2.6.18-92.1.26.el5.ia64.rpm | grep vmlinuz-2.6.18-92.1.26.el5xen > /boot/efi/EFI/redhat/vmlinuz-2.6.18-92.1.26.el5xen > > On itanium the kernel seems to be installed in a subdir, the simplest > might be to copy it by hand. I suspect there will be other problems trying to build the image since we rely on the ramdisks provided by XenSource (http://xm-test.xensource.com/ramdisks/). If you have a pre-existing image that you can use, you could copy it to /tmp. cimtest expects to see the following: /tmp/default-xen-dimage /tmp/default-xen-dimage.2ND /tmp/default-xen-initrd > Maybe the Makefile could be fixed along the lines of > > find /boot -name vmlinuz-`uname -r` -exec cp {} /tmp/default-xen-kernel \; Yep, this would be than simply assuming a location. > > also in general the test suite makes an excessive use of /tmp in my > opinion, using /var/tmp/cimtest or something similar would be ay nicer > it would also avoid the regular cleanup of /tmp from wiping out the > data installed for the previous runs. Agreed. Deepti and I talked about this awhile back - it's something we both agreed this a change that we need to make. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Mon Jun 1 18:50:42 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 01 Jun 2009 11:50:42 -0700 Subject: [Libvirt-cim] [PATCH] [CU][RFC](#2) Added lexer/parser support for string array properties In-Reply-To: <0b79dd93e4ede362b4da.1243704644@localhost.localdomain> References: <0b79dd93e4ede362b4da.1243704644@localhost.localdomain> Message-ID: <4A242302.6030507@linux.vnet.ibm.com> Thanks Richard, This looks really good. > diff -r 1cb3975921d5 -r 0b79dd93e4ed eo_util_parser.y > --- a/eo_util_parser.y Mon Apr 27 16:11:32 2009 -0700 > +++ b/eo_util_parser.y Sat May 30 14:03:04 2009 -0300 > @@ -20,15 +21,24 @@ > /* specify prototypes to get rid of warnings */ > int eo_parse_lex (void); > void eo_parse_error(char *); > +inline void ins_chars_into_cmstr_arr(const CMPIBroker *broker, > + CMPIArray *arr, > + CMPICount index, > + char *str); > > #define RC_OK 0 > #define RC_EOF EOF > #define RC_INVALID_CLASS -1000 > +#define EODEBUG 1 Be sure to remove this when you resubmit. > > /* DEFINE ANY GLOBAL VARS HERE */ > static const CMPIBroker * _BROKER; > static CMPIInstance ** _INSTANCE; > static const char * _NAMESPACE; > +static CMPICount stringarraysize; > +static char **stringarray; > +static char *stringarraypropname; > + > > @@ -127,7 +138,17 @@ > CMSetProperty(*_INSTANCE, $1, &($3), CMPI_boolean); > free($1); > } > + | PROPERTYNAME '=' OPENBRACKET > + { > + EOTRACE("propertyname = %s\n" > + "\ttype = CMPI_charsA\n", > + $1); You assume the array will be a character array. What about CMPI_uint16A, etc? I think it's fine to not address integer types in this patch - handling arrays of string is complex enough. Nut we should fix it in a follow up patch. > > + stringarraysize = 0; > + stringarraypropname = $1; > + } > + arrayofstrings CLOSEBRACKET ';' > + > | PROPERTYNAME '=' CIMNULL ';' > { > EOTRACE("propertyname = %s\n" > @@ -136,11 +157,86 @@ > } > ; > > +arrayofstrings: STRING > + { > + EOTRACE("BootDevices[%u]=%s\n",stringarraysize, $1); Make this trace statement more generic. > + > + stringarraysize++; > + stringarray = (char **)realloc(stringarray, > + sizeof(char *) * > + stringarraysize); > + stringarray[stringarraysize-1] = $1; > + } > + COMMA arrayofstrings > + > + > + | STRING > + { > + CMPIArray *arr; > + CMPICount i; > + CMPIStatus s; > + > + EOTRACE("\tBootDevices[%u]=%s\n",stringarraysize, $1); Same here. > + > + stringarraysize++; > + > + arr = CMNewArray(_BROKER, > + stringarraysize, > + CMPI_string, > + &s); > + if (s.rc != CMPI_RC_OK || CMIsNullObject(arr)) > + EOTRACE("Error creating array\n"); I would also return from here. Otherwise, attempting to add values into the array will fail later on. > + > + // Values to stringarraysize - 2 are in the > + // temporary array > + for (i = 0; i < stringarraysize - 1; i++) { > + ins_chars_into_cmstr_arr(_BROKER, > + arr, > + i, > + stringarray[i]); Trap any kind of error here and return. > + > + free(stringarray[i]); > + } > + > + ins_chars_into_cmstr_arr(_BROKER, > + arr, > + stringarraysize - 1, > + $1); Same here. > + > + free($1); > + > + CMSetProperty(*_INSTANCE, > + stringarraypropname, > + &arr, > + CMPI_stringA); > + > + free(stringarraypropname); > + } > + ; > + > /* END OF RULES SECTION */ > %% > > /* USER SUBROUTINE SECTION */ > > +inline void ins_chars_into_cmstr_arr(const CMPIBroker *broker, > + CMPIArray *arr, > + CMPICount index, > + char *str) Instead of including this function in eo_util_parser.y, I would put it in eo_parser.c. This is similar to set_int_prop() - it's called in set_int_prop, but defined in eo_parser.c. > +{ > + CMPIString *cm_str; > + CMPIStatus s; > + > + cm_str = CMNewString(_BROKER, str, &s); > + if (s.rc != CMPI_RC_OK || CMIsNullObject(cm_str)) > + EOTRACE("Error creating CMPIString"); I would return an error here. Instead of EOTRACE, CU_DEBUG(). > + > + s = CMSetArrayElementAt(arr, index, &cm_str, CMPI_string); > + if (s.rc != CMPI_RC_OK) > + EOTRACE("Error setting array element %u\n" > + "Error code: %d\n", index, s.rc); Same here. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Mon Jun 1 19:29:36 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 01 Jun 2009 12:29:36 -0700 Subject: [Libvirt-cim] [PATCH 1 of 4] [TEST] Move cleanup_guest_netpool() to vsmigrations.py In-Reply-To: <4A2373D0.5060400@linux.vnet.ibm.com> References: <4A1F9C9F.7010607@linux.vnet.ibm.com> <4A204F1D.8060700@linux.vnet.ibm.com> <4A2373D0.5060400@linux.vnet.ibm.com> Message-ID: <4A242C20.1070105@linux.vnet.ibm.com> >>> Same here cxml.undefine() returns False and hence the following >>> statement gets printed. >>> Thu, 28 May 2009 22:52:39:TEST LOG:INFO - Failed to undefine >>> the migrated domain 'VM_frm_elm3b217.beaverton.ibm.com' on 'localhost' >> >> I'm not sure I understand.. if the guest fails to undefine, we should >> print an error. When you tested, did undefine() return false even >> when the guest was removed properly? > Sorry for not being very clear here. > Yes! even after the guest was cleared using destroy()/undefine() I was > seeing this log message in the cimtest.log. > The problem is in the check we are doing after the destroy()/undefine() > call and nothing major. Oh! Make sense. I'll follow up with a separate patch for this issue after the other migration related patches go in. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Mon Jun 1 20:25:09 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 01 Jun 2009 13:25:09 -0700 Subject: [Libvirt-cim] [PATCH] Expose package release version in VirtualSystemManagementService Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1243887903 25200 # Node ID ffea3e262ba257e0e3f8cfe70daac6bba5ffc118 # Parent c127bb551eb81bfe3fe3a2ad0225d7307e4bd1ee Expose package release version in VirtualSystemManagementService The Revision and Changeset values don't always give a full picture of the provider version installed on the system. This patch adds a Reelase attribute which exposes the release version - this helps provide version baseline. Test query: wbemcli ei http://localhost/root/virt:KVM_VirtualSystemManagementService -nl You should see a "Release" attribute in the list Signed-off-by: Kaitlin Rupert diff -r c127bb551eb8 -r ffea3e262ba2 schema/VirtualSystemManagementService.mof --- a/schema/VirtualSystemManagementService.mof Mon May 18 18:13:06 2009 -0700 +++ b/schema/VirtualSystemManagementService.mof Mon Jun 01 13:25:03 2009 -0700 @@ -8,6 +8,9 @@ [Description("HG revision number of the providers")] string Revision; + + [Description("Package Version")] + string Release; }; [Provider("cmpi::Virt_VirtualSystemManagementService")] @@ -18,6 +21,9 @@ [Description("HG revision number of the providers")] string Revision; + + [Description("Package Version")] + string Release; }; [Provider("cmpi::Virt_VirtualSystemManagementService")] @@ -28,4 +34,7 @@ [Description("HG revision number of the providers")] string Revision; + + [Description("Package Version")] + string Release; }; diff -r c127bb551eb8 -r ffea3e262ba2 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Mon May 18 18:13:06 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Mon Jun 01 13:25:03 2009 -0700 @@ -2248,6 +2248,9 @@ CMSetProperty(inst, "Revision", (CMPIValue *)LIBVIRT_CIM_RV, CMPI_chars); + CMSetProperty(inst, "Release", + (CMPIValue *)PACKAGE_VERSION, CMPI_chars); + if (is_get_inst) { s = cu_validate_ref(broker, reference, inst); if (s.rc != CMPI_RC_OK) From kaitlin at linux.vnet.ibm.com Mon Jun 1 20:26:08 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 01 Jun 2009 13:26:08 -0700 Subject: [Libvirt-cim] [PATCH] Update SDC to return template DiskPoolRASDs for disk and iscsi type pools Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1242695586 25200 # Node ID c127bb551eb81bfe3fe3a2ad0225d7307e4bd1ee # Parent 9ac4e06aa21334cf25b8096663dca6fea74dccd8 Update SDC to return template DiskPoolRASDs for disk and iscsi type pools Rearrange things to reduce duplicate code. Signed-off-by: Kaitlin Rupert diff -r 9ac4e06aa213 -r c127bb551eb8 src/Virt_SettingsDefineCapabilities.c --- a/src/Virt_SettingsDefineCapabilities.c Mon May 18 18:13:06 2009 -0700 +++ b/src/Virt_SettingsDefineCapabilities.c Mon May 18 18:13:06 2009 -0700 @@ -1239,11 +1239,12 @@ CMPIInstance *inst; CMPIStatus s = {CMPI_RC_OK, NULL}; const char *path = "/dev/null"; - const char *dev_path; - const char *host; - const char *src_dir; - int type[3] = {DISK_POOL_DIR, DISK_POOL_FS, DISK_POOL_NETFS}; - int pool_types = 3; + int type[5] = {DISK_POOL_DIR, + DISK_POOL_FS, + DISK_POOL_NETFS, + DISK_POOL_DISK, + DISK_POOL_ISCSI}; + int pool_types = 5; int i; switch (template_type) { @@ -1267,6 +1268,10 @@ } for (i = 0; i < pool_types; i++) { + const char *dev_path = NULL; + const char *host = NULL; + const char *src_dir = NULL; + inst = sdc_rasd_inst(&s, ref, CIM_RES_TYPE_DISK, POOL_RASD); if ((inst == NULL) || (s.rc != CMPI_RC_OK)) goto out; @@ -1274,24 +1279,40 @@ CMSetProperty(inst, "InstanceID", (CMPIValue *)id, CMPI_chars); switch (type[i]) { + case DISK_POOL_DISK: + dev_path = "/dev/VolGroup00/LogVol100"; + + break; case DISK_POOL_FS: dev_path = "/dev/sda100"; - CMSetProperty(inst, "DevicePath", - (CMPIValue *)dev_path, CMPI_chars); + break; case DISK_POOL_NETFS: host = "host_sys.domain.com"; - CMSetProperty(inst, "Host", - (CMPIValue *)host, CMPI_chars); + src_dir = "/var/lib/images"; - src_dir = "/var/lib/images"; - CMSetProperty(inst, "SourceDirectory", - (CMPIValue *)src_dir, CMPI_chars); + break; + case DISK_POOL_ISCSI: + host = "host_sys.domain.com"; + dev_path = "iscsi-target"; + break; default: break; } + if (dev_path != NULL) + CMSetProperty(inst, "DevicePath", + (CMPIValue *)dev_path, CMPI_chars); + + if (host != NULL) + CMSetProperty(inst, "Host", + (CMPIValue *)host, CMPI_chars); + + if (src_dir != NULL) + CMSetProperty(inst, "SourceDirectory", + (CMPIValue *)src_dir, CMPI_chars); + CMSetProperty(inst, "Type", (CMPIValue *)&type[i], CMPI_uint16); CMSetProperty(inst, "Path", (CMPIValue *)path, CMPI_chars); From kaitlin at linux.vnet.ibm.com Mon Jun 1 21:02:22 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 01 Jun 2009 14:02:22 -0700 Subject: [Libvirt-cim] [PATCH] Be sure libvirt error message is returned to user Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1243890081 25200 # Node ID d1e566c62e287c8d98dad51e0b80ec7c6c850729 # Parent ffea3e262ba257e0e3f8cfe70daac6bba5ffc118 Be sure libvirt error message is returned to user If connect_and_create() fails because libvirt fails, we don't want to overwrite the error message. Instead, we should just return. This can be tested by attempting to create a pool that will definitely fail - something like a pool where the mountpoint doesn't exist. Signed-off-by: Kaitlin Rupert diff -r ffea3e262ba2 -r d1e566c62e28 src/Virt_ResourcePoolConfigurationService.c --- a/src/Virt_ResourcePoolConfigurationService.c Mon Jun 01 13:25:03 2009 -0700 +++ b/src/Virt_ResourcePoolConfigurationService.c Mon Jun 01 14:01:21 2009 -0700 @@ -455,6 +455,9 @@ CU_DEBUG("Pool XML:\n%s", xml); inst = connect_and_create(xml, reference, full_id, pool->type, &s); + if (s.rc != CMPI_RC_OK) + goto out; + if (inst == NULL) { cu_statusf(_BROKER, &s, CMPI_RC_ERR_FAILED, From deeptik at linux.vnet.ibm.com Tue Jun 2 12:27:03 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Tue, 02 Jun 2009 17:57:03 +0530 Subject: [Libvirt-cim] [PATCH 4 of 4] [TEST] #2 VSMS 08 Remove cleanup_guest_netpool() def and call it from vsmigration.py In-Reply-To: <401fcf44005919231ce6.1243632000@localhost.localdomain> References: <401fcf44005919231ce6.1243632000@localhost.localdomain> Message-ID: <4A251A97.6000403@linux.vnet.ibm.com> Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1242946256 25200 > # Node ID 401fcf44005919231ce6ea590029aff42e910152 > # Parent e21a60339e4be98d049db5ea146377e90a1f006b > [TEST] #2 VSMS 08 Remove cleanup_guest_netpool() def and call it from vsmigration.py > > Updates: > -Give guest time to fuly boot before rebooting > -Indicate the pass / failure of both the restart and resume cases > > Note: This test might fail with older versions of Xen - restart migration can > be unstable > > Signed-off-by: Kaitlin Rupert > > diff -r e21a60339e4b -r 401fcf440059 suites/libvirt-cim/cimtest/VirtualSystemMigrationService/08_remote_restart_resume_migration.py > --- a/suites/libvirt-cim/cimtest/VirtualSystemMigrationService/08_remote_restart_resume_migration.py Thu May 21 15:50:56 2009 -0700 > +++ b/suites/libvirt-cim/cimtest/VirtualSystemMigrationService/08_remote_restart_resume_migration.py Thu May 21 15:50:56 2009 -0700 > @@ -28,6 +28,7 @@ > > import sys > import os > +from time import sleep > from socket import gethostname > from XenKvmLib import vxml > from XenKvmLib.xm_virt_util import domain_list, net_list > @@ -35,9 +36,9 @@ > from XenKvmLib.const import do_main, default_network_name > from CimTest.ReturnCodes import PASS, FAIL, SKIP > from XenKvmLib.classes import get_typed_class > -from XenKvmLib.vsmigrations import check_mig_support, local_remote_migrate > -from XenKvmLib.common_util import poll_for_state_change, create_netpool_conf,\ > - destroy_netpool > +from XenKvmLib.vsmigrations import check_mig_support, local_remote_migrate, \ > + cleanup_guest_netpool > +from XenKvmLib.common_util import poll_for_state_change, create_netpool_conf > > sup_types = ['KVM', 'Xen'] > > @@ -125,6 +126,9 @@ > status_resume = status_restart = None > cxml = None > > + status_restart = -1 > + status_resume = -1 > + > try: > > for mig_type in mig_types: > @@ -135,6 +139,10 @@ > logger.error("Error setting up the guest") > return status > > + # Generally, having a test sleep is a bad choice, but we need to > + # give the guest some time to fully boot before we reboot it > + sleep(15) > You can increase the timeout period in poll_for_state_change(). Did increasing the timeout period for poll_for_state_change() did not work for you ? > + > # create the networkpool used in the domain to be migrated > # on the target machine. > t_net_list = net_list(t_sysname, virt) > @@ -168,18 +176,14 @@ > cleanup_guest(virt, cxml, test_dom, t_sysname, s_sysname) > status = FAIL > > - # clean the networkpool created on the remote machine > - target_net_list = net_list(t_sysname, virt) > - if target_net_list != None and net_pool_name in target_net_list: > - ret_value = destroy_netpool(t_sysname, virt, net_pool_name) > - if ret_value != PASS: > - logger.info("Unable to destroy networkpool '%s' on '%s'", > - net_pool_name, t_sysname) > + cleanup_guest_netpool(virt, cxml, test_dom, t_sysname, s_sysname) > > - if status_restart != PASS or status_resume != PASS: > + if status_restart == PASS and status_resume == PASS: > + status = PASS > + else: > + logger.error("Restart migration %d", status_restart) > + logger.error("Resume migration %d", status_resume) > status = FAIL > - else: > - status = PASS > > logger.info("Test case %s", str_status(status)) > return status > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim > -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Tue Jun 2 13:07:11 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Tue, 02 Jun 2009 18:37:11 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] Detect whether the revision is a distro defined value In-Reply-To: <46664d3f9e880c69ed43.1243633193@localhost.localdomain> References: <46664d3f9e880c69ed43.1243633193@localhost.localdomain> Message-ID: <4A2523FF.9040702@linux.vnet.ibm.com> +1 -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Tue Jun 2 13:28:54 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Tue, 02 Jun 2009 18:58:54 +0530 Subject: [Libvirt-cim] Test Run Summary (Jun 02 2009): Xen on Red Hat Enterprise Linux Server release 5.3 (Tikanga) with Pegasus Message-ID: <4A252916.6080702@linux.vnet.ibm.com> ================================================= Test Run Summary (Jun 02 2009): Xen on Red Hat Enterprise Linux Server release 5.3 (Tikanga) with Pegasus ================================================= Distro: Red Hat Enterprise Linux Server release 5.3 (Tikanga) Kernel: 2.6.18-128.el5xen libvirt: 0.3.3 Hypervisor: Xen 3.1.0 CIMOM: Pegasus 2.7.1 Libvirt-cim revision: 883 Libvirt-cim changeset: 10e45fca47f0 Cimtest revision: Cimtest changeset: ================================================= FAIL : 12 XFAIL : 2 SKIP : 3 PASS : 141 ----------------- Total : 158 ================================================= FAIL Test Summary: HostSystem - 03_hs_to_settdefcap.py: FAIL RedirectionService - 01_enum_crs.py: FAIL ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: FAIL ResourcePoolConfigurationService - 09_DeleteDiskPool.py: FAIL SettingsDefineCapabilities - 01_forward.py: FAIL VirtualSystemMigrationService - 01_migratable_host.py: FAIL VirtualSystemMigrationService - 02_host_migrate_type.py: FAIL VirtualSystemMigrationService - 06_remote_live_migration.py: FAIL VirtualSystemMigrationService - 07_remote_offline_migration.py: FAIL VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 02_nosystems.py: SKIP LogicalDisk - 02_nodevs.py: SKIP NetworkPort - 03_user_netport.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: SKIP -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: PASS -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error CIM_ERR_NOT_SUPPORTED: State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): CIM_ERR_NOT_SUPPORTED: State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - 'Xen_SettingsDefineCapabilities' returned 8 RASD objects instead of 4 CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: SKIP -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: PASS -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: PASS -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: FAIL ERROR - 'MaxConcurrentEnabledSAPs' Mismatch ERROR - Expected '65535', Got 'None' CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'CIM_ERR_FAILED: Pool with that name already exists') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): CIM_ERR_FAILED: Pool with that name already exists -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'CIM_ERR_FAILED: Pool with that name already exists') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): CIM_ERR_FAILED: Pool with that name already exists -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'CIM_ERR_FAILED: Settings Error: Storage pool creation not supported in this version of libvirt') ERROR - Failed to create 'DISK_POOL_DIR' type diskpool 'diskpool' InvokeMethod(CreateChildResourcePool): CIM_ERR_FAILED: Settings Error: Storage pool creation not supported in this version of libvirt -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'CIM_ERR_FAILED: Settings Error: Storage pool creation not supported in this version of libvirt') ERROR - Failed to create diskpool 'dp_pool' InvokeMethod(CreateChildResourcePool): CIM_ERR_FAILED: Settings Error: Storage pool creation not supported in this version of libvirt -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: FAIL ERROR - Xen_SettingsDefineCapabilities returned 16 ResourcePool objects instead of 8 -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: PASS -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:xen CIM_ERR_NOT_FOUND: No such instance (no device domain/mouse:xen) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: FAIL ERROR - Error create domain dom_migrate -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: FAIL ERROR - Migration verification for 'dom_migrate' failed -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: FAIL ERROR - JobStatus for dom 'VM_frm_elm3b43.beaverton.ibm.com' has 'Migration Failed: Domain not found: xenUnifiedDomainLookupByName' instead of 'Completed' -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: FAIL ERROR - Failed to enumerate the class of Xen_MigrationJob ERROR - Exception in fn get_migration_job_instance() details: (1, u'CIM_ERR_FAILED: cannot open file: /var/lib/Pegasus/repository/root#virt/instances/Xen_MigrationJob.instances') ERROR - Unable to get mig_job instance for 'VM_frm_elm3b43.beaverton.ibm.com' -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: FAIL ERROR - Failed to enumerate the class of Xen_MigrationJob ERROR - Exception in fn get_migration_job_instance() details: (1, u'CIM_ERR_FAILED: cannot open file: /var/lib/Pegasus/repository/root#virt/instances/Xen_MigrationJob.instances') ERROR - Unable to get mig_job instance for 'VM_frm_elm3b43.beaverton.ibm.com' ERROR - Cleanup failed after 'restart' migration -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Tue Jun 2 13:30:13 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Tue, 02 Jun 2009 19:00:13 +0530 Subject: [Libvirt-cim] Re: Test Run Summary (Jun 02 2009): Xen on Red Hat Enterprise Linux Server release 5.3 (Tikanga) with Pegasus In-Reply-To: <4A252916.6080702@linux.vnet.ibm.com> References: <4A252916.6080702@linux.vnet.ibm.com> Message-ID: <4A252965.1010306@linux.vnet.ibm.com> Deepti B Kalakeri wrote: > ================================================= > Test Run Summary (Jun 02 2009): Xen on Red Hat Enterprise Linux Server > release 5.3 (Tikanga) with Pegasus > ================================================= > Distro: Red Hat Enterprise Linux Server release 5.3 (Tikanga) > Kernel: 2.6.18-128.el5xen > libvirt: 0.3.3 > Hypervisor: Xen 3.1.0 > CIMOM: Pegasus 2.7.1 > Libvirt-cim revision: 883 > Libvirt-cim changeset: 10e45fca47f0 > Cimtest revision: Cimtest changeset: > ================================================= > FAIL : 12 > XFAIL : 2 > SKIP : 3 > PASS : 141 > ----------------- > Total : 158 > ================================================= > FAIL Test Summary: > HostSystem - 03_hs_to_settdefcap.py: FAIL > RedirectionService - 01_enum_crs.py: FAIL > ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL > ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL > ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: FAIL > ResourcePoolConfigurationService - 09_DeleteDiskPool.py: FAIL The RPCS tests need to use cim.undefine() at the end of the tests. Will send a patch with the fix. > SettingsDefineCapabilities - 01_forward.py: FAIL > VirtualSystemMigrationService - 01_migratable_host.py: FAIL > VirtualSystemMigrationService - 02_host_migrate_type.py: FAIL > VirtualSystemMigrationService - 06_remote_live_migration.py: FAIL > VirtualSystemMigrationService - 07_remote_offline_migration.py: FAIL > VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: > FAIL > > -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Tue Jun 2 14:04:18 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Tue, 02 Jun 2009 19:34:18 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() In-Reply-To: References: Message-ID: <4A253162.1000400@linux.vnet.ibm.com> This tc failed with the following error on Xen with current source: -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - 'Xen_SettingsDefineCapabilities' returned 16 RASD objects instead of 8 -------------------------------------------------------------------- -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Tue Jun 2 14:09:37 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Tue, 02 Jun 2009 19:39:37 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] Update RedirectionSerivce 01 to work with recent schema changes In-Reply-To: <7dd85abd05e44f4a1c31.1243635136@localhost.localdomain> References: <7dd85abd05e44f4a1c31.1243635136@localhost.localdomain> Message-ID: <4A2532A1.3070107@linux.vnet.ibm.com> This tc failed with on F10 with KVM and current source. -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: FAIL 01_enum_crs.py:29: DeprecationWarning: the sets module is deprecated from sets import Set ERROR - TypeError : __call__() takes exactly 1 argument (2 given) Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "01_enum_crs.py", line 113, in main if res_val != exp_val: TypeError: __call__() takes exactly 1 argument (2 given) ERROR - None CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Tue Jun 2 17:37:39 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 02 Jun 2009 10:37:39 -0700 Subject: [Libvirt-cim] [PATCH 4 of 4] [TEST] #2 VSMS 08 Remove cleanup_guest_netpool() def and call it from vsmigration.py In-Reply-To: <4A251A97.6000403@linux.vnet.ibm.com> References: <401fcf44005919231ce6.1243632000@localhost.localdomain> <4A251A97.6000403@linux.vnet.ibm.com> Message-ID: <4A256363.2050602@linux.vnet.ibm.com> >> @@ -135,6 +139,10 @@ >> logger.error("Error setting up the guest") >> return status >> >> + # Generally, having a test sleep is a bad choice, but we >> need to >> + # give the guest some time to fully boot before we reboot it >> + sleep(15) >> > You can increase the timeout period in poll_for_state_change(). > Did increasing the timeout period for poll_for_state_change() did not > work for you ? The issue here is a slightly different.. in poll_for_state_change(), we poll until libvirt reports that the guest is active. However, libvirt reports that the guest is active once the guest starts the boot process. So, pool_for_state_change() will stop polling, but the guest may not have finished the boot sequence. At that point, we attempt to launch a restart migration - this means that we attempt initiate a guest shutdown before the guest is even booted. For a guest shutdown, libvirt sends an ACPI event to the guest, but if the guest isn't fully booted, it won't be able to detect that event. So we need to give the OS a chance to boot before asking for a shutdown. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Tue Jun 2 18:24:56 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 02 Jun 2009 11:24:56 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] #2 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() Message-ID: <10746e30b8d0532ee7ed.1243967096@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1243630742 25200 # Node ID 10746e30b8d0532ee7eda8d0689a085d1b695ee2 # Parent 64548d3a357980326b64cebc8d2388f8b631049a [TEST] #2 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() Also update HostSystem 03 to support DiskPoolRASD / NetPoolRASD Updates from 1 to 2: -Add instance id to log message HostSystem/03_hs_to_settdefcap.py: 223 -Rework the DiskRASD portion of get_exp_disk_rasd_len() - only check for volumed if the libvirt version is greater than 0.4.1. Signed-off-by: Kaitlin Rupert diff -r 64548d3a3579 -r 10746e30b8d0 suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py --- a/suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py Tue Jun 02 10:37:42 2009 -0700 +++ b/suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py Fri May 29 13:59:02 2009 -0700 @@ -204,8 +204,10 @@ else: rtype = { "%s_DiskResourceAllocationSettingData" % virt : 17, \ + "%s_DiskPoolResourceAllocationSettingData" % virt : 17, \ "%s_MemResourceAllocationSettingData" % virt : 4, \ "%s_NetResourceAllocationSettingData" % virt : 10, \ + "%s_NetPoolResourceAllocationSettingData" % virt : 10, \ "%s_ProcResourceAllocationSettingData" % virt : 3 } try: @@ -218,8 +220,8 @@ exp_len = get_exp_template_rasd_len(virt, server, ap['InstanceID']) if len(assoc_info) != exp_len: - logger.error("'%s' returned %i RASD objects instead of %i", - an, len(assoc_info), exp_len) + logger.error("%s returned %i RASD objects instead of %i for %s", + an, len(assoc_info), exp_len, ap['InstanceID']) return FAIL for inst in assoc_info: diff -r 64548d3a3579 -r 10746e30b8d0 suites/libvirt-cim/lib/XenKvmLib/rasd.py --- a/suites/libvirt-cim/lib/XenKvmLib/rasd.py Tue Jun 02 10:37:42 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/rasd.py Fri May 29 13:59:02 2009 -0700 @@ -31,6 +31,7 @@ from XenKvmLib.const import default_pool_name, default_network_name, \ get_provider_version from XenKvmLib.pool import enum_volumes +from XenKvmLib.xm_virt_util import virsh_version pasd_cn = 'ProcResourceAllocationSettingData' nasd_cn = 'NetResourceAllocationSettingData' @@ -304,45 +305,76 @@ return rasd_insts, PASS -def get_exp_template_rasd_len(virt, ip, id): +def get_exp_disk_rasd_len(virt, ip, rev, id): libvirt_rasd_template_changes = 707 libvirt_rasd_new_changes = 805 libvirt_rasd_dpool_changes = 839 - curr_cim_rev, changeset = get_provider_version(virt, ip) + libvirt_ver = virsh_version(ip, virt) # For Diskpool, we have info 1 for each of Min, Max, Default, and Incr exp_base_num = 4 exp_cdrom = 4 - exp_len = exp_base_num + exp_len = exp_base_num - if 'DiskPool' in id: - if virt == 'Xen' or virt == 'XenFV': - # For Xen and XenFV, there is a template for PV and FV, so you - # end up with double the number of templates - xen_multi = 2 + if id == "DiskPool/0": + pool_types = 3 + return exp_base_num * pool_types + + if virt == 'Xen' or virt == 'XenFV': + # For Xen and XenFV, there is a template for PV and FV, so you + # end up with double the number of templates + xen_multi = 2 - if curr_cim_rev >= libvirt_rasd_template_changes and \ - curr_cim_rev < libvirt_rasd_new_changes: - exp_len = exp_base_num + exp_cdrom + if rev >= libvirt_rasd_template_changes and \ + rev < libvirt_rasd_new_changes: + exp_len = exp_base_num + exp_cdrom - elif curr_cim_rev >= libvirt_rasd_new_changes and \ - curr_cim_rev < libvirt_rasd_dpool_changes: - exp_len = (exp_base_num + exp_cdrom) * xen_multi + elif rev >= libvirt_rasd_dpool_changes and libvirt_ver >= '0.4.1': + volumes = enum_volumes(virt, ip) + exp_len = ((volumes * exp_base_num) + exp_cdrom) * xen_multi - elif curr_cim_rev >= libvirt_rasd_dpool_changes: - volumes = enum_volumes(virt, ip) - exp_len = ((volumes * exp_base_num) + exp_cdrom) * xen_multi + exp_len = (exp_base_num + exp_cdrom) * xen_multi - elif virt == 'KVM': - if curr_cim_rev >= libvirt_rasd_new_changes and \ - curr_cim_rev < libvirt_rasd_dpool_changes: - exp_len = exp_base_num + exp_cdrom + elif virt == 'KVM': + if rev >= libvirt_rasd_new_changes and \ + rev < libvirt_rasd_dpool_changes: + exp_len = exp_base_num + exp_cdrom - elif curr_cim_rev >= libvirt_rasd_dpool_changes: - volumes = enum_volumes(virt, ip) - exp_len = (volumes * exp_base_num) + exp_cdrom + elif rev >= libvirt_rasd_dpool_changes: + volumes = enum_volumes(virt, ip) + exp_len = (volumes * exp_base_num) + exp_cdrom return exp_len +def get_exp_net_rasd_len(virt, rev, id): + net_rasd_template_changes = 861 + + exp_base_num = 4 + + if id == "NetworkPool/0": + pool_types = 3 + forward_modes = 2 + + return (exp_base_num * pool_types) + (exp_base_num * forward_modes) + + if rev >= net_rasd_template_changes: + dev_types = 2 + + return exp_base_num * dev_types + +def get_exp_template_rasd_len(virt, ip, id): + curr_cim_rev, changeset = get_provider_version(virt, ip) + + exp_len = 4 + + if 'DiskPool' in id: + exp_len = get_exp_disk_rasd_len(virt, ip, curr_cim_rev, id) + + elif 'NetworkPool' in id: + exp_len = get_exp_net_rasd_len(virt, curr_cim_rev, id) + + return exp_len + + From kaitlin at linux.vnet.ibm.com Tue Jun 2 18:26:07 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 02 Jun 2009 11:26:07 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] Update RedirectionSerivce 01 to work with recent schema changes In-Reply-To: <4A2532A1.3070107@linux.vnet.ibm.com> References: <7dd85abd05e44f4a1c31.1243635136@localhost.localdomain> <4A2532A1.3070107@linux.vnet.ibm.com> Message-ID: <4A256EBF.8000402@linux.vnet.ibm.com> Deepti B Kalakeri wrote: > This tc failed with on F10 with KVM and current source. > > -------------------------------------------------------------------- > RedirectionService - 01_enum_crs.py: FAIL > 01_enum_crs.py:29: DeprecationWarning: the sets module is deprecated > from sets import Set > ERROR - TypeError : __call__() takes exactly 1 argument (2 given) > Traceback (most recent call last): > File "./lib/XenKvmLib/const.py", line 139, in do_try > File "01_enum_crs.py", line 113, in main > if res_val != exp_val: > TypeError: __call__() takes exactly 1 argument (2 given) > ERROR - None > CIM_ERR_INVALID_CLASS: Linux_ComputerSystem > -------------------------------------------------------------------- > This patch should fix this issue.. is it possible that the schema wasn't registered on the system properly? I recently upgraded the schema, so you'll need to do a full provider install: 1) make preuinstall 2) make uninstall 3) configure 4) make 5) make preinstall 6) restart the CIMOM 7) make postinstall This will pick up the new schema changes. The bug here is that the CRS attribute MaxConcurrentEnabledSAPs has changed to MaxCurrentEnabledSAPs in the 2.21 schema. So you can do a EnumerateInstances() query on your system to see what the value is. If you have current sources, but you see MaxConcurrentEnabledSAPs, then the schema update wasn't updated properly. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Tue Jun 2 20:41:28 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 2 Jun 2009 14:41:28 -0600 Subject: [Libvirt-cim] Test Run Summary (Jun 02 2009): KVM on Fedora release 10 (Cambridge) with sfcb Message-ID: <200906022041.n52KfSUW004574@d03av04.boulder.ibm.com> ================================================= Test Run Summary (Jun 02 2009): KVM on Fedora release 10 (Cambridge) with sfcb ================================================= Distro: Fedora release 10 (Cambridge) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.5.1 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 883 Libvirt-cim changeset: 10e45fca47f0 Cimtest revision: 698 Cimtest changeset: 64548d3a3579 ================================================= FAIL : 6 XFAIL : 4 SKIP : 7 PASS : 141 ----------------- Total : 158 ================================================= FAIL Test Summary: ComputerSystemIndication - 01_created_indication.py: FAIL HostSystem - 03_hs_to_settdefcap.py: FAIL RedirectionService - 01_enum_crs.py: FAIL ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL SettingsDefineCapabilities - 01_forward.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: VSSD - 02_bootldr.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: FAIL ERROR - Exception : Request Failed: 200 Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "01_created_indication.py", line 146, in main sub_list, ind_names, dict = sub_ind(ip, virt) File "01_created_indication.py", line 60, in sub_ind sub.subscribe(dict['default_url'], dict['default_auth']) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 345, in subscribe "CreateInstance", auth_hdr) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 330, in __do_cimpost (resp.status, resp.reason)) Exception: Request Failed: 200 ERROR - None -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - 'KVM_SettingsDefineCapabilities' returned 8 RASD objects instead of 4 Class not found -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: PASS -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: PASS -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: PASS -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: FAIL ERROR - TypeError : __call__() takes exactly 1 argument (2 given) Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "01_enum_crs.py", line 108, in main if res_val != exp_val: TypeError: __call__() takes exactly 1 argument (2 given) ERROR - None Class not found -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'Pool with that name already exists') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): Pool with that name already exists -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'*** Provider Virt_ResourcePoolConfigurationService(2680) exiting due to a SIGSEGV signal ') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): *** Provider Virt_ResourcePoolConfigurationService(2680) exiting due to a SIGSEGV signal -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: FAIL ERROR - KVM_SettingsDefineCapabilities returned 8 ResourcePool objects instead of 4 -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:ps2 No such instance (no device domain/mouse:ps2) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From rmaciel at linux.vnet.ibm.com Tue Jun 2 22:27:07 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 02 Jun 2009 19:27:07 -0300 Subject: [Libvirt-cim] [PATCH] A few schema cleanups after migrating from 2.16 to 2.21 In-Reply-To: References: Message-ID: <4A25A73B.1060006@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1242841306 25200 > # Node ID aa8e071730d2ce20064f1c0295a8005e31ef2cea > # Parent 10e45fca47f0d19eddcf7bb1559ba9e7397aea24 > A few schema cleanups after migrating from 2.16 to 2.21 > > Fixes: > -CIM_HostedResourcePool is needed in cimv2 to register Virt_HostedResourcePool > as a cross-namespace provider > > -Implementation specific VirtualSystemSnapshotService should be a subclass of > CIM_VirtualSystemSnapshotService, not Virt_VirtualSystemSnapshotService > > -CIM_VirtualSystemMigrationSettingData.mof and > CIM_VirtualSystemMigrationService.mof are needed in interop to properly > register ECTP asa cross-namespace provider > > Signed-off-by: Kaitlin Rupert > > diff -r 10e45fca47f0 -r aa8e071730d2 base_schema/cimv2.21.0-cimv2_mof > --- a/base_schema/cimv2.21.0-cimv2_mof Mon May 18 16:39:20 2009 -0700 > +++ b/base_schema/cimv2.21.0-cimv2_mof Wed May 20 10:41:46 2009 -0700 > @@ -9,3 +9,4 @@ > #pragma include ("Core/CIM_HostedResourcePool.mof") > #pragma include ("Core/CIM_ElementCapabilities.mof") > #pragma include ("Core/CIM_HostedService.mof") > +#pragma include ("Core/CIM_HostedResourcePool.mof") > diff -r 10e45fca47f0 -r aa8e071730d2 base_schema/cimv2.21.0-interop_mof > --- a/base_schema/cimv2.21.0-interop_mof Mon May 18 16:39:20 2009 -0700 > +++ b/base_schema/cimv2.21.0-interop_mof Wed May 20 10:41:46 2009 -0700 > @@ -26,3 +26,5 @@ > #pragma include ("Core/CIM_ResourcePool.mof") > #pragma include ("Core/CIM_Capabilities.mof") > #pragma include ("Core/CIM_AllocationCapabilities.mof") > +#pragma include ("System/CIM_VirtualSystemMigrationSettingData.mof") > +#pragma include ("System/CIM_VirtualSystemMigrationService.mof") > diff -r 10e45fca47f0 -r aa8e071730d2 schema/VirtualSystemSnapshotService.mof > --- a/schema/VirtualSystemSnapshotService.mof Mon May 18 16:39:20 2009 -0700 > +++ b/schema/VirtualSystemSnapshotService.mof Wed May 20 10:41:46 2009 -0700 > @@ -1,5 +1,5 @@ > // Copyright IBM Corp. 2008 > > -class Xen_VirtualSystemSnapshotService : Virt_VirtualSystemSnapshotService { }; > -class KVM_VirtualSystemSnapshotService : Virt_VirtualSystemSnapshotService { }; > -class LXC_VirtualSystemSnapshotService : Virt_VirtualSystemSnapshotService { }; > +class Xen_VirtualSystemSnapshotService : CIM_VirtualSystemSnapshotService { }; > +class KVM_VirtualSystemSnapshotService : CIM_VirtualSystemSnapshotService { }; > +class LXC_VirtualSystemSnapshotService : CIM_VirtualSystemSnapshotService { }; > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Tue Jun 2 22:58:07 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 02 Jun 2009 15:58:07 -0700 Subject: [Libvirt-cim] Test Run Summary (Jun 02 2009): KVM on Fedora release 10 (Cambridge) with sfcb In-Reply-To: <200906022041.n52KfSUW004574@d03av04.boulder.ibm.com> References: <200906022041.n52KfSUW004574@d03av04.boulder.ibm.com> Message-ID: <4A25AE7F.2060905@linux.vnet.ibm.com> > -------------------------------------------------------------------- > ComputerSystemIndication - 01_created_indication.py: FAIL > ERROR - Exception : Request Failed: 200 > Traceback (most recent call last): > File "./lib/XenKvmLib/const.py", line 139, in do_try > File "01_created_indication.py", line 146, in main > sub_list, ind_names, dict = sub_ind(ip, virt) > File "01_created_indication.py", line 60, in sub_ind > sub.subscribe(dict['default_url'], dict['default_auth']) > File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 345, in subscribe > "CreateInstance", auth_hdr) > File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 330, in __do_cimpost > (resp.status, resp.reason)) > Exception: Request Failed: 200 > ERROR - None I've seen issues with unsubscribing to indications on sfcb. I think bit of code in the test case that does the unsubscribe needs to be modified. If there are too many stale indication subscriptions hanging around, then there can be troubles adding a new subscription. > -------------------------------------------------------------------- > HostSystem - 03_hs_to_settdefcap.py: FAIL > ERROR - 'KVM_SettingsDefineCapabilities' returned 8 RASD objects instead of 4 > Class not found The patch on the mailing list fixes this issue. > -------------------------------------------------------------------- > RedirectionService - 01_enum_crs.py: FAIL > ERROR - TypeError : __call__() takes exactly 1 argument (2 given) > Traceback (most recent call last): > File "./lib/XenKvmLib/const.py", line 139, in do_try > File "01_enum_crs.py", line 108, in main > if res_val != exp_val: > TypeError: __call__() takes exactly 1 argument (2 given) > ERROR - None > Class not found The patch on the mailing list fixes this issue. > -------------------------------------------------------------------- > ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL > ERROR - Exception in create_pool() > ERROR - Exception details: (1, u'Pool with that name already exists') > ERROR - Error in networkpool creation > InvokeMethod(CreateChildResourcePool): Pool with that name already exists Deepti is looking in to this issue. > -------------------------------------------------------------------- > ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL > ERROR - Exception in create_pool() > ERROR - Exception details: (1, u'*** Provider Virt_ResourcePoolConfigurationService(2680) exiting due to a SIGSEGV signal ') > ERROR - Error in networkpool creation > InvokeMethod(CreateChildResourcePool): *** Provider Virt_ResourcePoolConfigurationService(2680) exiting due to a SIGSEGV signal The issue is that the test case is passing "nat" for the ForwardMode, but ForwardMode is a uint16 value. Strangely, this issue doesn't appear on Pegasus, but sfcb seg faults when it tries to pull the CMPIObjectPath from the instance. Will need to put a check in place, so sfcb doesnt segfault, and also fix the test case itself. > -------------------------------------------------------------------- > SettingsDefineCapabilities - 01_forward.py: FAIL > ERROR - KVM_SettingsDefineCapabilities returned 8 ResourcePool objects instead of 4 The patch on the mailing list fixes this issue. > -------------------------------------------------------------------- -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Tue Jun 2 23:04:48 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 2 Jun 2009 17:04:48 -0600 Subject: [Libvirt-cim] Test Run Summary (Jun 02 2009): LXC on Fedora release 10 (Cambridge) with sfcb Message-ID: <200906022304.n52N4mNk006965@d03av02.boulder.ibm.com> ================================================= Test Run Summary (Jun 02 2009): LXC on Fedora release 10 (Cambridge) with sfcb ================================================= Distro: Fedora release 10 (Cambridge) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.5.1 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 883 Libvirt-cim changeset: 10e45fca47f0 Cimtest revision: 701 Cimtest changeset: 017ed90bab7b ================================================= FAIL : 28 XFAIL : 9 SKIP : 39 PASS : 82 ----------------- Total : 158 ================================================= FAIL Test Summary: RASD - 01_verify_rasd_fields.py: FAIL ReferencedProfile - 01_verify_refprof.py: FAIL ReferencedProfile - 02_refprofile_errs.py: FAIL ResourceAllocationFromPool - 01_forward.py: FAIL ResourceAllocationFromPool - 02_reverse.py: FAIL ResourceAllocationFromPool - 03_forward_errs.py: FAIL ResourceAllocationFromPool - 04_reverse_errs.py: FAIL ResourcePoolConfigurationCapabilities - 01_enum.py: FAIL ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: FAIL ResourcePoolConfigurationService - 01_enum.py: FAIL ResourcePoolConfigurationService - 02_rcps_gi_errors.py: FAIL ServiceAccessBySAP - 02_reverse.py: FAIL ServiceAffectsElement - 01_forward.py: FAIL ServiceAffectsElement - 02_reverse.py: FAIL SettingsDefine - 02_reverse.py: FAIL SystemDevice - 01_forward.py: FAIL VSSD - 03_vssd_gi_errs.py: FAIL VirtualSystemManagementCapabilities - 01_enum.py: FAIL VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: FAIL VirtualSystemMigrationCapabilities - 01_enum.py: FAIL VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: FAIL VirtualSystemMigrationSettingData - 01_enum.py: FAIL VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: FAIL VirtualSystemSnapshotService - 01_enum.py: FAIL VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: FAIL VirtualSystemSnapshotService - 03_create_snapshot.py: FAIL VirtualSystemSnapshotServiceCapabilities - 01_enum.py: FAIL VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 06_paused_active_suspend.py: XFAIL ComputerSystem - 23_pause_pause.py: XFAIL ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL HostSystem - 02_hostsystem_to_rasd.py: XFAIL HostedDependency - 03_enabledstate.py: XFAIL VSSD - 04_vssd_to_rasd.py: XFAIL VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP ComputerSystemIndication - 01_created_indication.py: SKIP ElementAllocatedFromPool - 03_reverse_errs.py: SKIP ElementAllocatedFromPool - 04_forward_errs.py: SKIP LogicalDisk - 01_disk.py: SKIP LogicalDisk - 03_ld_gi_errs.py: SKIP NetworkPort - 01_netport.py: SKIP NetworkPort - 02_np_gi_errors.py: SKIP NetworkPort - 03_user_netport.py: SKIP Processor - 01_processor.py: SKIP Processor - 02_definesys_get_procs.py: SKIP Processor - 03_proc_gi_errs.py: SKIP RASD - 04_disk_rasd_size.py: SKIP RASD - 05_disk_rasd_emu_type.py: SKIP RASD - 06_parent_net_pool.py: SKIP RASD - 07_parent_disk_pool.py: SKIP ResourceAllocationFromPool - 05_RAPF_err.py: SKIP ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP VSSD - 02_bootldr.py: SKIP VirtualSystemManagementService - 06_addresource.py: SKIP VirtualSystemManagementService - 08_modifyresource.py: SKIP VirtualSystemManagementService - 09_procrasd_persist.py: SKIP VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP VirtualSystemManagementService - 12_referenced_config.py: SKIP VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP VirtualSystemManagementService - 16_removeresource.py: SKIP VirtualSystemManagementService - 17_removeresource_neg.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception variable: Unable pause dom 'DomST1' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception: 'Unable pause dom 'cs_test_domain'' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: SKIP -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned CrossClass_GuestDom/mouse:xen instead of CrossClass_GuestDom/mouse:usb Class not found Bug:<00009> -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: XFAIL ERROR - Exception: (1, u'Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend') ERROR - Failed to suspend the dom: hd_domain1 InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: SKIP -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: SKIP -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: SKIP -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: SKIP -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: SKIP -------------------------------------------------------------------- Processor - 01_processor.py: SKIP -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: SKIP -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: SKIP -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: FAIL ERROR - 6 assoc_info != 5 RASD insts -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: SKIP -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: SKIP -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: SKIP -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: SKIP -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: FAIL ERROR - LXC_ReferencedProfile returned 0 Profiles objects, expected atleast 1 Provider not found or not loadable -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: FAIL ERROR - Unexpected rc code 6 and description Provider not found or not loadable ERROR - ------ FAILED: to verify INVALID_Instid_KeyName.------ -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: FAIL ERROR - No RASD associated with ProcessorPool/0 Provider not found or not loadable -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: FAIL ERROR - No associated pool with RAFP_dom/proc Provider not found or not loadable -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: FAIL ERROR - Unexpected rc code 6 and description Provider not found or not loadable -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: FAIL ERROR - Unexpected rc code 6 and description Provider not found or not loadable -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: SKIP -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: FAIL ERROR - LXC_ResourcePoolConfigurationCapabilities return 0 instances, excepted only 1 instance Provider not found or not loadable -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: FAIL ERROR - Unexpected errno 6 and desc Provider not found or not loadable ERROR - Expected No such instance (InstanceID) 6 ERROR - ------ FAILED: Invalid InstanceID Key Value.------ -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: FAIL ERROR - Too many service error Class not found Provider not found or not loadable -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: FAIL ERROR - No LXC_ResourcePoolConfigurationService instances returned Provider not found or not loadable -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: FAIL ERROR - Association didn't return any redirection service instance Traceback (most recent call last): File "/usr/lib64/python2.5/logging/__init__.py", line 744, in emit msg = self.format(record) File "/usr/lib64/python2.5/logging/__init__.py", line 630, in format return fmt.format(record) File "/usr/lib64/python2.5/logging/__init__.py", line 418, in format record.message = record.getMessage() File "/usr/lib64/python2.5/logging/__init__.py", line 288, in getMessage msg = msg % self.args TypeError: not all arguments converted during string formatting Traceback (most recent call last): File "/usr/lib64/python2.5/logging/__init__.py", line 744, in emit msg = self.format(record) File "/usr/lib64/python2.5/logging/__init__.py", line 630, in format return fmt.format(record) File "/usr/lib64/python2.5/logging/__init__.py", line 418, in format record.message = record.getMessage() File "/usr/lib64/python2.5/logging/__init__.py", line 288, in getMessage msg = msg % self.args TypeError: not all arguments converted during string formatting Traceback (most recent call last): File "/usr/lib64/python2.5/logging/__init__.py", line 744, in emit msg = self.format(record) File "/usr/lib64/python2.5/logging/__init__.py", line 630, in format return fmt.format(record) File "/usr/lib64/python2.5/logging/__init__.py", line 418, in format record.message = record.getMessage() File "/usr/lib64/python2.5/logging/__init__.py", line 288, in getMessage msg = msg % self.args TypeError: not all arguments converted during string formatting Provider not found or not loadable -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: FAIL ERROR - Exception in fn verify_assoc() ERROR - Exception details: Failed to get insts for domain SAE_dom Provider not found or not loadable -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: FAIL ERROR - Got more than one record for 'LXC_PointingDevice' ERROR - Exception : Failed to get init_list -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: FAIL ERROR - Got 6 RASDs, expected 5 ERROR - Failed to verify RASDs -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: FAIL ERROR - Device Class mismatch ERROR - Exception Expected Device class list: ['LXC_Memory', 'LXC_Processor'] Got: [u'LXC_DisplayController', u'LXC_LogicalDisk', u'LXC_Memory', u'LXC_PointingDevice'] -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: FAIL ERROR - Unexpected errno 6 and desc Provider not found or not loadable ERROR - Expected No such instance (InstanceID) 6 ERROR - ------ FAILED: Invalid InstanceID Key Value.------ -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: FAIL ERROR - 'LXC_VirtualSystemManagementCapabilities' returned '0' instance, excepted only 1 Provider not found or not loadable -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: FAIL ERROR - Unexpected errno 6 and desc Provider not found or not loadable ERROR - Expected No such instance (InstanceID) 6 ERROR - ------ FAILED: Invalid InstanceID Key Value.------ -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL ERROR - rstest_domain not updated properly. ERROR - Exp AutomaticRecoveryAction=3, got 2 Bug:<00008> -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: FAIL ERROR - LXC_VirtualSystemMigrationCapabilities return 0 instances, excepted only 1 instance Provider not found or not loadable -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: FAIL ERROR - Unexpected errno 6 and desc Provider not found or not loadable ERROR - Expected No such instance (InstanceID) 6 ERROR - ------ FAILED: Invalid InstanceID Key Value.------ -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: FAIL ERROR - LXC_VirtualSystemMigrationSettingData return 0 instances, excepted only 1 instance Provider not found or not loadable -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: FAIL ERROR - Unexpected errno 6 and desc Provider not found or not loadable ERROR - Expected No such instance (InstanceID) 6 ERROR - ------ FAILED: Invalid InstanceID Key Value.------ -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: FAIL ERROR - LXC_VirtualSystemSnapshotService return 0 instances, excepted only 1 instance Class not found Provider not found or not loadable -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: FAIL ERROR - list index out of range Provider not found or not loadable -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: FAIL ERROR - Exp at least one LXC_VirtualSystemSnapshotServiceCapabilities ERROR - Exception: Unable to get VSSSC instance ERROR - Failed to remove snapshot file for snapshot_vm Provider not found or not loadable -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: FAIL ERROR - LXC_VirtualSystemSnapshotServiceCapabilities return 0 instances, excepted only 1 instance Provider not found or not loadable -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: FAIL ERROR - Unexpected errno 6 and desc Provider not found or not loadable ERROR - Expected No such instance (InstanceID) 6 ERROR - ------ FAILED: Invalid InstanceID Key Value.------ -------------------------------------------------------------------- From kaitlin at linux.vnet.ibm.com Tue Jun 2 23:07:08 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 2 Jun 2009 19:07:08 -0400 Subject: [Libvirt-cim] Test Run Summary (Jun 02 2009): LXC on Fedora release 10 (Cambridge) with sfcb Message-ID: <200906022307.n52N78Fm024819@d01av02.pok.ibm.com> ================================================= Test Run Summary (Jun 02 2009): LXC on Fedora release 10 (Cambridge) with sfcb ================================================= Distro: Fedora release 10 (Cambridge) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.5.1 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 883 Libvirt-cim changeset: 10e45fca47f0 Cimtest revision: 701 Cimtest changeset: 017ed90bab7b ================================================= FAIL : 5 XFAIL : 9 SKIP : 39 PASS : 105 ----------------- Total : 158 ================================================= FAIL Test Summary: RASD - 01_verify_rasd_fields.py: FAIL ServiceAffectsElement - 01_forward.py: FAIL ServiceAffectsElement - 02_reverse.py: FAIL SettingsDefine - 02_reverse.py: FAIL SystemDevice - 01_forward.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 06_paused_active_suspend.py: XFAIL ComputerSystem - 23_pause_pause.py: XFAIL ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL HostSystem - 02_hostsystem_to_rasd.py: XFAIL HostedDependency - 03_enabledstate.py: XFAIL VSSD - 04_vssd_to_rasd.py: XFAIL VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP ComputerSystemIndication - 01_created_indication.py: SKIP ElementAllocatedFromPool - 03_reverse_errs.py: SKIP ElementAllocatedFromPool - 04_forward_errs.py: SKIP LogicalDisk - 01_disk.py: SKIP LogicalDisk - 03_ld_gi_errs.py: SKIP NetworkPort - 01_netport.py: SKIP NetworkPort - 02_np_gi_errors.py: SKIP NetworkPort - 03_user_netport.py: SKIP Processor - 01_processor.py: SKIP Processor - 02_definesys_get_procs.py: SKIP Processor - 03_proc_gi_errs.py: SKIP RASD - 04_disk_rasd_size.py: SKIP RASD - 05_disk_rasd_emu_type.py: SKIP RASD - 06_parent_net_pool.py: SKIP RASD - 07_parent_disk_pool.py: SKIP ResourceAllocationFromPool - 05_RAPF_err.py: SKIP ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP VSSD - 02_bootldr.py: SKIP VirtualSystemManagementService - 06_addresource.py: SKIP VirtualSystemManagementService - 08_modifyresource.py: SKIP VirtualSystemManagementService - 09_procrasd_persist.py: SKIP VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP VirtualSystemManagementService - 12_referenced_config.py: SKIP VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP VirtualSystemManagementService - 16_removeresource.py: SKIP VirtualSystemManagementService - 17_removeresource_neg.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception variable: Unable pause dom 'DomST1' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception: 'Unable pause dom 'cs_test_domain'' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: SKIP -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned CrossClass_GuestDom/mouse:xen instead of CrossClass_GuestDom/mouse:usb Class not found Bug:<00009> -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: XFAIL ERROR - Exception: (1, u'Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend') ERROR - Failed to suspend the dom: hd_domain1 InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: SKIP -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: SKIP -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: SKIP -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: SKIP -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: SKIP -------------------------------------------------------------------- Processor - 01_processor.py: SKIP -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: SKIP -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: SKIP -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: FAIL ERROR - 6 assoc_info != 5 RASD insts -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: SKIP -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: SKIP -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: SKIP -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: SKIP -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: SKIP -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: FAIL ERROR - Got more than one record for 'LXC_PointingDevice' ERROR - Exception in fn verify_assoc() ERROR - Exception details: Failed to get insts for domain SAE_dom -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: FAIL ERROR - Got more than one record for 'LXC_PointingDevice' ERROR - Exception : Failed to get init_list -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: FAIL ERROR - Got 6 RASDs, expected 5 ERROR - Failed to verify RASDs -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: FAIL ERROR - Device Class mismatch ERROR - Exception Expected Device class list: ['LXC_Memory', 'LXC_Processor'] Got: [u'LXC_DisplayController', u'LXC_LogicalDisk', u'LXC_Memory', u'LXC_PointingDevice'] -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL ERROR - rstest_domain not updated properly. ERROR - Exp AutomaticRecoveryAction=3, got 2 Bug:<00008> -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From kaitlin at linux.vnet.ibm.com Tue Jun 2 23:09:30 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 02 Jun 2009 16:09:30 -0700 Subject: [Libvirt-cim] Test Run Summary (Jun 02 2009): LXC on Fedora release 10 (Cambridge) with sfcb In-Reply-To: <200906022304.n52N4mNk006965@d03av02.boulder.ibm.com> References: <200906022304.n52N4mNk006965@d03av02.boulder.ibm.com> Message-ID: <4A25B12A.7040502@linux.vnet.ibm.com> Kaitlin Rupert wrote: > ================================================= > Test Run Summary (Jun 02 2009): LXC on Fedora release 10 (Cambridge) with sfcb > ================================================= > Distro: Fedora release 10 (Cambridge) > Kernel: 2.6.27.15-170.2.24.fc10.x86_64 > libvirt: 0.5.1 > Hypervisor: QEMU 0.9.1 > CIMOM: sfcb sfcbd 1.3.4preview > Libvirt-cim revision: 883 > Libvirt-cim changeset: 10e45fca47f0 > Cimtest revision: 701 > Cimtest changeset: 017ed90bab7b > ================================================= > FAIL : 28 Most of these failures were do to a config issue with sfcb. It was configured to allow 32 provider processes, cimtest needs more than that to run. I bumped it up to 64 proc - new run to follow. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Tue Jun 2 16:39:47 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 02 Jun 2009 13:39:47 -0300 Subject: [Libvirt-cim] [PATCH] [CU] Add support to read/write array of strings to properties which expect them Message-ID: <639fb266e1e6d657ba5a.1243960787@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1243950914 10800 # Node ID 639fb266e1e6d657ba5a7c52c5acd2dc7d4ccb66 # Parent 1cb3975921d590d4dda4de197a4dc687e45d1840 [CU] Add support to read/write array of strings to properties which expect them. The lexer and the parser were changed recognize array strings and properly handle it to the provider which called the lexer/parser Signed-off-by: Richard Maciel diff -r 1cb3975921d5 -r 639fb266e1e6 eo_parser.c --- a/eo_parser.c Mon Apr 27 16:11:32 2009 -0700 +++ b/eo_parser.c Tue Jun 02 10:55:14 2009 -0300 @@ -169,6 +169,29 @@ return CMPI_sint8; } +inline CMPIStatus ins_chars_into_cmstr_arr(const CMPIBroker *broker, + CMPIArray *arr, + CMPICount index, + char *str) +{ + CMPIString *cm_str; + CMPIStatus s = {CMPI_RC_OK, NULL}; + + cm_str = CMNewString(broker, str, &s); + if (s.rc != CMPI_RC_OK || CMIsNullObject(cm_str)) { + CU_DEBUG("Error creating CMPIString"); + goto out; + } + + s = CMSetArrayElementAt(arr, index, &cm_str, CMPI_string); + if (s.rc != CMPI_RC_OK) + CU_DEBUG("Error setting array element %u\n" + "Error code: %d", index, s.rc); + + out: + return s; +} + /* * Local Variables: * mode: C diff -r 1cb3975921d5 -r 639fb266e1e6 eo_parser_xml.h --- a/eo_parser_xml.h Mon Apr 27 16:11:32 2009 -0700 +++ b/eo_parser_xml.h Tue Jun 02 10:55:14 2009 -0300 @@ -31,6 +31,11 @@ char *prop, CMPIInstance *inst); +inline CMPIStatus ins_chars_into_cmstr_arr(const CMPIBroker *broker, + CMPIArray *arr, + CMPICount index, + char *str); + #endif /* diff -r 1cb3975921d5 -r 639fb266e1e6 eo_util_lexer.l --- a/eo_util_lexer.l Mon Apr 27 16:11:32 2009 -0700 +++ b/eo_util_lexer.l Tue Jun 02 10:55:14 2009 -0300 @@ -4,6 +4,7 @@ * Authors: * Gareth Bestor * Dan Smith + * Richard Maciel * */ /*** WARNING - COMMENTS IN LEX MUST BE TAB INDENTED ***/ @@ -91,7 +92,18 @@ return(STRING); } - /* Classname */ +\{ { + return(OPENBRACKET); + } + +\} { + return(CLOSEBRACKET); + } + +\, { + return(COMMA); + } + /* NOTE - this rule only applies after a 'INSTANCE OF' has been read in */ [A-Za-z][A-Za-z0-9_]* { BEGIN INITIAL; /* Go back to normal parsing rules now */ diff -r 1cb3975921d5 -r 639fb266e1e6 eo_util_parser.y --- a/eo_util_parser.y Mon Apr 27 16:11:32 2009 -0700 +++ b/eo_util_parser.y Tue Jun 02 10:55:14 2009 -0300 @@ -4,6 +4,7 @@ * Authors: * Gareth Bestor * Dan Smith + * Richard Maciel */ /* DEFINITIONS SECTION */ @@ -29,6 +30,10 @@ static const CMPIBroker * _BROKER; static CMPIInstance ** _INSTANCE; static const char * _NAMESPACE; +static CMPICount stringarraysize; +static char **stringarray; +static char *stringarraypropname; + #ifdef EODEBUG #define EOTRACE(fmt, arg...) fprintf(stderr, fmt, ##arg) @@ -36,6 +41,7 @@ #define EOTRACE(fmt, arg...) #endif + int eo_parse_parseinstance(const CMPIBroker *broker, CMPIInstance **instance, const char *ns); @@ -52,7 +58,7 @@ } /* Define simple (untyped) lexical tokens */ -%token INSTANCE OF ENDOFFILE +%token INSTANCE OF ENDOFFILE OPENBRACKET CLOSEBRACKET COMMA /* Define lexical tokens that return a value and their return type */ %token CLASS @@ -67,7 +73,7 @@ /* Rules section */ instance: /* empty */ - | INSTANCE OF CLASS '{' + | INSTANCE OF CLASS OPENBRACKET { EOTRACE("classname = %s\n",$3); CMPIObjectPath *op; @@ -82,7 +88,7 @@ return RC_INVALID_CLASS; free($3); } - properties '}' ';' + properties CLOSEBRACKET ';' { /* Return after reading in each instance */ return RC_OK; @@ -127,7 +133,17 @@ CMSetProperty(*_INSTANCE, $1, &($3), CMPI_boolean); free($1); } + | PROPERTYNAME '=' OPENBRACKET + { + EOTRACE("propertyname = %s\n" + "\ttype = CMPI_charsA\n", + $1); + stringarraysize = 0; + stringarraypropname = $1; + } + arrayofstrings CLOSEBRACKET ';' + | PROPERTYNAME '=' CIMNULL ';' { EOTRACE("propertyname = %s\n" @@ -136,6 +152,80 @@ } ; +arrayofstrings: STRING + { + EOTRACE("\t%s[%u]=%s\n", + propertyname, + stringarraysize, + $1); + + stringarraysize++; + stringarray = (char **)realloc(stringarray, + sizeof(char *) * + stringarraysize); + stringarray[stringarraysize-1] = $1; + } + COMMA arrayofstrings + + + | STRING + { + CMPIArray *arr; + CMPICount i; + CMPIStatus s = {CMPI_RC_OK, NULL}; + + EOTRACE("\t%s[%u]=%s\n", + propertyname, + stringarraysize, + $1); + + stringarraysize++; + + arr = CMNewArray(_BROKER, + stringarraysize, + CMPI_string, + &s); + if (s.rc != CMPI_RC_OK || CMIsNullObject(arr)) { + EOTRACE("Error creating array\n"); + goto str_arr_out; + } + + // Values to stringarraysize - 2 are in the + // temporary array + for (i = 0; i < stringarraysize - 1; i++) { + s = ins_chars_into_cmstr_arr(_BROKER, + arr, + i, + stringarray[i]); + if (s.rc != CMPI_RC_OK) + goto str_arr_out; + } + + s = ins_chars_into_cmstr_arr(_BROKER, + arr, + stringarraysize - 1, + $1); + if (s.rc != CMPI_RC_OK) + goto str_arr_out; + + CMSetProperty(*_INSTANCE, + stringarraypropname, + &arr, + CMPI_stringA); + + str_arr_out: + free(stringarraypropname); + for (i = 0; i < stringarraysize - 1; i++) + free(stringarray[i]); + free($1); + + if (s.rc != CMPI_RC_OK) { + return RC_INVALID_CLASS; + } + + } + ; + /* END OF RULES SECTION */ %% From rmaciel at linux.vnet.ibm.com Tue Jun 2 16:47:30 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 02 Jun 2009 13:47:30 -0300 Subject: [Libvirt-cim] [PATCH 0 of 3] Add support for booting on multiple devices and for boot order Message-ID: From rmaciel at linux.vnet.ibm.com Tue Jun 2 16:47:32 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 02 Jun 2009 13:47:32 -0300 Subject: [Libvirt-cim] [PATCH 2 of 3] Add support to fetch data from BootDevices property to the internal data structure In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1243891183 10800 # Node ID f2cb4b64756a0f0eb284198cf47834c14f0d1f24 # Parent abc90cae6c08598d0ada357a6cf2f4bb2b2cd1c7 Add support to fetch data from BootDevices property to the internal data structure Signed-off-by: Richard Maciel diff -r abc90cae6c08 -r f2cb4b64756a src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:38 2009 -0300 +++ b/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:43 2009 -0300 @@ -197,6 +197,69 @@ return kvm; } +static int bootord_vssd_to_domain(CMPIInstance *inst, + struct domain *domain) +{ + int ret; + CMPICount i; + CMPIArray *bootlist; + CMPIStatus s; + CMPIData boot_elem; + char **tmp_str_arr; + + for (i = 0; i < domain->os_info.fv.bootlist_ct; i++) + free(domain->os_info.fv.bootlist[i]); + + ret = cu_get_array_prop(inst, "BootDevices", &bootlist); + + if (ret == CMPI_RC_OK) { + CMPICount bl_size; + + bl_size = CMGetArrayCount(bootlist, &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Invalid BootDevice array size"); + return 0; + } + + tmp_str_arr = (char **)realloc(domain->os_info.fv.bootlist, + bl_size * sizeof(char *)); + + if (tmp_str_arr == NULL) { + CU_DEBUG("Could not alloc BootDevices array"); + return 0; + } + + for (i = 0; i < bl_size; i++) { + const char *str; + + boot_elem = CMGetArrayElementAt(bootlist, + i, + NULL); + + if (CMIsNullValue(boot_elem)) { + CU_DEBUG("Null BootDevice"); + return 0; + } + + str = CMGetCharPtr(boot_elem.value.string); + + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Could not extract char pointer from " + "CMPIArray"); + return 0; + } + + tmp_str_arr[i] = strdup(str); + } + domain->os_info.fv.bootlist_ct = bl_size; + domain->os_info.fv.bootlist = tmp_str_arr; + + } else + CU_DEBUG("Failed to get BootDevices property"); + + return 1; +} + static int fv_vssd_to_domain(CMPIInstance *inst, struct domain *domain, const char *pfx) @@ -216,12 +279,9 @@ return 0; } - ret = cu_get_str_prop(inst, "BootDevice", &val); - if (ret != CMPI_RC_OK) - val = "hd"; - - free(domain->os_info.fv.boot); - domain->os_info.fv.boot = strdup(val); + ret = bootord_vssd_to_domain(inst, domain); + if (ret != 1) + return 0; ret = cu_get_str_prop(inst, "Emulator", &val); if (ret != CMPI_RC_OK) From rmaciel at linux.vnet.ibm.com Tue Jun 2 16:47:31 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 02 Jun 2009 13:47:31 -0300 Subject: [Libvirt-cim] [PATCH 1 of 3] Added support to convert data in the internal format to the format used by the BootDevices property In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1243891178 10800 # Node ID abc90cae6c08598d0ada357a6cf2f4bb2b2cd1c7 # Parent aa8e071730d2ce20064f1c0295a8005e31ef2cea Added support to convert data in the internal format to the format used by the BootDevices property Signed-off-by: Richard Maciel diff -r aa8e071730d2 -r abc90cae6c08 schema/VSSD.mof --- a/schema/VSSD.mof Wed May 20 10:41:46 2009 -0700 +++ b/schema/VSSD.mof Mon Jun 01 18:19:38 2009 -0300 @@ -27,7 +27,7 @@ [Description ("The device to boot from when in fully-virtualized mode." "One of hd,fd,cdrom.")] - string BootDevice; + string BootDevices[]; [Description ("The emulator the guest should use during runtime.")] string Emulator; @@ -42,8 +42,8 @@ class KVM_VirtualSystemSettingData : Virt_VirtualSystemSettingData { - [Description ("The device to boot from. One of hd,fd,cdrom.")] - string BootDevice; + [Description ("The list of devices to boot from. hd,fd,cdrom.")] + string BootDevices[]; [Description ("The emulator the guest should use during runtime.")] string Emulator; diff -r aa8e071730d2 -r abc90cae6c08 src/Virt_VSSD.c --- a/src/Virt_VSSD.c Wed May 20 10:41:46 2009 -0700 +++ b/src/Virt_VSSD.c Mon Jun 01 18:19:38 2009 -0300 @@ -38,20 +38,79 @@ const static CMPIBroker *_BROKER; -static void _set_fv_prop(struct domain *dominfo, - CMPIInstance *inst) +static CMPIStatus _set_fv_prop(struct domain *dominfo, + CMPIInstance *inst) { bool fv = true; + CMPIArray *array; + CMPICount bl_ct; + CMPIStatus s = {CMPI_RC_OK, NULL}; if (dominfo->type == DOMAIN_XENFV) CMSetProperty(inst, "IsFullVirt", (CMPIValue *)&fv, CMPI_boolean); - if (dominfo->os_info.fv.boot != NULL) - CMSetProperty(inst, - "BootDevice", - (CMPIValue *)dominfo->os_info.fv.boot, - CMPI_chars); + bl_ct = dominfo->os_info.fv.bootlist_ct; + if (bl_ct > 0) { + CMPICount i; + CMPIStatus s; + + CU_DEBUG("bootlist_ct = %d", bl_ct); + + array = CMNewArray(_BROKER, + bl_ct, + CMPI_string, + &s); + + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error creating BootDevice list"); + goto error; + } + + for (i = 0; i < bl_ct; i++) { + CMPIString *cm_str; + + CU_DEBUG("BootList[%u]=%s", + i, + dominfo->os_info.fv.bootlist[i]); + + cm_str = CMNewString(_BROKER, + (const char *)dominfo->os_info. + fv.bootlist[i], + &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error creating CMPIString"); + goto error; + } + + s = CMSetArrayElementAt(array, + i, + (CMPIValue *)&cm_str, + CMPI_string); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error setting BootDevice array " + "element"); + goto error; + } + } + + s = CMSetProperty(inst, + "BootDevices", + (CMPIValue *)&array, + CMPI_stringA); + + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error setting BootDevices property"); + goto error; + } + } + return s; + + error: + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_FAILED, + "Unable to set BootDevices property"); + return s; } static void _set_pv_prop(struct domain *dominfo, @@ -104,6 +163,7 @@ char *pfx = NULL; char *vsid = NULL; int ret = 1; + CMPIStatus s = {CMPI_RC_OK, NULL}; CMPIObjectPath *op; struct domain *dominfo = NULL; @@ -158,7 +218,12 @@ if ((dominfo->type == DOMAIN_XENFV) || (dominfo->type == DOMAIN_KVM) || (dominfo->type == DOMAIN_QEMU)) - _set_fv_prop(dominfo, inst); + s = _set_fv_prop(dominfo, inst); + if (s.rc != CMPI_RC_OK) { + ret = 0; + goto out; + } + else if (dominfo->type == DOMAIN_XENPV) _set_pv_prop(dominfo, inst); else if (dominfo->type == DOMAIN_LXC) From rmaciel at linux.vnet.ibm.com Tue Jun 2 16:47:33 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 02 Jun 2009 13:47:33 -0300 Subject: [Libvirt-cim] [PATCH 3 of 3] XML generation and parsing for the BootDevices property In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1243891182 10800 # Node ID ea14dbce8b57c4586db64eba5465748db6475380 # Parent f2cb4b64756a0f0eb284198cf47834c14f0d1f24 XML generation and parsing for the BootDevices property Signed-off-by: Richard Maciel diff -r f2cb4b64756a -r ea14dbce8b57 libxkutil/device_parsing.c --- a/libxkutil/device_parsing.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/device_parsing.c Mon Jun 01 18:19:42 2009 -0300 @@ -810,6 +810,8 @@ static int parse_os(struct domain *dominfo, xmlNode *os) { xmlNode *child; + char **blist = NULL; + unsigned bl_size = 0; for (child = os->children; child != NULL; child = child->next) { if (XSTREQ(child->name, "type")) @@ -822,10 +824,23 @@ STRPROP(dominfo, os_info.pv.cmdline, child); else if (XSTREQ(child->name, "loader")) STRPROP(dominfo, os_info.fv.loader, child); - else if (XSTREQ(child->name, "boot")) - dominfo->os_info.fv.boot = get_attr_value(child, - "dev"); - else if (XSTREQ(child->name, "init")) + else if (XSTREQ(child->name, "boot")) { + char **tmp_list = NULL; + + tmp_list = (char **)realloc(blist, + (bl_size+1) * + sizeof(char *)); + if (tmp_list == NULL) { + // Nothing you can do. Just go on. + CU_DEBUG("Could not alloc space for " + "boot device"); + continue; + } + blist = tmp_list; + + blist[bl_size] = get_attr_value(child, "dev"); + bl_size++; + } else if (XSTREQ(child->name, "init")) STRPROP(dominfo, os_info.lxc.init, child); } @@ -843,6 +858,9 @@ else dominfo->type = -1; + dominfo->os_info.fv.bootlist = blist; + dominfo->os_info.fv.bootlist_ct = bl_size; + return 1; } @@ -1001,9 +1019,15 @@ free(dom->os_info.pv.cmdline); } else if ((dom->type == DOMAIN_XENFV) || (dom->type == DOMAIN_KVM) || (dom->type == DOMAIN_QEMU)) { + int i; + free(dom->os_info.fv.type); free(dom->os_info.fv.loader); - free(dom->os_info.fv.boot); + + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + free(dom->os_info.fv.bootlist[i]); + } + free(dom->os_info.fv.bootlist); } else if (dom->type == DOMAIN_LXC) { free(dom->os_info.lxc.type); free(dom->os_info.lxc.init); diff -r f2cb4b64756a -r ea14dbce8b57 libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/device_parsing.h Mon Jun 01 18:19:42 2009 -0300 @@ -99,7 +99,8 @@ struct fv_os_info { char *type; /* Should always be 'hvm' */ char *loader; - char *boot; + unsigned bootlist_ct; + char **bootlist; }; struct lxc_os_info { diff -r f2cb4b64756a -r ea14dbce8b57 libxkutil/xml_parse_test.c --- a/libxkutil/xml_parse_test.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/xml_parse_test.c Mon Jun 01 18:19:42 2009 -0300 @@ -28,6 +28,7 @@ static void print_os(struct domain *dom, FILE *d) { + int i; if (dom->type == DOMAIN_XENPV) { print_value(d, "Domain Type", "Xen PV"); @@ -39,13 +40,18 @@ print_value(d, "Domain Type", "Xen FV"); print_value(d, "Type", dom->os_info.fv.type); print_value(d, "Loader", dom->os_info.fv.loader); - print_value(d, "Boot", dom->os_info.fv.boot); + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + print_value(d, "Boot", dom->os_info.fv.bootlist[i]); + } } else if ((dom->type == DOMAIN_KVM) || (dom->type == DOMAIN_QEMU)) { print_value(d, "Domain Type", "KVM/QEMU"); print_value(d, "Type", dom->os_info.fv.type); print_value(d, "Loader", dom->os_info.fv.loader); - print_value(d, "Boot", dom->os_info.fv.boot); + + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + print_value(d, "Boot", dom->os_info.fv.bootlist[i]); + } } else if (dom->type == DOMAIN_LXC) { print_value(d, "Init", dom->os_info.lxc.init); } else { diff -r f2cb4b64756a -r ea14dbce8b57 libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/xmlgen.c Mon Jun 01 18:19:42 2009 -0300 @@ -439,6 +439,7 @@ { struct fv_os_info *os = &domain->os_info.fv; xmlNodePtr tmp; + unsigned i; if (os->type == NULL) os->type = strdup("hvm"); @@ -446,8 +447,11 @@ if (os->loader == NULL) os->loader = strdup("/usr/lib/xen/boot/hvmloader"); - if (os->boot == NULL) - os->boot = strdup("hd"); + if (os->bootlist_ct == 0) { + os->bootlist_ct = 1; + os->bootlist = (char **)calloc(1, sizeof(char *)); + os->bootlist[0] = strdup("hd"); + } tmp = xmlNewChild(root, NULL, BAD_CAST "type", BAD_CAST os->type); if (tmp == NULL) @@ -457,11 +461,13 @@ if (tmp == NULL) return XML_ERROR; - tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); - if (tmp == NULL) - return XML_ERROR; + for (i = 0; i < os->bootlist_ct; i++) { + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); + if (tmp == NULL) + return XML_ERROR; - xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->boot); + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); + } tmp = xmlNewChild(root, NULL, BAD_CAST "features", NULL); xmlNewChild(tmp, NULL, BAD_CAST "pae", NULL); @@ -475,21 +481,28 @@ { struct fv_os_info *os = &domain->os_info.fv; xmlNodePtr tmp; + unsigned i; if (os->type == NULL) os->type = strdup("hvm"); - if (os->boot == NULL) - os->boot = strdup("hd"); + if (os->bootlist_ct == 0) { + os->bootlist_ct = 1; + os->bootlist = (char **)calloc(1, sizeof(char *)); + os->bootlist[0] = strdup("hd"); + } tmp = xmlNewChild(root, NULL, BAD_CAST "type", BAD_CAST os->type); if (tmp == NULL) return XML_ERROR; - tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); - if (tmp == NULL) - return XML_ERROR; - xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->boot); + for (i = 0; i < os->bootlist_ct; i++) { + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); + if (tmp == NULL) + return XML_ERROR; + + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); + } return NULL; } From deeptik at linux.vnet.ibm.com Wed Jun 3 05:25:16 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Wed, 03 Jun 2009 10:55:16 +0530 Subject: [Libvirt-cim] [PATCH 4 of 4] [TEST] #2 VSMS 08 Remove cleanup_guest_netpool() def and call it from vsmigration.py In-Reply-To: <4A256363.2050602@linux.vnet.ibm.com> References: <401fcf44005919231ce6.1243632000@localhost.localdomain> <4A251A97.6000403@linux.vnet.ibm.com> <4A256363.2050602@linux.vnet.ibm.com> Message-ID: <4A26093C.4010308@linux.vnet.ibm.com> Kaitlin Rupert wrote: >>> @@ -135,6 +139,10 @@ >>> logger.error("Error setting up the guest") >>> return status >>> >>> + # Generally, having a test sleep is a bad choice, but >>> we need to >>> + # give the guest some time to fully boot before we >>> reboot it >>> + sleep(15) >>> >> You can increase the timeout period in poll_for_state_change(). >> Did increasing the timeout period for poll_for_state_change() did not >> work for you ? > > > The issue here is a slightly different.. in poll_for_state_change(), > we poll until libvirt reports that the guest is active. However, > libvirt reports that the guest is active once the guest starts the > boot process. So, pool_for_state_change() will stop polling, but the > guest may not have finished the boot sequence. > > At that point, we attempt to launch a restart migration - this means > that we attempt initiate a guest shutdown before the guest is even > booted. For a guest shutdown, libvirt sends an ACPI event to the > guest, but if the guest isn't fully booted, it won't be able to detect > that event. > > So we need to give the OS a chance to boot before asking for a shutdown. Oh! this makes sense then... -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Wed Jun 3 09:18:32 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Wed, 03 Jun 2009 14:48:32 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] Update RedirectionSerivce 01 to work with recent schema changes In-Reply-To: <4A256EBF.8000402@linux.vnet.ibm.com> References: <7dd85abd05e44f4a1c31.1243635136@localhost.localdomain> <4A2532A1.3070107@linux.vnet.ibm.com> <4A256EBF.8000402@linux.vnet.ibm.com> Message-ID: <4A263FE8.9070807@linux.vnet.ibm.com> Kaitlin Rupert wrote: > Deepti B Kalakeri wrote: >> This tc failed with on F10 with KVM and current source. >> >> -------------------------------------------------------------------- >> RedirectionService - 01_enum_crs.py: FAIL >> 01_enum_crs.py:29: DeprecationWarning: the sets module is deprecated >> from sets import Set >> ERROR - TypeError : __call__() takes exactly 1 argument (2 given) >> Traceback (most recent call last): >> File "./lib/XenKvmLib/const.py", line 139, in do_try >> File "01_enum_crs.py", line 113, in main >> if res_val != exp_val: >> TypeError: __call__() takes exactly 1 argument (2 given) >> ERROR - None >> CIM_ERR_INVALID_CLASS: Linux_ComputerSystem >> -------------------------------------------------------------------- >> > > This patch should fix this issue.. is it possible that the schema > wasn't registered on the system properly? > > I recently upgraded the schema, so you'll need to do a full provider > install: > > 1) make preuinstall > 2) make uninstall > 3) configure > 4) make > 5) make preinstall > 6) restart the CIMOM > 7) make postinstall > > This will pick up the new schema changes. > > The bug here is that the CRS attribute MaxConcurrentEnabledSAPs has > changed to MaxCurrentEnabledSAPs in the 2.21 schema. > > So you can do a EnumerateInstances() query on your system to see what > the value is. If you have current sources, but you see > MaxConcurrentEnabledSAPs, then the schema update wasn't updated properly. > I verified this again with a fresh libvirt-cim and followed the 1) make preuinstall 2) make uninstall 3) ./configure PKG_CONFIG_PATH=/usr/local/lib/pkgconfig PROVIDERDIR=/usr/lib64/Pegasus/providers 4) make 5) make install 6) make preinstall sh -x base_schema/install_base_schema.sh `pwd`/base_schema + DATA=/usr/src/libvirt-cim/base_schema + NS=root/virt + CIMOM=pegasus *+ SCHEMA_VERSION=2.21.0* ++ mktemp -d /tmp/cim_schema.XXXXX + TMPDIR=/tmp/cim_schema.XSuBo + chmod a+x /tmp/cim_schema.XSuBo + '[' '!' -z '' ']' + DEBUG=/dev/null + '[' -z /usr/src/libvirt-cim/base_schema ']' + case "$CIMOM" in + '[' -f /dev/null ']' 7) restart the CIMOM 8) make postinstall [libvirt-cim]# ll base_schema/ total 1912 *-rw-r--r-- 1 root root 1888838 2009-03-29 16:55 cim_schema_2.21.0Experimental-MOFs.zip* -rw-r--r-- 1 root root 378 2009-06-03 00:37 cimv2.21.0-cimv2_mof -rw-r--r-- 1 root root 1377 2009-06-03 00:37 cimv2.21.0-interop_mof -rw-r--r-- 1 root root 1230 2009-06-03 00:37 fix_schema.patch -rw-r--r-- 1 root root 2965 2009-06-03 01:38 install_base_schema.sh -rwxr-xr-x 1 root root 2973 2009-06-03 00:37 install_base_schema.sh.in -rw-r--r-- 1 root root 13152 2009-06-03 01:38 Makefile -rwxr-xr-x 1 root root 434 2009-06-03 00:37 Makefile.am -rw-r--r-- 1 root root 12412 2009-06-03 00:38 Makefile.in -rw-r--r-- 1 root root 513 2009-06-03 00:37 README.DMTF you can see cim_schema_2.21.* downloaded. Here is what I got : wbemcli ei http://localhost:5988/root/virt:KVM_ConsoleRedirectionService -nl localhost:5988/root/virt:KVM_ConsoleRedirectionService.CreationClassName="KVM_ConsoleRedirectionService",Name="ConsoleRedirectionService",SystemCreationClassName="KVM_HostSystem",SystemName="localhost" -Caption= -Description= -ElementName="ConsoleRedirectionService" -InstallDate= -OperationalStatus= -StatusDescriptions= -Status= -HealthState= -PrimaryStatus= -DetailedStatus= -OperatingStatus= -CommunicationStatus= -EnabledState=2 -OtherEnabledState= -RequestedState=12 -EnabledDefault=2 -TimeOfLastStateChange= -AvailableRequestedStates= -TransitioningToState=12 -SystemCreationClassName="KVM_HostSystem" -SystemName="localhost" -CreationClassName="KVM_ConsoleRedirectionService" -Name="ConsoleRedirectionService" -PrimaryOwnerName= -PrimaryOwnerContact= -StartMode= -Started= -RedirectionServiceType=3 -OtherRedirectionServiceType= *-MaxConcurrentEnabledSAPs=* -SharingMode=3 Am I missing something ? -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Wed Jun 3 14:12:00 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Wed, 03 Jun 2009 07:12:00 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] Fixing the RPCS/04 tc Message-ID: # HG changeset patch # User Deepti B. Kalakeri # Date 1244038300 25200 # Node ID f2bbb86e5fec3ffe80b3716dc40e242aec3b0746 # Parent 7e1e9ac3a390df22b3fbd8f8c760dd13e41aff88 [TEST] Fixing the RPCS/04 tc Tested on F10 with KVM and current sources. Signed-off-by: Deepti B. Kalakeri diff -r 7e1e9ac3a390 -r f2bbb86e5fec suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/04_CreateChildResourcePool.py --- a/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/04_CreateChildResourcePool.py Mon Jun 01 02:27:59 2009 -0700 +++ b/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/04_CreateChildResourcePool.py Wed Jun 03 07:11:40 2009 -0700 @@ -98,6 +98,11 @@ logger.error("Unable to destroy networkpool %s", test_pool) return status + status = undefine_netpool(options.ip, options.virt, test_pool) + if status != PASS: + logger.error("Unable to undefine networkpool %s", test_pool) + return status + status = PASS return status From kaitlin at linux.vnet.ibm.com Wed Jun 3 15:31:09 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 03 Jun 2009 08:31:09 -0700 Subject: [Libvirt-cim] [PATCH] [CU] Add support to read/write array of strings to properties which expect them In-Reply-To: <639fb266e1e6d657ba5a.1243960787@localhost.localdomain> References: <639fb266e1e6d657ba5a.1243960787@localhost.localdomain> Message-ID: <4A26973D.2090705@linux.vnet.ibm.com> > diff -r 1cb3975921d5 -r 639fb266e1e6 eo_parser.c > --- a/eo_parser.c Mon Apr 27 16:11:32 2009 -0700 > +++ b/eo_parser.c Tue Jun 02 10:55:14 2009 -0300 > @@ -169,6 +169,29 @@ > return CMPI_sint8; > } > > +inline CMPIStatus ins_chars_into_cmstr_arr(const CMPIBroker *broker, > + CMPIArray *arr, > + CMPICount index, > + char *str) No need to make this inline. > +{ > + CMPIString *cm_str; > + CMPIStatus s = {CMPI_RC_OK, NULL}; > + > + cm_str = CMNewString(broker, str, &s); > + if (s.rc != CMPI_RC_OK || CMIsNullObject(cm_str)) { > + CU_DEBUG("Error creating CMPIString"); > + goto out; > + } > + > + s = CMSetArrayElementAt(arr, index, &cm_str, CMPI_string); > + if (s.rc != CMPI_RC_OK) > + CU_DEBUG("Error setting array element %u\n" > + "Error code: %d", index, s.rc); > + > + out: > + return s; > +} > + > /* > * Local Variables: > * mode: C > diff -r 1cb3975921d5 -r 639fb266e1e6 eo_parser_xml.h > --- a/eo_parser_xml.h Mon Apr 27 16:11:32 2009 -0700 > +++ b/eo_parser_xml.h Tue Jun 02 10:55:14 2009 -0300 > @@ -31,6 +31,11 @@ > char *prop, > CMPIInstance *inst); > > +inline CMPIStatus ins_chars_into_cmstr_arr(const CMPIBroker *broker, > + CMPIArray *arr, > + CMPICount index, > + char *str); Same here - you can remove the inline. > /* NOTE - this rule only applies after a 'INSTANCE OF' has been read in */ > [A-Za-z][A-Za-z0-9_]* { > BEGIN INITIAL; /* Go back to normal parsing rules now */ > diff -r 1cb3975921d5 -r 639fb266e1e6 eo_util_parser.y > + > + str_arr_out: > + free(stringarraypropname); > + for (i = 0; i < stringarraysize - 1; i++) > + free(stringarray[i]); > + free($1); > + > + if (s.rc != CMPI_RC_OK) { > + return RC_INVALID_CLASS; I would return s.c instead of RC_INVALID_CLASS, because the issue here isn't an invalid class. The issue is in parsing the attribute's array value. Really, the eo_parse_parseinstance() should take a CMPIStatus variable (or we should return one somehow) so that we can set the error code and error message properly. But that's something to fix later on. > + } > + > + } > + ; -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Wed Jun 3 15:48:59 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 03 Jun 2009 12:48:59 -0300 Subject: [Libvirt-cim] [PATCH] Expose package release version in VirtualSystemManagementService In-Reply-To: References: Message-ID: <4A269B6B.1010306@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1243887903 25200 > # Node ID ffea3e262ba257e0e3f8cfe70daac6bba5ffc118 > # Parent c127bb551eb81bfe3fe3a2ad0225d7307e4bd1ee > Expose package release version in VirtualSystemManagementService > > The Revision and Changeset values don't always give a full picture of the > provider version installed on the system. This patch adds a Reelase attribute > which exposes the release version - this helps provide version baseline. > > Test query: > wbemcli ei http://localhost/root/virt:KVM_VirtualSystemManagementService -nl > > You should see a "Release" attribute in the list > > Signed-off-by: Kaitlin Rupert > > diff -r c127bb551eb8 -r ffea3e262ba2 schema/VirtualSystemManagementService.mof > --- a/schema/VirtualSystemManagementService.mof Mon May 18 18:13:06 2009 -0700 > +++ b/schema/VirtualSystemManagementService.mof Mon Jun 01 13:25:03 2009 -0700 > @@ -8,6 +8,9 @@ > > [Description("HG revision number of the providers")] > string Revision; > + > + [Description("Package Version")] > + string Release; > }; > > [Provider("cmpi::Virt_VirtualSystemManagementService")] > @@ -18,6 +21,9 @@ > > [Description("HG revision number of the providers")] > string Revision; > + > + [Description("Package Version")] > + string Release; > }; > > [Provider("cmpi::Virt_VirtualSystemManagementService")] > @@ -28,4 +34,7 @@ > > [Description("HG revision number of the providers")] > string Revision; > + > + [Description("Package Version")] > + string Release; > }; > diff -r c127bb551eb8 -r ffea3e262ba2 src/Virt_VirtualSystemManagementService.c > --- a/src/Virt_VirtualSystemManagementService.c Mon May 18 18:13:06 2009 -0700 > +++ b/src/Virt_VirtualSystemManagementService.c Mon Jun 01 13:25:03 2009 -0700 > @@ -2248,6 +2248,9 @@ > CMSetProperty(inst, "Revision", > (CMPIValue *)LIBVIRT_CIM_RV, CMPI_chars); > > + CMSetProperty(inst, "Release", > + (CMPIValue *)PACKAGE_VERSION, CMPI_chars); > + > if (is_get_inst) { > s = cu_validate_ref(broker, reference, inst); > if (s.rc != CMPI_RC_OK) > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 3 15:54:03 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 03 Jun 2009 08:54:03 -0700 Subject: [Libvirt-cim] [PATCH 1 of 3] Added support to convert data in the internal format to the format used by the BootDevices property In-Reply-To: References: Message-ID: <4A269C9B.30405@linux.vnet.ibm.com> > diff -r aa8e071730d2 -r abc90cae6c08 src/Virt_VSSD.c > --- a/src/Virt_VSSD.c Wed May 20 10:41:46 2009 -0700 > +++ b/src/Virt_VSSD.c Mon Jun 01 18:19:38 2009 -0300 > @@ -38,20 +38,79 @@ > > const static CMPIBroker *_BROKER; > > -static void _set_fv_prop(struct domain *dominfo, > - CMPIInstance *inst) > +static CMPIStatus _set_fv_prop(struct domain *dominfo, > + CMPIInstance *inst) > { > bool fv = true; > + CMPIArray *array; > + CMPICount bl_ct; > + CMPIStatus s = {CMPI_RC_OK, NULL}; > > if (dominfo->type == DOMAIN_XENFV) > CMSetProperty(inst, "IsFullVirt", > (CMPIValue *)&fv, CMPI_boolean); > > - if (dominfo->os_info.fv.boot != NULL) > - CMSetProperty(inst, > - "BootDevice", > - (CMPIValue *)dominfo->os_info.fv.boot, > - CMPI_chars); > + bl_ct = dominfo->os_info.fv.bootlist_ct; > + if (bl_ct > 0) { If you want to avoid placing everything within an if, you could do the following instead: if (bl_ct <= 0) return s; That will save you on some indention. > + CMPICount i; > + CMPIStatus s; CMPIStatus is already defined at the beginning of the function. > + > + CU_DEBUG("bootlist_ct = %d", bl_ct); > + > + array = CMNewArray(_BROKER, You'll need to modify _set_fv_prop() so that is takes a CMPIBroker as an argument. This means instance_from_dom() will also need to take a broker. The reason for this is is because of the following call chain: get_vssd_by_name() --> _get_vssd() --> instance_from_dom() --> _set_fv_prop() get_vssd_by_name() is not a static function; it is called by association providers, and those association providers need to be able to pass in their own CMPIBroker. > + bl_ct, > + CMPI_string, > + &s); > + > + if (s.rc != CMPI_RC_OK) { > + CU_DEBUG("Error creating BootDevice list"); Call cu_statusf() here - the will give you a more specific error message. > + goto error; Instead of error, we generally use out instead of error. > + } > + > + for (i = 0; i < bl_ct; i++) { > + CMPIString *cm_str; > + > + CU_DEBUG("BootList[%u]=%s", > + i, > + dominfo->os_info.fv.bootlist[i]); > + > + cm_str = CMNewString(_BROKER, > + (const char *)dominfo->os_info. > + fv.bootlist[i], > + &s); > + if (s.rc != CMPI_RC_OK) { > + CU_DEBUG("Error creating CMPIString"); > + goto error; Call cu_statusf() here. > + } > + > + s = CMSetArrayElementAt(array, > + i, > + (CMPIValue *)&cm_str, > + CMPI_string); > + if (s.rc != CMPI_RC_OK) { > + CU_DEBUG("Error setting BootDevice array " > + "element"); > + goto error; Call cu_statusf() here. > + } > + } > + > + s = CMSetProperty(inst, > + "BootDevices", > + (CMPIValue *)&array, > + CMPI_stringA); > + > + if (s.rc != CMPI_RC_OK) { > + CU_DEBUG("Error setting BootDevices property"); > + goto error; Call cu_statusf() here. > + } > + } > + return s; If you remove the cu_statusf() call below, then you won't need this return here. > + > + error: Instead of using error, use out here. > + cu_statusf(_BROKER, &s, > + CMPI_RC_ERR_FAILED, > + "Unable to set BootDevices property"); Remove this call, and call cu_statusf() whenever a failure occurs - that will give you more specific failure messages. > + return s; > } > > static void _set_pv_prop(struct domain *dominfo, > @@ -104,6 +163,7 @@ > char *pfx = NULL; > char *vsid = NULL; > int ret = 1; > + CMPIStatus s = {CMPI_RC_OK, NULL}; > CMPIObjectPath *op; > struct domain *dominfo = NULL; > > @@ -158,7 +218,12 @@ > > if ((dominfo->type == DOMAIN_XENFV) || > (dominfo->type == DOMAIN_KVM) || (dominfo->type == DOMAIN_QEMU)) > - _set_fv_prop(dominfo, inst); > + s = _set_fv_prop(dominfo, inst); > + if (s.rc != CMPI_RC_OK) { > + ret = 0; > + goto out; There's several points of failure in _set_fv_prop(), so I would change instance_from_dom() so that is returns a CMPIStatus instead of a int. And in _get_vssd(), you can just call something like: s = instance_from_dom(); That way, the error code and error message will already be set. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 3 15:59:11 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 03 Jun 2009 08:59:11 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] Add support to fetch data from BootDevices property to the internal data structure In-Reply-To: References: Message-ID: <4A269DCF.4070003@linux.vnet.ibm.com> > diff -r abc90cae6c08 -r f2cb4b64756a src/Virt_VirtualSystemManagementService.c > --- a/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:38 2009 -0300 > +++ b/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:43 2009 -0300 > @@ -197,6 +197,69 @@ > return kvm; > } > > +static int bootord_vssd_to_domain(CMPIInstance *inst, > + struct domain *domain) > +{ > + int ret; > + CMPICount i; > + CMPIArray *bootlist; > + CMPIStatus s; > + CMPIData boot_elem; > + char **tmp_str_arr; > + > + for (i = 0; i < domain->os_info.fv.bootlist_ct; i++) > + free(domain->os_info.fv.bootlist[i]); > + > + ret = cu_get_array_prop(inst, "BootDevices", &bootlist); > + > + if (ret == CMPI_RC_OK) { You can save some indention here by doing something like: if (ret != CMPI_RC_OK) { CU_DEBUG("Failed to get BootDevices property"); return 1; } > + > + str = CMGetCharPtr(boot_elem.value.string); > + > + if (s.rc != CMPI_RC_OK) { Instead of checking the value of s.rc, you want to check to see if str is NULL. > + CU_DEBUG("Could not extract char pointer from " > + "CMPIArray"); > + return 0; > + } > + > + tmp_str_arr[i] = strdup(str); > + } > + domain->os_info.fv.bootlist_ct = bl_size; > + domain->os_info.fv.bootlist = tmp_str_arr; > + > + } else > + CU_DEBUG("Failed to get BootDevices property"); > + > + return 1; > +} > + > static int fv_vssd_to_domain(CMPIInstance *inst, > struct domain *domain, > const char *pfx) -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 3 16:11:10 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 03 Jun 2009 09:11:10 -0700 Subject: [Libvirt-cim] [PATCH 3 of 3] XML generation and parsing for the BootDevices property In-Reply-To: References: Message-ID: <4A26A09E.3010708@linux.vnet.ibm.com> > diff -r f2cb4b64756a -r ea14dbce8b57 libxkutil/device_parsing.c > --- a/libxkutil/device_parsing.c Mon Jun 01 18:19:43 2009 -0300 > +++ b/libxkutil/device_parsing.c Mon Jun 01 18:19:42 2009 -0300 > @@ -810,6 +810,8 @@ > static int parse_os(struct domain *dominfo, xmlNode *os) > { > xmlNode *child; > + char **blist = NULL; > + unsigned bl_size = 0; > > for (child = os->children; child != NULL; child = child->next) { > if (XSTREQ(child->name, "type")) > @@ -822,10 +824,23 @@ > STRPROP(dominfo, os_info.pv.cmdline, child); > else if (XSTREQ(child->name, "loader")) > STRPROP(dominfo, os_info.fv.loader, child); > - else if (XSTREQ(child->name, "boot")) > - dominfo->os_info.fv.boot = get_attr_value(child, > - "dev"); > - else if (XSTREQ(child->name, "init")) > + else if (XSTREQ(child->name, "boot")) { > + char **tmp_list = NULL; > + > + tmp_list = (char **)realloc(blist, > + (bl_size+1) * This should be (bl_size + 1) > diff -r f2cb4b64756a -r ea14dbce8b57 libxkutil/xmlgen.c > @@ -475,21 +481,28 @@ > { > struct fv_os_info *os = &domain->os_info.fv; > xmlNodePtr tmp; > + unsigned i; > > if (os->type == NULL) > os->type = strdup("hvm"); > > - if (os->boot == NULL) > - os->boot = strdup("hd"); > + if (os->bootlist_ct == 0) { > + os->bootlist_ct = 1; > + os->bootlist = (char **)calloc(1, sizeof(char *)); > + os->bootlist[0] = strdup("hd"); > + } > > tmp = xmlNewChild(root, NULL, BAD_CAST "type", BAD_CAST os->type); > if (tmp == NULL) > return XML_ERROR; > > - tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); > - if (tmp == NULL) > - return XML_ERROR; > - xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->boot); > + for (i = 0; i < os->bootlist_ct; i++) { > + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); > + if (tmp == NULL) > + return XML_ERROR; > + > + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); > + } > This bit of code is identical between Xen and KVM, so I would create a helper function that modifies the root node. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Wed Jun 3 16:48:17 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 03 Jun 2009 13:48:17 -0300 Subject: [Libvirt-cim] [PATCH] Update SDC to return template DiskPoolRASDs for disk and iscsi type pools In-Reply-To: References: Message-ID: <4A26A951.5090601@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1242695586 25200 > # Node ID c127bb551eb81bfe3fe3a2ad0225d7307e4bd1ee > # Parent 9ac4e06aa21334cf25b8096663dca6fea74dccd8 > Update SDC to return template DiskPoolRASDs for disk and iscsi type pools > > Rearrange things to reduce duplicate code. > > Signed-off-by: Kaitlin Rupert > > diff -r 9ac4e06aa213 -r c127bb551eb8 src/Virt_SettingsDefineCapabilities.c > --- a/src/Virt_SettingsDefineCapabilities.c Mon May 18 18:13:06 2009 -0700 > +++ b/src/Virt_SettingsDefineCapabilities.c Mon May 18 18:13:06 2009 -0700 > @@ -1239,11 +1239,12 @@ > CMPIInstance *inst; > CMPIStatus s = {CMPI_RC_OK, NULL}; > const char *path = "/dev/null"; > - const char *dev_path; > - const char *host; > - const char *src_dir; > - int type[3] = {DISK_POOL_DIR, DISK_POOL_FS, DISK_POOL_NETFS}; > - int pool_types = 3; > + int type[5] = {DISK_POOL_DIR, > + DISK_POOL_FS, > + DISK_POOL_NETFS, > + DISK_POOL_DISK, > + DISK_POOL_ISCSI}; > + int pool_types = 5; > int i; > > switch (template_type) { > @@ -1267,6 +1268,10 @@ > } > > for (i = 0; i < pool_types; i++) { > + const char *dev_path = NULL; > + const char *host = NULL; > + const char *src_dir = NULL; > + > inst = sdc_rasd_inst(&s, ref, CIM_RES_TYPE_DISK, POOL_RASD); > if ((inst == NULL) || (s.rc != CMPI_RC_OK)) > goto out; > @@ -1274,24 +1279,40 @@ > CMSetProperty(inst, "InstanceID", (CMPIValue *)id, CMPI_chars); > > switch (type[i]) { > + case DISK_POOL_DISK: > + dev_path = "/dev/VolGroup00/LogVol100"; > + > + break; > case DISK_POOL_FS: > dev_path = "/dev/sda100"; > - CMSetProperty(inst, "DevicePath", > - (CMPIValue *)dev_path, CMPI_chars); > + > break; > case DISK_POOL_NETFS: > host = "host_sys.domain.com"; > - CMSetProperty(inst, "Host", > - (CMPIValue *)host, CMPI_chars); > + src_dir = "/var/lib/images"; > > - src_dir = "/var/lib/images"; > - CMSetProperty(inst, "SourceDirectory", > - (CMPIValue *)src_dir, CMPI_chars); > + break; > + case DISK_POOL_ISCSI: > + host = "host_sys.domain.com"; > + dev_path = "iscsi-target"; > + > break; > default: > break; > } > > + if (dev_path != NULL) > + CMSetProperty(inst, "DevicePath", > + (CMPIValue *)dev_path, CMPI_chars); > + > + if (host != NULL) > + CMSetProperty(inst, "Host", > + (CMPIValue *)host, CMPI_chars); > + > + if (src_dir != NULL) > + CMSetProperty(inst, "SourceDirectory", > + (CMPIValue *)src_dir, CMPI_chars); > + > CMSetProperty(inst, "Type", (CMPIValue *)&type[i], CMPI_uint16); > CMSetProperty(inst, "Path", (CMPIValue *)path, CMPI_chars); > > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Wed Jun 3 18:24:42 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 03 Jun 2009 15:24:42 -0300 Subject: [Libvirt-cim] [PATCH] Be sure libvirt error message is returned to user In-Reply-To: References: Message-ID: <4A26BFEA.9020705@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1243890081 25200 > # Node ID d1e566c62e287c8d98dad51e0b80ec7c6c850729 > # Parent ffea3e262ba257e0e3f8cfe70daac6bba5ffc118 > Be sure libvirt error message is returned to user > > If connect_and_create() fails because libvirt fails, we don't want to > overwrite the error message. Instead, we should just return. > > This can be tested by attempting to create a pool that will definitely fail - > something like a pool where the mountpoint doesn't exist. > > Signed-off-by: Kaitlin Rupert > > diff -r ffea3e262ba2 -r d1e566c62e28 src/Virt_ResourcePoolConfigurationService.c > --- a/src/Virt_ResourcePoolConfigurationService.c Mon Jun 01 13:25:03 2009 -0700 > +++ b/src/Virt_ResourcePoolConfigurationService.c Mon Jun 01 14:01:21 2009 -0700 > @@ -455,6 +455,9 @@ > CU_DEBUG("Pool XML:\n%s", xml); > > inst = connect_and_create(xml, reference, full_id, pool->type, &s); > + if (s.rc != CMPI_RC_OK) > + goto out; > + > if (inst == NULL) { > cu_statusf(_BROKER, &s, > CMPI_RC_ERR_FAILED, > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Wed Jun 3 18:28:34 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 03 Jun 2009 15:28:34 -0300 Subject: [Libvirt-cim] [PATCH] Be sure libvirt error message is returned to user In-Reply-To: References: Message-ID: <4A26C0D2.9010707@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1243890081 25200 > # Node ID d1e566c62e287c8d98dad51e0b80ec7c6c850729 > # Parent ffea3e262ba257e0e3f8cfe70daac6bba5ffc118 > Be sure libvirt error message is returned to user > > If connect_and_create() fails because libvirt fails, we don't want to > overwrite the error message. Instead, we should just return. > > This can be tested by attempting to create a pool that will definitely fail - > something like a pool where the mountpoint doesn't exist. > > Signed-off-by: Kaitlin Rupert > > diff -r ffea3e262ba2 -r d1e566c62e28 src/Virt_ResourcePoolConfigurationService.c > --- a/src/Virt_ResourcePoolConfigurationService.c Mon Jun 01 13:25:03 2009 -0700 > +++ b/src/Virt_ResourcePoolConfigurationService.c Mon Jun 01 14:01:21 2009 -0700 > @@ -455,6 +455,9 @@ > CU_DEBUG("Pool XML:\n%s", xml); > > inst = connect_and_create(xml, reference, full_id, pool->type, &s); > + if (s.rc != CMPI_RC_OK) > + goto out; > + > if (inst == NULL) { > cu_statusf(_BROKER, &s, > CMPI_RC_ERR_FAILED, > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Wed Jun 3 13:54:08 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 03 Jun 2009 10:54:08 -0300 Subject: [Libvirt-cim] [PATCH] [CU] (#2) Add support to read/write array of strings to properties which expect them Message-ID: <0cbdf0dcd41651b7a4e6.1244037248@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1243950914 10800 # Node ID 0cbdf0dcd41651b7a4e6f1844bf567ced1106225 # Parent 1cb3975921d590d4dda4de197a4dc687e45d1840 [CU] (#2) Add support to read/write array of strings to properties which expect them. The lexer and the parser were changed recognize array strings and properly handle it to the provider which called the lexer/parser #2: - Parser now returns a specific error message when it cannot set a string array property Signed-off-by: Richard Maciel diff -r 1cb3975921d5 -r 0cbdf0dcd416 eo_parser.c --- a/eo_parser.c Mon Apr 27 16:11:32 2009 -0700 +++ b/eo_parser.c Tue Jun 02 10:55:14 2009 -0300 @@ -169,6 +169,29 @@ return CMPI_sint8; } +inline CMPIStatus ins_chars_into_cmstr_arr(const CMPIBroker *broker, + CMPIArray *arr, + CMPICount index, + char *str) +{ + CMPIString *cm_str; + CMPIStatus s = {CMPI_RC_OK, NULL}; + + cm_str = CMNewString(broker, str, &s); + if (s.rc != CMPI_RC_OK || CMIsNullObject(cm_str)) { + CU_DEBUG("Error creating CMPIString"); + goto out; + } + + s = CMSetArrayElementAt(arr, index, &cm_str, CMPI_string); + if (s.rc != CMPI_RC_OK) + CU_DEBUG("Error setting array element %u\n" + "Error code: %d", index, s.rc); + + out: + return s; +} + /* * Local Variables: * mode: C diff -r 1cb3975921d5 -r 0cbdf0dcd416 eo_parser_xml.h --- a/eo_parser_xml.h Mon Apr 27 16:11:32 2009 -0700 +++ b/eo_parser_xml.h Tue Jun 02 10:55:14 2009 -0300 @@ -31,6 +31,11 @@ char *prop, CMPIInstance *inst); +inline CMPIStatus ins_chars_into_cmstr_arr(const CMPIBroker *broker, + CMPIArray *arr, + CMPICount index, + char *str); + #endif /* diff -r 1cb3975921d5 -r 0cbdf0dcd416 eo_util_lexer.l --- a/eo_util_lexer.l Mon Apr 27 16:11:32 2009 -0700 +++ b/eo_util_lexer.l Tue Jun 02 10:55:14 2009 -0300 @@ -4,6 +4,7 @@ * Authors: * Gareth Bestor * Dan Smith + * Richard Maciel * */ /*** WARNING - COMMENTS IN LEX MUST BE TAB INDENTED ***/ @@ -91,7 +92,18 @@ return(STRING); } - /* Classname */ +\{ { + return(OPENBRACKET); + } + +\} { + return(CLOSEBRACKET); + } + +\, { + return(COMMA); + } + /* NOTE - this rule only applies after a 'INSTANCE OF' has been read in */ [A-Za-z][A-Za-z0-9_]* { BEGIN INITIAL; /* Go back to normal parsing rules now */ diff -r 1cb3975921d5 -r 0cbdf0dcd416 eo_util_parser.y --- a/eo_util_parser.y Mon Apr 27 16:11:32 2009 -0700 +++ b/eo_util_parser.y Tue Jun 02 10:55:14 2009 -0300 @@ -4,6 +4,7 @@ * Authors: * Gareth Bestor * Dan Smith + * Richard Maciel */ /* DEFINITIONS SECTION */ @@ -24,11 +25,16 @@ #define RC_OK 0 #define RC_EOF EOF #define RC_INVALID_CLASS -1000 +#define RC_ARR_CREAT_FAILED -2000 /* DEFINE ANY GLOBAL VARS HERE */ static const CMPIBroker * _BROKER; static CMPIInstance ** _INSTANCE; static const char * _NAMESPACE; +static CMPICount stringarraysize; +static char **stringarray; +static char *stringarraypropname; + #ifdef EODEBUG #define EOTRACE(fmt, arg...) fprintf(stderr, fmt, ##arg) @@ -36,6 +42,7 @@ #define EOTRACE(fmt, arg...) #endif + int eo_parse_parseinstance(const CMPIBroker *broker, CMPIInstance **instance, const char *ns); @@ -52,7 +59,7 @@ } /* Define simple (untyped) lexical tokens */ -%token INSTANCE OF ENDOFFILE +%token INSTANCE OF ENDOFFILE OPENBRACKET CLOSEBRACKET COMMA /* Define lexical tokens that return a value and their return type */ %token CLASS @@ -67,7 +74,7 @@ /* Rules section */ instance: /* empty */ - | INSTANCE OF CLASS '{' + | INSTANCE OF CLASS OPENBRACKET { EOTRACE("classname = %s\n",$3); CMPIObjectPath *op; @@ -82,7 +89,7 @@ return RC_INVALID_CLASS; free($3); } - properties '}' ';' + properties CLOSEBRACKET ';' { /* Return after reading in each instance */ return RC_OK; @@ -127,7 +134,17 @@ CMSetProperty(*_INSTANCE, $1, &($3), CMPI_boolean); free($1); } + | PROPERTYNAME '=' OPENBRACKET + { + EOTRACE("propertyname = %s\n" + "\ttype = CMPI_charsA\n", + $1); + stringarraysize = 0; + stringarraypropname = $1; + } + arrayofstrings CLOSEBRACKET ';' + | PROPERTYNAME '=' CIMNULL ';' { EOTRACE("propertyname = %s\n" @@ -136,6 +153,80 @@ } ; +arrayofstrings: STRING + { + EOTRACE("\t%s[%u]=%s\n", + propertyname, + stringarraysize, + $1); + + stringarraysize++; + stringarray = (char **)realloc(stringarray, + sizeof(char *) * + stringarraysize); + stringarray[stringarraysize-1] = $1; + } + COMMA arrayofstrings + + + | STRING + { + CMPIArray *arr; + CMPICount i; + CMPIStatus s = {CMPI_RC_OK, NULL}; + + EOTRACE("\t%s[%u]=%s\n", + propertyname, + stringarraysize, + $1); + + stringarraysize++; + + arr = CMNewArray(_BROKER, + stringarraysize, + CMPI_string, + &s); + if (s.rc != CMPI_RC_OK || CMIsNullObject(arr)) { + EOTRACE("Error creating array\n"); + goto str_arr_out; + } + + // Values to stringarraysize - 2 are in the + // temporary array + for (i = 0; i < stringarraysize - 1; i++) { + s = ins_chars_into_cmstr_arr(_BROKER, + arr, + i, + stringarray[i]); + if (s.rc != CMPI_RC_OK) + goto str_arr_out; + } + + s = ins_chars_into_cmstr_arr(_BROKER, + arr, + stringarraysize - 1, + $1); + if (s.rc != CMPI_RC_OK) + goto str_arr_out; + + CMSetProperty(*_INSTANCE, + stringarraypropname, + &arr, + CMPI_stringA); + + str_arr_out: + free(stringarraypropname); + for (i = 0; i < stringarraysize - 1; i++) + free(stringarray[i]); + free($1); + + if (s.rc != CMPI_RC_OK) { + return RC_ARR_CREAT_FAILED; + } + + } + ; + /* END OF RULES SECTION */ %% From kaitlin at linux.vnet.ibm.com Wed Jun 3 21:11:49 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 03 Jun 2009 14:11:49 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] Cleanup guest in RASD 05 Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1244059209 25200 # Node ID da1f502f0498e683e722c36ebd8afb55b9cb82a8 # Parent 3fd6cfd13a00acefa93b6f13dabbf5ace91bda3d [TEST] Cleanup guest in RASD 05 The guest needs to be cleaned up each time through the loop to ensure a fresh guest is being defined. Signed-off-by: Kaitlin Rupert diff -r 3fd6cfd13a00 -r da1f502f0498 suites/libvirt-cim/cimtest/RASD/05_disk_rasd_emu_type.py --- a/suites/libvirt-cim/cimtest/RASD/05_disk_rasd_emu_type.py Tue Jun 02 10:44:47 2009 -0700 +++ b/suites/libvirt-cim/cimtest/RASD/05_disk_rasd_emu_type.py Wed Jun 03 13:00:09 2009 -0700 @@ -81,11 +81,13 @@ if found_rasd is None: raise Exception("DiskRASD for defined dom was not found") + + cxml.undefine(options.ip) + except Exception, detail: logger.error("Exception: %s", detail) status = FAIL - - cxml.undefine(options.ip) + cxml.undefine(options.ip) return status From rmaciel at linux.vnet.ibm.com Wed Jun 3 18:46:50 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 03 Jun 2009 15:46:50 -0300 Subject: [Libvirt-cim] [PATCH 0 of 3] (#2) Add support for booting on multiple devices and for boot order Message-ID: From rmaciel at linux.vnet.ibm.com Wed Jun 3 18:46:51 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 03 Jun 2009 15:46:51 -0300 Subject: [Libvirt-cim] [PATCH 1 of 3] Added support to convert data in the internal format to the format used by the BootDevices property In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1243891178 10800 # Node ID e18c6d4d2ea45d71dc04294364296ac25754bfcf # Parent 849171d2fbc0adbba613516bbdea4b78199178dd Added support to convert data in the internal format to the format used by the BootDevices property #2: - Code style changes - Added cu_statusf() calls to provide specific error messages to the user Signed-off-by: Richard Maciel diff -r 849171d2fbc0 -r e18c6d4d2ea4 schema/VSSD.mof --- a/schema/VSSD.mof Mon Jun 01 14:01:21 2009 -0700 +++ b/schema/VSSD.mof Mon Jun 01 18:19:38 2009 -0300 @@ -27,7 +27,7 @@ [Description ("The device to boot from when in fully-virtualized mode." "One of hd,fd,cdrom.")] - string BootDevice; + string BootDevices[]; [Description ("The emulator the guest should use during runtime.")] string Emulator; @@ -42,8 +42,8 @@ class KVM_VirtualSystemSettingData : Virt_VirtualSystemSettingData { - [Description ("The device to boot from. One of hd,fd,cdrom.")] - string BootDevice; + [Description ("The list of devices to boot from. hd,fd,cdrom.")] + string BootDevices[]; [Description ("The emulator the guest should use during runtime.")] string Emulator; diff -r 849171d2fbc0 -r e18c6d4d2ea4 src/Virt_VSSD.c --- a/src/Virt_VSSD.c Mon Jun 01 14:01:21 2009 -0700 +++ b/src/Virt_VSSD.c Mon Jun 01 18:19:38 2009 -0300 @@ -38,20 +38,91 @@ const static CMPIBroker *_BROKER; -static void _set_fv_prop(struct domain *dominfo, - CMPIInstance *inst) +static CMPIStatus _set_fv_prop(const CMPIBroker *broker, + struct domain *dominfo, + CMPIInstance *inst) { bool fv = true; + CMPIArray *array; + CMPICount bl_ct; + CMPIStatus s = {CMPI_RC_OK, NULL}; + CMPICount i; if (dominfo->type == DOMAIN_XENFV) CMSetProperty(inst, "IsFullVirt", (CMPIValue *)&fv, CMPI_boolean); - if (dominfo->os_info.fv.boot != NULL) - CMSetProperty(inst, - "BootDevice", - (CMPIValue *)dominfo->os_info.fv.boot, - CMPI_chars); + bl_ct = dominfo->os_info.fv.bootlist_ct; + if (bl_ct < 0) + return s; + + CU_DEBUG("bootlist_ct = %d", bl_ct); + + array = CMNewArray(broker, + bl_ct, + CMPI_string, + &s); + + if (s.rc != CMPI_RC_OK) { + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_FAILED, + "Error creating BootDevices list"); + CU_DEBUG("CMNewArray call failed"); + + goto out; + } + + for (i = 0; i < bl_ct; i++) { + CMPIString *cm_str; + + CU_DEBUG("BootList[%u]=%s", + i, + dominfo->os_info.fv.bootlist[i]); + + cm_str = CMNewString(broker, + (const char *)dominfo->os_info. + fv.bootlist[i], + &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error creating CMPIString"); + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_FAILED, + "Error creating CMPIString for " + "BootDevices item"); + + goto out; + } + + s = CMSetArrayElementAt(array, + i, + (CMPIValue *)&cm_str, + CMPI_string); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error in CMSetArrayElementAT call"); + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_FAILED, + "Error setting BootDevices array element"); + + goto out; + } + } + + s = CMSetProperty(inst, + "BootDevices", + (CMPIValue *)&array, + CMPI_stringA); + + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error in CMSetProperty call"); + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_FAILED, + "Error setting BootDevices property"); + + goto out; + } + + out: + return s; } static void _set_pv_prop(struct domain *dominfo, @@ -98,12 +169,14 @@ CMPI_chars); } -static int instance_from_dom(virDomainPtr dom, +static int instance_from_dom(const CMPIBroker *broker, + virDomainPtr dom, CMPIInstance *inst) { char *pfx = NULL; char *vsid = NULL; int ret = 1; + CMPIStatus s = {CMPI_RC_OK, NULL}; CMPIObjectPath *op; struct domain *dominfo = NULL; @@ -158,7 +231,12 @@ if ((dominfo->type == DOMAIN_XENFV) || (dominfo->type == DOMAIN_KVM) || (dominfo->type == DOMAIN_QEMU)) - _set_fv_prop(dominfo, inst); + s = _set_fv_prop(broker, dominfo, inst); + if (s.rc != CMPI_RC_OK) { + ret = 0; + goto out; + } + else if (dominfo->type == DOMAIN_XENPV) _set_pv_prop(dominfo, inst); else if (dominfo->type == DOMAIN_LXC) @@ -203,7 +281,7 @@ goto out; } - if (instance_from_dom(dom, inst) != 1) { + if (instance_from_dom(broker, dom, inst) != 1) { cu_statusf(broker, s, CMPI_RC_ERR_FAILED, "Unable to get VSSD instance from Domain"); From rmaciel at linux.vnet.ibm.com Wed Jun 3 18:46:52 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 03 Jun 2009 15:46:52 -0300 Subject: [Libvirt-cim] [PATCH 2 of 3] Add support to fetch data from BootDevices property to the internal data structure In-Reply-To: References: Message-ID: <670cdd8696c7247e5e8a.1244054812@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1243891183 10800 # Node ID 670cdd8696c7247e5e8a66637fcd1ff71543cdf1 # Parent e18c6d4d2ea45d71dc04294364296ac25754bfcf Add support to fetch data from BootDevices property to the internal data structure #2: - Code style changes Signed-off-by: Richard Maciel diff -r e18c6d4d2ea4 -r 670cdd8696c7 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:38 2009 -0300 +++ b/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:43 2009 -0300 @@ -197,6 +197,68 @@ return kvm; } +static int bootord_vssd_to_domain(CMPIInstance *inst, + struct domain *domain) +{ + int ret; + CMPICount i; + CMPICount bl_size; + CMPIArray *bootlist; + CMPIStatus s; + CMPIData boot_elem; + char **tmp_str_arr; + + for (i = 0; i < domain->os_info.fv.bootlist_ct; i++) + free(domain->os_info.fv.bootlist[i]); + + ret = cu_get_array_prop(inst, "BootDevices", &bootlist); + + if (ret != CMPI_RC_OK) + CU_DEBUG("Failed to get BootDevices property"); + + + bl_size = CMGetArrayCount(bootlist, &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Invalid BootDevice array size"); + return 0; + } + + tmp_str_arr = (char **)realloc(domain->os_info.fv.bootlist, + bl_size * sizeof(char *)); + + if (tmp_str_arr == NULL) { + CU_DEBUG("Could not alloc BootDevices array"); + return 0; + } + + for (i = 0; i < bl_size; i++) { + const char *str; + + boot_elem = CMGetArrayElementAt(bootlist, + i, + NULL); + + if (CMIsNullValue(boot_elem)) { + CU_DEBUG("Null BootDevice"); + return 0; + } + + str = CMGetCharPtr(boot_elem.value.string); + + if (str == NULL) { + CU_DEBUG("Could not extract char pointer from " + "CMPIArray"); + return 0; + } + + tmp_str_arr[i] = strdup(str); + } + domain->os_info.fv.bootlist_ct = bl_size; + domain->os_info.fv.bootlist = tmp_str_arr; + + return 1; +} + static int fv_vssd_to_domain(CMPIInstance *inst, struct domain *domain, const char *pfx) @@ -216,12 +278,9 @@ return 0; } - ret = cu_get_str_prop(inst, "BootDevice", &val); - if (ret != CMPI_RC_OK) - val = "hd"; - - free(domain->os_info.fv.boot); - domain->os_info.fv.boot = strdup(val); + ret = bootord_vssd_to_domain(inst, domain); + if (ret != 1) + return 0; ret = cu_get_str_prop(inst, "Emulator", &val); if (ret != CMPI_RC_OK) From rmaciel at linux.vnet.ibm.com Wed Jun 3 18:46:53 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 03 Jun 2009 15:46:53 -0300 Subject: [Libvirt-cim] [PATCH 3 of 3] XML generation and parsing for the BootDevices property In-Reply-To: References: Message-ID: <19fa326e07bcb6cb8094.1244054813@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1243891182 10800 # Node ID 19fa326e07bcb6cb8094be88929f5f613ada1ae4 # Parent 670cdd8696c7247e5e8a66637fcd1ff71543cdf1 XML generation and parsing for the BootDevices property #2: - Code style changes Signed-off-by: Richard Maciel diff -r 670cdd8696c7 -r 19fa326e07bc libxkutil/device_parsing.c --- a/libxkutil/device_parsing.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/device_parsing.c Mon Jun 01 18:19:42 2009 -0300 @@ -810,6 +810,8 @@ static int parse_os(struct domain *dominfo, xmlNode *os) { xmlNode *child; + char **blist = NULL; + unsigned bl_size = 0; for (child = os->children; child != NULL; child = child->next) { if (XSTREQ(child->name, "type")) @@ -822,10 +824,23 @@ STRPROP(dominfo, os_info.pv.cmdline, child); else if (XSTREQ(child->name, "loader")) STRPROP(dominfo, os_info.fv.loader, child); - else if (XSTREQ(child->name, "boot")) - dominfo->os_info.fv.boot = get_attr_value(child, - "dev"); - else if (XSTREQ(child->name, "init")) + else if (XSTREQ(child->name, "boot")) { + char **tmp_list = NULL; + + tmp_list = (char **)realloc(blist, + (bl_size + 1) * + sizeof(char *)); + if (tmp_list == NULL) { + // Nothing you can do. Just go on. + CU_DEBUG("Could not alloc space for " + "boot device"); + continue; + } + blist = tmp_list; + + blist[bl_size] = get_attr_value(child, "dev"); + bl_size++; + } else if (XSTREQ(child->name, "init")) STRPROP(dominfo, os_info.lxc.init, child); } @@ -843,6 +858,9 @@ else dominfo->type = -1; + dominfo->os_info.fv.bootlist = blist; + dominfo->os_info.fv.bootlist_ct = bl_size; + return 1; } @@ -1001,9 +1019,15 @@ free(dom->os_info.pv.cmdline); } else if ((dom->type == DOMAIN_XENFV) || (dom->type == DOMAIN_KVM) || (dom->type == DOMAIN_QEMU)) { + int i; + free(dom->os_info.fv.type); free(dom->os_info.fv.loader); - free(dom->os_info.fv.boot); + + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + free(dom->os_info.fv.bootlist[i]); + } + free(dom->os_info.fv.bootlist); } else if (dom->type == DOMAIN_LXC) { free(dom->os_info.lxc.type); free(dom->os_info.lxc.init); diff -r 670cdd8696c7 -r 19fa326e07bc libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/device_parsing.h Mon Jun 01 18:19:42 2009 -0300 @@ -99,7 +99,8 @@ struct fv_os_info { char *type; /* Should always be 'hvm' */ char *loader; - char *boot; + unsigned bootlist_ct; + char **bootlist; }; struct lxc_os_info { diff -r 670cdd8696c7 -r 19fa326e07bc libxkutil/xml_parse_test.c --- a/libxkutil/xml_parse_test.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/xml_parse_test.c Mon Jun 01 18:19:42 2009 -0300 @@ -28,6 +28,7 @@ static void print_os(struct domain *dom, FILE *d) { + int i; if (dom->type == DOMAIN_XENPV) { print_value(d, "Domain Type", "Xen PV"); @@ -39,13 +40,18 @@ print_value(d, "Domain Type", "Xen FV"); print_value(d, "Type", dom->os_info.fv.type); print_value(d, "Loader", dom->os_info.fv.loader); - print_value(d, "Boot", dom->os_info.fv.boot); + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + print_value(d, "Boot", dom->os_info.fv.bootlist[i]); + } } else if ((dom->type == DOMAIN_KVM) || (dom->type == DOMAIN_QEMU)) { print_value(d, "Domain Type", "KVM/QEMU"); print_value(d, "Type", dom->os_info.fv.type); print_value(d, "Loader", dom->os_info.fv.loader); - print_value(d, "Boot", dom->os_info.fv.boot); + + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + print_value(d, "Boot", dom->os_info.fv.bootlist[i]); + } } else if (dom->type == DOMAIN_LXC) { print_value(d, "Init", dom->os_info.lxc.init); } else { diff -r 670cdd8696c7 -r 19fa326e07bc libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/xmlgen.c Mon Jun 01 18:19:42 2009 -0300 @@ -435,10 +435,27 @@ return NULL; } +static int _fv_bootlist_xml(xmlNodePtr root, struct fv_os_info *os) +{ + unsigned i; + xmlNodePtr tmp; + + for (i = 0; i < os->bootlist_ct; i++) { + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); + if (tmp == NULL) + return 0; + + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); + } + + return 1; +} + static char *_xenfv_os_xml(xmlNodePtr root, struct domain *domain) { struct fv_os_info *os = &domain->os_info.fv; xmlNodePtr tmp; + unsigned ret; if (os->type == NULL) os->type = strdup("hvm"); @@ -446,8 +463,11 @@ if (os->loader == NULL) os->loader = strdup("/usr/lib/xen/boot/hvmloader"); - if (os->boot == NULL) - os->boot = strdup("hd"); + if (os->bootlist_ct == 0) { + os->bootlist_ct = 1; + os->bootlist = (char **)calloc(1, sizeof(char *)); + os->bootlist[0] = strdup("hd"); + } tmp = xmlNewChild(root, NULL, BAD_CAST "type", BAD_CAST os->type); if (tmp == NULL) @@ -457,11 +477,17 @@ if (tmp == NULL) return XML_ERROR; - tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); - if (tmp == NULL) + ret = _fv_bootlist_xml(root, os); + if (ret == 0) return XML_ERROR; - xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->boot); + /*for (i = 0; i < os->bootlist_ct; i++) { + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); + if (tmp == NULL) + return XML_ERROR; + + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); + }*/ tmp = xmlNewChild(root, NULL, BAD_CAST "features", NULL); xmlNewChild(tmp, NULL, BAD_CAST "pae", NULL); @@ -475,21 +501,32 @@ { struct fv_os_info *os = &domain->os_info.fv; xmlNodePtr tmp; + unsigned ret; if (os->type == NULL) os->type = strdup("hvm"); - if (os->boot == NULL) - os->boot = strdup("hd"); + if (os->bootlist_ct == 0) { + os->bootlist_ct = 1; + os->bootlist = (char **)calloc(1, sizeof(char *)); + os->bootlist[0] = strdup("hd"); + } tmp = xmlNewChild(root, NULL, BAD_CAST "type", BAD_CAST os->type); if (tmp == NULL) return XML_ERROR; + + ret = _fv_bootlist_xml(root, os); + if (ret == 0) + return XML_ERROR; - tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); - if (tmp == NULL) - return XML_ERROR; - xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->boot); + /*for (i = 0; i < os->bootlist_ct; i++) { + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); + if (tmp == NULL) + return XML_ERROR; + + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); + }*/ return NULL; } From kaitlin at linux.vnet.ibm.com Thu Jun 4 03:21:28 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 3 Jun 2009 23:21:28 -0400 Subject: [Libvirt-cim] Test Run Summary (Jun 04 2009): KVM on Fedora release 10.90 (Rawhide) with Pegasus Message-ID: <200906040321.n543LSGb014312@d01av04.pok.ibm.com> ================================================= Test Run Summary (Jun 04 2009): KVM on Fedora release 10.90 (Rawhide) with Pegasus ================================================= Distro: Fedora release 10.90 (Rawhide) Kernel: 2.6.29-0.24.rc0.git13.fc11.x86_64 libvirt: 0.6.3 Hypervisor: QEMU 0.10.1 CIMOM: Pegasus 2.7.2 Libvirt-cim revision: 887 Libvirt-cim changeset: 849171d2fbc0 Cimtest revision: 700 Cimtest changeset: e5c8b6f156bb ================================================= FAIL : 7 XFAIL : 3 SKIP : 9 PASS : 139 ----------------- Total : 158 ================================================= FAIL Test Summary: HostSystem - 03_hs_to_settdefcap.py: FAIL RASD - 05_disk_rasd_emu_type.py: FAIL RASD - 07_parent_disk_pool.py: FAIL RedirectionService - 01_enum_crs.py: FAIL ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL SettingsDefineCapabilities - 01_forward.py: FAIL SystemDevice - 01_forward.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 02_nosystems.py: SKIP LogicalDisk - 02_nodevs.py: SKIP VSSD - 02_bootldr.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: PASS -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error CIM_ERR_NOT_SUPPORTED: State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): CIM_ERR_NOT_SUPPORTED: State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - 'KVM_SettingsDefineCapabilities' returned 8 RASD objects instead of 4 CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: PASS -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: FAIL ERROR - Exception: EmulatedType Mismatch: got 0,expected 1 -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: FAIL 07_parent_disk_pool.py:47: DeprecationWarning: the sets module is deprecated from sets import Set ERROR - Exception details: Got 5 recs instead of 3 -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: FAIL 01_enum_crs.py:29: DeprecationWarning: the sets module is deprecated from sets import Set ERROR - TypeError : __call__() takes exactly 1 argument (2 given) Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "01_enum_crs.py", line 108, in main if res_val != exp_val: TypeError: __call__() takes exactly 1 argument (2 given) ERROR - None CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'CIM_ERR_FAILED: Pool with that name already exists') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): CIM_ERR_FAILED: Pool with that name already exists -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: FAIL ERROR - KVM_SettingsDefineCapabilities returned 8 ResourcePool objects instead of 4 -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: FAIL 01_forward.py:29: DeprecationWarning: the sets module is deprecated from sets import Set ERROR - DeviceID mismatch ERROR - Exception Expected DeviceID: ['test_domain/0', 'test_domain/1', 'test_domain/2'] Got: [u'test_domain/0'] -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:ps2 CIM_ERR_NOT_FOUND: No such instance (no device domain/mouse:ps2) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From kaitlin at linux.vnet.ibm.com Thu Jun 4 13:50:28 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Thu, 04 Jun 2009 06:50:28 -0700 Subject: [Libvirt-cim] [PATCH 1 of 3] Added support to convert data in the internal format to the format used by the BootDevices property In-Reply-To: References: Message-ID: <4A27D124.7000303@linux.vnet.ibm.com> > diff -r 849171d2fbc0 -r e18c6d4d2ea4 src/Virt_VSSD.c > --- a/src/Virt_VSSD.c Mon Jun 01 14:01:21 2009 -0700 > +++ b/src/Virt_VSSD.c Mon Jun 01 18:19:38 2009 -0300 > @@ -38,20 +38,91 @@ > > const static CMPIBroker *_BROKER; > > -static void _set_fv_prop(struct domain *dominfo, > - CMPIInstance *inst) > +static CMPIStatus _set_fv_prop(const CMPIBroker *broker, > + struct domain *dominfo, > + CMPIInstance *inst) > { > bool fv = true; > + CMPIArray *array; > + CMPICount bl_ct; > + CMPIStatus s = {CMPI_RC_OK, NULL}; > + CMPICount i; > > if (dominfo->type == DOMAIN_XENFV) > CMSetProperty(inst, "IsFullVirt", > (CMPIValue *)&fv, CMPI_boolean); > > - if (dominfo->os_info.fv.boot != NULL) > - CMSetProperty(inst, > - "BootDevice", > - (CMPIValue *)dominfo->os_info.fv.boot, > - CMPI_chars); > + bl_ct = dominfo->os_info.fv.bootlist_ct; > + if (bl_ct < 0) > + return s; > + > + CU_DEBUG("bootlist_ct = %d", bl_ct); > + > + array = CMNewArray(broker, > + bl_ct, > + CMPI_string, > + &s); > + > + if (s.rc != CMPI_RC_OK) { > + cu_statusf(_BROKER, &s, This should be the broker that is passed in to the function, instead of using the provider's _BROKER. > + CMPI_RC_ERR_FAILED, > + "Error creating BootDevices list"); > + CU_DEBUG("CMNewArray call failed"); > + > + goto out; > + } > + > + for (i = 0; i < bl_ct; i++) { > + CMPIString *cm_str; > + > + CU_DEBUG("BootList[%u]=%s", > + i, > + dominfo->os_info.fv.bootlist[i]); > + > + cm_str = CMNewString(broker, > + (const char *)dominfo->os_info. > + fv.bootlist[i], > + &s); > + if (s.rc != CMPI_RC_OK) { > + CU_DEBUG("Error creating CMPIString"); > + cu_statusf(_BROKER, &s, Same here. > + CMPI_RC_ERR_FAILED, > + "Error creating CMPIString for " > + "BootDevices item"); > + > + goto out; > + } > + > + s = CMSetArrayElementAt(array, > + i, > + (CMPIValue *)&cm_str, > + CMPI_string); > + if (s.rc != CMPI_RC_OK) { > + CU_DEBUG("Error in CMSetArrayElementAT call"); > + cu_statusf(_BROKER, &s, Here as well. > + CMPI_RC_ERR_FAILED, > + "Error setting BootDevices array element"); > + > + goto out; > + } > + } > + > + s = CMSetProperty(inst, > + "BootDevices", > + (CMPIValue *)&array, > + CMPI_stringA); > + > + if (s.rc != CMPI_RC_OK) { > + CU_DEBUG("Error in CMSetProperty call"); > + cu_statusf(_BROKER, &s, And here. > + CMPI_RC_ERR_FAILED, > + "Error setting BootDevices property"); > + > + goto out; > + } > + > + out: > + return s; > } > -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Thu Jun 4 22:27:29 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Thu, 04 Jun 2009 19:27:29 -0300 Subject: [Libvirt-cim] [PATCH 0 of 3] (#3) Add support for booting on multiple devices and for boot order Message-ID: From rmaciel at linux.vnet.ibm.com Thu Jun 4 22:27:30 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Thu, 04 Jun 2009 19:27:30 -0300 Subject: [Libvirt-cim] [PATCH 1 of 3] Added support to convert data in the internal format to the format used by the BootDevices property In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1243891178 10800 # Node ID dc7ef55a1fe9870280e369096a4ed267e3eaa4ec # Parent 849171d2fbc0adbba613516bbdea4b78199178dd Added support to convert data in the internal format to the format used by the BootDevices property #2: - Code style changes - Added cu_statusf() calls to provide specific error messages to the user #3: - cu_statusf() calls now use the local broker instead of the global one Signed-off-by: Richard Maciel diff -r 849171d2fbc0 -r dc7ef55a1fe9 schema/VSSD.mof --- a/schema/VSSD.mof Mon Jun 01 14:01:21 2009 -0700 +++ b/schema/VSSD.mof Mon Jun 01 18:19:38 2009 -0300 @@ -27,7 +27,7 @@ [Description ("The device to boot from when in fully-virtualized mode." "One of hd,fd,cdrom.")] - string BootDevice; + string BootDevices[]; [Description ("The emulator the guest should use during runtime.")] string Emulator; @@ -42,8 +42,8 @@ class KVM_VirtualSystemSettingData : Virt_VirtualSystemSettingData { - [Description ("The device to boot from. One of hd,fd,cdrom.")] - string BootDevice; + [Description ("The list of devices to boot from. hd,fd,cdrom.")] + string BootDevices[]; [Description ("The emulator the guest should use during runtime.")] string Emulator; diff -r 849171d2fbc0 -r dc7ef55a1fe9 src/Virt_VSSD.c --- a/src/Virt_VSSD.c Mon Jun 01 14:01:21 2009 -0700 +++ b/src/Virt_VSSD.c Mon Jun 01 18:19:38 2009 -0300 @@ -38,20 +38,91 @@ const static CMPIBroker *_BROKER; -static void _set_fv_prop(struct domain *dominfo, - CMPIInstance *inst) +static CMPIStatus _set_fv_prop(const CMPIBroker *broker, + struct domain *dominfo, + CMPIInstance *inst) { bool fv = true; + CMPIArray *array; + CMPICount bl_ct; + CMPIStatus s = {CMPI_RC_OK, NULL}; + CMPICount i; if (dominfo->type == DOMAIN_XENFV) CMSetProperty(inst, "IsFullVirt", (CMPIValue *)&fv, CMPI_boolean); - if (dominfo->os_info.fv.boot != NULL) - CMSetProperty(inst, - "BootDevice", - (CMPIValue *)dominfo->os_info.fv.boot, - CMPI_chars); + bl_ct = dominfo->os_info.fv.bootlist_ct; + if (bl_ct < 0) + return s; + + CU_DEBUG("bootlist_ct = %d", bl_ct); + + array = CMNewArray(broker, + bl_ct, + CMPI_string, + &s); + + if (s.rc != CMPI_RC_OK) { + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Error creating BootDevices list"); + CU_DEBUG("CMNewArray call failed"); + + goto out; + } + + for (i = 0; i < bl_ct; i++) { + CMPIString *cm_str; + + CU_DEBUG("BootList[%u]=%s", + i, + dominfo->os_info.fv.bootlist[i]); + + cm_str = CMNewString(broker, + (const char *)dominfo->os_info. + fv.bootlist[i], + &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error creating CMPIString"); + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Error creating CMPIString for " + "BootDevices item"); + + goto out; + } + + s = CMSetArrayElementAt(array, + i, + (CMPIValue *)&cm_str, + CMPI_string); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error in CMSetArrayElementAT call"); + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Error setting BootDevices array element"); + + goto out; + } + } + + s = CMSetProperty(inst, + "BootDevices", + (CMPIValue *)&array, + CMPI_stringA); + + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error in CMSetProperty call"); + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Error setting BootDevices property"); + + goto out; + } + + out: + return s; } static void _set_pv_prop(struct domain *dominfo, @@ -98,12 +169,14 @@ CMPI_chars); } -static int instance_from_dom(virDomainPtr dom, +static int instance_from_dom(const CMPIBroker *broker, + virDomainPtr dom, CMPIInstance *inst) { char *pfx = NULL; char *vsid = NULL; int ret = 1; + CMPIStatus s = {CMPI_RC_OK, NULL}; CMPIObjectPath *op; struct domain *dominfo = NULL; @@ -158,7 +231,12 @@ if ((dominfo->type == DOMAIN_XENFV) || (dominfo->type == DOMAIN_KVM) || (dominfo->type == DOMAIN_QEMU)) - _set_fv_prop(dominfo, inst); + s = _set_fv_prop(broker, dominfo, inst); + if (s.rc != CMPI_RC_OK) { + ret = 0; + goto out; + } + else if (dominfo->type == DOMAIN_XENPV) _set_pv_prop(dominfo, inst); else if (dominfo->type == DOMAIN_LXC) @@ -203,7 +281,7 @@ goto out; } - if (instance_from_dom(dom, inst) != 1) { + if (instance_from_dom(broker, dom, inst) != 1) { cu_statusf(broker, s, CMPI_RC_ERR_FAILED, "Unable to get VSSD instance from Domain"); From rmaciel at linux.vnet.ibm.com Thu Jun 4 22:27:31 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Thu, 04 Jun 2009 19:27:31 -0300 Subject: [Libvirt-cim] [PATCH 2 of 3] Add support to fetch data from BootDevices property to the internal data structure In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1243891183 10800 # Node ID db7956e2e1028b553e9e722751eff3b8bea6ee38 # Parent dc7ef55a1fe9870280e369096a4ed267e3eaa4ec Add support to fetch data from BootDevices property to the internal data structure #2: - Code style changes Signed-off-by: Richard Maciel diff -r dc7ef55a1fe9 -r db7956e2e102 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:38 2009 -0300 +++ b/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:43 2009 -0300 @@ -197,6 +197,68 @@ return kvm; } +static int bootord_vssd_to_domain(CMPIInstance *inst, + struct domain *domain) +{ + int ret; + CMPICount i; + CMPICount bl_size; + CMPIArray *bootlist; + CMPIStatus s; + CMPIData boot_elem; + char **tmp_str_arr; + + for (i = 0; i < domain->os_info.fv.bootlist_ct; i++) + free(domain->os_info.fv.bootlist[i]); + + ret = cu_get_array_prop(inst, "BootDevices", &bootlist); + + if (ret != CMPI_RC_OK) + CU_DEBUG("Failed to get BootDevices property"); + + + bl_size = CMGetArrayCount(bootlist, &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Invalid BootDevice array size"); + return 0; + } + + tmp_str_arr = (char **)realloc(domain->os_info.fv.bootlist, + bl_size * sizeof(char *)); + + if (tmp_str_arr == NULL) { + CU_DEBUG("Could not alloc BootDevices array"); + return 0; + } + + for (i = 0; i < bl_size; i++) { + const char *str; + + boot_elem = CMGetArrayElementAt(bootlist, + i, + NULL); + + if (CMIsNullValue(boot_elem)) { + CU_DEBUG("Null BootDevice"); + return 0; + } + + str = CMGetCharPtr(boot_elem.value.string); + + if (str == NULL) { + CU_DEBUG("Could not extract char pointer from " + "CMPIArray"); + return 0; + } + + tmp_str_arr[i] = strdup(str); + } + domain->os_info.fv.bootlist_ct = bl_size; + domain->os_info.fv.bootlist = tmp_str_arr; + + return 1; +} + static int fv_vssd_to_domain(CMPIInstance *inst, struct domain *domain, const char *pfx) @@ -216,12 +278,9 @@ return 0; } - ret = cu_get_str_prop(inst, "BootDevice", &val); - if (ret != CMPI_RC_OK) - val = "hd"; - - free(domain->os_info.fv.boot); - domain->os_info.fv.boot = strdup(val); + ret = bootord_vssd_to_domain(inst, domain); + if (ret != 1) + return 0; ret = cu_get_str_prop(inst, "Emulator", &val); if (ret != CMPI_RC_OK) From rmaciel at linux.vnet.ibm.com Thu Jun 4 22:27:32 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Thu, 04 Jun 2009 19:27:32 -0300 Subject: [Libvirt-cim] [PATCH 3 of 3] XML generation and parsing for the BootDevices property In-Reply-To: References: Message-ID: <6e913ff6791f527b5058.1244154452@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1243891182 10800 # Node ID 6e913ff6791f527b50583360fddadbef76a92e01 # Parent db7956e2e1028b553e9e722751eff3b8bea6ee38 XML generation and parsing for the BootDevices property #2: - Code style changes Signed-off-by: Richard Maciel diff -r db7956e2e102 -r 6e913ff6791f libxkutil/device_parsing.c --- a/libxkutil/device_parsing.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/device_parsing.c Mon Jun 01 18:19:42 2009 -0300 @@ -810,6 +810,8 @@ static int parse_os(struct domain *dominfo, xmlNode *os) { xmlNode *child; + char **blist = NULL; + unsigned bl_size = 0; for (child = os->children; child != NULL; child = child->next) { if (XSTREQ(child->name, "type")) @@ -822,10 +824,23 @@ STRPROP(dominfo, os_info.pv.cmdline, child); else if (XSTREQ(child->name, "loader")) STRPROP(dominfo, os_info.fv.loader, child); - else if (XSTREQ(child->name, "boot")) - dominfo->os_info.fv.boot = get_attr_value(child, - "dev"); - else if (XSTREQ(child->name, "init")) + else if (XSTREQ(child->name, "boot")) { + char **tmp_list = NULL; + + tmp_list = (char **)realloc(blist, + (bl_size + 1) * + sizeof(char *)); + if (tmp_list == NULL) { + // Nothing you can do. Just go on. + CU_DEBUG("Could not alloc space for " + "boot device"); + continue; + } + blist = tmp_list; + + blist[bl_size] = get_attr_value(child, "dev"); + bl_size++; + } else if (XSTREQ(child->name, "init")) STRPROP(dominfo, os_info.lxc.init, child); } @@ -843,6 +858,9 @@ else dominfo->type = -1; + dominfo->os_info.fv.bootlist = blist; + dominfo->os_info.fv.bootlist_ct = bl_size; + return 1; } @@ -1001,9 +1019,15 @@ free(dom->os_info.pv.cmdline); } else if ((dom->type == DOMAIN_XENFV) || (dom->type == DOMAIN_KVM) || (dom->type == DOMAIN_QEMU)) { + int i; + free(dom->os_info.fv.type); free(dom->os_info.fv.loader); - free(dom->os_info.fv.boot); + + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + free(dom->os_info.fv.bootlist[i]); + } + free(dom->os_info.fv.bootlist); } else if (dom->type == DOMAIN_LXC) { free(dom->os_info.lxc.type); free(dom->os_info.lxc.init); diff -r db7956e2e102 -r 6e913ff6791f libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/device_parsing.h Mon Jun 01 18:19:42 2009 -0300 @@ -99,7 +99,8 @@ struct fv_os_info { char *type; /* Should always be 'hvm' */ char *loader; - char *boot; + unsigned bootlist_ct; + char **bootlist; }; struct lxc_os_info { diff -r db7956e2e102 -r 6e913ff6791f libxkutil/xml_parse_test.c --- a/libxkutil/xml_parse_test.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/xml_parse_test.c Mon Jun 01 18:19:42 2009 -0300 @@ -28,6 +28,7 @@ static void print_os(struct domain *dom, FILE *d) { + int i; if (dom->type == DOMAIN_XENPV) { print_value(d, "Domain Type", "Xen PV"); @@ -39,13 +40,18 @@ print_value(d, "Domain Type", "Xen FV"); print_value(d, "Type", dom->os_info.fv.type); print_value(d, "Loader", dom->os_info.fv.loader); - print_value(d, "Boot", dom->os_info.fv.boot); + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + print_value(d, "Boot", dom->os_info.fv.bootlist[i]); + } } else if ((dom->type == DOMAIN_KVM) || (dom->type == DOMAIN_QEMU)) { print_value(d, "Domain Type", "KVM/QEMU"); print_value(d, "Type", dom->os_info.fv.type); print_value(d, "Loader", dom->os_info.fv.loader); - print_value(d, "Boot", dom->os_info.fv.boot); + + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + print_value(d, "Boot", dom->os_info.fv.bootlist[i]); + } } else if (dom->type == DOMAIN_LXC) { print_value(d, "Init", dom->os_info.lxc.init); } else { diff -r db7956e2e102 -r 6e913ff6791f libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/xmlgen.c Mon Jun 01 18:19:42 2009 -0300 @@ -435,10 +435,27 @@ return NULL; } +static int _fv_bootlist_xml(xmlNodePtr root, struct fv_os_info *os) +{ + unsigned i; + xmlNodePtr tmp; + + for (i = 0; i < os->bootlist_ct; i++) { + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); + if (tmp == NULL) + return 0; + + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); + } + + return 1; +} + static char *_xenfv_os_xml(xmlNodePtr root, struct domain *domain) { struct fv_os_info *os = &domain->os_info.fv; xmlNodePtr tmp; + unsigned ret; if (os->type == NULL) os->type = strdup("hvm"); @@ -446,8 +463,11 @@ if (os->loader == NULL) os->loader = strdup("/usr/lib/xen/boot/hvmloader"); - if (os->boot == NULL) - os->boot = strdup("hd"); + if (os->bootlist_ct == 0) { + os->bootlist_ct = 1; + os->bootlist = (char **)calloc(1, sizeof(char *)); + os->bootlist[0] = strdup("hd"); + } tmp = xmlNewChild(root, NULL, BAD_CAST "type", BAD_CAST os->type); if (tmp == NULL) @@ -457,11 +477,17 @@ if (tmp == NULL) return XML_ERROR; - tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); - if (tmp == NULL) + ret = _fv_bootlist_xml(root, os); + if (ret == 0) return XML_ERROR; - xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->boot); + /*for (i = 0; i < os->bootlist_ct; i++) { + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); + if (tmp == NULL) + return XML_ERROR; + + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); + }*/ tmp = xmlNewChild(root, NULL, BAD_CAST "features", NULL); xmlNewChild(tmp, NULL, BAD_CAST "pae", NULL); @@ -475,21 +501,32 @@ { struct fv_os_info *os = &domain->os_info.fv; xmlNodePtr tmp; + unsigned ret; if (os->type == NULL) os->type = strdup("hvm"); - if (os->boot == NULL) - os->boot = strdup("hd"); + if (os->bootlist_ct == 0) { + os->bootlist_ct = 1; + os->bootlist = (char **)calloc(1, sizeof(char *)); + os->bootlist[0] = strdup("hd"); + } tmp = xmlNewChild(root, NULL, BAD_CAST "type", BAD_CAST os->type); if (tmp == NULL) return XML_ERROR; + + ret = _fv_bootlist_xml(root, os); + if (ret == 0) + return XML_ERROR; - tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); - if (tmp == NULL) - return XML_ERROR; - xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->boot); + /*for (i = 0; i < os->bootlist_ct; i++) { + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); + if (tmp == NULL) + return XML_ERROR; + + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); + }*/ return NULL; } From deeptik at linux.vnet.ibm.com Mon Jun 8 08:49:24 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Mon, 08 Jun 2009 14:19:24 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] Update RedirectionSerivce 01 to work with recent schema changes In-Reply-To: <7dd85abd05e44f4a1c31.1243635136@localhost.localdomain> References: <7dd85abd05e44f4a1c31.1243635136@localhost.localdomain> Message-ID: <4A2CD094.3090601@linux.vnet.ibm.com> +1 -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Mon Jun 8 10:54:49 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Mon, 08 Jun 2009 16:24:49 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] Cleanup guest in RASD 05 In-Reply-To: References: Message-ID: <4A2CEDF9.1090003@linux.vnet.ibm.com> +1 -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Fri Jun 5 10:14:31 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Fri, 05 Jun 2009 07:14:31 -0300 Subject: [Libvirt-cim] [PATCH 2 of 4] Signed-off-by: Richard Maciel In-Reply-To: References: Message-ID: <5037ddc96cee2ed47f6f.1244196871@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1244173955 10800 # Node ID 5037ddc96cee2ed47f6f91eeb7fc634a3c01d212 # Parent 8f9488b1665f045bcdd4c96769053c6f76379b34 Signed-off-by: Richard Maciel diff -r 8f9488b1665f -r 5037ddc96cee libxkutil/device_parsing.c --- a/libxkutil/device_parsing.c Thu Jun 04 23:58:13 2009 -0300 +++ b/libxkutil/device_parsing.c Fri Jun 05 00:52:35 2009 -0300 @@ -59,6 +59,7 @@ free(dev->driver); free(dev->source); free(dev->virtual_dev); + free(dev->bus_type); } static void cleanup_net_device(struct net_device *dev) @@ -246,6 +247,7 @@ ddev->virtual_dev = get_attr_value(child, "dev"); if (ddev->virtual_dev == NULL) goto err; + ddev->bus_type = get_attr_value(child, "bus"); } else if (XSTREQ(child->name, "readonly")) { ddev->readonly = true; } else if (XSTREQ(child->name, "shareable")) { @@ -666,6 +668,7 @@ DUP_FIELD(dev, _dev, dev.disk.driver); DUP_FIELD(dev, _dev, dev.disk.source); DUP_FIELD(dev, _dev, dev.disk.virtual_dev); + DUP_FIELD(dev, _dev, dev.disk.bus_type); dev->dev.disk.disk_type = _dev->dev.disk.disk_type; dev->dev.disk.readonly = _dev->dev.disk.readonly; dev->dev.disk.shareable = _dev->dev.disk.shareable; From rmaciel at linux.vnet.ibm.com Fri Jun 5 10:14:30 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Fri, 05 Jun 2009 07:14:30 -0300 Subject: [Libvirt-cim] [PATCH 1 of 4] Signed-off-by: Richard Maciel In-Reply-To: References: Message-ID: <8f9488b1665f045bcdd4.1244196870@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1244170693 10800 # Node ID 8f9488b1665f045bcdd4c96769053c6f76379b34 # Parent 6e913ff6791f527b50583360fddadbef76a92e01 Signed-off-by: Richard Maciel diff -r 6e913ff6791f -r 8f9488b1665f libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Mon Jun 01 18:19:42 2009 -0300 +++ b/libxkutil/device_parsing.h Thu Jun 04 23:58:13 2009 -0300 @@ -39,6 +39,7 @@ enum {DISK_UNKNOWN, DISK_PHY, DISK_FILE, DISK_FS} disk_type; bool readonly; bool shareable; + char *bus_type; }; struct net_device { diff -r 6e913ff6791f -r 8f9488b1665f schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Mon Jun 01 18:19:42 2009 -0300 +++ b/schema/ResourceAllocationSettingData.mof Thu Jun 04 23:58:13 2009 -0300 @@ -28,6 +28,9 @@ ValueMap {"0", "1"}, Values {"Disk", "CDROM"}] uint16 EmulatedType; + + [Description ("Bus type of the device")] + string BusType; }; [Description ("LXC virtual disk configuration"), From rmaciel at linux.vnet.ibm.com Fri Jun 5 10:14:29 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Fri, 05 Jun 2009 07:14:29 -0300 Subject: [Libvirt-cim] [PATCH 0 of 4] [RFC] Add support for disk bus type for KVM Message-ID: From rmaciel at linux.vnet.ibm.com Fri Jun 5 10:14:32 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Fri, 05 Jun 2009 07:14:32 -0300 Subject: [Libvirt-cim] [PATCH 3 of 4] Signed-off-by: Richard Maciel In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1244174547 10800 # Node ID e4eedf59bb5883b8814ed0569fabb27f71516494 # Parent 5037ddc96cee2ed47f6f91eeb7fc634a3c01d212 Signed-off-by: Richard Maciel diff -r 5037ddc96cee -r e4eedf59bb58 libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Fri Jun 05 00:52:35 2009 -0300 +++ b/libxkutil/xmlgen.c Fri Jun 05 01:02:27 2009 -0300 @@ -60,6 +60,8 @@ if (tmp == NULL) return XML_ERROR; xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST dev->virtual_dev); + if (dev->bus_type) + xmlNewProp(tmp, BAD_CAST "bus", BAD_CAST dev->bus_type); if (dev->readonly) xmlNewChild(disk, NULL, BAD_CAST "readonly", NULL); From rmaciel at linux.vnet.ibm.com Fri Jun 5 10:14:33 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Fri, 05 Jun 2009 07:14:33 -0300 Subject: [Libvirt-cim] [PATCH 4 of 4] Signed-off-by: Richard Maciel In-Reply-To: References: Message-ID: <9ca5749d068acb566f7d.1244196873@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1244176094 10800 # Node ID 9ca5749d068acb566f7df0956ffb3ea1976493e4 # Parent e4eedf59bb5883b8814ed0569fabb27f71516494 Signed-off-by: Richard Maciel diff -r e4eedf59bb58 -r 9ca5749d068a src/Virt_RASD.c --- a/src/Virt_RASD.c Fri Jun 05 01:02:27 2009 -0300 +++ b/src/Virt_RASD.c Fri Jun 05 01:28:14 2009 -0300 @@ -253,6 +253,11 @@ (CMPIValue *)dev->dev.disk.source, CMPI_chars); + CMSetProperty(inst, + "BusType", + (CMPIValue *)dev->dev.disk.bus_type, + CMPI_chars); + /* There's not much we can do here if we don't recognize the type, * so it seems that assuming 'disk' is a reasonable default */ From rmaciel at linux.vnet.ibm.com Fri Jun 5 10:30:33 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Fri, 05 Jun 2009 07:30:33 -0300 Subject: [Libvirt-cim] [PATCH 0 of 3] (#3) Add support for booting on multiple devices and for boot order Message-ID: From rmaciel at linux.vnet.ibm.com Fri Jun 5 10:30:34 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Fri, 05 Jun 2009 07:30:34 -0300 Subject: [Libvirt-cim] [PATCH 1 of 3] Added support to convert data in the internal format to the format used by the BootDevices property In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1243891178 10800 # Node ID dc7ef55a1fe9870280e369096a4ed267e3eaa4ec # Parent 849171d2fbc0adbba613516bbdea4b78199178dd Added support to convert data in the internal format to the format used by the BootDevices property #2: - Code style changes - Added cu_statusf() calls to provide specific error messages to the user #3: - cu_statusf() calls now use the local broker instead of the global one Signed-off-by: Richard Maciel diff -r 849171d2fbc0 -r dc7ef55a1fe9 schema/VSSD.mof --- a/schema/VSSD.mof Mon Jun 01 14:01:21 2009 -0700 +++ b/schema/VSSD.mof Mon Jun 01 18:19:38 2009 -0300 @@ -27,7 +27,7 @@ [Description ("The device to boot from when in fully-virtualized mode." "One of hd,fd,cdrom.")] - string BootDevice; + string BootDevices[]; [Description ("The emulator the guest should use during runtime.")] string Emulator; @@ -42,8 +42,8 @@ class KVM_VirtualSystemSettingData : Virt_VirtualSystemSettingData { - [Description ("The device to boot from. One of hd,fd,cdrom.")] - string BootDevice; + [Description ("The list of devices to boot from. hd,fd,cdrom.")] + string BootDevices[]; [Description ("The emulator the guest should use during runtime.")] string Emulator; diff -r 849171d2fbc0 -r dc7ef55a1fe9 src/Virt_VSSD.c --- a/src/Virt_VSSD.c Mon Jun 01 14:01:21 2009 -0700 +++ b/src/Virt_VSSD.c Mon Jun 01 18:19:38 2009 -0300 @@ -38,20 +38,91 @@ const static CMPIBroker *_BROKER; -static void _set_fv_prop(struct domain *dominfo, - CMPIInstance *inst) +static CMPIStatus _set_fv_prop(const CMPIBroker *broker, + struct domain *dominfo, + CMPIInstance *inst) { bool fv = true; + CMPIArray *array; + CMPICount bl_ct; + CMPIStatus s = {CMPI_RC_OK, NULL}; + CMPICount i; if (dominfo->type == DOMAIN_XENFV) CMSetProperty(inst, "IsFullVirt", (CMPIValue *)&fv, CMPI_boolean); - if (dominfo->os_info.fv.boot != NULL) - CMSetProperty(inst, - "BootDevice", - (CMPIValue *)dominfo->os_info.fv.boot, - CMPI_chars); + bl_ct = dominfo->os_info.fv.bootlist_ct; + if (bl_ct < 0) + return s; + + CU_DEBUG("bootlist_ct = %d", bl_ct); + + array = CMNewArray(broker, + bl_ct, + CMPI_string, + &s); + + if (s.rc != CMPI_RC_OK) { + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Error creating BootDevices list"); + CU_DEBUG("CMNewArray call failed"); + + goto out; + } + + for (i = 0; i < bl_ct; i++) { + CMPIString *cm_str; + + CU_DEBUG("BootList[%u]=%s", + i, + dominfo->os_info.fv.bootlist[i]); + + cm_str = CMNewString(broker, + (const char *)dominfo->os_info. + fv.bootlist[i], + &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error creating CMPIString"); + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Error creating CMPIString for " + "BootDevices item"); + + goto out; + } + + s = CMSetArrayElementAt(array, + i, + (CMPIValue *)&cm_str, + CMPI_string); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error in CMSetArrayElementAT call"); + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Error setting BootDevices array element"); + + goto out; + } + } + + s = CMSetProperty(inst, + "BootDevices", + (CMPIValue *)&array, + CMPI_stringA); + + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Error in CMSetProperty call"); + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Error setting BootDevices property"); + + goto out; + } + + out: + return s; } static void _set_pv_prop(struct domain *dominfo, @@ -98,12 +169,14 @@ CMPI_chars); } -static int instance_from_dom(virDomainPtr dom, +static int instance_from_dom(const CMPIBroker *broker, + virDomainPtr dom, CMPIInstance *inst) { char *pfx = NULL; char *vsid = NULL; int ret = 1; + CMPIStatus s = {CMPI_RC_OK, NULL}; CMPIObjectPath *op; struct domain *dominfo = NULL; @@ -158,7 +231,12 @@ if ((dominfo->type == DOMAIN_XENFV) || (dominfo->type == DOMAIN_KVM) || (dominfo->type == DOMAIN_QEMU)) - _set_fv_prop(dominfo, inst); + s = _set_fv_prop(broker, dominfo, inst); + if (s.rc != CMPI_RC_OK) { + ret = 0; + goto out; + } + else if (dominfo->type == DOMAIN_XENPV) _set_pv_prop(dominfo, inst); else if (dominfo->type == DOMAIN_LXC) @@ -203,7 +281,7 @@ goto out; } - if (instance_from_dom(dom, inst) != 1) { + if (instance_from_dom(broker, dom, inst) != 1) { cu_statusf(broker, s, CMPI_RC_ERR_FAILED, "Unable to get VSSD instance from Domain"); From rmaciel at linux.vnet.ibm.com Fri Jun 5 10:30:35 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Fri, 05 Jun 2009 07:30:35 -0300 Subject: [Libvirt-cim] [PATCH 2 of 3] Add support to fetch data from BootDevices property to the internal data structure In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1243891183 10800 # Node ID db7956e2e1028b553e9e722751eff3b8bea6ee38 # Parent dc7ef55a1fe9870280e369096a4ed267e3eaa4ec Add support to fetch data from BootDevices property to the internal data structure #2: - Code style changes Signed-off-by: Richard Maciel diff -r dc7ef55a1fe9 -r db7956e2e102 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:38 2009 -0300 +++ b/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:43 2009 -0300 @@ -197,6 +197,68 @@ return kvm; } +static int bootord_vssd_to_domain(CMPIInstance *inst, + struct domain *domain) +{ + int ret; + CMPICount i; + CMPICount bl_size; + CMPIArray *bootlist; + CMPIStatus s; + CMPIData boot_elem; + char **tmp_str_arr; + + for (i = 0; i < domain->os_info.fv.bootlist_ct; i++) + free(domain->os_info.fv.bootlist[i]); + + ret = cu_get_array_prop(inst, "BootDevices", &bootlist); + + if (ret != CMPI_RC_OK) + CU_DEBUG("Failed to get BootDevices property"); + + + bl_size = CMGetArrayCount(bootlist, &s); + if (s.rc != CMPI_RC_OK) { + CU_DEBUG("Invalid BootDevice array size"); + return 0; + } + + tmp_str_arr = (char **)realloc(domain->os_info.fv.bootlist, + bl_size * sizeof(char *)); + + if (tmp_str_arr == NULL) { + CU_DEBUG("Could not alloc BootDevices array"); + return 0; + } + + for (i = 0; i < bl_size; i++) { + const char *str; + + boot_elem = CMGetArrayElementAt(bootlist, + i, + NULL); + + if (CMIsNullValue(boot_elem)) { + CU_DEBUG("Null BootDevice"); + return 0; + } + + str = CMGetCharPtr(boot_elem.value.string); + + if (str == NULL) { + CU_DEBUG("Could not extract char pointer from " + "CMPIArray"); + return 0; + } + + tmp_str_arr[i] = strdup(str); + } + domain->os_info.fv.bootlist_ct = bl_size; + domain->os_info.fv.bootlist = tmp_str_arr; + + return 1; +} + static int fv_vssd_to_domain(CMPIInstance *inst, struct domain *domain, const char *pfx) @@ -216,12 +278,9 @@ return 0; } - ret = cu_get_str_prop(inst, "BootDevice", &val); - if (ret != CMPI_RC_OK) - val = "hd"; - - free(domain->os_info.fv.boot); - domain->os_info.fv.boot = strdup(val); + ret = bootord_vssd_to_domain(inst, domain); + if (ret != 1) + return 0; ret = cu_get_str_prop(inst, "Emulator", &val); if (ret != CMPI_RC_OK) From rmaciel at linux.vnet.ibm.com Fri Jun 5 10:30:36 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Fri, 05 Jun 2009 07:30:36 -0300 Subject: [Libvirt-cim] [PATCH 3 of 3] XML generation and parsing for the BootDevices property In-Reply-To: References: Message-ID: <6107c1026ed44acaf24c.1244197836@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1243891182 10800 # Node ID 6107c1026ed44acaf24ce9430a0e6dd2fa97f252 # Parent db7956e2e1028b553e9e722751eff3b8bea6ee38 XML generation and parsing for the BootDevices property #2: - Code style changes #3: - Removed commented code sections Signed-off-by: Richard Maciel diff -r db7956e2e102 -r 6107c1026ed4 libxkutil/device_parsing.c --- a/libxkutil/device_parsing.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/device_parsing.c Mon Jun 01 18:19:42 2009 -0300 @@ -810,6 +810,8 @@ static int parse_os(struct domain *dominfo, xmlNode *os) { xmlNode *child; + char **blist = NULL; + unsigned bl_size = 0; for (child = os->children; child != NULL; child = child->next) { if (XSTREQ(child->name, "type")) @@ -822,10 +824,23 @@ STRPROP(dominfo, os_info.pv.cmdline, child); else if (XSTREQ(child->name, "loader")) STRPROP(dominfo, os_info.fv.loader, child); - else if (XSTREQ(child->name, "boot")) - dominfo->os_info.fv.boot = get_attr_value(child, - "dev"); - else if (XSTREQ(child->name, "init")) + else if (XSTREQ(child->name, "boot")) { + char **tmp_list = NULL; + + tmp_list = (char **)realloc(blist, + (bl_size + 1) * + sizeof(char *)); + if (tmp_list == NULL) { + // Nothing you can do. Just go on. + CU_DEBUG("Could not alloc space for " + "boot device"); + continue; + } + blist = tmp_list; + + blist[bl_size] = get_attr_value(child, "dev"); + bl_size++; + } else if (XSTREQ(child->name, "init")) STRPROP(dominfo, os_info.lxc.init, child); } @@ -843,6 +858,9 @@ else dominfo->type = -1; + dominfo->os_info.fv.bootlist = blist; + dominfo->os_info.fv.bootlist_ct = bl_size; + return 1; } @@ -1001,9 +1019,15 @@ free(dom->os_info.pv.cmdline); } else if ((dom->type == DOMAIN_XENFV) || (dom->type == DOMAIN_KVM) || (dom->type == DOMAIN_QEMU)) { + int i; + free(dom->os_info.fv.type); free(dom->os_info.fv.loader); - free(dom->os_info.fv.boot); + + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + free(dom->os_info.fv.bootlist[i]); + } + free(dom->os_info.fv.bootlist); } else if (dom->type == DOMAIN_LXC) { free(dom->os_info.lxc.type); free(dom->os_info.lxc.init); diff -r db7956e2e102 -r 6107c1026ed4 libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/device_parsing.h Mon Jun 01 18:19:42 2009 -0300 @@ -99,7 +99,8 @@ struct fv_os_info { char *type; /* Should always be 'hvm' */ char *loader; - char *boot; + unsigned bootlist_ct; + char **bootlist; }; struct lxc_os_info { diff -r db7956e2e102 -r 6107c1026ed4 libxkutil/xml_parse_test.c --- a/libxkutil/xml_parse_test.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/xml_parse_test.c Mon Jun 01 18:19:42 2009 -0300 @@ -28,6 +28,7 @@ static void print_os(struct domain *dom, FILE *d) { + int i; if (dom->type == DOMAIN_XENPV) { print_value(d, "Domain Type", "Xen PV"); @@ -39,13 +40,18 @@ print_value(d, "Domain Type", "Xen FV"); print_value(d, "Type", dom->os_info.fv.type); print_value(d, "Loader", dom->os_info.fv.loader); - print_value(d, "Boot", dom->os_info.fv.boot); + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + print_value(d, "Boot", dom->os_info.fv.bootlist[i]); + } } else if ((dom->type == DOMAIN_KVM) || (dom->type == DOMAIN_QEMU)) { print_value(d, "Domain Type", "KVM/QEMU"); print_value(d, "Type", dom->os_info.fv.type); print_value(d, "Loader", dom->os_info.fv.loader); - print_value(d, "Boot", dom->os_info.fv.boot); + + for (i = 0; i < dom->os_info.fv.bootlist_ct; i++) { + print_value(d, "Boot", dom->os_info.fv.bootlist[i]); + } } else if (dom->type == DOMAIN_LXC) { print_value(d, "Init", dom->os_info.lxc.init); } else { diff -r db7956e2e102 -r 6107c1026ed4 libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Mon Jun 01 18:19:43 2009 -0300 +++ b/libxkutil/xmlgen.c Mon Jun 01 18:19:42 2009 -0300 @@ -435,10 +435,27 @@ return NULL; } +static int _fv_bootlist_xml(xmlNodePtr root, struct fv_os_info *os) +{ + unsigned i; + xmlNodePtr tmp; + + for (i = 0; i < os->bootlist_ct; i++) { + tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); + if (tmp == NULL) + return 0; + + xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->bootlist[i]); + } + + return 1; +} + static char *_xenfv_os_xml(xmlNodePtr root, struct domain *domain) { struct fv_os_info *os = &domain->os_info.fv; xmlNodePtr tmp; + unsigned ret; if (os->type == NULL) os->type = strdup("hvm"); @@ -446,8 +463,11 @@ if (os->loader == NULL) os->loader = strdup("/usr/lib/xen/boot/hvmloader"); - if (os->boot == NULL) - os->boot = strdup("hd"); + if (os->bootlist_ct == 0) { + os->bootlist_ct = 1; + os->bootlist = (char **)calloc(1, sizeof(char *)); + os->bootlist[0] = strdup("hd"); + } tmp = xmlNewChild(root, NULL, BAD_CAST "type", BAD_CAST os->type); if (tmp == NULL) @@ -457,12 +477,10 @@ if (tmp == NULL) return XML_ERROR; - tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); - if (tmp == NULL) + ret = _fv_bootlist_xml(root, os); + if (ret == 0) return XML_ERROR; - xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->boot); - tmp = xmlNewChild(root, NULL, BAD_CAST "features", NULL); xmlNewChild(tmp, NULL, BAD_CAST "pae", NULL); xmlNewChild(tmp, NULL, BAD_CAST "acpi", NULL); @@ -475,21 +493,24 @@ { struct fv_os_info *os = &domain->os_info.fv; xmlNodePtr tmp; + unsigned ret; if (os->type == NULL) os->type = strdup("hvm"); - if (os->boot == NULL) - os->boot = strdup("hd"); + if (os->bootlist_ct == 0) { + os->bootlist_ct = 1; + os->bootlist = (char **)calloc(1, sizeof(char *)); + os->bootlist[0] = strdup("hd"); + } tmp = xmlNewChild(root, NULL, BAD_CAST "type", BAD_CAST os->type); if (tmp == NULL) return XML_ERROR; - - tmp = xmlNewChild(root, NULL, BAD_CAST "boot", NULL); - if (tmp == NULL) + + ret = _fv_bootlist_xml(root, os); + if (ret == 0) return XML_ERROR; - xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST os->boot); return NULL; } From deeptik at linux.vnet.ibm.com Wed Jun 10 10:49:45 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Wed, 10 Jun 2009 16:19:45 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] #2 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() In-Reply-To: <10746e30b8d0532ee7ed.1243967096@localhost.localdomain> References: <10746e30b8d0532ee7ed.1243967096@localhost.localdomain> Message-ID: <4A2F8FC9.6080502@linux.vnet.ibm.com> Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1243630742 25200 > # Node ID 10746e30b8d0532ee7eda8d0689a085d1b695ee2 > # Parent 64548d3a357980326b64cebc8d2388f8b631049a > [TEST] #2 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() > > Also update HostSystem 03 to support DiskPoolRASD / NetPoolRASD > > Updates from 1 to 2: > -Add instance id to log message HostSystem/03_hs_to_settdefcap.py: 223 > -Rework the DiskRASD portion of get_exp_disk_rasd_len() - only check for > volumed if the libvirt version is greater than 0.4.1. > > Signed-off-by: Kaitlin Rupert > > diff -r 64548d3a3579 -r 10746e30b8d0 suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py > --- a/suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py Tue Jun 02 10:37:42 2009 -0700 > +++ b/suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py Fri May 29 13:59:02 2009 -0700 > @@ -204,8 +204,10 @@ > else: > rtype = { > "%s_DiskResourceAllocationSettingData" % virt : 17, \ > + "%s_DiskPoolResourceAllocationSettingData" % virt : 17, \ > "%s_MemResourceAllocationSettingData" % virt : 4, \ > "%s_NetResourceAllocationSettingData" % virt : 10, \ > + "%s_NetPoolResourceAllocationSettingData" % virt : 10, \ > "%s_ProcResourceAllocationSettingData" % virt : 3 > } > try: > @@ -218,8 +220,8 @@ > exp_len = get_exp_template_rasd_len(virt, server, ap['InstanceID']) > > if len(assoc_info) != exp_len: > - logger.error("'%s' returned %i RASD objects instead of %i", > - an, len(assoc_info), exp_len) > + logger.error("%s returned %i RASD objects instead of %i for %s", > + an, len(assoc_info), exp_len, ap['InstanceID']) > return FAIL > > for inst in assoc_info: > diff -r 64548d3a3579 -r 10746e30b8d0 suites/libvirt-cim/lib/XenKvmLib/rasd.py > --- a/suites/libvirt-cim/lib/XenKvmLib/rasd.py Tue Jun 02 10:37:42 2009 -0700 > +++ b/suites/libvirt-cim/lib/XenKvmLib/rasd.py Fri May 29 13:59:02 2009 -0700 > @@ -31,6 +31,7 @@ > from XenKvmLib.const import default_pool_name, default_network_name, \ > get_provider_version > from XenKvmLib.pool import enum_volumes > +from XenKvmLib.xm_virt_util import virsh_version > > pasd_cn = 'ProcResourceAllocationSettingData' > nasd_cn = 'NetResourceAllocationSettingData' > @@ -304,45 +305,76 @@ > > return rasd_insts, PASS > > -def get_exp_template_rasd_len(virt, ip, id): > +def get_exp_disk_rasd_len(virt, ip, rev, id): > libvirt_rasd_template_changes = 707 > libvirt_rasd_new_changes = 805 > libvirt_rasd_dpool_changes = 839 > > - curr_cim_rev, changeset = get_provider_version(virt, ip) > + libvirt_ver = virsh_version(ip, virt) > > # For Diskpool, we have info 1 for each of Min, Max, Default, and Incr > exp_base_num = 4 > exp_cdrom = 4 > > - exp_len = exp_base_num > + exp_len = exp_base_num > > - if 'DiskPool' in id: > - if virt == 'Xen' or virt == 'XenFV': > - # For Xen and XenFV, there is a template for PV and FV, so you > - # end up with double the number of templates > - xen_multi = 2 > + if id == "DiskPool/0": > + pool_types = 3 > + return exp_base_num * pool_types > The test fails here with current sources and KVM for DiskPool/0 with the following error: -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - KVM_SettingsDefineCapabilities returned 20 RASD objects instead of 12 for DiskPool/0 CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- The above pool_types should be 5. > + > + if virt == 'Xen' or virt == 'XenFV': > + # For Xen and XenFV, there is a template for PV and FV, so you > + # end up with double the number of templates > + xen_multi = 2 > > - if curr_cim_rev >= libvirt_rasd_template_changes and \ > - curr_cim_rev < libvirt_rasd_new_changes: > - exp_len = exp_base_num + exp_cdrom > + if rev >= libvirt_rasd_template_changes and \ > + rev < libvirt_rasd_new_changes: > + exp_len = exp_base_num + exp_cdrom > > - elif curr_cim_rev >= libvirt_rasd_new_changes and \ > - curr_cim_rev < libvirt_rasd_dpool_changes: > - exp_len = (exp_base_num + exp_cdrom) * xen_multi > + elif rev >= libvirt_rasd_dpool_changes and libvirt_ver >= '0.4.1': > + volumes = enum_volumes(virt, ip) > + exp_len = ((volumes * exp_base_num) + exp_cdrom) * xen_multi > > - elif curr_cim_rev >= libvirt_rasd_dpool_changes: > - volumes = enum_volumes(virt, ip) > - exp_len = ((volumes * exp_base_num) + exp_cdrom) * xen_multi > + exp_len = (exp_base_num + exp_cdrom) * xen_multi > > This line 338 [ exp_len = (exp_base_num + exp_cdrom) * xen_multi ] after attaching the patch is resetting the the calculation exp_len = ((volumes * exp_base_num) + exp_cdrom) * xen_multi and hence we are getting the error on Xen with current source -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - Xen_SettingsDefineCapabilities returned 88 RASD objects instead of 16 for DiskPool/cimtest-diskpool CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- > - elif virt == 'KVM': > - if curr_cim_rev >= libvirt_rasd_new_changes and \ > - curr_cim_rev < libvirt_rasd_dpool_changes: > - exp_len = exp_base_num + exp_cdrom > + elif virt == 'KVM': > + if rev >= libvirt_rasd_new_changes and \ > + rev < libvirt_rasd_dpool_changes: > + exp_len = exp_base_num + exp_cdrom > > - elif curr_cim_rev >= libvirt_rasd_dpool_changes: > - volumes = enum_volumes(virt, ip) > - exp_len = (volumes * exp_base_num) + exp_cdrom > + elif rev >= libvirt_rasd_dpool_changes: > + volumes = enum_volumes(virt, ip) > + exp_len = (volumes * exp_base_num) + exp_cdrom > > return exp_len > > +def get_exp_net_rasd_len(virt, rev, id): > + net_rasd_template_changes = 861 > + > + exp_base_num = 4 > + > + if id == "NetworkPool/0": > + pool_types = 3 > + forward_modes = 2 > + > + return (exp_base_num * pool_types) + (exp_base_num * forward_modes) > + > + if rev >= net_rasd_template_changes: > + dev_types = 2 > + > + return exp_base_num * dev_types > + > +def get_exp_template_rasd_len(virt, ip, id): > + curr_cim_rev, changeset = get_provider_version(virt, ip) > + > + exp_len = 4 > + > + if 'DiskPool' in id: > + exp_len = get_exp_disk_rasd_len(virt, ip, curr_cim_rev, id) > + > + elif 'NetworkPool' in id: > + exp_len = get_exp_net_rasd_len(virt, curr_cim_rev, id) > + > + return exp_len > + > + > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim > -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Sun Jun 7 01:49:44 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sat, 06 Jun 2009 22:49:44 -0300 Subject: [Libvirt-cim] [PATCH 1 of 4] Adds BusType prop to DiskRASD and support for it to the disk structure In-Reply-To: References: Message-ID: <5a873709bd07b283922a.1244339384@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1244339202 10800 # Node ID 5a873709bd07b283922a09e0ae8c0d6970bea93c # Parent 6107c1026ed44acaf24ce9430a0e6dd2fa97f252 Adds BusType prop to DiskRASD and support for it to the disk structure Signed-off-by: Richard Maciel diff -r 6107c1026ed4 -r 5a873709bd07 libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Mon Jun 01 18:19:42 2009 -0300 +++ b/libxkutil/device_parsing.h Sat Jun 06 22:46:42 2009 -0300 @@ -39,6 +39,7 @@ enum {DISK_UNKNOWN, DISK_PHY, DISK_FILE, DISK_FS} disk_type; bool readonly; bool shareable; + char *bus_type; }; struct net_device { diff -r 6107c1026ed4 -r 5a873709bd07 schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Mon Jun 01 18:19:42 2009 -0300 +++ b/schema/ResourceAllocationSettingData.mof Sat Jun 06 22:46:42 2009 -0300 @@ -28,6 +28,9 @@ ValueMap {"0", "1"}, Values {"Disk", "CDROM"}] uint16 EmulatedType; + + [Description ("Bus type of the device")] + string BusType; }; [Description ("LXC virtual disk configuration"), From rmaciel at linux.vnet.ibm.com Sun Jun 7 01:49:45 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sat, 06 Jun 2009 22:49:45 -0300 Subject: [Libvirt-cim] [PATCH 2 of 4] Added support for BusType prop on device_parsing In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1244339211 10800 # Node ID efdd812a716e949db3c09b54c05fe955cc34fb4a # Parent 5a873709bd07b283922a09e0ae8c0d6970bea93c Added support for BusType prop on device_parsing Signed-off-by: Richard Maciel diff -r 5a873709bd07 -r efdd812a716e libxkutil/device_parsing.c --- a/libxkutil/device_parsing.c Sat Jun 06 22:46:42 2009 -0300 +++ b/libxkutil/device_parsing.c Sat Jun 06 22:46:51 2009 -0300 @@ -59,6 +59,7 @@ free(dev->driver); free(dev->source); free(dev->virtual_dev); + free(dev->bus_type); } static void cleanup_net_device(struct net_device *dev) @@ -246,6 +247,7 @@ ddev->virtual_dev = get_attr_value(child, "dev"); if (ddev->virtual_dev == NULL) goto err; + ddev->bus_type = get_attr_value(child, "bus"); } else if (XSTREQ(child->name, "readonly")) { ddev->readonly = true; } else if (XSTREQ(child->name, "shareable")) { @@ -666,6 +668,7 @@ DUP_FIELD(dev, _dev, dev.disk.driver); DUP_FIELD(dev, _dev, dev.disk.source); DUP_FIELD(dev, _dev, dev.disk.virtual_dev); + DUP_FIELD(dev, _dev, dev.disk.bus_type); dev->dev.disk.disk_type = _dev->dev.disk.disk_type; dev->dev.disk.readonly = _dev->dev.disk.readonly; dev->dev.disk.shareable = _dev->dev.disk.shareable; From rmaciel at linux.vnet.ibm.com Sun Jun 7 01:49:43 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sat, 06 Jun 2009 22:49:43 -0300 Subject: [Libvirt-cim] [PATCH 0 of 4] Adds disk bus type support for libvirt-cim Message-ID: From rmaciel at linux.vnet.ibm.com Sun Jun 7 01:49:46 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sat, 06 Jun 2009 22:49:46 -0300 Subject: [Libvirt-cim] [PATCH 3 of 4] Added support for BusType prop on xmlgen and xml_parse_test In-Reply-To: References: Message-ID: <54abd208846613c4babf.1244339386@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1244339211 10800 # Node ID 54abd208846613c4babff527809b2b5fcd305de6 # Parent efdd812a716e949db3c09b54c05fe955cc34fb4a Added support for BusType prop on xmlgen and xml_parse_test Signed-off-by: Richard Maciel diff -r efdd812a716e -r 54abd2088466 libxkutil/xml_parse_test.c --- a/libxkutil/xml_parse_test.c Sat Jun 06 22:46:51 2009 -0300 +++ b/libxkutil/xml_parse_test.c Sat Jun 06 22:46:51 2009 -0300 @@ -97,6 +97,7 @@ print_value(d, "Driver", dev->dev.disk.driver); print_value(d, "Source", dev->dev.disk.source); print_value(d, "Virt Device", dev->dev.disk.virtual_dev); + print_value(d, "Bus Type", dev->dev.disk.bus_type); } static void print_dev_vcpu(struct virt_device *dev, diff -r efdd812a716e -r 54abd2088466 libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Sat Jun 06 22:46:51 2009 -0300 +++ b/libxkutil/xmlgen.c Sat Jun 06 22:46:51 2009 -0300 @@ -60,6 +60,8 @@ if (tmp == NULL) return XML_ERROR; xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST dev->virtual_dev); + if (dev->bus_type) + xmlNewProp(tmp, BAD_CAST "bus", BAD_CAST dev->bus_type); if (dev->readonly) xmlNewChild(disk, NULL, BAD_CAST "readonly", NULL); From rmaciel at linux.vnet.ibm.com Sun Jun 7 01:49:47 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sat, 06 Jun 2009 22:49:47 -0300 Subject: [Libvirt-cim] [PATCH 4 of 4] Added support for BusType prop on RASD and VSMS In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1244339211 10800 # Node ID f40d6547d9db21d942f0f033f8f51150f5c57637 # Parent 54abd208846613c4babff527809b2b5fcd305de6 Added support for BusType prop on RASD and VSMS Signed-off-by: Richard Maciel diff -r 54abd2088466 -r f40d6547d9db src/Virt_RASD.c --- a/src/Virt_RASD.c Sat Jun 06 22:46:51 2009 -0300 +++ b/src/Virt_RASD.c Sat Jun 06 22:46:51 2009 -0300 @@ -253,6 +253,11 @@ (CMPIValue *)dev->dev.disk.source, CMPI_chars); + CMSetProperty(inst, + "BusType", + (CMPIValue *)dev->dev.disk.bus_type, + CMPI_chars); + /* There's not much we can do here if we don't recognize the type, * so it seems that assuming 'disk' is a reasonable default */ diff -r 54abd2088466 -r f40d6547d9db src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Sat Jun 06 22:46:51 2009 -0300 +++ b/src/Virt_VirtualSystemManagementService.c Sat Jun 06 22:46:51 2009 -0300 @@ -599,6 +599,12 @@ else return "Invalid value for EmulatedType"; + if (cu_get_str_prop(inst, "BusType", &val) != CMPI_RC_OK) + val = "ide"; + + free(dev->dev.disk.bus_type); + dev->dev.disk.bus_type = strdup(val); + free(dev->id); dev->id = strdup(dev->dev.disk.virtual_dev); From kaitlin at linux.vnet.ibm.com Wed Jun 10 23:22:20 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 10 Jun 2009 16:22:20 -0700 Subject: [Libvirt-cim] [PATCH 1 of 4] Adds BusType prop to DiskRASD and support for it to the disk structure In-Reply-To: <5a873709bd07b283922a.1244339384@localhost.localdomain> References: <5a873709bd07b283922a.1244339384@localhost.localdomain> Message-ID: <4A30402C.6000704@linux.vnet.ibm.com> > diff -r 6107c1026ed4 -r 5a873709bd07 schema/ResourceAllocationSettingData.mof > --- a/schema/ResourceAllocationSettingData.mof Mon Jun 01 18:19:42 2009 -0300 > +++ b/schema/ResourceAllocationSettingData.mof Sat Jun 06 22:46:42 2009 -0300 > @@ -28,6 +28,9 @@ > ValueMap {"0", "1"}, > Values {"Disk", "CDROM"}] > uint16 EmulatedType; > + > + [Description ("Bus type of the device")] > + string BusType; > }; Xen guests also support the BusType option. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 10 23:23:44 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 10 Jun 2009 16:23:44 -0700 Subject: [Libvirt-cim] [PATCH 3 of 4] Added support for BusType prop on xmlgen and xml_parse_test In-Reply-To: <54abd208846613c4babf.1244339386@localhost.localdomain> References: <54abd208846613c4babf.1244339386@localhost.localdomain> Message-ID: <4A304080.1030407@linux.vnet.ibm.com> > > static void print_dev_vcpu(struct virt_device *dev, > diff -r efdd812a716e -r 54abd2088466 libxkutil/xmlgen.c > --- a/libxkutil/xmlgen.c Sat Jun 06 22:46:51 2009 -0300 > +++ b/libxkutil/xmlgen.c Sat Jun 06 22:46:51 2009 -0300 > @@ -60,6 +60,8 @@ > if (tmp == NULL) > return XML_ERROR; > xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST dev->virtual_dev); > + if (dev->bus_type) > + xmlNewProp(tmp, BAD_CAST "bus", BAD_CAST dev->bus_type); > > if (dev->readonly) > xmlNewChild(disk, NULL, BAD_CAST "readonly", NULL); What about for file type disks? This only covers block type disks. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 10 23:25:23 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 10 Jun 2009 16:25:23 -0700 Subject: [Libvirt-cim] [PATCH 4 of 4] Added support for BusType prop on RASD and VSMS In-Reply-To: References: Message-ID: <4A3040E3.1070405@linux.vnet.ibm.com> > diff -r 54abd2088466 -r f40d6547d9db src/Virt_VirtualSystemManagementService.c > --- a/src/Virt_VirtualSystemManagementService.c Sat Jun 06 22:46:51 2009 -0300 > +++ b/src/Virt_VirtualSystemManagementService.c Sat Jun 06 22:46:51 2009 -0300 > @@ -599,6 +599,12 @@ > else > return "Invalid value for EmulatedType"; > > + if (cu_get_str_prop(inst, "BusType", &val) != CMPI_RC_OK) > + val = "ide"; This is an optional value. If the user doesn't specify a value, libvirt will attempt to determine the correct value. So instead of setting "ide" as the default here, just set dev->dev.disk.bus_type to NULL to indicate no value was set. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 10 23:42:51 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 10 Jun 2009 16:42:51 -0700 Subject: [Libvirt-cim] [PATCH] Fix potiential seg fault if user doesn't specify BootDevices attribute Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1244676797 25200 # Node ID fc8f08ab36dac00f5e8bc3f2a1d160d1a57fdc78 # Parent 6107c1026ed44acaf24ce9430a0e6dd2fa97f252 Fix potiential seg fault if user doesn't specify BootDevices attribute If the user doesn't specify the BootDevices attribute, then we should return from the bootord_vssd_to_domain(). Otherwise, the provider will seg fault when it tries to get the length of the array. Since specifying a boot order is optional, set the boot order count to 0 and return. Signed-off-by: Kaitlin Rupert diff -r 6107c1026ed4 -r fc8f08ab36da src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:42 2009 -0300 +++ b/src/Virt_VirtualSystemManagementService.c Wed Jun 10 16:33:17 2009 -0700 @@ -213,9 +213,11 @@ ret = cu_get_array_prop(inst, "BootDevices", &bootlist); - if (ret != CMPI_RC_OK) + if (ret != CMPI_RC_OK) { CU_DEBUG("Failed to get BootDevices property"); - + domain->os_info.fv.bootlist_ct = 0; + goto out; + } bl_size = CMGetArrayCount(bootlist, &s); if (s.rc != CMPI_RC_OK) { @@ -256,6 +258,8 @@ domain->os_info.fv.bootlist_ct = bl_size; domain->os_info.fv.bootlist = tmp_str_arr; + out: + return 1; } From kaitlin at linux.vnet.ibm.com Wed Jun 10 23:36:22 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 10 Jun 2009 16:36:22 -0700 Subject: [Libvirt-cim] [PATCH 0 of 4] Adds disk bus type support for libvirt-cim In-Reply-To: References: Message-ID: <4A304376.1030800@linux.vnet.ibm.com> You'll also need to follow up with a patch that exposes the BusType attribute in the template RASDs. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 10 23:44:37 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 10 Jun 2009 16:44:37 -0700 Subject: [Libvirt-cim] [PATCH] Remove blank line from ServiceAccessBySAP.registration Message-ID: <820b3743356157ff48ed.1244677477@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1244677461 25200 # Node ID 820b3743356157ff48ed8259c5bfe1f16010ac60 # Parent 6760811fdd47a781cc3a93926bb4197681e14235 Remove blank line from ServiceAccessBySAP.registration The provider register script has trouble parsing the file with sfcb version sfcbd 1.3.4preview - I haven't seen this issue with older version of sfcb. Signed-off-by: Kaitlin Rupert diff -r 6760811fdd47 -r 820b37433561 schema/ServiceAccessBySAP.registration --- a/schema/ServiceAccessBySAP.registration Wed Jun 10 16:44:19 2009 -0700 +++ b/schema/ServiceAccessBySAP.registration Wed Jun 10 16:44:21 2009 -0700 @@ -3,4 +3,3 @@ Xen_ServiceAccessBySAP root/virt Virt_ServiceAccessBySAP Virt_ServiceAccessBySAP association KVM_ServiceAccessBySAP root/virt Virt_ServiceAccessBySAP Virt_ServiceAccessBySAP association LXC_ServiceAccessBySAP root/virt Virt_ServiceAccessBySAP Virt_ServiceAccessBySAP association - From rmaciel at linux.vnet.ibm.com Thu Jun 11 01:26:35 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 10 Jun 2009 22:26:35 -0300 Subject: [Libvirt-cim] [PATCH] Add support for iscsi storage pools In-Reply-To: <9ac4e06aa21334cf25b8.1242862386@localhost.localdomain> References: <9ac4e06aa21334cf25b8.1242862386@localhost.localdomain> Message-ID: <4A305D4B.7090000@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1242695586 25200 > # Node ID 9ac4e06aa21334cf25b8096663dca6fea74dccd8 > # Parent aa8e071730d2ce20064f1c0295a8005e31ef2cea > Add support for iscsi storage pools > > You will need a system with iSCSI connected storage to test this > > Signed-off-by: Kaitlin Rupert > > diff -r aa8e071730d2 -r 9ac4e06aa213 src/Virt_ResourcePoolConfigurationService.c > --- a/src/Virt_ResourcePoolConfigurationService.c Wed May 20 10:41:46 2009 -0700 > +++ b/src/Virt_ResourcePoolConfigurationService.c Mon May 18 18:13:06 2009 -0700 > @@ -179,6 +179,24 @@ > return NULL; > } > > +static const char *disk_iscsi_pool(CMPIInstance *inst, > + struct virt_pool *pool) > +{ > + const char *val = NULL; > + > + if (cu_get_str_prop(inst, "DevicePath", &val) != CMPI_RC_OK) > + return "Missing `DevicePath' property"; > + > + pool->pool_info.disk.device_path = strdup(val); > + > + if (cu_get_str_prop(inst, "Host", &val) != CMPI_RC_OK) > + return "Missing `Host' property"; > + > + pool->pool_info.disk.host = strdup(val); > + > + return NULL; > +} > + > static const char *disk_rasd_to_pool(CMPIInstance *inst, > struct virt_pool *pool) > { > @@ -201,6 +219,9 @@ > case DISK_POOL_NETFS: > msg = disk_netfs_pool(inst, pool); > break; > + case DISK_POOL_ISCSI: > + msg = disk_iscsi_pool(inst, pool); > + break; > default: > return "Storage pool type not supported"; > } > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Thu Jun 11 01:30:04 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 10 Jun 2009 22:30:04 -0300 Subject: [Libvirt-cim] [PATCH 1 of 4] Adds BusType prop to DiskRASD and support for it to the disk structure In-Reply-To: <4A30402C.6000704@linux.vnet.ibm.com> References: <5a873709bd07b283922a.1244339384@localhost.localdomain> <4A30402C.6000704@linux.vnet.ibm.com> Message-ID: <4A305E1C.8010608@linux.vnet.ibm.com> Hmmm... I didn't know. The bug specifically targets KVM (see bugzilla description) Kaitlin Rupert wrote: >> diff -r 6107c1026ed4 -r 5a873709bd07 >> schema/ResourceAllocationSettingData.mof >> --- a/schema/ResourceAllocationSettingData.mof Mon Jun 01 18:19:42 >> 2009 -0300 >> +++ b/schema/ResourceAllocationSettingData.mof Sat Jun 06 22:46:42 >> 2009 -0300 >> @@ -28,6 +28,9 @@ >> ValueMap {"0", "1"}, >> Values {"Disk", "CDROM"}] >> uint16 EmulatedType; >> + >> + [Description ("Bus type of the device")] >> + string BusType; >> }; > > Xen guests also support the BusType option. > -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Thu Jun 11 01:31:38 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 10 Jun 2009 22:31:38 -0300 Subject: [Libvirt-cim] [PATCH 3 of 4] Added support for BusType prop on xmlgen and xml_parse_test In-Reply-To: <4A304080.1030407@linux.vnet.ibm.com> References: <54abd208846613c4babf.1244339386@localhost.localdomain> <4A304080.1030407@linux.vnet.ibm.com> Message-ID: <4A305E7A.7040608@linux.vnet.ibm.com> Again, bug description only targets block devices. I don't even know if file type disks works with this property. Kaitlin Rupert wrote: >> >> static void print_dev_vcpu(struct virt_device *dev, >> diff -r efdd812a716e -r 54abd2088466 libxkutil/xmlgen.c >> --- a/libxkutil/xmlgen.c Sat Jun 06 22:46:51 2009 -0300 >> +++ b/libxkutil/xmlgen.c Sat Jun 06 22:46:51 2009 -0300 >> @@ -60,6 +60,8 @@ >> if (tmp == NULL) >> return XML_ERROR; >> xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST dev->virtual_dev); >> + if (dev->bus_type) >> + xmlNewProp(tmp, BAD_CAST "bus", BAD_CAST dev->bus_type); >> >> if (dev->readonly) >> xmlNewChild(disk, NULL, BAD_CAST "readonly", NULL); > > What about for file type disks? This only covers block type disks. -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Thu Jun 11 01:32:47 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Wed, 10 Jun 2009 22:32:47 -0300 Subject: [Libvirt-cim] [PATCH] Remove blank line from ServiceAccessBySAP.registration In-Reply-To: <820b3743356157ff48ed.1244677477@localhost.localdomain> References: <820b3743356157ff48ed.1244677477@localhost.localdomain> Message-ID: <4A305EBF.1090603@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1244677461 25200 > # Node ID 820b3743356157ff48ed8259c5bfe1f16010ac60 > # Parent 6760811fdd47a781cc3a93926bb4197681e14235 > Remove blank line from ServiceAccessBySAP.registration > > The provider register script has trouble parsing the file with sfcb version > sfcbd 1.3.4preview - I haven't seen this issue with older version of sfcb. > > Signed-off-by: Kaitlin Rupert > > diff -r 6760811fdd47 -r 820b37433561 schema/ServiceAccessBySAP.registration > --- a/schema/ServiceAccessBySAP.registration Wed Jun 10 16:44:19 2009 -0700 > +++ b/schema/ServiceAccessBySAP.registration Wed Jun 10 16:44:21 2009 -0700 > @@ -3,4 +3,3 @@ > Xen_ServiceAccessBySAP root/virt Virt_ServiceAccessBySAP Virt_ServiceAccessBySAP association > KVM_ServiceAccessBySAP root/virt Virt_ServiceAccessBySAP Virt_ServiceAccessBySAP association > LXC_ServiceAccessBySAP root/virt Virt_ServiceAccessBySAP Virt_ServiceAccessBySAP association > - > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Thu Jun 11 17:40:57 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Thu, 11 Jun 2009 14:40:57 -0300 Subject: [Libvirt-cim] [PATCH] Fix potiential seg fault if user doesn't specify BootDevices attribute In-Reply-To: References: Message-ID: <4A3141A9.7080609@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1244676797 25200 > # Node ID fc8f08ab36dac00f5e8bc3f2a1d160d1a57fdc78 > # Parent 6107c1026ed44acaf24ce9430a0e6dd2fa97f252 > Fix potiential seg fault if user doesn't specify BootDevices attribute > > If the user doesn't specify the BootDevices attribute, then we should return > from the bootord_vssd_to_domain(). Otherwise, the provider will seg fault when > it tries to get the length of the array. Since specifying a boot order is > optional, set the boot order count to 0 and return. > > Signed-off-by: Kaitlin Rupert > > diff -r 6107c1026ed4 -r fc8f08ab36da src/Virt_VirtualSystemManagementService.c > --- a/src/Virt_VirtualSystemManagementService.c Mon Jun 01 18:19:42 2009 -0300 > +++ b/src/Virt_VirtualSystemManagementService.c Wed Jun 10 16:33:17 2009 -0700 > @@ -213,9 +213,11 @@ > > ret = cu_get_array_prop(inst, "BootDevices", &bootlist); > > - if (ret != CMPI_RC_OK) > + if (ret != CMPI_RC_OK) { > CU_DEBUG("Failed to get BootDevices property"); > - > + domain->os_info.fv.bootlist_ct = 0; > + goto out; > + } > > bl_size = CMGetArrayCount(bootlist, &s); > if (s.rc != CMPI_RC_OK) { > @@ -256,6 +258,8 @@ > domain->os_info.fv.bootlist_ct = bl_size; > domain->os_info.fv.bootlist = tmp_str_arr; > > + out: > + > return 1; > } > > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Sun Jun 7 19:21:36 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sun, 07 Jun 2009 16:21:36 -0300 Subject: [Libvirt-cim] [PATCH 0 of 4] (#2) Adds disk bus type support for libvirt-cim Message-ID: From rmaciel at linux.vnet.ibm.com Sun Jun 7 19:21:38 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sun, 07 Jun 2009 16:21:38 -0300 Subject: [Libvirt-cim] [PATCH 2 of 4] Added support for BusType prop on device_parsing In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1244396373 10800 # Node ID d733a0ec8e105c7d315ffefdbfbb900a8e24d857 # Parent 981877c297fc9ca382d2c9bb83b9653317900641 Added support for BusType prop on device_parsing Signed-off-by: Richard Maciel imported patch dbus_type_parse diff -r 981877c297fc -r d733a0ec8e10 libxkutil/device_parsing.c --- a/libxkutil/device_parsing.c Sun Jun 07 14:39:24 2009 -0300 +++ b/libxkutil/device_parsing.c Sun Jun 07 14:39:33 2009 -0300 @@ -59,6 +59,7 @@ free(dev->driver); free(dev->source); free(dev->virtual_dev); + free(dev->bus_type); } static void cleanup_net_device(struct net_device *dev) @@ -246,6 +247,7 @@ ddev->virtual_dev = get_attr_value(child, "dev"); if (ddev->virtual_dev == NULL) goto err; + ddev->bus_type = get_attr_value(child, "bus"); } else if (XSTREQ(child->name, "readonly")) { ddev->readonly = true; } else if (XSTREQ(child->name, "shareable")) { @@ -666,6 +668,7 @@ DUP_FIELD(dev, _dev, dev.disk.driver); DUP_FIELD(dev, _dev, dev.disk.source); DUP_FIELD(dev, _dev, dev.disk.virtual_dev); + DUP_FIELD(dev, _dev, dev.disk.bus_type); dev->dev.disk.disk_type = _dev->dev.disk.disk_type; dev->dev.disk.readonly = _dev->dev.disk.readonly; dev->dev.disk.shareable = _dev->dev.disk.shareable; From rmaciel at linux.vnet.ibm.com Sun Jun 7 19:21:37 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sun, 07 Jun 2009 16:21:37 -0300 Subject: [Libvirt-cim] [PATCH 1 of 4] Adds BusType prop to DiskRASD and support for it to the disk structure In-Reply-To: References: Message-ID: <981877c297fc9ca382d2.1244402497@localhost.localdomain> # HG changeset patch # User Richard Maciel # Date 1244396364 10800 # Node ID 981877c297fc9ca382d2c9bb83b9653317900641 # Parent fc8f08ab36dac00f5e8bc3f2a1d160d1a57fdc78 Adds BusType prop to DiskRASD and support for it to the disk structure #2: - Xen also supports the BusType prop Signed-off-by: Richard Maciel diff -r fc8f08ab36da -r 981877c297fc libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Wed Jun 10 16:33:17 2009 -0700 +++ b/libxkutil/device_parsing.h Sun Jun 07 14:39:24 2009 -0300 @@ -39,6 +39,7 @@ enum {DISK_UNKNOWN, DISK_PHY, DISK_FILE, DISK_FS} disk_type; bool readonly; bool shareable; + char *bus_type; }; struct net_device { diff -r fc8f08ab36da -r 981877c297fc schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Wed Jun 10 16:33:17 2009 -0700 +++ b/schema/ResourceAllocationSettingData.mof Sun Jun 07 14:39:24 2009 -0300 @@ -13,6 +13,10 @@ ValueMap {"0", "1"}, Values {"Disk", "CDROM"}] uint16 EmulatedType; + + [Description ("Bus type of the device")] + string BusType; + }; [Description ("KVM virtual disk configuration"), @@ -28,6 +32,9 @@ ValueMap {"0", "1"}, Values {"Disk", "CDROM"}] uint16 EmulatedType; + + [Description ("Bus type of the device")] + string BusType; }; [Description ("LXC virtual disk configuration"), From rmaciel at linux.vnet.ibm.com Sun Jun 7 19:21:39 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sun, 07 Jun 2009 16:21:39 -0300 Subject: [Libvirt-cim] [PATCH 3 of 4] Added support for BusType prop on xmlgen and xml_parse_test In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1244396373 10800 # Node ID acfd07abeb2602bc0727ff29c05511748cd0a276 # Parent d733a0ec8e105c7d315ffefdbfbb900a8e24d857 Added support for BusType prop on xmlgen and xml_parse_test #2: BusType prop is available to file-based disks too Signed-off-by: Richard Maciel imported patch dbus_type_xml diff -r d733a0ec8e10 -r acfd07abeb26 libxkutil/xml_parse_test.c --- a/libxkutil/xml_parse_test.c Sun Jun 07 14:39:33 2009 -0300 +++ b/libxkutil/xml_parse_test.c Sun Jun 07 14:39:33 2009 -0300 @@ -97,6 +97,7 @@ print_value(d, "Driver", dev->dev.disk.driver); print_value(d, "Source", dev->dev.disk.source); print_value(d, "Virt Device", dev->dev.disk.virtual_dev); + print_value(d, "Bus Type", dev->dev.disk.bus_type); } static void print_dev_vcpu(struct virt_device *dev, diff -r d733a0ec8e10 -r acfd07abeb26 libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Sun Jun 07 14:39:33 2009 -0300 +++ b/libxkutil/xmlgen.c Sun Jun 07 14:39:33 2009 -0300 @@ -60,6 +60,8 @@ if (tmp == NULL) return XML_ERROR; xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST dev->virtual_dev); + if (dev->bus_type) + xmlNewProp(tmp, BAD_CAST "bus", BAD_CAST dev->bus_type); if (dev->readonly) xmlNewChild(disk, NULL, BAD_CAST "readonly", NULL); @@ -90,6 +92,9 @@ if (tmp == NULL) return XML_ERROR; xmlNewProp(tmp, BAD_CAST "dev", BAD_CAST dev->virtual_dev); + if (dev->bus_type) + xmlNewProp(tmp, BAD_CAST "bus", BAD_CAST dev->bus_type); + if (dev->readonly) xmlNewChild(disk, NULL, BAD_CAST "readonly", NULL); From rmaciel at linux.vnet.ibm.com Sun Jun 7 19:21:40 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Sun, 07 Jun 2009 16:21:40 -0300 Subject: [Libvirt-cim] [PATCH 4 of 4] Added support for BusType prop on RASD and VSMS In-Reply-To: References: Message-ID: # HG changeset patch # User Richard Maciel # Date 1244396373 10800 # Node ID fb5a4c3d15d5bad7d09a65dcf70899c1b4e32d9c # Parent acfd07abeb2602bc0727ff29c05511748cd0a276 Added support for BusType prop on RASD and VSMS #2: - If BusType prop cannot be fetched by VSMS, set its disk structure corresponding member to NULL Signed-off-by: Richard Maciel imported patch dbus_type_rasd diff -r acfd07abeb26 -r fb5a4c3d15d5 src/Virt_RASD.c --- a/src/Virt_RASD.c Sun Jun 07 14:39:33 2009 -0300 +++ b/src/Virt_RASD.c Sun Jun 07 14:39:33 2009 -0300 @@ -253,6 +253,11 @@ (CMPIValue *)dev->dev.disk.source, CMPI_chars); + CMSetProperty(inst, + "BusType", + (CMPIValue *)dev->dev.disk.bus_type, + CMPI_chars); + /* There's not much we can do here if we don't recognize the type, * so it seems that assuming 'disk' is a reasonable default */ diff -r acfd07abeb26 -r fb5a4c3d15d5 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Sun Jun 07 14:39:33 2009 -0300 +++ b/src/Virt_VirtualSystemManagementService.c Sun Jun 07 14:39:33 2009 -0300 @@ -603,6 +603,12 @@ else return "Invalid value for EmulatedType"; + free(dev->dev.disk.bus_type); + if (cu_get_str_prop(inst, "BusType", &val) != CMPI_RC_OK) + dev->dev.disk.bus_type = NULL; + else + dev->dev.disk.bus_type = strdup(val); + free(dev->id); dev->id = strdup(dev->dev.disk.virtual_dev); From kaitlin at linux.vnet.ibm.com Fri Jun 12 01:22:13 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Thu, 11 Jun 2009 18:22:13 -0700 Subject: [Libvirt-cim] Test Run Summary (Jun 12 2009): Xen on Red Hat Enterprise Linux Server release 5.3 (Tikanga) with Pegasus Message-ID: <4A31ADC5.7080000@linux.vnet.ibm.com> ================================================= Test Run Summary (Jun 12 2009): Xen on Red Hat Enterprise Linux Server release 5.3 (Tikanga) with Pegasus ================================================= Distro: Red Hat Enterprise Linux Server release 5.3 (Tikanga) Kernel: 2.6.18-138.el5virttest16xen libvirt: 0.3.3 Hypervisor: Xen 3.1.0 CIMOM: Pegasus 2.7.1 Libvirt-cim revision: 613 Libvirt-cim changeset: 1fcf330fadf8+ Cimtest revision: 708 Cimtest changeset: 930690e9dcbc ================================================= FAIL : 19 XFAIL : 1 SKIP : 14 PASS : 124 ----------------- Total : 158 ================================================= FAIL Test Summary: HostSystem - 03_hs_to_settdefcap.py: FAIL ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: FAIL ServiceAffectsElement - 01_forward.py: FAIL ServiceAffectsElement - 02_reverse.py: FAIL SettingsDefineCapabilities - 01_forward.py: FAIL VirtualSystemManagementService - 09_procrasd_persist.py: FAIL VirtualSystemManagementService - 11_define_memrasdunits.py: FAIL VirtualSystemManagementService - 12_referenced_config.py: FAIL VirtualSystemManagementService - 14_define_sys_disk.py: FAIL VirtualSystemMigrationService - 01_migratable_host.py: FAIL VirtualSystemMigrationService - 02_host_migrate_type.py: FAIL VirtualSystemMigrationService - 05_migratable_host_errs.py: FAIL VirtualSystemMigrationService - 06_remote_live_migration.py: FAIL VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: FAIL VirtualSystemSettingDataComponent - 02_reverse.py: FAIL VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: FAIL VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: FAIL VirtualSystemSnapshotService - 03_create_snapshot.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 33_suspend_reboot.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 02_nosystems.py: SKIP HostedAccessPoint - 01_forward.py: SKIP HostedAccessPoint - 02_reverse.py: SKIP KVMRedirectionSAP - 01_enum_KVMredSAP.py: SKIP LogicalDisk - 02_nodevs.py: SKIP NetworkPort - 03_user_netport.py: SKIP RASD - 05_disk_rasd_emu_type.py: SKIP RASD - 06_parent_net_pool.py: SKIP RASD - 07_parent_disk_pool.py: SKIP RedirectionService - 01_enum_crs.py: SKIP RedirectionService - 02_enum_crscap.py: SKIP RedirectionService - 03_RedirectionSAP_errs.py: SKIP ServiceAccessBySAP - 01_forward.py: SKIP ServiceAccessBySAP - 02_reverse.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: SKIP -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: PASS -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error CIM_ERR_NOT_SUPPORTED: State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): CIM_ERR_NOT_SUPPORTED: State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL Traceback (most recent call last): File "/usr/lib64/python2.4/logging/__init__.py", line 731, in emit msg = self.format(record) File "/usr/lib64/python2.4/logging/__init__.py", line 617, in format return fmt.format(record) File "/usr/lib64/python2.4/logging/__init__.py", line 405, in format record.message = record.getMessage() File "/usr/lib64/python2.4/logging/__init__.py", line 276, in getMessage msg = msg % self.args TypeError: int argument required Traceback (most recent call last): File "/usr/lib64/python2.4/logging/__init__.py", line 731, in emit msg = self.format(record) File "/usr/lib64/python2.4/logging/__init__.py", line 617, in format return fmt.format(record) File "/usr/lib64/python2.4/logging/__init__.py", line 405, in format record.message = record.getMessage() File "/usr/lib64/python2.4/logging/__init__.py", line 276, in getMessage msg = msg % self.args TypeError: int argument required Traceback (most recent call last): File "/usr/lib64/python2.4/logging/__init__.py", line 731, in emit msg = self.format(record) File "/usr/lib64/python2.4/logging/__init__.py", line 617, in format return fmt.format(record) File "/usr/lib64/python2.4/logging/__init__.py", line 405, in format record.message = record.getMessage() File "/usr/lib64/python2.4/logging/__init__.py", line 276, in getMessage msg = msg % self.args TypeError: int argument required CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: SKIP -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: SKIP -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: SKIP -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: SKIP -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: SKIP -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: SKIP ERROR - NetworkPool template RASDs not supported. Supported in version 867. -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: SKIP ERROR - DiskPool template RASDs not supported. Supported in version 863. -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: SKIP -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: SKIP -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: SKIP -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ERROR - Error in networkpool verification ERROR - Failed to destroy Virtual Network 'testpool' ERROR - Failed to undefine Virtual Network 'testpool' InvokeMethod(CreateChildResourcePool): CIM_ERR_NOT_SUPPORTED -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: FAIL ERROR - Error in diskpool verification InvokeMethod(CreateChildResourcePool): CIM_ERR_NOT_SUPPORTED -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: SKIP -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: SKIP -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: FAIL ERROR - Exception : 'Xen_ConsoleRedirectionService' returned 0 records, expected 1 CIM_ERR_INVALID_CLASS: Xen_ConsoleRedirectionService -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: FAIL ERROR - Exception : 'Xen_ConsoleredirectionService' returned 0 records, expected 1 CIM_ERR_INVALID_CLASS: Xen_ConsoleredirectionService -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: FAIL ERROR - Exception: 'NoneType' object has no attribute 'InstanceID' CIM_ERR_NOT_FOUND: No such instance (cimtest-diskpool) -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: PASS -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: FAIL ERROR - Exception: 'NoneType' object has no attribute 'InstanceID' ERROR - Unable to set template ProcRASD CIM_ERR_NOT_FOUND: Instance not found. -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: FAIL ERROR - Exception: 'NoneType' object has no attribute 'InstanceID' ERROR - KeyError : 'Xen_MemResourceAllocationSettingData' Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "11_define_memrasdunits.py", line 119, in main status = try_define(options, units, value, cxml) File "11_define_memrasdunits.py", line 60, in try_define if rasd_list[mrasd_cn] is None: KeyError: 'Xen_MemResourceAllocationSettingData' ERROR - None CIM_ERR_NOT_FOUND: Instance not found. -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: FAIL ERROR - Exception: 'NoneType' object has no attribute 'InstanceID' ERROR - 'Xen_NetResourceAllocationSettingData' CIM_ERR_NOT_FOUND: Instance not found. -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: FAIL ERROR - Exception: 'NoneType' object has no attribute 'InstanceID' ERROR - Unable to get template RASDs for rstest_disk_domain CIM_ERR_NOT_FOUND: Instance not found. -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: FAIL ERROR - Migration timed out.... ERROR - Increase timeout > 50 and try again.. Xen_ComputerSystem.CreationClassName="Xen_ComputerSystem",Name="dom_migrate" -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: FAIL ERROR - Got CIM error CIM_ERR_FAILED: Failed to lookup resulting system with return code 1 ERROR - CS instance not returned for dom_migrate. ERROR - Error start domain dom_migrate InvokeMethod(DefineSystem): CIM_ERR_FAILED: Failed to lookup resulting system CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). CIM_ERR_NOT_FOUND: No such instance (dom_migrate). -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: FAIL ERROR - Got CIM error CIM_ERR_FAILED: Unable to start domain with return code 1 ERROR - Error start domain dom_migration InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Unable to start domain -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: FAIL ERROR - Got CIM error CIM_ERR_FAILED: Unable to start domain with return code 1 ERROR - Error to start domain VM_frm_elm3b25.beaverton.ibm.com ERROR - Error setting up the guest InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Unable to start domain -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: FAIL ERROR - Got CIM error CIM_ERR_FAILED: Unable to start domain with return code 1 ERROR - Error to start domain VM_frm_elm3b25.beaverton.ibm.com ERROR - Error setting up the guest InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Unable to start domain -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: FAIL ERROR - Got CIM error CIM_ERR_FAILED: Unable to start domain with return code 1 ERROR - Failed to start the dom: VSSDC_dom InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Unable to start domain -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: FAIL ERROR - Got CIM error CIM_ERR_FAILED: Unable to start domain with return code 1 ERROR - Unable to start domain domu1 InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Unable to start domain -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: FAIL ERROR - Got CIM error CIM_ERR_FAILED: Unable to start domain with return code 1 ERROR - Unable to start domain domu1 InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Unable to start domain -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: FAIL ERROR - Got CIM error CIM_ERR_FAILED: Unable to start domain with return code 1 ERROR - Exception: Failed to start the defined domain: snapshot_vm ERROR - Failed to remove snapshot file for snapshot_vm InvokeMethod(RequestStateChange): CIM_ERR_FAILED: Unable to start domain -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Fri Jun 12 22:50:10 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 12 Jun 2009 15:50:10 -0700 Subject: [Libvirt-cim] [PATCH] Set SourceInstance attribute for ComputerSystem lifecycle indications Message-ID: <6cef00a4aca53a184b97.1244847010@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1244844711 25200 # Node ID 6cef00a4aca53a184b97ff3f87f059cb59beef5c # Parent 789961b4cb621eeb0b01115629b0895098f92686 Set SourceInstance attribute for ComputerSystem lifecycle indications This can be tested using the indication tester with the --print option to verify the SourceInstance attribute is set properly: python indication_tester.py -U user -P mypass -u localhost:5988 KVM_ComputerSystemCreatedIndication --print Once you are subscribed to the indication, you will then need to generate an indication by defining a guest through the providers. Signed-off-by: Kaitlin Rupert diff -r 789961b4cb62 -r 6cef00a4aca5 src/Virt_ComputerSystemIndication.c --- a/src/Virt_ComputerSystemIndication.c Sun Jun 07 14:39:33 2009 -0300 +++ b/src/Virt_ComputerSystemIndication.c Fri Jun 12 15:11:51 2009 -0700 @@ -277,6 +277,9 @@ break; } + CMSetProperty(ind, "SourceInstance", + (CMPIValue *)&affected_inst, CMPI_instance); + set_source_inst_props(broker, ctx, affected_op, ind); CU_DEBUG("Delivering Indication: %s", @@ -328,21 +331,19 @@ char *prefix, struct ind_args *args) { - bool rc; + bool rc = false; char *name = NULL; char *type_name = NULL; + char *cn = NULL; + CMPIObjectPath *op; CMPIInstance *affected_inst; + CMPIStatus s = {CMPI_RC_OK, NULL}; if (!lifecycle_enabled) { CU_DEBUG("CSI not enabled, skipping indication delivery"); return false; } - affected_inst = get_typed_instance(_BROKER, - prefix, - "ComputerSystem", - args->ns); - name = sys_name_from_xml(prev_dom.xml); CU_DEBUG("Name for system: '%s'", name); if (name == NULL) { @@ -350,6 +351,19 @@ goto out; } + cn = get_typed_class(prefix, "ComputerSystem"); + + op = CMNewObjectPath(_BROKER, args->ns, cn, &s); + if ((s.rc != CMPI_RC_OK) || CMIsNullObject(op)) + goto out; + + /* FIXME: This gets the CS instance after it has been modified. We also + need a way to get the instance before it was modified - that + value is used when setting the PreviousInstance value. */ + s = get_domain_by_name(_BROKER, op, name, &affected_inst); + if (s.rc != CMPI_RC_OK) + goto out; + switch (ind_type) { case CS_CREATED: type_name = "ComputerSystemCreatedIndication"; @@ -371,6 +385,7 @@ ind_type, type_name, prefix, args); out: + free(cn); free(name); return rc; } From kaitlin at linux.vnet.ibm.com Fri Jun 12 23:14:55 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 12 Jun 2009 16:14:55 -0700 Subject: [Libvirt-cim] [PATCH] Fix memory leak in Virt_ComputerSystem Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1244848480 25200 # Node ID df0dcd8f614f2dbd2f8f2973074396816c3fdb73 # Parent 6cef00a4aca53a184b97ff3f87f059cb59beef5c Fix memory leak in Virt_ComputerSystem Be sure to free the type variable once we're done with it. Signed-off-by: Kaitlin Rupert diff -r 6cef00a4aca5 -r df0dcd8f614f src/Virt_ComputerSystem.c --- a/src/Virt_ComputerSystem.c Fri Jun 12 15:11:51 2009 -0700 +++ b/src/Virt_ComputerSystem.c Fri Jun 12 16:14:40 2009 -0700 @@ -1091,7 +1091,7 @@ s = __state_change(name, state, reference); if (s.rc == CMPI_RC_OK) { - char *type; + char *type = NULL; type = get_typed_class(CLASSNAME(reference), "ComputerSystemModifiedIndication"); @@ -1102,6 +1102,8 @@ type, NAMESPACE(reference)); rc = 0; + + free(type); } out: CMReturnData(results, &rc, CMPI_uint32); From kaitlin at linux.vnet.ibm.com Sat Jun 13 00:13:58 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 12 Jun 2009 17:13:58 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] #3 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() Message-ID: <88d210d65d3e405deb4f.1244852038@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1243630742 25200 # Node ID 88d210d65d3e405deb4f4693643f8e1ec7d7c1e8 # Parent 9a2db4596db33348b860a0e2337e377f237b0692 [TEST] #3 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() Also update HostSystem 03 to support DiskPoolRASD / NetPoolRASD Updates from2 to 3: -Template DiskPoolRASDs now exist for disk and iscsi type pools - number of pools should now be 5, not 3. -Also, pass pool name to enum_volumes() -Fix error in enum_volumes() Updates from 1 to 2: -Add instance id to log message HostSystem/03_hs_to_settdefcap.py: 223 -Rework the DiskRASD portion of get_exp_disk_rasd_len() - only check for volumed if the libvirt version is greater than 0.4.1. Signed-off-by: Kaitlin Rupert diff -r 9a2db4596db3 -r 88d210d65d3e suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py --- a/suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py Wed Jun 03 13:00:09 2009 -0700 +++ b/suites/libvirt-cim/cimtest/HostSystem/03_hs_to_settdefcap.py Fri May 29 13:59:02 2009 -0700 @@ -204,8 +204,10 @@ else: rtype = { "%s_DiskResourceAllocationSettingData" % virt : 17, \ + "%s_DiskPoolResourceAllocationSettingData" % virt : 17, \ "%s_MemResourceAllocationSettingData" % virt : 4, \ "%s_NetResourceAllocationSettingData" % virt : 10, \ + "%s_NetPoolResourceAllocationSettingData" % virt : 10, \ "%s_ProcResourceAllocationSettingData" % virt : 3 } try: @@ -218,8 +220,8 @@ exp_len = get_exp_template_rasd_len(virt, server, ap['InstanceID']) if len(assoc_info) != exp_len: - logger.error("'%s' returned %i RASD objects instead of %i", - an, len(assoc_info), exp_len) + logger.error("%s returned %i RASD objects instead of %i for %s", + an, len(assoc_info), exp_len, ap['InstanceID']) return FAIL for inst in assoc_info: diff -r 9a2db4596db3 -r 88d210d65d3e suites/libvirt-cim/lib/XenKvmLib/pool.py --- a/suites/libvirt-cim/lib/XenKvmLib/pool.py Wed Jun 03 13:00:09 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/pool.py Fri May 29 13:59:02 2009 -0700 @@ -92,7 +92,7 @@ def enum_volumes(virt, server, pooln=default_pool_name): volume = 0 cmd = "virsh -c %s vol-list %s | sed -e '1,2 d' -e '$ d'" % \ - (virt2uri(virt), default_pool_name) + (virt2uri(virt), pooln) ret, out = run_remote(server ,cmd) if ret != 0: return None diff -r 9a2db4596db3 -r 88d210d65d3e suites/libvirt-cim/lib/XenKvmLib/rasd.py --- a/suites/libvirt-cim/lib/XenKvmLib/rasd.py Wed Jun 03 13:00:09 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/rasd.py Fri May 29 13:59:02 2009 -0700 @@ -31,6 +31,8 @@ from XenKvmLib.const import default_pool_name, default_network_name, \ get_provider_version from XenKvmLib.pool import enum_volumes +from XenKvmLib.xm_virt_util import virsh_version +from XenKvmLib.common_util import parse_instance_id pasd_cn = 'ProcResourceAllocationSettingData' nasd_cn = 'NetResourceAllocationSettingData' @@ -304,45 +306,77 @@ return rasd_insts, PASS -def get_exp_template_rasd_len(virt, ip, id): +def get_exp_disk_rasd_len(virt, ip, rev, id): libvirt_rasd_template_changes = 707 libvirt_rasd_new_changes = 805 libvirt_rasd_dpool_changes = 839 - curr_cim_rev, changeset = get_provider_version(virt, ip) + libvirt_ver = virsh_version(ip, virt) # For Diskpool, we have info 1 for each of Min, Max, Default, and Incr exp_base_num = 4 exp_cdrom = 4 - exp_len = exp_base_num + exp_len = exp_base_num - if 'DiskPool' in id: - if virt == 'Xen' or virt == 'XenFV': - # For Xen and XenFV, there is a template for PV and FV, so you - # end up with double the number of templates - xen_multi = 2 + if id == "DiskPool/0": + pool_types = 5 + return exp_base_num * pool_types + + if virt == 'Xen' or virt == 'XenFV': + # For Xen and XenFV, there is a template for PV and FV, so you + # end up with double the number of templates + xen_multi = 2 - if curr_cim_rev >= libvirt_rasd_template_changes and \ - curr_cim_rev < libvirt_rasd_new_changes: - exp_len = exp_base_num + exp_cdrom + if rev >= libvirt_rasd_template_changes and \ + rev < libvirt_rasd_new_changes: + exp_len = exp_base_num + exp_cdrom - elif curr_cim_rev >= libvirt_rasd_new_changes and \ - curr_cim_rev < libvirt_rasd_dpool_changes: - exp_len = (exp_base_num + exp_cdrom) * xen_multi + elif rev >= libvirt_rasd_dpool_changes and libvirt_ver >= '0.4.1': + volumes = enum_volumes(virt, ip) + exp_len = ((volumes * exp_base_num) + exp_cdrom) * xen_multi - elif curr_cim_rev >= libvirt_rasd_dpool_changes: - volumes = enum_volumes(virt, ip) - exp_len = ((volumes * exp_base_num) + exp_cdrom) * xen_multi + exp_len = (exp_base_num + exp_cdrom) * xen_multi - elif virt == 'KVM': - if curr_cim_rev >= libvirt_rasd_new_changes and \ - curr_cim_rev < libvirt_rasd_dpool_changes: - exp_len = exp_base_num + exp_cdrom + elif virt == 'KVM': + if rev >= libvirt_rasd_new_changes and \ + rev < libvirt_rasd_dpool_changes: + exp_len = exp_base_num + exp_cdrom - elif curr_cim_rev >= libvirt_rasd_dpool_changes: - volumes = enum_volumes(virt, ip) - exp_len = (volumes * exp_base_num) + exp_cdrom + elif rev >= libvirt_rasd_dpool_changes: + id = parse_instance_id(id) + volumes = enum_volumes(virt, ip, id[1]) + exp_len = (volumes * exp_base_num) + exp_cdrom return exp_len +def get_exp_net_rasd_len(virt, rev, id): + net_rasd_template_changes = 861 + + exp_base_num = 4 + + if id == "NetworkPool/0": + pool_types = 3 + forward_modes = 2 + + return (exp_base_num * pool_types) + (exp_base_num * forward_modes) + + if rev >= net_rasd_template_changes: + dev_types = 2 + + return exp_base_num * dev_types + +def get_exp_template_rasd_len(virt, ip, id): + curr_cim_rev, changeset = get_provider_version(virt, ip) + + exp_len = 4 + + if 'DiskPool' in id: + exp_len = get_exp_disk_rasd_len(virt, ip, curr_cim_rev, id) + + elif 'NetworkPool' in id: + exp_len = get_exp_net_rasd_len(virt, curr_cim_rev, id) + + return exp_len + + From rmaciel at linux.vnet.ibm.com Mon Jun 15 21:33:49 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Mon, 15 Jun 2009 18:33:49 -0300 Subject: [Libvirt-cim] [PATCH] Fix memory leak in Virt_ComputerSystem In-Reply-To: References: Message-ID: <4A36BE3D.5030902@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1244848480 25200 > # Node ID df0dcd8f614f2dbd2f8f2973074396816c3fdb73 > # Parent 6cef00a4aca53a184b97ff3f87f059cb59beef5c > Fix memory leak in Virt_ComputerSystem > > Be sure to free the type variable once we're done with it. > > Signed-off-by: Kaitlin Rupert > > diff -r 6cef00a4aca5 -r df0dcd8f614f src/Virt_ComputerSystem.c > --- a/src/Virt_ComputerSystem.c Fri Jun 12 15:11:51 2009 -0700 > +++ b/src/Virt_ComputerSystem.c Fri Jun 12 16:14:40 2009 -0700 > @@ -1091,7 +1091,7 @@ > s = __state_change(name, state, reference); > > if (s.rc == CMPI_RC_OK) { > - char *type; > + char *type = NULL; > > type = get_typed_class(CLASSNAME(reference), > "ComputerSystemModifiedIndication"); > @@ -1102,6 +1102,8 @@ > type, > NAMESPACE(reference)); > rc = 0; > + > + free(type); > } > out: > CMReturnData(results, &rc, CMPI_uint32); > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Tue Jun 16 01:44:35 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Mon, 15 Jun 2009 22:44:35 -0300 Subject: [Libvirt-cim] [PATCH] Set SourceInstance attribute for ComputerSystem lifecycle indications In-Reply-To: <6cef00a4aca53a184b97.1244847010@localhost.localdomain> References: <6cef00a4aca53a184b97.1244847010@localhost.localdomain> Message-ID: <4A36F903.8020607@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1244844711 25200 > # Node ID 6cef00a4aca53a184b97ff3f87f059cb59beef5c > # Parent 789961b4cb621eeb0b01115629b0895098f92686 > Set SourceInstance attribute for ComputerSystem lifecycle indications > > This can be tested using the indication tester with the --print option to verify > the SourceInstance attribute is set properly: > > python indication_tester.py -U user -P mypass -u localhost:5988 KVM_ComputerSystemCreatedIndication --print > > Once you are subscribed to the indication, you will then need to generate an > indication by defining a guest through the providers. > > Signed-off-by: Kaitlin Rupert > > diff -r 789961b4cb62 -r 6cef00a4aca5 src/Virt_ComputerSystemIndication.c > --- a/src/Virt_ComputerSystemIndication.c Sun Jun 07 14:39:33 2009 -0300 > +++ b/src/Virt_ComputerSystemIndication.c Fri Jun 12 15:11:51 2009 -0700 > @@ -277,6 +277,9 @@ > break; > } > > + CMSetProperty(ind, "SourceInstance", > + (CMPIValue *)&affected_inst, CMPI_instance); > + > set_source_inst_props(broker, ctx, affected_op, ind); > > CU_DEBUG("Delivering Indication: %s", > @@ -328,21 +331,19 @@ > char *prefix, > struct ind_args *args) > { > - bool rc; > + bool rc = false; > char *name = NULL; > char *type_name = NULL; > + char *cn = NULL; > + CMPIObjectPath *op; > CMPIInstance *affected_inst; > + CMPIStatus s = {CMPI_RC_OK, NULL}; > > if (!lifecycle_enabled) { > CU_DEBUG("CSI not enabled, skipping indication delivery"); > return false; > } > > - affected_inst = get_typed_instance(_BROKER, > - prefix, > - "ComputerSystem", > - args->ns); > - > name = sys_name_from_xml(prev_dom.xml); > CU_DEBUG("Name for system: '%s'", name); > if (name == NULL) { > @@ -350,6 +351,19 @@ > goto out; > } > > + cn = get_typed_class(prefix, "ComputerSystem"); > + > + op = CMNewObjectPath(_BROKER, args->ns, cn, &s); > + if ((s.rc != CMPI_RC_OK) || CMIsNullObject(op)) > + goto out; > + > + /* FIXME: This gets the CS instance after it has been modified. We also > + need a way to get the instance before it was modified - that > + value is used when setting the PreviousInstance value. */ > + s = get_domain_by_name(_BROKER, op, name, &affected_inst); > + if (s.rc != CMPI_RC_OK) > + goto out; > + > switch (ind_type) { > case CS_CREATED: > type_name = "ComputerSystemCreatedIndication"; > @@ -371,6 +385,7 @@ > ind_type, type_name, prefix, args); > > out: > + free(cn); > free(name); > return rc; > } > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Tue Jun 16 12:35:19 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Tue, 16 Jun 2009 05:35:19 -0700 Subject: [Libvirt-cim] [PATCH 0 of 3] Adding netfs diskpool creation to RPCS/08_CreateDiskResourcePool.py tc Message-ID: Tested on F10 with KVM and current sources. Signed-off-by: Deepti B. Kalakeri From deeptik at linux.vnet.ibm.com Tue Jun 16 12:35:20 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Tue, 16 Jun 2009 05:35:20 -0700 Subject: [Libvirt-cim] [PATCH 1 of 3] Modifying vxml.py to include netfs related info In-Reply-To: References: Message-ID: # HG changeset patch # User Deepti B. Kalakeri # Date 1245155432 25200 # Node ID f5e5d4436bff6320c18bb59b0d307969cd5c4545 # Parent 9a2db4596db33348b860a0e2337e377f237b0692 Modifying vxml.py to include netfs related info. Tested on F10 with KVM and current sources. Signed-off-by: Deepti B. Kalakeri diff -r 9a2db4596db3 -r f5e5d4436bff suites/libvirt-cim/lib/XenKvmLib/vxml.py --- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py Wed Jun 03 13:00:09 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py Tue Jun 16 05:30:32 2009 -0700 @@ -331,10 +331,15 @@ dpoolname = self.get_value_xpath('/pool/name') return dpoolname - def xml_get_pool_attr_list(self): + def xml_get_pool_attr_list(self, mode_type=1): pool_attr_list = [] poolpath = self.get_value_xpath('/pool/target/path') pool_attr_list.append(poolpath) + if mode_type == 3: #Netfs + host = self.get_value_xpath('/pool/source/host/@name') + pool_attr_list.append(host) + src_dir = self.get_value_xpath('/pool/source/dir/@path') + pool_attr_list.append(src_dir) return pool_attr_list From deeptik at linux.vnet.ibm.com Tue Jun 16 12:35:21 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Tue, 16 Jun 2009 05:35:21 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] Adding nfs_netfs_setup() to configure nfs server setup In-Reply-To: References: Message-ID: <4eb38964b6e6bdd75790.1245155721@elm3a148.beaverton.ibm.com> # HG changeset patch # User Deepti B. Kalakeri # Date 1245155523 25200 # Node ID 4eb38964b6e6bdd757904d51b83ff115b02dd29a # Parent f5e5d4436bff6320c18bb59b0d307969cd5c4545 Adding nfs_netfs_setup() to configure nfs server setup... 1) nfs_netfs_setup() configures the nfs server and makes necessary arrangements for netfs pool creation. 2) nfs_config() setups nfs server 3) netfs_config() makes necessary arrangements for netfs pool creation. 4) get_nfs_bin() gets proper nfs server binary 5) clean_temp_files() cleans the temp dir created for nfs mount 6) netfs_cleanup() cleans up removes the dir created, restarts the nfs server.. Tested on F10 with KVM and current sources. Signed-off-by: Deepti B. Kalakeri diff -r f5e5d4436bff -r 4eb38964b6e6 suites/libvirt-cim/lib/XenKvmLib/common_util.py --- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py Tue Jun 16 05:30:32 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py Tue Jun 16 05:32:03 2009 -0700 @@ -24,6 +24,7 @@ import pywbem import random from time import sleep +from tempfile import mkdtemp from distutils.file_util import move_file from XenKvmLib.test_xml import * from XenKvmLib.test_doms import * @@ -34,7 +35,7 @@ from XenKvmLib.classes import get_typed_class from CimTest.Globals import logger, CIM_ERROR_ENUMERATE, \ CIM_ERROR_GETINSTANCE -from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC +from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC, SKIP from XenKvmLib.xm_virt_util import diskpool_list, virsh_version, net_list,\ domain_list, virt2uri, net_destroy from XenKvmLib.vxml import PoolXML, NetXML @@ -435,3 +436,113 @@ return guest_name, devid, PASS + +def get_nfs_bin(server): + cmd = "cat /etc/issue | grep -v ^$ | egrep 'Red Hat|Fedora'" + rc, out = utils.run_remote(server, cmd) + if rc != 0: + #SLES + nfs_server_bin = "/etc/init.d/nfsserver" + else: + nfs_server_bin = "/etc/init.d/nfs" + + return nfs_server_bin + +def nfs_config(server, nfs_server_bin): + cmd = "ps aux | grep -v -e nfsiod -e grep | grep nfsd" + rc, out = utils.run_remote(server, cmd) + # if NFS services is not found on the machine, start it.. + if rc != PASS : + nfs_server_cmd = "%s start" % nfs_server_bin + rc, out = utils.run_remote(server, nfs_server_cmd) + if rc != PASS: + logger.error("Could not start the nfsserver on '%s'", server) + if not os.path.exists(nfs_server_bin): + logger.error("NFS server '%s' does not seem to be installed "\ + "on '%s'", nfs_server_bin, server) + return SKIP + logger.error("NFS server seems to have problem on '%s'", server) + return FAIL + return PASS + +def clean_temp_files(server, src_dir_for_mnt, dest_dir_to_mnt): + cmd = "rm -rf %s %s" % (src_dir_for_mnt, dest_dir_to_mnt) + rc, out = utils.run_remote(server, cmd) + if rc != PASS: + logger.error("Please delete %s %s if present on %s", + src_dir_for_mnt, dest_dir_to_mnt, server) + +def netfs_cleanup(server, pool_attr): + src_dir = os.path.basename(pool_attr['SourceDirectory']) + dst_dir = pool_attr['Path'] + + # Remove the dir created .. + clean_temp_files(server, src_dir, dst_dir) + + # Remove the entry from the /etc/exports + ifile = "/etc/exports" + cmd = "sed -i '/%s/d' %s" % (src_dir, ifile) + rc, out = utils.run_remote(server, cmd) + if rc != PASS: + logger.error("Unable to delete the line containing '%s' from '%s'", + src_dir, ifile) + else: + # restart the nfs server + nfs_server_bin = get_nfs_bin(server) + nfs_server_cmd = "%s restart" % nfs_server_bin + rc, out = utils.run_remote(server, nfs_server_cmd) + if rc != PASS: + logger.error("Could not restart NFS server on '%s'" % server) + +def netfs_config(server, nfs_server_bin): + src_dir_for_mnt = mkdtemp() + dest_dir_to_mnt = mkdtemp() + fd = open("/etc/exports", "a") + fd.seek(0) + line = "\n %s %s(rw)" %(src_dir_for_mnt, server) + fd.write(line) + fd.close() + + try: + # Need to give suitable perm, otherwise netfs pool-create fails + cmd = "chmod go+rx %s %s" % (src_dir_for_mnt, dest_dir_to_mnt) + rc, out = utils.run_remote(server, cmd) + if rc != 0: + raise Exception("Failed to chmod on %s %s" \ + % (src_dir_for_mnt, dest_dir_to_mnt)) + + # Restart the nfs server.... + nfs_server_cmd = "%s restart" % nfs_server_bin + rc, out = utils.run_remote(server, nfs_server_cmd) + if rc != PASS: + raise Exception("Could not restart NFS server on '%s'" % server) + + # NFS mount src_dir_for_mnt + cmd = "mount -t nfs %s:%s %s" %(server, src_dir_for_mnt, dest_dir_to_mnt) + rc, out = utils.run_remote(server, cmd) + if rc != 0: + raise Exception("Failed to NFS mount %s on %s:%s " \ + % (dest_dir_to_mnt, server, src_dir_for_mnt)) + + except Exception, detail: + logger.error("Exception details : %s", detail) + clean_temp_files(server, src_dir_for_mnt, dest_dir_to_mnt) + return FAIL, None, None + + return PASS, src_dir_for_mnt, dest_dir_to_mnt + +def nfs_netfs_setup(server): + nfs_server_bin = get_nfs_bin(server) + + # Before going ahead verify that nfs server is available on machine.. + ret = nfs_config(server, nfs_server_bin) + if ret != PASS: + logger.error("Failed to configure NFS on '%s'", server) + return FAIL, None, None + + ret, src_dir, destr_dir = netfs_config(server, nfs_server_bin) + if ret != PASS: + logger.error("Failed to configure netfs on '%s'", server) + return FAIL, None, None + + return PASS, src_dir, destr_dir From deeptik at linux.vnet.ibm.com Tue Jun 16 12:35:22 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Tue, 16 Jun 2009 05:35:22 -0700 Subject: [Libvirt-cim] [PATCH 3 of 3] Adding netfs diskpool creation to RPCS/08_CreateDiskResourcePool.py tc In-Reply-To: References: Message-ID: <775f81388994fa3ddb72.1245155722@elm3a148.beaverton.ibm.com> # HG changeset patch # User Deepti B. Kalakeri # Date 1245155631 25200 # Node ID 775f81388994fa3ddb72b2740389b1eeec8c0b13 # Parent 4eb38964b6e6bdd757904d51b83ff115b02dd29a Adding netfs diskpool creation to RPCS/08_CreateDiskResourcePool.py tc.. Tested on F10 with KVM and current sources. Signed-off-by: Deepti B. Kalakeri diff -r 4eb38964b6e6 -r 775f81388994 suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/08_CreateDiskResourcePool.py --- a/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/08_CreateDiskResourcePool.py Tue Jun 16 05:32:03 2009 -0700 +++ b/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/08_CreateDiskResourcePool.py Tue Jun 16 05:33:51 2009 -0700 @@ -52,49 +52,78 @@ from CimTest.ReturnCodes import FAIL, PASS from XenKvmLib.const import do_main, platform_sup from XenKvmLib.classes import get_typed_class -from XenKvmLib.common_util import destroy_diskpool +from XenKvmLib.common_util import destroy_diskpool, nfs_netfs_setup, \ + netfs_cleanup from XenKvmLib.pool import create_pool, verify_pool, undefine_diskpool -test_pool = "diskpool" -dp_types = { "DISK_POOL_DIR" : 1 } - +dp_types = { "DISK_POOL_DIR" : 1, "DISK_POOL_NETFS" : 3} + +def get_pool_attr(server, pool_type): + pool_attr = { "Path" : "/tmp" } + if pool_type == dp_types['DISK_POOL_NETFS']: + status , src_mnt_dir, dir_mnt_dir = nfs_netfs_setup(server) + if status != PASS: + logger.error("Failed to get pool_attr for '%s' diskpool type", + pool_type) + return FAIL, pool_attr + + pool_attr['SourceDirectory'] = src_mnt_dir + pool_attr['Host'] = server + pool_attr['Path'] = dir_mnt_dir + + return PASS, pool_attr + @do_main(platform_sup) def main(): options = main.options server = options.ip virt = options.virt - pool_attr = { "Path" : "/tmp" } # For now the test case support only the creation of - # dir type disk pool, later change to fs and netfs etc + # dir type disk pool, netfs later change to fs and disk pooltypes etc for key, value in dp_types.iteritems(): - status = create_pool(server, virt, test_pool, pool_attr, - mode_type=value, pool_type= "DiskPool") - if status != PASS: - logger.error("Failed to create '%s' type diskpool '%s'", - key, test_pool) + try: + logger.info("Verifying '%s'.....", key) + test_pool = key + status, pool_attr = get_pool_attr(server, value) + if status != PASS: + return FAIL + + status = create_pool(server, virt, test_pool, pool_attr, + mode_type=value, pool_type= "DiskPool") + + if status != PASS: + raise Excpetion("Failed to create '%s' type diskpool '%s'" \ + % (key, test_pool)) + + status = verify_pool(server, virt, test_pool, pool_attr, + mode_type=value, pool_type="DiskPool") + if status != PASS: + destroy_diskpool(server, virt, test_pool) + undefine_diskpool(server, virt, test_pool) + raise Exception("Error in diskpool verification") + + status = destroy_diskpool(server, virt, test_pool) + if status != PASS: + raise Exception("Unable to destroy diskpool '%s'" \ + % test_pool) + + status = undefine_diskpool(server, virt, test_pool) + if status != PASS: + raise Exception("Unable to undefine diskpool '%s'" \ + % test_pool) + + if key == 'DISK_POOL_NETFS': + netfs_cleanup(server, pool_attr) + + status = PASS + + except Exception, details: + logger.error("Exception details: %s", details) + if key == 'DISK_POOL_NETFS': + netfs_cleanup(server, pool_attr) return FAIL - - status = verify_pool(server, virt, test_pool, pool_attr, - mode_type=value, pool_type="DiskPool") - if status != PASS: - logger.error("Error in diskpool verification") - destroy_diskpool(server, virt, test_pool) - undefine_diskpool(server, virt, test_pool) - return FAIL - - status = destroy_diskpool(server, virt, test_pool) - if status != PASS: - logger.error("Unable to destroy diskpool '%s'", test_pool) - return FAIL - - status = undefine_diskpool(server, virt, test_pool) - if status != PASS: - logger.error("Unable to undefine diskpool '%s'", test_pool) - return FAIL - - status = PASS return status From kaitlin at linux.vnet.ibm.com Tue Jun 16 18:01:22 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 16 Jun 2009 14:01:22 -0400 Subject: [Libvirt-cim] Test Run Summary (Jun 16 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb Message-ID: <200906161801.n5GI1MHK010521@d01av02.pok.ibm.com> ================================================= Test Run Summary (Jun 16 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb ================================================= Distro: Fedora release 11.90 (Rawhide) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.6.4 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 898 Libvirt-cim changeset: a57141febd4a Cimtest revision: 703 Cimtest changeset: 88d210d65d3e ================================================= FAIL : 6 XFAIL : 3 SKIP : 7 PASS : 142 ----------------- Total : 158 ================================================= FAIL Test Summary: ComputerSystemIndication - 01_created_indication.py: FAIL RASD - 07_parent_disk_pool.py: FAIL ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL VirtualSystemManagementService - 06_addresource.py: FAIL VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: VSSD - 02_bootldr.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: FAIL ERROR - Exception : Request Failed: 200 Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "01_created_indication.py", line 146, in main sub_list, ind_names, dict = sub_ind(ip, virt) File "01_created_indication.py", line 60, in sub_ind sub.subscribe(dict['default_url'], dict['default_auth']) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 345, in subscribe "CreateInstance", auth_hdr) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 330, in __do_cimpost (resp.status, resp.reason)) Exception: Request Failed: 200 ERROR - None -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: PASS -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: PASS -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: FAIL ERROR - Exception details: Got 5 recs instead of 3 -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'Pool with that name already exists') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): Pool with that name already exists -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'*** Provider Virt_ResourcePoolConfigurationService(19695) exiting due to a SIGSEGV signal ') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): *** Provider Virt_ResourcePoolConfigurationService(19695) exiting due to a SIGSEGV signal -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: FAIL ERROR - Failed to create Virtual Network 'cimtest-networkpool87' ERROR - Unable to create network pool -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ERROR - CIMError : (1, u'Unable to parse embedded object') Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "15_mod_system_settings.py", line 103, in main ret = service.ModifySystemSettings(SystemSettings=vssd) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 32, in __call__ return self.__invoker(self.__name, args) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 44, in __invoke return self.conn.InvokeMethod(method, self.inst, **params) File "/usr/lib/python2.5/site-packages/pywbem/cim_operations.py", line 801, in InvokeMethod result = self.methodcall(MethodName, obj, **params) File "/usr/lib/python2.5/site-packages/pywbem/cim_operations.py", line 362, in methodcall raise CIMError(code, tt[0][1]['DESCRIPTION']) CIMError: (1, u'Unable to parse embedded object') ERROR - None InvokeMethod(ModifySystemSettings): Unable to parse embedded object -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:ps2 No such instance (no device domain/mouse:ps2) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From kaitlin at linux.vnet.ibm.com Tue Jun 16 18:06:23 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 16 Jun 2009 14:06:23 -0400 Subject: [Libvirt-cim] Test Run Summary (Jun 16 2009): LXC on Fedora release 11.90 (Rawhide) with sfcb Message-ID: <200906161806.n5GI6NHT017000@d01av04.pok.ibm.com> ================================================= Test Run Summary (Jun 16 2009): LXC on Fedora release 11.90 (Rawhide) with sfcb ================================================= Distro: Fedora release 11.90 (Rawhide) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.6.4 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 898 Libvirt-cim changeset: a57141febd4a Cimtest revision: 703 Cimtest changeset: 88d210d65d3e ================================================= FAIL : 5 XFAIL : 9 SKIP : 39 PASS : 105 ----------------- Total : 158 ================================================= FAIL Test Summary: RASD - 01_verify_rasd_fields.py: FAIL ServiceAffectsElement - 01_forward.py: FAIL ServiceAffectsElement - 02_reverse.py: FAIL SettingsDefine - 02_reverse.py: FAIL SystemDevice - 01_forward.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 06_paused_active_suspend.py: XFAIL ComputerSystem - 23_pause_pause.py: XFAIL ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL HostSystem - 02_hostsystem_to_rasd.py: XFAIL HostedDependency - 03_enabledstate.py: XFAIL VSSD - 04_vssd_to_rasd.py: XFAIL VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP ComputerSystemIndication - 01_created_indication.py: SKIP ElementAllocatedFromPool - 03_reverse_errs.py: SKIP ElementAllocatedFromPool - 04_forward_errs.py: SKIP LogicalDisk - 01_disk.py: SKIP LogicalDisk - 03_ld_gi_errs.py: SKIP NetworkPort - 01_netport.py: SKIP NetworkPort - 02_np_gi_errors.py: SKIP NetworkPort - 03_user_netport.py: SKIP Processor - 01_processor.py: SKIP Processor - 02_definesys_get_procs.py: SKIP Processor - 03_proc_gi_errs.py: SKIP RASD - 04_disk_rasd_size.py: SKIP RASD - 05_disk_rasd_emu_type.py: SKIP RASD - 06_parent_net_pool.py: SKIP RASD - 07_parent_disk_pool.py: SKIP ResourceAllocationFromPool - 05_RAPF_err.py: SKIP ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP VSSD - 02_bootldr.py: SKIP VirtualSystemManagementService - 06_addresource.py: SKIP VirtualSystemManagementService - 08_modifyresource.py: SKIP VirtualSystemManagementService - 09_procrasd_persist.py: SKIP VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP VirtualSystemManagementService - 12_referenced_config.py: SKIP VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP VirtualSystemManagementService - 16_removeresource.py: SKIP VirtualSystemManagementService - 17_removeresource_neg.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception variable: Unable pause dom 'DomST1' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception: 'Unable pause dom 'cs_test_domain'' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: SKIP -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned CrossClass_GuestDom/mouse:xen instead of CrossClass_GuestDom/mouse:usb Class not found Bug:<00009> -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: XFAIL ERROR - Exception: (1, u'Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend') ERROR - Failed to suspend the dom: hd_domain1 InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: SKIP -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: SKIP -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: SKIP -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: SKIP -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: SKIP -------------------------------------------------------------------- Processor - 01_processor.py: SKIP -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: SKIP -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: SKIP -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: FAIL ERROR - 6 assoc_info != 5 RASD insts -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: SKIP -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: SKIP -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: SKIP -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: SKIP -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: SKIP -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: FAIL ERROR - Got more than one record for 'LXC_PointingDevice' ERROR - Exception in fn verify_assoc() ERROR - Exception details: Failed to get insts for domain SAE_dom -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: FAIL ERROR - Got more than one record for 'LXC_PointingDevice' ERROR - Exception : Failed to get init_list -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: FAIL ERROR - Got 6 RASDs, expected 5 ERROR - Failed to verify RASDs -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: FAIL ERROR - Device Class mismatch ERROR - Exception Expected Device class list: ['LXC_Memory', 'LXC_Processor'] Got: [u'LXC_DisplayController', u'LXC_LogicalDisk', u'LXC_Memory', u'LXC_PointingDevice'] -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL ERROR - rstest_domain not updated properly. ERROR - Exp AutomaticRecoveryAction=3, got 2 Bug:<00008> -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From snmishra at us.ibm.com Tue Jun 16 21:31:51 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Tue, 16 Jun 2009 14:31:51 -0700 Subject: [Libvirt-cim] [PATCH] Add support for bridge type NICs Message-ID: <27f3f7f05eb78bd00945.1245187911@elm3b24.beaverton.ibm.com> # HG changeset patch # User snmishra at us.ibm.com # Date 1245184531 25200 # Node ID 27f3f7f05eb78bd009451009ac7c472f0ffa9332 # Parent a57141febd4a5b6dbae71e96b16264dd1240642d Add support for bridge type NICs. Code was added to parse input and generate libvirt XML to support bridge devices. Net_RASD mof was updated to add bridge device name. Signed-off-by: Sharad Mishra diff -r a57141febd4a -r 27f3f7f05eb7 libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Fri Jun 12 16:14:40 2009 -0700 +++ b/libxkutil/device_parsing.h Tue Jun 16 13:35:31 2009 -0700 @@ -47,6 +47,7 @@ char *mac; char *source; char *model; + char *name; }; struct mem_device { diff -r a57141febd4a -r 27f3f7f05eb7 libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Fri Jun 12 16:14:40 2009 -0700 +++ b/libxkutil/xmlgen.c Tue Jun 16 13:35:31 2009 -0700 @@ -168,7 +168,12 @@ tmp = xmlNewChild(nic, NULL, BAD_CAST "source", NULL); if (tmp == NULL) return XML_ERROR; - xmlNewProp(tmp, BAD_CAST src_type, BAD_CAST dev->source); + if (STREQC(src_type, "bridge")) { + xmlNewProp(tmp, BAD_CAST src_type, BAD_CAST dev->name); + } else { + xmlNewProp(tmp, BAD_CAST src_type, + BAD_CAST dev->source); + } } return NULL; @@ -225,7 +230,7 @@ if (STREQ(dev->dev.net.type, "network")) msg = set_net_source(nic, net, "network"); else if (STREQ(dev->dev.net.type, "bridge")) - msg = bridge_net_to_xml(root, net); + msg = bridge_net_to_xml(nic, net); else if (STREQ(dev->dev.net.type, "user")) continue; else diff -r a57141febd4a -r 27f3f7f05eb7 schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Fri Jun 12 16:14:40 2009 -0700 +++ b/schema/ResourceAllocationSettingData.mof Tue Jun 16 13:35:31 2009 -0700 @@ -57,6 +57,10 @@ [Description ("Interface type")] string NetworkType; + [Description ("Bridge name")] + string NetworkName; + + }; [Description ("KVM virtual network configuration"), @@ -68,6 +72,9 @@ [Description ("Interface type")] string NetworkType; + [Description ("Bridge name")] + string NetworkName; + }; [Description ("LXC virtual network configuration"), diff -r a57141febd4a -r 27f3f7f05eb7 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Fri Jun 12 16:14:40 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Tue Jun 16 13:35:31 2009 -0700 @@ -59,6 +59,7 @@ #define DEFAULT_MAC_PREFIX "00:16:3e" #define DEFAULT_XEN_WEIGHT 1024 +#define BRIDGE_TYPE "bridge" const static CMPIBroker *_BROKER; @@ -553,7 +554,20 @@ dev->id = strdup(dev->dev.net.mac); free(dev->dev.net.type); - dev->dev.net.type = strdup("network"); + if (cu_get_str_prop(inst, "NetworkType", &val) == CMPI_RC_OK) { + if (STREQC(val, BRIDGE_TYPE)) { + dev->dev.net.type = strdup(BRIDGE_TYPE); + if (cu_get_str_prop(inst, "NetworkName", &val) == + CMPI_RC_OK) { + dev->dev.net.name = strdup(val); + } else { + return "No Network bridge name specified"; + } + } else { + dev->dev.net.type = strdup("network"); + } + } + if (cu_get_str_prop(inst, "PoolID", &val) != CMPI_RC_OK) val = _default_network(inst, ns); From kaitlin at linux.vnet.ibm.com Tue Jun 16 22:45:13 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 16 Jun 2009 15:45:13 -0700 Subject: [Libvirt-cim] [PATCH 3 of 3] Adding netfs diskpool creation to RPCS/08_CreateDiskResourcePool.py tc In-Reply-To: <775f81388994fa3ddb72.1245155722@elm3a148.beaverton.ibm.com> References: <775f81388994fa3ddb72.1245155722@elm3a148.beaverton.ibm.com> Message-ID: <4A382079.7050702@linux.vnet.ibm.com> Deepti B. Kalakeri wrote: > # HG changeset patch > # User Deepti B. Kalakeri > # Date 1245155631 25200 > # Node ID 775f81388994fa3ddb72b2740389b1eeec8c0b13 > # Parent 4eb38964b6e6bdd757904d51b83ff115b02dd29a > Adding netfs diskpool creation to RPCS/08_CreateDiskResourcePool.py tc.. > > Tested on F10 with KVM and current sources. You'll want to make sure you branch the test. Otherwise, it fails with the following on older versions of libvirt: ERROR - Exception in create_pool() ERROR - Exception details: (1, u'CIM_ERR_FAILED: Settings Error: Storage pool creation not supported in this version of libvirt') ERROR - Exception details: global name 'Excpetion' is not defined ERROR - Please delete tmp6NHsxD /tmp/tmphzHNuK if present on localhost InvokeMethod(CreateChildResourcePool): CIM_ERR_FAILED: Settings Error: Storage pool creation not supported in this version of libvirt > diff -r 4eb38964b6e6 -r 775f81388994 suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/08_CreateDiskResourcePool.py > @do_main(platform_sup) > def main(): > options = main.options > server = options.ip > virt = options.virt > - pool_attr = { "Path" : "/tmp" } > > # For now the test case support only the creation of > - # dir type disk pool, later change to fs and netfs etc > + # dir type disk pool, netfs later change to fs and disk pooltypes etc > for key, value in dp_types.iteritems(): You'll want to make sure the version of libvirt your testing with supports the given pool type. This test should be skipped entirely if the version of libvirt doesn't support storage pool creation at all. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Tue Jun 16 22:59:35 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 16 Jun 2009 15:59:35 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] Adding nfs_netfs_setup() to configure nfs server setup In-Reply-To: <4eb38964b6e6bdd75790.1245155721@elm3a148.beaverton.ibm.com> References: <4eb38964b6e6bdd75790.1245155721@elm3a148.beaverton.ibm.com> Message-ID: <4A3823D7.1010600@linux.vnet.ibm.com> > +def nfs_config(server, nfs_server_bin): > + cmd = "ps aux | grep -v -e nfsiod -e grep | grep nfsd" > + rc, out = utils.run_remote(server, cmd) > + # if NFS services is not found on the machine, start it.. > + if rc != PASS : > + nfs_server_cmd = "%s start" % nfs_server_bin > + rc, out = utils.run_remote(server, nfs_server_cmd) > + if rc != PASS: > + logger.error("Could not start the nfsserver on '%s'", server) > + if not os.path.exists(nfs_server_bin): > + logger.error("NFS server '%s' does not seem to be installed "\ > + "on '%s'", nfs_server_bin, server) > + return SKIP I would check to see if the nfs binary exists before attempting to run it. > +def netfs_config(server, nfs_server_bin): > + src_dir_for_mnt = mkdtemp() > + dest_dir_to_mnt = mkdtemp() > + fd = open("/etc/exports", "a") I would create a backup of /etc/exports just incase. Something like /etc/exports.cimtest.bk - that way the user can restore it if we accidentally mess the file up. Also, what is /etc/exports doesn't exist on the system? > + fd.seek(0) > + line = "\n %s %s(rw)" %(src_dir_for_mnt, server) > + fd.write(line) > + fd.close() > + > + try: > + # Need to give suitable perm, otherwise netfs pool-create fails > + cmd = "chmod go+rx %s %s" % (src_dir_for_mnt, dest_dir_to_mnt) > + rc, out = utils.run_remote(server, cmd) > + if rc != 0: > + raise Exception("Failed to chmod on %s %s" \ > + % (src_dir_for_mnt, dest_dir_to_mnt)) > + > + # Restart the nfs server.... > + nfs_server_cmd = "%s restart" % nfs_server_bin > + rc, out = utils.run_remote(server, nfs_server_cmd) > + if rc != PASS: > + raise Exception("Could not restart NFS server on '%s'" % server) > + > + # NFS mount src_dir_for_mnt > + cmd = "mount -t nfs %s:%s %s" %(server, src_dir_for_mnt, dest_dir_to_mnt) No need to do this.. libvirt should handle mounting for you. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Tue Jun 16 23:30:50 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 16 Jun 2009 16:30:50 -0700 Subject: [Libvirt-cim] [PATCH] Add support for bridge type NICs In-Reply-To: <27f3f7f05eb78bd00945.1245187911@elm3b24.beaverton.ibm.com> References: <27f3f7f05eb78bd00945.1245187911@elm3b24.beaverton.ibm.com> Message-ID: <4A382B2A.2090001@linux.vnet.ibm.com> > diff -r a57141febd4a -r 27f3f7f05eb7 libxkutil/device_parsing.h > --- a/libxkutil/device_parsing.h Fri Jun 12 16:14:40 2009 -0700 > +++ b/libxkutil/device_parsing.h Tue Jun 16 13:35:31 2009 -0700 > @@ -47,6 +47,7 @@ > char *mac; > char *source; > char *model; > + char *name; This is a hard tab, it should be 8 spaces. > diff -r a57141febd4a -r 27f3f7f05eb7 src/Virt_VirtualSystemManagementService.c > --- a/src/Virt_VirtualSystemManagementService.c Fri Jun 12 16:14:40 2009 -0700 > +++ b/src/Virt_VirtualSystemManagementService.c Tue Jun 16 13:35:31 2009 -0700 > @@ -59,6 +59,7 @@ > > #define DEFAULT_MAC_PREFIX "00:16:3e" > #define DEFAULT_XEN_WEIGHT 1024 > +#define BRIDGE_TYPE "bridge" > > const static CMPIBroker *_BROKER; > > @@ -553,7 +554,20 @@ > dev->id = strdup(dev->dev.net.mac); > > free(dev->dev.net.type); > - dev->dev.net.type = strdup("network"); > + if (cu_get_str_prop(inst, "NetworkType", &val) == CMPI_RC_OK) { > + if (STREQC(val, BRIDGE_TYPE)) { > + dev->dev.net.type = strdup(BRIDGE_TYPE); > + if (cu_get_str_prop(inst, "NetworkName", &val) == > + CMPI_RC_OK) { > + dev->dev.net.name = strdup(val); > + } else { > + return "No Network bridge name specified"; > + } > + } else { > + dev->dev.net.type = strdup("network"); This will cause a seg fault if the user doesn't specify a value for the NetworkType attribute. So you'll either need to make NetworkType mandatory (and return an error if its not specified), or allow the guest to be crated with a network type interface in the case where 1) NetworkType is specified 2) NetworkType is "network" > + } > + } > + > > if (cu_get_str_prop(inst, "PoolID", &val) != CMPI_RC_OK) > val = _default_network(inst, ns); For either case, these lines need to be moved as appropriate. If the interface type is bridge, you'll want to ignore the PoolID value (or return an error - since the PoolID value should only be set for network type interfaces). Also, the following lines only pertain to network interface types: if (val == NULL) return "No NetworkPool specified and no default available"; free(dev->dev.net.source); dev->dev.net.source = name_from_pool_id(val); This bit of code shouldn't be executed for bridge type interfaces. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Wed Jun 17 10:46:20 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Wed, 17 Jun 2009 16:16:20 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] #3 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() In-Reply-To: <88d210d65d3e405deb4f.1244852038@localhost.localdomain> References: <88d210d65d3e405deb4f.1244852038@localhost.localdomain> Message-ID: <4A38C97C.6090909@linux.vnet.ibm.com> This test fails with seg fault on Xen with current sources with the following error: Testing Xen hypervisor -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - Got CIM error The web server returned a bad status line: '' with return code 0 ERROR - Failed to define the dom: domgst_test InvokeMethod(DefineSystem): The web server returned a bad status line: '' -------------------------------------------------------------------- -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Wed Jun 17 13:28:45 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Wed, 17 Jun 2009 18:58:45 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] #3 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() In-Reply-To: <4A38C97C.6090909@linux.vnet.ibm.com> References: <88d210d65d3e405deb4f.1244852038@localhost.localdomain> <4A38C97C.6090909@linux.vnet.ibm.com> Message-ID: <4A38EF8D.8040004@linux.vnet.ibm.com> Deepti B Kalakeri wrote: > This test fails with seg fault on Xen with current sources with the > following error: > > Testing Xen hypervisor > -------------------------------------------------------------------- > HostSystem - 03_hs_to_settdefcap.py: FAIL > ERROR - Got CIM error The web server returned a bad status line: '' > with return code 0 > ERROR - Failed to define the dom: domgst_test > InvokeMethod(DefineSystem): The web server returned a bad status line: '' > -------------------------------------------------------------------- > Here is the debug message for the HostSystem/03_hs_to_settdefcap.py failure: xmlgen.c(713): New UUID xmlgen.c(145): Disk: 2 /tmp/default-xen-dimage xvda Virt_VirtualSystemManagementService.c(1281): System XML: domgst_test destroy destroy 1928ab2c-e51b-44a8-a533-2b2d93bf93cb linux /tmp/default-xen-kernel /tmp/default-xen-initrd 131072 131072 1 misc_util.c(75): Connecting to libvirt with uri `xen' misc_util.c(75): Connecting to libvirt with uri `xen' misc_util.c(202): URI of connection is: xen:/// misc_util.c(202): URI of connection is: xen:/// device_parsing.c(276): Disk node: disk infostore.c(88): Path is /etc/libvirt/cim/Xen_domgst_test infostore.c(88): Path is /etc/libvirt/cim/Xen_domgst_test infostore.c(250): Deleted /etc/libvirt/cim/Xen_domgst_test infostore.c(88): Path is /etc/libvirt/cim/Xen_domgst_test infostore.c(356): Creating new node uuid=1928ab2c-e51b-44a8-a533-2b2d93bf93cb Segmentation fault Hmmm! I tried debugging this ..I put a lot of debug messages and I found that the problem lies in the libxkutil/device_parsing.c cleanup_dominfo() function It faults when we try to *"free(dom->os_info.pv.initrd); " . *The struct domain does not seem to have initrd property see below: ============ struct domain { enum { DOMAIN_XENPV, DOMAIN_XENFV, DOMAIN_KVM, DOMAIN_QEMU, DOMAIN_LXC } type; char *name; char *typestr; /*xen, kvm, etc */ char *uuid; char *bootloader; char *bootloader_args; char *clock; union { struct pv_os_info pv; struct fv_os_info fv; struct lxc_os_info lxc; } os_info; int on_poweroff; int on_reboot; int on_crash; struct virt_device *dev_graphics; int dev_graphics_ct; struct virt_device *dev_emu; struct virt_device *dev_input; int dev_input_ct; struct virt_device *dev_mem; int dev_mem_ct; struct virt_device *dev_net; int dev_net_ct; struct virt_device *dev_disk; int dev_disk_ct; struct virt_device *dev_vcpu; int dev_vcpu_ct; }; I commented out the part of code "free*(dom->os_info.pv.initrd)" and the test case passed. * -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 17 17:21:22 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 17 Jun 2009 10:21:22 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] Add MOF workaround in VirtualSystemSnapshotService 03 test Message-ID: <7da229f8498e667eac77.1245259282@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1245259271 25200 # Node ID 7da229f8498e667eac773d4692f9a9c437b5c3ad # Parent 9a2db4596db33348b860a0e2337e377f237b0692 [TEST] Add MOF workaround in VirtualSystemSnapshotService 03 test This test case was generating invalid MOF syntax, which was causing sfcb to seg fault (versions older than 1.3.4preview). Signed-off-by: Kaitlin Rupert diff -r 9a2db4596db3 -r 7da229f8498e suites/libvirt-cim/cimtest/VirtualSystemSnapshotService/03_create_snapshot.py --- a/suites/libvirt-cim/cimtest/VirtualSystemSnapshotService/03_create_snapshot.py Wed Jun 03 13:00:09 2009 -0700 +++ b/suites/libvirt-cim/cimtest/VirtualSystemSnapshotService/03_create_snapshot.py Wed Jun 17 10:21:11 2009 -0700 @@ -73,9 +73,11 @@ #Override the additional instance values. We only care about the key #values (eventhough CreateSnapshot takes a instance) - vsssc['SynchronousMethodsSupported'] = "" - vsssc['AynchronousMethodsSupported'] = "" - vsssc['SnapshotTypesSupported'] = "" + for p in vsssc.properties.values(): + if p.name == "SynchronousMethodsSupported" or \ + p.name == "AynchronousMethodsSupported" or \ + p.name == "SnapshotTypesSupported": + p.value = None vsssc = inst_to_mof(vsssc) From deeptik at linux.vnet.ibm.com Thu Jun 18 12:55:38 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Thu, 18 Jun 2009 05:55:38 -0700 Subject: [Libvirt-cim] [PATCH 1 of 3] [TEST] Modifying vxml.py to include netfs related info In-Reply-To: References: Message-ID: # HG changeset patch # User Deepti B. Kalakeri # Date 1245324295 25200 # Node ID b475307a2b5511de4d795a27377a40618eafa188 # Parent 9a2db4596db33348b860a0e2337e377f237b0692 [TEST] Modifying vxml.py to include netfs related info. Tested on F10 with KVM and current sources. Signed-off-by: Deepti B. Kalakeri diff -r 9a2db4596db3 -r b475307a2b55 suites/libvirt-cim/lib/XenKvmLib/vxml.py --- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py Wed Jun 03 13:00:09 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py Thu Jun 18 04:24:55 2009 -0700 @@ -331,10 +331,15 @@ dpoolname = self.get_value_xpath('/pool/name') return dpoolname - def xml_get_pool_attr_list(self): + def xml_get_pool_attr_list(self, mode_type=1): pool_attr_list = [] poolpath = self.get_value_xpath('/pool/target/path') pool_attr_list.append(poolpath) + if mode_type == 3: #Netfs + host = self.get_value_xpath('/pool/source/host/@name') + pool_attr_list.append(host) + src_dir = self.get_value_xpath('/pool/source/dir/@path') + pool_attr_list.append(src_dir) return pool_attr_list From deeptik at linux.vnet.ibm.com Thu Jun 18 12:55:39 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Thu, 18 Jun 2009 05:55:39 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] [TEST] #2 Adding nfs_netfs_setup() to configure nfs server setup In-Reply-To: References: Message-ID: <8510887c62ad37e1a96c.1245329739@elm3b151.beaverton.ibm.com> # HG changeset patch # User Deepti B. Kalakeri # Date 1245326842 25200 # Node ID 8510887c62ad37e1a96caff666d2ca5a94921e99 # Parent b475307a2b5511de4d795a27377a40618eafa188 [TEST] #2 Adding nfs_netfs_setup() to configure nfs server setup... Updates: -------- Patch 2: -------- 1) Removed the mount command 2) Rearranged the nfs_config steps to check the nfs bin existence first 3) Added code to backup the original /etc/exports file 4) Modified netfs_cleanup to restore the backed up /etc/exports Patch 1: -------- 1) nfs_netfs_setup() configures the nfs server and makes necessary arrangements for netfs pool creation. 2) nfs_config() setups nfs server 3) netfs_config() makes necessary arrangements for netfs pool creation. 4) get_nfs_bin() gets proper nfs server binary 5) clean_temp_files() cleans the temp dir created for nfs mount 6) netfs_cleanup() cleans up removes the dir created, restarts the nfs server.. Tested on F10 with KVM and current sources. Signed-off-by: Deepti B. Kalakeri diff -r b475307a2b55 -r 8510887c62ad suites/libvirt-cim/lib/XenKvmLib/common_util.py --- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py Thu Jun 18 04:24:55 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py Thu Jun 18 05:07:22 2009 -0700 @@ -24,6 +24,7 @@ import pywbem import random from time import sleep +from tempfile import mkdtemp from distutils.file_util import move_file from XenKvmLib.test_xml import * from XenKvmLib.test_doms import * @@ -34,7 +35,7 @@ from XenKvmLib.classes import get_typed_class from CimTest.Globals import logger, CIM_ERROR_ENUMERATE, \ CIM_ERROR_GETINSTANCE -from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC +from CimTest.ReturnCodes import PASS, FAIL, XFAIL_RC, SKIP from XenKvmLib.xm_virt_util import diskpool_list, virsh_version, net_list,\ domain_list, virt2uri, net_destroy from XenKvmLib.vxml import PoolXML, NetXML @@ -42,8 +43,9 @@ from XenKvmLib.const import default_pool_name, default_network_name disk_file = '/etc/libvirt/diskpool.conf' - +exports_file = '/etc/exports' back_disk_file = disk_file + "." + "backup" +back_exports_file = exports_file + "." + "backup" def print_field_error(fieldname, ret_value, exp_value): logger.error("%s Mismatch", fieldname) @@ -435,3 +437,111 @@ return guest_name, devid, PASS + +def get_nfs_bin(server): + cmd = "cat /etc/issue | grep -v ^$ | egrep 'Red Hat|Fedora'" + rc, out = utils.run_remote(server, cmd) + if rc != 0: + #SLES + nfs_server_bin = "/etc/init.d/nfsserver" + else: + nfs_server_bin = "/etc/init.d/nfs" + + return nfs_server_bin + +def nfs_config(server, nfs_server_bin): + cmd = "ps aux | grep -v -e nfsiod -e grep | grep nfsd" + rc, out = utils.run_remote(server, cmd) + # if NFS services is not found on the machine, start it.. + if rc != PASS : + # Check if NFS server is installed ... + if not os.path.exists(nfs_server_bin): + logger.error("NFS server '%s' does not seem to be installed "\ + "on '%s'", nfs_server_bin, server) + return SKIP + + # Start the nfs server ... + nfs_server_cmd = "%s start" % nfs_server_bin + rc, out = utils.run_remote(server, nfs_server_cmd) + if rc != PASS: + logger.error("Could not start the nfsserver on '%s'", server) + logger.error("NFS server seems to have problem on '%s'", server) + return FAIL + + return PASS + +def clean_temp_files(server, src_dir_for_mnt, dest_dir_to_mnt): + cmd = "rm -rf %s %s" % (src_dir_for_mnt, dest_dir_to_mnt) + rc, out = utils.run_remote(server, cmd) + if rc != PASS: + logger.error("Please delete %s %s if present on %s", + src_dir_for_mnt, dest_dir_to_mnt, server) + + +def netfs_cleanup(server, pool_attr): + src_dir = os.path.basename(pool_attr['SourceDirectory']) + dst_dir = pool_attr['Path'] + + # Remove the temp dir created . + clean_temp_files(server, src_dir, dst_dir) + + # Restore the original exports file. + if os.path.exists(back_exports_file): + os.remove(exports_file) + move_file(back_exports_file, exports_file) + + # restart the nfs server + nfs_server_bin = get_nfs_bin(server) + nfs_server_cmd = "%s restart" % nfs_server_bin + rc, out = utils.run_remote(server, nfs_server_cmd) + if rc != PASS: + logger.error("Could not restart NFS server on '%s'" % server) + +def netfs_config(server, nfs_server_bin): + src_dir_for_mnt = mkdtemp() + dest_dir_to_mnt = mkdtemp() + + try: + # Backup the original exports file. + if (os.path.exists(exports_file)): + move_file(exports_file, back_exports_file) + fd = open(exports_file, "w") + line = "\n %s %s(rw)" %(src_dir_for_mnt, server) + fd.write(line) + fd.close() + + # Need to give suitable perm, otherwise netfs pool-create fails + cmd = "chmod go+rx %s %s" % (src_dir_for_mnt, dest_dir_to_mnt) + rc, out = utils.run_remote(server, cmd) + if rc != 0: + raise Exception("Failed to chmod on %s %s" \ + % (src_dir_for_mnt, dest_dir_to_mnt)) + + # Restart the nfs server.... + nfs_server_cmd = "%s restart" % nfs_server_bin + rc, out = utils.run_remote(server, nfs_server_cmd) + if rc != PASS: + raise Exception("Could not restart NFS server on '%s'" % server) + + except Exception, detail: + logger.error("Exception details : %s", detail) + clean_temp_files(server, src_dir_for_mnt, dest_dir_to_mnt) + return FAIL, None, None + + return PASS, src_dir_for_mnt, dest_dir_to_mnt + +def nfs_netfs_setup(server): + nfs_server_bin = get_nfs_bin(server) + + # Before going ahead verify that nfs server is available on machine.. + ret = nfs_config(server, nfs_server_bin) + if ret != PASS: + logger.error("Failed to configure NFS on '%s'", server) + return FAIL, None, None + + ret, src_dir, destr_dir = netfs_config(server, nfs_server_bin) + if ret != PASS: + logger.error("Failed to configure netfs on '%s'", server) + return FAIL, None, None + + return PASS, src_dir, destr_dir From deeptik at linux.vnet.ibm.com Thu Jun 18 12:55:37 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Thu, 18 Jun 2009 05:55:37 -0700 Subject: [Libvirt-cim] [PATCH 0 of 3] [TEST] Adding netfs diskpool creation to RPCS/08_CreateDiskResourcePool.py tc Message-ID: Tested with KVM/Xen along with current libvirt-cim sources From deeptik at linux.vnet.ibm.com Thu Jun 18 12:55:40 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Thu, 18 Jun 2009 05:55:40 -0700 Subject: [Libvirt-cim] [PATCH 3 of 3] [TEST] #2 Adding netfs diskpool creation to RPCS/08_CreateDiskResourcePool.py tc In-Reply-To: References: Message-ID: # HG changeset patch # User Deepti B. Kalakeri # Date 1245329707 25200 # Node ID d0a02ab76e76bcfe1d230c3b4c1960b86f060077 # Parent 8510887c62ad37e1a96caff666d2ca5a94921e99 [TEST] #2 Adding netfs diskpool creation to RPCS/08_CreateDiskResourcePool.py tc.. Updates: -------- Patch 2: -------- 1) updated the tc to verify if the support for dir and netfs support pool creation exist in the providers. 2) Updated the test to verify if Libvirt version on machine has capability to support storage pool. Tested on F10 with KVM, Xen with current sources. Signed-off-by: Deepti B. Kalakeri diff -r 8510887c62ad -r d0a02ab76e76 suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/08_CreateDiskResourcePool.py --- a/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/08_CreateDiskResourcePool.py Thu Jun 18 05:07:22 2009 -0700 +++ b/suites/libvirt-cim/cimtest/ResourcePoolConfigurationService/08_CreateDiskResourcePool.py Thu Jun 18 05:55:07 2009 -0700 @@ -49,52 +49,102 @@ import sys from CimTest.Globals import logger -from CimTest.ReturnCodes import FAIL, PASS +from XenKvmLib.xm_virt_util import virsh_version +from CimTest.ReturnCodes import FAIL, PASS, SKIP from XenKvmLib.const import do_main, platform_sup from XenKvmLib.classes import get_typed_class -from XenKvmLib.common_util import destroy_diskpool +from XenKvmLib.common_util import destroy_diskpool, nfs_netfs_setup, \ + netfs_cleanup from XenKvmLib.pool import create_pool, verify_pool, undefine_diskpool +from XenKvmLib.const import get_provider_version -test_pool = "diskpool" -dp_types = { "DISK_POOL_DIR" : 1 } - +libvirt_disk_pool_support=837 +libvirt_netfs_pool_support=869 + +def get_pool_attr(server, pool_type, dp_types): + pool_attr = { "Path" : "/tmp" } + if pool_type == dp_types['DISK_POOL_NETFS']: + status , src_mnt_dir, dir_mnt_dir = nfs_netfs_setup(server) + if status != PASS: + logger.error("Failed to get pool_attr for NETFS diskpool type") + return FAIL, pool_attr + + pool_attr['SourceDirectory'] = src_mnt_dir + pool_attr['Host'] = server + pool_attr['Path'] = dir_mnt_dir + + return PASS, pool_attr + @do_main(platform_sup) def main(): options = main.options server = options.ip virt = options.virt - pool_attr = { "Path" : "/tmp" } + dp_types = { } + + libvirt_version = virsh_version(server, virt) + if libvirt_version < "0.4.1": + logger.info("Storage pool creation support is available in Libvirt " + "version >= 0.4.1 , hence skipping the test....") + return SKIP + + curr_cim_rev, changeset = get_provider_version(virt, server) + if curr_cim_rev >= libvirt_disk_pool_support: + dp_types["DISK_POOL_DIR"] = 1 + if curr_cim_rev >= libvirt_netfs_pool_support: + dp_types["DISK_POOL_NETFS"] = 3 + + if len(dp_types) == 0 : + logger.info("No disk pool types in list , hence skipping the test...") + return SKIP + + status = FAIL # For now the test case support only the creation of - # dir type disk pool, later change to fs and netfs etc + # dir type disk pool, netfs later change to fs and disk pooltypes etc for key, value in dp_types.iteritems(): - status = create_pool(server, virt, test_pool, pool_attr, - mode_type=value, pool_type= "DiskPool") - if status != PASS: - logger.error("Failed to create '%s' type diskpool '%s'", - key, test_pool) + try: + logger.info("Verifying '%s'.....", key) + test_pool = key + status, pool_attr = get_pool_attr(server, value, dp_types) + if status != PASS: + return FAIL + + status = create_pool(server, virt, test_pool, pool_attr, + mode_type=value, pool_type= "DiskPool") + + if status != PASS: + raise Exception("Failed to create '%s' type diskpool '%s'" \ + % (key, test_pool)) + + status = verify_pool(server, virt, test_pool, pool_attr, + mode_type=value, pool_type="DiskPool") + if status != PASS: + destroy_diskpool(server, virt, test_pool) + undefine_diskpool(server, virt, test_pool) + raise Exception("Error in diskpool verification") + + status = destroy_diskpool(server, virt, test_pool) + if status != PASS: + raise Exception("Unable to destroy diskpool '%s'" \ + % test_pool) + + status = undefine_diskpool(server, virt, test_pool) + if status != PASS: + raise Exception("Unable to undefine diskpool '%s'" \ + % test_pool) + + if key == 'DISK_POOL_NETFS': + netfs_cleanup(server, pool_attr) + + status = PASS + + except Exception, details: + logger.error("Exception details: %s", details) + if key == 'DISK_POOL_NETFS': + netfs_cleanup(server, pool_attr) return FAIL - - status = verify_pool(server, virt, test_pool, pool_attr, - mode_type=value, pool_type="DiskPool") - if status != PASS: - logger.error("Error in diskpool verification") - destroy_diskpool(server, virt, test_pool) - undefine_diskpool(server, virt, test_pool) - return FAIL - - status = destroy_diskpool(server, virt, test_pool) - if status != PASS: - logger.error("Unable to destroy diskpool '%s'", test_pool) - return FAIL - - status = undefine_diskpool(server, virt, test_pool) - if status != PASS: - logger.error("Unable to undefine diskpool '%s'", test_pool) - return FAIL - - status = PASS return status From deeptik at linux.vnet.ibm.com Fri Jun 19 10:48:10 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Fri, 19 Jun 2009 16:18:10 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] Add MOF workaround in VirtualSystemSnapshotService 03 test In-Reply-To: <7da229f8498e667eac77.1245259282@localhost.localdomain> References: <7da229f8498e667eac77.1245259282@localhost.localdomain> Message-ID: <4A3B6CEA.3020603@linux.vnet.ibm.com> +1 -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Fri Jun 19 15:13:16 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 19 Jun 2009 08:13:16 -0700 Subject: [Libvirt-cim] [PATCH] Fix compile issue in Virt_RASD Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1245354578 25200 # Node ID c7ff92e2672e224d6b4016573ab836f74f0701ed # Parent 3fa64e808da1d96eeb7e58f6f0532a4c00deba4b Fix compile issue in Virt_RASD This issue is seen with newer versions of gcc. Particularly, gcc-4.1.2 Signed-off-by: Kaitlin Rupert diff -r 3fa64e808da1 -r c7ff92e2672e src/Virt_RASD.c --- a/src/Virt_RASD.c Fri Jun 12 15:11:51 2009 -0700 +++ b/src/Virt_RASD.c Thu Jun 18 12:49:38 2009 -0700 @@ -109,7 +109,7 @@ CMPIStatus s = {CMPI_RC_OK, NULL}; virConnectPtr conn = NULL; virDomainPtr dom = NULL; - struct infostore_ctx *info; + struct infostore_ctx *info = NULL; uint32_t weight; uint64_t limit; uint64_t count; From kaitlin at linux.vnet.ibm.com Fri Jun 19 17:47:03 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 19 Jun 2009 10:47:03 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] #3 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() In-Reply-To: <4A38EF8D.8040004@linux.vnet.ibm.com> References: <88d210d65d3e405deb4f.1244852038@localhost.localdomain> <4A38C97C.6090909@linux.vnet.ibm.com> <4A38EF8D.8040004@linux.vnet.ibm.com> Message-ID: <4A3BCF17.9020504@linux.vnet.ibm.com> Deepti B Kalakeri wrote: > > > Deepti B Kalakeri wrote: >> This test fails with seg fault on Xen with current sources with the >> following error: >> >> Testing Xen hypervisor >> -------------------------------------------------------------------- >> HostSystem - 03_hs_to_settdefcap.py: FAIL >> ERROR - Got CIM error The web server returned a bad status line: '' >> with return code 0 >> ERROR - Failed to define the dom: domgst_test >> InvokeMethod(DefineSystem): The web server returned a bad status line: '' >> -------------------------------------------------------------------- >> > Here is the debug message for the HostSystem/03_hs_to_settdefcap.py Thanks Deepti! I'll be sending a patch to fix this issue in the provider. The problem is that we were assigning the bootlist variable for PV guests. which isn't valid since they don't use a bootlist. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Fri Jun 19 18:06:52 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 19 Jun 2009 11:06:52 -0700 Subject: [Libvirt-cim] [PATCH] Don't set bootlist for PV and LXC guests Message-ID: <8ded9387915f4eb87bab.1245434812@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1245432251 25200 # Node ID 8ded9387915f4eb87bab3ba503960a8521e7704f # Parent 468635e4ee759f63dad8a1a12276f26b85fce864 Don't set bootlist for PV and LXC guests Only XenFV and KVM / QEMU guests have the option of specifying a bootlist. This change avoids setting this value for PV guests, which can result in a seg fault. diff -r 468635e4ee75 -r 8ded9387915f libxkutil/device_parsing.c --- a/libxkutil/device_parsing.c Mon Jun 15 17:26:12 2009 -0700 +++ b/libxkutil/device_parsing.c Fri Jun 19 10:24:11 2009 -0700 @@ -861,8 +861,10 @@ else dominfo->type = -1; - dominfo->os_info.fv.bootlist = blist; - dominfo->os_info.fv.bootlist_ct = bl_size; + if (STREQC(dominfo->os_info.fv.type, "hvm")) { + dominfo->os_info.fv.bootlist_ct = bl_size; + dominfo->os_info.fv.bootlist = blist; + } return 1; } From snmishra at us.ibm.com Fri Jun 19 20:26:48 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Fri, 19 Jun 2009 13:26:48 -0700 Subject: [Libvirt-cim] [PATCH] Code was added to parse input and generate Message-ID: <5553213124aa2aaba274.1245443208@elm3b24.beaverton.ibm.com> # HG changeset patch # User snmishra at us.ibm.com # Date 1245184531 25200 # Node ID 5553213124aa2aaba274de49b78ed5c396d4e98f # Parent a1420debfc6fd48cb8b2ab23e4225e25e9881035 #2 Add support for bridge type NICs. Code was added to parse input and generate libvirt XML to support bridge devices. Net_RASD mof was updated to add bridge device name. Signed-off-by: Sharad Mishra diff -r a1420debfc6f -r 5553213124aa libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Wed Jun 17 11:36:40 2009 -0700 +++ b/libxkutil/device_parsing.h Tue Jun 16 13:35:31 2009 -0700 @@ -47,6 +47,7 @@ char *mac; char *source; char *model; + char *name; }; struct mem_device { diff -r a1420debfc6f -r 5553213124aa libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Wed Jun 17 11:36:40 2009 -0700 +++ b/libxkutil/xmlgen.c Tue Jun 16 13:35:31 2009 -0700 @@ -164,10 +164,12 @@ { xmlNodePtr tmp; - if (dev->source != NULL) { - tmp = xmlNewChild(nic, NULL, BAD_CAST "source", NULL); - if (tmp == NULL) - return XML_ERROR; + tmp = xmlNewChild(nic, NULL, BAD_CAST "source", NULL); + if (tmp == NULL) + return XML_ERROR; + if ((STREQC(src_type, "bridge")) && (dev->name != NULL)) { + xmlNewProp(tmp, BAD_CAST src_type, BAD_CAST dev->name); + } else if ((STREQC(src_type, "network")) && (dev->source != NULL)) { xmlNewProp(tmp, BAD_CAST src_type, BAD_CAST dev->source); } @@ -225,7 +227,7 @@ if (STREQ(dev->dev.net.type, "network")) msg = set_net_source(nic, net, "network"); else if (STREQ(dev->dev.net.type, "bridge")) - msg = bridge_net_to_xml(root, net); + msg = bridge_net_to_xml(nic, net); else if (STREQ(dev->dev.net.type, "user")) continue; else diff -r a1420debfc6f -r 5553213124aa schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Wed Jun 17 11:36:40 2009 -0700 +++ b/schema/ResourceAllocationSettingData.mof Tue Jun 16 13:35:31 2009 -0700 @@ -57,6 +57,10 @@ [Description ("Interface type")] string NetworkType; + [Description ("Bridge name")] + string NetworkName; + + }; [Description ("KVM virtual network configuration"), @@ -68,6 +72,9 @@ [Description ("Interface type")] string NetworkType; + [Description ("Bridge name")] + string NetworkName; + }; [Description ("LXC virtual network configuration"), diff -r a1420debfc6f -r 5553213124aa src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Wed Jun 17 11:36:40 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Tue Jun 16 13:35:31 2009 -0700 @@ -59,6 +59,8 @@ #define DEFAULT_MAC_PREFIX "00:16:3e" #define DEFAULT_XEN_WEIGHT 1024 +#define BRIDGE_TYPE "bridge" +#define NETWORK_TYPE "network" const static CMPIBroker *_BROKER; @@ -553,22 +555,37 @@ dev->id = strdup(dev->dev.net.mac); free(dev->dev.net.type); - dev->dev.net.type = strdup("network"); + free(dev->dev.net.name); + if (cu_get_str_prop(inst, "NetworkType", &val) != CMPI_RC_OK) + return "No Network Type specified"; + if (STREQC(val, BRIDGE_TYPE)) { + dev->dev.net.type = strdup(BRIDGE_TYPE); + if (cu_get_str_prop(inst, "NetworkName", &val) == CMPI_RC_OK) + if (strlen(val) > 0) + dev->dev.net.name = strdup(val); + else + return "bridge name is empty"; + else + return "No Network bridge name specified"; + } else if (STREQC(val, NETWORK_TYPE)) { + dev->dev.net.type = strdup(NETWORK_TYPE); + if (cu_get_str_prop(inst, "PoolID", &val) != CMPI_RC_OK) + val = _default_network(inst, ns); - if (cu_get_str_prop(inst, "PoolID", &val) != CMPI_RC_OK) - val = _default_network(inst, ns); + if (val == NULL) + return "No NetworkPool specified no default available"; - if (val == NULL) - return "No NetworkPool specified and no default available"; + free(dev->dev.net.source); + dev->dev.net.source = name_from_pool_id(val); - free(dev->dev.net.source); - dev->dev.net.source = name_from_pool_id(val); - - free(dev->dev.net.model); - if (cu_get_str_prop(inst, "ResourceSubType", &val) != CMPI_RC_OK) - dev->dev.net.model = NULL; - else - dev->dev.net.model = strdup(val); + free(dev->dev.net.model); + if (cu_get_str_prop(inst, "ResourceSubType", &val) + != CMPI_RC_OK) + dev->dev.net.model = NULL; + else + dev->dev.net.model = strdup(val); + } else + return "Invalid Network Type specified"; out: return msg; From kaitlin at linux.vnet.ibm.com Fri Jun 19 22:33:24 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 19 Jun 2009 15:33:24 -0700 Subject: [Libvirt-cim] [PATCH 3 of 3] Add support for logical storage pools In-Reply-To: References: Message-ID: <82ac631405db90dd0617.1245450804@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1245113103 25200 # Node ID 82ac631405db90dd06173329df74ed90789660ee # Parent 95e453b65affa4eb77bedfab60c954283e34f0ad Add support for logical storage pools Note: These changes don't add support for creating the volume group (in the case where one doesn't already exist). That functionality will be added in a later patch. This means you will need an existing volume group already defined in order to test. For now, you can create a volume pool just by specifying the following attributes: -Type and Path (in the DiskPoolRASD) -ElementName (param of the CreateChildResourcePool() method). Signed-off-by: Kaitlin Rupert diff -r 95e453b65aff -r 82ac631405db src/Virt_ResourcePoolConfigurationService.c --- a/src/Virt_ResourcePoolConfigurationService.c Mon Jun 15 17:26:12 2009 -0700 +++ b/src/Virt_ResourcePoolConfigurationService.c Mon Jun 15 17:45:03 2009 -0700 @@ -189,20 +189,28 @@ return NULL; } -static const char *disk_fs_or_disk_pool(CMPIInstance *inst, - struct virt_pool *pool) +static const char *disk_fs_or_disk_or_logical_pool(CMPIInstance *inst, + struct virt_pool *pool) { const char *msg = NULL; msg = get_dev_paths(inst, &pool->pool_info.disk.device_paths, &pool->pool_info.disk.device_paths_ct); - - if (msg != NULL) - return msg; - if (pool->pool_info.disk.device_paths_ct != 1) - return "Specified pool type only takes one device path"; + + /* Specifying a value for DevicePaths isn't mandatory for logical + pool types. */ + if (pool->pool_info.disk.pool_type != DISK_POOL_LOGICAL) { + if (msg != NULL) + return msg; + + if (pool->pool_info.disk.device_paths_ct != 1) { + CU_DEBUG("%d only takes one device path", + pool->pool_info.disk.pool_type); + return "Specified pool type only takes one device path"; + } + } return NULL; } @@ -261,12 +269,15 @@ init_disk_pool(pool); + pool->pool_info.disk.pool_type = type; + switch (type) { case DISK_POOL_DIR: break; case DISK_POOL_FS: case DISK_POOL_DISK: - msg = disk_fs_or_disk_pool(inst, pool); + case DISK_POOL_LOGICAL: + msg = disk_fs_or_disk_or_logical_pool(inst, pool); break; case DISK_POOL_NETFS: msg = disk_netfs_pool(inst, pool); @@ -281,8 +292,6 @@ if (msg != NULL) goto out; - pool->pool_info.disk.pool_type = type; - if (cu_get_str_prop(inst, "Path", &val) != CMPI_RC_OK) return "Missing `Path' property"; From kaitlin at linux.vnet.ibm.com Fri Jun 19 22:33:21 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 19 Jun 2009 15:33:21 -0700 Subject: [Libvirt-cim] [PATCH 0 of 3] Add support for logical type storage pools Message-ID: This is the last type of storage pool left to support. From kaitlin at linux.vnet.ibm.com Fri Jun 19 22:33:22 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 19 Jun 2009 15:33:22 -0700 Subject: [Libvirt-cim] [PATCH 1 of 3] Change DevicePath attribute to DevicePaths In-Reply-To: References: Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1245111972 25200 # Node ID dff67e06596528ece42c01eff9e0afbcc2a8a422 # Parent 416b44d9a9d4045587226707938610b732ff27ec Change DevicePath attribute to DevicePaths This is because logical storage pools can take more than one device path Signed-off-by: Kaitlin Rupert diff -r 416b44d9a9d4 -r dff67e065965 libxkutil/pool_parsing.c --- a/libxkutil/pool_parsing.c Fri Jun 19 11:38:35 2009 -0700 +++ b/libxkutil/pool_parsing.c Mon Jun 15 17:26:12 2009 -0700 @@ -53,10 +53,16 @@ } static void cleanup_disk_pool(struct disk_pool pool) { + uint16_t i; + free(pool.path); - free(pool.device_path); free(pool.host); free(pool.src_dir); + + for (i = 0; i < pool.device_paths_ct; i++) + free(pool.device_paths[i]); + + free(pool.device_paths); } void cleanup_virt_pool(struct virt_pool **pool) diff -r 416b44d9a9d4 -r dff67e065965 libxkutil/pool_parsing.h --- a/libxkutil/pool_parsing.h Fri Jun 19 11:38:35 2009 -0700 +++ b/libxkutil/pool_parsing.h Mon Jun 15 17:26:12 2009 -0700 @@ -45,7 +45,8 @@ DISK_POOL_ISCSI, DISK_POOL_LOGICAL} pool_type; char *path; - char *device_path; + char **device_paths; + uint16_t device_paths_ct; char *host; char *src_dir; }; diff -r 416b44d9a9d4 -r dff67e065965 schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Fri Jun 19 11:38:35 2009 -0700 +++ b/schema/ResourceAllocationSettingData.mof Mon Jun 15 17:26:12 2009 -0700 @@ -229,7 +229,7 @@ "Disk, ISCSI, Logical"}] uint16 Type; string Path; - string DevicePath; + string DevicePaths[]; string Host; string SourceDirectory; }; @@ -245,7 +245,7 @@ "Disk, ISCSI, Logical"}] uint16 Type; string Path; - string DevicePath; + string DevicePaths[]; string Host; string SourceDirectory; }; @@ -261,7 +261,7 @@ "Disk, ISCSI, Logical"}] uint16 Type; string Path; - string DevicePath; + string DevicePaths[]; string Host; string SourceDirectory; }; From kaitlin at linux.vnet.ibm.com Fri Jun 19 22:33:23 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 19 Jun 2009 15:33:23 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] Change xmlgen and RPCC to use DevicePaths In-Reply-To: References: Message-ID: <95e453b65affa4eb77be.1245450803@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1245111972 25200 # Node ID 95e453b65affa4eb77bedfab60c954283e34f0ad # Parent dff67e06596528ece42c01eff9e0afbcc2a8a422 Change xmlgen and RPCC to use DevicePaths Signed-off-by: Kaitlin Rupert diff -r dff67e065965 -r 95e453b65aff libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Mon Jun 15 17:26:12 2009 -0700 +++ b/libxkutil/xmlgen.c Mon Jun 15 17:26:12 2009 -0700 @@ -880,19 +880,20 @@ { xmlNodePtr src; xmlNodePtr tmp; + uint16_t i; src = xmlNewChild(disk, NULL, BAD_CAST "source", NULL); if (src == NULL) return XML_ERROR; - if (pool->device_path != NULL) { + for (i = 0; i < pool->device_paths_ct; i++) { tmp = xmlNewChild(src, NULL, BAD_CAST "device", BAD_CAST NULL); if (tmp == NULL) return XML_ERROR; if (xmlNewProp(tmp, BAD_CAST "path", - BAD_CAST pool->device_path) == NULL) + BAD_CAST pool->device_paths[i]) == NULL) return XML_ERROR; } diff -r dff67e065965 -r 95e453b65aff src/Virt_ResourcePoolConfigurationService.c --- a/src/Virt_ResourcePoolConfigurationService.c Mon Jun 15 17:26:12 2009 -0700 +++ b/src/Virt_ResourcePoolConfigurationService.c Mon Jun 15 17:26:12 2009 -0700 @@ -142,21 +142,67 @@ #if VIR_USE_LIBVIRT_STORAGE static void init_disk_pool(struct virt_pool *pool) { - pool->pool_info.disk.device_path = NULL; + pool->pool_info.disk.device_paths = NULL; + pool->pool_info.disk.device_paths_ct = 0; pool->pool_info.disk.path = NULL; pool->pool_info.disk.host = NULL; pool->pool_info.disk.src_dir = NULL; } +static char *get_dev_paths(CMPIInstance *inst, + char ***path_list, + uint16_t *count) +{ + CMPICount i; + CMPICount ct; + CMPIArray *array; + CMPIStatus s; + CMPIData elem; + + if (cu_get_array_prop(inst, "DevicePaths", &array) != CMPI_RC_OK) + return "Missing `DevicePaths' property"; + + ct = CMGetArrayCount(array, &s); + if ((s.rc != CMPI_RC_OK) || (ct <= 0)) + return "Unable to get DevicePaths array count"; + + *path_list = calloc(ct, sizeof(char *)); + if (path_list == NULL) + return "Failed to alloc space for device paths"; + + *count = ct; + + for (i = 0; i < ct; i++) { + const char *str = NULL; + + elem = CMGetArrayElementAt(array, i, NULL); + if (CMIsNullValue(elem)) + return "Unable to get element from DevicePaths array"; + + str = CMGetCharPtr(elem.value.string); + if (str == NULL) + return "Unable to get value of DevicePaths element"; + + *path_list[i] = strdup(str); + } + + return NULL; +} + static const char *disk_fs_or_disk_pool(CMPIInstance *inst, struct virt_pool *pool) { - const char *val = NULL; + const char *msg = NULL; - if (cu_get_str_prop(inst, "DevicePath", &val) != CMPI_RC_OK) - return "Missing `DevicePath' property"; + msg = get_dev_paths(inst, + &pool->pool_info.disk.device_paths, + &pool->pool_info.disk.device_paths_ct); + + if (msg != NULL) + return msg; - pool->pool_info.disk.device_path = strdup(val); + if (pool->pool_info.disk.device_paths_ct != 1) + return "Specified pool type only takes one device path"; return NULL; } @@ -183,11 +229,17 @@ struct virt_pool *pool) { const char *val = NULL; + const char *msg = NULL; - if (cu_get_str_prop(inst, "DevicePath", &val) != CMPI_RC_OK) - return "Missing `DevicePath' property"; + msg = get_dev_paths(inst, + &pool->pool_info.disk.device_paths, + &pool->pool_info.disk.device_paths_ct); + + if (msg != NULL) + return msg; - pool->pool_info.disk.device_path = strdup(val); + if (pool->pool_info.disk.device_paths_ct != 1) + return "Specified pool type only takes one device path"; if (cu_get_str_prop(inst, "Host", &val) != CMPI_RC_OK) return "Missing `Host' property"; From kaitlin at linux.vnet.ibm.com Fri Jun 19 22:55:10 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 19 Jun 2009 18:55:10 -0400 Subject: [Libvirt-cim] Test Run Summary (Jun 19 2009): KVM on Fedora release 10.90 (Rawhide) with Pegasus Message-ID: <200906192255.n5JMtA7X009612@d01av02.pok.ibm.com> ================================================= Test Run Summary (Jun 19 2009): KVM on Fedora release 10.90 (Rawhide) with Pegasus ================================================= Distro: Fedora release 10.90 (Rawhide) Kernel: 2.6.29-0.24.rc0.git13.fc11.x86_64 libvirt: 0.6.3 Hypervisor: QEMU 0.10.1 CIMOM: Pegasus 2.7.2 Libvirt-cim revision: 899 Libvirt-cim changeset: 3fa64e808da1 Cimtest revision: 706 Cimtest changeset: 5dc68186c59a ================================================= FAIL : 5 XFAIL : 3 SKIP : 9 PASS : 141 ----------------- Total : 158 ================================================= FAIL Test Summary: ComputerSystemIndication - 01_created_indication.py: FAIL HostSystem - 03_hs_to_settdefcap.py: FAIL RASD - 07_parent_disk_pool.py: FAIL ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL SettingsDefineCapabilities - 01_forward.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 02_nosystems.py: SKIP LogicalDisk - 02_nodevs.py: SKIP VSSD - 02_bootldr.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: PASS -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error CIM_ERR_NOT_SUPPORTED: State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): CIM_ERR_NOT_SUPPORTED: State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: FAIL ERROR - Waited too long for start indication ERROR - Waited too long for destroy indication -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - 'KVM_SettingsDefineCapabilities' returned 8 RASD objects instead of 4 CIM_ERR_INVALID_CLASS: Linux_ComputerSystem -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: PASS -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: PASS -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: FAIL 07_parent_disk_pool.py:47: DeprecationWarning: the sets module is deprecated from sets import Set ERROR - Exception details: Got 5 recs instead of 3 -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'CIM_ERR_FAILED: Pool with that name already exists') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): CIM_ERR_FAILED: Pool with that name already exists -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: FAIL ERROR - KVM_SettingsDefineCapabilities returned 8 ResourcePool objects instead of 4 -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:ps2 CIM_ERR_NOT_FOUND: No such instance (no device domain/mouse:ps2) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From adam_richter2004 at yahoo.com Sat Jun 20 01:08:30 2009 From: adam_richter2004 at yahoo.com (Adam Richter) Date: Fri, 19 Jun 2009 18:08:30 -0700 (PDT) Subject: [Libvirt-cim] Attention webmaster: please expand acronyms in http://libvirt.org/CIM/. Message-ID: <24761.82341.qm@web57707.mail.re3.yahoo.com> The "what is libvirt-cim" page at http://libvirt.org/CIM/ contains numerous unexpanded acronyms. Usuaully, a "what is" web page is likely to be used by people with less subject matter expertise than other web pages on a topic, so it is especially important to expand acronyms in such web pages. In this case, the current text is quite terse, so there is plenty of space to expand the acronyms. So, if there are no complaints from the libvirt-cim mailing list (which I have cc'ed) in the next day or so, I suggest you change the text of http://libvirt.org/CIM/ to something like this: What is libvirt-cim? Libvirt-CIM is a CIM (Common Information Model) provider for managing linux virtualization platforms using libvirt. It is written in C and should work in any CIMOM (CIM Object Manager) that supports CMPI (Common Management Programming Inferface) 2.0 providers. The intent is to implement the SVPC (Systems Virtualization Partitioning and Clustering) class model currently available in the DMTF (Distributed Managment Task Force) Experimental 2.16 schema. This email may inspire suggestions of other improvements for the future. If that happens, please bear in mind that those suggestions probably will not block your making this text update in the meantime. Thanks for your attention to this. Adam Richter From deeptik at linux.vnet.ibm.com Mon Jun 22 06:33:25 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Mon, 22 Jun 2009 12:03:25 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] #3 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() In-Reply-To: <4A3BCF17.9020504@linux.vnet.ibm.com> References: <88d210d65d3e405deb4f.1244852038@localhost.localdomain> <4A38C97C.6090909@linux.vnet.ibm.com> <4A38EF8D.8040004@linux.vnet.ibm.com> <4A3BCF17.9020504@linux.vnet.ibm.com> Message-ID: <4A3F25B5.7060005@linux.vnet.ibm.com> Kaitlin Rupert wrote: > Deepti B Kalakeri wrote: >> >> >> Deepti B Kalakeri wrote: >>> This test fails with seg fault on Xen with current sources with the >>> following error: >>> >>> Testing Xen hypervisor >>> -------------------------------------------------------------------- >>> HostSystem - 03_hs_to_settdefcap.py: FAIL >>> ERROR - Got CIM error The web server returned a bad status line: '' >>> with return code 0 >>> ERROR - Failed to define the dom: domgst_test >>> InvokeMethod(DefineSystem): The web server returned a bad status >>> line: '' >>> -------------------------------------------------------------------- >>> >> Here is the debug message for the HostSystem/03_hs_to_settdefcap.py > > Thanks Deepti! I'll be sending a patch to fix this issue in the > provider. The problem is that we were assigning the bootlist variable > for PV guests. which isn't valid since they don't use a bootlist. > > +1 . The tc now passes with the "Don't set bootlist for PV and LXC guests". But, I see the following message which I think need to have a look: misc_util.c(202): URI of connection is: xen:/// Virt_DevicePool.c(272): Failed to statvfs((null)): Bad address Virt_DevicePool.c(936): Failed to set capacity for disk pool: 0 std_association.c(304): Handler returned CMPI_RC_OK. Also, I get the following messages: Testing Xen hypervisor -------------------------------------------------------------------- libvir: error : invalid argument in __virGetDomain libvir: error : invalid argument in __virGetDomain libvir: error : invalid argument in __virGetDomain libvir: error : invalid argument in __virGetDomain libvir: error : invalid argument in __virGetDomain libvir: error : invalid argument in __virGetDomain libvir: error : invalid argument in __virGetDomain libvir: error : invalid argument in __virGetDomain libvir: error : invalid argument in __virGetDomain HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Mon Jun 22 07:07:08 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Mon, 22 Jun 2009 12:37:08 +0530 Subject: [Libvirt-cim] Attention webmaster: please expand acronyms in http://libvirt.org/CIM/. In-Reply-To: <24761.82341.qm@web57707.mail.re3.yahoo.com> References: <24761.82341.qm@web57707.mail.re3.yahoo.com> Message-ID: <4A3F2D9C.8050800@linux.vnet.ibm.com> Adam Richter wrote: > The "what is libvirt-cim" page at http://libvirt.org/CIM/ contains numerous unexpanded acronyms. Usuaully, a "what is" web page is likely to be used by people with less subject matter expertise than other web pages on a topic, so it is especially important to expand acronyms in such web pages. In this case, the current text is quite terse, so there is plenty of space to expand the acronyms. > > So, if there are no complaints from the libvirt-cim mailing list (which I have cc'ed) in the next day or so, I suggest you change the text of http://libvirt.org/CIM/ to something like this: > > > > > What is libvirt-cim? > > Libvirt-CIM is a CIM (Common Information Model) provider for managing > linux virtualization platforms using libvirt. It is written in C and > should work in any CIMOM (CIM Object Manager) that supports CMPI > (Common Management Programming Inferface) 2.0 providers. The intent is > to implement the SVPC (Systems Virtualization Partitioning and > Clustering) class model currently available in the DMTF (Distributed > Managment Task Force) Experimental 2.16 schema. > @ Adam, Hey Thanks. @ Kaitlin, I was not able to change the information in the wiki . I think we also need to change the DMTF revision information from 2.16 to 2.21. The platform support info is also not up to date. > > > > This email may inspire suggestions of other improvements for the future. If that happens, please bear in mind that those suggestions probably will not block your making this text update in the meantime. > > Thanks for your attention to this. > > Adam Richter > > > > > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim > -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From snmishra at us.ibm.com Mon Jun 22 18:41:18 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Mon, 22 Jun 2009 11:41:18 -0700 Subject: [Libvirt-cim] [PATCH] (#3)- Add support for bridge type NICs Message-ID: <4bd5db5f544279f099b4.1245696078@elm3b24.beaverton.ibm.com> # HG changeset patch # User snmishra at us.ibm.com # Date 1245694676 25200 # Node ID 4bd5db5f544279f099b4d7565157c675cf072936 # Parent 3fa64e808da1d96eeb7e58f6f0532a4c00deba4b (#3)- Add support for bridge type NICs. Code was added to parse input and generate libvirt XML to support bridge devices. Net_RASD mof was updated to add bridge device name. #2 - replaced hard tabs with spaces and fixed a potential segfault. #3 - fixed mercurial patch issues. Signed-off-by: Sharad Mishra diff -r 3fa64e808da1 -r 4bd5db5f5442 libxkutil/device_parsing.h --- a/libxkutil/device_parsing.h Fri Jun 12 15:11:51 2009 -0700 +++ b/libxkutil/device_parsing.h Mon Jun 22 11:17:56 2009 -0700 @@ -47,6 +47,7 @@ char *mac; char *source; char *model; + char *name; }; struct mem_device { diff -r 3fa64e808da1 -r 4bd5db5f5442 libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Fri Jun 12 15:11:51 2009 -0700 +++ b/libxkutil/xmlgen.c Mon Jun 22 11:17:56 2009 -0700 @@ -164,12 +164,18 @@ { xmlNodePtr tmp; - if (dev->source != NULL) { + if ((STREQC(src_type, "bridge")) && (dev->name != NULL)) { tmp = xmlNewChild(nic, NULL, BAD_CAST "source", NULL); - if (tmp == NULL) + if (tmp == NULL) + return XML_ERROR; + xmlNewProp(tmp, BAD_CAST src_type, BAD_CAST dev->name); + } else if ((STREQC(src_type, "network")) && (dev->source != NULL)) { + tmp = xmlNewChild(nic, NULL, BAD_CAST "source", NULL); + if (tmp == NULL) return XML_ERROR; xmlNewProp(tmp, BAD_CAST src_type, BAD_CAST dev->source); - } + } else + return XML_ERROR; return NULL; } @@ -225,7 +231,7 @@ if (STREQ(dev->dev.net.type, "network")) msg = set_net_source(nic, net, "network"); else if (STREQ(dev->dev.net.type, "bridge")) - msg = bridge_net_to_xml(root, net); + msg = bridge_net_to_xml(nic, net); else if (STREQ(dev->dev.net.type, "user")) continue; else diff -r 3fa64e808da1 -r 4bd5db5f5442 schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Fri Jun 12 15:11:51 2009 -0700 +++ b/schema/ResourceAllocationSettingData.mof Mon Jun 22 11:17:56 2009 -0700 @@ -57,6 +57,9 @@ [Description ("Interface type")] string NetworkType; + [Description ("Bridge name")] + string NetworkName; + }; [Description ("KVM virtual network configuration"), @@ -68,6 +71,9 @@ [Description ("Interface type")] string NetworkType; + [Description ("Bridge name")] + string NetworkName; + }; [Description ("LXC virtual network configuration"), diff -r 3fa64e808da1 -r 4bd5db5f5442 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Fri Jun 12 15:11:51 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Mon Jun 22 11:17:56 2009 -0700 @@ -59,6 +59,8 @@ #define DEFAULT_MAC_PREFIX "00:16:3e" #define DEFAULT_XEN_WEIGHT 1024 +#define BRIDGE_TYPE "bridge" +#define NETWORK_TYPE "network" const static CMPIBroker *_BROKER; @@ -553,23 +555,37 @@ dev->id = strdup(dev->dev.net.mac); free(dev->dev.net.type); - dev->dev.net.type = strdup("network"); + free(dev->dev.net.name); + if (cu_get_str_prop(inst, "NetworkType", &val) != CMPI_RC_OK) + return "No Network Type specified"; - if (cu_get_str_prop(inst, "PoolID", &val) != CMPI_RC_OK) - val = _default_network(inst, ns); + if (STREQC(val, BRIDGE_TYPE)) { + dev->dev.net.type = strdup(BRIDGE_TYPE); + if (cu_get_str_prop(inst, "NetworkName", &val) == CMPI_RC_OK) + if (strlen(val) > 0) + dev->dev.net.name = strdup(val); + else + return "Bridge name is empty"; + else + return "No Network bridge name specified"; + } else if (STREQC(val, NETWORK_TYPE)) { + dev->dev.net.type = strdup(NETWORK_TYPE); + if (cu_get_str_prop(inst, "PoolID", &val) != CMPI_RC_OK) + val = _default_network(inst, ns); - if (val == NULL) - return "No NetworkPool specified and no default available"; + if (val == NULL) + return "No NetworkPool specified no default available"; - free(dev->dev.net.source); - dev->dev.net.source = name_from_pool_id(val); + free(dev->dev.net.source); + dev->dev.net.source = name_from_pool_id(val); + } else + return "Invalid Network Type specified"; + free(dev->dev.net.model); - free(dev->dev.net.model); if (cu_get_str_prop(inst, "ResourceSubType", &val) != CMPI_RC_OK) dev->dev.net.model = NULL; else dev->dev.net.model = strdup(val); - out: return msg; } From kaitlin at linux.vnet.ibm.com Mon Jun 22 20:11:46 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 22 Jun 2009 13:11:46 -0700 Subject: [Libvirt-cim] Attention webmaster: please expand acronyms in http://libvirt.org/CIM/. In-Reply-To: <24761.82341.qm@web57707.mail.re3.yahoo.com> References: <24761.82341.qm@web57707.mail.re3.yahoo.com> Message-ID: <4A3FE582.1000402@linux.vnet.ibm.com> Hi Adam, Welcome to the list! Adam Richter wrote: > The "what is libvirt-cim" page at http://libvirt.org/CIM/ contains numerous unexpanded acronyms. Usuaully, a "what is" web page is likely to be used by people with less subject matter expertise > than other web pages on a topic, so it is especially important to > expand acronyms in such web pages. In this case, the current text is quite terse, so there is plenty of space to expand the acronyms. > Thanks for catching this. I agree - the explanation on the site assumes some familiarity with CIM concepts. > So, if there are no complaints from the libvirt-cim mailing list (which I have cc'ed) in the next day or so, I suggest you change the text of http://libvirt.org/CIM/ to something like this: > > > > > What is libvirt-cim? > > Libvirt-CIM is a CIM (Common Information Model) provider for managing > linux virtualization platforms using libvirt. It is written in C and > should work in any CIMOM (CIM Object Manager) that supports CMPI > (Common Management Programming Inferface) 2.0 providers. The intent is > to implement the SVPC (Systems Virtualization Partitioning and > Clustering) class model currently available in the DMTF (Distributed > Managment Task Force) Experimental 2.16 schema. > > > > > This email may inspire suggestions of other improvements for the future. If that happens, please bear in mind that those suggestions probably will not block your making this text update in the meantime. All of the documentation on the libvirt-cim portion of the website is quite out of date. I'll see if I can get an update done in the next few days here. Thanks again for pointing this out! > > Thanks for your attention to this. > > Adam Richter > -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Mon Jun 22 20:13:44 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 22 Jun 2009 13:13:44 -0700 Subject: [Libvirt-cim] Attention webmaster: please expand acronyms in http://libvirt.org/CIM/. In-Reply-To: <4A3F2D9C.8050800@linux.vnet.ibm.com> References: <24761.82341.qm@web57707.mail.re3.yahoo.com> <4A3F2D9C.8050800@linux.vnet.ibm.com> Message-ID: <4A3FE5F8.1080704@linux.vnet.ibm.com> Deepti B Kalakeri wrote: > > > Adam Richter wrote: >> The "what is libvirt-cim" page at http://libvirt.org/CIM/ contains >> numerous unexpanded acronyms. Usuaully, a "what is" web page is >> likely to be used by people with less subject matter expertise than >> other web pages on a topic, so it is especially important to expand >> acronyms in such web pages. In this case, the current text is quite >> terse, so there is plenty of space to expand the acronyms. >> >> So, if there are no complaints from the libvirt-cim mailing list >> (which I have cc'ed) in the next day or so, I suggest you change the >> text of http://libvirt.org/CIM/ to something like this: >> >> >> >> >> What is libvirt-cim? >> >> Libvirt-CIM is a CIM (Common Information Model) provider for managing >> linux virtualization platforms using libvirt. It is written in C and >> should work in any CIMOM (CIM Object Manager) that supports CMPI >> (Common Management Programming Inferface) 2.0 providers. The intent is >> to implement the SVPC (Systems Virtualization Partitioning and >> Clustering) class model currently available in the DMTF (Distributed >> Managment Task Force) Experimental 2.16 schema. >> > @ Adam, > Hey Thanks. > > @ Kaitlin, > I was not able to change the information in the wiki . Hi Deepti, The page Adam is referring to is not part of the wiki. It's one of the web pages that are hosted on libvirt.org. The modification mechanism for these pages is different from the wiki that's hosted on libvirt.org. > I think we also need to change the DMTF revision information from 2.16 > to 2.21. The platform support info is also not up to date. Agreed. Also, we haven't updated the release information. The information there is quite out of date. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Mon Jun 22 21:59:40 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 22 Jun 2009 14:59:40 -0700 Subject: [Libvirt-cim] [PATCH] (#3)- Add support for bridge type NICs In-Reply-To: <4bd5db5f544279f099b4.1245696078@elm3b24.beaverton.ibm.com> References: <4bd5db5f544279f099b4.1245696078@elm3b24.beaverton.ibm.com> Message-ID: <4A3FFECC.7000808@linux.vnet.ibm.com> > diff -r 3fa64e808da1 -r 4bd5db5f5442 schema/ResourceAllocationSettingData.mof > --- a/schema/ResourceAllocationSettingData.mof Fri Jun 12 15:11:51 2009 -0700 > +++ b/schema/ResourceAllocationSettingData.mof Mon Jun 22 11:17:56 2009 -0700 > @@ -57,6 +57,9 @@ > [Description ("Interface type")] > string NetworkType; > > + [Description ("Bridge name")] > + string NetworkName; > + > }; > > [Description ("KVM virtual network configuration"), > @@ -68,6 +71,9 @@ > [Description ("Interface type")] > string NetworkType; > > + [Description ("Bridge name")] > + string NetworkName; > + > }; Since this patch adds a new attribute and makes an existing attribute a required on, you'll also need to update the template RASDs in SettingsDefineCapabilities. Thanks! -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Mon Jun 22 22:18:20 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 22 Jun 2009 15:18:20 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] #3 Add support for DiskPoolRASD / NetPoolRASD to get_exp_template_rasd_len() In-Reply-To: <4A3F25B5.7060005@linux.vnet.ibm.com> References: <88d210d65d3e405deb4f.1244852038@localhost.localdomain> <4A38C97C.6090909@linux.vnet.ibm.com> <4A38EF8D.8040004@linux.vnet.ibm.com> <4A3BCF17.9020504@linux.vnet.ibm.com> <4A3F25B5.7060005@linux.vnet.ibm.com> Message-ID: <4A40032C.7090901@linux.vnet.ibm.com> > > The tc now passes with the "Don't set bootlist for PV and LXC guests". > But, I see the following message which I think need to have a look: > > misc_util.c(202): URI of connection is: xen:/// > Virt_DevicePool.c(272): Failed to statvfs((null)): Bad address > Virt_DevicePool.c(936): Failed to set capacity for disk pool: 0 > std_association.c(304): Handler returned CMPI_RC_OK. > > > Also, I get the following messages: > > Testing Xen hypervisor > -------------------------------------------------------------------- > libvir: error : invalid argument in __virGetDomain > libvir: error : invalid argument in __virGetDomain > libvir: error : invalid argument in __virGetDomain > libvir: error : invalid argument in __virGetDomain > libvir: error : invalid argument in __virGetDomain > libvir: error : invalid argument in __virGetDomain > libvir: error : invalid argument in __virGetDomain > libvir: error : invalid argument in __virGetDomain > libvir: error : invalid argument in __virGetDomain > HostSystem - 03_hs_to_settdefcap.py: PASS > -------------------------------------------------------------------- > This looks like there is an invalid domain on your system. I've seen issues with other versions of Xen where the domain config gets corrupted, and libvirt can see the domain, but xend can't. You can try restarting xend and libvirtd. That might allow you to remove the offending guest. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Mon Jun 22 22:31:19 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 22 Jun 2009 16:31:19 -0600 Subject: [Libvirt-cim] Test Run Summary (Jun 22 2009): LXC on Fedora release 11.90 (Rawhide) with sfcb Message-ID: <200906222231.n5MMVJEJ018320@d03av04.boulder.ibm.com> ================================================= Test Run Summary (Jun 22 2009): LXC on Fedora release 11.90 (Rawhide) with sfcb ================================================= Distro: Fedora release 11.90 (Rawhide) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.6.4 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 898 Libvirt-cim changeset: a57141febd4a Cimtest revision: 707 Cimtest changeset: d67a606da9f7 ================================================= FAIL : 5 XFAIL : 9 SKIP : 39 PASS : 105 ----------------- Total : 158 ================================================= FAIL Test Summary: RASD - 01_verify_rasd_fields.py: FAIL ServiceAffectsElement - 01_forward.py: FAIL ServiceAffectsElement - 02_reverse.py: FAIL SettingsDefine - 02_reverse.py: FAIL SystemDevice - 01_forward.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 06_paused_active_suspend.py: XFAIL ComputerSystem - 23_pause_pause.py: XFAIL ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL HostSystem - 02_hostsystem_to_rasd.py: XFAIL HostedDependency - 03_enabledstate.py: XFAIL VSSD - 04_vssd_to_rasd.py: XFAIL VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP ComputerSystemIndication - 01_created_indication.py: SKIP ElementAllocatedFromPool - 03_reverse_errs.py: SKIP ElementAllocatedFromPool - 04_forward_errs.py: SKIP LogicalDisk - 01_disk.py: SKIP LogicalDisk - 03_ld_gi_errs.py: SKIP NetworkPort - 01_netport.py: SKIP NetworkPort - 02_np_gi_errors.py: SKIP NetworkPort - 03_user_netport.py: SKIP Processor - 01_processor.py: SKIP Processor - 02_definesys_get_procs.py: SKIP Processor - 03_proc_gi_errs.py: SKIP RASD - 04_disk_rasd_size.py: SKIP RASD - 05_disk_rasd_emu_type.py: SKIP RASD - 06_parent_net_pool.py: SKIP RASD - 07_parent_disk_pool.py: SKIP ResourceAllocationFromPool - 05_RAPF_err.py: SKIP ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP VSSD - 02_bootldr.py: SKIP VirtualSystemManagementService - 06_addresource.py: SKIP VirtualSystemManagementService - 08_modifyresource.py: SKIP VirtualSystemManagementService - 09_procrasd_persist.py: SKIP VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP VirtualSystemManagementService - 12_referenced_config.py: SKIP VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP VirtualSystemManagementService - 16_removeresource.py: SKIP VirtualSystemManagementService - 17_removeresource_neg.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception variable: Unable pause dom 'DomST1' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception: 'Unable pause dom 'cs_test_domain'' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: SKIP -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned CrossClass_GuestDom/mouse:xen instead of CrossClass_GuestDom/mouse:usb Class not found Bug:<00009> -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: XFAIL ERROR - Exception: (1, u'Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend') ERROR - Failed to suspend the dom: hd_domain1 InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: SKIP -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: SKIP -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: SKIP -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: SKIP -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: SKIP -------------------------------------------------------------------- Processor - 01_processor.py: SKIP -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: SKIP -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: SKIP -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: FAIL ERROR - 6 assoc_info != 5 RASD insts -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: SKIP -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: SKIP -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: SKIP -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: SKIP -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: SKIP -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: FAIL ERROR - Got more than one record for 'LXC_PointingDevice' ERROR - Exception in fn verify_assoc() ERROR - Exception details: Failed to get insts for domain SAE_dom -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: FAIL ERROR - Got more than one record for 'LXC_PointingDevice' ERROR - Exception : Failed to get init_list -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: FAIL ERROR - Got 6 RASDs, expected 5 ERROR - Failed to verify RASDs -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: FAIL ERROR - Device Class mismatch ERROR - Exception Expected Device class list: ['LXC_Memory', 'LXC_Processor'] Got: [u'LXC_DisplayController', u'LXC_LogicalDisk', u'LXC_Memory', u'LXC_PointingDevice'] -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL ERROR - rstest_domain not updated properly. ERROR - Exp AutomaticRecoveryAction=3, got 2 Bug:<00008> -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From kaitlin at linux.vnet.ibm.com Mon Jun 22 22:35:47 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 22 Jun 2009 16:35:47 -0600 Subject: [Libvirt-cim] Test Run Summary (Jun 22 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb Message-ID: <200906222235.n5MMZljg023320@d03av02.boulder.ibm.com> ================================================= Test Run Summary (Jun 22 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb ================================================= Distro: Fedora release 11.90 (Rawhide) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.6.4 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 898 Libvirt-cim changeset: a57141febd4a Cimtest revision: 707 Cimtest changeset: d67a606da9f7 ================================================= FAIL : 5 XFAIL : 3 SKIP : 7 PASS : 143 ----------------- Total : 158 ================================================= FAIL Test Summary: ComputerSystemIndication - 01_created_indication.py: FAIL RASD - 07_parent_disk_pool.py: FAIL ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: VSSD - 02_bootldr.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: FAIL ERROR - Exception : Request Failed: 200 Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "01_created_indication.py", line 146, in main sub_list, ind_names, dict = sub_ind(ip, virt) File "01_created_indication.py", line 60, in sub_ind sub.subscribe(dict['default_url'], dict['default_auth']) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 345, in subscribe "CreateInstance", auth_hdr) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 330, in __do_cimpost (resp.status, resp.reason)) Exception: Request Failed: 200 ERROR - None -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: PASS -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: PASS -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: FAIL ERROR - Exception details: Got 5 recs instead of 3 -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'Pool with that name already exists') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): Pool with that name already exists -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'*** Provider Virt_ResourcePoolConfigurationService(20635) exiting due to a SIGSEGV signal ') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): *** Provider Virt_ResourcePoolConfigurationService(20635) exiting due to a SIGSEGV signal -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ERROR - CIMError : (1, u'Unable to parse embedded object') Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "15_mod_system_settings.py", line 103, in main ret = service.ModifySystemSettings(SystemSettings=vssd) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 32, in __call__ return self.__invoker(self.__name, args) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 44, in __invoke return self.conn.InvokeMethod(method, self.inst, **params) File "/usr/lib/python2.5/site-packages/pywbem/cim_operations.py", line 801, in InvokeMethod result = self.methodcall(MethodName, obj, **params) File "/usr/lib/python2.5/site-packages/pywbem/cim_operations.py", line 362, in methodcall raise CIMError(code, tt[0][1]['DESCRIPTION']) CIMError: (1, u'Unable to parse embedded object') ERROR - None InvokeMethod(ModifySystemSettings): Unable to parse embedded object -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:ps2 No such instance (no device domain/mouse:ps2) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From rmaciel at linux.vnet.ibm.com Tue Jun 9 18:05:54 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 09 Jun 2009 15:05:54 -0300 Subject: [Libvirt-cim] [PATCH] Adds indication capabilities to migration jobs (create, modify, delete) Message-ID: # HG changeset patch # User Richard Maciel # Date 1244508974 10800 # Node ID c9699a6e245736c7dbf1e65960bd8ef130277dbf # Parent b988eaa240cd4f577e74829e1c300aa2dabab023 Adds indication capabilities to migration jobs (create, modify, delete) This code just adds the filter, since the event methods are already implemented Signed-off-by: Richard Maciel diff -r b988eaa240cd -r c9699a6e2457 src/Virt_ComputerSystemMigrationIndication.c --- a/src/Virt_ComputerSystemMigrationIndication.c Fri Jun 12 15:11:51 2009 -0700 +++ b/src/Virt_ComputerSystemMigrationIndication.c Mon Jun 08 21:56:14 2009 -0300 @@ -45,11 +45,17 @@ DECLARE_FILTER(xen_created, "Xen_ComputerSystemMigrationJobCreatedIndication"); DECLARE_FILTER(xen_mod, "Xen_ComputerSystemMigrationJobModifiedIndication"); DECLARE_FILTER(xen_deleted, "Xen_ComputerSystemMigrationJobDeletedIndication"); +DECLARE_FILTER(kvm_created, "KVM_ComputerSystemMigrationJobCreatedIndication"); +DECLARE_FILTER(kvm_deleted, "KVM_ComputerSystemMigrationJobDeletedIndication"); +DECLARE_FILTER(kvm_mod, "KVM_ComputerSystemMigrationJobModifiedIndication"); static struct std_ind_filter *filters[] = { &xen_created, &xen_mod, &xen_deleted, + &kvm_created, + &kvm_mod, + &kvm_deleted, NULL, }; From rmaciel at linux.vnet.ibm.com Tue Jun 23 17:29:15 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 23 Jun 2009 14:29:15 -0300 Subject: [Libvirt-cim] [PATCH] Fix compile issue in Virt_RASD In-Reply-To: References: Message-ID: <4A4110EB.3010502@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1245354578 25200 > # Node ID c7ff92e2672e224d6b4016573ab836f74f0701ed > # Parent 3fa64e808da1d96eeb7e58f6f0532a4c00deba4b > Fix compile issue in Virt_RASD > > This issue is seen with newer versions of gcc. Particularly, gcc-4.1.2 > > Signed-off-by: Kaitlin Rupert > > diff -r 3fa64e808da1 -r c7ff92e2672e src/Virt_RASD.c > --- a/src/Virt_RASD.c Fri Jun 12 15:11:51 2009 -0700 > +++ b/src/Virt_RASD.c Thu Jun 18 12:49:38 2009 -0700 > @@ -109,7 +109,7 @@ > CMPIStatus s = {CMPI_RC_OK, NULL}; > virConnectPtr conn = NULL; > virDomainPtr dom = NULL; > - struct infostore_ctx *info; > + struct infostore_ctx *info = NULL; > uint32_t weight; > uint64_t limit; > uint64_t count; > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Tue Jun 23 17:38:25 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Tue, 23 Jun 2009 23:08:25 +0530 Subject: [Libvirt-cim] Test Run Summary (Jun 24 2009): KVM on SLES with sfcb Message-ID: <4A411311.9020401@linux.vnet.ibm.com> ================================================= Test Run Summary (Jun 24 2009): KVM on SLES with sfcb ================================================= Distro: Kernel: 2.6.27.19-5-default libvirt: 0.4.6 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.2 Libvirt-cim revision: 900 Libvirt-cim changeset: 4bd5db5f5442 Cimtest revision: 699 Cimtest changeset: 4882e862407f ================================================= FAIL : 9 XFAIL : 4 SKIP : 7 PASS : 138 ----------------- Total : 158 ================================================= FAIL Test Summary: ComputerSystemIndication - 01_created_indication.py: FAIL HostSystem - 03_hs_to_settdefcap.py: FAIL NetworkPort - 03_user_netport.py: FAIL RASD - 07_parent_disk_pool.py: FAIL RedirectionService - 01_enum_crs.py: FAIL ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL SettingsDefineCapabilities - 01_forward.py: FAIL VirtualSystemManagementService - 14_define_sys_disk.py: FAIL VirtualSystemSnapshotService - 03_create_snapshot.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: VSSD - 02_bootldr.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: FAIL ERROR - Waited too long for destroy indication -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - 'KVM_SettingsDefineCapabilities' returned 8 RASD objects instead of 4 Class not found -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: FAIL ERROR - Got CIM error ResourceSettings Error: Invalid Network Type specified with return code 1 ERROR - Unable to define domain test_domain InvokeMethod(DefineSystem): ResourceSettings Error: Invalid Network Type specified -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: PASS -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: FAIL 07_parent_disk_pool.py:47: DeprecationWarning: the sets module is deprecated from sets import Set ERROR - Exception details: Got 5 recs instead of 3 -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: FAIL 01_enum_crs.py:29: DeprecationWarning: the sets module is deprecated from sets import Set ERROR - TypeError : __call__() takes exactly 1 argument (2 given) Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "01_enum_crs.py", line 108, in main if res_val != exp_val: TypeError: __call__() takes exactly 1 argument (2 given) ERROR - None Class not found -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'*** Provider Virt_ResourcePoolConfigurationService(10347) exiting due to a SIGSEGV signal ') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): *** Provider Virt_ResourcePoolConfigurationService(10347) exiting due to a SIGSEGV signal -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: FAIL ERROR - KVM_SettingsDefineCapabilities returned 8 ResourcePool objects instead of 4 -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: FAIL ERROR - Got CIM error ResourceSettings Error: No Network Type specified with return code 1 ERROR - Unable to define rstest_disk_domain InvokeMethod(DefineSystem): ResourceSettings Error: No Network Type specified -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:ps2 No such instance (no device domain/mouse:ps2) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: FAIL ERROR - Exception: (1, u'*** Provider Virt_VirtualSystemSnapshotService(6355) exiting due to a SIGSEGV signal ') ERROR - Failed to remove snapshot file for snapshot_vm InvokeMethod(CreateSnapshot): *** Provider Virt_VirtualSystemSnapshotService(6355) exiting due to a SIGSEGV signal -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Tue Jun 23 18:15:58 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Tue, 23 Jun 2009 14:15:58 -0400 Subject: [Libvirt-cim] Test Run Summary (Jun 23 2009): KVM on with sfcb Message-ID: <200906231815.n5NIFwZN013185@d01av02.pok.ibm.com> ================================================= Test Run Summary (Jun 23 2009): KVM on with sfcb ================================================= Distro: Kernel: 2.6.27.19-5-pae libvirt: 0.4.6 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.2 Libvirt-cim revision: 900 Libvirt-cim changeset: 4bd5db5f5442+ Cimtest revision: 707 Cimtest changeset: d67a606da9f7 ================================================= FAIL : 6 XFAIL : 4 SKIP : 9 PASS : 139 ----------------- Total : 158 ================================================= FAIL Test Summary: ComputerSystemIndication - 01_created_indication.py: FAIL NetworkPort - 03_user_netport.py: FAIL RASD - 07_parent_disk_pool.py: FAIL ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL VirtualSystemManagementService - 14_define_sys_disk.py: FAIL VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 02_nosystems.py: SKIP LogicalDisk - 02_nodevs.py: SKIP VSSD - 02_bootldr.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: FAIL ERROR - Waited too long for define indication ERROR - Waited too long for start indication ERROR - Waited too long for destroy indication -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: FAIL ERROR - Got CIM error ResourceSettings Error: Invalid Network Type specified with return code 1 ERROR - Unable to define domain test_domain InvokeMethod(DefineSystem): ResourceSettings Error: Invalid Network Type specified -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: PASS -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: FAIL 07_parent_disk_pool.py:47: DeprecationWarning: the sets module is deprecated from sets import Set ERROR - Exception details: Got 5 recs instead of 3 -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'*** Provider Virt_ResourcePoolConfigurationService(30609) exiting due to a SIGSEGV signal ') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): *** Provider Virt_ResourcePoolConfigurationService(30609) exiting due to a SIGSEGV signal -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: XFAIL -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: FAIL ERROR - Got CIM error ResourceSettings Error: No Network Type specified with return code 1 ERROR - Unable to define rstest_disk_domain InvokeMethod(DefineSystem): ResourceSettings Error: No Network Type specified -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ERROR - CIMError : (1, u'Unable to parse embedded object') Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "15_mod_system_settings.py", line 103, in main ret = service.ModifySystemSettings(SystemSettings=vssd) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 32, in __call__ return self.__invoker(self.__name, args) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 44, in __invoke return self.conn.InvokeMethod(method, self.inst, **params) File "/usr/lib/python2.6/site-packages/pywbem/cim_operations.py", line 801, in InvokeMethod result = self.methodcall(MethodName, obj, **params) File "/usr/lib/python2.6/site-packages/pywbem/cim_operations.py", line 362, in methodcall raise CIMError(code, tt[0][1]['DESCRIPTION']) CIMError: (1, u'Unable to parse embedded object') ERROR - None InvokeMethod(ModifySystemSettings): Unable to parse embedded object -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:ps2 No such instance (no device domain/mouse:ps2) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From rmaciel at linux.vnet.ibm.com Tue Jun 23 18:36:11 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 23 Jun 2009 15:36:11 -0300 Subject: [Libvirt-cim] [PATCH] Don't set bootlist for PV and LXC guests In-Reply-To: <8ded9387915f4eb87bab.1245434812@localhost.localdomain> References: <8ded9387915f4eb87bab.1245434812@localhost.localdomain> Message-ID: <4A41209B.4040803@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1245432251 25200 > # Node ID 8ded9387915f4eb87bab3ba503960a8521e7704f > # Parent 468635e4ee759f63dad8a1a12276f26b85fce864 > Don't set bootlist for PV and LXC guests > > Only XenFV and KVM / QEMU guests have the option of specifying a bootlist. > This change avoids setting this value for PV guests, which can result in a > seg fault. > > diff -r 468635e4ee75 -r 8ded9387915f libxkutil/device_parsing.c > --- a/libxkutil/device_parsing.c Mon Jun 15 17:26:12 2009 -0700 > +++ b/libxkutil/device_parsing.c Fri Jun 19 10:24:11 2009 -0700 > @@ -861,8 +861,10 @@ > else > dominfo->type = -1; > > - dominfo->os_info.fv.bootlist = blist; > - dominfo->os_info.fv.bootlist_ct = bl_size; > + if (STREQC(dominfo->os_info.fv.type, "hvm")) { > + dominfo->os_info.fv.bootlist_ct = bl_size; > + dominfo->os_info.fv.bootlist = blist; > + } > > return 1; > } > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From rmaciel at linux.vnet.ibm.com Tue Jun 23 21:16:20 2009 From: rmaciel at linux.vnet.ibm.com (Richard Maciel) Date: Tue, 23 Jun 2009 18:16:20 -0300 Subject: [Libvirt-cim] [PATCH 0 of 3] Add support for logical type storage pools In-Reply-To: References: Message-ID: <4A414624.7030904@linux.vnet.ibm.com> +1 Kaitlin Rupert wrote: > This is the last type of storage pool left to support. > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Richard Maciel, MSc IBM Linux Technology Center rmaciel at linux.vnet.ibm.com From snmishra at us.ibm.com Wed Jun 24 00:22:20 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Tue, 23 Jun 2009 17:22:20 -0700 Subject: [Libvirt-cim] [PATCH] Update template RASD in SettingsDefineCapabilities Message-ID: # HG changeset patch # User snmishra at us.ibm.com # Date 1245802726 25200 # Node ID f01f53df87f130915c6152c3a2c97eb9412853b3 # Parent 4bd5db5f544279f099b4d7565157c675cf072936 Update template RASD in SettingsDefineCapabilities. This patch completes the work required to support bridge NICs. Signed-off-by: Sharad Mishra diff -r 4bd5db5f5442 -r f01f53df87f1 src/Virt_SettingsDefineCapabilities.c --- a/src/Virt_SettingsDefineCapabilities.c Mon Jun 22 11:17:56 2009 -0700 +++ b/src/Virt_SettingsDefineCapabilities.c Tue Jun 23 17:18:46 2009 -0700 @@ -538,6 +538,8 @@ static CMPIStatus set_net_props(int type, const CMPIObjectPath *ref, const char *id, + const char *net_type, + const char *net_name, uint64_t num_nics, const char *model, struct inst_list *list) @@ -549,6 +551,10 @@ if ((inst == NULL) || (s.rc != CMPI_RC_OK)) goto out; + CMSetProperty(inst, "NetworkType", (CMPIValue *)net_type, CMPI_chars); + if (net_name != NULL) + CMSetProperty(inst, "NetworkName", + (CMPIValue *)net_name, CMPI_chars); CMSetProperty(inst, "InstanceID", (CMPIValue *)id, CMPI_chars); CMSetProperty(inst, "VirtualQuantity", (CMPIValue *)&num_nics, CMPI_uint64); @@ -571,6 +577,9 @@ uint64_t num_nics; const char *id; CMPIStatus s = {CMPI_RC_OK, NULL}; + int i,j; + const char *type[] = {"network", "bridge"}; + const char *model[] = {"e1000", NULL}; switch (template_type) { case SDC_RASD_MIN: @@ -599,12 +608,14 @@ } - s = set_net_props(template_type, ref, id, num_nics, "e1000", list); - if (s.rc != CMPI_RC_OK) - goto out; - - s = set_net_props(template_type, ref, id, num_nics, NULL, list); - + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + s = set_net_props(template_type, ref, id, type[i], NULL, num_nics, model[j], list); + if (s.rc != CMPI_RC_OK) + goto out; + } + } + out: return s; } From kaitlin at linux.vnet.ibm.com Wed Jun 24 15:09:36 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 24 Jun 2009 08:09:36 -0700 Subject: [Libvirt-cim] [PATCH] Update template RASD in SettingsDefineCapabilities In-Reply-To: References: Message-ID: <4A4241B0.9030005@linux.vnet.ibm.com> > @@ -599,12 +608,14 @@ > } > > > - s = set_net_props(template_type, ref, id, num_nics, "e1000", list); > - if (s.rc != CMPI_RC_OK) > - goto out; > - > - s = set_net_props(template_type, ref, id, num_nics, NULL, list); > - > + for (i = 0; i < 2; i++) { > + for (j = 0; j < 2; j++) { > + s = set_net_props(template_type, ref, id, type[i], NULL, num_nics, model[j], list); For bridge type networks, you'll want to pass a sample value for net_name. Also, this line is longer than 80 characters long. Otherwise, looks good! -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 24 15:56:25 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 24 Jun 2009 08:56:25 -0700 Subject: [Libvirt-cim] [PATCH] Signed-off-by: Kaitlin Rupert Message-ID: <983e35ff6034988d958e.1245858985@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1245858951 25200 # Node ID 983e35ff6034988d958ec4425d3419906b5c516a # Parent 3fa64e808da1d96eeb7e58f6f0532a4c00deba4b Signed-off-by: Kaitlin Rupert diff -r 3fa64e808da1 -r 983e35ff6034 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Fri Jun 12 15:11:51 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Wed Jun 24 08:55:51 2009 -0700 @@ -537,6 +537,7 @@ { const char *val = NULL; const char *msg = NULL; + char *network = NULL; if (cu_get_str_prop(inst, "Address", &val) != CMPI_RC_OK) { val = _net_rand_mac(); @@ -561,8 +562,14 @@ if (val == NULL) return "No NetworkPool specified and no default available"; + network = name_from_pool_id(val); + if (network == NULL) { + msg = "PoolID specified is not formatted properly"; + goto out; + } + free(dev->dev.net.source); - dev->dev.net.source = name_from_pool_id(val); + dev->dev.net.source = strdup(network); free(dev->dev.net.model); if (cu_get_str_prop(inst, "ResourceSubType", &val) != CMPI_RC_OK) @@ -571,6 +578,7 @@ dev->dev.net.model = strdup(val); out: + free(network); return msg; } From kaitlin at linux.vnet.ibm.com Wed Jun 24 16:05:25 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 24 Jun 2009 09:05:25 -0700 Subject: [Libvirt-cim] [PATCH] Add support for logical pools to SDC Message-ID: <7e50d31dd6029a354469.1245859525@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1245859136 25200 # Node ID 7e50d31dd6029a354469d8b1ade7b705f02b5e1c # Parent 983e35ff6034988d958ec4425d3419906b5c516a Add support for logical pools to SDC There isn't much that needs to be done for logical pools. The user will need to specify the Path as something like: "/dev/VolGroup01" When calling CreateChildResourcePool(), the user will also need to specify the ElementName as an existing LVM volume group, like: "VolGroup01". This is different from the other pools (which any name for ElementName can be used). Signed-off-by: Kaitlin Rupert diff -r 983e35ff6034 -r 7e50d31dd602 src/Virt_SettingsDefineCapabilities.c --- a/src/Virt_SettingsDefineCapabilities.c Wed Jun 24 08:55:51 2009 -0700 +++ b/src/Virt_SettingsDefineCapabilities.c Wed Jun 24 08:58:56 2009 -0700 @@ -1239,12 +1239,13 @@ CMPIInstance *inst; CMPIStatus s = {CMPI_RC_OK, NULL}; const char *path = "/dev/null"; - int type[5] = {DISK_POOL_DIR, + int type[6] = {DISK_POOL_DIR, DISK_POOL_FS, DISK_POOL_NETFS, DISK_POOL_DISK, - DISK_POOL_ISCSI}; - int pool_types = 5; + DISK_POOL_ISCSI, + DISK_POOL_LOGICAL}; + int pool_types = 6; int i; switch (template_type) { From kaitlin at linux.vnet.ibm.com Wed Jun 24 16:07:03 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 24 Jun 2009 09:07:03 -0700 Subject: [Libvirt-cim] [PATCH] (#2) Add check to ensure PoolID specified in NetRASD has valid format Message-ID: <76be9533b5bab87a55c1.1245859623@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1245859606 25200 # Node ID 76be9533b5bab87a55c14ab68640c82cfd400b7b # Parent 3fa64e808da1d96eeb7e58f6f0532a4c00deba4b (#2) Add check to ensure PoolID specified in NetRASD has valid format Updates from 1 to 2: -Add a proper subject and commit log to patch Signed-off-by: Kaitlin Rupert diff -r 3fa64e808da1 -r 76be9533b5ba src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Fri Jun 12 15:11:51 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Wed Jun 24 09:06:46 2009 -0700 @@ -537,6 +537,7 @@ { const char *val = NULL; const char *msg = NULL; + char *network = NULL; if (cu_get_str_prop(inst, "Address", &val) != CMPI_RC_OK) { val = _net_rand_mac(); @@ -561,8 +562,14 @@ if (val == NULL) return "No NetworkPool specified and no default available"; + network = name_from_pool_id(val); + if (network == NULL) { + msg = "PoolID specified is not formatted properly"; + goto out; + } + free(dev->dev.net.source); - dev->dev.net.source = name_from_pool_id(val); + dev->dev.net.source = strdup(network); free(dev->dev.net.model); if (cu_get_str_prop(inst, "ResourceSubType", &val) != CMPI_RC_OK) @@ -571,6 +578,7 @@ dev->dev.net.model = strdup(val); out: + free(network); return msg; } From kaitlin at linux.vnet.ibm.com Wed Jun 24 16:00:50 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 24 Jun 2009 09:00:50 -0700 Subject: [Libvirt-cim] [PATCH] Signed-off-by: Kaitlin Rupert In-Reply-To: <983e35ff6034988d958e.1245858985@localhost.localdomain> References: <983e35ff6034988d958e.1245858985@localhost.localdomain> Message-ID: <4A424DB2.8030601@linux.vnet.ibm.com> Kaitlin Rupert wrote: > # HG changeset patch > # User Kaitlin Rupert > # Date 1245858951 25200 > # Node ID 983e35ff6034988d958ec4425d3419906b5c516a > # Parent 3fa64e808da1d96eeb7e58f6f0532a4c00deba4b > Signed-off-by: Kaitlin Rupert > > diff -r 3fa64e808da1 -r 983e35ff6034 src/Virt_VirtualSystemManagementService.c Please disregard this patch. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Wed Jun 24 17:13:15 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 24 Jun 2009 10:13:15 -0700 Subject: [Libvirt-cim] [PATCH] Verify specified UUID is not in use by existing guest Message-ID: <7417f62e29eb8b37acb6.1245863595@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1245863542 25200 # Node ID 7417f62e29eb8b37acb66e616e49f51901f610c6 # Parent 76be9533b5bab87a55c14ab68640c82cfd400b7b Verify specified UUID is not in use by existing guest Before generating the XML needed to define a guest, make sure a guest with the same UUID is not already defined. Signed-off-by: Kaitlin Rupert diff -r 76be9533b5ba -r 7417f62e29eb src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Wed Jun 24 09:06:46 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Wed Jun 24 10:12:22 2009 -0700 @@ -1243,6 +1243,8 @@ CMPIInstance *inst = NULL; char *xml = NULL; const char *msg = NULL; + virConnectPtr conn = NULL; + virDomainPtr dom = NULL; struct domain *domain = NULL; @@ -1268,6 +1270,26 @@ goto out; } + if (domain->uuid != NULL) { + conn = connect_by_classname(_BROKER, CLASSNAME(ref), NULL); + if (conn == NULL) { + cu_statusf(_BROKER, s, + CMPI_RC_ERR_FAILED, + "Error connecting to libvirt"); + goto out; + } + + dom = virDomainLookupByUUIDString(conn, domain->uuid); + if (dom != NULL) { + cu_statusf(_BROKER, s, + CMPI_RC_ERR_FAILED, + "Guest '%s' is already defined with UUID %s", + virDomainGetName(dom), + domain->uuid); + goto out; + } + } + msg = classify_resources(resources, NAMESPACE(ref), domain); if (msg != NULL) { CU_DEBUG("Failed to classify resources: %s", msg); @@ -1295,6 +1317,8 @@ out: cleanup_dominfo(&domain); free(xml); + virDomainFree(dom); + virConnectClose(conn); return inst; } From kaitlin at linux.vnet.ibm.com Wed Jun 24 17:27:27 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Wed, 24 Jun 2009 10:27:27 -0700 Subject: [Libvirt-cim] [PATCH] Set the OperationalStatus attribute of VirtualSystemManagementService Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1245864436 25200 # Node ID f1f435da7db3230365969a7abdbeeff9ef154676 # Parent 7417f62e29eb8b37acb66e616e49f51901f610c6 Set the OperationalStatus attribute of VirtualSystemManagementService As long as the providers are installed properly, the VirtualSystemManagementService should always be available. So we just need to statically set the value as 'OK'. Signed-off-by: Kaitlin Rupert diff -r 7417f62e29eb -r f1f435da7db3 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Wed Jun 24 10:12:22 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Wed Jun 24 10:27:16 2009 -0700 @@ -2273,6 +2273,8 @@ unsigned long hv_version = 0; const char * hv_type = NULL; char *caption = NULL; + CMPIArray *array; + uint16_t op_status; *_inst = NULL; conn = connect_by_classname(broker, CLASSNAME(reference), &s); @@ -2352,6 +2354,16 @@ CMSetProperty(inst, "Release", (CMPIValue *)PACKAGE_VERSION, CMPI_chars); + array = CMNewArray(broker, 1, CMPI_uint16, &s); + if ((s.rc != CMPI_RC_OK) || (CMIsNullObject(array))) + goto out; + + op_status = CIM_OPERATIONAL_STATUS; + CMSetArrayElementAt(array, 0, &op_status, CMPI_uint16); + + CMSetProperty(inst, "OperationalStatus", + (CMPIValue *)&array, CMPI_uint16A); + if (is_get_inst) { s = cu_validate_ref(broker, reference, inst); if (s.rc != CMPI_RC_OK) diff -r 7417f62e29eb -r f1f435da7db3 src/svpc_types.h --- a/src/svpc_types.h Wed Jun 24 10:12:22 2009 -0700 +++ b/src/svpc_types.h Wed Jun 24 10:27:16 2009 -0700 @@ -22,6 +22,8 @@ #ifndef __SVPC_TYPES_H #define __SVPC_TYPES_H +#define CIM_OPERATIONAL_STATUS 2 + #define CIM_RES_TYPE_ALL 0 #define CIM_RES_TYPE_PROC 3 #define CIM_RES_TYPE_MEM 4 From snmishra at us.ibm.com Wed Jun 24 18:43:30 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Wed, 24 Jun 2009 11:43:30 -0700 Subject: [Libvirt-cim] [PATCH] (#2) - Update template RASD in SettingsDefineCapabilities Message-ID: <625b84c62be351f7bb0d.1245869010@elm3b24.beaverton.ibm.com> # HG changeset patch # User snmishra at us.ibm.com # Date 1245868683 25200 # Node ID 625b84c62be351f7bb0d7beb7807373a43ba5cf4 # Parent 4bd5db5f544279f099b4d7565157c675cf072936 (#2) - Update template RASD in SettingsDefineCapabilities. This patch completes the work required to support bridge NICs. #2 - Added bridge name to the template. Signed-off-by: Sharad Mishra diff -r 4bd5db5f5442 -r 625b84c62be3 src/Virt_SettingsDefineCapabilities.c --- a/src/Virt_SettingsDefineCapabilities.c Mon Jun 22 11:17:56 2009 -0700 +++ b/src/Virt_SettingsDefineCapabilities.c Wed Jun 24 11:38:03 2009 -0700 @@ -538,6 +538,8 @@ static CMPIStatus set_net_props(int type, const CMPIObjectPath *ref, const char *id, + const char *net_type, + const char *net_name, uint64_t num_nics, const char *model, struct inst_list *list) @@ -549,6 +551,10 @@ if ((inst == NULL) || (s.rc != CMPI_RC_OK)) goto out; + CMSetProperty(inst, "NetworkType", (CMPIValue *)net_type, CMPI_chars); + if (net_name != NULL) + CMSetProperty(inst, "NetworkName", + (CMPIValue *)net_name, CMPI_chars); CMSetProperty(inst, "InstanceID", (CMPIValue *)id, CMPI_chars); CMSetProperty(inst, "VirtualQuantity", (CMPIValue *)&num_nics, CMPI_uint64); @@ -571,6 +577,10 @@ uint64_t num_nics; const char *id; CMPIStatus s = {CMPI_RC_OK, NULL}; + int i,j; + const char *type[] = {"network", "bridge"}; + const char *model[] = {"e1000", NULL}; + const char *name[] = {NULL, "br0"}; switch (template_type) { case SDC_RASD_MIN: @@ -599,12 +609,21 @@ } - s = set_net_props(template_type, ref, id, num_nics, "e1000", list); - if (s.rc != CMPI_RC_OK) - goto out; - - s = set_net_props(template_type, ref, id, num_nics, NULL, list); - + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + s = set_net_props(template_type, + ref, + id, + type[i], + name[i], + num_nics, + model[j], + list); + if (s.rc != CMPI_RC_OK) + goto out; + } + } + out: return s; } From deeptik at linux.vnet.ibm.com Fri Jun 26 22:31:04 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Fri, 26 Jun 2009 15:31:04 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] Adding new tc to verify fs storage pool creation Message-ID: <1e14cb463dc2251286e8.1246055464@elm3b151.beaverton.ibm.com> # HG changeset patch # User Deepti B. Kalakeri # Date 1246055400 25200 # Node ID 1e14cb463dc2251286e8e82099ac410c4e8d3453 # Parent d67a606da9f7d631368d04280865eb9a21e7ea8a [TEST] Adding new tc to verify fs storage pool creation. This tc will not be run in the batch mode of cimtest and hence needs to be run individually using the command below. python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs -v Xen -u -p Tested with Xen on RHEL with current sources for fs type pool. Will Update the patch to include logical pool verification as well. Signed-off-by: Deepti B. Kalakeri diff -r d67a606da9f7 -r 1e14cb463dc2 suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py Fri Jun 26 15:30:00 2009 -0700 @@ -0,0 +1,235 @@ +#!/usr/bin/python +# +# Copyright 2009 IBM Corp. +# +# Authors: +# Deepti B. Kalakeri +# +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# This test case should test the CreateChildResourcePool service +# supplied by the RPCS provider. +# This tc verifies the FileSystem Type storage pool. +# +# The test case is not run in the batch run and we need to run it using +# the following command: +# python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs +# -v Xen -u -p +# +# Where t can be : +# 2 - FileSystem +# 4 - Logical etc +# +# +# Date : 27.06.2009 + +import os +import sys +import TestSuite +from optparse import OptionParser +from CimTest import Globals +from XenKvmLib.classes import inst_to_mof, get_typed_class +from CimTest.Globals import logger, log_param +from commands import getstatusoutput +from pywbem import WBEMConnection, cim_types +from distutils.text_file import TextFile +from XenKvmLib.pool import get_pool_rasds + +PASS = 0 +FAIL = 1 +supp_types = [ 'Xen', 'KVM' ] +pool_types = { 2 : 'DISK_POOL_FS', 4 : 'DISK_POOL_LOGICAL' } + +def verify_inputs(part_dev, mount_pt, pool_type): + if pool_type not in pool_types.keys(): + logger.error("Pool type '%s' specified is not valid", pool_type) + return FAIL + + # TextFile skips all the lines which have comments and which are blank + fd = TextFile(filename="/etc/fstab") + fstab_info = [x.rstrip('\n') for x in fd.readlines()] + fd.close() + + for line in fstab_info: + try: + # Check if the specified partition is mounted before using it + if part_dev in line.split()[0]: + logger.error("[%s] already mounted", part_dev) + raise Exception("Please specify free partition other than " \ + "[%s]" % part_dev) + + # Check if mount point is already used for mounting + if mount_pt in line.split()[1]: + logger.error("[%s] already mounted", mount_pt) + raise Exception("Please specify dir other than [%s]" %mount_pt) + + except Exception, details: + logger.error("Exception details is %s", details) + return FAIL + + ## Check if the mount point specified already exist if not then create it.. + if not os.path.exists(mount_pt): + os.mkdir(mount_pt) + else: + ## Check if the mount point specified is a dir + if not os.path.isdir(mount_pt): + logger.error("The mount point [%s] should be a dir", mount_pt) + return FAIL + + files = os.listdir(mount_pt) + if len(files) != 0: + logger.info("The mount point [%s] given is not empty", mount_pt) + + return PASS + +def get_uri(virt): + if virt == 'Xen': + vuri = 'xen:///' + elif vir_type == 'Kvm': + vuri = 'qemu:///system' + return vuri + +def verify_pool(virt, pool_name): + vuri = get_uri(virt) + cmd = "virsh -c %s pool-list --all | grep %s" %(vuri, pool_name) + return getstatusoutput(cmd) + +def main(): + usage = "usage: %prog [options] \nex: %prog -i localhost" + parser = OptionParser(usage) + + parser.add_option("-i", "--host-url", dest="h_url", default="localhost:5988", + help="URL of CIMOM to connect to (host:port)") + parser.add_option("-N", "--ns", dest="ns", default="root/virt", + help="Namespace (default is root/virt)") + parser.add_option("-u", "--user", dest="username", default=None, + help="Auth username for CIMOM on source system") + parser.add_option("-p", "--pass", dest="password", default=None, + help="Auth password for CIMOM on source system") + parser.add_option("-v", "--virt-type", dest="virt", default=None, + help="Virtualization type [ Xen | KVM ]") + parser.add_option("-t", "--pool-type", dest="pool_type", default=None, + help="Pool type:[ fs | logical ]") + parser.add_option("-d", "--part-dev", dest="part_dev", default=None, + help="specify the free partition to be used") + parser.add_option("-m", "--mnt_pt", dest="mnt_pt", default=None, + help="Mount point to be used") + parser.add_option("-n", "--pool-name", dest="pool_name", default=None, + help="Pool to be created") + + (options, args) = parser.parse_args() + + try: + if options.part_dev == None: + raise Exception("Free Partition to be mounted not specified") + + if options.mnt_pt == None: + raise Exception("Mount points to be used not specified") + + if options.pool_name == None: + raise Exception("Must specify the Pool Name to be created") + + if options.virt == None or options.virt not in supp_types: + raise Exception("Must specify virtualization type") + + if options.pool_type == None: + raise Exception("Must specify pool type to be tested") + + except Exception, details: + print "FATAL: ", details + print parser.print_help() + return FAIL + + part_dev = options.part_dev + mount_pt = options.mnt_pt + pool_name = options.pool_name + pool_type = cim_types.Uint16(options.pool_type) + virt = options.virt + + testsuite = TestSuite.TestSuite(log=True) + log_param(file_name="cimtest.log") + print "Please check cimtest.log in the curr dir for debug log msgs..." + status = verify_inputs(part_dev, mount_pt, pool_type) + if status != PASS: + logger.error("Input verification failed") + return status + + status, out = verify_pool(virt, pool_name) + if status == PASS: + logger.error("Pool --> '%s' already exist", pool_name) + logger.error("Specify some other pool name") + return status + + if ":" in options.h_url: + (sysname, port) = options.h_url.split(":") + else: + sysname = options.h_url + + src_conn = WBEMConnection('http://%s' % sysname, + (options.username, options.password), options.ns) + + os.environ['CIM_NS'] = Globals.CIM_NS = options.ns + os.environ['CIM_USER'] = Globals.CIM_USER = options.username + os.environ['CIM_PASS'] = Globals.CIM_PASS = options.password + + try: + status,dp_rasds = get_pool_rasds(sysname, virt, "DiskPool") + for i in range(0, len(dp_rasds)): + pool_id = "%s/%s" %("DiskPool", pool_name) + dpool_rasd=dp_rasds[i] + dpool_rasd['PoolID'] = pool_id + if dpool_rasd['Type'] == pool_type and \ + dpool_rasd['InstanceID'] == 'Default': + dpool_rasd['DevicePaths'] =[part_dev] + dpool_rasd['Path'] = mount_pt + dpool_rasd['InstanceID'] = pool_id + break + pool_settings = inst_to_mof(dpool_rasd) + rpcs_cn = get_typed_class(virt, "ResourcePoolConfigurationService") + res = src_conn.InvokeMethod("CreateChildResourcePool", + rpcs_cn, + Settings=[pool_settings], + ElementName=pool_name) + except Exception, details: + logger.error("Exception details: %s", details) + + status, out = verify_pool(virt, pool_name) + if status != PASS: + logger.error("Failed to create pool: %s ", pool_name) + return status + + vuri = get_uri(virt) + virsh = "virsh -c %s" % vuri + cmd = "%s pool-destroy %s && %s pool-undefine %s" \ + %(virsh, pool_name, virsh, pool_name) + ret, out = getstatusoutput(cmd) + if ret != PASS: + logger.info("WARNING: pool %s was not cleaned on %s", + pool_name, sysname) + logger.info("WARNING: Please remove it manually") + + logger.info("Pool %s was successfully verified for pool type %s", + pool_name , pool_types[pool_type]) + + # Place holder to give a hint to the user the tc passed + # otherwise the user will have to look into the cimtest.log in the + # current dir. + print "Pool '", pool_name,"' was successfully verified for pool type '", \ + pool_types[pool_type] , "'" + return status +if __name__=="__main__": + sys.exit(main()) + From snmishra at us.ibm.com Fri Jun 26 23:05:33 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Fri, 26 Jun 2009 16:05:33 -0700 Subject: [Libvirt-cim] [PATCH] Set the OperationalStatus attribute of VirtualSystemManagementService In-Reply-To: References: Message-ID: +1 Sharad Mishra System x Enablement Linux Technology Center IBM Kaitlin Rupert To Sent by: libvirt-cim at redhat.com libvirt-cim-bounc cc es at redhat.com Subject [Libvirt-cim] [PATCH] Set the 06/24/2009 10:27 OperationalStatus attribute of AM VirtualSystemManagementService Please respond to List for discussion and development of libvirt CIM # HG changeset patch # User Kaitlin Rupert # Date 1245864436 25200 # Node ID f1f435da7db3230365969a7abdbeeff9ef154676 # Parent 7417f62e29eb8b37acb66e616e49f51901f610c6 Set the OperationalStatus attribute of VirtualSystemManagementService As long as the providers are installed properly, the VirtualSystemManagementService should always be available. So we just need to statically set the value as 'OK'. Signed-off-by: Kaitlin Rupert diff -r 7417f62e29eb -r f1f435da7db3 src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Wed Jun 24 10:12:22 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Wed Jun 24 10:27:16 2009 -0700 @@ -2273,6 +2273,8 @@ unsigned long hv_version = 0; const char * hv_type = NULL; char *caption = NULL; + CMPIArray *array; + uint16_t op_status; *_inst = NULL; conn = connect_by_classname(broker, CLASSNAME(reference), &s); @@ -2352,6 +2354,16 @@ CMSetProperty(inst, "Release", (CMPIValue *)PACKAGE_VERSION, CMPI_chars); + array = CMNewArray(broker, 1, CMPI_uint16, &s); + if ((s.rc != CMPI_RC_OK) || (CMIsNullObject(array))) + goto out; + + op_status = CIM_OPERATIONAL_STATUS; + CMSetArrayElementAt(array, 0, &op_status, CMPI_uint16); + + CMSetProperty(inst, "OperationalStatus", + (CMPIValue *)&array, CMPI_uint16A); + if (is_get_inst) { s = cu_validate_ref(broker, reference, inst); if (s.rc != CMPI_RC_OK) diff -r 7417f62e29eb -r f1f435da7db3 src/svpc_types.h --- a/src/svpc_types.h Wed Jun 24 10:12:22 2009 -0700 +++ b/src/svpc_types.h Wed Jun 24 10:27:16 2009 -0700 @@ -22,6 +22,8 @@ #ifndef __SVPC_TYPES_H #define __SVPC_TYPES_H +#define CIM_OPERATIONAL_STATUS 2 + #define CIM_RES_TYPE_ALL 0 #define CIM_RES_TYPE_PROC 3 #define CIM_RES_TYPE_MEM 4 _______________________________________________ Libvirt-cim mailing list Libvirt-cim at redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: graycol.gif Type: image/gif Size: 105 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: pic27140.gif Type: image/gif Size: 1255 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ecblank.gif Type: image/gif Size: 45 bytes Desc: not available URL: From snmishra at us.ibm.com Fri Jun 26 23:07:19 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Fri, 26 Jun 2009 16:07:19 -0700 Subject: [Libvirt-cim] [PATCH] Add support for logical pools to SDC In-Reply-To: <7e50d31dd6029a354469.1245859525@localhost.localdomain> References: <7e50d31dd6029a354469.1245859525@localhost.localdomain> Message-ID: +1 Sharad Mishra System x Enablement Linux Technology Center IBM Kaitlin Rupert To Sent by: libvirt-cim at redhat.com libvirt-cim-bounc cc es at redhat.com Subject [Libvirt-cim] [PATCH] Add support 06/24/2009 09:05 for logical pools to SDC AM Please respond to List for discussion and development of libvirt CIM # HG changeset patch # User Kaitlin Rupert # Date 1245859136 25200 # Node ID 7e50d31dd6029a354469d8b1ade7b705f02b5e1c # Parent 983e35ff6034988d958ec4425d3419906b5c516a Add support for logical pools to SDC There isn't much that needs to be done for logical pools. The user will need to specify the Path as something like: "/dev/VolGroup01" When calling CreateChildResourcePool(), the user will also need to specify the ElementName as an existing LVM volume group, like: "VolGroup01". This is different from the other pools (which any name for ElementName can be used). Signed-off-by: Kaitlin Rupert diff -r 983e35ff6034 -r 7e50d31dd602 src/Virt_SettingsDefineCapabilities.c --- a/src/Virt_SettingsDefineCapabilities.c Wed Jun 24 08:55:51 2009 -0700 +++ b/src/Virt_SettingsDefineCapabilities.c Wed Jun 24 08:58:56 2009 -0700 @@ -1239,12 +1239,13 @@ CMPIInstance *inst; CMPIStatus s = {CMPI_RC_OK, NULL}; const char *path = "/dev/null"; - int type[5] = {DISK_POOL_DIR, + int type[6] = {DISK_POOL_DIR, DISK_POOL_FS, DISK_POOL_NETFS, DISK_POOL_DISK, - DISK_POOL_ISCSI}; - int pool_types = 5; + DISK_POOL_ISCSI, + DISK_POOL_LOGICAL}; + int pool_types = 6; int i; switch (template_type) { _______________________________________________ Libvirt-cim mailing list Libvirt-cim at redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: graycol.gif Type: image/gif Size: 105 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: pic21919.gif Type: image/gif Size: 1255 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ecblank.gif Type: image/gif Size: 45 bytes Desc: not available URL: From kaitlin at linux.vnet.ibm.com Fri Jun 26 23:57:11 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 26 Jun 2009 16:57:11 -0700 Subject: [Libvirt-cim] [PATCH 1 of 2] Remove type_name param from _do_indication in CSIndication In-Reply-To: References: Message-ID: <6b1f7181f1633e456bc7.1246060631@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1246060573 25200 # Node ID 6b1f7181f1633e456bc7e90c09f7943588c28865 # Parent f1f435da7db3230365969a7abdbeeff9ef154676 Remove type_name param from _do_indication in CSIndication No reason to pass the indication name if we're already passing the indication type. Also, remove the call to set the AffectedSystem property. This property doesn't exist in any of the Indications classes in the 2.21 schema - also doesn't exist in our own local schema. Not sure why this value was being set, doesn't appear to be a property in the 2.16 schema either. Signed-off-by: Kaitlin Rupert diff -r f1f435da7db3 -r 6b1f7181f163 src/Virt_ComputerSystemIndication.c --- a/src/Virt_ComputerSystemIndication.c Wed Jun 24 10:27:16 2009 -0700 +++ b/src/Virt_ComputerSystemIndication.c Fri Jun 26 16:56:13 2009 -0700 @@ -224,16 +224,28 @@ const CMPIContext *ctx, CMPIInstance *affected_inst, int ind_type, - const char *ind_type_name, char *prefix, struct ind_args *args) { + const char *ind_type_name = NULL; CMPIObjectPath *affected_op; CMPIObjectPath *ind_op; CMPIInstance *ind; CMPIStatus s; bool ret = true; + switch (ind_type) { + case CS_CREATED: + ind_type_name = "ComputerSystemCreatedIndication"; + break; + case CS_DELETED: + ind_type_name = "ComputerSystemDeletedIndication"; + break; + case CS_MODIFIED: + ind_type_name = "ComputerSystemModifiedIndication"; + break; + } + ind = get_typed_instance(broker, prefix, ind_type_name, @@ -265,16 +277,9 @@ } CMSetNameSpace(affected_op, args->ns); - switch (ind_type) { - case CS_CREATED: - case CS_DELETED: - CMSetProperty(ind, "AffectedSystem", - (CMPIValue *)&affected_op, CMPI_ref); - break; - case CS_MODIFIED: + if (ind_type == CS_MODIFIED) { CMSetProperty(ind, "PreviousInstance", (CMPIValue *)&affected_inst, CMPI_instance); - break; } CMSetProperty(ind, "SourceInstance", @@ -333,7 +338,6 @@ { bool rc = false; char *name = NULL; - char *type_name = NULL; char *cn = NULL; CMPIObjectPath *op; CMPIInstance *affected_inst; @@ -364,25 +368,13 @@ if (s.rc != CMPI_RC_OK) goto out; - switch (ind_type) { - case CS_CREATED: - type_name = "ComputerSystemCreatedIndication"; - break; - case CS_DELETED: - type_name = "ComputerSystemDeletedIndication"; - break; - case CS_MODIFIED: - type_name = "ComputerSystemModifiedIndication"; - break; - } - CMSetProperty(affected_inst, "Name", (CMPIValue *)name, CMPI_chars); CMSetProperty(affected_inst, "UUID", (CMPIValue *)prev_dom.uuid, CMPI_chars); rc = _do_indication(_BROKER, context, affected_inst, - ind_type, type_name, prefix, args); + ind_type, prefix, args); out: free(cn); From kaitlin at linux.vnet.ibm.com Fri Jun 26 23:57:10 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 26 Jun 2009 16:57:10 -0700 Subject: [Libvirt-cim] [PATCH 0 of 2] Some misc ComputerSystemIndication related changes Message-ID: This is some cleanup that needs to be done in order to properly set the PreviousInstance attribute. Right now, the same value is being used for SourceInstance as well as PreviousInstance, which isn't valid. This issue will be addressed in a follow-up set of patches. From kaitlin at linux.vnet.ibm.com Fri Jun 26 23:57:12 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 26 Jun 2009 16:57:12 -0700 Subject: [Libvirt-cim] [PATCH 2 of 2] Modify _do_instance() so that is takes a previous instance param In-Reply-To: References: Message-ID: <00047bd35641e678e3b7.1246060632@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1246060597 25200 # Node ID 00047bd35641e678e3b7fb0832e5aa8ec4b7a8dd # Parent 6b1f7181f1633e456bc7e90c09f7943588c28865 Modify _do_instance() so that is takes a previous instance param This change is needed so that we can pass in an instance that represents the guest prior to the modification. Currently, we don't have a way to get the previous state of the guest from the event loop. This change is a necessary first step for providing that functionality. Signed-off-by: Kaitlin Rupert diff -r 6b1f7181f163 -r 00047bd35641 src/Virt_ComputerSystemIndication.c --- a/src/Virt_ComputerSystemIndication.c Fri Jun 26 16:56:13 2009 -0700 +++ b/src/Virt_ComputerSystemIndication.c Fri Jun 26 16:56:37 2009 -0700 @@ -222,6 +222,7 @@ static bool _do_indication(const CMPIBroker *broker, const CMPIContext *ctx, + CMPIInstance *prev_inst, CMPIInstance *affected_inst, int ind_type, char *prefix, @@ -279,7 +280,7 @@ if (ind_type == CS_MODIFIED) { CMSetProperty(ind, "PreviousInstance", - (CMPIValue *)&affected_inst, CMPI_instance); + (CMPIValue *)&prev_inst, CMPI_instance); } CMSetProperty(ind, "SourceInstance", @@ -340,6 +341,7 @@ char *name = NULL; char *cn = NULL; CMPIObjectPath *op; + CMPIInstance *prev_inst; CMPIInstance *affected_inst; CMPIStatus s = {CMPI_RC_OK, NULL}; @@ -361,19 +363,21 @@ if ((s.rc != CMPI_RC_OK) || CMIsNullObject(op)) goto out; - /* FIXME: This gets the CS instance after it has been modified. We also - need a way to get the instance before it was modified - that - value is used when setting the PreviousInstance value. */ s = get_domain_by_name(_BROKER, op, name, &affected_inst); if (s.rc != CMPI_RC_OK) goto out; + /* FIXME: We are unable to get the previous CS instance after it has + been modified. Consider keeping track of the previous + state in the place we keep track of the requested state */ + prev_inst = affected_inst; + CMSetProperty(affected_inst, "Name", (CMPIValue *)name, CMPI_chars); CMSetProperty(affected_inst, "UUID", (CMPIValue *)prev_dom.uuid, CMPI_chars); - rc = _do_indication(_BROKER, context, affected_inst, + rc = _do_indication(_BROKER, context, prev_inst, affected_inst, ind_type, prefix, args); out: From kaitlin at linux.vnet.ibm.com Sat Jun 27 00:59:09 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 26 Jun 2009 17:59:09 -0700 Subject: [Libvirt-cim] [PATCH] (#3) Add check to ensure PoolID specified in NetRASD has valid format Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1246064238 25200 # Node ID dd7ce21f085b956aa412af6f0665ab7e4eacfe07 # Parent 2f7ac06918f55d89f099447972b48d06b0140669 (#3) Add check to ensure PoolID specified in NetRASD has valid format Updated from 2 t 3: -Rebase patch based on current sources Updates from 1 to 2: -Add a proper subject and commit log to patch Signed-off-by: Kaitlin Rupert diff -r 2f7ac06918f5 -r dd7ce21f085b src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Wed Jun 24 10:27:16 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Fri Jun 26 17:57:18 2009 -0700 @@ -539,6 +539,7 @@ { const char *val = NULL; const char *msg = NULL; + char *network = NULL; if (cu_get_str_prop(inst, "Address", &val) != CMPI_RC_OK) { val = _net_rand_mac(); @@ -577,7 +578,14 @@ return "No NetworkPool specified no default available"; free(dev->dev.net.source); - dev->dev.net.source = name_from_pool_id(val); + network = name_from_pool_id(val); + if (network == NULL) { + msg = "PoolID specified is not formatted properly"; + goto out; + } + + dev->dev.net.source = strdup(network); + } else return "Invalid Network Type specified"; free(dev->dev.net.model); @@ -587,6 +595,7 @@ else dev->dev.net.model = strdup(val); out: + free(network); return msg; } From kaitlin at linux.vnet.ibm.com Sat Jun 27 02:18:37 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Fri, 26 Jun 2009 19:18:37 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] Adding new tc to verify fs storage pool creation In-Reply-To: <1e14cb463dc2251286e8.1246055464@elm3b151.beaverton.ibm.com> References: <1e14cb463dc2251286e8.1246055464@elm3b151.beaverton.ibm.com> Message-ID: <4A45817D.7080507@linux.vnet.ibm.com> Deepti B. Kalakeri wrote: > # HG changeset patch > # User Deepti B. Kalakeri > # Date 1246055400 25200 > # Node ID 1e14cb463dc2251286e8e82099ac410c4e8d3453 > # Parent d67a606da9f7d631368d04280865eb9a21e7ea8a > [TEST] Adding new tc to verify fs storage pool creation. > > This tc will not be run in the batch mode of cimtest and hence needs to > be run individually using the command below. > > python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs > -v Xen -u -p > > Tested with Xen on RHEL with current sources for fs type pool. > Will Update the patch to include logical pool verification as well. I get the following error: # python create_verify_storagepool.py -t 2 -d /dev/sda1 -m /tmp/mnt -n diskfs -v KVM -u user -p pass Traceback (most recent call last): File "create_verify_storagepool.py", line 41, in import TestSuite ImportError: No module named TestSuite > Signed-off-by: Deepti B. Kalakeri > > diff -r d67a606da9f7 -r 1e14cb463dc2 suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py > +# python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs > +# -v Xen -u -p Instead of passing the type number (which can be difficult to remember), can you have it take a string value instead? Something like: -t fs or -r logical > +# > +# Where t can be : > +# 2 - FileSystem > +# 4 - Logical etc > +# > +# > +# Date : 27.06.2009 > + > +import os > +import sys I had to add the following: sys.path.append('../../../lib') This fixed the error I pasted above.. After fixing this, I got the following error: Traceback (most recent call last): File "create_verify_storagepool.py", line 45, in from XenKvmLib.classes import inst_to_mof, get_typed_class ImportError: No module named XenKvmLib.classes This can be fixed by using the following: sys.path.append('../lib') This needs to be before any imports from the XenKvmLib directory, so you'll need to reorganize your import statements a bit.. > +import TestSuite > +from optparse import OptionParser > +from CimTest import Globals > +from XenKvmLib.classes import inst_to_mof, get_typed_class > +from CimTest.Globals import logger, log_param > +from commands import getstatusoutput > +from pywbem import WBEMConnection, cim_types > +from distutils.text_file import TextFile > +from XenKvmLib.pool import get_pool_rasds > + > +PASS = 0 > +FAIL = 1 > +supp_types = [ 'Xen', 'KVM' ] > +pool_types = { 2 : 'DISK_POOL_FS', 4 : 'DISK_POOL_LOGICAL' } > + > +def verify_inputs(part_dev, mount_pt, pool_type): > + if pool_type not in pool_types.keys(): > + logger.error("Pool type '%s' specified is not valid", pool_type) > + return FAIL > + > + # TextFile skips all the lines which have comments and which are blank > + fd = TextFile(filename="/etc/fstab") > + fstab_info = [x.rstrip('\n') for x in fd.readlines()] > + fd.close() > + > + for line in fstab_info: > + try: > + # Check if the specified partition is mounted before using it > + if part_dev in line.split()[0]: > + logger.error("[%s] already mounted", part_dev) > + raise Exception("Please specify free partition other than " \ > + "[%s]" % part_dev) > + > + # Check if mount point is already used for mounting > + if mount_pt in line.split()[1]: > + logger.error("[%s] already mounted", mount_pt) > + raise Exception("Please specify dir other than [%s]" %mount_pt) What if something is already mounted by it's not listed in /etc/fstab? If you want to be sure something isn't mounted, you can check the output of the "mount" command. > + > + except Exception, details: > + logger.error("Exception details is %s", details) > + return FAIL > + > + ## Check if the mount point specified already exist if not then create it.. > + if not os.path.exists(mount_pt): > + os.mkdir(mount_pt) > + else: > + ## Check if the mount point specified is a dir > + if not os.path.isdir(mount_pt): > + logger.error("The mount point [%s] should be a dir", mount_pt) > + return FAIL > + > + files = os.listdir(mount_pt) > + if len(files) != 0: > + logger.info("The mount point [%s] given is not empty", mount_pt) > + > + return PASS > + > +def get_uri(virt): > + if virt == 'Xen': > + vuri = 'xen:///' > + elif vir_type == 'Kvm': Instead of vir_type, this should be virt. Although, can you check for 'KVM' instead of 'Kvm'? That way it'll be similar to the options that are passed when doing a cimtest bulk run. > + vuri = 'qemu:///system' > + return vuri > + > +def verify_pool(virt, pool_name): > + vuri = get_uri(virt) > + cmd = "virsh -c %s pool-list --all | grep %s" %(vuri, pool_name) Need a space between % and (vuri.. > + return getstatusoutput(cmd) > + > +def main(): > + usage = "usage: %prog [options] \nex: %prog -i localhost" > + parser = OptionParser(usage) > + > + parser.add_option("-i", "--host-url", dest="h_url", default="localhost:5988", > + help="URL of CIMOM to connect to (host:port)") > + parser.add_option("-N", "--ns", dest="ns", default="root/virt", > + help="Namespace (default is root/virt)") > + parser.add_option("-u", "--user", dest="username", default=None, > + help="Auth username for CIMOM on source system") > + parser.add_option("-p", "--pass", dest="password", default=None, > + help="Auth password for CIMOM on source system") > + parser.add_option("-v", "--virt-type", dest="virt", default=None, > + help="Virtualization type [ Xen | KVM ]") Can you add support for LXC here. The disk and network pool support in libvirt is host wide. If you create a pool using the qemu uri, you should also see it using the lxc uri. > + parser.add_option("-t", "--pool-type", dest="pool_type", default=None, > + help="Pool type:[ fs | logical ]") > + parser.add_option("-d", "--part-dev", dest="part_dev", default=None, > + help="specify the free partition to be used") > + parser.add_option("-m", "--mnt_pt", dest="mnt_pt", default=None, > + help="Mount point to be used") > + parser.add_option("-n", "--pool-name", dest="pool_name", default=None, > + help="Pool to be created") > + > + (options, args) = parser.parse_args() > + > + try: > + if options.part_dev == None: > + raise Exception("Free Partition to be mounted not specified") > + > + if options.mnt_pt == None: > + raise Exception("Mount points to be used not specified") > + > + if options.pool_name == None: > + raise Exception("Must specify the Pool Name to be created") > + > + if options.virt == None or options.virt not in supp_types: > + raise Exception("Must specify virtualization type") > + > + if options.pool_type == None: > + raise Exception("Must specify pool type to be tested") > + > + except Exception, details: > + print "FATAL: ", details > + print parser.print_help() > + return FAIL > + > + part_dev = options.part_dev > + mount_pt = options.mnt_pt > + pool_name = options.pool_name > + pool_type = cim_types.Uint16(options.pool_type) > + virt = options.virt > + > + testsuite = TestSuite.TestSuite(log=True) > + log_param(file_name="cimtest.log") > + print "Please check cimtest.log in the curr dir for debug log msgs..." > + status = verify_inputs(part_dev, mount_pt, pool_type) > + if status != PASS: > + logger.error("Input verification failed") > + return status > + > + status, out = verify_pool(virt, pool_name) > + if status == PASS: > + logger.error("Pool --> '%s' already exist", pool_name) > + logger.error("Specify some other pool name") > + return status > + > + if ":" in options.h_url: > + (sysname, port) = options.h_url.split(":") > + else: > + sysname = options.h_url > + > + src_conn = WBEMConnection('http://%s' % sysname, > + (options.username, options.password), options.ns) > + > + os.environ['CIM_NS'] = Globals.CIM_NS = options.ns > + os.environ['CIM_USER'] = Globals.CIM_USER = options.username > + os.environ['CIM_PASS'] = Globals.CIM_PASS = options.password > + > + try: > + status,dp_rasds = get_pool_rasds(sysname, virt, "DiskPool") Need a space between status, and dp_rasds.. > + for i in range(0, len(dp_rasds)): Instead of using "for i in range(0, len(dp_rasds))", why not use: for rasd in dp_rasds: > + pool_id = "%s/%s" %("DiskPool", pool_name) > + dpool_rasd=dp_rasds[i] If you use "for rasd in dp_rasds:", then you don't need this line.. > + dpool_rasd['PoolID'] = pool_id Not sure why you have this line here? Why do you set the PoolID of each instance as you go through the loop? You should only set the attributes of the RASD that matches the type you're looking for below.. Also, the provider ignores PoolID anyway - so you shouldn't need to set it. > + if dpool_rasd['Type'] == pool_type and \ > + dpool_rasd['InstanceID'] == 'Default': I'd put this call in a function.. loop through the template RASDs until you find the RASD you need. Then return that from the function. That'll reduce some of the code in main() and it'll reduce some of the nesting here. > + dpool_rasd['DevicePaths'] =[part_dev] > + dpool_rasd['Path'] = mount_pt > + dpool_rasd['InstanceID'] = pool_id > + break > + pool_settings = inst_to_mof(dpool_rasd) > + rpcs_cn = get_typed_class(virt, "ResourcePoolConfigurationService") > + res = src_conn.InvokeMethod("CreateChildResourcePool", > + rpcs_cn, > + Settings=[pool_settings], > + ElementName=pool_name) > + except Exception, details: > + logger.error("Exception details: %s", details) If you encounter an error here, you'll want to clean up and return an error. No need to verify the pool if InvokeMethod() fails. > + > + status, out = verify_pool(virt, pool_name) > + if status != PASS: > + logger.error("Failed to create pool: %s ", pool_name) > + return status > + > + vuri = get_uri(virt) > + virsh = "virsh -c %s" % vuri > + cmd = "%s pool-destroy %s && %s pool-undefine %s" \ > + %(virsh, pool_name, virsh, pool_name) Need a space between %(virsh... > + ret, out = getstatusoutput(cmd) > + if ret != PASS: > + logger.info("WARNING: pool %s was not cleaned on %s", > + pool_name, sysname) > + logger.info("WARNING: Please remove it manually") I agree - you don't need to return an error here if the cleanup fails. But I would change these to logger.error() statements or include print statements as well. logger.info() statements don't get printed to stdout, so the user won't know they need to clean up their environment. Thanks Deepti! -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From deeptik at linux.vnet.ibm.com Mon Jun 29 13:23:57 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Mon, 29 Jun 2009 06:23:57 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] Adding new tc to verify fs storage pool creation Message-ID: <3d4e90851a09756b52a4.1246281837@elm3b151.beaverton.ibm.com> # HG changeset patch # User Deepti B. Kalakeri # Date 1246281830 25200 # Node ID 3d4e90851a09756b52a452047cfcba8191a1e794 # Parent d67a606da9f7d631368d04280865eb9a21e7ea8a [TEST] Adding new tc to verify fs storage pool creation. Update in patch 2: ------------------ 1) rearranged import stmst 2) add check to see if cimserver is started 3) Added options to clean the old log 4) Added options to get the debug msg on the stdout 5) Added lxc support 6) Moved the looping for setting the poolsettings in a function 7) Rectified the virt_type to virt and also to use KVM for checking while setting vuri Patch 1: -------- This tc will not be run in the batch mode of cimtest and hence needs to be run individually using the command below. python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs -v Xen -u -p Tested with Xen on RHEL with current sources for fs type pool. Will Update the patch to include logical pool verification as well. Signed-off-by: Deepti B. Kalakeri diff -r d67a606da9f7 -r 3d4e90851a09 suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py Mon Jun 29 06:23:50 2009 -0700 @@ -0,0 +1,336 @@ +#!/usr/bin/python +# +# Copyright 2009 IBM Corp. +# +# Authors: +# Deepti B. Kalakeri +# +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# This test case should test the CreateChildResourcePool service +# supplied by the RPCS provider. +# This tc verifies the FileSystem Type storage pool. +# +# The test case is not run in the batch run and we need to run it using +# the following command: +# python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs +# -v Xen -u -p +# +# Where t can be : +# 2 - FileSystem +# 4 - Logical etc +# +# +# Date : 27.06.2009 + +import os +import sys +from optparse import OptionParser +from commands import getstatusoutput +from distutils.text_file import TextFile +from pywbem import WBEMConnection, cim_types +sys.path.append('../../../lib') +from CimTest import Globals +from CimTest.Globals import logger, log_param +sys.path.append('../lib') +from XenKvmLib.classes import inst_to_mof, get_typed_class +from XenKvmLib.pool import get_pool_rasds +sys.path.append('../') +from main import pre_check + +PASS = 0 +FAIL = 1 +TEST_LOG="cimtest.log" + +supp_types = [ 'Xen', 'KVM' , 'LXC' ] +pool_types = { 'DISK_POOL_FS' : 2 } + +def verify_cmd_options(options): + try: + if options.part_dev == None: + raise Exception("Free Partition to be mounted not specified") + + if options.mnt_pt == None: + raise Exception("Mount points to be used not specified") + + if options.pool_name == None: + raise Exception("Must specify the Pool Name to be created") + + if options.virt == None or options.virt not in supp_types: + raise Exception("Must specify virtualization type") + + if options.pool_type == None: + raise Exception("Must specify pool type to be tested") + + except Exception, details: + print "FATAL: ", details + print parser.print_help() + return FAIL + + return PASS + +def env_setup(sysname, virt, clean, debug): + env_ready = pre_check(sysname, virt) + if env_ready != None: + print "\n%s. Please check your environment.\n" % env_ready + return FAIL + + if clean: + cmd = "rm -f %s" % (os.path.join(os.getcwd(), TEST_LOG)) + status, output = getstatusoutput(cmd) + + if debug: + dbg = "-d" + else: + dbg = "" + + return PASS + +def get_pooltype(pooltype, virt): + if pooltype == "fs": + pool_type = pool_types['DISK_POOL_FS'] + else: + logger.error("Invalid pool type ....") + return None, None + return PASS, pool_type + +def verify_inputs(part_dev, mount_pt): + del_dir = False + cmd = "mount" + status, mount_info = getstatusoutput(cmd) + if status != PASS: + logger.error("Failed to get mount info.. ") + return FAIL, del_dir + + for line in mount_info.split('\n'): + try: + # Check if the specified partition is mounted before using it + part_name = line.split()[0] + if part_dev == part_name: + logger.error("[%s] already mounted", part_dev) + raise Exception("Please specify free partition other than " \ + "[%s]" % part_dev) + + # Check if mount point is already used for mounting + mount_name = line.split()[2] + if mount_pt == mount_name: + logger.error("[%s] already mounted", mount_pt) + raise Exception("Please specify dir other than [%s]" %mount_pt) + + except Exception, details: + logger.error("%s", details) + return FAIL, del_dir + + # Check if the mount point specified already exist, if not then create it.. + if not os.path.exists(mount_pt): + os.mkdir(mount_pt) + + # set del_dir to True so that we remove it before exiting from the tc. + del_dir = True + else: + # Check if the mount point specified is a dir + if not os.path.isdir(mount_pt): + logger.error("The mount point [%s] should be a dir", mount_pt) + return FAIL, del_dir + + files = os.listdir(mount_pt) + if len(files) != 0: + logger.info("The mount point [%s] given is not empty", mount_pt) + + return PASS, del_dir + +def get_uri(virt): + if virt == 'Xen': + vuri = 'xen:///' + elif virt == 'KVM': + vuri = 'qemu:///system' + elif virt == 'LXC': + vuri = 'lxc:///system' + return vuri + +def get_pool_settings(dp_rasds, pooltype, part_dev, mount_pt, pool_name): + pool_settings = None + for dpool_rasd in dp_rasds: + if dpool_rasd['Type'] == pooltype and \ + dpool_rasd['InstanceID'] == 'Default': + dpool_rasd['DevicePaths'] =[part_dev] + dpool_rasd['Path'] = mount_pt + dp_pid = "%s/%s" %("DiskPool", pool_name) + dpool_rasd['PoolID'] = dpool_rasd['InstanceID'] = dp_pid + break + if not pool_name in dpool_rasd['InstanceID']: + return pool_settings + + pool_settings = inst_to_mof(dpool_rasd) + return pool_settings + + +def verify_pool(virt, pool_name): + vuri = get_uri(virt) + cmd = "virsh -c %s pool-list --all | grep %s" % (vuri, pool_name) + return getstatusoutput(cmd) + +def cleanup(virt, pool_name, sysname, mount_pt, del_dir): + virsh = "virsh -c %s" % get_uri(virt) + cmd = "%s pool-destroy %s && %s pool-undefine %s" \ + % (virsh, pool_name, virsh, pool_name) + ret, out = getstatusoutput(cmd) + if ret != PASS: + logger.error("WARNING: pool '%s' was not cleaned on '%s'", + pool_name, sysname) + logger.error("WARNING: Please remove it manually") + + if del_dir == True: + cmd ="rm -rf %s" % mount_pt + status, out = getstatusoutput(cmd) + if status != PASS: + logger.error("WARNING: '%s' was not removed", mount_pt) + logger.error("WARNING: Please remove %s manually", mount_pt) + +def main(): + usage = "usage: %prog [options] \nex: %prog -i localhost" + parser = OptionParser(usage) + + parser.add_option("-i", "--host-url", dest="h_url", default="localhost:5988", + help="URL of CIMOM to connect to (host:port)") + parser.add_option("-N", "--ns", dest="ns", default="root/virt", + help="Namespace (default is root/virt)") + parser.add_option("-u", "--user", dest="username", default=None, + help="Auth username for CIMOM on source system") + parser.add_option("-p", "--pass", dest="password", default=None, + help="Auth password for CIMOM on source system") + parser.add_option("-v", "--virt-type", dest="virt", default=None, + help="Virtualization type [ Xen | KVM ]") + parser.add_option("-t", "--pool-type", dest="pool_type", default=None, + help="Pool type:[ fs | logical ]") + parser.add_option("-d", "--part-dev", dest="part_dev", default=None, + help="specify the free partition to be used") + parser.add_option("-m", "--mnt_pt", dest="mnt_pt", default=None, + help="Mount point to be used") + parser.add_option("-n", "--pool-name", dest="pool_name", default=None, + help="Pool to be created") + parser.add_option("-c", "--clean-log", + action="store_true", dest="clean", + help="Will remove existing log files before test run") + parser.add_option("-l", "--debug-output", action="store_true", dest="debug", + help="Duplicate the output to stderr") + + (options, args) = parser.parse_args() + + # Verify command line options + status = verify_cmd_options(options) + if status != PASS: + return status + + part_dev = options.part_dev + mount_pt = options.mnt_pt + pool_name = options.pool_name + virt = options.virt + + if ":" in options.h_url: + (sysname, port) = options.h_url.split(":") + else: + sysname = options.h_url + + # Verify if the CIMOM is running, clean cimtest.log if requested + # Set Debug option if requested + status = env_setup(sysname, virt, options.clean, options.debug) + if status != PASS: + return status + + log_param(file_name=TEST_LOG) + + print "Please check cimtest.log in the curr dir for debug log msgs..." + + status, pooltype = get_pooltype(options.pool_type, virt) + if status != PASS: + return FAIL + + pooltype = cim_types.Uint16(pooltype) + + status, del_dir = verify_inputs(part_dev, mount_pt) + if status != PASS: + if del_dir == True: + cmd ="rm -rf %s" % mount_pt + status, out = getstatusoutput(cmd) + logger.error("Input verification failed") + return status + + + status, out = verify_pool(virt, pool_name) + if status == PASS: + logger.error("Pool --> '%s' already exist", pool_name) + logger.error("Specify some other pool name") + return status + + try: + src_conn = WBEMConnection('http://%s' % sysname, (options.username, + options.password), options.ns) + + os.environ['CIM_NS'] = Globals.CIM_NS = options.ns + os.environ['CIM_USER'] = Globals.CIM_USER = options.username + os.environ['CIM_PASS'] = Globals.CIM_PASS = options.password + + # Get DiskPoolRASD's from SDC association with AC of DiskPool/0 + status, dp_rasds = get_pool_rasds(sysname, virt, "DiskPool") + if status != PASS: + raise Exception("Failed to get DiskPool Rasd's") + + # Get the DiskPoolRASD mof with appropriate values of diskpool + # to be created.... + pool_settings = get_pool_settings(dp_rasds, pooltype, part_dev, + mount_pt, pool_name) + if pool_settings == None: + raise Exception("Did not get the required pool settings ...") + + rpcs_cn = get_typed_class(virt, "ResourcePoolConfigurationService") + # Create DiskPool.. + res = src_conn.InvokeMethod("CreateChildResourcePool", + rpcs_cn, + Settings=[pool_settings], + ElementName=pool_name) + + # Verify if the desired pool was successfully created .. + status, out = verify_pool(virt, pool_name) + if status != PASS: + raise Exception("Failed to create pool: %s " % pool_name) + + except Exception, details: + logger.error("In main(), exception '%s'", details) + if del_dir == True: + cmd ="rm -rf %s" % mount_pt + status, out = getstatusoutput(cmd) + return FAIL + + # Clean up the pool and the mount dir that was created ... + cleanup(virt, pool_name, sysname, mount_pt, del_dir) + + if res[0] == PASS: + logger.info("Pool %s was successfully verified for pool type %s", + pool_name , options.pool_type) + + # Place holder to give a hint to the user the tc passed + # otherwise the user will have to look into the cimtest.log in the + # current dir. + print "Pool '", pool_name,"' was successfully verified for pool type "\ + "'", options.pool_type , "'" + else: + logger.error("Test Failed to verify '%s' pool creation ....", + options.pool_type) + return res[0] +if __name__=="__main__": + sys.exit(main()) + From deeptik at linux.vnet.ibm.com Mon Jun 29 13:25:51 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Mon, 29 Jun 2009 18:55:51 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] Adding new tc to verify fs storage pool creation In-Reply-To: <4A45817D.7080507@linux.vnet.ibm.com> References: <1e14cb463dc2251286e8.1246055464@elm3b151.beaverton.ibm.com> <4A45817D.7080507@linux.vnet.ibm.com> Message-ID: <4A48C0DF.7050703@linux.vnet.ibm.com> Kaitlin Rupert wrote: > Deepti B. Kalakeri wrote: >> # HG changeset patch >> # User Deepti B. Kalakeri >> # Date 1246055400 25200 >> # Node ID 1e14cb463dc2251286e8e82099ac410c4e8d3453 >> # Parent d67a606da9f7d631368d04280865eb9a21e7ea8a >> [TEST] Adding new tc to verify fs storage pool creation. >> >> This tc will not be run in the batch mode of cimtest and hence needs to >> be run individually using the command below. >> >> python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n >> diskfs >> -v Xen -u -p >> >> Tested with Xen on RHEL with current sources for fs type pool. >> Will Update the patch to include logical pool verification as well. > > I get the following error: > > # python create_verify_storagepool.py -t 2 -d /dev/sda1 -m /tmp/mnt -n > diskfs -v KVM -u user -p pass > Traceback (most recent call last): > File "create_verify_storagepool.py", line 41, in > import TestSuite > ImportError: No module named TestSuite oops! while writing the tc I had exported the PYTHONPATH variable hence I had not noticed this. Thanks for catching this though.. > > >> Signed-off-by: Deepti B. Kalakeri >> >> diff -r d67a606da9f7 -r 1e14cb463dc2 >> suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py > >> +# python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt >> -n diskfs +# -v Xen -u -p > > Instead of passing the type number (which can be difficult to > remember), can you have it take a string value instead? Something like: > > -t fs or -r logical > >> +# +# Where t can be : >> +# 2 - FileSystem >> +# 4 - Logical etc >> +# +# +# Date : 27.06.2009 >> + >> +import os >> +import sys > > I had to add the following: > sys.path.append('../../../lib') > > This fixed the error I pasted above.. After fixing this, I got the > following error: > > Traceback (most recent call last): > File "create_verify_storagepool.py", line 45, in > from XenKvmLib.classes import inst_to_mof, get_typed_class > ImportError: No module named XenKvmLib.classes > > > This can be fixed by using the following: > > sys.path.append('../lib') > > This needs to be before any imports from the XenKvmLib directory, so > you'll need to reorganize your import statements a bit.. > >> +import TestSuite >> +from optparse import OptionParser >> +from CimTest import Globals >> +from XenKvmLib.classes import inst_to_mof, get_typed_class >> +from CimTest.Globals import logger, log_param >> +from commands import getstatusoutput >> +from pywbem import WBEMConnection, cim_types >> +from distutils.text_file import TextFile >> +from XenKvmLib.pool import get_pool_rasds > >> + >> +PASS = 0 >> +FAIL = 1 >> +supp_types = [ 'Xen', 'KVM' ] >> +pool_types = { 2 : 'DISK_POOL_FS', 4 : 'DISK_POOL_LOGICAL' } >> + >> +def verify_inputs(part_dev, mount_pt, pool_type): >> + if pool_type not in pool_types.keys(): >> + logger.error("Pool type '%s' specified is not valid", pool_type) >> + return FAIL >> + + # TextFile skips all the lines which have comments and which are >> blank >> + fd = TextFile(filename="/etc/fstab") >> + fstab_info = [x.rstrip('\n') for x in fd.readlines()] >> + fd.close() >> + >> + for line in fstab_info: >> + try: >> + # Check if the specified partition is mounted before using it + if >> part_dev in line.split()[0]: >> + logger.error("[%s] already mounted", part_dev) >> + raise Exception("Please specify free partition other than " \ >> + "[%s]" % part_dev) >> + >> + # Check if mount point is already used for mounting >> + if mount_pt in line.split()[1]: >> + logger.error("[%s] already mounted", mount_pt) >> + raise Exception("Please specify dir other than [%s]" %mount_pt) > > What if something is already mounted by it's not listed in /etc/fstab? > If you want to be sure something isn't mounted, you can check the > output of the "mount" command. > Yup right !! changed to mount >> + >> + except Exception, details: >> + logger.error("Exception details is %s", details) >> + return FAIL >> + + ## Check if the mount point specified already exist if not then >> create it.. >> + if not os.path.exists(mount_pt): >> + os.mkdir(mount_pt) >> + else: >> + ## Check if the mount point specified is a dir >> + if not os.path.isdir(mount_pt): >> + logger.error("The mount point [%s] should be a dir", mount_pt) >> + return FAIL >> + >> + files = os.listdir(mount_pt) >> + if len(files) != 0: >> + logger.info("The mount point [%s] given is not empty", mount_pt) >> + >> + return PASS >> + >> +def get_uri(virt): >> + if virt == 'Xen': >> + vuri = 'xen:///' >> + elif vir_type == 'Kvm': > > Instead of vir_type, this should be virt. Although, can you check for > 'KVM' instead of 'Kvm'? That way it'll be similar to the options that > are passed when doing a cimtest bulk run. > Sorry for the typo.. and I had intended to use KVM itself. >> + vuri = 'qemu:///system' >> + return vuri >> + >> +def verify_pool(virt, pool_name): >> + vuri = get_uri(virt) >> + cmd = "virsh -c %s pool-list --all | grep %s" %(vuri, pool_name) > > Need a space between % and (vuri.. > >> + return getstatusoutput(cmd) >> + >> +def main(): >> + usage = "usage: %prog [options] \nex: %prog -i localhost" >> + parser = OptionParser(usage) >> + >> + parser.add_option("-i", "--host-url", dest="h_url", >> default="localhost:5988", >> + help="URL of CIMOM to connect to (host:port)") >> + parser.add_option("-N", "--ns", dest="ns", default="root/virt", >> + help="Namespace (default is root/virt)") >> + parser.add_option("-u", "--user", dest="username", default=None, >> + help="Auth username for CIMOM on source system") >> + parser.add_option("-p", "--pass", dest="password", default=None, >> + help="Auth password for CIMOM on source system") >> + parser.add_option("-v", "--virt-type", dest="virt", default=None, >> + help="Virtualization type [ Xen | KVM ]") > > Can you add support for LXC here. The disk and network pool support in > libvirt is host wide. If you create a pool using the qemu uri, you > should also see it using the lxc uri. > Done >> + parser.add_option("-t", "--pool-type", dest="pool_type", default=None, >> + help="Pool type:[ fs | logical ]") >> + parser.add_option("-d", "--part-dev", dest="part_dev", default=None, >> + help="specify the free partition to be used") >> + parser.add_option("-m", "--mnt_pt", dest="mnt_pt", default=None, + >> help="Mount point to be used") >> + parser.add_option("-n", "--pool-name", dest="pool_name", >> default=None, + help="Pool to be created") >> + >> + (options, args) = parser.parse_args() >> + >> + try: + if options.part_dev == None: >> + raise Exception("Free Partition to be mounted not specified") >> + >> + if options.mnt_pt == None: >> + raise Exception("Mount points to be used not specified") >> + >> + if options.pool_name == None: >> + raise Exception("Must specify the Pool Name to be created") >> + >> + if options.virt == None or options.virt not in supp_types: >> + raise Exception("Must specify virtualization type") >> + >> + if options.pool_type == None: >> + raise Exception("Must specify pool type to be tested") >> + >> + except Exception, details: >> + print "FATAL: ", details >> + print parser.print_help() >> + return FAIL >> + + part_dev = options.part_dev >> + mount_pt = options.mnt_pt >> + pool_name = options.pool_name >> + pool_type = cim_types.Uint16(options.pool_type) >> + virt = options.virt >> + + testsuite = TestSuite.TestSuite(log=True) >> + log_param(file_name="cimtest.log") >> + print "Please check cimtest.log in the curr dir for debug log msgs..." >> + status = verify_inputs(part_dev, mount_pt, pool_type) >> + if status != PASS: >> + logger.error("Input verification failed") >> + return status >> + + status, out = verify_pool(virt, pool_name) >> + if status == PASS: >> + logger.error("Pool --> '%s' already exist", pool_name) >> + logger.error("Specify some other pool name") >> + return status >> + >> + if ":" in options.h_url: >> + (sysname, port) = options.h_url.split(":") >> + else: >> + sysname = options.h_url >> + >> + src_conn = WBEMConnection('http://%s' % sysname, + >> (options.username, options.password), options.ns) >> + >> + os.environ['CIM_NS'] = Globals.CIM_NS = options.ns >> + os.environ['CIM_USER'] = Globals.CIM_USER = options.username >> + os.environ['CIM_PASS'] = Globals.CIM_PASS = options.password >> + >> + try: >> + status,dp_rasds = get_pool_rasds(sysname, virt, "DiskPool") > > Need a space between status, and dp_rasds.. > >> + for i in range(0, len(dp_rasds)): > > Instead of using "for i in range(0, len(dp_rasds))", why not use: > > for rasd in dp_rasds: > >> + pool_id = "%s/%s" %("DiskPool", pool_name) >> + dpool_rasd=dp_rasds[i] > > If you use "for rasd in dp_rasds:", then you don't need this line.. > >> + dpool_rasd['PoolID'] = pool_id > > Not sure why you have this line here? Why do you set the PoolID of > each instance as you go through the loop? You should only set the > attributes of the RASD that matches the type you're looking for below.. > > Also, the provider ignores PoolID anyway - so you shouldn't need to > set it. The DiskPoolRASD which we get will have poolid set to DiskPool/0 . This may not be used now.. but it might be required in future if the PoolID is verified. For ex: Xen_DiskPoolResourceAllocationSettingData { PoolID = "DiskPool/0"; ResourceType = 17; Type = 2; DevicePaths = {"/dev/sda4"}; VirtualQuantityUnits = "count"; InstanceID = "DiskPool/diskfs"; Path = "/boot"; }; > >> + if dpool_rasd['Type'] == pool_type and \ >> + dpool_rasd['InstanceID'] == 'Default': > > I'd put this call in a function.. loop through the template RASDs > until you find the RASD you need. Then return that from the function. > > That'll reduce some of the code in main() and it'll reduce some of the > nesting here. > >> + dpool_rasd['DevicePaths'] =[part_dev] >> + dpool_rasd['Path'] = mount_pt >> + dpool_rasd['InstanceID'] = pool_id >> + break >> + pool_settings = inst_to_mof(dpool_rasd) >> + rpcs_cn = get_typed_class(virt, "ResourcePoolConfigurationService") >> + res = src_conn.InvokeMethod("CreateChildResourcePool", >> + rpcs_cn, >> + Settings=[pool_settings], >> + ElementName=pool_name) >> + except Exception, details: >> + logger.error("Exception details: %s", details) > > If you encounter an error here, you'll want to clean up and return an > error. No need to verify the pool if InvokeMethod() fails. > >> + >> + status, out = verify_pool(virt, pool_name) >> + if status != PASS: >> + logger.error("Failed to create pool: %s ", pool_name) >> + return status + >> + vuri = get_uri(virt) >> + virsh = "virsh -c %s" % vuri >> + cmd = "%s pool-destroy %s && %s pool-undefine %s" \ >> + %(virsh, pool_name, virsh, pool_name) > > Need a space between %(virsh... > >> + ret, out = getstatusoutput(cmd) >> + if ret != PASS: >> + logger.info("WARNING: pool %s was not cleaned on %s", + pool_name, >> sysname) >> + logger.info("WARNING: Please remove it manually") > > I agree - you don't need to return an error here if the cleanup fails. > But I would change these to logger.error() statements or include print > statements as well. logger.info() statements don't get printed to > stdout, so the user won't know they need to clean up their environment. > > > Thanks Deepti! > Thanks for the review.... -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Mon Jun 29 18:28:06 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 29 Jun 2009 11:28:06 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] Adding new tc to verify fs storage pool creation In-Reply-To: <3d4e90851a09756b52a4.1246281837@elm3b151.beaverton.ibm.com> References: <3d4e90851a09756b52a4.1246281837@elm3b151.beaverton.ibm.com> Message-ID: <4A4907B6.3000709@linux.vnet.ibm.com> > +import os > +import sys > +from optparse import OptionParser > +from commands import getstatusoutput > +from distutils.text_file import TextFile > +from pywbem import WBEMConnection, cim_types > +sys.path.append('../../../lib') > +from CimTest import Globals > +from CimTest.Globals import logger, log_param > +sys.path.append('../lib') > +from XenKvmLib.classes import inst_to_mof, get_typed_class > +from XenKvmLib.pool import get_pool_rasds > +sys.path.append('../') > +from main import pre_check I like the use of this check, but importing from main.py is a little odd. main.py isn't intended to be a module... can you move pre-check to XenKvmLib? You don't have to do this change in the this patch - you can follow up with a different patch once this test is in the tree. > + > +PASS = 0 > +FAIL = 1 Why not import the PASS / FAIL values from lib/CimTest/ReturnCodes.py? > + > +def get_pool_settings(dp_rasds, pooltype, part_dev, mount_pt, pool_name): > + pool_settings = None > + for dpool_rasd in dp_rasds: > + if dpool_rasd['Type'] == pooltype and \ > + dpool_rasd['InstanceID'] == 'Default': > + dpool_rasd['DevicePaths'] =[part_dev] Need a space between =[part_dev] so that is looks like: dpool_rasd['DevicePaths'] = [part_dev] > + dpool_rasd['Path'] = mount_pt > + dp_pid = "%s/%s" %("DiskPool", pool_name) Need a space here so it looks like: dp_pid = "%s/%s" % ("DiskPool", pool_name) > + dpool_rasd['PoolID'] = dpool_rasd['InstanceID'] = dp_pid > + break > + if not pool_name in dpool_rasd['InstanceID']: > + return pool_settings > + > + pool_settings = inst_to_mof(dpool_rasd) > + return pool_settings > + > + > +def cleanup(virt, pool_name, sysname, mount_pt, del_dir): > + virsh = "virsh -c %s" % get_uri(virt) > + cmd = "%s pool-destroy %s && %s pool-undefine %s" \ > + % (virsh, pool_name, virsh, pool_name) Why not use the providers to clean up the pool? > + ret, out = getstatusoutput(cmd) > + if ret != PASS: > + logger.error("WARNING: pool '%s' was not cleaned on '%s'", > + pool_name, sysname) > + logger.error("WARNING: Please remove it manually") > + > + if del_dir == True: > + cmd ="rm -rf %s" % mount_pt > + status, out = getstatusoutput(cmd) > + if status != PASS: > + logger.error("WARNING: '%s' was not removed", mount_pt) > + logger.error("WARNING: Please remove %s manually", mount_pt) > + > + # Verify if the desired pool was successfully created .. > + status, out = verify_pool(virt, pool_name) > + if status != PASS: > + raise Exception("Failed to create pool: %s " % pool_name) > + > + except Exception, details: > + logger.error("In main(), exception '%s'", details) > + if del_dir == True: > + cmd ="rm -rf %s" % mount_pt > + status, out = getstatusoutput(cmd) If the pool is created properly bu the verify step fails, then you will attempt to remove a directory that has a disk mounted on it. Also, if the pool is created properly, you don't clean it up here. Instead of attempting to remove the directory here, why not just set res[0] = FAIL and then fall through so that cleanup() is called? > + return FAIL > + > + # Clean up the pool and the mount dir that was created ... > + cleanup(virt, pool_name, sysname, mount_pt, del_dir) > + > + if res[0] == PASS: > + logger.info("Pool %s was successfully verified for pool type %s", > + pool_name , options.pool_type) > + > + # Place holder to give a hint to the user the tc passed > + # otherwise the user will have to look into the cimtest.log in the > + # current dir. > + print "Pool '", pool_name,"' was successfully verified for pool type "\ > + "'", options.pool_type , "'" > + else: > + logger.error("Test Failed to verify '%s' pool creation ....", > + options.pool_type) > + return res[0] > +if __name__=="__main__": > + sys.exit(main()) > + > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From snmishra at us.ibm.com Mon Jun 29 21:55:26 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Mon, 29 Jun 2009 14:55:26 -0700 Subject: [Libvirt-cim] [PATCH 0 of 2] Some misc ComputerSystemIndication related changes In-Reply-To: References: Message-ID: +1 Sharad Mishra System x Enablement Linux Technology Center IBM Kaitlin Rupert To Sent by: libvirt-cim at redhat.com libvirt-cim-bounc cc es at redhat.com Subject [Libvirt-cim] [PATCH 0 of 2] Some 06/26/2009 04:57 misc ComputerSystemIndication PM related changes Please respond to List for discussion and development of libvirt CIM This is some cleanup that needs to be done in order to properly set the PreviousInstance attribute. Right now, the same value is being used for SourceInstance as well as PreviousInstance, which isn't valid. This issue will be addressed in a follow-up set of patches. _______________________________________________ Libvirt-cim mailing list Libvirt-cim at redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: graycol.gif Type: image/gif Size: 105 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: pic25391.gif Type: image/gif Size: 1255 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ecblank.gif Type: image/gif Size: 45 bytes Desc: not available URL: From snmishra at us.ibm.com Mon Jun 29 21:55:42 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Mon, 29 Jun 2009 14:55:42 -0700 Subject: [Libvirt-cim] [PATCH 1 of 2] Remove type_name param from _do_indication in CSIndication In-Reply-To: <6b1f7181f1633e456bc7.1246060631@localhost.localdomain> References: <6b1f7181f1633e456bc7.1246060631@localhost.localdomain> Message-ID: +1 Sharad Mishra System x Enablement Linux Technology Center IBM Kaitlin Rupert To Sent by: libvirt-cim at redhat.com libvirt-cim-bounc cc es at redhat.com Subject [Libvirt-cim] [PATCH 1 of 2] Remove 06/26/2009 04:57 type_name param from PM _do_indication in CSIndication Please respond to List for discussion and development of libvirt CIM # HG changeset patch # User Kaitlin Rupert # Date 1246060573 25200 # Node ID 6b1f7181f1633e456bc7e90c09f7943588c28865 # Parent f1f435da7db3230365969a7abdbeeff9ef154676 Remove type_name param from _do_indication in CSIndication No reason to pass the indication name if we're already passing the indication type. Also, remove the call to set the AffectedSystem property. This property doesn't exist in any of the Indications classes in the 2.21 schema - also doesn't exist in our own local schema. Not sure why this value was being set, doesn't appear to be a property in the 2.16 schema either. Signed-off-by: Kaitlin Rupert diff -r f1f435da7db3 -r 6b1f7181f163 src/Virt_ComputerSystemIndication.c --- a/src/Virt_ComputerSystemIndication.c Wed Jun 24 10:27:16 2009 -0700 +++ b/src/Virt_ComputerSystemIndication.c Fri Jun 26 16:56:13 2009 -0700 @@ -224,16 +224,28 @@ const CMPIContext *ctx, CMPIInstance *affected_inst, int ind_type, - const char *ind_type_name, char *prefix, struct ind_args *args) { + const char *ind_type_name = NULL; CMPIObjectPath *affected_op; CMPIObjectPath *ind_op; CMPIInstance *ind; CMPIStatus s; bool ret = true; + switch (ind_type) { + case CS_CREATED: + ind_type_name = "ComputerSystemCreatedIndication"; + break; + case CS_DELETED: + ind_type_name = "ComputerSystemDeletedIndication"; + break; + case CS_MODIFIED: + ind_type_name = "ComputerSystemModifiedIndication"; + break; + } + ind = get_typed_instance(broker, prefix, ind_type_name, @@ -265,16 +277,9 @@ } CMSetNameSpace(affected_op, args->ns); - switch (ind_type) { - case CS_CREATED: - case CS_DELETED: - CMSetProperty(ind, "AffectedSystem", - (CMPIValue *)&affected_op, CMPI_ref); - break; - case CS_MODIFIED: + if (ind_type == CS_MODIFIED) { CMSetProperty(ind, "PreviousInstance", (CMPIValue *)&affected_inst, CMPI_instance); - break; } CMSetProperty(ind, "SourceInstance", @@ -333,7 +338,6 @@ { bool rc = false; char *name = NULL; - char *type_name = NULL; char *cn = NULL; CMPIObjectPath *op; CMPIInstance *affected_inst; @@ -364,25 +368,13 @@ if (s.rc != CMPI_RC_OK) goto out; - switch (ind_type) { - case CS_CREATED: - type_name = "ComputerSystemCreatedIndication"; - break; - case CS_DELETED: - type_name = "ComputerSystemDeletedIndication"; - break; - case CS_MODIFIED: - type_name = "ComputerSystemModifiedIndication"; - break; - } - CMSetProperty(affected_inst, "Name", (CMPIValue *)name, CMPI_chars); CMSetProperty(affected_inst, "UUID", (CMPIValue *)prev_dom.uuid, CMPI_chars); rc = _do_indication(_BROKER, context, affected_inst, - ind_type, type_name, prefix, args); + ind_type, prefix, args); out: free(cn); _______________________________________________ Libvirt-cim mailing list Libvirt-cim at redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: graycol.gif Type: image/gif Size: 105 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: pic12805.gif Type: image/gif Size: 1255 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ecblank.gif Type: image/gif Size: 45 bytes Desc: not available URL: From snmishra at us.ibm.com Mon Jun 29 21:56:23 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Mon, 29 Jun 2009 14:56:23 -0700 Subject: [Libvirt-cim] [PATCH 2 of 2] Modify _do_instance() so that is takes a previous instance param In-Reply-To: <00047bd35641e678e3b7.1246060632@localhost.localdomain> References: <00047bd35641e678e3b7.1246060632@localhost.localdomain> Message-ID: +1 Sharad Mishra System x Enablement Linux Technology Center IBM Kaitlin Rupert To Sent by: libvirt-cim at redhat.com libvirt-cim-bounc cc es at redhat.com Subject. [Libvirt-cim] [PATCH 2 of 2] Modify 06/26/2009 04:57 _do_instance() so that is takes PM a previous instance param Please respond to List for discussion and development of libvirt CIM # HG changeset patch # User Kaitlin Rupert # Date 1246060597 25200 # Node ID 00047bd35641e678e3b7fb0832e5aa8ec4b7a8dd # Parent 6b1f7181f1633e456bc7e90c09f7943588c28865 Modify _do_instance() so that is takes a previous instance param This change is needed so that we can pass in an instance that represents the guest prior to the modification. Currently, we don't have a way to get the previous state of the guest from the event loop. This change is a necessary first step for providing that functionality. Signed-off-by: Kaitlin Rupert diff -r 6b1f7181f163 -r 00047bd35641 src/Virt_ComputerSystemIndication.c --- a/src/Virt_ComputerSystemIndication.c Fri Jun 26 16:56:13 2009 -0700 +++ b/src/Virt_ComputerSystemIndication.c Fri Jun 26 16:56:37 2009 -0700 @@ -222,6 +222,7 @@ static bool _do_indication(const CMPIBroker *broker, const CMPIContext *ctx, + CMPIInstance *prev_inst, CMPIInstance *affected_inst, int ind_type, char *prefix, @@ -279,7 +280,7 @@ if (ind_type == CS_MODIFIED) { CMSetProperty(ind, "PreviousInstance", - (CMPIValue *)&affected_inst, CMPI_instance); + (CMPIValue *)&prev_inst, CMPI_instance); } CMSetProperty(ind, "SourceInstance", @@ -340,6 +341,7 @@ char *name = NULL; char *cn = NULL; CMPIObjectPath *op; + CMPIInstance *prev_inst; CMPIInstance *affected_inst; CMPIStatus s = {CMPI_RC_OK, NULL}; @@ -361,19 +363,21 @@ if ((s.rc != CMPI_RC_OK) || CMIsNullObject(op)) goto out; - /* FIXME: This gets the CS instance after it has been modified. We also - need a way to get the instance before it was modified - that - value is used when setting the PreviousInstance value. */ s = get_domain_by_name(_BROKER, op, name, &affected_inst); if (s.rc != CMPI_RC_OK) goto out; + /* FIXME: We are unable to get the previous CS instance after it has + been modified. Consider keeping track of the previous + state in the place we keep track of the requested state */ + prev_inst = affected_inst; + CMSetProperty(affected_inst, "Name", (CMPIValue *)name, CMPI_chars); CMSetProperty(affected_inst, "UUID", (CMPIValue *)prev_dom.uuid, CMPI_chars); - rc = _do_indication(_BROKER, context, affected_inst, + rc = _do_indication(_BROKER, context, prev_inst, affected_inst, ind_type, prefix, args); out: _______________________________________________ Libvirt-cim mailing list Libvirt-cim at redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: graycol.gif Type: image/gif Size: 105 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: pic24655.gif Type: image/gif Size: 1255 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ecblank.gif Type: image/gif Size: 45 bytes Desc: not available URL: From kaitlin at linux.vnet.ibm.com Tue Jun 30 00:05:19 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 29 Jun 2009 17:05:19 -0700 Subject: [Libvirt-cim] [PATCH 0 of 3] Set PreviousInstance properly when generating an indication Message-ID: This fix is rather involved and includes some duplicate code. This is because a lot of the existing indications code will get refactored when we move to using domain events instead of an event loop that polls. In the meantime, this just makes sure we return valid instances. From kaitlin at linux.vnet.ibm.com Tue Jun 30 00:05:20 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 29 Jun 2009 17:05:20 -0700 Subject: [Libvirt-cim] [PATCH 1 of 3] Reorganize code CSIndication - be sure to declare filters earlier in the file In-Reply-To: References: Message-ID: <3bf5c713feb1b2bf6094.1246320320@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1246320303 25200 # Node ID 3bf5c713feb1b2bf6094c829e7f423480a05904c # Parent 6ed64506d55ef019359c6d7420ce927fd49855ac Reorganize code CSIndication - be sure to declare filters earlier in the file This is necessary for the raise_indication() function (see second patch). The raise_indication() function needs access to the filters list. Signed-off-by: Kaitlin Rupert diff -r 6ed64506d55e -r 3bf5c713feb1 src/Virt_ComputerSystemIndication.c --- a/src/Virt_ComputerSystemIndication.c Mon Jun 29 17:04:49 2009 -0700 +++ b/src/Virt_ComputerSystemIndication.c Mon Jun 29 17:05:03 2009 -0700 @@ -628,15 +628,6 @@ return(CMPIStatus){CMPI_RC_OK, NULL}; } -static struct std_indication_handler csi = { - .raise_fn = NULL, - .trigger_fn = trigger_indication, - .activate_fn = ActivateFilter, - .deactivate_fn = DeActivateFilter, - .enable_fn = EnableIndications, - .disable_fn = DisableIndications, -}; - DECLARE_FILTER(xen_created, "Xen_ComputerSystemCreatedIndication"); DECLARE_FILTER(xen_deleted, "Xen_ComputerSystemDeletedIndication"); DECLARE_FILTER(xen_modified, "Xen_ComputerSystemModifiedIndication"); @@ -660,6 +651,14 @@ NULL, }; +static struct std_indication_handler csi = { + .raise_fn = NULL, + .trigger_fn = trigger_indication, + .activate_fn = ActivateFilter, + .deactivate_fn = DeActivateFilter, + .enable_fn = EnableIndications, + .disable_fn = DisableIndications, +}; DEFAULT_IND_CLEANUP(); DEFAULT_AF(); From kaitlin at linux.vnet.ibm.com Tue Jun 30 00:05:21 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 29 Jun 2009 17:05:21 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] Add raise_indication() to CSIndication In-Reply-To: References: Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1246320305 25200 # Node ID ca56533192e5a5715c66a8d9ebe0d0fedfe02bd3 # Parent 3bf5c713feb1b2bf6094c829e7f423480a05904c Add raise_indication() to CSIndication Currently, the event loop in ComputerSystemIndication gets the XML of the guest when the guest has been modified. However, by the time the event loop is called, the the guest has already been modified. This is because we only generate the indication if the modification is successful. Therefore, we need a function that allows us to raise an indication (instead of trigger in this case). This allows us to set the PreviousInstance attribute of the indication instance we pass to the raise call. Signed-off-by: Kaitlin Rupert diff -r 3bf5c713feb1 -r ca56533192e5 src/Virt_ComputerSystemIndication.c --- a/src/Virt_ComputerSystemIndication.c Mon Jun 29 17:05:03 2009 -0700 +++ b/src/Virt_ComputerSystemIndication.c Mon Jun 29 17:05:05 2009 -0700 @@ -651,8 +651,124 @@ NULL, }; +static CMPIInstance *get_prev_inst(const CMPIBroker *broker, + const CMPIInstance *ind, + CMPIStatus *s) +{ + CMPIData data; + CMPIInstance *prev_inst = NULL; + + data = CMGetProperty(ind, "PreviousInstance", s); + if (s->rc != CMPI_RC_OK || CMIsNullValue(data)) { + cu_statusf(broker, s, + CMPI_RC_ERR_NO_SUCH_PROPERTY, + "Unable to get PreviousInstance of the indication"); + goto out; + } + + if (data.type != CMPI_instance) { + cu_statusf(broker, s, + CMPI_RC_ERR_TYPE_MISMATCH, + "Indication SourceInstance is of unexpected type"); + goto out; + } + + prev_inst = data.value.inst; + + out: + return prev_inst; +} + +static CMPIStatus raise_indication(const CMPIBroker *broker, + const CMPIContext *ctx, + const CMPIInstance *ind) +{ + CMPIStatus s = {CMPI_RC_OK, NULL}; + CMPIInstance *prev_inst; + CMPIInstance *src_inst; + CMPIObjectPath *ref = NULL; + struct std_indication_ctx *_ctx = NULL; + struct ind_args *args = NULL; + char *prefix = NULL; + bool rc; + + if (!lifecycle_enabled) { + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_FAILED, + "CSI not enabled, skipping indication delivery"); + goto out; + } + + prev_inst = get_prev_inst(broker, ind, &s); + if (s.rc != CMPI_RC_OK || CMIsNullObject(prev_inst)) + goto out; + + ref = CMGetObjectPath(prev_inst, &s); + if (s.rc != CMPI_RC_OK) { + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Unable to get a reference to the guest"); + goto out; + } + + /* FIXME: This is a Pegasus work around. Pegsus loses the namespace + when an ObjectPath is pulled from an instance */ + if (STREQ(NAMESPACE(ref), "")) + CMSetNameSpace(ref, "root/virt"); + + s = get_domain_by_ref(broker, ref, &src_inst); + if (s.rc != CMPI_RC_OK || CMIsNullObject(src_inst)) + goto out; + + _ctx = malloc(sizeof(struct std_indication_ctx)); + if (_ctx == NULL) { + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Unable to allocate indication context"); + goto out; + } + + _ctx->brkr = broker; + _ctx->handler = NULL; + _ctx->filters = filters; + _ctx->enabled = lifecycle_enabled; + + args = malloc(sizeof(struct ind_args)); + if (args == NULL) { + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Unable to allocate ind_args"); + goto out; + } + + args->ns = strdup(NAMESPACE(ref)); + args->classname = strdup(CLASSNAME(ref)); + args->_ctx = _ctx; + + prefix = class_prefix_name(args->classname); + + rc = _do_indication(broker, ctx, prev_inst, src_inst, + CS_MODIFIED, prefix, args); + + if (!rc) { + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_FAILED, + "Unable to generate indication"); + } + + out: + if (args != NULL) + stdi_free_ind_args(&args); + + if (_ctx != NULL) + free(_ctx); + + free(prefix); + return s; +} + static struct std_indication_handler csi = { - .raise_fn = NULL, + .raise_fn = raise_indication, .trigger_fn = trigger_indication, .activate_fn = ActivateFilter, .deactivate_fn = DeActivateFilter, From kaitlin at linux.vnet.ibm.com Tue Jun 30 00:05:22 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Mon, 29 Jun 2009 17:05:22 -0700 Subject: [Libvirt-cim] [PATCH 3 of 3] When a guest is modified, raise an indication and set the PreviousInstance prop In-Reply-To: References: Message-ID: <7e1613aaff99b7ff536a.1246320322@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1245869168 25200 # Node ID 7e1613aaff99b7ff536a9bd0277345bf2d62f4f1 # Parent ca56533192e5a5715c66a8d9ebe0d0fedfe02bd3 When a guest is modified, raise an indication and set the PreviousInstance prop Be sure to get the instance of the guest to modifying the guest. This value is needed when we generate an indication. To test this: Modify a guest and make sure the SourceInstance and PreviousInstance values differ and are correctly set. Signed-off-by: Kaitlin Rupert diff -r ca56533192e5 -r 7e1613aaff99 src/Virt_ComputerSystem.c --- a/src/Virt_ComputerSystem.c Mon Jun 29 17:05:05 2009 -0700 +++ b/src/Virt_ComputerSystem.c Wed Jun 24 11:46:08 2009 -0700 @@ -680,6 +680,39 @@ DEFAULT_EQ(); DEFAULT_INST_CLEANUP(); +static bool trigger_mod_indication(const CMPIContext *context, + CMPIInstance *prev_inst, + const CMPIObjectPath *ref) +{ + CMPIStatus s = {CMPI_RC_OK, NULL}; + const char *ind_name = "ComputerSystemModifiedIndication"; + CMPIInstance *ind = NULL; + char *type = NULL; + + CU_DEBUG("Preparing ComputerSystem indication"); + + ind = get_typed_instance(_BROKER, + CLASSNAME(ref), + ind_name, + NAMESPACE(ref)); + if (ind == NULL) { + CU_DEBUG("Failed to create ind '%s'", ind_name); + goto out; + } + + CU_DEBUG("Setting PreviousInstance"); + CMSetProperty(ind, "PreviousInstance", + (CMPIValue *)&prev_inst, CMPI_instance); + + type = get_typed_class(CLASSNAME(ref), ind_name); + + s = stdi_raise_indication(_BROKER, context, type, NAMESPACE(ref), ind); + + out: + free(type); + return s.rc == CMPI_RC_OK; +} + static int xen_scheduler_params(struct infostore_ctx *ctx, virSchedParameter **params) { @@ -1068,10 +1101,12 @@ CMPIArgs *argsout) { CMPIStatus s; + CMPIInstance *prev_inst = NULL; uint16_t state; int ret; const char *name = NULL; uint32_t rc = 1; + bool ind_rc; ret = cu_get_u16_arg(argsin, "RequestedState", &state); if (ret != CMPI_RC_OK) { @@ -1088,22 +1123,24 @@ goto out; } + /* Retain original instance of the guest to use for the PreviousInstance attribute when generating an indication. */ + s = get_domain_by_name(_BROKER, reference, name, &prev_inst); + if (s.rc != CMPI_RC_OK || prev_inst == NULL) { + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_INVALID_PARAMETER, + "Unable to get instance for guest '%s'", + name); + goto out; + } + s = __state_change(name, state, reference); if (s.rc == CMPI_RC_OK) { - char *type = NULL; - - type = get_typed_class(CLASSNAME(reference), - "ComputerSystemModifiedIndication"); - - /* Failure to raise the indication is okay */ - stdi_trigger_indication(_BROKER, - context, - type, - NAMESPACE(reference)); + ind_rc= trigger_mod_indication(context, prev_inst, reference); + if (!ind_rc) + CU_DEBUG("Unable to trigger indication"); + rc = 0; - - free(type); } out: CMReturnData(results, &rc, CMPI_uint32); From deeptik at linux.vnet.ibm.com Tue Jun 30 06:13:13 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Mon, 29 Jun 2009 23:13:13 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] Moving the pre_check() fn from main.py to common_util.py Message-ID: # HG changeset patch # User Deepti B. Kalakeri # Date 1246342361 25200 # Node ID fe9471d9dd3372b673da5596a18cc49e553b13fa # Parent d67a606da9f7d631368d04280865eb9a21e7ea8a [TEST] Moving the pre_check() fn from main.py to common_util.py Tested with KVM and current sources on F10. Signed-off-by: Deepti B. Kalakeri diff -r d67a606da9f7 -r fe9471d9dd33 suites/libvirt-cim/lib/XenKvmLib/common_util.py --- a/suites/libvirt-cim/lib/XenKvmLib/common_util.py Fri May 29 13:59:02 2009 -0700 +++ b/suites/libvirt-cim/lib/XenKvmLib/common_util.py Mon Jun 29 23:12:41 2009 -0700 @@ -229,6 +229,41 @@ profiles[key]['InstanceID'] = 'CIM:' + key return profiles +def pre_check(ip, virt): + cmd = "virsh -c %s list --all" % virt2uri(virt) + ret, out = utils.run_remote(ip, cmd) + if ret != 0: + return "This libvirt install does not support %s" % virt + + cmd = "virsh -c %s version" % virt2uri(virt) + ret, out = utils.run_remote(ip, cmd) + if ret != 0: + # The above version cmd does not work for F10. + # Hence, this is a workaround to verify if qemu and qemu-kvm + # are installed in case the above version cmd fails. + cmd = "qemu -help" + ret, out = utils.run_remote(ip, cmd) + if ret != 0: + cmd = "qemu-kvm -help" + ret, out = utils.run_remote(ip, cmd) + if ret != 0: + return "Encountered an error querying for qemu-kvm and qemu " + + cmd = "ps -ef | grep -v grep | grep cimserver" + rc, out = utils.run_remote(ip, cmd) + if rc != 0: + cmd = "ps -ef | grep -v grep | grep sfcbd" + rc, out = utils.run_remote(ip, cmd) + if rc != 0: + return "A supported CIMOM is not running" + + cmd = "ps -ef | grep -v grep | grep libvirtd" + rc, out = utils.run_remote(ip, cmd) + if rc != 0: + return "libvirtd is not running" + + return None + def conf_file(): """ Creating diskpool.conf file. diff -r d67a606da9f7 -r fe9471d9dd33 suites/libvirt-cim/main.py --- a/suites/libvirt-cim/main.py Fri May 29 13:59:02 2009 -0700 +++ b/suites/libvirt-cim/main.py Mon Jun 29 23:12:41 2009 -0700 @@ -39,7 +39,8 @@ from XenKvmLib.xm_virt_util import virt2uri from CimTest.ReturnCodes import PASS, FAIL from XenKvmLib.common_util import create_netpool_conf, destroy_netpool, \ - create_diskpool_conf, destroy_diskpool + create_diskpool_conf, destroy_diskpool, \ + pre_check parser = OptionParser() parser.add_option("-i", "--ip", dest="ip", default="localhost", @@ -92,40 +93,6 @@ print "Cleaned log files." -def pre_check(ip, virt): - cmd = "virsh -c %s list --all" % virt2uri(virt) - ret, out = utils.run_remote(ip, cmd) - if ret != 0: - return "This libvirt install does not support %s" % virt - - cmd = "virsh -c %s version" % virt2uri(virt) - ret, out = utils.run_remote(ip, cmd) - if ret != 0: - # The above version cmd does not work for F10. - # Hence, this is a workaround to verify if qemu and qemu-kvm - # are installed in case the above version cmd fails. - cmd = "qemu -help" - ret, out = utils.run_remote(ip, cmd) - if ret != 0: - cmd = "qemu-kvm -help" - ret, out = utils.run_remote(ip, cmd) - if ret != 0: - return "Encountered an error querying for qemu-kvm and qemu " - - cmd = "ps -ef | grep -v grep | grep cimserver" - rc, out = utils.run_remote(ip, cmd) - if rc != 0: - cmd = "ps -ef | grep -v grep | grep sfcbd" - rc, out = utils.run_remote(ip, cmd) - if rc != 0: - return "A supported CIMOM is not running" - - cmd = "ps -ef | grep -v grep | grep libvirtd" - rc, out = utils.run_remote(ip, cmd) - if rc != 0: - return "libvirtd is not running" - - return None def get_rcfile_vals(): if not os.access(CIMTEST_RCFILE, os.R_OK): From deeptik at linux.vnet.ibm.com Tue Jun 30 13:53:55 2009 From: deeptik at linux.vnet.ibm.com (Deepti B. Kalakeri) Date: Tue, 30 Jun 2009 06:53:55 -0700 Subject: [Libvirt-cim] [PATCH] [TEST] #3 Adding new tc to verify fs storage pool creation Message-ID: <479f287a17fd08e4e22a.1246370035@elm3b151.beaverton.ibm.com> # HG changeset patch # User Deepti B. Kalakeri # Date 1246370002 25200 # Node ID 479f287a17fd08e4e22ac37459393f6f8327315a # Parent fe9471d9dd3372b673da5596a18cc49e553b13fa [TEST] #3 Adding new tc to verify fs storage pool creation. Updates in patch 3: ------------------- 1) Used the pre_check from XenKvmLib.common_util 2) imported PASS /FAIL from CimTest.ReturnCodes 3) Modified the verify_pool() 4) Modified the clean_up() 5) Addressed some minor typos Update in patch 2: ------------------ 1) rearranged import stmst 2) add check to see if cimserver is started 3) Added options to clean the old log 4) Added options to get the debug msg on the stdout 5) Added lxc support 6) Moved the looping for setting the poolsettings in a function 7) Rectified the virt_type to virt and also to use KVM for checking while setting vuri Patch 1: -------- This tc will not be run in the batch mode of cimtest and hence needs to be run individually using the command below. python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs -v Xen -u -p Tested with Xen on RHEL with current sources for fs type pool. Will Update the patch to include logical pool verification as well. Signed-off-by: Deepti B. Kalakeri diff -r fe9471d9dd33 -r 479f287a17fd suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py Tue Jun 30 06:53:22 2009 -0700 @@ -0,0 +1,356 @@ +#!/usr/bin/python +# +# Copyright 2009 IBM Corp. +# +# Authors: +# Deepti B. Kalakeri +# +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# This test case should test the CreateChildResourcePool service +# supplied by the RPCS provider. +# This tc verifies the FileSystem Type storage pool. +# +# The test case is not run in the batch run and we need to run it using +# the following command: +# python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs +# -v Xen -u -p +# +# Where t can be : +# 2 - FileSystem +# 4 - Logical etc +# +# +# Date : 27.06.2009 + +import os +import sys +from optparse import OptionParser +from commands import getstatusoutput +from distutils.text_file import TextFile +from pywbem import WBEMConnection, cim_types, CIMInstanceName +sys.path.append('../../../lib') +from CimTest import Globals +from CimTest.Globals import logger, log_param +from CimTest.ReturnCodes import PASS, FAIL +sys.path.append('../lib') +from XenKvmLib.classes import inst_to_mof, get_typed_class +from XenKvmLib.pool import get_pool_rasds +from XenKvmLib.common_util import pre_check +from XenKvmLib.enumclass import EnumInstances + +TEST_LOG="cimtest.log" + +supp_types = [ 'Xen', 'KVM' , 'LXC' ] +pool_types = { 'DISK_POOL_FS' : 2 } + +def verify_cmd_options(options): + try: + if options.part_dev == None: + raise Exception("Free Partition to be mounted not specified") + + if options.mnt_pt == None: + raise Exception("Mount points to be used not specified") + + if options.pool_name == None: + raise Exception("Must specify the Pool Name to be created") + + if options.virt == None or options.virt not in supp_types: + raise Exception("Must specify virtualization type") + + if options.pool_type == None: + raise Exception("Must specify pool type to be tested") + + except Exception, details: + print "FATAL: ", details + print parser.print_help() + return FAIL + + return PASS + +def env_setup(sysname, virt, clean, debug): + env_ready = pre_check(sysname, virt) + if env_ready != None: + print "\n%s. Please check your environment.\n" % env_ready + return FAIL + + if clean: + cmd = "rm -f %s" % (os.path.join(os.getcwd(), TEST_LOG)) + status, output = getstatusoutput(cmd) + + if debug: + dbg = "-d" + else: + dbg = "" + + return PASS + +def get_pooltype(pooltype, virt): + if pooltype == "fs": + pool_type = pool_types['DISK_POOL_FS'] + else: + logger.error("Invalid pool type ....") + return None, None + return PASS, pool_type + +def verify_inputs(part_dev, mount_pt): + del_dir = False + cmd = "mount" + status, mount_info = getstatusoutput(cmd) + if status != PASS: + logger.error("Failed to get mount info.. ") + return FAIL, del_dir + + for line in mount_info.split('\n'): + try: + # Check if the specified partition is mounted before using it + part_name = line.split()[0] + if part_dev == part_name: + logger.error("[%s] already mounted", part_dev) + raise Exception("Please specify free partition other than " \ + "[%s]" % part_dev) + + # Check if mount point is already used for mounting + mount_name = line.split()[2] + if mount_pt == mount_name: + logger.error("[%s] already mounted", mount_pt) + raise Exception("Please specify dir other than [%s]" %mount_pt) + + except Exception, details: + logger.error("%s", details) + return FAIL, del_dir + + # Check if the mount point specified already exist, if not then create it.. + if not os.path.exists(mount_pt): + os.mkdir(mount_pt) + + # set del_dir to True so that we remove it before exiting from the tc. + del_dir = True + else: + # Check if the mount point specified is a dir + if not os.path.isdir(mount_pt): + logger.error("The mount point [%s] should be a dir", mount_pt) + return FAIL, del_dir + + files = os.listdir(mount_pt) + if len(files) != 0: + logger.info("The mount point [%s] given is not empty", mount_pt) + + return PASS, del_dir + +def get_uri(virt): + if virt == 'Xen': + vuri = 'xen:///' + elif virt == 'KVM': + vuri = 'qemu:///system' + elif virt == 'LXC': + vuri = 'lxc:///system' + return vuri + +def get_pool_settings(dp_rasds, pooltype, part_dev, mount_pt, pool_name): + pool_settings = None + for dpool_rasd in dp_rasds: + if dpool_rasd['Type'] == pooltype and \ + dpool_rasd['InstanceID'] == 'Default': + dpool_rasd['DevicePaths'] = [part_dev] + dpool_rasd['Path'] = mount_pt + dp_pid = "%s/%s" % ("DiskPool", pool_name) + dpool_rasd['PoolID'] = dpool_rasd['InstanceID'] = dp_pid + break + + if not pool_name in dpool_rasd['InstanceID']: + return pool_settings + + pool_settings = inst_to_mof(dpool_rasd) + return pool_settings + + +def verify_pool(sysname, virt, pool_name, dp_cn): + try: + pool = EnumInstances(sysname, dp_cn) + for dpool in pool: + ret_pool = dpool.InstanceID + if pool_name == ret_pool: + logger.info("Found the pool '%s'", pool_name) + return PASS + except Exception, details: + logger.error("Exception details: %s", details) + + return FAIL + +def cleanup(virt, rpcs_conn, rpcs_cn, dp_cn, dp_id, + pool_name, sysname, mount_pt, del_dir, res): + + if res == PASS: + pool_settings = CIMInstanceName(dp_cn, namespace=Globals.CIM_NS, + keybindings = {'InstanceID': dp_id}) + rpcs_conn.InvokeMethod("DeleteResourcePool", + rpcs_cn, + Pool = pool_settings) + pool = EnumInstances(sysname, dp_cn) + for dpool in pool: + ret_pool = dpool.InstanceID + if ret_pool == dp_id: + logger.error("Failed to delete diskpool '%s'", pool_name) + return FAIL + + if del_dir == True: + cmd ="rm -rf %s" % mount_pt + ret, out = getstatusoutput(cmd) + if ret != PASS: + logger.error("WARNING: '%s' was not removed", mount_pt) + logger.error("WARNING: Please remove %s manually", mount_pt) + + return PASS + + +def main(): + usage = "usage: %prog [options] \nex: %prog -i localhost" + parser = OptionParser(usage) + + parser.add_option("-i", "--host-url", dest="h_url", default="localhost:5988", + help="URL of CIMOM to connect to (host:port)") + parser.add_option("-N", "--ns", dest="ns", default="root/virt", + help="Namespace (default is root/virt)") + parser.add_option("-u", "--user", dest="username", default=None, + help="Auth username for CIMOM on source system") + parser.add_option("-p", "--pass", dest="password", default=None, + help="Auth password for CIMOM on source system") + parser.add_option("-v", "--virt-type", dest="virt", default=None, + help="Virtualization type [ Xen | KVM ]") + parser.add_option("-t", "--pool-type", dest="pool_type", default=None, + help="Pool type:[ fs | logical ]") + parser.add_option("-d", "--part-dev", dest="part_dev", default=None, + help="specify the free partition to be used") + parser.add_option("-m", "--mnt_pt", dest="mnt_pt", default=None, + help="Mount point to be used") + parser.add_option("-n", "--pool-name", dest="pool_name", default=None, + help="Pool to be created") + parser.add_option("-c", "--clean-log", + action="store_true", dest="clean", + help="Will remove existing log files before test run") + parser.add_option("-l", "--debug-output", action="store_true", dest="debug", + help="Duplicate the output to stderr") + + (options, args) = parser.parse_args() + + # Verify command line options + status = verify_cmd_options(options) + if status != PASS: + return status + + part_dev = options.part_dev + mount_pt = options.mnt_pt + pool_name = options.pool_name + virt = options.virt + + if ":" in options.h_url: + (sysname, port) = options.h_url.split(":") + else: + sysname = options.h_url + + # Verify if the CIMOM is running, clean cimtest.log if requested + # Set Debug option if requested + status = env_setup(sysname, virt, options.clean, options.debug) + if status != PASS: + return status + + log_param(file_name=TEST_LOG) + + print "Please check cimtest.log in the curr dir for debug log msgs..." + + status, pooltype = get_pooltype(options.pool_type, virt) + if status != PASS: + return FAIL + + pooltype = cim_types.Uint16(pooltype) + + status, del_dir = verify_inputs(part_dev, mount_pt) + if status != PASS: + if del_dir == True: + cmd ="rm -rf %s" % mount_pt + status, out = getstatusoutput(cmd) + logger.error("Input verification failed") + return status + + + os.environ['CIM_NS'] = Globals.CIM_NS = options.ns + os.environ['CIM_USER'] = Globals.CIM_USER = options.username + os.environ['CIM_PASS'] = Globals.CIM_PASS = options.password + cn = "DiskPool" + dp_cn = get_typed_class(virt, cn) + dp_id = "%s/%s" % (cn, pool_name) + rpcs_cn = get_typed_class(virt, "ResourcePoolConfigurationService") + + status = verify_pool(sysname, virt, dp_id, dp_cn) + if status == PASS: + logger.error("Pool --> '%s' already exist", pool_name) + logger.error("Specify some other pool name") + return status + + res = [FAIL] + try: + src_conn = WBEMConnection('http://%s' % sysname, (options.username, + options.password), options.ns) + + # Get DiskPoolRASD's from SDC association with AC of DiskPool/0 + status, dp_rasds = get_pool_rasds(sysname, virt, cn) + if status != PASS: + raise Exception("Failed to get DiskPool Rasd's") + + # Get the DiskPoolRASD mof with appropriate values of diskpool + # to be created.... + pool_settings = get_pool_settings(dp_rasds, pooltype, part_dev, + mount_pt, pool_name) + if pool_settings == None: + raise Exception("Did not get the required pool settings ...") + + # Create DiskPool.. + res = src_conn.InvokeMethod("CreateChildResourcePool", + rpcs_cn, + Settings=[pool_settings], + ElementName=pool_name) + + except Exception, details: + logger.error("In main(), exception '%s'", details) + + # Verify if the desired pool was successfully created .. + if res[0] == PASS: + status = verify_pool(sysname, virt, dp_id, dp_cn) + if status != PASS: + logger.error("Failed to verify pool: %s " % pool_name) + + # Clean up the pool and the mount dir that was created ... + status = cleanup(virt, src_conn, rpcs_cn, dp_cn, dp_id, + pool_name, sysname, mount_pt, del_dir, res[0]) + + if res[0] == PASS and status == PASS: + logger.info("Pool %s was successfully verified for pool type %s", + pool_name , options.pool_type) + + # Place holder to give a hint to the user the tc passed + # otherwise the user will have to look into the cimtest.log in the + # current dir. + print "Pool '", pool_name,"' was successfully verified for pool type "\ + "'", options.pool_type , "'" + return PASS + else: + logger.error("Test Failed to verify '%s' pool creation ....", + options.pool_type) + return FAIL +if __name__=="__main__": + sys.exit(main()) + From deeptik at linux.vnet.ibm.com Tue Jun 30 13:56:23 2009 From: deeptik at linux.vnet.ibm.com (Deepti B Kalakeri) Date: Tue, 30 Jun 2009 19:26:23 +0530 Subject: [Libvirt-cim] [PATCH] [TEST] #3 Adding new tc to verify fs storage pool creation In-Reply-To: <479f287a17fd08e4e22a.1246370035@elm3b151.beaverton.ibm.com> References: <479f287a17fd08e4e22a.1246370035@elm3b151.beaverton.ibm.com> Message-ID: <4A4A1987.7050609@linux.vnet.ibm.com> This tc needs to be applied on top of "Moving the pre_check() fn from main.py to common_util.py" patch. Deepti B. Kalakeri wrote: > # HG changeset patch > # User Deepti B. Kalakeri > # Date 1246370002 25200 > # Node ID 479f287a17fd08e4e22ac37459393f6f8327315a > # Parent fe9471d9dd3372b673da5596a18cc49e553b13fa > [TEST] #3 Adding new tc to verify fs storage pool creation. > > Updates in patch 3: > ------------------- > 1) Used the pre_check from XenKvmLib.common_util > 2) imported PASS /FAIL from CimTest.ReturnCodes > 3) Modified the verify_pool() > 4) Modified the clean_up() > 5) Addressed some minor typos > > Update in patch 2: > ------------------ > 1) rearranged import stmst > 2) add check to see if cimserver is started > 3) Added options to clean the old log > 4) Added options to get the debug msg on the stdout > 5) Added lxc support > 6) Moved the looping for setting the poolsettings in a function > 7) Rectified the virt_type to virt and also to use KVM for checking while setting vuri > > > > Patch 1: > -------- > This tc will not be run in the batch mode of cimtest and hence needs to > be run individually using the command below. > > python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs > -v Xen -u -p > > Tested with Xen on RHEL with current sources for fs type pool. > Will Update the patch to include logical pool verification as well. > Signed-off-by: Deepti B. Kalakeri > > diff -r fe9471d9dd33 -r 479f287a17fd suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/suites/libvirt-cim/misc_cimtests/create_verify_storagepool.py Tue Jun 30 06:53:22 2009 -0700 > @@ -0,0 +1,356 @@ > +#!/usr/bin/python > +# > +# Copyright 2009 IBM Corp. > +# > +# Authors: > +# Deepti B. Kalakeri > +# > +# > +# This library is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public > +# License as published by the Free Software Foundation; either > +# version 2.1 of the License, or (at your option) any later version. > +# > +# This library is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +# General Public License for more details. > +# > +# You should have received a copy of the GNU General Public > +# License along with this library; if not, write to the Free Software > +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > +# > +# This test case should test the CreateChildResourcePool service > +# supplied by the RPCS provider. > +# This tc verifies the FileSystem Type storage pool. > +# > +# The test case is not run in the batch run and we need to run it using > +# the following command: > +# python create_verify_storagepool.py -t 2 -d /dev/sda4 -m /tmp/mnt -n diskfs > +# -v Xen -u -p > +# > +# Where t can be : > +# 2 - FileSystem > +# 4 - Logical etc > +# > +# > +# Date : 27.06.2009 > + > +import os > +import sys > +from optparse import OptionParser > +from commands import getstatusoutput > +from distutils.text_file import TextFile > +from pywbem import WBEMConnection, cim_types, CIMInstanceName > +sys.path.append('../../../lib') > +from CimTest import Globals > +from CimTest.Globals import logger, log_param > +from CimTest.ReturnCodes import PASS, FAIL > +sys.path.append('../lib') > +from XenKvmLib.classes import inst_to_mof, get_typed_class > +from XenKvmLib.pool import get_pool_rasds > +from XenKvmLib.common_util import pre_check > +from XenKvmLib.enumclass import EnumInstances > + > +TEST_LOG="cimtest.log" > + > +supp_types = [ 'Xen', 'KVM' , 'LXC' ] > +pool_types = { 'DISK_POOL_FS' : 2 } > + > +def verify_cmd_options(options): > + try: > + if options.part_dev == None: > + raise Exception("Free Partition to be mounted not specified") > + > + if options.mnt_pt == None: > + raise Exception("Mount points to be used not specified") > + > + if options.pool_name == None: > + raise Exception("Must specify the Pool Name to be created") > + > + if options.virt == None or options.virt not in supp_types: > + raise Exception("Must specify virtualization type") > + > + if options.pool_type == None: > + raise Exception("Must specify pool type to be tested") > + > + except Exception, details: > + print "FATAL: ", details > + print parser.print_help() > + return FAIL > + > + return PASS > + > +def env_setup(sysname, virt, clean, debug): > + env_ready = pre_check(sysname, virt) > + if env_ready != None: > + print "\n%s. Please check your environment.\n" % env_ready > + return FAIL > + > + if clean: > + cmd = "rm -f %s" % (os.path.join(os.getcwd(), TEST_LOG)) > + status, output = getstatusoutput(cmd) > + > + if debug: > + dbg = "-d" > + else: > + dbg = "" > + > + return PASS > + > +def get_pooltype(pooltype, virt): > + if pooltype == "fs": > + pool_type = pool_types['DISK_POOL_FS'] > + else: > + logger.error("Invalid pool type ....") > + return None, None > + return PASS, pool_type > + > +def verify_inputs(part_dev, mount_pt): > + del_dir = False > + cmd = "mount" > + status, mount_info = getstatusoutput(cmd) > + if status != PASS: > + logger.error("Failed to get mount info.. ") > + return FAIL, del_dir > + > + for line in mount_info.split('\n'): > + try: > + # Check if the specified partition is mounted before using it > + part_name = line.split()[0] > + if part_dev == part_name: > + logger.error("[%s] already mounted", part_dev) > + raise Exception("Please specify free partition other than " \ > + "[%s]" % part_dev) > + > + # Check if mount point is already used for mounting > + mount_name = line.split()[2] > + if mount_pt == mount_name: > + logger.error("[%s] already mounted", mount_pt) > + raise Exception("Please specify dir other than [%s]" %mount_pt) > + > + except Exception, details: > + logger.error("%s", details) > + return FAIL, del_dir > + > + # Check if the mount point specified already exist, if not then create it.. > + if not os.path.exists(mount_pt): > + os.mkdir(mount_pt) > + > + # set del_dir to True so that we remove it before exiting from the tc. > + del_dir = True > + else: > + # Check if the mount point specified is a dir > + if not os.path.isdir(mount_pt): > + logger.error("The mount point [%s] should be a dir", mount_pt) > + return FAIL, del_dir > + > + files = os.listdir(mount_pt) > + if len(files) != 0: > + logger.info("The mount point [%s] given is not empty", mount_pt) > + > + return PASS, del_dir > + > +def get_uri(virt): > + if virt == 'Xen': > + vuri = 'xen:///' > + elif virt == 'KVM': > + vuri = 'qemu:///system' > + elif virt == 'LXC': > + vuri = 'lxc:///system' > + return vuri > + > +def get_pool_settings(dp_rasds, pooltype, part_dev, mount_pt, pool_name): > + pool_settings = None > + for dpool_rasd in dp_rasds: > + if dpool_rasd['Type'] == pooltype and \ > + dpool_rasd['InstanceID'] == 'Default': > + dpool_rasd['DevicePaths'] = [part_dev] > + dpool_rasd['Path'] = mount_pt > + dp_pid = "%s/%s" % ("DiskPool", pool_name) > + dpool_rasd['PoolID'] = dpool_rasd['InstanceID'] = dp_pid > + break > + > + if not pool_name in dpool_rasd['InstanceID']: > + return pool_settings > + > + pool_settings = inst_to_mof(dpool_rasd) > + return pool_settings > + > + > +def verify_pool(sysname, virt, pool_name, dp_cn): > + try: > + pool = EnumInstances(sysname, dp_cn) > + for dpool in pool: > + ret_pool = dpool.InstanceID > + if pool_name == ret_pool: > + logger.info("Found the pool '%s'", pool_name) > + return PASS > + except Exception, details: > + logger.error("Exception details: %s", details) > + > + return FAIL > + > +def cleanup(virt, rpcs_conn, rpcs_cn, dp_cn, dp_id, > + pool_name, sysname, mount_pt, del_dir, res): > + > + if res == PASS: > + pool_settings = CIMInstanceName(dp_cn, namespace=Globals.CIM_NS, > + keybindings = {'InstanceID': dp_id}) > + rpcs_conn.InvokeMethod("DeleteResourcePool", > + rpcs_cn, > + Pool = pool_settings) > + pool = EnumInstances(sysname, dp_cn) > + for dpool in pool: > + ret_pool = dpool.InstanceID > + if ret_pool == dp_id: > + logger.error("Failed to delete diskpool '%s'", pool_name) > + return FAIL > + > + if del_dir == True: > + cmd ="rm -rf %s" % mount_pt > + ret, out = getstatusoutput(cmd) > + if ret != PASS: > + logger.error("WARNING: '%s' was not removed", mount_pt) > + logger.error("WARNING: Please remove %s manually", mount_pt) > + > + return PASS > + > + > +def main(): > + usage = "usage: %prog [options] \nex: %prog -i localhost" > + parser = OptionParser(usage) > + > + parser.add_option("-i", "--host-url", dest="h_url", default="localhost:5988", > + help="URL of CIMOM to connect to (host:port)") > + parser.add_option("-N", "--ns", dest="ns", default="root/virt", > + help="Namespace (default is root/virt)") > + parser.add_option("-u", "--user", dest="username", default=None, > + help="Auth username for CIMOM on source system") > + parser.add_option("-p", "--pass", dest="password", default=None, > + help="Auth password for CIMOM on source system") > + parser.add_option("-v", "--virt-type", dest="virt", default=None, > + help="Virtualization type [ Xen | KVM ]") > + parser.add_option("-t", "--pool-type", dest="pool_type", default=None, > + help="Pool type:[ fs | logical ]") > + parser.add_option("-d", "--part-dev", dest="part_dev", default=None, > + help="specify the free partition to be used") > + parser.add_option("-m", "--mnt_pt", dest="mnt_pt", default=None, > + help="Mount point to be used") > + parser.add_option("-n", "--pool-name", dest="pool_name", default=None, > + help="Pool to be created") > + parser.add_option("-c", "--clean-log", > + action="store_true", dest="clean", > + help="Will remove existing log files before test run") > + parser.add_option("-l", "--debug-output", action="store_true", dest="debug", > + help="Duplicate the output to stderr") > + > + (options, args) = parser.parse_args() > + > + # Verify command line options > + status = verify_cmd_options(options) > + if status != PASS: > + return status > + > + part_dev = options.part_dev > + mount_pt = options.mnt_pt > + pool_name = options.pool_name > + virt = options.virt > + > + if ":" in options.h_url: > + (sysname, port) = options.h_url.split(":") > + else: > + sysname = options.h_url > + > + # Verify if the CIMOM is running, clean cimtest.log if requested > + # Set Debug option if requested > + status = env_setup(sysname, virt, options.clean, options.debug) > + if status != PASS: > + return status > + > + log_param(file_name=TEST_LOG) > + > + print "Please check cimtest.log in the curr dir for debug log msgs..." > + > + status, pooltype = get_pooltype(options.pool_type, virt) > + if status != PASS: > + return FAIL > + > + pooltype = cim_types.Uint16(pooltype) > + > + status, del_dir = verify_inputs(part_dev, mount_pt) > + if status != PASS: > + if del_dir == True: > + cmd ="rm -rf %s" % mount_pt > + status, out = getstatusoutput(cmd) > + logger.error("Input verification failed") > + return status > + > + > + os.environ['CIM_NS'] = Globals.CIM_NS = options.ns > + os.environ['CIM_USER'] = Globals.CIM_USER = options.username > + os.environ['CIM_PASS'] = Globals.CIM_PASS = options.password > + cn = "DiskPool" > + dp_cn = get_typed_class(virt, cn) > + dp_id = "%s/%s" % (cn, pool_name) > + rpcs_cn = get_typed_class(virt, "ResourcePoolConfigurationService") > + > + status = verify_pool(sysname, virt, dp_id, dp_cn) > + if status == PASS: > + logger.error("Pool --> '%s' already exist", pool_name) > + logger.error("Specify some other pool name") > + return status > + > + res = [FAIL] > + try: > + src_conn = WBEMConnection('http://%s' % sysname, (options.username, > + options.password), options.ns) > + > + # Get DiskPoolRASD's from SDC association with AC of DiskPool/0 > + status, dp_rasds = get_pool_rasds(sysname, virt, cn) > + if status != PASS: > + raise Exception("Failed to get DiskPool Rasd's") > + > + # Get the DiskPoolRASD mof with appropriate values of diskpool > + # to be created.... > + pool_settings = get_pool_settings(dp_rasds, pooltype, part_dev, > + mount_pt, pool_name) > + if pool_settings == None: > + raise Exception("Did not get the required pool settings ...") > + > + # Create DiskPool.. > + res = src_conn.InvokeMethod("CreateChildResourcePool", > + rpcs_cn, > + Settings=[pool_settings], > + ElementName=pool_name) > + > + except Exception, details: > + logger.error("In main(), exception '%s'", details) > + > + # Verify if the desired pool was successfully created .. > + if res[0] == PASS: > + status = verify_pool(sysname, virt, dp_id, dp_cn) > + if status != PASS: > + logger.error("Failed to verify pool: %s " % pool_name) > + > + # Clean up the pool and the mount dir that was created ... > + status = cleanup(virt, src_conn, rpcs_cn, dp_cn, dp_id, > + pool_name, sysname, mount_pt, del_dir, res[0]) > + > + if res[0] == PASS and status == PASS: > + logger.info("Pool %s was successfully verified for pool type %s", > + pool_name , options.pool_type) > + > + # Place holder to give a hint to the user the tc passed > + # otherwise the user will have to look into the cimtest.log in the > + # current dir. > + print "Pool '", pool_name,"' was successfully verified for pool type "\ > + "'", options.pool_type , "'" > + return PASS > + else: > + logger.error("Test Failed to verify '%s' pool creation ....", > + options.pool_type) > + return FAIL > +if __name__=="__main__": > + sys.exit(main()) > + > > _______________________________________________ > Libvirt-cim mailing list > Libvirt-cim at redhat.com > https://www.redhat.com/mailman/listinfo/libvirt-cim > -- Thanks and Regards, Deepti B. Kalakeri IBM Linux Technology Center deeptik at linux.vnet.ibm.com From snmishra at us.ibm.com Tue Jun 30 20:04:47 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Tue, 30 Jun 2009 13:04:47 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] Add raise_indication() to CSIndication In-Reply-To: References: Message-ID: > + > + /* FIXME: This is a Pegasus work around. Pegsus loses the namespace > + when an ObjectPath is pulled from an instance */ > + if (STREQ(NAMESPACE(ref), "")) > + CMSetNameSpace(ref, "root/virt"); > + Is it always "root/virt"? Seems like we are hard coding here. -Sharad -------------- next part -------------- An HTML attachment was scrubbed... URL: From kaitlin at linux.vnet.ibm.com Tue Jun 30 20:19:25 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 30 Jun 2009 13:19:25 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] Add raise_indication() to CSIndication In-Reply-To: References: Message-ID: <4A4A734D.40907@linux.vnet.ibm.com> Sharad Mishra wrote: > > > + > > + /* FIXME: This is a Pegasus work around. Pegsus loses the > namespace > > + when an ObjectPath is pulled from an instance */ > > + if (STREQ(NAMESPACE(ref), "")) > > + CMSetNameSpace(ref, "root/virt"); > > + > > Is it always "root/virt"? Seems like we are hard coding here. > > -Sharad > Agreed... this is an unfortunate work around for a Pegasus bug. We should never need to hard code the namespace. The namespace should be embedded in the ObjectPath appropriately. However, Pegasus has a bug in which the namespace is striped from the ObjectPath whenever you pull it from an instance. So until that issue is fixed, we don't have any other way to set the namespace appropriately. -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Tue Jun 30 21:45:18 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 30 Jun 2009 14:45:18 -0700 Subject: [Libvirt-cim] [PATCH 1 of 3] Schema changes and pool_parsing changes needed to add SCSI pool support In-Reply-To: References: Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1246397611 25200 # Node ID fb4f5e6e30cf8316165fa8307bc3fd184ff231fd # Parent 7e1613aaff99b7ff536a9bd0277345bf2d62f4f1 Schema changes and pool_parsing changes needed to add SCSI pool support For SCSI pools (pools using a host bus adapter) will need to specify the AdapterName attribute. The PortName and NodeName attributes are optional. Signed-off-by: Kaitlin Rupert diff -r 7e1613aaff99 -r fb4f5e6e30cf libxkutil/pool_parsing.c --- a/libxkutil/pool_parsing.c Wed Jun 24 11:46:08 2009 -0700 +++ b/libxkutil/pool_parsing.c Tue Jun 30 14:33:31 2009 -0700 @@ -58,6 +58,9 @@ free(pool.path); free(pool.host); free(pool.src_dir); + free(pool.adapter); + free(pool.port_name); + free(pool.node_name); for (i = 0; i < pool.device_paths_ct; i++) free(pool.device_paths[i]); diff -r 7e1613aaff99 -r fb4f5e6e30cf libxkutil/pool_parsing.h --- a/libxkutil/pool_parsing.h Wed Jun 24 11:46:08 2009 -0700 +++ b/libxkutil/pool_parsing.h Tue Jun 30 14:33:31 2009 -0700 @@ -43,12 +43,16 @@ DISK_POOL_NETFS, DISK_POOL_DISK, DISK_POOL_ISCSI, - DISK_POOL_LOGICAL} pool_type; + DISK_POOL_LOGICAL, + DISK_POOL_SCSI} pool_type; char *path; char **device_paths; uint16_t device_paths_ct; char *host; char *src_dir; + char *adapter; + char *port_name; + char *node_name; }; struct virt_pool { diff -r 7e1613aaff99 -r fb4f5e6e30cf schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Wed Jun 24 11:46:08 2009 -0700 +++ b/schema/ResourceAllocationSettingData.mof Tue Jun 30 14:33:31 2009 -0700 @@ -230,14 +230,17 @@ class Xen_DiskPoolResourceAllocationSettingData : Xen_ResourceAllocationSettingData { [Description ("Storage pool type"), - ValueMap {"0", "1", "2", "3", "4", "5", "6"}, + ValueMap {"0", "1", "2", "3", "4", "5", "6", "7"}, Values {"Unknown", "Directory, File System, Network File System, " - "Disk, ISCSI, Logical"}] + "Disk, ISCSI, Logical, SCSI Host Bus Adapter"}] uint16 Type; string Path; string DevicePaths[]; string Host; string SourceDirectory; + string AdapterName; + string PortName; + string NodeName; }; [Description ("KVM virtual disk pool settings"), @@ -246,14 +249,17 @@ class KVM_DiskPoolResourceAllocationSettingData : KVM_ResourceAllocationSettingData { [Description ("Storage pool type"), - ValueMap {"0", "1", "2", "3", "4", "5", "6"}, + ValueMap {"0", "1", "2", "3", "4", "5", "6", "7"}, Values {"Unknown", "Directory, File System, Network File System, " - "Disk, ISCSI, Logical"}] + "Disk, ISCSI, Logical, SCSI Host Bus Adapter"}] uint16 Type; string Path; string DevicePaths[]; string Host; string SourceDirectory; + string AdapterName; + string PortName; + string NodeName; }; [Description ("LXC virtual disk pool settings"), @@ -262,13 +268,16 @@ class LXC_DiskPoolResourceAllocationSettingData : LXC_ResourceAllocationSettingData { [Description ("Storage pool type"), - ValueMap {"0", "1", "2", "3", "4", "5", "6"}, + ValueMap {"0", "1", "2", "3", "4", "5", "6", "7"}, Values {"Unknown", "Directory, File System, Network File System, " - "Disk, ISCSI, Logical"}] + "Disk, ISCSI, Logical, SCSI Host Bus Adapter"}] uint16 Type; string Path; string DevicePaths[]; string Host; string SourceDirectory; + string AdapterName; + string PortName; + string NodeName; }; From kaitlin at linux.vnet.ibm.com Tue Jun 30 21:45:17 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 30 Jun 2009 14:45:17 -0700 Subject: [Libvirt-cim] [PATCH 0 of 3] Add support for SCSI (host bus adapter) type pools Message-ID: This set of changes is for scsi pools that are based on a host bus adapter. These types of sotrage include FiberChannel attached storage devices, as well as SANs. There's two different ways to define these pools: FiberChannel connected devices: hba0 /dev/disk/by-id SAN devices: npiv /dev/disk/by-id From kaitlin at linux.vnet.ibm.com Tue Jun 30 21:45:20 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 30 Jun 2009 14:45:20 -0700 Subject: [Libvirt-cim] [PATCH 3 of 3] Expose SCSI template DiskPoolRASD in SettingsDefineCapabilities In-Reply-To: References: Message-ID: # HG changeset patch # User Kaitlin Rupert # Date 1246397611 25200 # Node ID b1a29661b142f455bcbb9b4d21ae2cb7c038f5e8 # Parent 696c377aa8fce213b01916af24e1e1027d08c2f7 Expose SCSI template DiskPoolRASD in SettingsDefineCapabilities Since PortName and NodeName are optional, this will need to be reworked some so that both template types are exposed. That will be in a follow-up patch, since it involves restructuring the function. Signed-off-by: Kaitlin Rupert diff -r 696c377aa8fc -r b1a29661b142 src/Virt_SettingsDefineCapabilities.c --- a/src/Virt_SettingsDefineCapabilities.c Tue Jun 30 14:33:31 2009 -0700 +++ b/src/Virt_SettingsDefineCapabilities.c Tue Jun 30 14:33:31 2009 -0700 @@ -1258,13 +1258,14 @@ CMPIInstance *inst; CMPIStatus s = {CMPI_RC_OK, NULL}; const char *path = "/dev/null"; - int type[6] = {DISK_POOL_DIR, + int type[7] = {DISK_POOL_DIR, DISK_POOL_FS, DISK_POOL_NETFS, DISK_POOL_DISK, DISK_POOL_ISCSI, - DISK_POOL_LOGICAL}; - int pool_types = 6; + DISK_POOL_LOGICAL, + DISK_POOL_SCSI}; + int pool_types = 7; int i; switch (template_type) { @@ -1291,6 +1292,9 @@ const char *dev_path = NULL; const char *host = NULL; const char *src_dir = NULL; + const char *adapter = NULL; + const char *port_name = NULL; + const char *node_name = NULL; inst = sdc_rasd_inst(&s, ref, CIM_RES_TYPE_DISK, POOL_RASD); if ((inst == NULL) || (s.rc != CMPI_RC_OK)) @@ -1317,6 +1321,13 @@ dev_path = "iscsi-target"; break; + case DISK_POOL_SCSI: + adapter = "host0"; + port_name = "0000111122223333"; + node_name = "4444555566667777"; + path = "/dev/disk/by-id"; + + break; default: break; } @@ -1333,6 +1344,18 @@ CMSetProperty(inst, "SourceDirectory", (CMPIValue *)src_dir, CMPI_chars); + if (adapter != NULL) + CMSetProperty(inst, "AdapterName", + (CMPIValue *)adapter, CMPI_chars); + + if (port_name != NULL) + CMSetProperty(inst, "PortName", + (CMPIValue *)port_name, CMPI_chars); + + if (node_name != NULL) + CMSetProperty(inst, "NodeName", + (CMPIValue *)node_name, CMPI_chars); + CMSetProperty(inst, "Type", (CMPIValue *)&type[i], CMPI_uint16); CMSetProperty(inst, "Path", (CMPIValue *)path, CMPI_chars); From kaitlin at linux.vnet.ibm.com Tue Jun 30 21:45:19 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 30 Jun 2009 14:45:19 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] Update xmlgen to generate SCSI storage pool XML, add support to RPCS In-Reply-To: References: Message-ID: <696c377aa8fce213b019.1246398319@localhost.localdomain> # HG changeset patch # User Kaitlin Rupert # Date 1246397611 25200 # Node ID 696c377aa8fce213b01916af24e1e1027d08c2f7 # Parent fb4f5e6e30cf8316165fa8307bc3fd184ff231fd Update xmlgen to generate SCSI storage pool XML, add support to RPCS This adds the code necessary to read in the SCSI pool related attributes and then generate the appropriate XML. Signed-off-by: Kaitlin Rupert diff -r fb4f5e6e30cf -r 696c377aa8fc libxkutil/xmlgen.c --- a/libxkutil/xmlgen.c Tue Jun 30 14:33:31 2009 -0700 +++ b/libxkutil/xmlgen.c Tue Jun 30 14:33:31 2009 -0700 @@ -874,6 +874,8 @@ return "iscsi"; case DISK_POOL_LOGICAL: return "logical"; + case DISK_POOL_SCSI: + return "scsi"; default: CU_DEBUG("Unsupported disk pool type"); } @@ -925,6 +927,31 @@ return XML_ERROR; } + if (pool->adapter != NULL) { + tmp = xmlNewChild(src, NULL, BAD_CAST "adapter", BAD_CAST NULL); + if (tmp == NULL) + return XML_ERROR; + + if (xmlNewProp(tmp, + BAD_CAST "name", + BAD_CAST pool->adapter) == NULL) + return XML_ERROR; + + if (pool->port_name != NULL) { + if (xmlNewProp(tmp, + BAD_CAST "wwpn", + BAD_CAST pool->port_name) == NULL) + return XML_ERROR; + } + + if (pool->node_name != NULL) { + if (xmlNewProp(tmp, + BAD_CAST "wwnn", + BAD_CAST pool->node_name) == NULL) + return XML_ERROR; + } + } + return NULL; } diff -r fb4f5e6e30cf -r 696c377aa8fc src/Virt_ResourcePoolConfigurationService.c --- a/src/Virt_ResourcePoolConfigurationService.c Tue Jun 30 14:33:31 2009 -0700 +++ b/src/Virt_ResourcePoolConfigurationService.c Tue Jun 30 14:33:31 2009 -0700 @@ -147,6 +147,9 @@ pool->pool_info.disk.path = NULL; pool->pool_info.disk.host = NULL; pool->pool_info.disk.src_dir = NULL; + pool->pool_info.disk.adapter = NULL; + pool->pool_info.disk.port_name = NULL; + pool->pool_info.disk.node_name = NULL; } static char *get_dev_paths(CMPIInstance *inst, @@ -257,6 +260,29 @@ return NULL; } +static const char *disk_scsi_pool(CMPIInstance *inst, + struct virt_pool *pool) +{ + const char *val = NULL; + + if (cu_get_str_prop(inst, "AdapterName", &val) != CMPI_RC_OK) + return "Missing `AdapterName' property"; + + pool->pool_info.disk.adapter = strdup(val); + + if (cu_get_str_prop(inst, "PortName", &val) != CMPI_RC_OK) { + CU_DEBUG("No `PortName' property specified"); + } else + pool->pool_info.disk.port_name = strdup(val); + + if (cu_get_str_prop(inst, "NodeName", &val) != CMPI_RC_OK) { + CU_DEBUG("No `NodeName' property specified"); + } else + pool->pool_info.disk.node_name = strdup(val); + + return NULL; +} + static const char *disk_rasd_to_pool(CMPIInstance *inst, struct virt_pool *pool) { @@ -285,6 +311,9 @@ case DISK_POOL_ISCSI: msg = disk_iscsi_pool(inst, pool); break; + case DISK_POOL_SCSI: + msg = disk_scsi_pool(inst, pool); + break; default: return "Storage pool type not supported"; } From snmishra at us.ibm.com Tue Jun 30 22:08:02 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Tue, 30 Jun 2009 15:08:02 -0700 Subject: [Libvirt-cim] [PATCH 3 of 3] When a guest is modified, raise an indication and set the PreviousInstance prop In-Reply-To: <7e1613aaff99b7ff536a.1246320322@localhost.localdomain> References: <7e1613aaff99b7ff536a.1246320322@localhost.localdomain> Message-ID: +1 Sharad Mishra System x Enablement Linux Technology Center IBM Kaitlin Rupert To Sent by: libvirt-cim at redhat.com libvirt-cim-bounc cc es at redhat.com Subject [Libvirt-cim] [PATCH 3 of 3] When a 06/29/2009 05:05 guest is modified, raise an PM indication and set the PreviousInstance prop Please respond to List for discussion and development of libvirt CIM # HG changeset patch # User Kaitlin Rupert # Date 1245869168 25200 # Node ID 7e1613aaff99b7ff536a9bd0277345bf2d62f4f1 # Parent ca56533192e5a5715c66a8d9ebe0d0fedfe02bd3 When a guest is modified, raise an indication and set the PreviousInstance prop Be sure to get the instance of the guest to modifying the guest. This value is needed when we generate an indication. To test this: Modify a guest and make sure the SourceInstance and PreviousInstance values differ and are correctly set. Signed-off-by: Kaitlin Rupert diff -r ca56533192e5 -r 7e1613aaff99 src/Virt_ComputerSystem.c --- a/src/Virt_ComputerSystem.c Mon Jun 29 17:05:05 2009 -0700 +++ b/src/Virt_ComputerSystem.c Wed Jun 24 11:46:08 2009 -0700 @@ -680,6 +680,39 @@ DEFAULT_EQ(); DEFAULT_INST_CLEANUP(); +static bool trigger_mod_indication(const CMPIContext *context, + CMPIInstance *prev_inst, + const CMPIObjectPath *ref) +{ + CMPIStatus s = {CMPI_RC_OK, NULL}; + const char *ind_name = "ComputerSystemModifiedIndication"; + CMPIInstance *ind = NULL; + char *type = NULL; + + CU_DEBUG("Preparing ComputerSystem indication"); + + ind = get_typed_instance(_BROKER, + CLASSNAME(ref), + ind_name, + NAMESPACE(ref)); + if (ind == NULL) { + CU_DEBUG("Failed to create ind '%s'", ind_name); + goto out; + } + + CU_DEBUG("Setting PreviousInstance"); + CMSetProperty(ind, "PreviousInstance", + (CMPIValue *)&prev_inst, CMPI_instance); + + type = get_typed_class(CLASSNAME(ref), ind_name); + + s = stdi_raise_indication(_BROKER, context, type, NAMESPACE(ref), ind); + + out: + free(type); + return s.rc == CMPI_RC_OK; +} + static int xen_scheduler_params(struct infostore_ctx *ctx, virSchedParameter **params) { @@ -1068,10 +1101,12 @@ CMPIArgs *argsout) { CMPIStatus s; + CMPIInstance *prev_inst = NULL; uint16_t state; int ret; const char *name = NULL; uint32_t rc = 1; + bool ind_rc; ret = cu_get_u16_arg(argsin, "RequestedState", &state); if (ret != CMPI_RC_OK) { @@ -1088,22 +1123,24 @@ goto out; } + /* Retain original instance of the guest to use for the PreviousInstance attribute when generating an indication. */ + s = get_domain_by_name(_BROKER, reference, name, &prev_inst); + if (s.rc != CMPI_RC_OK || prev_inst == NULL) { + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_INVALID_PARAMETER, + "Unable to get instance for guest '%s'", + name); + goto out; + } + s = __state_change(name, state, reference); if (s.rc == CMPI_RC_OK) { - char *type = NULL; - - type = get_typed_class(CLASSNAME(reference), - "ComputerSystemModifiedIndication"); - - /* Failure to raise the indication is okay */ - stdi_trigger_indication(_BROKER, - context, - type, - NAMESPACE(reference)); + ind_rc= trigger_mod_indication(context, prev_inst, reference); + if (!ind_rc) + CU_DEBUG("Unable to trigger indication"); + rc = 0; - - free(type); } out: CMReturnData(results, &rc, CMPI_uint32); _______________________________________________ Libvirt-cim mailing list Libvirt-cim at redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: graycol.gif Type: image/gif Size: 105 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: pic16425.gif Type: image/gif Size: 1255 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ecblank.gif Type: image/gif Size: 45 bytes Desc: not available URL: From snmishra at us.ibm.com Tue Jun 30 22:08:31 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Tue, 30 Jun 2009 15:08:31 -0700 Subject: [Libvirt-cim] [PATCH 2 of 3] Add raise_indication() to CSIndication In-Reply-To: References: Message-ID: +1 Sharad Mishra System x Enablement Linux Technology Center IBM Kaitlin Rupert To Sent by: libvirt-cim at redhat.com libvirt-cim-bounc cc es at redhat.com Subject [Libvirt-cim] [PATCH 2 of 3] Add 06/29/2009 05:05 raise_indication() to CSIndication PM Please respond to List for discussion and development of libvirt CIM # HG changeset patch # User Kaitlin Rupert # Date 1246320305 25200 # Node ID ca56533192e5a5715c66a8d9ebe0d0fedfe02bd3 # Parent 3bf5c713feb1b2bf6094c829e7f423480a05904c Add raise_indication() to CSIndication Currently, the event loop in ComputerSystemIndication gets the XML of the guest when the guest has been modified. However, by the time the event loop is called, the the guest has already been modified. This is because we only generate the indication if the modification is successful. Therefore, we need a function that allows us to raise an indication (instead of trigger in this case). This allows us to set the PreviousInstance attribute of the indication instance we pass to the raise call. Signed-off-by: Kaitlin Rupert diff -r 3bf5c713feb1 -r ca56533192e5 src/Virt_ComputerSystemIndication.c --- a/src/Virt_ComputerSystemIndication.c Mon Jun 29 17:05:03 2009 -0700 +++ b/src/Virt_ComputerSystemIndication.c Mon Jun 29 17:05:05 2009 -0700 @@ -651,8 +651,124 @@ NULL, }; +static CMPIInstance *get_prev_inst(const CMPIBroker *broker, + const CMPIInstance *ind, + CMPIStatus *s) +{ + CMPIData data; + CMPIInstance *prev_inst = NULL; + + data = CMGetProperty(ind, "PreviousInstance", s); + if (s->rc != CMPI_RC_OK || CMIsNullValue(data)) { + cu_statusf(broker, s, + CMPI_RC_ERR_NO_SUCH_PROPERTY, + "Unable to get PreviousInstance of the indication"); + goto out; + } + + if (data.type != CMPI_instance) { + cu_statusf(broker, s, + CMPI_RC_ERR_TYPE_MISMATCH, + "Indication SourceInstance is of unexpected type"); + goto out; + } + + prev_inst = data.value.inst; + + out: + return prev_inst; +} + +static CMPIStatus raise_indication(const CMPIBroker *broker, + const CMPIContext *ctx, + const CMPIInstance *ind) +{ + CMPIStatus s = {CMPI_RC_OK, NULL}; + CMPIInstance *prev_inst; + CMPIInstance *src_inst; + CMPIObjectPath *ref = NULL; + struct std_indication_ctx *_ctx = NULL; + struct ind_args *args = NULL; + char *prefix = NULL; + bool rc; + + if (!lifecycle_enabled) { + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_FAILED, + "CSI not enabled, skipping indication delivery"); + goto out; + } + + prev_inst = get_prev_inst(broker, ind, &s); + if (s.rc != CMPI_RC_OK || CMIsNullObject(prev_inst)) + goto out; + + ref = CMGetObjectPath(prev_inst, &s); + if (s.rc != CMPI_RC_OK) { + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Unable to get a reference to the guest"); + goto out; + } + + /* FIXME: This is a Pegasus work around. Pegsus loses the namespace + when an ObjectPath is pulled from an instance */ + if (STREQ(NAMESPACE(ref), "")) + CMSetNameSpace(ref, "root/virt"); + + s = get_domain_by_ref(broker, ref, &src_inst); + if (s.rc != CMPI_RC_OK || CMIsNullObject(src_inst)) + goto out; + + _ctx = malloc(sizeof(struct std_indication_ctx)); + if (_ctx == NULL) { + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Unable to allocate indication context"); + goto out; + } + + _ctx->brkr = broker; + _ctx->handler = NULL; + _ctx->filters = filters; + _ctx->enabled = lifecycle_enabled; + + args = malloc(sizeof(struct ind_args)); + if (args == NULL) { + cu_statusf(broker, &s, + CMPI_RC_ERR_FAILED, + "Unable to allocate ind_args"); + goto out; + } + + args->ns = strdup(NAMESPACE(ref)); + args->classname = strdup(CLASSNAME(ref)); + args->_ctx = _ctx; + + prefix = class_prefix_name(args->classname); + + rc = _do_indication(broker, ctx, prev_inst, src_inst, + CS_MODIFIED, prefix, args); + + if (!rc) { + cu_statusf(_BROKER, &s, + CMPI_RC_ERR_FAILED, + "Unable to generate indication"); + } + + out: + if (args != NULL) + stdi_free_ind_args(&args); + + if (_ctx != NULL) + free(_ctx); + + free(prefix); + return s; +} + static struct std_indication_handler csi = { - .raise_fn = NULL, + .raise_fn = raise_indication, .trigger_fn = trigger_indication, .activate_fn = ActivateFilter, .deactivate_fn = DeActivateFilter, _______________________________________________ Libvirt-cim mailing list Libvirt-cim at redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: graycol.gif Type: image/gif Size: 105 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: pic25504.gif Type: image/gif Size: 1255 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ecblank.gif Type: image/gif Size: 45 bytes Desc: not available URL: From snmishra at us.ibm.com Tue Jun 30 22:09:21 2009 From: snmishra at us.ibm.com (Sharad Mishra) Date: Tue, 30 Jun 2009 15:09:21 -0700 Subject: [Libvirt-cim] [PATCH 1 of 3] Reorganize code CSIndication - be sure to declare filters earlier in the file In-Reply-To: <3bf5c713feb1b2bf6094.1246320320@localhost.localdomain> References: <3bf5c713feb1b2bf6094.1246320320@localhost.localdomain> Message-ID: +1 Sharad Mishra System x Enablement Linux Technology Center IBM Kaitlin Rupert To Sent by: libvirt-cim at redhat.com libvirt-cim-bounc cc es at redhat.com Subject [Libvirt-cim] [PATCH 1 of 3] 06/29/2009 05:05 Reorganize code CSIndication - be PM sure to declare filters earlier in the file Please respond to List for discussion and development of libvirt CIM # HG changeset patch # User Kaitlin Rupert # Date 1246320303 25200 # Node ID 3bf5c713feb1b2bf6094c829e7f423480a05904c # Parent 6ed64506d55ef019359c6d7420ce927fd49855ac Reorganize code CSIndication - be sure to declare filters earlier in the file This is necessary for the raise_indication() function (see second patch). The raise_indication() function needs access to the filters list. Signed-off-by: Kaitlin Rupert diff -r 6ed64506d55e -r 3bf5c713feb1 src/Virt_ComputerSystemIndication.c --- a/src/Virt_ComputerSystemIndication.c Mon Jun 29 17:04:49 2009 -0700 +++ b/src/Virt_ComputerSystemIndication.c Mon Jun 29 17:05:03 2009 -0700 @@ -628,15 +628,6 @@ return(CMPIStatus){CMPI_RC_OK, NULL}; } -static struct std_indication_handler csi = { - .raise_fn = NULL, - .trigger_fn = trigger_indication, - .activate_fn = ActivateFilter, - .deactivate_fn = DeActivateFilter, - .enable_fn = EnableIndications, - .disable_fn = DisableIndications, -}; - DECLARE_FILTER(xen_created, "Xen_ComputerSystemCreatedIndication"); DECLARE_FILTER(xen_deleted, "Xen_ComputerSystemDeletedIndication"); DECLARE_FILTER(xen_modified, "Xen_ComputerSystemModifiedIndication"); @@ -660,6 +651,14 @@ NULL, }; +static struct std_indication_handler csi = { + .raise_fn = NULL, + .trigger_fn = trigger_indication, + .activate_fn = ActivateFilter, + .deactivate_fn = DeActivateFilter, + .enable_fn = EnableIndications, + .disable_fn = DisableIndications, +}; DEFAULT_IND_CLEANUP(); DEFAULT_AF(); _______________________________________________ Libvirt-cim mailing list Libvirt-cim at redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: graycol.gif Type: image/gif Size: 105 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: pic21905.gif Type: image/gif Size: 1255 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ecblank.gif Type: image/gif Size: 45 bytes Desc: not available URL: From kaitlin at linux.vnet.ibm.com Tue Jun 30 23:00:17 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 30 Jun 2009 19:00:17 -0400 Subject: [Libvirt-cim] Test Run Summary (Jun 30 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb Message-ID: <200906302300.n5UN0HeF015637@d01av04.pok.ibm.com> ================================================= Test Run Summary (Jun 30 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb ================================================= Distro: Fedora release 11.90 (Rawhide) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.6.4 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 898 Libvirt-cim changeset: a57141febd4a Cimtest revision: 709 Cimtest changeset: 479f287a17fd ================================================= FAIL : 5 XFAIL : 3 SKIP : 7 PASS : 143 ----------------- Total : 158 ================================================= FAIL Test Summary: ComputerSystemIndication - 01_created_indication.py: FAIL RASD - 07_parent_disk_pool.py: FAIL ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: VSSD - 02_bootldr.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: FAIL ERROR - Exception : Request Failed: 200 Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "01_created_indication.py", line 146, in main sub_list, ind_names, dict = sub_ind(ip, virt) File "01_created_indication.py", line 60, in sub_ind sub.subscribe(dict['default_url'], dict['default_auth']) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 345, in subscribe "CreateInstance", auth_hdr) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 330, in __do_cimpost (resp.status, resp.reason)) Exception: Request Failed: 200 ERROR - None -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: PASS -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: PASS -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: FAIL ERROR - Exception details: Got 5 recs instead of 3 -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'Pool with that name already exists') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): Pool with that name already exists -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'*** Provider Virt_ResourcePoolConfigurationService(1646) exiting due to a SIGSEGV signal ') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): *** Provider Virt_ResourcePoolConfigurationService(1646) exiting due to a SIGSEGV signal -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ERROR - CIMError : (1, u'Unable to parse embedded object') Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "15_mod_system_settings.py", line 103, in main ret = service.ModifySystemSettings(SystemSettings=vssd) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 32, in __call__ return self.__invoker(self.__name, args) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 44, in __invoke return self.conn.InvokeMethod(method, self.inst, **params) File "/usr/lib/python2.5/site-packages/pywbem/cim_operations.py", line 801, in InvokeMethod result = self.methodcall(MethodName, obj, **params) File "/usr/lib/python2.5/site-packages/pywbem/cim_operations.py", line 362, in methodcall raise CIMError(code, tt[0][1]['DESCRIPTION']) CIMError: (1, u'Unable to parse embedded object') ERROR - None InvokeMethod(ModifySystemSettings): Unable to parse embedded object -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:ps2 No such instance (no device domain/mouse:ps2) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From kaitlin at linux.vnet.ibm.com Tue Jun 30 23:02:41 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 30 Jun 2009 16:02:41 -0700 Subject: [Libvirt-cim] Test Run Summary (Jun 30 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb In-Reply-To: <200906302300.n5UN0HeF015637@d01av04.pok.ibm.com> References: <200906302300.n5UN0HeF015637@d01av04.pok.ibm.com> Message-ID: <4A4A9991.1010609@linux.vnet.ibm.com> Kaitlin Rupert wrote: > ================================================= > Test Run Summary (Jun 30 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb > ================================================= > Distro: Fedora release 11.90 (Rawhide) > Kernel: 2.6.27.15-170.2.24.fc10.x86_64 > libvirt: 0.6.4 > Hypervisor: QEMU 0.9.1 > CIMOM: sfcb sfcbd 1.3.4preview > Libvirt-cim revision: 898 Please ignore this test run. The current tip is 914. I'll send a new run on up-to-date sources. > Libvirt-cim changeset: a57141febd4a > Cimtest revision: 709 > Cimtest changeset: 479f287a17fd -- Kaitlin Rupert IBM Linux Technology Center kaitlin at linux.vnet.ibm.com From kaitlin at linux.vnet.ibm.com Tue Jun 30 23:21:40 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 30 Jun 2009 17:21:40 -0600 Subject: [Libvirt-cim] Test Run Summary (Jun 30 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb Message-ID: <200906302321.n5UNLepd000876@d03av04.boulder.ibm.com> ================================================= Test Run Summary (Jun 30 2009): KVM on Fedora release 11.90 (Rawhide) with sfcb ================================================= Distro: Fedora release 11.90 (Rawhide) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.6.4 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 914 Libvirt-cim changeset: 2f0fb9e5d523 Cimtest revision: 709 Cimtest changeset: 479f287a17fd ================================================= FAIL : 8 XFAIL : 3 SKIP : 7 PASS : 140 ----------------- Total : 158 ================================================= FAIL Test Summary: ComputerSystemIndication - 01_created_indication.py: FAIL HostSystem - 03_hs_to_settdefcap.py: FAIL NetworkPort - 03_user_netport.py: FAIL RASD - 07_parent_disk_pool.py: FAIL ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL SettingsDefineCapabilities - 01_forward.py: FAIL VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL VirtualSystemManagementService - 16_removeresource.py: XFAIL ================================================= SKIP Test Summary: VSSD - 02_bootldr.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: PASS -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: PASS -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: FAIL ERROR - Exception : Request Failed: 200 Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "01_created_indication.py", line 146, in main sub_list, ind_names, dict = sub_ind(ip, virt) File "01_created_indication.py", line 60, in sub_ind sub.subscribe(dict['default_url'], dict['default_auth']) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 345, in subscribe "CreateInstance", auth_hdr) File "/data/users/kaitlin/sandbox/cimtest/suites/libvirt-cim/lib/XenKvmLib/indication_tester.py", line 330, in __do_cimpost (resp.status, resp.reason)) Exception: Request Failed: 200 ERROR - None -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: PASS -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: FAIL ERROR - KVM_SettingsDefineCapabilities returned 16 RASD objects instead of 8 for NetworkPool/cimtest-networkpool Class not found -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: PASS -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: PASS -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: PASS -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: PASS -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: PASS -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: FAIL ERROR - Got CIM error ResourceSettings Error: Invalid Network Type specified with return code 1 ERROR - Unable to define domain test_domain InvokeMethod(DefineSystem): ResourceSettings Error: Invalid Network Type specified -------------------------------------------------------------------- Processor - 01_processor.py: PASS -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: PASS -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: PASS -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: PASS -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: PASS -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: PASS -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: FAIL ERROR - Exception details: Got 6 recs instead of 3 -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: PASS -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'Pool with that name already exists') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): Pool with that name already exists -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: FAIL ERROR - Exception in create_pool() ERROR - Exception details: (1, u'*** Provider Virt_ResourcePoolConfigurationService(16729) exiting due to a SIGSEGV signal ') ERROR - Error in networkpool creation InvokeMethod(CreateChildResourcePool): *** Provider Virt_ResourcePoolConfigurationService(16729) exiting due to a SIGSEGV signal -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: PASS -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: FAIL ERROR - KVM_SettingsDefineCapabilities returned 16 ResourcePool objects instead of 8 -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: FAIL ERROR - CIMError : (1, u'Unable to parse embedded object') Traceback (most recent call last): File "./lib/XenKvmLib/const.py", line 139, in do_try File "15_mod_system_settings.py", line 103, in main ret = service.ModifySystemSettings(SystemSettings=vssd) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 32, in __call__ return self.__invoker(self.__name, args) File "/data/users/kaitlin/sandbox/cimtest/lib/CimTest/CimExt.py", line 44, in __invoke return self.conn.InvokeMethod(method, self.inst, **params) File "/usr/lib/python2.5/site-packages/pywbem/cim_operations.py", line 801, in InvokeMethod result = self.methodcall(MethodName, obj, **params) File "/usr/lib/python2.5/site-packages/pywbem/cim_operations.py", line 362, in methodcall raise CIMError(code, tt[0][1]['DESCRIPTION']) CIMError: (1, u'Unable to parse embedded object') ERROR - None InvokeMethod(ModifySystemSettings): Unable to parse embedded object -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: XFAIL ERROR - 0 RASD insts for domain/mouse:ps2 No such instance (no device domain/mouse:ps2) Bug:<00014> -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS -------------------------------------------------------------------- From kaitlin at linux.vnet.ibm.com Tue Jun 30 23:48:53 2009 From: kaitlin at linux.vnet.ibm.com (Kaitlin Rupert) Date: Tue, 30 Jun 2009 19:48:53 -0400 Subject: [Libvirt-cim] Test Run Summary (Jul 01 2009): LXC on Fedora release 11.90 (Rawhide) with sfcb Message-ID: <200906302348.n5UNmrU6003851@d01av02.pok.ibm.com> ================================================= Test Run Summary (Jul 01 2009): LXC on Fedora release 11.90 (Rawhide) with sfcb ================================================= Distro: Fedora release 11.90 (Rawhide) Kernel: 2.6.27.15-170.2.24.fc10.x86_64 libvirt: 0.6.4 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.4preview Libvirt-cim revision: 914 Libvirt-cim changeset: 2f0fb9e5d523 Cimtest revision: 709 Cimtest changeset: 479f287a17fd ================================================= FAIL : 5 XFAIL : 9 SKIP : 39 PASS : 105 ----------------- Total : 158 ================================================= FAIL Test Summary: RASD - 01_verify_rasd_fields.py: FAIL ServiceAffectsElement - 01_forward.py: FAIL ServiceAffectsElement - 02_reverse.py: FAIL SettingsDefine - 02_reverse.py: FAIL SystemDevice - 01_forward.py: FAIL ================================================= XFAIL Test Summary: ComputerSystem - 06_paused_active_suspend.py: XFAIL ComputerSystem - 23_pause_pause.py: XFAIL ComputerSystem - 32_start_reboot.py: XFAIL ComputerSystem - 33_suspend_reboot.py: XFAIL HostSystem - 02_hostsystem_to_rasd.py: XFAIL HostedDependency - 03_enabledstate.py: XFAIL VSSD - 04_vssd_to_rasd.py: XFAIL VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP ComputerSystemIndication - 01_created_indication.py: SKIP ElementAllocatedFromPool - 03_reverse_errs.py: SKIP ElementAllocatedFromPool - 04_forward_errs.py: SKIP LogicalDisk - 01_disk.py: SKIP LogicalDisk - 03_ld_gi_errs.py: SKIP NetworkPort - 01_netport.py: SKIP NetworkPort - 02_np_gi_errors.py: SKIP NetworkPort - 03_user_netport.py: SKIP Processor - 01_processor.py: SKIP Processor - 02_definesys_get_procs.py: SKIP Processor - 03_proc_gi_errs.py: SKIP RASD - 04_disk_rasd_size.py: SKIP RASD - 05_disk_rasd_emu_type.py: SKIP RASD - 06_parent_net_pool.py: SKIP RASD - 07_parent_disk_pool.py: SKIP ResourceAllocationFromPool - 05_RAPF_err.py: SKIP ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP VSSD - 02_bootldr.py: SKIP VirtualSystemManagementService - 06_addresource.py: SKIP VirtualSystemManagementService - 08_modifyresource.py: SKIP VirtualSystemManagementService - 09_procrasd_persist.py: SKIP VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP VirtualSystemManagementService - 12_referenced_config.py: SKIP VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP VirtualSystemManagementService - 16_removeresource.py: SKIP VirtualSystemManagementService - 17_removeresource_neg.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: PASS -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception variable: Unable pause dom 'DomST1' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_pause_pause.py: XFAIL ERROR - Got CIM error Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend with return code 1 ERROR - Exception: 'Unable pause dom 'cs_test_domain'' InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- ComputerSystem - 27_define_pause_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: XFAIL ERROR - Got CIM error Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot with return code 1 ERROR - Exception: Unable reboot dom 'cs_test_domain' InvokeMethod(RequestStateChange): Unable to reboot domain: this function is not supported by the hypervisor: virDomainReboot Bug:<00005> -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: XFAIL ERROR - Got CIM error State not supported with return code 7 ERROR - Exception: Unable Suspend dom 'test_domain' InvokeMethod(RequestStateChange): State not supported Bug:<00012> -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: PASS -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: SKIP -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned CrossClass_GuestDom/mouse:xen instead of CrossClass_GuestDom/mouse:usb Class not found Bug:<00009> -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 01_forward.py: PASS -------------------------------------------------------------------- HostedAccessPoint - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: XFAIL ERROR - Exception: (1, u'Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend') ERROR - Failed to suspend the dom: hd_domain1 InvokeMethod(RequestStateChange): Unable to pause domain: this function is not supported by the hypervisor: virDomainSuspend Bug:<00011> -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- KVMRedirectionSAP - 01_enum_KVMredSAP.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: SKIP -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: PASS -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: SKIP -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: SKIP -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: SKIP -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: SKIP -------------------------------------------------------------------- Processor - 01_processor.py: SKIP -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: SKIP -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: SKIP -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: PASS -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: FAIL ERROR - 6 assoc_info != 5 RASD insts -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: SKIP -------------------------------------------------------------------- RASD - 05_disk_rasd_emu_type.py: SKIP -------------------------------------------------------------------- RASD - 06_parent_net_pool.py: SKIP -------------------------------------------------------------------- RASD - 07_parent_disk_pool.py: SKIP -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: PASS -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: SKIP -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 08_CreateDiskResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 09_DeleteDiskPool.py: SKIP -------------------------------------------------------------------- ServiceAccessBySAP - 01_forward.py: PASS -------------------------------------------------------------------- ServiceAccessBySAP - 02_reverse.py: PASS -------------------------------------------------------------------- ServiceAffectsElement - 01_forward.py: FAIL ERROR - Got more than one record for 'LXC_PointingDevice' ERROR - Exception in fn verify_assoc() ERROR - Exception details: Failed to get insts for domain SAE_dom -------------------------------------------------------------------- ServiceAffectsElement - 02_reverse.py: FAIL ERROR - Got more than one record for 'LXC_PointingDevice' ERROR - Exception : Failed to get init_list -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: FAIL ERROR - Got 6 RASDs, expected 5 ERROR - Failed to verify RASDs -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: PASS -------------------------------------------------------------------- SystemDevice - 01_forward.py: FAIL ERROR - Device Class mismatch ERROR - Exception Expected Device class list: ['LXC_Memory', 'LXC_Processor'] Got: [u'LXC_DisplayController', u'LXC_LogicalDisk', u'LXC_Memory', u'LXC_PointingDevice'] -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL ERROR - rstest_domain not updated properly. ERROR - Exp AutomaticRecoveryAction=3, got 2 Bug:<00008> -------------------------------------------------------------------- VirtualSystemManagementService - 16_removeresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 17_removeresource_neg.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 06_remote_live_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 07_remote_offline_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 08_remote_restart_resume_migration.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: XFAIL ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 03_create_snapshot.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS --------------------------------------------------------------------