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

This is a revised version of my previous set. I tested against a fresh pegasus install and there were no schema install complaints.

# HG changeset patch # User Dan Smith <danms@us.ibm.com> # Date 1226593541 28800 # Node ID be6fcb7b57d4cc727c5ee904e0c2e55444eafe81 # Parent 75896120cb575bd760de39f316a640582c09dd55 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 75896120cb57 -r be6fcb7b57d4 libxkutil/misc_util.c --- a/libxkutil/misc_util.c Wed Nov 05 15:09:49 2008 -0800 +++ b/libxkutil/misc_util.c Thu Nov 13 08:25:41 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 75896120cb57 -r be6fcb7b57d4 libxkutil/misc_util.h --- a/libxkutil/misc_util.h Wed Nov 05 15:09:49 2008 -0800 +++ b/libxkutil/misc_util.h Thu Nov 13 08:25:41 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 1226593726 28800 # Node ID 0ef4058624c9383119f9550eb410efaf7b057c88 # Parent be6fcb7b57d4cc727c5ee904e0c2e55444eafe81 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 be6fcb7b57d4 -r 0ef4058624c9 Makefile.am --- a/Makefile.am Thu Nov 13 08:25:41 2008 -0800 +++ b/Makefile.am Thu Nov 13 08:28:46 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 be6fcb7b57d4 -r 0ef4058624c9 base_schema/cimv216-cimv2_mof --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/base_schema/cimv216-cimv2_mof Thu Nov 13 08:28:46 2008 -0800 @@ -0,0 +1,11 @@ +Qualifier IsPUnit : boolean = false, + Scope(property, method, parameter); + +Qualifier Experimental : boolean = false, + Scope(any), + Flavor(EnableOverride, Restricted); + +#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 be6fcb7b57d4 -r 0ef4058624c9 base_schema/install_base_schema.sh.in --- a/base_schema/install_base_schema.sh.in Thu Nov 13 08:25:41 2008 -0800 +++ b/base_schema/install_base_schema.sh.in Thu Nov 13 08:28:46 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/cimv2 cimv???-cimv2.mof } install_schema_sfcb() { diff -r be6fcb7b57d4 -r 0ef4058624c9 schema/HostedResourcePool.registration --- a/schema/HostedResourcePool.registration Thu Nov 13 08:25:41 2008 -0800 +++ b/schema/HostedResourcePool.registration Thu Nov 13 08:28:46 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 be6fcb7b57d4 -r 0ef4058624c9 src/Virt_HostedResourcePool.c --- a/src/Virt_HostedResourcePool.c Thu Nov 13 08:25:41 2008 -0800 +++ b/src/Virt_HostedResourcePool.c Thu Nov 13 08:28:46 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 };

# HG changeset patch # User Dan Smith <danms@us.ibm.com> # Date 1226594012 28800 # Node ID 73d746ef73a16ac4212e9c7459dfd0bfc50fb2e2 # Parent 0ef4058624c9383119f9550eb410efaf7b057c88 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 0ef4058624c9 -r 73d746ef73a1 Makefile.am --- a/Makefile.am Thu Nov 13 08:28:46 2008 -0800 +++ b/Makefile.am Thu Nov 13 08:33:32 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 0ef4058624c9 -r 73d746ef73a1 schema/ElementCapabilities.registration --- a/schema/ElementCapabilities.registration Thu Nov 13 08:28:46 2008 -0800 +++ b/schema/ElementCapabilities.registration Thu Nov 13 08:33:32 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 0ef4058624c9 -r 73d746ef73a1 src/Virt_ElementCapabilities.c --- a/src/Virt_ElementCapabilities.c Thu Nov 13 08:28:46 2008 -0800 +++ b/src/Virt_ElementCapabilities.c Thu Nov 13 08:33:32 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 1226594012 28800 # Node ID 542c7b726a870a1ca20b4ebae790d9287fd0cc9d # Parent 73d746ef73a16ac4212e9c7459dfd0bfc50fb2e2 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 73d746ef73a1 -r 542c7b726a87 Makefile.am --- a/Makefile.am Thu Nov 13 08:33:32 2008 -0800 +++ b/Makefile.am Thu Nov 13 08:33:32 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 73d746ef73a1 -r 542c7b726a87 schema/HostedService.registration --- a/schema/HostedService.registration Thu Nov 13 08:33:32 2008 -0800 +++ b/schema/HostedService.registration Thu Nov 13 08:33:32 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 73d746ef73a1 -r 542c7b726a87 src/Virt_HostedService.c --- a/src/Virt_HostedService.c Thu Nov 13 08:33:32 2008 -0800 +++ b/src/Virt_HostedService.c Thu Nov 13 08:33:32 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 1226594012 28800 # Node ID cb9db13d3b202434c16ae3e17bc407e1c84faf75 # Parent 542c7b726a870a1ca20b4ebae790d9287fd0cc9d 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 542c7b726a87 -r cb9db13d3b20 Makefile.am --- a/Makefile.am Thu Nov 13 08:33:32 2008 -0800 +++ b/Makefile.am Thu Nov 13 08:33:32 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 542c7b726a87 -r cb9db13d3b20 schema/HostedDependency.registration --- a/schema/HostedDependency.registration Thu Nov 13 08:33:32 2008 -0800 +++ b/schema/HostedDependency.registration Thu Nov 13 08:33:32 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 542c7b726a87 -r cb9db13d3b20 src/Virt_HostedDependency.c --- a/src/Virt_HostedDependency.c Thu Nov 13 08:33:32 2008 -0800 +++ b/src/Virt_HostedDependency.c Thu Nov 13 08:33:32 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