root/trunk/bcfg2/src/lib/Client/Tools/Encap.py

Revision 5178, 2.1 KB (checked in by solj, 7 months ago)

Python 2to3 updates for the Client tools

Signed-off-by: Sol Jerome <solj@…>

  • Property svn:keywords set to Id Revision
Line 
1'''Bcfg2 Support for Encap Packages'''
2
3__revision__ = '$Revision$'
4
5import glob
6import re
7import Bcfg2.Client.Tools
8
9class Encap(Bcfg2.Client.Tools.PkgTool):
10    '''Support for Encap packages'''
11    name = 'Encap'
12    __execs__ = ['/usr/local/bin/epkg']
13    __handles__ = [('Package', 'encap')]
14    __req__ = {'Package': ['version', 'url']}
15    pkgtype = 'encap'
16    pkgtool = ("/usr/local/bin/epkg -l -f -q %s", ("%s", ["url"]))
17    splitter = re.compile('.*/(?P<name>[\w-]+)\-(?P<version>[\w\.+-]+)')
18
19# If you define self.pkgtool and self.pkgname it will [use] the Pkgtool.Install
20# method will do the installation stuff for you
21
22    def RefreshPackages(self):
23        '''Try to find encap packages'''
24        self.installed = {}
25        for pkg in glob.glob("/usr/local/encap/*"):
26            match = self.splitter.match(pkg)
27            if match:
28                self.installed[match.group('name')] = match.group('version')
29            else:
30                print("Failed to split name %s" % pkg)
31        self.logger.debug("Encap.py: RefreshPackages: self.installed.keys() are:")
32        self.logger.debug("%s" % list(self.installed.keys()))
33
34    def VerifyPackage(self, entry, _):
35        '''Verify Package status for entry'''
36        if not entry.get('version'):
37            self.logger.info("Insufficient information of Package %s; cannot Verify" % entry.get('name'))
38            return False
39        cmdrc = self.cmd.run("/usr/local/bin/epkg -q -S -k %s-%s >/dev/null" %
40                            (entry.get('name'), entry.get('version')))[0]
41        if cmdrc != 0:
42            self.logger.debug("Package %s version incorrect" % entry.get('name'))
43        else:
44            return True
45        return False
46
47    # Can use the FindExtraPackages method from Bcfg2.Client.Tools.PkgTool
48
49    def RemovePackages(self, packages):
50        '''Deal with extra configuration detected'''
51        names = " ".join([pkg.get('name') for pkg in packages])
52        self.logger.info("Removing packages: %s" % (names))
53        self.cmd.run("/usr/local/bin/epkg -l -q -r %s" % (names))
54        self.RefreshPackages()
55        self.extra = self.FindExtraPackages()
Note: See TracBrowser for help on using the browser.