forked from pool/cmpi-provider-register
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/cmpi-provider-register?expand=0&rev=1
This commit is contained in:
commit
18be56a819
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.osc
|
12
cmpi-provider-register.changes
Normal file
12
cmpi-provider-register.changes
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Oct 14 09:03:19 MDT 2008 - bwhiteley@suse.de
|
||||||
|
|
||||||
|
- Added license to script (bnc:434694)
|
||||||
|
- Don't fail if link destinations exist; only warn.
|
||||||
|
- Changes to make it work on python 2.4.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Sep 27 20:53:44 CEST 2008 - bwhiteley@suse.de
|
||||||
|
|
||||||
|
- Initial checkin
|
||||||
|
|
425
cmpi-provider-register.py
Normal file
425
cmpi-provider-register.py
Normal file
@ -0,0 +1,425 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
#*******************************************************************************
|
||||||
|
# Copyright (C) 2008 Novell, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# - Redistributions of source code must retain the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer in the documentation
|
||||||
|
# and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# - Neither the name of Novell, Inc. nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived from this
|
||||||
|
# software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
|
||||||
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL Novell, Inc. OR THE CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
#*****************************************************************************/
|
||||||
|
|
||||||
|
from pywbem.mof_compiler import MOFCompiler, MOFWBEMConnection, MOFParseError
|
||||||
|
from optparse import OptionParser
|
||||||
|
import os
|
||||||
|
import errno
|
||||||
|
import sys
|
||||||
|
from subprocess import call, PIPE, STDOUT, Popen
|
||||||
|
import pywbem
|
||||||
|
|
||||||
|
sfcb_init_script = '/etc/init.d/sfcb'
|
||||||
|
|
||||||
|
pegasus_init_script = '/etc/init.d/tog-pegasus'
|
||||||
|
pegasus_cimserver_exe = '/usr/sbin/cimserver'
|
||||||
|
pegasus_unix_socket = '/var/run/tog-pegasus/cimxml.socket'
|
||||||
|
|
||||||
|
scx_home = '/opt/microsoft/scx'
|
||||||
|
scx_init_script = '/etc/init.d/scx-cimd'
|
||||||
|
scx_cimserver_exe = scx_home + '/bin/scxcimserver'
|
||||||
|
scx_unix_socket = '/var' + scx_home + '/tmp/cim.socket'
|
||||||
|
scx_provider_dir = scx_home + '/lib/providers'
|
||||||
|
|
||||||
|
if os.path.isdir('/usr/lib64/cmpi'):
|
||||||
|
cmpi_dir = '/usr/lib64/cmpi'
|
||||||
|
elif os.path.isdir('/usr/lib/cmpi'):
|
||||||
|
cmpi_dir = '/usr/lib/cmpi'
|
||||||
|
else:
|
||||||
|
cmpi_dir = None
|
||||||
|
|
||||||
|
|
||||||
|
sfcb_regs = []
|
||||||
|
peg_regs = []
|
||||||
|
|
||||||
|
g_verbose = False
|
||||||
|
g_restart = True
|
||||||
|
g_last_output = ''
|
||||||
|
|
||||||
|
class Error(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class SimpleHandle(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.default_namespace = 'root/cimv2'
|
||||||
|
|
||||||
|
class InstStoringConn(pywbem.WBEMConnection):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.instances = {}
|
||||||
|
pywbem.WBEMConnection.__init__(self, *args, **kwargs)
|
||||||
|
|
||||||
|
def CreateInstance(self, *args, **kwargs):
|
||||||
|
inst = len(args) > 0 and args[0] or kwargs['NewInstance']
|
||||||
|
try:
|
||||||
|
self.instances[self.default_namespace].append(inst)
|
||||||
|
except KeyError:
|
||||||
|
self.instances[self.default_namespace] = [inst]
|
||||||
|
return pywbem.WBEMConnection.CreateInstance(self, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleCompiler(MOFCompiler):
|
||||||
|
def __init__(self):
|
||||||
|
self.first_file = True
|
||||||
|
self.handle = MOFWBEMConnection()
|
||||||
|
self.handle = SimpleHandle()
|
||||||
|
MOFCompiler.__init__(self, self.handle)
|
||||||
|
|
||||||
|
def compile_file(self, filename, ns):
|
||||||
|
if self.first_file:
|
||||||
|
self.first_file = False
|
||||||
|
self.rval = []
|
||||||
|
MOFCompiler.compile_file(self, filename, ns)
|
||||||
|
return self.rval
|
||||||
|
|
||||||
|
self.rval.append((ns, filename))
|
||||||
|
|
||||||
|
|
||||||
|
def process_sfcb(mof, stage, remove=False):
|
||||||
|
mofcomp = SimpleCompiler()
|
||||||
|
files = []
|
||||||
|
files = mofcomp.compile_file(mof, None)
|
||||||
|
for file in files:
|
||||||
|
dest = stage + '/mofs/' + file[0]
|
||||||
|
src = file[1]
|
||||||
|
if not remove:
|
||||||
|
if not os.path.exists(dest):
|
||||||
|
os.makedirs(dest)
|
||||||
|
dest+= '/' + os.path.basename(src)
|
||||||
|
if remove:
|
||||||
|
try:
|
||||||
|
os.unlink(dest)
|
||||||
|
except OSError, e:
|
||||||
|
if e.errno != errno.ENOENT:
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
if os.path.islink(dest):
|
||||||
|
if not os.path.exists(os.readlink(dest)):
|
||||||
|
os.unlink(dest)
|
||||||
|
try:
|
||||||
|
os.symlink(src, dest)
|
||||||
|
except OSError, e:
|
||||||
|
if e.errno != errno.EEXIST:
|
||||||
|
raise
|
||||||
|
if os.readlink(dest) != src:
|
||||||
|
print 'Warning: %s already exists' % dest
|
||||||
|
for src in sfcb_regs:
|
||||||
|
dest = stage + '/regs/' + os.path.basename(src)
|
||||||
|
if remove:
|
||||||
|
try:
|
||||||
|
os.unlink(dest)
|
||||||
|
except OSError, e:
|
||||||
|
if e.errno != errno.ENOENT:
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
if os.path.islink(dest):
|
||||||
|
if not os.path.exists(os.readlink(dest)):
|
||||||
|
os.unlink(dest)
|
||||||
|
try:
|
||||||
|
os.symlink(src, dest)
|
||||||
|
except OSError, e:
|
||||||
|
if e.errno != errno.EEXIST:
|
||||||
|
raise
|
||||||
|
if os.readlink(dest) != src:
|
||||||
|
print 'Warning: %s already exists' % dest
|
||||||
|
|
||||||
|
|
||||||
|
if g_restart:
|
||||||
|
sfcb_running = False
|
||||||
|
if run([sfcb_init_script, 'status']) == 0:
|
||||||
|
sfcb_running = True
|
||||||
|
run([sfcb_init_script, 'stop'])
|
||||||
|
try:
|
||||||
|
run_check(['sfcbrepos','-f'])
|
||||||
|
finally:
|
||||||
|
if sfcb_running:
|
||||||
|
run([sfcb_init_script, 'start'])
|
||||||
|
|
||||||
|
|
||||||
|
def run_check(command, *args, **kwargs):
|
||||||
|
if g_verbose:
|
||||||
|
po = Popen(command, *args, **kwargs)
|
||||||
|
output = ''
|
||||||
|
else:
|
||||||
|
po = Popen(command, stdout=PIPE, stderr=STDOUT, *args, **kwargs)
|
||||||
|
output = po.communicate()[0]
|
||||||
|
rc = po.wait()
|
||||||
|
if rc != 0:
|
||||||
|
if isinstance(command, list):
|
||||||
|
command = ' '.join(command)
|
||||||
|
|
||||||
|
err = Error("Error running '%s', returned %s" %(command, rc))
|
||||||
|
err.last_output = output
|
||||||
|
raise err
|
||||||
|
return rc
|
||||||
|
|
||||||
|
def run(command, *args, **kwargs):
|
||||||
|
global g_last_output
|
||||||
|
if g_verbose:
|
||||||
|
return call(command, *args, **kwargs)
|
||||||
|
po = Popen(command, stdout=PIPE, stderr=STDOUT, *args, **kwargs)
|
||||||
|
output = po.communicate()[0]
|
||||||
|
rc = po.wait()
|
||||||
|
if rc != 0:
|
||||||
|
g_last_output = output
|
||||||
|
return rc
|
||||||
|
|
||||||
|
|
||||||
|
def process_pegasus(mof, mofcomp, init_script, cimserver_exe, remove=False,
|
||||||
|
provider_dir=None, env=None):
|
||||||
|
""" Handle Pegasus
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
mofs -- list of MOF files
|
||||||
|
mofcomp -- instance of MOFCompiler
|
||||||
|
init_script -- Init script for Pegasus
|
||||||
|
cimserver_exe -- Full path to cimserver executable
|
||||||
|
remove -- True if we're uninstalling providers / removing schema
|
||||||
|
"""
|
||||||
|
|
||||||
|
peg_running = True
|
||||||
|
if (run([init_script, 'status']) != 0):
|
||||||
|
peg_running = False
|
||||||
|
run_check([cimserver_exe,
|
||||||
|
'enableIndicationService=false',
|
||||||
|
'enableHttpsConnection=false',
|
||||||
|
'enableHttpConnection=false'], env=env)
|
||||||
|
|
||||||
|
try:
|
||||||
|
mofcomp.compile_file(mof, 'root/cimv2')
|
||||||
|
for reg in peg_regs:
|
||||||
|
mofcomp.compile_file(reg, 'root/PG_InterOp')
|
||||||
|
if remove:
|
||||||
|
mofcomp.rollback(verbose=g_verbose)
|
||||||
|
finally:
|
||||||
|
|
||||||
|
if not peg_running:
|
||||||
|
run_check([cimserver_exe, '-s'], env=env)
|
||||||
|
|
||||||
|
if provider_dir:
|
||||||
|
try:
|
||||||
|
insts = mofcomp.handle.instances['root/PG_InterOp']
|
||||||
|
except KeyError:
|
||||||
|
insts = []
|
||||||
|
providers = [inst['Location'] for inst in insts
|
||||||
|
if inst.classname.lower() == 'pg_providermodule']
|
||||||
|
providers = list(set(providers))
|
||||||
|
|
||||||
|
for provider in providers:
|
||||||
|
libname = 'lib' + provider + '.so'
|
||||||
|
src = cmpi_dir + '/' + libname
|
||||||
|
dest = provider_dir + '/' + libname
|
||||||
|
if not remove:
|
||||||
|
if os.path.exists(src) and not os.path.exists(dest):
|
||||||
|
try:
|
||||||
|
os.symlink(src, dest)
|
||||||
|
except OSError, e:
|
||||||
|
print e
|
||||||
|
# don't remove, in case the provider is shared with other
|
||||||
|
# packages (like pyCmpiProvider)
|
||||||
|
#
|
||||||
|
#else:
|
||||||
|
# if os.path.islink(dest):
|
||||||
|
# try:
|
||||||
|
# os.unlink(dest)
|
||||||
|
# except OSError, e:
|
||||||
|
# print e
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def sfcb_installed():
|
||||||
|
return os.path.exists(sfcb_init_script)
|
||||||
|
|
||||||
|
def pegasus_installed():
|
||||||
|
return os.path.exists(pegasus_init_script) and \
|
||||||
|
os.path.exists(pegasus_cimserver_exe)
|
||||||
|
|
||||||
|
def scx_installed():
|
||||||
|
return os.path.exists(scx_init_script) and \
|
||||||
|
os.path.exists(scx_cimserver_exe)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
usage = 'usage: %prog [options] -d <Data Dir>'
|
||||||
|
oparser = OptionParser(usage=usage)
|
||||||
|
oparser.add_option('-s', '--search', dest='search',
|
||||||
|
help='Search path to find missing schema elements. This option can be present multiple times.',
|
||||||
|
metavar='Path', action='append')
|
||||||
|
oparser.add_option('-n', '--namespace', dest='ns',
|
||||||
|
help='Specify the namespace', metavar='Namespace',
|
||||||
|
default='root/cimv2')
|
||||||
|
oparser.add_option('-u', '--url', dest='url',
|
||||||
|
help='URL to the CIM Server', metavar='URL')
|
||||||
|
oparser.add_option('-d', '--dir', dest='dir',
|
||||||
|
help='Directory containing MOF and registration files',
|
||||||
|
metavar='Dir')
|
||||||
|
oparser.add_option('-v', '--verbose',
|
||||||
|
action='store_true', dest='verbose', default=False,
|
||||||
|
help='Print more messages to stdout')
|
||||||
|
oparser.add_option('-r', '--remove',
|
||||||
|
action='store_true', dest='remove', default=False,
|
||||||
|
help='Remove elements found in MOF, instead of create them')
|
||||||
|
oparser.add_option('-x', '--no-restart',
|
||||||
|
action='store_true', dest='no_restart', default=False,
|
||||||
|
help="Don't run 'sfcbrepos', don't restart sfcbd")
|
||||||
|
oparser.add_option('-l', '--username',
|
||||||
|
dest='username', metavar='Username',
|
||||||
|
help='Specify the username')
|
||||||
|
oparser.add_option('-p', '--password',
|
||||||
|
dest='password', metavar='Password',
|
||||||
|
help='Specify the password')
|
||||||
|
oparser.add_option('-g', '--stage',
|
||||||
|
dest='stage', metavar='SFCB stage',
|
||||||
|
help='Specify the SFCB stage directory',
|
||||||
|
default='/var/lib/sfcb/stage')
|
||||||
|
|
||||||
|
(options, args) = oparser.parse_args()
|
||||||
|
|
||||||
|
try:
|
||||||
|
if options.dir is None:
|
||||||
|
oparser.error('No directory given')
|
||||||
|
options.dir = os.path.abspath(options.dir)
|
||||||
|
if not os.path.isdir(options.dir):
|
||||||
|
print 'Error: %s is not a directory' % options.dir
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
moffile = options.dir + '/deploy.mof'
|
||||||
|
if not os.path.exists(moffile):
|
||||||
|
print 'Error: missing file:', moffile
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
elems = os.listdir(options.dir)
|
||||||
|
for elem in elems:
|
||||||
|
if elem.endswith('.sfcb.reg'):
|
||||||
|
sfcb_regs.append(options.dir + '/' + elem)
|
||||||
|
elif elem.endswith('.peg.reg'):
|
||||||
|
peg_regs.append(options.dir + '/' + elem)
|
||||||
|
|
||||||
|
g_verbose = options.verbose
|
||||||
|
g_restart = not options.no_restart
|
||||||
|
|
||||||
|
do_sfcb = sfcb_installed() and sfcb_regs
|
||||||
|
do_pegasus = pegasus_installed() and peg_regs
|
||||||
|
do_scx = scx_installed() and peg_regs
|
||||||
|
|
||||||
|
do_scx = do_scx and (options.url == ':scx:' or not options.url)
|
||||||
|
do_pegasus = do_pegasus and (options.url == ':tog-pegasus:' or
|
||||||
|
not options.url)
|
||||||
|
|
||||||
|
if do_sfcb:
|
||||||
|
process_sfcb(moffile, options.stage, options.remove)
|
||||||
|
|
||||||
|
search = options.search
|
||||||
|
if args:
|
||||||
|
oparser.error('Extra arguments given')
|
||||||
|
|
||||||
|
pegs = []
|
||||||
|
|
||||||
|
if not pegasus_installed() and options.url == ':tog-pegasus:':
|
||||||
|
print 'Error: tog-pegasus is not installed'
|
||||||
|
sys.exit(1)
|
||||||
|
if not scx_installed() and options.url == ':scx:':
|
||||||
|
print 'Error: SCX is not installed'
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if do_pegasus:
|
||||||
|
pegs.append({'url':pegasus_unix_socket,
|
||||||
|
'exe':pegasus_cimserver_exe,
|
||||||
|
'init':pegasus_init_script,
|
||||||
|
'provider_dir':None,
|
||||||
|
'env':None,
|
||||||
|
})
|
||||||
|
if do_scx:
|
||||||
|
env = os.environ.copy()
|
||||||
|
ldp = '%(h)s/lib:%(h)s/lib/providers:%(h)s/lib/providers/ext' % \
|
||||||
|
{'h':scx_home}
|
||||||
|
if 'LD_LIBRARY_PATH' in env:
|
||||||
|
ldp+= ':' + env['LD_LIBRARY_PATH']
|
||||||
|
env['LD_LIBRARY_PATH'] = ldp
|
||||||
|
|
||||||
|
pegs.append({'url':scx_unix_socket,
|
||||||
|
'exe':scx_cimserver_exe,
|
||||||
|
'init':scx_init_script,
|
||||||
|
'provider_dir':scx_provider_dir,
|
||||||
|
'env':env,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not pegs and options.url:
|
||||||
|
pegs = [{'url':options.url,
|
||||||
|
'exe':None,
|
||||||
|
'init':None,
|
||||||
|
}]
|
||||||
|
|
||||||
|
passwd = options.password
|
||||||
|
if options.username and not passwd:
|
||||||
|
passwd = getpass('Enter password for %s: ' % options.username)
|
||||||
|
if options.username:
|
||||||
|
creds = (options.username, passwd)
|
||||||
|
else:
|
||||||
|
creds = None
|
||||||
|
|
||||||
|
if search is None:
|
||||||
|
search = ['/usr/share/mof/cim-current']
|
||||||
|
|
||||||
|
search.append(os.path.abspath(options.dir))
|
||||||
|
|
||||||
|
# if removing, we'll be verbose later when we actually remove stuff.
|
||||||
|
# We don't want MOFCompiler to be verbose, as that would be confusing.
|
||||||
|
verbose = options.verbose and not options.remove
|
||||||
|
|
||||||
|
|
||||||
|
for peg in pegs:
|
||||||
|
if options.remove:
|
||||||
|
conn = pywbem.WBEMConnection(peg['url'], creds)
|
||||||
|
conn = MOFWBEMConnection(conn=conn)
|
||||||
|
else:
|
||||||
|
conn = InstStoringConn(peg['url'], creds)
|
||||||
|
#conn.debug = True
|
||||||
|
conn.default_namespace = options.ns
|
||||||
|
|
||||||
|
mofcomp = MOFCompiler(handle=conn, search_paths=search, verbose=verbose)
|
||||||
|
|
||||||
|
try:
|
||||||
|
process_pegasus(moffile, mofcomp, peg['init'], peg['exe'],
|
||||||
|
remove=options.remove, provider_dir=peg['provider_dir'],
|
||||||
|
env=peg['env'])
|
||||||
|
except MOFParseError, pe:
|
||||||
|
sys.exit(1)
|
||||||
|
except pywbem.CIMError, ce:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
except Error, e:
|
||||||
|
print str(e)
|
||||||
|
if hasattr(e, 'last_output'):
|
||||||
|
print e.last_output
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
62
cmpi-provider-register.spec
Normal file
62
cmpi-provider-register.spec
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#
|
||||||
|
# spec file for package cmpi-provider-register (Version 1.0)
|
||||||
|
#
|
||||||
|
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Name: cmpi-provider-register
|
||||||
|
Version: 1.0
|
||||||
|
Release: 1
|
||||||
|
License: BSD 3-Clause
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
Group: System/Management
|
||||||
|
Summary: CIMOM neutral provider registration utility
|
||||||
|
Requires: python-pywbem cim-schema
|
||||||
|
BuildRequires: cim-schema python-pywbem
|
||||||
|
BuildArch: noarch
|
||||||
|
Source0: %{name}.py
|
||||||
|
|
||||||
|
%description
|
||||||
|
A utility allowing CMPI provider packages to register with whatever
|
||||||
|
CIMOM(s) happens to be present on the system.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Authors:
|
||||||
|
--------
|
||||||
|
Bart Whiteley
|
||||||
|
|
||||||
|
%prep
|
||||||
|
|
||||||
|
%build
|
||||||
|
|
||||||
|
%install
|
||||||
|
%{__mkdir} -p $RPM_BUILD_ROOT/usr/sbin
|
||||||
|
install -m 744 %{S:0} $RPM_BUILD_ROOT/usr/sbin/%{name}
|
||||||
|
|
||||||
|
%clean
|
||||||
|
rm -rf "$RPM_BUILD_ROOT"
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-,root,root)
|
||||||
|
/usr/sbin/*
|
||||||
|
%changelog
|
||||||
|
* Tue Oct 14 2008 bwhiteley@suse.de
|
||||||
|
- Added license to script (bnc:434694)
|
||||||
|
- Don't fail if link destinations exist; only warn.
|
||||||
|
- Changes to make it work on python 2.4.
|
||||||
|
* Sat Sep 27 2008 bwhiteley@suse.de
|
||||||
|
- Initial checkin
|
Loading…
Reference in New Issue
Block a user