os-cmpi-xen

annotate provider-register.sh @ 1:bdf24cd56bed

Initial change to make the provider work with libvirt and openwbem.
author jfehlig@jfehlig1.provo.novell.com
date Wed Apr 26 12:28:36 2006 -0600 (2006-04-26)
parents 72b83cde6b72
children 6137ddada5ca
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
jbulpin@0 175 mofpath=
jbulpin@0 176 mymofs=
jbulpin@0 177 mregs=
jbulpin@0 178 mofmode=1
jbulpin@0 179 while test x$1 != x
jbulpin@0 180 do
jbulpin@0 181 if test $1 = ":"
jbulpin@0 182 then
jbulpin@0 183 mofmode=0
jbulpin@0 184 shift
jbulpin@0 185 continue
jbulpin@0 186 fi
jbulpin@0 187 if test $mofmode = 1
jbulpin@0 188 then
jbulpin@0 189 if test x$mofpath = x
jbulpin@0 190 then
jbulpin@0 191 mofpath=`dirname $1`
jbulpin@0 192 fi
jbulpin@0 193 mymofs="$mymofs $1"
jbulpin@0 194 else
jbulpin@0 195 myregs="$myregs $1"
jbulpin@0 196 fi
jbulpin@0 197 shift
jbulpin@0 198 done
jbulpin@0 199
jbulpin@0 200 for _TEMPDIR in /var/tmp /tmp
jbulpin@0 201 do
jbulpin@0 202 if test -w $_TEMPDIR
jbulpin@0 203 then
jbulpin@0 204 _REGFILENAME=$_TEMPDIR/$$.mof
jbulpin@0 205 break
jbulpin@0 206 fi
jbulpin@0 207 done
jbulpin@0 208
jbulpin@0 209
jbulpin@0 210 trap "rm -f $_REGFILENAME" EXIT
jbulpin@0 211
jbulpin@0 212 if pegasus_transform $_REGFILENAME $myregs
jbulpin@0 213 then
jbulpin@0 214 chatter Registering providers with $state cimserver
jbulpin@0 215 $CIMMOF -uc -I $mofpath -n root/cimv2 $mymofs &&
jbulpin@0 216 $CIMMOF -uc -n root/PG_Interop $_REGFILENAME
jbulpin@0 217 else
jbulpin@0 218 echo "Failed to build pegasus registration MOF." >&2
jbulpin@0 219 return 1
jbulpin@0 220 fi
jbulpin@0 221 }
jbulpin@0 222
jbulpin@0 223 pegasus_uninstall()
jbulpin@0 224 {
jbulpin@0 225 mymofs=
jbulpin@0 226 mregs=
jbulpin@0 227 mofmode=1
jbulpin@0 228 while test x$1 != x
jbulpin@0 229 do
jbulpin@0 230 if test $1 = ":"
jbulpin@0 231 then
jbulpin@0 232 mofmode=0
jbulpin@0 233 shift
jbulpin@0 234 continue
jbulpin@0 235 fi
jbulpin@0 236 if test $mofmode = 1
jbulpin@0 237 then
jbulpin@0 238 mymofs="$mymofs $1"
jbulpin@0 239 else
jbulpin@0 240 myregs="$myregs $1"
jbulpin@0 241 fi
jbulpin@0 242 shift
jbulpin@0 243 done
jbulpin@0 244
jbulpin@0 245 if ps -C cimserver > /dev/null 2>&1
jbulpin@0 246 then
jbulpin@0 247 PROVIDERMODULES=`cat $myregs 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 4 | sort | uniq`
jbulpin@0 248 if test x"$PROVIDERMODULES" = x
jbulpin@0 249 then
jbulpin@0 250 echo Failed to read registration files >&2
jbulpin@0 251 return 1
jbulpin@0 252 fi
jbulpin@0 253 CIMPROVIDER=`pegasus_path cimprovider`
jbulpin@0 254 if test $? != 0
jbulpin@0 255 then
jbulpin@0 256 echo "Error: cimprovider not found" >&2
jbulpin@0 257 return 1
jbulpin@0 258 fi
jbulpin@0 259 for pm in $PROVIDERMODULES
jbulpin@0 260 do
jbulpin@0 261 chatter "Remove provider module" $pm
jbulpin@0 262 $CIMPROVIDER -d -m $pm > /dev/null &&
jbulpin@0 263 $CIMPROVIDER -r -m $pm > /dev/null
jbulpin@0 264 done
jbulpin@0 265 WBEMEXEC=`pegasus_path wbemexec`
jbulpin@0 266 if test $? != 0
jbulpin@0 267 then
jbulpin@0 268 echo "Error: wbemexec not found" >&2
jbulpin@0 269 return 1
jbulpin@0 270 fi
jbulpin@0 271 CLASSES=`cat $myregs 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 1 | grep -v '^CIM_'`
jbulpin@0 272 for cls in $CLASSES
jbulpin@0 273 do
jbulpin@0 274 chatter Delete CIM Class $cls
jbulpin@0 275 $WBEMEXEC > /dev/null <<EOFWX
jbulpin@0 276 <?xml version="1.0" encoding="utf-8" ?>
jbulpin@0 277 <CIM CIMVERSION="2.0" DTDVERSION="2.0">
jbulpin@0 278 <MESSAGE ID="4711" PROTOCOLVERSION="1.0">
jbulpin@0 279 <SIMPLEREQ>
jbulpin@0 280 <IMETHODCALL NAME="DeleteClass">
jbulpin@0 281 <LOCALNAMESPACEPATH>
jbulpin@0 282 <NAMESPACE NAME="root"></NAMESPACE>
jbulpin@0 283 <NAMESPACE NAME="cimv2"></NAMESPACE>
jbulpin@0 284 </LOCALNAMESPACEPATH>
jbulpin@0 285 <IPARAMVALUE NAME="ClassName">
jbulpin@0 286 <CLASSNAME NAME="$cls"/>
jbulpin@0 287 </IPARAMVALUE>
jbulpin@0 288 </IMETHODCALL>
jbulpin@0 289 </SIMPLEREQ>
jbulpin@0 290 </MESSAGE>
jbulpin@0 291 </CIM>
jbulpin@0 292 EOFWX
jbulpin@0 293 done
jbulpin@0 294 else
jbulpin@0 295 echo "Sorry, cimserver must be running to deregister the providers." >&2
jbulpin@0 296 return 1
jbulpin@0 297 fi
jbulpin@0 298 }
jbulpin@0 299
jbulpin@0 300 sfcb_transform()
jbulpin@0 301 {
jbulpin@0 302 OUTFILE=$1
jbulpin@0 303 shift
jbulpin@0 304 regfiles=$*
jbulpin@0 305
jbulpin@0 306 #produce sfcb registraion
jbulpin@0 307 for rf in $regfiles
jbulpin@0 308 do
jbulpin@0 309 cat $rf | grep -v '^[[:space:]]*#.*' | while read CLASSNAME NAMESPACE PROVIDERNAME PROVIDERMODULE CAPS
jbulpin@0 310 do
jbulpin@0 311 chatter "Registering class" $CLASSNAME
jbulpin@0 312 cat >> $OUTFILE <<EOFC
jbulpin@0 313 [$CLASSNAME]
jbulpin@0 314 provider: $PROVIDERNAME
jbulpin@0 315 location: $PROVIDERMODULE
jbulpin@0 316 type: $CAPS
jbulpin@0 317 namespace: $NAMESPACE
jbulpin@0 318 #
jbulpin@0 319 EOFC
jbulpin@0 320 done
jbulpin@0 321 done
jbulpin@0 322 }
jbulpin@0 323
jbulpin@0 324 sfcb_rebuild()
jbulpin@0 325 {
jbulpin@0 326 if ps -C sfcbd > /dev/null 2>&1
jbulpin@0 327 then
jbulpin@0 328 # sfcb is running -- need to restart
jbulpin@0 329 for INITSCRIPT in /etc/init.d/sfcb /usr/local/etc/init.d/sfcb none
jbulpin@0 330 do
jbulpin@0 331 if test -x $INITSCRIPT
jbulpin@0 332 then
jbulpin@0 333 break;
jbulpin@0 334 fi
jbulpin@0 335 done
jbulpin@0 336 chatter "Shutting down sfcb."
jbulpin@0 337 if test $INITSCRIPT = none
jbulpin@0 338 then
jbulpin@0 339 killall sfcbd
jbulpin@0 340 else
jbulpin@0 341 $INITSCRIPT stop
jbulpin@0 342 fi
jbulpin@0 343 t=0
jbulpin@0 344 while ps -C sfcbd > /dev/null 2>&1
jbulpin@0 345 do
jbulpin@0 346 sleep 1
jbulpin@0 347 t=`expr $t + 1`
jbulpin@0 348 if test $t -gt 10
jbulpin@0 349 then
jbulpin@0 350 echo "Timed out waiting for sfcb shutdown..." >&2
jbulpin@0 351 echo "Please stop sfcb manually and rebuild the repository using sfcbrepos." >&2
jbulpin@0 352 return 1
jbulpin@0 353 fi
jbulpin@0 354 done
jbulpin@0 355 chatter "Rebuilding repository."
jbulpin@0 356 sfcbrepos -f
jbulpin@0 357 if test $? != 0
jbulpin@0 358 then
jbulpin@0 359 echo "Repository rebuild failed." >&2
jbulpin@0 360 return 1
jbulpin@0 361 fi
jbulpin@0 362
jbulpin@0 363 if test $INITSCRIPT = none
jbulpin@0 364 then
jbulpin@0 365 echo "No init script found - you need to start sfcbd manually." >&2
jbulpin@0 366 return 1
jbulpin@0 367 else
jbulpin@0 368 chatter "Restarting sfcb."
jbulpin@0 369 $INITSCRIPT start
jbulpin@0 370 fi
jbulpin@0 371 else
jbulpin@0 372 # Not running - rebuild repository
jbulpin@0 373 chatter "Rebuilding repository."
jbulpin@0 374 sfcbrepos -f
jbulpin@0 375 fi
jbulpin@0 376 }
jbulpin@0 377
jbulpin@0 378 sfcb_install()
jbulpin@0 379 {
jbulpin@0 380 mymofs=
jbulpin@0 381 mregs=
jbulpin@0 382 mofmode=1
jbulpin@0 383 while test x$1 != x
jbulpin@0 384 do
jbulpin@0 385 if test $1 = ":"
jbulpin@0 386 then
jbulpin@0 387 mofmode=0
jbulpin@0 388 shift
jbulpin@0 389 baseregname=`basename $1 .registration`
jbulpin@0 390 continue
jbulpin@0 391 fi
jbulpin@0 392 if test $mofmode = 1
jbulpin@0 393 then
jbulpin@0 394 mymofs="$mymofs $1"
jbulpin@0 395 else
jbulpin@0 396 myregs="$myregs $1"
jbulpin@0 397 fi
jbulpin@0 398 shift
jbulpin@0 399 done
jbulpin@0 400
jbulpin@0 401 for _TEMPDIR in /var/tmp /tmp
jbulpin@0 402 do
jbulpin@0 403 if test -w $_TEMPDIR
jbulpin@0 404 then
jbulpin@0 405 _REGFILENAME=$_TEMPDIR/$baseregname.reg
jbulpin@0 406 break
jbulpin@0 407 fi
jbulpin@0 408 done
jbulpin@0 409
jbulpin@0 410 trap "rm -f $_REGFILENAME" EXIT
jbulpin@0 411
jbulpin@0 412 if sfcb_transform $_REGFILENAME $myregs
jbulpin@0 413 then
jbulpin@0 414 chatter "Staging provider registration."
jbulpin@0 415 sfcbstage -r $_REGFILENAME $mymofs
jbulpin@0 416 if test $? != 0
jbulpin@0 417 then
jbulpin@0 418 echo "Failed to stage provider registration." >&2
jbulpin@0 419 return 1
jbulpin@0 420 fi
jbulpin@0 421 sfcb_rebuild
jbulpin@0 422 else
jbulpin@0 423 echo "Failed to build sfcb registration file." >&2
jbulpin@0 424 return 1
jbulpin@0 425 fi
jbulpin@0 426 }
jbulpin@0 427
jbulpin@0 428 sfcb_uninstall()
jbulpin@0 429 {
jbulpin@0 430 mymofs=
jbulpin@0 431 while test x$1 != x
jbulpin@0 432 do
jbulpin@0 433 if test $1 = ":"
jbulpin@0 434 then
jbulpin@0 435 shift
jbulpin@0 436 baseregname=`basename $1 .registration`
jbulpin@0 437 break
jbulpin@0 438 fi
jbulpin@0 439 mymofs="$mymofs `basename $1`"
jbulpin@0 440 shift
jbulpin@0 441 done
jbulpin@0 442
jbulpin@0 443 # "Unstage" MOFs and the registration file
jbulpin@0 444 chatter "Unstaging provider registrations."
jbulpin@0 445 sfcbunstage -r $baseregname.reg $mymofs
jbulpin@0 446
jbulpin@0 447 # Rebuild repository
jbulpin@0 448 sfcb_rebuild
jbulpin@0 449 }
jbulpin@0 450
jbulpin@0 451 openwbem_transform()
jbulpin@0 452 {
jbulpin@0 453 OUTFILE=$1
jbulpin@0 454 shift
jbulpin@0 455 moffiles=$*
jbulpin@0 456
jbulpin@0 457 if rm -f $OUTFILE
jbulpin@0 458 then
jbulpin@0 459 for _f in $moffiles
jbulpin@0 460 do
jbulpin@0 461 sed "s/Provider *( *\"cmpi:/Provider(\"cmpi::/g" < $_f >> $OUTFILE
jbulpin@0 462 done
jbulpin@0 463 fi
jbulpin@0 464 }
jbulpin@0 465
jbulpin@0 466 openwbem_repository()
jbulpin@0 467 {
jbulpin@0 468 for p in /var/lib/openwbem /usr/local/var/openwbem
jbulpin@0 469 do
jbulpin@0 470 if test -f $p/schema.dat
jbulpin@0 471 then
jbulpin@0 472 echo $p
jbulpin@0 473 return 0
jbulpin@0 474 fi
jbulpin@0 475 done
jbulpin@0 476 return 1
jbulpin@0 477 }
jbulpin@0 478
jbulpin@0 479 openwbem_install()
jbulpin@0 480 {
jbulpin@0 481 CIMMOF=`which owmofc 2> /dev/null`
jbulpin@0 482 if test $? != 0
jbulpin@0 483 then
jbulpin@0 484 echo "Error: cimmof not found" >&2
jbulpin@0 485 return 1
jbulpin@0 486 fi
jbulpin@0 487
jbulpin@0 488 if ps -C owcimomd > /dev/null 2>&1
jbulpin@0 489 then
jbulpin@0 490 state=active
jbulpin@0 491 else
jbulpin@0 492 CIMMOF="$CIMMOF -d `openwbem_repository`"
jbulpin@0 493 if test $? != 0
jbulpin@0 494 then
jbulpin@0 495 echo "Error: OpenWBEM repository not found" >&2
jbulpin@0 496 return 1
jbulpin@0 497 fi
jbulpin@0 498 state=inactive
jbulpin@0 499 fi
jbulpin@0 500
jfehlig@1 501 if test -d /usr/share/mof/cim-current
jfehlig@1 502 then
jfehlig@1 503 CIMMOF="$CIMMOF -s /usr/share/mof/cim-current"
jfehlig@1 504 fi
jfehlig@1 505
jbulpin@0 506 for _TEMPDIR in /var/tmp /tmp
jbulpin@0 507 do
jbulpin@0 508 if test -w $_TEMPDIR
jbulpin@0 509 then
jbulpin@0 510 _REGFILENAME=$_TEMPDIR/$$.mof
jbulpin@0 511 break
jbulpin@0 512 fi
jbulpin@0 513 done
jbulpin@0 514
jbulpin@0 515 trap "rm -f $_REGFILENAME" EXIT
jbulpin@0 516
jbulpin@0 517 if openwbem_transform $_REGFILENAME $*
jbulpin@0 518 then
jbulpin@0 519 chatter Registering providers with $state owcimomd
jbulpin@0 520 $CIMMOF $_REGFILENAME > /dev/null
jbulpin@0 521 else
jbulpin@0 522 echo "Failed to build OpenWBEM registration MOF." >&2
jbulpin@0 523 return 1
jbulpin@0 524 fi
jbulpin@0 525 }
jbulpin@0 526
jbulpin@0 527 openwbem_uninstall()
jbulpin@0 528 {
jbulpin@0 529 CIMMOF=`which owmofc 2> /dev/null`
jbulpin@0 530 if test $? != 0
jbulpin@0 531 then
jbulpin@0 532 echo "Error: cimmof not found" >&2
jbulpin@0 533 return 1
jbulpin@0 534 fi
jbulpin@0 535
jbulpin@0 536 if ps -C owcimomd > /dev/null 2>&1
jbulpin@0 537 then
jbulpin@0 538 state=active
jbulpin@0 539 else
jbulpin@0 540 CIMMOF="$CIMMOF -d `openwbem_repository`"
jbulpin@0 541 if test $? != 0
jbulpin@0 542 then
jbulpin@0 543 echo "Error: OpenWBEM repository not found" >&2
jbulpin@0 544 return 1
jbulpin@0 545 fi
jbulpin@0 546 state=inactive
jbulpin@0 547 fi
jbulpin@0 548
jbulpin@0 549 for _TEMPDIR in /var/tmp /tmp
jbulpin@0 550 do
jbulpin@0 551 if test -w $_TEMPDIR
jbulpin@0 552 then
jbulpin@0 553 _REGFILENAME=$_TEMPDIR/$$.mof
jbulpin@0 554 break
jbulpin@0 555 fi
jbulpin@0 556 done
jbulpin@0 557
jbulpin@0 558 trap "rm -f $_REGFILENAME" EXIT
jbulpin@0 559
jbulpin@0 560 if openwbem_transform $_REGFILENAME $*
jbulpin@0 561 then
jbulpin@0 562 chatter Deregistering providers with $state owcimomd
jbulpin@0 563 $CIMMOF -r $_REGFILENAME > /dev/null
jbulpin@0 564 else
jbulpin@0 565 echo "Failed to build OpenWBEM registration MOF." >&2
jbulpin@0 566 return 1
jbulpin@0 567 fi
jbulpin@0 568 }
jbulpin@0 569
jbulpin@0 570 cim_server()
jbulpin@0 571 {
jbulpin@0 572 for exname in sfcbd cimserver owcimomd
jbulpin@0 573 do
jbulpin@0 574 if pegasus_path $exname > /dev/null
jbulpin@0 575 then
jbulpin@0 576 case $exname in
jbulpin@0 577 sfcbd) echo sfcb; return 0;;
jbulpin@0 578 cimserver) echo pegasus; return 0;;
jbulpin@0 579 owcimomd) echo openwbem; return 0;;
jbulpin@0 580 esac
jbulpin@0 581 break;
jbulpin@0 582 fi
jbulpin@0 583 done
jbulpin@0 584 echo unknown
jbulpin@0 585 return 1
jbulpin@0 586 }
jbulpin@0 587
jbulpin@0 588 usage()
jbulpin@0 589 {
jbulpin@0 590 echo "usage: $0 [-h] [-v] [-d] [-t <cimserver>] -r regfile ... -m mof ..."
jbulpin@0 591 }
jbulpin@0 592
jbulpin@0 593 chatter()
jbulpin@0 594 {
jbulpin@0 595 if test x$verbose != x
jbulpin@0 596 then
jbulpin@0 597 echo $*
jbulpin@0 598 fi
jbulpin@0 599 }
jbulpin@0 600
jbulpin@0 601 gb_getopt()
jbulpin@0 602 {
jbulpin@0 603 rmode=0
jbulpin@0 604 mmode=0
jbulpin@0 605 options=
jbulpin@0 606 moffiles=
jbulpin@0 607 registrations=
jbulpin@0 608 while [ -n "$1" ]
jbulpin@0 609 do
jbulpin@0 610 case $1 in
jbulpin@0 611 -r) mmode=0;
jbulpin@0 612 rmode=1;
jbulpin@0 613 shift;;
jbulpin@0 614 -m) mmode=1;
jbulpin@0 615 rmode=0;
jbulpin@0 616 shift;;
jbulpin@0 617 -*) mmode=0;
jbulpin@0 618 rmode=0;
jbulpin@0 619 options="$options $1";
jbulpin@0 620 shift;;
jbulpin@0 621 **) if [ $mmode = 1 ]
jbulpin@0 622 then moffiles="$moffiles $1"
jbulpin@0 623 elif [ $rmode = 1 ]
jbulpin@0 624 then registrations="$registrations -r $1"
jbulpin@0 625 else options="$options $1";
jbulpin@0 626 fi;
jbulpin@0 627 shift;;
jbulpin@0 628 esac
jbulpin@0 629 done
jbulpin@0 630 echo $options $registrations $moffiles
jbulpin@0 631 }
jbulpin@0 632
jbulpin@0 633 prepargs=`gb_getopt $*`
jbulpin@0 634 args=`getopt dvht:r: $prepargs`
jbulpin@0 635 rc=$?
jbulpin@0 636
jbulpin@0 637 if [ $rc = 127 ]
jbulpin@0 638 then
jbulpin@0 639 echo "warning: getopt not found ...continue without syntax check"
jbulpin@0 640 args=$prepargs
jbulpin@0 641 elif [ $rc != 0 ]
jbulpin@0 642 then
jbulpin@0 643 usage $0
jbulpin@0 644 exit 1
jbulpin@0 645 fi
jbulpin@0 646
jbulpin@0 647 set -- $args
jbulpin@0 648
jbulpin@0 649 while [ -n "$1" ]
jbulpin@0 650 do
jbulpin@0 651 case $1 in
jbulpin@0 652 -h) help=1;
jbulpin@0 653 shift;
jbulpin@0 654 break;;
jbulpin@0 655 -v) verbose=1;
jbulpin@0 656 shift;;
jbulpin@0 657 -d) deregister=1;
jbulpin@0 658 shift;;
jbulpin@0 659 -t) cimserver=$2;
jbulpin@0 660 shift 2;;
jbulpin@0 661 -r) regs="$regs $2";
jbulpin@0 662 shift 2;;
jbulpin@0 663 --) shift;
jbulpin@0 664 break;;
jbulpin@0 665 **) break;;
jbulpin@0 666 esac
jbulpin@0 667 done
jbulpin@0 668
jbulpin@0 669 mofs=$*
jbulpin@0 670
jbulpin@0 671 if [ "$help" = "1" ]
jbulpin@0 672 then
jbulpin@0 673 usage
jbulpin@0 674 echo -e "\t-h display help message"
jbulpin@0 675 echo -e "\t-v verbose mode"
jbulpin@0 676 echo -e "\t-d deregister provider and uninstall schema"
jbulpin@0 677 echo -e "\t-t specify cimserver type (pegasus|sfcb|openwbem|sniacimom)"
jbulpin@0 678 echo -e "\t-r specify registration files"
jbulpin@0 679 echo -e "\t-m specify schema mof files"
jbulpin@0 680 echo
jbulpin@0 681 echo Use this command to install schema mofs and register providers.
jbulpin@0 682 echo CIM Server Type is required as well as at least one registration file and one mof.
jbulpin@0 683 exit 0
jbulpin@0 684 fi
jbulpin@0 685
jbulpin@0 686 if test x"$mofs" = x || test x"$regs" = x
jbulpin@0 687 then
jbulpin@0 688 usage $0
jbulpin@0 689 exit 1
jbulpin@0 690 fi
jbulpin@0 691
jbulpin@0 692 if test x$cimserver = x
jbulpin@0 693 then
jbulpin@0 694 cimserver=`cim_server`
jbulpin@0 695 if test $? = 0
jbulpin@0 696 then
jbulpin@0 697 chatter "Autoselected CIM server type:" $cimserver
jbulpin@0 698 else
jbulpin@0 699 echo "CIM server type could not be determined, specify with -t." >&2
jbulpin@0 700 exit 1
jbulpin@0 701 fi
jbulpin@0 702 fi
jbulpin@0 703
jbulpin@0 704 if test x$deregister = x
jbulpin@0 705 then
jbulpin@0 706 case $cimserver in
jbulpin@0 707 pegasus) pegasus_install $mofs ":" $regs;;
jbulpin@0 708 sfcb) sfcb_install $mofs ":" $regs;;
jbulpin@0 709 openwbem) openwbem_install $mofs ;;
jbulpin@0 710 sniacimom) echo sniacimom not yet supported && exit 1 ;;
jbulpin@0 711 **) echo "Invalid CIM Server Type " $cimserver && exit 1;;
jbulpin@0 712 esac
jbulpin@0 713 else
jbulpin@0 714 case $cimserver in
jbulpin@0 715 pegasus) pegasus_uninstall $mofs ":" $regs;;
jbulpin@0 716 sfcb) sfcb_uninstall $mofs ":" $regs;;
jbulpin@0 717 openwbem) openwbem_uninstall $mofs ;;
jbulpin@0 718 sniacimom) echo sniacimom not yet supported && exit 1 ;;
jbulpin@0 719 **) echo "Invalid CIM Server Type " $cimserver && exit 1;;
jbulpin@0 720 esac
jbulpin@0 721 fi