summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-10-26 13:33:52 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-10-26 13:34:37 -0400
commit10589a2586e06c14f53c676e7121e04225352a80 (patch)
tree2af6ca36251b0f7c30f988d8b090e060656e7693 /src
parentb3ca0205e83f178d5bd785676412424dd32391b4 (diff)
downloadbcfg2-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.py17
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.) """