From ab81c6fc893e34de159b25290f7313082351d992 Mon Sep 17 00:00:00 2001 From: Radek Novacek Date: Thu, 2 Aug 2012 11:47:02 +0200 Subject: Always use .reg file instead of .registration --- CMakeLists.txt | 2 +- cmake/modules/CuraMacros.cmake | 6 ++-- reg2pegasus.py | 69 ++++++++++++++++++++++++++++++++++++++++++ register.sh | 16 +++++----- registration2pegasus.py | 62 ------------------------------------- 5 files changed, 81 insertions(+), 74 deletions(-) create mode 100644 reg2pegasus.py delete mode 100644 registration2pegasus.py diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ff9c2e..ca84467 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,4 +30,4 @@ find_package(KonkretCMPI REQUIRED) add_subdirectory(src) add_subdirectory(mof) -install(PROGRAMS register.sh registration2pegasus.py DESTINATION share/cura-providers/) +install(PROGRAMS register.sh reg2pegasus.py DESTINATION share/cura-providers/) diff --git a/cmake/modules/CuraMacros.cmake b/cmake/modules/CuraMacros.cmake index 8bbb7ae..25fd0b3 100644 --- a/cmake/modules/CuraMacros.cmake +++ b/cmake/modules/CuraMacros.cmake @@ -86,12 +86,12 @@ macro(cim_registration PROVIDER_NAME LIBRARY_NAME MOF) # Create registration out of shared library add_custom_command(TARGET ${LIBRARY_NAME} POST_BUILD - COMMAND ${KONKRETCMPI_KONKRETREG} -r lib${LIBRARY_NAME}.so > Cura_${PROVIDER_NAME}.registration + COMMAND ${KONKRETCMPI_KONKRETREG} lib${LIBRARY_NAME}.so > Cura_${PROVIDER_NAME}.reg COMMENT "Generating .reg file from library for ${PROVIDER_NAME}" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) # Install it - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Cura_${PROVIDER_NAME}.registration DESTINATION share/cura-providers/) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Cura_${PROVIDER_NAME}.reg DESTINATION share/cura-providers/) # Add custom target for registration find_file(MOF_FILE @@ -99,5 +99,5 @@ macro(cim_registration PROVIDER_NAME LIBRARY_NAME MOF) PATHS ${CMAKE_SOURCE_DIR}/mof/ ) add_custom_target(register-${PROVIDER_NAME} - ${CMAKE_SOURCE_DIR}/register.sh ${MOF_FILE} ${CMAKE_CURRENT_BINARY_DIR}/Cura_${PROVIDER_NAME}.registration) + ${CMAKE_SOURCE_DIR}/register.sh ${MOF_FILE} ${CMAKE_CURRENT_BINARY_DIR}/Cura_${PROVIDER_NAME}.reg) endmacro(cim_registration) diff --git a/reg2pegasus.py b/reg2pegasus.py new file mode 100644 index 0000000..08f8662 --- /dev/null +++ b/reg2pegasus.py @@ -0,0 +1,69 @@ +#!/usr/bin/python + +import sys +import re + +reg_parse = re.compile(r"\[([^\]]+)\]\s+" +"provider: (\w+)\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 = "cura-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, cls, types): + return """instance of PG_Provider +{ + Name = "%(class)s"; + ProviderModuleName = "%(location)s"; +}; + +instance of PG_ProviderCapabilities +{ + ProviderModuleName = "%(location)s"; + ProviderName = "%(class)s"; + CapabilityID = "%(class)s"; + ClassName = "%(class)s"; + Namespaces = { "root/cimv2" }; + ProviderType = { %(types)s }; + SupportedProperties = NULL; + SupportedMethods = NULL; +}; +""" % { 'location': location, '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, cls, types) diff --git a/register.sh b/register.sh index cef7f59..cb9e02f 100755 --- a/register.sh +++ b/register.sh @@ -4,16 +4,16 @@ pegasus_repository="/var/lib/Pegasus/repository" function usage() { - printf "Usage: $0 [ register | unregister ] mof registration\n" + printf "Usage: $0 [ register | unregister ] mof reg\n" } function register() { mof=$1 - registration=$2 + reg=$2 if [ $HAS_SFCBD -eq 1 ]; then - /usr/bin/sfcbstage -r $registration $mof + /usr/bin/sfcbstage -r $reg $mof /usr/bin/sfcbrepos -f /usr/bin/systemctl reload-or-try-restart sblim-sfcb.service fi @@ -29,26 +29,26 @@ function register() fi $CIMMOF -uc $mof - cat $registration | /usr/bin/python2 $(dirname $0)/registration2pegasus.py | $CIMMOF -uc -n root/PG_Interop - + cat $reg | /usr/bin/python2 $(dirname $0)/reg2pegasus.py | $CIMMOF -uc -n root/PG_Interop - fi } function unregister() { mof=$1 - registration=$2 + reg=$2 if [ $HAS_SFCBD -eq 1 ]; then - /usr/bin/sfcbunstage -r $(basename $registration) $(basename $mof) + /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 module in $(cut -d' ' -f 4 $registration | sort | uniq); + for provider in $(sed -n 's/ *location: *//p' $reg | sort | uniq); do - /usr/bin/cimprovider -d -m ${module}Module && /usr/bin/cimprovider -r -m ${module}Module + /usr/bin/cimprovider -d -m ${provider} && /usr/bin/cimprovider -r -m ${provider} done fi } diff --git a/registration2pegasus.py b/registration2pegasus.py deleted file mode 100644 index 62947c7..0000000 --- a/registration2pegasus.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/python - -import sys - -Types = { - 'instance': '2', - 'association': '3', - 'indication': '4', - 'method': '5', - 'consumer': '6', - 'instanceQuery': '7' -} - -def define_module(provider): - return """instance of PG_ProviderModule -{ - Name = "%(provider)sModule"; - Location = "%(provider)s"; - Vendor = "RedHat"; - Version = "0.0.1"; - InterfaceType = "CMPI"; - InterfaceVersion = "2.0.0"; - ModuleGroupName = "cura-providers"; -}; -""" % { 'provider': provider } - -def getTypes(types): - l = [] - for key, value in Types.items(): - if key in types: - l.append(value) - return ",".join(l) - -def define_capability(provider, name, cls, types): - return """instance of PG_Provider -{ - Name = "%(name)s"; - ProviderModuleName = "%(provider)sModule"; -}; - -instance of PG_ProviderCapabilities -{ - ProviderModuleName = "%(provider)sModule"; - ProviderName = "%(name)s"; - CapabilityID = "%(class)s"; - ClassName = "%(class)s"; - Namespaces = { "root/cimv2" }; - ProviderType = { %(types)s }; - SupportedProperties = NULL; - SupportedMethods = NULL; -}; -""" % { 'provider': provider, 'name': name, 'class': cls, 'types': getTypes(types) } - -modules_defined = {} -for line in sys.stdin: - cls, namespace, name, provider, types = line.strip().split(" ", 4) - - if provider not in modules_defined: - print define_module(provider) - modules_defined[provider] = True - - print define_capability(provider, name, cls, types) -- cgit