os-cmpi-xen
annotate provider-register.sh @ 121:4868ace2726b
Add initial consistence checks in test suite for Xen_MemoryPool, Xen_ProcessorPool and Xen_VirtualSystemManagementService.
Signed-off-by: Luke Szymanski <Lukasz.Szymanski@Unisys.com>
Signed-off-by: Luke Szymanski <Lukasz.Szymanski@Unisys.com>
author | Jim Fehlig <jfehlig@novell.com> |
---|---|
date | Fri Jun 08 10:22:05 2007 -0600 (2007-06-08) |
parents | 6137ddada5ca |
children |
rev | line source |
---|---|
jbulpin@0 | 1 #!/bin/sh |
jbulpin@0 | 2 # $Id: provider-register.sh,v 1.7 2006/01/04 06:49:46 bestor Exp $ |
jbulpin@0 | 3 # ================================================================== |
jbulpin@0 | 4 # (C) Copyright IBM Corp. 2006 |
jbulpin@0 | 5 # |
jbulpin@0 | 6 # THIS FILE IS PROVIDED UNDER THE TERMS OF THE COMMON PUBLIC LICENSE |
jbulpin@0 | 7 # ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE |
jbulpin@0 | 8 # CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT. |
jbulpin@0 | 9 # |
jbulpin@0 | 10 # You can obtain a current copy of the Common Public License from |
jbulpin@0 | 11 # http://www.opensource.org/licenses/cpl1.0.php |
jbulpin@0 | 12 # |
jbulpin@0 | 13 # Author: Viktor Mihajlovski <mihajlov@de.ibm.com> |
jbulpin@0 | 14 # Contributors: |
jbulpin@0 | 15 # Description: Script to install class definitions (MOFs) and |
jbulpin@0 | 16 # registration data for a variety of supported CIMOMs |
jbulpin@0 | 17 # ================================================================== |
jbulpin@0 | 18 |
jbulpin@0 | 19 pegasus_repository() |
jbulpin@0 | 20 { |
jbulpin@0 | 21 for p in $PEGASUS_HOME /var/lib/Pegasus /var/lib/pegasus /usr/local/var/lib/pegasus \ |
jbulpin@0 | 22 /var/local/lib/pegasus /var/opt/tog-pegasus |
jbulpin@0 | 23 do |
jbulpin@0 | 24 if test -d $p/repository |
jbulpin@0 | 25 then |
jbulpin@0 | 26 echo $p/$1 |
jbulpin@0 | 27 return 0 |
jbulpin@0 | 28 fi |
jbulpin@0 | 29 done |
jbulpin@0 | 30 return 1 |
jbulpin@0 | 31 } |
jbulpin@0 | 32 |
jbulpin@0 | 33 pegasus_path() |
jbulpin@0 | 34 { |
jbulpin@0 | 35 for p in $PEGASUS_HOME/bin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin \ |
jbulpin@0 | 36 /opt/tog-pegasus/bin /opt/tog-pegasus/sbin |
jbulpin@0 | 37 do |
jbulpin@0 | 38 if test -x $p/$1 |
jbulpin@0 | 39 then |
jbulpin@0 | 40 echo $p/$1 |
jbulpin@0 | 41 return 0 |
jbulpin@0 | 42 fi |
jbulpin@0 | 43 done |
jbulpin@0 | 44 return 1 |
jbulpin@0 | 45 } |
jbulpin@0 | 46 |
jbulpin@0 | 47 pegasus_transform() |
jbulpin@0 | 48 { |
jbulpin@0 | 49 OUTFILE=$1 |
jbulpin@0 | 50 shift |
jbulpin@0 | 51 regfiles=$* |
jbulpin@0 | 52 PROVIDERMODULES=`cat $regfiles 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 4 | sort | uniq` |
jbulpin@0 | 53 if test x"$PROVIDERMODULES" = x |
jbulpin@0 | 54 then |
jbulpin@0 | 55 echo Failed to read registration files >&2 |
jbulpin@0 | 56 return 1 |
jbulpin@0 | 57 fi |
jbulpin@0 | 58 PROVIDERS=`cat $regfiles 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 3-4 | sort | uniq` |
jbulpin@0 | 59 |
jbulpin@0 | 60 # produce ProviderModules |
jbulpin@0 | 61 echo > $OUTFILE |
jbulpin@0 | 62 chatter "Processing provider modules:" $PROVIDERMODULES |
jbulpin@0 | 63 for pm in $PROVIDERMODULES |
jbulpin@0 | 64 do |
jbulpin@0 | 65 cat >> $OUTFILE <<EOFPM |
jbulpin@0 | 66 instance of PG_ProviderModule |
jbulpin@0 | 67 { |
jbulpin@0 | 68 Name = "$pm"; |
jbulpin@0 | 69 Location = "$pm"; |
jbulpin@0 | 70 Vendor = "SBLIM"; |
jbulpin@0 | 71 Version = "2.0.0"; |
jbulpin@0 | 72 InterfaceType = "CMPI"; |
jbulpin@0 | 73 InterfaceVersion = "2.0.0"; |
jbulpin@0 | 74 }; |
jbulpin@0 | 75 |
jbulpin@0 | 76 EOFPM |
jbulpin@0 | 77 done |
jbulpin@0 | 78 |
jbulpin@0 | 79 # produce Providers |
jbulpin@0 | 80 set -- $PROVIDERS |
jbulpin@0 | 81 while test x$1 != x |
jbulpin@0 | 82 do |
jbulpin@0 | 83 cat >> $OUTFILE <<EOFP |
jbulpin@0 | 84 instance of PG_Provider |
jbulpin@0 | 85 { |
jbulpin@0 | 86 Name = "$1"; |
jbulpin@0 | 87 ProviderModuleName = "$2"; |
jbulpin@0 | 88 }; |
jbulpin@0 | 89 |
jbulpin@0 | 90 EOFP |
jbulpin@0 | 91 shift 2 |
jbulpin@0 | 92 done |
jbulpin@0 | 93 |
jbulpin@0 | 94 #produce Capabilities |
jbulpin@0 | 95 let serial=0 |
jbulpin@0 | 96 for rf in $regfiles |
jbulpin@0 | 97 do |
jbulpin@0 | 98 cat $rf | grep -v '^[[:space:]]*#.*' | while read CLASSNAME NAMESPACE PROVIDERNAME PROVIDERMODULE CAPS |
jbulpin@0 | 99 do |
jbulpin@0 | 100 let serial=serial+1 |
jbulpin@0 | 101 numcap= |
jbulpin@0 | 102 for cap in $CAPS |
jbulpin@0 | 103 do |
jbulpin@0 | 104 case $cap in |
jbulpin@0 | 105 instance) |
jbulpin@0 | 106 if test x$numcap = x |
jbulpin@0 | 107 then numcap=2 |
jbulpin@0 | 108 else numcap="$numcap,2" |
jbulpin@0 | 109 fi;; |
jbulpin@0 | 110 association) |
jbulpin@0 | 111 if test x$numcap = x |
jbulpin@0 | 112 then numcap=3 |
jbulpin@0 | 113 else numcap="$numcap,3" |
jbulpin@0 | 114 fi;; |
jbulpin@0 | 115 indication) |
jbulpin@0 | 116 if test x$numcap = x |
jbulpin@0 | 117 then numcap=4 |
jbulpin@0 | 118 else numcap="$numcap,4" |
jbulpin@0 | 119 fi;; |
jbulpin@0 | 120 method) |
jbulpin@0 | 121 if test x$numcap = x |
jbulpin@0 | 122 then numcap=5 |
jbulpin@0 | 123 else numcap="$numcap,5" |
jbulpin@0 | 124 fi;; |
jbulpin@0 | 125 **) echo unknown provider type $cap >&2 |
jbulpin@0 | 126 return 1;; |
jbulpin@0 | 127 esac |
jbulpin@0 | 128 done |
jbulpin@0 | 129 cat >> $OUTFILE <<EOFC |
jbulpin@0 | 130 instance of PG_ProviderCapabilities |
jbulpin@0 | 131 { |
jbulpin@0 | 132 ProviderModuleName = "$PROVIDERMODULE"; |
jbulpin@0 | 133 ProviderName = "$PROVIDERNAME"; |
jbulpin@0 | 134 ClassName = "$CLASSNAME"; |
jbulpin@0 | 135 ProviderType = { $numcap }; |
jbulpin@0 | 136 Namespaces = {"$NAMESPACE"}; |
jbulpin@0 | 137 SupportedProperties = NULL; |
jbulpin@0 | 138 SupportedMethods = NULL; |
jbulpin@0 | 139 CapabilityID = "$CLASSNAME-$serial"; |
jbulpin@0 | 140 }; |
jbulpin@0 | 141 |
jbulpin@0 | 142 EOFC |
jbulpin@0 | 143 done |
jbulpin@0 | 144 done |
jbulpin@0 | 145 } |
jbulpin@0 | 146 |
jbulpin@0 | 147 pegasus_install() |
jbulpin@0 | 148 { |
jbulpin@0 | 149 if ps -C cimserver > /dev/null 2>&1 |
jbulpin@0 | 150 then |
jbulpin@0 | 151 CIMMOF=`pegasus_path cimmof` |
jbulpin@0 | 152 if test $? != 0 |
jbulpin@0 | 153 then |
jbulpin@0 | 154 echo "Error: cimmof not found" >&2 |
jbulpin@0 | 155 return 1 |
jbulpin@0 | 156 fi |
jbulpin@0 | 157 state=active |
jbulpin@0 | 158 else |
jbulpin@0 | 159 CIMMOF=`pegasus_path cimmofl` |
jbulpin@0 | 160 if test $? != 0 |
jbulpin@0 | 161 then |
jbulpin@0 | 162 echo "Error: cimmofl not found" >&2 |
jbulpin@0 | 163 return 1 |
jbulpin@0 | 164 fi |
jbulpin@0 | 165 PEGASUSREPOSITORY=`pegasus_repository` |
jbulpin@0 | 166 if test $? != 0 |
jbulpin@0 | 167 then |
jbulpin@0 | 168 echo "Error: pegasus repository not found" >&2 |
jbulpin@0 | 169 return 1 |
jbulpin@0 | 170 fi |
jbulpin@0 | 171 CIMMOF="$CIMMOF -R $PEGASUSREPOSITORY" |
jbulpin@0 | 172 state=inactive |
jbulpin@0 | 173 fi |
jbulpin@0 | 174 |
jfehlig@28 | 175 if test x$namespace != x |
jfehlig@28 | 176 then |
jfehlig@28 | 177 CIMMOF="$CIMMOF -n $namespace" |
jfehlig@28 | 178 fi |
jfehlig@28 | 179 |
jbulpin@0 | 180 mofpath= |
jbulpin@0 | 181 mymofs= |
jbulpin@0 | 182 mregs= |
jbulpin@0 | 183 mofmode=1 |
jbulpin@0 | 184 while test x$1 != x |
jbulpin@0 | 185 do |
jbulpin@0 | 186 if test $1 = ":" |
jbulpin@0 | 187 then |
jbulpin@0 | 188 mofmode=0 |
jbulpin@0 | 189 shift |
jbulpin@0 | 190 continue |
jbulpin@0 | 191 fi |
jbulpin@0 | 192 if test $mofmode = 1 |
jbulpin@0 | 193 then |
jbulpin@0 | 194 if test x$mofpath = x |
jbulpin@0 | 195 then |
jbulpin@0 | 196 mofpath=`dirname $1` |
jbulpin@0 | 197 fi |
jbulpin@0 | 198 mymofs="$mymofs $1" |
jbulpin@0 | 199 else |
jbulpin@0 | 200 myregs="$myregs $1" |
jbulpin@0 | 201 fi |
jbulpin@0 | 202 shift |
jbulpin@0 | 203 done |
jbulpin@0 | 204 |
jbulpin@0 | 205 for _TEMPDIR in /var/tmp /tmp |
jbulpin@0 | 206 do |
jbulpin@0 | 207 if test -w $_TEMPDIR |
jbulpin@0 | 208 then |
jbulpin@0 | 209 _REGFILENAME=$_TEMPDIR/$$.mof |
jbulpin@0 | 210 break |
jbulpin@0 | 211 fi |
jbulpin@0 | 212 done |
jbulpin@0 | 213 |
jbulpin@0 | 214 |
jbulpin@0 | 215 trap "rm -f $_REGFILENAME" EXIT |
jbulpin@0 | 216 |
jbulpin@0 | 217 if pegasus_transform $_REGFILENAME $myregs |
jbulpin@0 | 218 then |
jbulpin@0 | 219 chatter Registering providers with $state cimserver |
jfehlig@28 | 220 $CIMMOF -uc -I $mofpath $mymofs && |
jbulpin@0 | 221 $CIMMOF -uc -n root/PG_Interop $_REGFILENAME |
jbulpin@0 | 222 else |
jbulpin@0 | 223 echo "Failed to build pegasus registration MOF." >&2 |
jbulpin@0 | 224 return 1 |
jbulpin@0 | 225 fi |
jbulpin@0 | 226 } |
jbulpin@0 | 227 |
jbulpin@0 | 228 pegasus_uninstall() |
jbulpin@0 | 229 { |
jbulpin@0 | 230 mymofs= |
jbulpin@0 | 231 mregs= |
jbulpin@0 | 232 mofmode=1 |
jbulpin@0 | 233 while test x$1 != x |
jbulpin@0 | 234 do |
jbulpin@0 | 235 if test $1 = ":" |
jbulpin@0 | 236 then |
jbulpin@0 | 237 mofmode=0 |
jbulpin@0 | 238 shift |
jbulpin@0 | 239 continue |
jbulpin@0 | 240 fi |
jbulpin@0 | 241 if test $mofmode = 1 |
jbulpin@0 | 242 then |
jbulpin@0 | 243 mymofs="$mymofs $1" |
jbulpin@0 | 244 else |
jbulpin@0 | 245 myregs="$myregs $1" |
jbulpin@0 | 246 fi |
jbulpin@0 | 247 shift |
jbulpin@0 | 248 done |
jbulpin@0 | 249 |
jbulpin@0 | 250 if ps -C cimserver > /dev/null 2>&1 |
jbulpin@0 | 251 then |
jbulpin@0 | 252 PROVIDERMODULES=`cat $myregs 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 4 | sort | uniq` |
jbulpin@0 | 253 if test x"$PROVIDERMODULES" = x |
jbulpin@0 | 254 then |
jbulpin@0 | 255 echo Failed to read registration files >&2 |
jbulpin@0 | 256 return 1 |
jbulpin@0 | 257 fi |
jbulpin@0 | 258 CIMPROVIDER=`pegasus_path cimprovider` |
jbulpin@0 | 259 if test $? != 0 |
jbulpin@0 | 260 then |
jbulpin@0 | 261 echo "Error: cimprovider not found" >&2 |
jbulpin@0 | 262 return 1 |
jbulpin@0 | 263 fi |
jbulpin@0 | 264 for pm in $PROVIDERMODULES |
jbulpin@0 | 265 do |
jbulpin@0 | 266 chatter "Remove provider module" $pm |
jbulpin@0 | 267 $CIMPROVIDER -d -m $pm > /dev/null && |
jbulpin@0 | 268 $CIMPROVIDER -r -m $pm > /dev/null |
jbulpin@0 | 269 done |
jbulpin@0 | 270 WBEMEXEC=`pegasus_path wbemexec` |
jbulpin@0 | 271 if test $? != 0 |
jbulpin@0 | 272 then |
jbulpin@0 | 273 echo "Error: wbemexec not found" >&2 |
jbulpin@0 | 274 return 1 |
jbulpin@0 | 275 fi |
jbulpin@0 | 276 CLASSES=`cat $myregs 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 1 | grep -v '^CIM_'` |
jbulpin@0 | 277 for cls in $CLASSES |
jbulpin@0 | 278 do |
jbulpin@0 | 279 chatter Delete CIM Class $cls |
jbulpin@0 | 280 $WBEMEXEC > /dev/null <<EOFWX |
jbulpin@0 | 281 <?xml version="1.0" encoding="utf-8" ?> |
jbulpin@0 | 282 <CIM CIMVERSION="2.0" DTDVERSION="2.0"> |
jbulpin@0 | 283 <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> |
jbulpin@0 | 284 <SIMPLEREQ> |
jbulpin@0 | 285 <IMETHODCALL NAME="DeleteClass"> |
jbulpin@0 | 286 <LOCALNAMESPACEPATH> |
jbulpin@0 | 287 <NAMESPACE NAME="root"></NAMESPACE> |
jbulpin@0 | 288 <NAMESPACE NAME="cimv2"></NAMESPACE> |
jbulpin@0 | 289 </LOCALNAMESPACEPATH> |
jbulpin@0 | 290 <IPARAMVALUE NAME="ClassName"> |
jbulpin@0 | 291 <CLASSNAME NAME="$cls"/> |
jbulpin@0 | 292 </IPARAMVALUE> |
jbulpin@0 | 293 </IMETHODCALL> |
jbulpin@0 | 294 </SIMPLEREQ> |
jbulpin@0 | 295 </MESSAGE> |
jbulpin@0 | 296 </CIM> |
jbulpin@0 | 297 EOFWX |
jbulpin@0 | 298 done |
jbulpin@0 | 299 else |
jbulpin@0 | 300 echo "Sorry, cimserver must be running to deregister the providers." >&2 |
jbulpin@0 | 301 return 1 |
jbulpin@0 | 302 fi |
jbulpin@0 | 303 } |
jbulpin@0 | 304 |
jbulpin@0 | 305 sfcb_transform() |
jbulpin@0 | 306 { |
jbulpin@0 | 307 OUTFILE=$1 |
jbulpin@0 | 308 shift |
jbulpin@0 | 309 regfiles=$* |
jbulpin@0 | 310 |
jbulpin@0 | 311 #produce sfcb registraion |
jbulpin@0 | 312 for rf in $regfiles |
jbulpin@0 | 313 do |
jbulpin@0 | 314 cat $rf | grep -v '^[[:space:]]*#.*' | while read CLASSNAME NAMESPACE PROVIDERNAME PROVIDERMODULE CAPS |
jbulpin@0 | 315 do |
jbulpin@0 | 316 chatter "Registering class" $CLASSNAME |
jbulpin@0 | 317 cat >> $OUTFILE <<EOFC |
jbulpin@0 | 318 [$CLASSNAME] |
jbulpin@0 | 319 provider: $PROVIDERNAME |
jbulpin@0 | 320 location: $PROVIDERMODULE |
jbulpin@0 | 321 type: $CAPS |
jbulpin@0 | 322 namespace: $NAMESPACE |
jbulpin@0 | 323 # |
jbulpin@0 | 324 EOFC |
jbulpin@0 | 325 done |
jbulpin@0 | 326 done |
jbulpin@0 | 327 } |
jbulpin@0 | 328 |
jbulpin@0 | 329 sfcb_rebuild() |
jbulpin@0 | 330 { |
jbulpin@0 | 331 if ps -C sfcbd > /dev/null 2>&1 |
jbulpin@0 | 332 then |
jbulpin@0 | 333 # sfcb is running -- need to restart |
jbulpin@0 | 334 for INITSCRIPT in /etc/init.d/sfcb /usr/local/etc/init.d/sfcb none |
jbulpin@0 | 335 do |
jbulpin@0 | 336 if test -x $INITSCRIPT |
jbulpin@0 | 337 then |
jbulpin@0 | 338 break; |
jbulpin@0 | 339 fi |
jbulpin@0 | 340 done |
jbulpin@0 | 341 chatter "Shutting down sfcb." |
jbulpin@0 | 342 if test $INITSCRIPT = none |
jbulpin@0 | 343 then |
jbulpin@0 | 344 killall sfcbd |
jbulpin@0 | 345 else |
jbulpin@0 | 346 $INITSCRIPT stop |
jbulpin@0 | 347 fi |
jbulpin@0 | 348 t=0 |
jbulpin@0 | 349 while ps -C sfcbd > /dev/null 2>&1 |
jbulpin@0 | 350 do |
jbulpin@0 | 351 sleep 1 |
jbulpin@0 | 352 t=`expr $t + 1` |
jbulpin@0 | 353 if test $t -gt 10 |
jbulpin@0 | 354 then |
jbulpin@0 | 355 echo "Timed out waiting for sfcb shutdown..." >&2 |
jbulpin@0 | 356 echo "Please stop sfcb manually and rebuild the repository using sfcbrepos." >&2 |
jbulpin@0 | 357 return 1 |
jbulpin@0 | 358 fi |
jbulpin@0 | 359 done |
jbulpin@0 | 360 chatter "Rebuilding repository." |
jbulpin@0 | 361 sfcbrepos -f |
jbulpin@0 | 362 if test $? != 0 |
jbulpin@0 | 363 then |
jbulpin@0 | 364 echo "Repository rebuild failed." >&2 |
jbulpin@0 | 365 return 1 |
jbulpin@0 | 366 fi |
jbulpin@0 | 367 |
jbulpin@0 | 368 if test $INITSCRIPT = none |
jbulpin@0 | 369 then |
jbulpin@0 | 370 echo "No init script found - you need to start sfcbd manually." >&2 |
jbulpin@0 | 371 return 1 |
jbulpin@0 | 372 else |
jbulpin@0 | 373 chatter "Restarting sfcb." |
jbulpin@0 | 374 $INITSCRIPT start |
jbulpin@0 | 375 fi |
jbulpin@0 | 376 else |
jbulpin@0 | 377 # Not running - rebuild repository |
jbulpin@0 | 378 chatter "Rebuilding repository." |
jbulpin@0 | 379 sfcbrepos -f |
jbulpin@0 | 380 fi |
jbulpin@0 | 381 } |
jbulpin@0 | 382 |
jbulpin@0 | 383 sfcb_install() |
jbulpin@0 | 384 { |
jbulpin@0 | 385 mymofs= |
jbulpin@0 | 386 mregs= |
jbulpin@0 | 387 mofmode=1 |
jbulpin@0 | 388 while test x$1 != x |
jbulpin@0 | 389 do |
jbulpin@0 | 390 if test $1 = ":" |
jbulpin@0 | 391 then |
jbulpin@0 | 392 mofmode=0 |
jbulpin@0 | 393 shift |
jbulpin@0 | 394 baseregname=`basename $1 .registration` |
jbulpin@0 | 395 continue |
jbulpin@0 | 396 fi |
jbulpin@0 | 397 if test $mofmode = 1 |
jbulpin@0 | 398 then |
jbulpin@0 | 399 mymofs="$mymofs $1" |
jbulpin@0 | 400 else |
jbulpin@0 | 401 myregs="$myregs $1" |
jbulpin@0 | 402 fi |
jbulpin@0 | 403 shift |
jbulpin@0 | 404 done |
jbulpin@0 | 405 |
jbulpin@0 | 406 for _TEMPDIR in /var/tmp /tmp |
jbulpin@0 | 407 do |
jbulpin@0 | 408 if test -w $_TEMPDIR |
jbulpin@0 | 409 then |
jbulpin@0 | 410 _REGFILENAME=$_TEMPDIR/$baseregname.reg |
jbulpin@0 | 411 break |
jbulpin@0 | 412 fi |
jbulpin@0 | 413 done |
jbulpin@0 | 414 |
jbulpin@0 | 415 trap "rm -f $_REGFILENAME" EXIT |
jbulpin@0 | 416 |
jbulpin@0 | 417 if sfcb_transform $_REGFILENAME $myregs |
jbulpin@0 | 418 then |
jbulpin@0 | 419 chatter "Staging provider registration." |
jbulpin@0 | 420 sfcbstage -r $_REGFILENAME $mymofs |
jbulpin@0 | 421 if test $? != 0 |
jbulpin@0 | 422 then |
jbulpin@0 | 423 echo "Failed to stage provider registration." >&2 |
jbulpin@0 | 424 return 1 |
jbulpin@0 | 425 fi |
jbulpin@0 | 426 sfcb_rebuild |
jbulpin@0 | 427 else |
jbulpin@0 | 428 echo "Failed to build sfcb registration file." >&2 |
jbulpin@0 | 429 return 1 |
jbulpin@0 | 430 fi |
jbulpin@0 | 431 } |
jbulpin@0 | 432 |
jbulpin@0 | 433 sfcb_uninstall() |
jbulpin@0 | 434 { |
jbulpin@0 | 435 mymofs= |
jbulpin@0 | 436 while test x$1 != x |
jbulpin@0 | 437 do |
jbulpin@0 | 438 if test $1 = ":" |
jbulpin@0 | 439 then |
jbulpin@0 | 440 shift |
jbulpin@0 | 441 baseregname=`basename $1 .registration` |
jbulpin@0 | 442 break |
jbulpin@0 | 443 fi |
jbulpin@0 | 444 mymofs="$mymofs `basename $1`" |
jbulpin@0 | 445 shift |
jbulpin@0 | 446 done |
jbulpin@0 | 447 |
jbulpin@0 | 448 # "Unstage" MOFs and the registration file |
jbulpin@0 | 449 chatter "Unstaging provider registrations." |
jbulpin@0 | 450 sfcbunstage -r $baseregname.reg $mymofs |
jbulpin@0 | 451 |
jbulpin@0 | 452 # Rebuild repository |
jbulpin@0 | 453 sfcb_rebuild |
jbulpin@0 | 454 } |
jbulpin@0 | 455 |
jbulpin@0 | 456 openwbem_transform() |
jbulpin@0 | 457 { |
jbulpin@0 | 458 OUTFILE=$1 |
jbulpin@0 | 459 shift |
jbulpin@0 | 460 moffiles=$* |
jbulpin@0 | 461 |
jbulpin@0 | 462 if rm -f $OUTFILE |
jbulpin@0 | 463 then |
jbulpin@0 | 464 for _f in $moffiles |
jbulpin@0 | 465 do |
jbulpin@0 | 466 sed "s/Provider *( *\"cmpi:/Provider(\"cmpi::/g" < $_f >> $OUTFILE |
jbulpin@0 | 467 done |
jbulpin@0 | 468 fi |
jbulpin@0 | 469 } |
jbulpin@0 | 470 |
jbulpin@0 | 471 openwbem_repository() |
jbulpin@0 | 472 { |
jbulpin@0 | 473 for p in /var/lib/openwbem /usr/local/var/openwbem |
jbulpin@0 | 474 do |
jbulpin@0 | 475 if test -f $p/schema.dat |
jbulpin@0 | 476 then |
jbulpin@0 | 477 echo $p |
jbulpin@0 | 478 return 0 |
jbulpin@0 | 479 fi |
jbulpin@0 | 480 done |
jbulpin@0 | 481 return 1 |
jbulpin@0 | 482 } |
jbulpin@0 | 483 |
jbulpin@0 | 484 openwbem_install() |
jbulpin@0 | 485 { |
jbulpin@0 | 486 CIMMOF=`which owmofc 2> /dev/null` |
jbulpin@0 | 487 if test $? != 0 |
jbulpin@0 | 488 then |
jbulpin@0 | 489 echo "Error: cimmof not found" >&2 |
jbulpin@0 | 490 return 1 |
jbulpin@0 | 491 fi |
jbulpin@0 | 492 |
jbulpin@0 | 493 if ps -C owcimomd > /dev/null 2>&1 |
jbulpin@0 | 494 then |
jbulpin@0 | 495 state=active |
jbulpin@0 | 496 else |
jbulpin@0 | 497 CIMMOF="$CIMMOF -d `openwbem_repository`" |
jbulpin@0 | 498 if test $? != 0 |
jbulpin@0 | 499 then |
jbulpin@0 | 500 echo "Error: OpenWBEM repository not found" >&2 |
jbulpin@0 | 501 return 1 |
jbulpin@0 | 502 fi |
jbulpin@0 | 503 state=inactive |
jbulpin@0 | 504 fi |
jbulpin@0 | 505 |
jfehlig@1 | 506 if test -d /usr/share/mof/cim-current |
jfehlig@1 | 507 then |
jfehlig@1 | 508 CIMMOF="$CIMMOF -s /usr/share/mof/cim-current" |
jfehlig@1 | 509 fi |
jfehlig@1 | 510 |
jfehlig@28 | 511 if test x$namespace != x |
jfehlig@28 | 512 then |
jfehlig@28 | 513 CIMMOF="$CIMMOF -n $namespace" |
jfehlig@28 | 514 fi |
jfehlig@28 | 515 |
jbulpin@0 | 516 for _TEMPDIR in /var/tmp /tmp |
jbulpin@0 | 517 do |
jbulpin@0 | 518 if test -w $_TEMPDIR |
jbulpin@0 | 519 then |
jbulpin@0 | 520 _REGFILENAME=$_TEMPDIR/$$.mof |
jbulpin@0 | 521 break |
jbulpin@0 | 522 fi |
jbulpin@0 | 523 done |
jbulpin@0 | 524 |
jbulpin@0 | 525 trap "rm -f $_REGFILENAME" EXIT |
jbulpin@0 | 526 |
jbulpin@0 | 527 if openwbem_transform $_REGFILENAME $* |
jbulpin@0 | 528 then |
jbulpin@0 | 529 chatter Registering providers with $state owcimomd |
jbulpin@0 | 530 $CIMMOF $_REGFILENAME > /dev/null |
jbulpin@0 | 531 else |
jbulpin@0 | 532 echo "Failed to build OpenWBEM registration MOF." >&2 |
jbulpin@0 | 533 return 1 |
jbulpin@0 | 534 fi |
jbulpin@0 | 535 } |
jbulpin@0 | 536 |
jbulpin@0 | 537 openwbem_uninstall() |
jbulpin@0 | 538 { |
jbulpin@0 | 539 CIMMOF=`which owmofc 2> /dev/null` |
jbulpin@0 | 540 if test $? != 0 |
jbulpin@0 | 541 then |
jbulpin@0 | 542 echo "Error: cimmof not found" >&2 |
jbulpin@0 | 543 return 1 |
jbulpin@0 | 544 fi |
jbulpin@0 | 545 |
jbulpin@0 | 546 if ps -C owcimomd > /dev/null 2>&1 |
jbulpin@0 | 547 then |
jbulpin@0 | 548 state=active |
jbulpin@0 | 549 else |
jbulpin@0 | 550 CIMMOF="$CIMMOF -d `openwbem_repository`" |
jbulpin@0 | 551 if test $? != 0 |
jbulpin@0 | 552 then |
jbulpin@0 | 553 echo "Error: OpenWBEM repository not found" >&2 |
jbulpin@0 | 554 return 1 |
jbulpin@0 | 555 fi |
jbulpin@0 | 556 state=inactive |
jbulpin@0 | 557 fi |
jbulpin@0 | 558 |
jbulpin@0 | 559 for _TEMPDIR in /var/tmp /tmp |
jbulpin@0 | 560 do |
jbulpin@0 | 561 if test -w $_TEMPDIR |
jbulpin@0 | 562 then |
jbulpin@0 | 563 _REGFILENAME=$_TEMPDIR/$$.mof |
jbulpin@0 | 564 break |
jbulpin@0 | 565 fi |
jbulpin@0 | 566 done |
jbulpin@0 | 567 |
jbulpin@0 | 568 trap "rm -f $_REGFILENAME" EXIT |
jbulpin@0 | 569 |
jbulpin@0 | 570 if openwbem_transform $_REGFILENAME $* |
jbulpin@0 | 571 then |
jbulpin@0 | 572 chatter Deregistering providers with $state owcimomd |
jbulpin@0 | 573 $CIMMOF -r $_REGFILENAME > /dev/null |
jbulpin@0 | 574 else |
jbulpin@0 | 575 echo "Failed to build OpenWBEM registration MOF." >&2 |
jbulpin@0 | 576 return 1 |
jbulpin@0 | 577 fi |
jbulpin@0 | 578 } |
jbulpin@0 | 579 |
jbulpin@0 | 580 cim_server() |
jbulpin@0 | 581 { |
jbulpin@0 | 582 for exname in sfcbd cimserver owcimomd |
jbulpin@0 | 583 do |
jbulpin@0 | 584 if pegasus_path $exname > /dev/null |
jbulpin@0 | 585 then |
jbulpin@0 | 586 case $exname in |
jbulpin@0 | 587 sfcbd) echo sfcb; return 0;; |
jbulpin@0 | 588 cimserver) echo pegasus; return 0;; |
jbulpin@0 | 589 owcimomd) echo openwbem; return 0;; |
jbulpin@0 | 590 esac |
jbulpin@0 | 591 break; |
jbulpin@0 | 592 fi |
jbulpin@0 | 593 done |
jbulpin@0 | 594 echo unknown |
jbulpin@0 | 595 return 1 |
jbulpin@0 | 596 } |
jbulpin@0 | 597 |
jbulpin@0 | 598 usage() |
jbulpin@0 | 599 { |
jfehlig@28 | 600 echo "usage: $0 [-h] [-v] [-d] [-t <cimserver>] [-n <namespace>] -r regfile ... -m mof ..." |
jbulpin@0 | 601 } |
jbulpin@0 | 602 |
jbulpin@0 | 603 chatter() |
jbulpin@0 | 604 { |
jbulpin@0 | 605 if test x$verbose != x |
jbulpin@0 | 606 then |
jbulpin@0 | 607 echo $* |
jbulpin@0 | 608 fi |
jbulpin@0 | 609 } |
jbulpin@0 | 610 |
jbulpin@0 | 611 gb_getopt() |
jbulpin@0 | 612 { |
jbulpin@0 | 613 rmode=0 |
jbulpin@0 | 614 mmode=0 |
jbulpin@0 | 615 options= |
jbulpin@0 | 616 moffiles= |
jbulpin@0 | 617 registrations= |
jbulpin@0 | 618 while [ -n "$1" ] |
jbulpin@0 | 619 do |
jbulpin@0 | 620 case $1 in |
jbulpin@0 | 621 -r) mmode=0; |
jbulpin@0 | 622 rmode=1; |
jbulpin@0 | 623 shift;; |
jbulpin@0 | 624 -m) mmode=1; |
jbulpin@0 | 625 rmode=0; |
jbulpin@0 | 626 shift;; |
jbulpin@0 | 627 -*) mmode=0; |
jbulpin@0 | 628 rmode=0; |
jbulpin@0 | 629 options="$options $1"; |
jbulpin@0 | 630 shift;; |
jbulpin@0 | 631 **) if [ $mmode = 1 ] |
jbulpin@0 | 632 then moffiles="$moffiles $1" |
jbulpin@0 | 633 elif [ $rmode = 1 ] |
jbulpin@0 | 634 then registrations="$registrations -r $1" |
jbulpin@0 | 635 else options="$options $1"; |
jbulpin@0 | 636 fi; |
jbulpin@0 | 637 shift;; |
jbulpin@0 | 638 esac |
jbulpin@0 | 639 done |
jbulpin@0 | 640 echo $options $registrations $moffiles |
jbulpin@0 | 641 } |
jbulpin@0 | 642 |
jbulpin@0 | 643 prepargs=`gb_getopt $*` |
jfehlig@28 | 644 args=`getopt dvht:n:r: $prepargs` |
jbulpin@0 | 645 rc=$? |
jbulpin@0 | 646 |
jbulpin@0 | 647 if [ $rc = 127 ] |
jbulpin@0 | 648 then |
jbulpin@0 | 649 echo "warning: getopt not found ...continue without syntax check" |
jbulpin@0 | 650 args=$prepargs |
jbulpin@0 | 651 elif [ $rc != 0 ] |
jbulpin@0 | 652 then |
jbulpin@0 | 653 usage $0 |
jbulpin@0 | 654 exit 1 |
jbulpin@0 | 655 fi |
jbulpin@0 | 656 |
jbulpin@0 | 657 set -- $args |
jbulpin@0 | 658 |
jbulpin@0 | 659 while [ -n "$1" ] |
jbulpin@0 | 660 do |
jbulpin@0 | 661 case $1 in |
jbulpin@0 | 662 -h) help=1; |
jbulpin@0 | 663 shift; |
jbulpin@0 | 664 break;; |
jbulpin@0 | 665 -v) verbose=1; |
jbulpin@0 | 666 shift;; |
jbulpin@0 | 667 -d) deregister=1; |
jbulpin@0 | 668 shift;; |
jbulpin@0 | 669 -t) cimserver=$2; |
jbulpin@0 | 670 shift 2;; |
jfehlig@28 | 671 -n) namespace=$2; |
jfehlig@28 | 672 shift 2;; |
jbulpin@0 | 673 -r) regs="$regs $2"; |
jbulpin@0 | 674 shift 2;; |
jbulpin@0 | 675 --) shift; |
jbulpin@0 | 676 break;; |
jbulpin@0 | 677 **) break;; |
jbulpin@0 | 678 esac |
jbulpin@0 | 679 done |
jbulpin@0 | 680 |
jbulpin@0 | 681 mofs=$* |
jbulpin@0 | 682 |
jbulpin@0 | 683 if [ "$help" = "1" ] |
jbulpin@0 | 684 then |
jbulpin@0 | 685 usage |
jbulpin@0 | 686 echo -e "\t-h display help message" |
jbulpin@0 | 687 echo -e "\t-v verbose mode" |
jbulpin@0 | 688 echo -e "\t-d deregister provider and uninstall schema" |
jbulpin@0 | 689 echo -e "\t-t specify cimserver type (pegasus|sfcb|openwbem|sniacimom)" |
jfehlig@28 | 690 echo -e "\t-n specify namespace" |
jbulpin@0 | 691 echo -e "\t-r specify registration files" |
jbulpin@0 | 692 echo -e "\t-m specify schema mof files" |
jbulpin@0 | 693 echo |
jbulpin@0 | 694 echo Use this command to install schema mofs and register providers. |
jbulpin@0 | 695 echo CIM Server Type is required as well as at least one registration file and one mof. |
jbulpin@0 | 696 exit 0 |
jbulpin@0 | 697 fi |
jbulpin@0 | 698 |
jbulpin@0 | 699 if test x"$mofs" = x || test x"$regs" = x |
jbulpin@0 | 700 then |
jbulpin@0 | 701 usage $0 |
jbulpin@0 | 702 exit 1 |
jbulpin@0 | 703 fi |
jbulpin@0 | 704 |
jbulpin@0 | 705 if test x$cimserver = x |
jbulpin@0 | 706 then |
jbulpin@0 | 707 cimserver=`cim_server` |
jbulpin@0 | 708 if test $? = 0 |
jbulpin@0 | 709 then |
jbulpin@0 | 710 chatter "Autoselected CIM server type:" $cimserver |
jbulpin@0 | 711 else |
jbulpin@0 | 712 echo "CIM server type could not be determined, specify with -t." >&2 |
jbulpin@0 | 713 exit 1 |
jbulpin@0 | 714 fi |
jbulpin@0 | 715 fi |
jbulpin@0 | 716 |
jbulpin@0 | 717 if test x$deregister = x |
jbulpin@0 | 718 then |
jbulpin@0 | 719 case $cimserver in |
jbulpin@0 | 720 pegasus) pegasus_install $mofs ":" $regs;; |
jbulpin@0 | 721 sfcb) sfcb_install $mofs ":" $regs;; |
jbulpin@0 | 722 openwbem) openwbem_install $mofs ;; |
jbulpin@0 | 723 sniacimom) echo sniacimom not yet supported && exit 1 ;; |
jbulpin@0 | 724 **) echo "Invalid CIM Server Type " $cimserver && exit 1;; |
jbulpin@0 | 725 esac |
jbulpin@0 | 726 else |
jbulpin@0 | 727 case $cimserver in |
jbulpin@0 | 728 pegasus) pegasus_uninstall $mofs ":" $regs;; |
jbulpin@0 | 729 sfcb) sfcb_uninstall $mofs ":" $regs;; |
jbulpin@0 | 730 openwbem) openwbem_uninstall $mofs ;; |
jbulpin@0 | 731 sniacimom) echo sniacimom not yet supported && exit 1 ;; |
jbulpin@0 | 732 **) echo "Invalid CIM Server Type " $cimserver && exit 1;; |
jbulpin@0 | 733 esac |
jbulpin@0 | 734 fi |