From db7381a9dc6307ea47642b9496bdd4c3940e91cb Mon Sep 17 00:00:00 2001 From: Ted Ghose Date: Thu, 28 May 2015 00:22:38 -0700 Subject: [PATCH] Fix restart and empty prouter name Change-Id: Idda0a2a5a9ecbae3a2b482178493e59a283b1849 Closes-Bug: #1456981 Closes-Bug: #1451687 --- .../contrail_snmp_collector/snmpctrlr.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/analytics/contrail-snmp-collector/contrail_snmp_collector/snmpctrlr.py b/src/analytics/contrail-snmp-collector/contrail_snmp_collector/snmpctrlr.py index 11d7d5c7af1..166d72440e7 100644 --- a/src/analytics/contrail-snmp-collector/contrail_snmp_collector/snmpctrlr.py +++ b/src/analytics/contrail-snmp-collector/contrail_snmp_collector/snmpctrlr.py @@ -54,6 +54,7 @@ def __init__(self, config): self._mnt = MaxNinTtime(3, self._sleep_time) self._state = 'full_scan' # replace it w/ fsm self._if_data = None # replace it w/ fsm + self._cleanup = None def _make_if_cdata(self, data): if_cdata = {} @@ -190,8 +191,11 @@ def _create_input(self, input_file, output_file, devices, i, restrict=None): def _run_scanner(self, input_file, output_file, i): proc = subprocess.Popen('contrail-snmp-scanner --input %s' % ( input_file), shell=True, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + close_fds=True) + self._cleanup = (proc, output_file) o,e = proc.communicate() + self._cleanup = None self._logger.debug('@run_scanner(%d): scan done with %d\nstdout:' \ '\n%s\nstderr:\n%s\n' % (i, proc.returncode, o, e)) with open(output_file, 'rb') as f: @@ -206,10 +210,11 @@ def _cleanup_io(self, cdir, input_file, output_file): def _send_uve(self, d): for dev, data in d.items(): - self.uve.send(data['snmp']) - self.uve.send_flow_uve({'name': dev, - 'flow_export_source_ip': data['flow_export_source_ip']}) - self.find_fix_name(data['name'], dev) + if dev: + self.uve.send(data['snmp']) + self.uve.send_flow_uve({'name': dev, + 'flow_export_source_ip': data['flow_export_source_ip']}) + self.find_fix_name(data['name'], dev) self._logger.debug('@send_uve:Processed %d!' % (len(d))) def _del_uves(self, l):