From 31733381b3c2479f79a32a9ecab3ea7ded4d0e8b Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Fri, 25 Apr 2008 12:23:31 +0000 Subject: auto-reformat server fingerprint if needed (Resolves Ticket #546) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4560 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Options.py | 3 ++- src/lib/Server/Admin/Client.py | 13 +++++++++---- src/lib/Server/Plugins/Metadata.py | 4 ++-- 3 files changed, 13 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/lib/Options.py b/src/lib/Options.py index f52c8bea8..92a71eaf7 100644 --- a/src/lib/Options.py +++ b/src/lib/Options.py @@ -155,6 +155,7 @@ class OptionSet(dict): self[key] = val list_split = lambda x:x.replace(' ','').split(',') +flist_split = lambda x:list_split(x.replace(':', '').lower()) def colon_split(c_string): if c_string: return c_string.split(':') @@ -223,7 +224,7 @@ CLIENT_FILE = Option('configure from a file rather than querying the server', default=False, cmd='-f', odesc='') SERVER_FINGERPRINT = Option('Server Fingerprint', default=[], cmd='-F', cf=('communication', 'fingerprint'), - odesc='', cook=list_split) + odesc='', cook=flist_split) CLIENT_QUICK = Option('disable some checksum verification', default=False, cmd='-q', ) CLIENT_BACKGROUND = Option('Daemonize the agent', default=False, cmd='-i', ) diff --git a/src/lib/Server/Admin/Client.py b/src/lib/Server/Admin/Client.py index 682c12013..9d75a6ab3 100644 --- a/src/lib/Server/Admin/Client.py +++ b/src/lib/Server/Admin/Client.py @@ -7,10 +7,15 @@ class Client(Bcfg2.Server.Admin.Mode): __longhelp__ = __shorthelp__ + '\n\tCreate or delete client entries' def __init__(self): Bcfg2.Server.Admin.Mode.__init__(self) - self.tree = lxml.etree.parse(self.get_repo_path() + \ - '/Metadata/clients.xml') - self.root = self.tree.getroot() - + try: + self.bcore = Bcfg2.Server.Core.Core(self.repo, [], ['Metadata'], + 'foo', False) + except Bcfg2.Server.Core.CoreInitError, msg: + self.errExit("Core load failed because %s" % msg) + [bcore.fam.Service() for _ in range(5)] + while bcore.fam.Service(): + pass + def __call__(self, args): Bcfg2.Server.Admin.Mode.__call__(self, args) if args[0] == 'add': diff --git a/src/lib/Server/Plugins/Metadata.py b/src/lib/Server/Plugins/Metadata.py index beaa1cc81..25a6bad1e 100644 --- a/src/lib/Server/Plugins/Metadata.py +++ b/src/lib/Server/Plugins/Metadata.py @@ -31,7 +31,7 @@ class ClientMetadata(object): class ProbeSet(Bcfg2.Server.Plugin.EntrySet): def __init__(self, path, fam): - fpattern = '[A-Za-z]+' + fpattern = '[A-Za-z_\-]+' Bcfg2.Server.Plugin.EntrySet.__init__(self, fpattern, path, True, Bcfg2.Server.Plugin.SpecificData) fam.AddMonitor(path, self) @@ -262,7 +262,7 @@ class Metadata(Bcfg2.Server.Plugin.Plugin): try: datafile = open("%s/%s" % (self.data, 'probed.xml'), 'w') except IOError: - self.logger.error("Failed to write clients.xml") + self.logger.error("Failed to write probed.xml") raise MetadataRuntimeError datafile.write(data) self.pdirty = False -- cgit v1.2.3-1-g7c22