From 8907fa0879422d1845813772765469b101fea216 Mon Sep 17 00:00:00 2001 From: James Yang Date: Tue, 30 Jun 2009 20:31:14 +0000 Subject: Changed how bcfg2-admin init handles plugins and added update_client to metadata for changes in 5305 git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5306 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Plugins/Metadata.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/lib/Server/Plugins') diff --git a/src/lib/Server/Plugins/Metadata.py b/src/lib/Server/Plugins/Metadata.py index 29c64984a..df6e571e0 100644 --- a/src/lib/Server/Plugins/Metadata.py +++ b/src/lib/Server/Plugins/Metadata.py @@ -99,6 +99,14 @@ class Metadata(Bcfg2.Server.Plugin.Plugin, self.get_client_names_by_profiles, self.get_all_group_names) + @classmethod + def init_repo(self, repo): + Bcfg2.Server.Plugin.init_repo(repo) + open("%s/Metadata/groups.xml" % + repo, "w").write(groups % os_selection) + open("%s/Metadata/clients.xml" % + repo, "w").write(clients % socket.getfqdn()) + def get_groups(self): '''return groups xml tree''' groups_tree = lxml.etree.parse(self.data + "/groups.xml") @@ -162,6 +170,28 @@ class Metadata(Bcfg2.Server.Plugin.Plugin, fcntl.lockf(fd, fcntl.LOCK_UN) client_tree.close() + def update_client(self, client_name, attribs): + '''Update a client's attributes''' + tree = lxml.etree.parse(self.data + "/clients.xml") + root = tree.getroot() + node = self.search_client(client_name, tree) + if node == None: + self.logger.error("Client \"%s\" not found" % (client_name)) + raise MetadataConsistencyError + node.attrib.update(attribs) + client_tree = open(self.data + "/clients.xml","w") + fd = client_tree.fileno() + while True: + try: + fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB) + except IOError: + continue + else: + break + tree.write(client_tree) + fcntl.lockf(fd, fcntl.LOCK_UN) + client_tree.close() + def HandleEvent(self, event): '''Handle update events for data files''' filename = event.filename.split('/')[-1] -- cgit v1.2.3-1-g7c22