diff options
author | Narayan Desai <desai@mcs.anl.gov> | 2007-12-29 04:57:53 +0000 |
---|---|---|
committer | Narayan Desai <desai@mcs.anl.gov> | 2007-12-29 04:57:53 +0000 |
commit | 3610288cbcbf4d1adedefa03166cd77ee15aad96 (patch) | |
tree | 1588fb78ae1c6e51e4e4ea2dab46a006a3ece0d3 /src/lib/Server/Admin/Client.py | |
parent | 6bf7875bc299a1f81061782c8646c90972e06e5a (diff) | |
download | bcfg2-3610288cbcbf4d1adedefa03166cd77ee15aad96.tar.gz bcfg2-3610288cbcbf4d1adedefa03166cd77ee15aad96.tar.bz2 bcfg2-3610288cbcbf4d1adedefa03166cd77ee15aad96.zip |
Refactor of bcfg2-admin (all modes moved to discrete modules in Bcfg2.Server.Admin
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4125 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Admin/Client.py')
-rw-r--r-- | src/lib/Server/Admin/Client.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/lib/Server/Admin/Client.py b/src/lib/Server/Admin/Client.py new file mode 100644 index 000000000..677e38c2c --- /dev/null +++ b/src/lib/Server/Admin/Client.py @@ -0,0 +1,46 @@ +import lxml.etree + +import Bcfg2.Server.Admin + +class Client(Bcfg2.Server.Admin.Mode): + __shorthelp__ = 'bcfg2-admin client add <client> attr1=val1 attr2=val2\nbcfg2-admin client del <client>' + __longhelp__ = __shorthelp__ + '\n\tCreate or delete client entries' + def __init__(self, configfile): + Bcfg2.Server.Admin.Mode.__init__(self, configfile) + self.tree = lxml.etree.parse(self.get_repo_path() + \ + '/Metadata/clients.xml') + self.root = self.tree.getroot() + + def __call__(self, args): + Bcfg2.Server.Admin.Mode.__call__(self, args) + repopath = self.get_repo_path() + if args[0] == 'add': + attr_d = {} + for i in args[1:]: + attr, val = i.split('=', 1) + if attr not in ['profile', 'uuid', 'password', 'address', + 'secure', 'location']: + print "Attribute %s unknown" % attr + raise SystemExit(1) + attr_d[attr] = val + self.AddClient(args[1], attr_d) + elif args[0] in ['delete', 'remove', 'del', 'rm']: + self.DelClient(args[1]) + else: + print "No command specified" + raise SystemExit(1) + self.tree.write(repopath + '/Metadata/clients.xml') + + def AddClient(self, client, attrs): + '''add a new client''' + # FIXME add a dup client check + element = lxml.etree.Element("Client", name=client) + for key, val in attrs.iteritems(): + element.set(key, val) + self.root.append(element) + + def DelClient(self, client): + '''delete an existing client''' + # FIXME DelClient not implemented + pass + |