From d100b1fd797849370c036336007f318617fa9aeb Mon Sep 17 00:00:00 2001 From: Ted Ghose Date: Tue, 17 May 2016 12:24:38 -0700 Subject: [PATCH] contrail-topology shown to have "failed" Connection error is not properly handeled - Captured exception Change-Id: I11d125caeb5cfc088bc723c11b7aaa70c8446f93 Closes-Bug: 1565169 --- .../contrail_topology/analytic_client.py | 25 +++++++++++++++---- .../contrail_topology/controller.py | 25 +++++++++++++++---- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/analytics/contrail-topology/contrail_topology/analytic_client.py b/src/analytics/contrail-topology/contrail_topology/analytic_client.py index f982b7f2979..56dc4e21fc3 100644 --- a/src/analytics/contrail-topology/contrail_topology/analytic_client.py +++ b/src/analytics/contrail-topology/contrail_topology/analytic_client.py @@ -50,8 +50,13 @@ def get_uve_url(self): def get_uves(self, ob=None, defult=None, refresh=False): if not self._uves or refresh: - self._uves = self._get_list_2_dict(self._get_url_json( + try: + self._uves = self._get_list_2_dict(self._get_url_json( self.get_uve_url())) + except Exception as e: + import traceback; traceback.print_exc() + print str(e) + self._uves = None if ob is None: return self._uves if self._uves: @@ -60,8 +65,13 @@ def get_uves(self, ob=None, defult=None, refresh=False): def get_vrouters(self, refresh=False): if self._vrouters is None or refresh: - self._vrouters = self._get_list_2_dict(self._get_url_json( - self.get_uves('vrouters', refresh=refresh))) + try: + self._vrouters = self._get_list_2_dict(self._get_url_json( + self.get_uves('vrouters', refresh=refresh))) + except Exception as e: + import traceback; traceback.print_exc() + print str(e) + self._vrouters = None return self._vrouters def list_vrouters(self): @@ -76,8 +86,13 @@ def get_vrouter(self, vrouter, filters=None): def get_prouters(self, refresh=False): if self._prouters is None or refresh: - self._prouters = self._get_list_2_dict(self._get_url_json( - self.get_uves('prouters'))) + try: + self._prouters = self._get_list_2_dict(self._get_url_json( + self.get_uves('prouters'))) + except Exception as e: + import traceback; traceback.print_exc() + print str(e) + self._prouters = None return self._prouters def list_prouters(self): diff --git a/src/analytics/contrail-topology/contrail_topology/controller.py b/src/analytics/contrail-topology/contrail_topology/controller.py index 261a1169e7e..cac26433e8b 100644 --- a/src/analytics/contrail-topology/contrail_topology/controller.py +++ b/src/analytics/contrail-topology/contrail_topology/controller.py @@ -40,11 +40,21 @@ def get_vrouters(self): self.vrouter_ips = {} self.vrouter_macs = {} for vr in self.analytic_api.list_vrouters(): - d = self.analytic_api.get_vrouter(vr, 'VrouterAgent:phy_if') + try: + d = self.analytic_api.get_vrouter(vr, 'VrouterAgent:phy_if') + except Exception as e: + traceback.print_exc() + print str(e) + d = {} if 'VrouterAgent' not in d: d['VrouterAgent'] = {} - _ipl = self.analytic_api.get_vrouter(vr, - 'VrouterAgent:self_ip_list') + try: + _ipl = self.analytic_api.get_vrouter(vr, + 'VrouterAgent:self_ip_list') + except Exception as e: + traceback.print_exc() + print str(e) + _ipl = {} if 'VrouterAgent' in _ipl: d['VrouterAgent'].update(_ipl['VrouterAgent']) if 'VrouterAgent' not in d or\ @@ -68,8 +78,12 @@ def get_prouters(self): self.analytic_api.get_prouters(True) self.prouters = [] for pr in self.analytic_api.list_prouters(): - self.prouters.append(PRouter(pr, self.analytic_api.get_prouter( + try: + self.prouters.append(PRouter(pr, self.analytic_api.get_prouter( pr, 'PRouterEntry'))) + except Exception as e: + traceback.print_exc() + print str(e) def _is_linkup(self, prouter, ifindex): if 'PRouterEntry' in prouter.data and \ @@ -110,6 +124,7 @@ def bms_links(self, prouter, ifm): self._vnc = self._config.vnc_api() except: print 'Proceeding without any api-server' + self._vnc = None # refresh if self._vnc: try: for li in self._vnc.logical_interfaces_list()[ @@ -277,7 +292,7 @@ def run(self): self.compute() self.send_uve() except Exception as e: - import traceback; traceback.print_exc() + traceback.print_exc() print str(e) gevent.sleep(self._sleep_time) else: