summaryrefslogtreecommitdiffstats
path: root/src/lib/Client/Tools/SYSV.py
diff options
context:
space:
mode:
authorSol Jerome <sol.jerome@gmail.com>2012-03-24 11:20:07 -0500
committerSol Jerome <sol.jerome@gmail.com>2012-03-24 11:20:07 -0500
commitdab1d03d81c538966d03fb9318a4588a9e803b44 (patch)
treef51e27fa55887e9fb961766805fe43f0da56c5b9 /src/lib/Client/Tools/SYSV.py
parent5cd6238df496a3cea178e4596ecd87967cce1ce6 (diff)
downloadbcfg2-dab1d03d81c538966d03fb9318a4588a9e803b44.tar.gz
bcfg2-dab1d03d81c538966d03fb9318a4588a9e803b44.tar.bz2
bcfg2-dab1d03d81c538966d03fb9318a4588a9e803b44.zip
Allow to run directly from a git checkout (#1037)
Signed-off-by: Sol Jerome <sol.jerome@gmail.com>
Diffstat (limited to 'src/lib/Client/Tools/SYSV.py')
-rw-r--r--src/lib/Client/Tools/SYSV.py105
1 files changed, 0 insertions, 105 deletions
diff --git a/src/lib/Client/Tools/SYSV.py b/src/lib/Client/Tools/SYSV.py
deleted file mode 100644
index eb4a13dfb..000000000
--- a/src/lib/Client/Tools/SYSV.py
+++ /dev/null
@@ -1,105 +0,0 @@
-"""This provides bcfg2 support for Solaris SYSV packages."""
-
-import tempfile
-
-import Bcfg2.Client.Tools
-import Bcfg2.Client.XML
-
-
-noask = '''
-mail=
-instance=overwrite
-partial=nocheck
-runlevel=nocheck
-idepend=nocheck
-rdepend=nocheck
-space=ask
-setuid=nocheck
-conflict=nocheck
-action=nocheck
-basedir=default
-'''
-
-
-class SYSV(Bcfg2.Client.Tools.PkgTool):
- """Solaris SYSV package support."""
- __execs__ = ["/usr/sbin/pkgadd", "/usr/bin/pkginfo"]
- __handles__ = [('Package', 'sysv')]
- __req__ = {'Package': ['name', 'version']}
- __ireq__ = {'Package': ['name', 'url', 'version']}
- name = 'SYSV'
- pkgtype = 'sysv'
- pkgtool = ("/usr/sbin/pkgadd %s -n -d %%s", (('%s %s', ['url', 'name'])))
-
- def __init__(self, logger, setup, config):
- Bcfg2.Client.Tools.PkgTool.__init__(self, logger, setup, config)
- # noaskfile needs to live beyond __init__ otherwise file is removed
- self.noaskfile = tempfile.NamedTemporaryFile()
- self.noaskname = self.noaskfile.name
- try:
- self.noaskfile.write(noask)
- # flush admin file contents to disk
- self.noaskfile.flush()
- self.pkgtool = (self.pkgtool[0] % ("-a %s" % (self.noaskname)), \
- self.pkgtool[1])
- except:
- self.pkgtool = (self.pkgtool[0] % (""), self.pkgtool[1])
-
- def RefreshPackages(self):
- """Refresh memory hashes of packages."""
- self.installed = {}
- # Build list of packages
- lines = self.cmd.run("/usr/bin/pkginfo -x")[1]
- while lines:
- # Splitting on whitespace means that packages with spaces in
- # their version numbers don't work right. Found this with
- # IBM TSM software with package versions like
- # "Version 6 Release 1 Level 0.0"
- # Should probably be done with a regex but this works.
- version = lines.pop().split(') ')[1]
- pkg = lines.pop().split()[0]
- self.installed[pkg] = version
-
- def VerifyPackage(self, entry, modlist):
- """Verify Package status for entry."""
- if not entry.get('version'):
- self.logger.info("Insufficient information of Package %s; cannot Verify" % entry.get('name'))
- return False
-
- desiredVersion = entry.get('version')
- if desiredVersion == 'any':
- desiredVersion = self.installed.get(entry.get('name'), desiredVersion)
-
- cmdrc = self.cmd.run("/usr/bin/pkginfo -q -v \"%s\" %s" % \
- (desiredVersion, entry.get('name')))[0]
-
- if cmdrc != 0:
- if entry.get('name') in self.installed:
- self.logger.debug("Package %s version incorrect: have %s want %s" \
- % (entry.get('name'), self.installed[entry.get('name')],
- desiredVersion))
- else:
- self.logger.debug("Package %s not installed" % (entry.get("name")))
- else:
- if self.setup['quick'] or entry.attrib.get('verify', 'true') == 'false':
- return True
- (vstat, odata) = self.cmd.run("/usr/sbin/pkgchk -n %s" % (entry.get('name')))
- if vstat == 0:
- return True
- else:
- output = [line for line in odata if line[:5] == 'ERROR']
- if len([name for name in output if name.split()[-1] not in modlist]):
- self.logger.debug("Package %s content verification failed" % \
- (entry.get('name')))
- else:
- return True
- return False
-
- def RemovePackages(self, packages):
- """Remove specified Sysv packages."""
- names = [pkg.get('name') for pkg in packages]
- self.logger.info("Removing packages: %s" % (names))
- self.cmd.run("/usr/sbin/pkgrm -a %s -n %s" % \
- (self.noaskname, names))
- self.RefreshPackages()
- self.extra = self.FindExtraPackages()