From b6917503f020b96c29c26940d50bb3f46b8edcb2 Mon Sep 17 00:00:00 2001 From: Radek Novacek Date: Mon, 22 Oct 2012 13:45:27 +0200 Subject: Move registration scripts to proper directories register.py is renamed to openlmi-mof-register and moved to /usr/bin/, reg2pegasus is now openlmi-register-pegasus in /usr/libexec/. --- CMakeLists.txt | 3 +- openlmi-mof-register | 93 ++++++++++++++++++++++++++++++++++++++++++++++++ openlmi-register-pegasus | 69 +++++++++++++++++++++++++++++++++++ reg2pegasus.py | 69 ----------------------------------- register.sh | 88 --------------------------------------------- 5 files changed, 164 insertions(+), 158 deletions(-) create mode 100755 openlmi-mof-register create mode 100755 openlmi-register-pegasus delete mode 100644 reg2pegasus.py delete mode 100755 register.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index a4de1a4..63bf93a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,8 @@ find_package(KonkretCMPI REQUIRED) add_subdirectory(src) add_subdirectory(mof) -install(PROGRAMS register.sh reg2pegasus.py DESTINATION share/openlmi-providers) +install(PROGRAMS openlmi-mof-register DESTINATION bin) +install(PROGRAMS openlmi-register-pegasus DESTINATION libexec) install(FILES cmake/modules/OpenLMIMacros.cmake DESTINATION share/cmake/Modules) install(FILES cmake/modules/FindCMPI.cmake DESTINATION share/cmake/Modules) install(FILES cmake/modules/FindKonkretCMPI.cmake DESTINATION share/cmake/Modules) diff --git a/openlmi-mof-register b/openlmi-mof-register new file mode 100755 index 0000000..7a9aaa4 --- /dev/null +++ b/openlmi-mof-register @@ -0,0 +1,93 @@ +#!/bin/sh + +pegasus_repository="/var/lib/Pegasus/repository" + +function usage() +{ + printf "Usage: $0 [ register | unregister ] mof reg\n" +} + +function register() +{ + mof=$1 + reg=$2 + if [ $HAS_SFCBD -eq 1 ]; + then + /usr/bin/sfcbstage -r $reg $mof + /usr/bin/sfcbrepos -f + /usr/bin/systemctl reload-or-try-restart sblim-sfcb.service + fi + + if [ $HAS_PEGASUS -eq 1 ]; + then + /usr/sbin/cimserver --status > /dev/null 2>&1 + if [ $? -eq 0 ]; + then + CIMMOF="/usr/bin/cimmof" + else + CIMMOF="/usr/bin/cimmofl -R $pegasus_repository" + fi + + $CIMMOF -uc $mof + if [ -x $(dirname $0)/openlmi-register-pegasus ]; + then + cat $reg | $(dirname $0)/openlmi-register-pegasus | $CIMMOF -uc -n root/PG_Interop - + else + cat $reg | /usr/libexec/openlmi-register-pegasus | $CIMMOF -uc -n root/PG_Interop - + fi + fi +} + +function unregister() +{ + mof=$1 + reg=$2 + if [ $HAS_SFCBD -eq 1 ]; + then + /usr/bin/sfcbunstage -r $(basename $reg) $(basename $mof) + /usr/bin/sfcbrepos -f + /usr/bin/systemctl reload-or-try-restart sblim-sfcb.service + fi + + if [ $HAS_PEGASUS -eq 1 ]; + then + for provider in $(sed -n 's/ *location: *//p' $reg | sort | uniq); + do + /usr/bin/cimprovider -d -m ${provider} && /usr/bin/cimprovider -r -m ${provider} + done + fi +} + +if [ $# -lt 3 ]; +then + usage + exit 1 +fi + +if [ -e /usr/sbin/sfcbd ]; +then + HAS_SFCBD=1 +else + HAS_SFCBD=0 +fi + +if [ -e /usr/sbin/cimserver ]; +then + HAS_PEGASUS=1 +else + HAS_PEGASUS=0 +fi + +# TODO: check if at least one server is installed + +case $1 in + register) + register $2 $3 + break;; + unregister) + unregister $2 $3 + break;; + **) + usage + exit 1 +esac diff --git a/openlmi-register-pegasus b/openlmi-register-pegasus new file mode 100755 index 0000000..6f33634 --- /dev/null +++ b/openlmi-register-pegasus @@ -0,0 +1,69 @@ +#!/usr/bin/python2 + +import sys +import re + +reg_parse = re.compile(r"\[([^\]]+)\]\s+" +"provider: ([^\s]+)\s+" +"location: (\w+)\s+" +"type: ([^\n]+)\s+" +"namespace: ([^\n]+)") + +Types = { + 'instance': '2', + 'association': '3', + 'indication': '4', + 'method': '5', + 'consumer': '6', + 'instanceQuery': '7' +} + +def define_module(location): + return """instance of PG_ProviderModule +{ + Name = "%(location)s"; + Location = "%(location)s"; + Vendor = "RedHat"; + Version = "0.0.1"; + InterfaceType = "CMPI"; + InterfaceVersion = "2.0.0"; + ModuleGroupName = "lmi-providers"; +}; +""" % { 'location': location } + +def getTypes(types): + l = [] + for key, value in Types.items(): + if key in types: + l.append(value) + return ",".join(l) + +def define_capability(location, provider, cls, types): + return """instance of PG_Provider +{ + Name = "%(provider)s"; + ProviderModuleName = "%(location)s"; +}; + +instance of PG_ProviderCapabilities +{ + ProviderModuleName = "%(location)s"; + ProviderName = "%(provider)s"; + CapabilityID = "%(class)s"; + ClassName = "%(class)s"; + Namespaces = { "root/cimv2" }; + ProviderType = { %(types)s }; + SupportedProperties = NULL; + SupportedMethods = NULL; +}; +""" % { 'location': location, 'provider': provider, 'class': cls, 'types': getTypes(types) } + +modules_defined = {} +for record in reg_parse.findall(sys.stdin.read()): + cls, provider, location, types, namespace = record + + if location not in modules_defined: + print define_module(location) + modules_defined[location] = True + + print define_capability(location, provider, cls, types) diff --git a/reg2pegasus.py b/reg2pegasus.py deleted file mode 100644 index c9e6b32..0000000 --- a/reg2pegasus.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/python - -import sys -import re - -reg_parse = re.compile(r"\[([^\]]+)\]\s+" -"provider: ([^\s]+)\s+" -"location: (\w+)\s+" -"type: ([^\n]+)\s+" -"namespace: ([^\n]+)") - -Types = { - 'instance': '2', - 'association': '3', - 'indication': '4', - 'method': '5', - 'consumer': '6', - 'instanceQuery': '7' -} - -def define_module(location): - return """instance of PG_ProviderModule -{ - Name = "%(location)s"; - Location = "%(location)s"; - Vendor = "RedHat"; - Version = "0.0.1"; - InterfaceType = "CMPI"; - InterfaceVersion = "2.0.0"; - ModuleGroupName = "lmi-providers"; -}; -""" % { 'location': location } - -def getTypes(types): - l = [] - for key, value in Types.items(): - if key in types: - l.append(value) - return ",".join(l) - -def define_capability(location, provider, cls, types): - return """instance of PG_Provider -{ - Name = "%(provider)s"; - ProviderModuleName = "%(location)s"; -}; - -instance of PG_ProviderCapabilities -{ - ProviderModuleName = "%(location)s"; - ProviderName = "%(provider)s"; - CapabilityID = "%(class)s"; - ClassName = "%(class)s"; - Namespaces = { "root/cimv2" }; - ProviderType = { %(types)s }; - SupportedProperties = NULL; - SupportedMethods = NULL; -}; -""" % { 'location': location, 'provider': provider, 'class': cls, 'types': getTypes(types) } - -modules_defined = {} -for record in reg_parse.findall(sys.stdin.read()): - cls, provider, location, types, namespace = record - - if location not in modules_defined: - print define_module(location) - modules_defined[location] = True - - print define_capability(location, provider, cls, types) diff --git a/register.sh b/register.sh deleted file mode 100755 index f94869b..0000000 --- a/register.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/sh - -pegasus_repository="/var/lib/Pegasus/repository" - -function usage() -{ - printf "Usage: $0 [ register | unregister ] mof reg\n" -} - -function register() -{ - mof=$1 - reg=$2 - if [ $HAS_SFCBD -eq 1 ]; - then - /usr/bin/sfcbstage -r $reg $mof - /usr/bin/sfcbrepos -f - /usr/bin/systemctl reload-or-try-restart sblim-sfcb.service - fi - - if [ $HAS_PEGASUS -eq 1 ]; - then - /usr/sbin/cimserver --status > /dev/null 2>&1 - if [ $? -eq 0 ]; - then - CIMMOF="/usr/bin/cimmof" - else - CIMMOF="/usr/bin/cimmofl -R $pegasus_repository" - fi - - $CIMMOF -uc $mof - cat $reg | /usr/bin/python2 $(dirname $0)/reg2pegasus.py | $CIMMOF -uc -n root/PG_Interop - - fi -} - -function unregister() -{ - mof=$1 - reg=$2 - if [ $HAS_SFCBD -eq 1 ]; - then - /usr/bin/sfcbunstage -r $(basename $reg) $(basename $mof) - /usr/bin/sfcbrepos -f - /usr/bin/systemctl reload-or-try-restart sblim-sfcb.service - fi - - if [ $HAS_PEGASUS -eq 1 ]; - then - for provider in $(sed -n 's/ *location: *//p' $reg | sort | uniq); - do - /usr/bin/cimprovider -d -m ${provider} && /usr/bin/cimprovider -r -m ${provider} - done - fi -} - -if [ $# -lt 3 ]; -then - usage - exit 1 -fi - -if [ -e /usr/sbin/sfcbd ]; -then - HAS_SFCBD=1 -else - HAS_SFCBD=0 -fi - -if [ -e /usr/sbin/cimserver ]; -then - HAS_PEGASUS=1 -else - HAS_PEGASUS=0 -fi - -# TODO: check if at least one server is installed - -case $1 in - register) - register $2 $3 - break;; - unregister) - unregister $2 $3 - break;; - **) - usage - exit 1 -esac -- cgit