diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-10-26 13:33:52 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-10-26 13:34:37 -0400 |
commit | 10589a2586e06c14f53c676e7121e04225352a80 (patch) | |
tree | 2af6ca36251b0f7c30f988d8b090e060656e7693 /src | |
parent | b3ca0205e83f178d5bd785676412424dd32391b4 (diff) | |
download | bcfg2-10589a2586e06c14f53c676e7121e04225352a80.tar.gz bcfg2-10589a2586e06c14f53c676e7121e04225352a80.tar.bz2 bcfg2-10589a2586e06c14f53c676e7121e04225352a80.zip |
better error handling when adding a client
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/Bcfg2/Server/Plugins/Metadata.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Metadata.py b/src/lib/Bcfg2/Server/Plugins/Metadata.py index ae268d8b7..5b552a01f 100644 --- a/src/lib/Bcfg2/Server/Plugins/Metadata.py +++ b/src/lib/Bcfg2/Server/Plugins/Metadata.py @@ -504,14 +504,16 @@ class Metadata(Bcfg2.Server.Plugin.Metadata, """ Generic method to add XML data (group, client, etc.) """ node = self._search_xdata(tag, name, config.xdata, alias=alias) if node != None: - self.logger.error("%s \"%s\" already exists" % (tag, name)) - raise Bcfg2.Server.Plugin.MetadataConsistencyError + raise Bcfg2.Server.Plugin.MetadataConsistencyError("%s \"%s\" " + "already exists" + % (tag, name)) element = lxml.etree.SubElement(config.base_xdata.getroot(), tag, name=name) if attribs: for key, val in list(attribs.items()): element.set(key, val) config.write() + return element def add_group(self, group_name, attribs): """Add group to groups.xml.""" @@ -544,8 +546,15 @@ class Metadata(Bcfg2.Server.Plugin.Metadata, self.clients = self.list_clients() return client else: - return self._add_xdata(self.clients_xml, "Client", client_name, - attribs=attribs, alias=True) + try: + return self._add_xdata(self.clients_xml, "Client", client_name, + attribs=attribs, alias=True) + except Bcfg2.Server.Plugin.MetadataConsistencyError: + # already exists + err = sys.exc_info()[1] + self.logger.info(err) + return self._search_xdata("Client", client_name, + self.clients_xml.xdata, alias=True) def _update_xdata(self, config, tag, name, attribs, alias=False): """ Generic method to modify XML data (group, client, etc.) """ |