diff options
Diffstat (limited to 'src/sbin')
-rwxr-xr-x | src/sbin/bcfg2-server | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/sbin/bcfg2-server b/src/sbin/bcfg2-server index aeec85cbf..1035e5f41 100755 --- a/src/sbin/bcfg2-server +++ b/src/sbin/bcfg2-server @@ -144,15 +144,20 @@ class Bcfg2Serv(Bcfg2.Server.Component.Component): def Bcfg2RecvProbeData(self, address, probedata): '''Receive probe data from clients''' client = self.resolve_client(address[0]) - - for data in probedata: - try: - [generator] = [gen for gen in self.Core.generators if gen.__name__ == data.get('source')] - generator.ReceiveData(client, data) - except IndexError: + try: + xpdata = XML(probedata) + except: + self.logger.error("Failed to parse probe data from client %s" % (client)) + return False + + for data in xpdata: + if self.Core.Plugins.has_key(data.get('source')): + try: + self.Core.Plugins[data.get('source')].ReceiveData(client, data) + except: + self.logger.error("Failed to process probe data from client %s" % (client), exc_info=1) + else: self.logger.warning("Failed to locate plugin %s" % (data.get('source'))) - except: - critical_error('error in probe data receipt') return True def Bcfg2AssertProfile(self, address, profile): |