[Libvirt-cim] [PATCH] Add support for Pegasus OOP grouping

Chip Vincent cvincent at linux.vnet.ibm.com
Wed Mar 16 00:33:20 UTC 2011


# HG changeset patch
# User Chip Vincent <cvincent at us.ibm.com>
# Date 1300235494 14400
# Node ID 6cdfba0135e08b8b5878075dff77b5e03107c614
# Parent  eea958fbf1d965bc1053850f59df4005e64093ac
Add support for Pegasus OOP grouping

Update Pegasus ProviderModule registration to include support for ModuleGroupProperty. This will allow all libvirt-cim provider to load into a single process when the CIMOM is configured to run providers outside the CIMOM process.

Signed-off-by: Chip Vincent <cvincent at us.ibm.com>

diff --git a/provider-register.sh b/provider-register.sh
--- a/provider-register.sh
+++ b/provider-register.sh
@@ -32,6 +32,43 @@
     return 1
 }
 
+pegasus_version()
+{
+    CIMSERVER=`pegasus_path cimserver`
+    if test $? != 0
+    then
+        echo "Error: cimserver not found" >&2
+        return 1
+    fi
+
+    VERSION=`$CIMSERVER --version`
+    if test $? != 0
+    then
+        echo "Error: could not determine cimserver version" >&2
+        return 1
+    fi
+
+    echo $VERSION
+    return 0
+}
+
+compare_version()
+{
+    source=`echo "$1" | awk -F. '{printf("%02d%02d%02d\n", $1,$2,$3); }'`
+    target=`echo "$2" | awk -F. '{printf("%02d%02d%02d\n", $1,$2,$3); }'`
+
+    if test $source \<  $target
+    then
+         chatter $source " < " $target
+         echo "true"
+         return 0
+    else
+         chatter $source " >= " $target
+         echo "false"
+         return 1
+    fi
+}
+
 pegasus_transform()
 {
     OUTFILE=$1
@@ -49,10 +86,15 @@
     
 # produce ProviderModules
     echo > $OUTFILE
-    chatter "Processing provider modules:" $PROVIDERMODULES
-    for pm in $PROVIDERMODULES
-    do
-      cat >> $OUTFILE <<EOFPM
+    version=`pegasus_version`
+    chatter "cimserver version is " $version
+    if compare_version "$version" "2.11.0"
+    then
+        chatter "Processing provider modules (w/o ModuleGroupName):" \
+	$PROVIDERMODULES
+        for pm in $PROVIDERMODULES
+        do
+           cat >> $OUTFILE <<EOFPM
 instance of PG_ProviderModule
 {
    Name = "$pm";
@@ -65,7 +107,29 @@
 
 EOFPM
     done
+
+    else
+        chatter "Processing provider modules (w/ ModuleGroupName):" \ 
+	$PROVIDERMODULES
+        for pm in $PROVIDERMODULES
+        do
+           cat >> $OUTFILE <<EOFPM
+instance of PG_ProviderModule
+{
+   Name = "$pm";
+   Location = "$pm";
+   Vendor = "SBLIM";
+   Version = "2.0.0";
+   InterfaceType = "CMPI";
+   InterfaceVersion = "2.0.0";
+   ModuleGroupName = "libvirt-cim";
+};
+
+EOFPM
+    done
     
+    fi
+
 # produce Providers
     set -- $PROVIDERS
     while test x$1 != x
@@ -170,6 +234,7 @@
     myregs=
     mofmode=1
     namespace=$1
+    version=`pegasus_version`
     shift
 
     while test x$1 != x
@@ -206,7 +271,7 @@
 
     if pegasus_transform $_REGFILENAME $namespace $myregs
     then
-	chatter Registering providers with $state cimserver
+	chatter Registering providers with $state cimserver '('$version')'
 	$CIMMOF -uc -I $mofpath -n $namespace $mymofs &&
 	$CIMMOF -uc -n root/PG_Interop $_REGFILENAME
     else




More information about the Libvirt-cim mailing list