Hi John,
I have tested your change on s390x platform.
Installed cimserver: tog-pegasus-2.12.0-2.fc18.s390x
The comparison of the test results of both runs (with and without your changes) did not
show up any difference.
ACKed.
--
Mit freundlichen Grüßen / Kind regards
Daniel Hansel
IBM Deutschland Research & Development GmbH
Vorsitzende des Aufsichtsrats: Martina Koederitz
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
On 18.02.2014 23:41, John Ferlan wrote:
As of tog-pegasus 2.12.1-5 we can no longer use
"root/PG_InterOp" namespace for the CIM provider instead the use of
"root/interop" is the preferred mechanism.
This patch will adjust where libvirt-cim installs its classes to use the
"root/interop" namespace.
For more context, see:
http://www.redhat.com/archives/libvirt-cim/2013-November/msg00083.html
and
http://www.redhat.com/archives/libvirt-cim/2013-November/msg00008.html
This patch will be required for RHEL7 which fails to install with the base 0.6.3
release.
Signed-off-by: John Ferlan <jferlan(a)redhat.com> --- Makefile.am | 29
++++++++++++++++++++++++----- libvirt-cim.spec.in | 27 ++++++++++++++++++++++-----
provider-register.sh | 18
+++++++++++++++++- 3 files changed, 63 insertions(+), 11 deletions(-)
diff --git a/Makefile.am b/Makefile.am index 9e8e96b..69b65cf 100644 --- a/Makefile.am
+++ b/Makefile.am @@ -78,6 +78,9 @@ INTEROP_MOFS = \
$(top_srcdir)/schema/ReferencedProfile.mof \
$(top_srcdir)/schema/AllocationCapabilities.mof
+# The PGINTEROP_MOFS are used by tog-pegasus up through version 2.12.1 +# If support for
versions prior to 2.12.1 is removed, then these defs +# can go away PGINTEROP_MOFS = \
$(top_srcdir)/schema/RegisteredProfile.mof \
$(top_srcdir)/schema/ElementConformsToProfile.mof \ @@ -157,6 +160,9 @@ INTEROP_REGS = \
$(top_srcdir)/schema/ElementConformsToProfile.registration \
$(top_srcdir)/schema/ReferencedProfile.registration
+# The PGINTEROP_REGS are used by tog-pegasus up through version 2.12.1 +# If support for
versions prior to 2.12.1 is removed, then these defs +# can go away PGINTEROP_REGS = \
$(top_srcdir)/schema/RegisteredProfile.registration \
$(top_srcdir)/schema/ElementConformsToProfile.registration \ @@ -181,7 +187,8 @@
EXTRA_DIST = schema $(MOFS) $(REGS) $(INTEROP_MOFS)
$(INTEROP_REGS) \ .changeset .revision \ examples/diskpool.conf
-# If Pegasus isn't the CIMOM target, then remove the PG_InterOp namespace from the
appropriate files +# If Pegasus isn't the CIMOM target, then remove the PG_InterOp
namespace +# from the
appropriate files install-data-local: $(mkinstalldirs)
"$(DESTDIR)$(pkgdatadir)" $(install_sh_DATA) -t
"$(DESTDIR)$(pkgdatadir)" $(MOFS) @@ -189,11 +196,12 @@ install-data-local:
$(install_sh_DATA) -t "$(DESTDIR)$(pkgdatadir)" $(INTEROP_MOFS)
$(install_sh_DATA) -t "$(DESTDIR)$(pkgdatadir)" $(INTEROP_REGS) if [[
@CIMSERVER@ != pegasus ]]; then \ - sed -i '/^# --/,/^#
--!/d' $(subst $(top_srcdir)/schema,$(DESTDIR)$(pkgdatadir), $(PGINTEROP_REGS)); \ +
sed -i '/^# --/,/^# --!/d' $(subst
$(top_srcdir)/schema,$(DESTDIR)$(pkgdatadir), $(PGINTEROP_REGS)); \ +
sed -i '/^# --/,/^# --!/d' $(subst $(top_srcdir)/schema,$(DESTDIR)$(pkgdatadir),
$(PGINTEROP_MOFS)); \ fi
uninstall-local: - @list='$(MOFS) $(REGS) $(INTEROP_MOFS) $(INTEROP_REGS)'; \
+ @list='$(MOFS) $(REGS) $(INTEROP_MOFS) $(INTEROP_REGS) $(PGINTEROP_REGS)
$(PGINTEROP_MOFS)'; \ for p in $$list; do
\ f=`echo "$$p" | sed 's|^.*/||;'`; \ echo " rm -f
'$(DESTDIR)$(pkgdatadir)/$$f'"; \ @@ -209,8 +217,19 @@ postinstall: $(SHELL)
provider-register.sh -v -t @CIMSERVER@ -n @CIM_VIRT_NS@ -r $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(REGS)) -m $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(MOFS)) $(SHELL) provider-register.sh -v -t
@CIMSERVER@ -n root/interop -r $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(INTEROP_REGS)) -m $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(INTEROP_MOFS)) $(SHELL) provider-register.sh -v -t
@CIMSERVER@ -n root/cimv2 -r $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(CIMV2_REGS)) -m $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(CIMV2_MOFS)) + # + # We need to check
the version - if we're not yet at 2.12.1,
then + # we'll register at root/PG_InterOp; otherwise, using just the above +
# registration should be sufficient. The actual cutoff root/PG_InterOp + #
not being valid was
2.12.1-5; however, --version doesn't give us that + # level of detail. The
Pegasus docs imply that usage of root/interop was + # valid as of 2.12.0. +
# if [[ @CIMSERVER@ =
pegasus ]]; then \ - $(SHELL) provider-register.sh -v -t @CIMSERVER@ -n root/PG_InterOp
-r $(subst $(top_srcdir)/schema,$(pkgdatadir), $(PGINTEROP_REGS)) -m $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(PGINTEROP_MOFS)); \ + CIMVER=`@CIMSERVER@
--version | awk -F. '{printf("%02d%02d%02d\n", $1,$2,$3); }'` \ + if
[[ $CIMVER -lt 021201 ]]; then \ +
$(SHELL) provider-register.sh -v -t @CIMSERVER@ -n root/PG_InterOp -r $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(PGINTEROP_REGS)) -m $(subst
$(top_srcdir)/schema,$(pkgdatadir),
$(PGINTEROP_MOFS)); \ + fi \ fi virsh -v | grep -q '^0.3' && cp
examples/diskpool.conf $(DISK_POOL_CONFIG) || true mkdir -p $(INFO_STORE) @@ -220,7 +239,7
@@ preuninstall: $(SHELL)
provider-register.sh -v -d -t @CIMSERVER@ -n root/interop -r $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(INTEROP_REGS)) -m $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(INTEROP_MOFS)) $(SHELL)
provider-register.sh -v -d -t @CIMSERVER@ -n root/cimv2 -r $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(CIMV2_REGS)) -m $(subst
$(top_srcdir)/schema,$(pkgdatadir), $(CIMV2_MOFS)) if [[
@CIMSERVER@ = pegasus ]]; then \ - $(SHELL) provider-register.sh -v -d -t @CIMSERVER@ -n
root/PG_InterOp -r $(subst $(top_srcdir)/schema,$(pkgdatadir), $(PGINTEROP_REGS)) -m
$(subst
$(top_srcdir)/schema,$(pkgdatadir), $(PGINTEROP_MOFS)); \ + $(SHELL)
provider-register.sh -v -d -t @CIMSERVER@ -n root/PG_InterOp -r $(subst
$(top_srcdir)/schema,$(pkgdatadir),
$(PGINTEROP_REGS)) -m $(subst $(top_srcdir)/schema,$(pkgdatadir), $(PGINTEROP_MOFS)); \
fi
rpm: clean diff --git a/libvirt-cim.spec.in b/libvirt-cim.spec.in index 24ef280..01ee329
100644 --- a/libvirt-cim.spec.in +++ b/libvirt-cim.spec.in @@ -200,6 +200,10 @@ rm -fr
$RPM_BUILD_ROOT
%{_datadir}/%{name}/ReferencedProfile.mof \\\
%{_datadir}/%{name}/AllocationCapabilities.mof
+# NOTE: As of Pegasus 2.12.1-5, using root/PG_InterOp will no longer be +# valid.
All mofs can just compile into root/interop. However, we +# need to keep these here
for 'historical
purposes'. +# %define PGINTEROP_REG
%{_datadir}/%{name}/RegisteredProfile.registration \\\
%{_datadir}/%{name}/ElementConformsToProfile.registration \\\
%{_datadir}/%{name}/ReferencedProfile.registration @@ -268,12 +272,12 @@ fi %if
0%{?fedora} >= 17 || 0%{?rhel} >= 7 if [ "`systemctl is-active
tog-pegasus.service 2> /dev/null`" = "active" ]
then - systemctl restart tog-pegasus.service + systemctl restart
tog-pegasus.service > /dev/null 2>&1 fi
if [ "`systemctl is-active sblim-sfcb.service 2> /dev/null`" =
"active" ] then - systemctl restart sblim-sfcb.service + systemctl
restart sblim-sfcb.service > /dev/null 2>&1 fi
%else /etc/init.d/tog-pegasus condrestart @@ -287,9 +291,22 @@ then
%{_datadir}/%{name}/provider-register.sh -t pegasus \ -n root/interop \ -r %{INTEROP_REG}
-m %{INTEROP_MOF} -v >/dev/null 2>&1
|| true - %{_datadir}/%{name}/provider-register.sh -t pegasus \ - -n
root/PG_InterOp \ - -r %{PGINTEROP_REG} -m %{PGINTEROP_MOF} -v >/dev/null
2>&1 || true + # + # We need
to check the version - if we're not yet at 2.12.1, then + # we'll register at
root/PG_InterOp; otherwise, using just the above + # registration should be sufficient.
The actual cutoff
root/PG_InterOp + # not being valid was 2.12.1-5; however, --version doesn't give
us that + # level of detail. The Pegasus docs imply that usage of root/interop was +
# valid as of
2.12.0. + # + CIMVER=`/usr/sbin/cimserver --version | \ + awk -F.
'{printf("%02d%02d%02d\n", $1,$2,$3); }'` + if [ $CIMVER -lt 021201 ]
+ then +
%{_datadir}/%{name}/provider-register.sh -t pegasus \ + -n root/PG_InterOp \ +
-r %{PGINTEROP_REG} -m %{PGINTEROP_MOF} -v >/dev/null 2>&1 || true +
fi
%{_datadir}/%{name}/provider-register.sh -t pegasus \ -n root/cimv2\ -r %{CIMV2_REG} -m
%{CIMV2_MOF} -v >/dev/null 2>&1 || true diff --git a/provider-register.sh
b/provider-register.sh index
abe8e95..f66fe54 100755 --- a/provider-register.sh +++ b/provider-register.sh @@ -274,7
+274,23 @@ pegasus_install() chatter Registering providers with $state cimserver
'('$version')' chatter
Installing mofs into namespace $namespace from path $mofpath $CIMMOF -uc -I $mofpath -n
$namespace $mymofs && - $CIMMOF -uc -n root/PG_Interop $_REGFILENAME + # +
# If
compare_version returns false here (e.g. $version is less than + #
"2.12.1", then we will compile into root/PG_InterOp; otherwise, + #
compile into root/interop. As of 2.12.1-5
using the PG_InterOp + # will fail. Since we cannot get that level of detail out
of the + # --version output, "assume" that 2.12.1 -> 2.12.1-4 will be
able + # to use the
new namespace. The Pegasus docs imply as of 2.12.0 using + # root/interop was
preferred. + # + if compare_version "$version" "2.12.1"
+ then + chatter
Installing $_REGFILENAME into root/PG_InterOp + $CIMMOF -uc -n root/PG_Interop
$_REGFILENAME + else + chatter Installing $_REGFILENAME into
root/interop + $CIMMOF -uc -n
root/interop $_REGFILENAME + fi else echo "Failed to build pegasus
registration MOF." >&2 return 1