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>
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