1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
__revision__ = '$Revision$'
__all__ = ['Mode', 'Client', 'Compare', 'Fingerprint', 'Init', 'Minestruct',
'Pull', 'Query', 'Tidy', 'Viz']
import ConfigParser, lxml.etree, logging
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]
|