diff options
Diffstat (limited to 'build/lib/Bcfg2/Server/Admin/__init__.py')
-rw-r--r-- | build/lib/Bcfg2/Server/Admin/__init__.py | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/build/lib/Bcfg2/Server/Admin/__init__.py b/build/lib/Bcfg2/Server/Admin/__init__.py deleted file mode 100644 index bb5c41895..000000000 --- a/build/lib/Bcfg2/Server/Admin/__init__.py +++ /dev/null @@ -1,114 +0,0 @@ -__revision__ = '$Revision$' - -__all__ = ['Mode', 'Client', 'Compare', 'Init', 'Minestruct', 'Perf', - 'Pull', 'Query', 'Reports', 'Snapshots', 'Tidy', 'Viz', - 'Xcmd', 'Group', 'Backup'] - -import ConfigParser -import logging -import lxml.etree -import sys - -import Bcfg2.Server.Core -import Bcfg2.Options - -class ModeOperationError(Exception): - pass - -class Mode(object): - """Help message has not yet been added for mode.""" - __shorthelp__ = 'Shorthelp not defined yet' - __longhelp__ = 'Longhelp not defined yet' - __args__ = [] - def __init__(self, configfile): - self.configfile = configfile - self.__cfp = False - self.log = logging.getLogger('Bcfg2.Server.Admin.Mode') - - def getCFP(self): - if not self.__cfp: - self.__cfp = ConfigParser.ConfigParser() - self.__cfp.read(self.configfile) - return self.__cfp - - cfp = property(getCFP) - - def __call__(self, args): - if len(args) > 0 and args[0] == 'help': - print self.__longhelp__ - raise SystemExit(0) - - def errExit(self, emsg): - print emsg - raise SystemExit(1) - - def get_repo_path(self): - """Return repository path""" - return self.cfp.get('server', 'repository') - - def load_stats(self, client): - stats = lxml.etree.parse("%s/etc/statistics.xml" % - (self.get_repo_path())) - hostent = stats.xpath('//Node[@name="%s"]' % client) - if not hostent: - self.errExit("Could not find stats for client %s" % (client)) - return hostent[0] - - def print_table(self, rows, justify='left', hdr=True, vdelim=" ", padding=1): - """Pretty print a table - - rows - list of rows ([[row 1], [row 2], ..., [row n]]) - hdr - if True the first row is treated as a table header - vdelim - vertical delimiter between columns - padding - # of spaces around the longest element in the column - justify - may be left,center,right - - """ - hdelim = "=" - justify = {'left':str.ljust, - 'center':str.center, - 'right':str.rjust}[justify.lower()] - - """ - Calculate column widths (longest item in each column - plus padding on both sides) - - """ - cols = list(zip(*rows)) - colWidths = [max([len(str(item))+2*padding for \ - item in col]) for col in cols] - borderline = vdelim.join([w*hdelim for w in colWidths]) - - # print out the table - print(borderline) - for row in rows: - print(vdelim.join([justify(str(item), width) for \ - (item, width) in zip(row, colWidths)])) - if hdr: - print(borderline) - hdr = False - -class MetadataCore(Mode): - """Base class for admin-modes that handle metadata.""" - def __init__(self, configfile, usage, pwhitelist=None, pblacklist=None): - Mode.__init__(self, configfile) - options = {'plugins': Bcfg2.Options.SERVER_PLUGINS, - 'configfile': Bcfg2.Options.CFILE} - setup = Bcfg2.Options.OptionParser(options) - setup.hm = usage - setup.parse(sys.argv[1:]) - if pwhitelist is not None: - setup['plugins'] = [x for x in setup['plugins'] if x in pwhitelist] - elif pblacklist is not None: - setup['plugins'] = [x for x in setup['plugins'] if x not in pblacklist] - try: - self.bcore = Bcfg2.Server.Core.Core(self.get_repo_path(), - setup['plugins'], - 'foo', 'UTF-8') - except Bcfg2.Server.Core.CoreInitError, msg: - self.errExit("Core load failed because %s" % msg) - self.bcore.fam.handle_events_in_interval(5) - self.metadata = self.bcore.metadata - -class StructureMode(MetadataCore): - pass |