[PATCH 0 of 5] (#2) Fix up associations to SBLIM host system

# HG changeset patch # User Dan Smith <danms@us.ibm.com> # Date 1225811646 28800 # Node ID e6f0f20c357e04f9285ef99ab642ec398e7f51b2 # Parent 1e1954312a8adb776cc62703d3363fe7f82c0069 Add a function that converts a SBLIM host system instance to something with a platform prefix. This is just used to satisfy lower layers that key off the platform prefix (i.e. KVM_) of a class name to determine how to connect to libvirt. Signed-off-by: Dan Smith <danms@us.ibm.com> diff -r 1e1954312a8a -r e6f0f20c357e libxkutil/misc_util.c --- a/libxkutil/misc_util.c Fri Oct 31 13:06:10 2008 -0700 +++ b/libxkutil/misc_util.c Tue Nov 04 07:14:06 2008 -0800 @@ -37,6 +37,8 @@ #include "misc_util.h" #include "cs_util.h" + +#include <config.h> #define URI_ENV "HYPURI" @@ -580,6 +582,31 @@ return actual; } +CMPIObjectPath *convert_sblim_hostsystem(const CMPIBroker *broker, + const CMPIObjectPath *ref, + struct std_assoc_info *info) +{ + CMPIObjectPath *vref = NULL; + CMPIStatus s; + char *base = NULL; + char *cn = NULL; + + base = class_base_name(CLASSNAME(ref)); + if (base == NULL) + goto out; + + cn = get_typed_class(info->assoc_class, base); + if (cn == NULL) + goto out; + + vref = CMNewObjectPath(broker, CIM_VIRT_NS, cn, &s); + out: + free(base); + free(cn); + + return vref; +} + /* * Local Variables: * mode: C diff -r 1e1954312a8a -r e6f0f20c357e libxkutil/misc_util.h --- a/libxkutil/misc_util.h Fri Oct 31 13:06:10 2008 -0700 +++ b/libxkutil/misc_util.h Tue Nov 04 07:14:06 2008 -0800 @@ -126,6 +126,10 @@ int domain_vcpu_count(virDomainPtr dom); +CMPIObjectPath *convert_sblim_hostsystem(const CMPIBroker *broker, + const CMPIObjectPath *ref, + struct std_assoc_info *info); + #define LIBVIRT_CIM_DEFAULT_MAKEREF() \ static CMPIInstance* make_ref(const CMPIObjectPath *source_ref, \ const CMPIInstance *target_inst, \

# HG changeset patch # User Dan Smith <danms@us.ibm.com> # Date 1225825154 28800 # Node ID 39f290b8978e20c122a7ccf3ad702feeaae4e52a # Parent e6f0f20c357e04f9285ef99ab642ec398e7f51b2 Make HostedResourcePool work from root/cimv2 and register it there ...so we can get back from HostSystem to our pools. Signed-off-by: Dan Smith <danms@us.ibm.com> diff -r e6f0f20c357e -r 39f290b8978e Makefile.am --- a/Makefile.am Tue Nov 04 07:14:06 2008 -0800 +++ b/Makefile.am Tue Nov 04 10:59:14 2008 -0800 @@ -61,6 +61,8 @@ schema/ElementConformsToProfile.mof \ schema/ReferencedProfile.mof +CIMV2_MOFS = \ + schema/HostedResourcePool.mof REGS = \ schema/ComputerSystem.registration \ @@ -112,6 +114,9 @@ schema/ElementConformsToProfile.registration \ schema/ReferencedProfile.registration +CIMV2_REGS = \ + schema/HostedResourcePool.registration + pkgdata_DATA = $(MOFS) $(REGS) $(INTEROP_MOFS) $(INTEROP_REGS) pkgdata_SCRIPTS = provider-register.sh @@ -129,12 +134,14 @@ postinstall: sh provider-register.sh -v -t @CIMSERVER@ -n @CIM_VIRT_NS@ -r $(REGS) -m $(MOFS) sh provider-register.sh -v -t @CIMSERVER@ -n root/interop -r $(INTEROP_REGS) -m $(INTEROP_MOFS) + sh provider-register.sh -v -t @CIMSERVER@ -n root/cimv2 -r $(CIMV2_REGS) -m $(CIMV2_MOFS) virsh -v | grep -q '^0.3' && cp examples/diskpool.conf $(DISK_POOL_CONFIG) || true mkdir -p $(INFO_STORE) preuninstall: sh provider-register.sh -v -d -t @CIMSERVER@ -n @CIM_VIRT_NS@ -r $(REGS) -m $(MOFS) sh provider-register.sh -v -d -t @CIMSERVER@ -n root/interop -r $(INTEROP_REGS) -m $(INTEROP_MOFS) + sh provider-register.sh -v -d -t @CIMSERVER@ -n root/cimv2 -r $(CIMV2_REGS) -m $(CIMV2_MOFS) rpm: clean @(unset CDPATH ; $(MAKE) dist && rpmbuild -ta $(distdir).tar.gz) diff -r e6f0f20c357e -r 39f290b8978e base_schema/cimv216-cimv2_mof --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/base_schema/cimv216-cimv2_mof Tue Nov 04 10:59:14 2008 -0800 @@ -0,0 +1,7 @@ +Qualifier IsPUnit : boolean = false, + Scope(property, method, parameter); + +#pragma include ("Core/CIM_ResourcePool.mof") +#pragma include ("Core/CIM_HostedResourcePool.mof") +#pragma include ("Core/CIM_ElementCapabilities.mof") +#pragma include ("Core/CIM_HostedService.mof") diff -r e6f0f20c357e -r 39f290b8978e base_schema/install_base_schema.sh.in --- a/base_schema/install_base_schema.sh.in Tue Nov 04 07:14:06 2008 -0800 +++ b/base_schema/install_base_schema.sh.in Tue Nov 04 10:59:14 2008 -0800 @@ -22,6 +22,8 @@ fix_schema() { (cd ${TMPDIR} && patch -p0 < ${DATA}/fix_schema.patch) cp -a ${DATA}/cimv216-interop_mof ${TMPDIR}/cimv216-interop.mof + cp -a ${DATA}/cimv216-cimv2_mof ${TMPDIR}/cimv216-cimv2.mof + } detect_peg_repo() { @@ -72,6 +74,7 @@ cimmofl -uc -aEV -R$repo -n $NS qualifiers.mof cimmofl -uc -aEV -R$repo -n $NS qualifiers_optional.mof cimmofl -uc -aEV -R$repo -n /root/interop cimv???-interop.mof + cimmofl -uc -aEV -R$repo -n /root/interop cimv???-cimv2.mof } install_schema_sfcb() { diff -r e6f0f20c357e -r 39f290b8978e schema/HostedResourcePool.registration --- a/schema/HostedResourcePool.registration Tue Nov 04 07:14:06 2008 -0800 +++ b/schema/HostedResourcePool.registration Tue Nov 04 10:59:14 2008 -0800 @@ -3,3 +3,6 @@ Xen_HostedResourcePool root/virt Virt_HostedResourcePool Virt_HostedResourcePool association KVM_HostedResourcePool root/virt Virt_HostedResourcePool Virt_HostedResourcePool association LXC_HostedResourcePool root/virt Virt_HostedResourcePool Virt_HostedResourcePool association +Xen_HostedResourcePool root/cimv2 Virt_HostedResourcePool Virt_HostedResourcePool association +KVM_HostedResourcePool root/cimv2 Virt_HostedResourcePool Virt_HostedResourcePool association +LXC_HostedResourcePool root/cimv2 Virt_HostedResourcePool Virt_HostedResourcePool association diff -r e6f0f20c357e -r 39f290b8978e src/Virt_HostedResourcePool.c --- a/src/Virt_HostedResourcePool.c Tue Nov 04 07:14:06 2008 -0800 +++ b/src/Virt_HostedResourcePool.c Tue Nov 04 10:59:14 2008 -0800 @@ -31,6 +31,8 @@ #include <libcmpiutil/libcmpiutil.h> #include "misc_util.h" #include <libcmpiutil/std_association.h> + +#include <config.h> #include "Virt_HostSystem.h" #include "Virt_DevicePool.h" @@ -68,15 +70,21 @@ { CMPIStatus s = {CMPI_RC_OK, NULL}; CMPIInstance *inst = NULL; + CMPIObjectPath *virtref = NULL; - if (!match_hypervisor_prefix(ref, info)) + if (!STARTS_WITH(CLASSNAME(ref), "Linux_") && + !match_hypervisor_prefix(ref, info)) + goto out; + + virtref = convert_sblim_hostsystem(_BROKER, ref, info); + if (virtref == NULL) goto out; s = get_host(_BROKER, info->context, ref, &inst, true); if (s.rc != CMPI_RC_OK) goto out; - s = enum_pools(_BROKER, ref, CIM_RES_TYPE_ALL, list); + s = enum_pools(_BROKER, virtref, CIM_RES_TYPE_ALL, list); out: return s; @@ -88,6 +96,7 @@ "Xen_HostSystem", "KVM_HostSystem", "LXC_HostSystem", + "Linux_ComputerSystem", NULL };

diff -r e6f0f20c357e -r 39f290b8978e base_schema/install_base_schema.sh.in --- a/base_schema/install_base_schema.sh.in Tue Nov 04 07:14:06 2008 -0800 +++ b/base_schema/install_base_schema.sh.in Tue Nov 04 10:59:14 2008 -0800 @@ -22,6 +22,8 @@ fix_schema() { (cd ${TMPDIR} && patch -p0 < ${DATA}/fix_schema.patch) cp -a ${DATA}/cimv216-interop_mof ${TMPDIR}/cimv216-interop.mof + cp -a ${DATA}/cimv216-cimv2_mof ${TMPDIR}/cimv216-cimv2.mof + }
detect_peg_repo() { @@ -72,6 +74,7 @@ cimmofl -uc -aEV -R$repo -n $NS qualifiers.mof cimmofl -uc -aEV -R$repo -n $NS qualifiers_optional.mof cimmofl -uc -aEV -R$repo -n /root/interop cimv???-interop.mof + cimmofl -uc -aEV -R$repo -n /root/interop cimv???-cimv2.mof
The namespace should be /root/cimv2, not /root/interop. Also, I had to add the following line prior to this addition: cimmofl -uc -aEV -R$repo -n /root/cimv2 qualifiers.mof Otherwise, I get an error complaining the "Experimental" qualifier isn't available in the cimv2 namespace. -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com

KR> The namespace should be /root/cimv2, not /root/interop. Oops. The reason this wasn't initially included is because I modified the .sh instead of the .sh.in. Then when I went to move it, I moved it wrong. KR> Also, I had to add the following line prior to this addition: KR> cimmofl -uc -aEV -R$repo -n /root/cimv2 qualifiers.mof Hmm. The cimv2 mof that I created has one of the needed qualifiers in it, but not the experimental one. It seems like we should avoid dumping all the new qualifiers into cimv2, don't you think? KR> Otherwise, I get an error complaining the "Experimental" qualifier KR> isn't available in the cimv2 namespace. I'll add Experimental and fix the path above. I guess I need to kill my entire pegasus installation to really test :( -- Dan Smith IBM Linux Technology Center Open Hypervisor Team email: danms@us.ibm.com

Dan Smith wrote:
KR> The namespace should be /root/cimv2, not /root/interop.
Oops. The reason this wasn't initially included is because I modified the .sh instead of the .sh.in. Then when I went to move it, I moved it wrong.
KR> Also, I had to add the following line prior to this addition:
KR> cimmofl -uc -aEV -R$repo -n /root/cimv2 qualifiers.mof
Hmm. The cimv2 mof that I created has one of the needed qualifiers in it, but not the experimental one. It seems like we should avoid dumping all the new qualifiers into cimv2, don't you think?
Agreed - that's a better approach. -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com

# HG changeset patch # User Dan Smith <danms@us.ibm.com> # Date 1225825186 28800 # Node ID a469400c34e0657bd01b9ef91789b0686c661ca4 # Parent 39f290b8978e20c122a7ccf3ad702feeaae4e52a Make ElementCapabilities work from root/cimv2 and register it there ...so we can get back from HostSystem to our Capabilities Signed-off-by: Dan Smith <danms@us.ibm.com> diff -r 39f290b8978e -r a469400c34e0 Makefile.am --- a/Makefile.am Tue Nov 04 10:59:14 2008 -0800 +++ b/Makefile.am Tue Nov 04 10:59:46 2008 -0800 @@ -62,7 +62,8 @@ schema/ReferencedProfile.mof CIMV2_MOFS = \ - schema/HostedResourcePool.mof + schema/HostedResourcePool.mof \ + schema/ElementCapabilities.mof REGS = \ schema/ComputerSystem.registration \ @@ -115,7 +116,8 @@ schema/ReferencedProfile.registration CIMV2_REGS = \ - schema/HostedResourcePool.registration + schema/HostedResourcePool.registration \ + schema/ElementCapabilities.registration pkgdata_DATA = $(MOFS) $(REGS) $(INTEROP_MOFS) $(INTEROP_REGS) pkgdata_SCRIPTS = provider-register.sh diff -r 39f290b8978e -r a469400c34e0 schema/ElementCapabilities.registration --- a/schema/ElementCapabilities.registration Tue Nov 04 10:59:14 2008 -0800 +++ b/schema/ElementCapabilities.registration Tue Nov 04 10:59:46 2008 -0800 @@ -3,3 +3,6 @@ Xen_ElementCapabilities root/virt Virt_ElementCapabilities Virt_ElementCapabilities association KVM_ElementCapabilities root/virt Virt_ElementCapabilities Virt_ElementCapabilities association LXC_ElementCapabilities root/virt Virt_ElementCapabilities Virt_ElementCapabilities association +Xen_ElementCapabilities root/cimv2 Virt_ElementCapabilities Virt_ElementCapabilities association +KVM_ElementCapabilities root/cimv2 Virt_ElementCapabilities Virt_ElementCapabilities association +LXC_ElementCapabilities root/cimv2 Virt_ElementCapabilities Virt_ElementCapabilities association diff -r 39f290b8978e -r a469400c34e0 src/Virt_ElementCapabilities.c --- a/src/Virt_ElementCapabilities.c Tue Nov 04 10:59:14 2008 -0800 +++ b/src/Virt_ElementCapabilities.c Tue Nov 04 10:59:46 2008 -0800 @@ -146,27 +146,33 @@ { CMPIInstance *inst = NULL; CMPIStatus s = {CMPI_RC_OK, NULL}; + CMPIObjectPath *vref = NULL; - if (!match_hypervisor_prefix(ref, info)) + if (!STARTS_WITH(CLASSNAME(ref), "Linux_") && + !match_hypervisor_prefix(ref, info)) goto out; s = get_host(_BROKER, info->context, ref, &inst, true); if (s.rc != CMPI_RC_OK) goto out; - s = get_vsm_cap(_BROKER, ref, &inst, false); + vref = convert_sblim_hostsystem(_BROKER, ref, info); + if (vref == NULL) + goto out; + + s = get_vsm_cap(_BROKER, vref, &inst, false); if (s.rc == CMPI_RC_OK) inst_list_add(list, inst); - s = get_migration_caps(ref, &inst, _BROKER, false); + s = get_migration_caps(vref, &inst, _BROKER, false); if (s.rc == CMPI_RC_OK) inst_list_add(list, inst); - s = get_console_rs_caps(_BROKER, ref, &inst, false); + s = get_console_rs_caps(_BROKER, vref, &inst, false); if (s.rc == CMPI_RC_OK) inst_list_add(list, inst); - s = enum_alloc_cap_instances(_BROKER, ref, NULL, NULL, list); + s = enum_alloc_cap_instances(_BROKER, vref, NULL, NULL, list); if (s.rc != CMPI_RC_OK) { CU_DEBUG("Failed to enum AC: %s", CMGetCharPtr(s.msg)); @@ -393,6 +399,7 @@ "Xen_HostSystem", "KVM_HostSystem", "LXC_HostSystem", + "Linux_ComputerSystem", NULL }; @@ -409,6 +416,7 @@ "LXC_VirtualSystemManagementService", "LXC_VirtualSystemMigrationService", "LXC_ConsoleRedirectionService", + "Linux_ComputerSystem", NULL };

# HG changeset patch # User Dan Smith <danms@us.ibm.com> # Date 1225825186 28800 # Node ID 3471549119039b87933a07cc55ba0d4a2911149e # Parent a469400c34e0657bd01b9ef91789b0686c661ca4 Make HostedService work from root/cimv2 and register it there ...so we can get back from HostSystem to our Services. Signed-off-by: Dan Smith <danms@us.ibm.com> diff -r a469400c34e0 -r 347154911903 Makefile.am --- a/Makefile.am Tue Nov 04 10:59:46 2008 -0800 +++ b/Makefile.am Tue Nov 04 10:59:46 2008 -0800 @@ -63,7 +63,8 @@ CIMV2_MOFS = \ schema/HostedResourcePool.mof \ - schema/ElementCapabilities.mof + schema/ElementCapabilities.mof \ + schema/HostedService.mof REGS = \ schema/ComputerSystem.registration \ @@ -117,7 +118,8 @@ CIMV2_REGS = \ schema/HostedResourcePool.registration \ - schema/ElementCapabilities.registration + schema/ElementCapabilities.registration \ + schema/HostedService.registration pkgdata_DATA = $(MOFS) $(REGS) $(INTEROP_MOFS) $(INTEROP_REGS) pkgdata_SCRIPTS = provider-register.sh diff -r a469400c34e0 -r 347154911903 schema/HostedService.registration --- a/schema/HostedService.registration Tue Nov 04 10:59:46 2008 -0800 +++ b/schema/HostedService.registration Tue Nov 04 10:59:46 2008 -0800 @@ -3,3 +3,6 @@ Xen_HostedService root/virt Virt_HostedService Virt_HostedService association KVM_HostedService root/virt Virt_HostedService Virt_HostedService association LXC_HostedService root/virt Virt_HostedService Virt_HostedService association +Xen_HostedService root/cimv2 Virt_HostedService Virt_HostedService association +KVM_HostedService root/cimv2 Virt_HostedService Virt_HostedService association +LXC_HostedService root/cimv2 Virt_HostedService Virt_HostedService association diff -r a469400c34e0 -r 347154911903 src/Virt_HostedService.c --- a/src/Virt_HostedService.c Tue Nov 04 10:59:46 2008 -0800 +++ b/src/Virt_HostedService.c Tue Nov 04 10:59:46 2008 -0800 @@ -89,38 +89,44 @@ { CMPIStatus s = {CMPI_RC_OK, NULL}; CMPIInstance *inst = NULL; + CMPIObjectPath *vref = NULL; - if (!match_hypervisor_prefix(ref, info)) + if (!STARTS_WITH(CLASSNAME(ref), "Linux_") && + !match_hypervisor_prefix(ref, info)) return s; s = get_host(_BROKER, info->context, ref, &inst, true); if (s.rc != CMPI_RC_OK) return s; - s = get_rpcs(ref, &inst, _BROKER, info->context, false); + vref = convert_sblim_hostsystem(_BROKER, ref, info); + if (vref == NULL) + goto out; + + s = get_rpcs(vref, &inst, _BROKER, info->context, false); if (s.rc != CMPI_RC_OK) return s; if (!CMIsNullObject(inst)) inst_list_add(list, inst); - s = get_vsms(ref, &inst, _BROKER, info->context, false); + s = get_vsms(vref, &inst, _BROKER, info->context, false); if (s.rc != CMPI_RC_OK) return s; if (!CMIsNullObject(inst)) inst_list_add(list, inst); - s = get_migration_service(ref, &inst, _BROKER, info->context, false); + s = get_migration_service(vref, &inst, _BROKER, info->context, false); if (s.rc != CMPI_RC_OK) return s; if (!CMIsNullObject(inst)) inst_list_add(list, inst); - s = get_console_rs(ref, &inst, _BROKER, info->context, false); + s = get_console_rs(vref, &inst, _BROKER, info->context, false); if (s.rc != CMPI_RC_OK) return s; if (!CMIsNullObject(inst)) inst_list_add(list, inst); - + out: return s; } @@ -130,6 +136,7 @@ "Xen_HostSystem", "KVM_HostSystem", "LXC_HostSystem", + "Linux_ComputerSystem", NULL };

# HG changeset patch # User Dan Smith <danms@us.ibm.com> # Date 1225825186 28800 # Node ID bb67f1fc046db9dac69343edf07cc57e0941c6c8 # Parent 3471549119039b87933a07cc55ba0d4a2911149e Make HostedDependency work from root/cimv2 and register it there ...so we can get back from HostSystem to our ComputerSystems Signed-off-by: Dan Smith <danms@us.ibm.com> diff -r 347154911903 -r bb67f1fc046d Makefile.am --- a/Makefile.am Tue Nov 04 10:59:46 2008 -0800 +++ b/Makefile.am Tue Nov 04 10:59:46 2008 -0800 @@ -64,7 +64,8 @@ CIMV2_MOFS = \ schema/HostedResourcePool.mof \ schema/ElementCapabilities.mof \ - schema/HostedService.mof + schema/HostedService.mof \ + schema/HostedDependency.mof REGS = \ schema/ComputerSystem.registration \ @@ -119,7 +120,8 @@ CIMV2_REGS = \ schema/HostedResourcePool.registration \ schema/ElementCapabilities.registration \ - schema/HostedService.registration + schema/HostedService.registration \ + schema/HostedDependency.registration pkgdata_DATA = $(MOFS) $(REGS) $(INTEROP_MOFS) $(INTEROP_REGS) pkgdata_SCRIPTS = provider-register.sh diff -r 347154911903 -r bb67f1fc046d schema/HostedDependency.registration --- a/schema/HostedDependency.registration Tue Nov 04 10:59:46 2008 -0800 +++ b/schema/HostedDependency.registration Tue Nov 04 10:59:46 2008 -0800 @@ -3,3 +3,6 @@ Xen_HostedDependency root/virt Virt_HostedDependency Virt_HostedDependency association KVM_HostedDependency root/virt Virt_HostedDependency Virt_HostedDependency association LXC_HostedDependency root/virt Virt_HostedDependency Virt_HostedDependency association +Xen_HostedDependency root/cimv2 Virt_HostedDependency Virt_HostedDependency association +KVM_HostedDependency root/cimv2 Virt_HostedDependency Virt_HostedDependency association +LXC_HostedDependency root/cimv2 Virt_HostedDependency Virt_HostedDependency association diff -r 347154911903 -r bb67f1fc046d src/Virt_HostedDependency.c --- a/src/Virt_HostedDependency.c Tue Nov 04 10:59:46 2008 -0800 +++ b/src/Virt_HostedDependency.c Tue Nov 04 10:59:46 2008 -0800 @@ -64,15 +64,21 @@ { CMPIStatus s = {CMPI_RC_OK, NULL}; CMPIInstance *instance = NULL; + CMPIObjectPath *vref = NULL; - if (!match_hypervisor_prefix(ref, info)) + if (!STARTS_WITH(CLASSNAME(ref), "Linux_") && + !match_hypervisor_prefix(ref, info)) goto out; s = get_host(_BROKER, info->context, ref, &instance, true); if (s.rc != CMPI_RC_OK) goto out; - s = enum_domains(_BROKER, ref, list); + vref = convert_sblim_hostsystem(_BROKER, ref, info); + if (vref == NULL) + goto out; + + s = enum_domains(_BROKER, vref, list); out: return s; @@ -91,6 +97,7 @@ "Xen_HostSystem", "KVM_HostSystem", "LXC_HostSystem", + "Linux_ComputerSystem", NULL };
participants (2)
-
Dan Smith
-
Kaitlin Rupert