diff options
Diffstat (limited to 'src/sbin/Bcfg2Server')
-rw-r--r-- | src/sbin/Bcfg2Server | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/sbin/Bcfg2Server b/src/sbin/Bcfg2Server index 9ed19ce66..467d1c361 100644 --- a/src/sbin/Bcfg2Server +++ b/src/sbin/Bcfg2Server @@ -15,7 +15,7 @@ from ConfigParser import ConfigParser from elementtree.ElementTree import Element from Bcfg2.Server.Core import Core -from Bcfg2.Server.Metadata import MetadataStore +from Bcfg2.Server.Metadata import MetadataStore, MetadataConsistencyError from Bcfg2.Server.Statistics import Statistics from sss.daemonize import daemonize @@ -95,11 +95,15 @@ class BcfgServer(Server): return Element("error", type='host resolution error') t = time() config = Element("Configuration", version='2.0') - # get metadata for host - if xml.attrib.has_key("profile") and xml.attrib.has_key("image"): - m = self.metadata.FetchMetadata(client, image=xml.attrib['image'], profile=xml.attrib['profile']) - else: - m = self.metadata.FetchMetadata(client) + try: + # get metadata for host + if xml.attrib.has_key("profile") and xml.attrib.has_key("image"): + m = self.metadata.FetchMetadata(client, image=xml.attrib['image'], profile=xml.attrib['profile']) + else: + m = self.metadata.FetchMetadata(client) + except MetadataConsistencyError: + syslog(LOG_ERR, "Metadata consistency error for client %s" % client) + return Element("error", type='metadata error') config.set('toolset', m.toolset) try: @@ -123,7 +127,10 @@ class BcfgServer(Server): client = gethostbyaddr(peer)[0].split('.')[0] except herror: return Element("error", type='host resolution error') - m = self.metadata.FetchMetadata(client) + try: + m = self.metadata.FetchMetadata(client) + except MetadataConsistencyError: + return Element("error", type='metadata resolution error') for g in self.core.generators: for p in g.get_probes(m): r.append(p) |