From dca2eaa01c3b659c4c6a242937c7f32f0f314a47 Mon Sep 17 00:00:00 2001 From: Sahil Sabharwal Date: Thu, 22 Dec 2016 16:57:30 -0800 Subject: [PATCH] Deletion of RI object in try and except block When RoutAggregate/RoutePolicy object is already deleted; delletion of RI object shouldn't raise a NoIdError exception. Change-Id: I592a6e04231a6bfa1cf67532aab6997fd979d43b Closes-Bug: 1651980 (cherry picked from commit 3d5c95a682ce380b06c0e51f8d9e711973ba4eb6) --- src/config/schema-transformer/config_db.py | 28 +++++++++++++++------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/config/schema-transformer/config_db.py b/src/config/schema-transformer/config_db.py index cc45d4be2e6..4e0c37a1c6a 100644 --- a/src/config/schema-transformer/config_db.py +++ b/src/config/schema-transformer/config_db.py @@ -2285,19 +2285,26 @@ def delete_obj(self): if rp: rp.delete_routing_instance(self) else: - rp_obj = RoutingPolicyST.read_vnc_obj(fq_name=rp_name) - if rp_obj: - rp_obj.del_routing_instance(self.obj) - self._vnc_lib.routing_policy_update(rp_obj) + try: + rp_obj = RoutingPolicyST.read_vnc_obj(fq_name=rp_name) + if rp_obj: + rp_obj.del_routing_instance(self.obj) + self._vnc_lib.routing_policy_update(rp_obj) + except NoIdError: + pass for ra_name in self.route_aggregates: ra = RouteAggregateST.get(ra_name) if ra: ra.delete_routing_instance(self) else: - ra_obj = RouteAggregateST.read_vnc_obj(fq_name=ra_name) - if ra_obj: - ra_obj.del_routing_instance(self.obj) - self._vnc_lib.route_aggregate_update(ra_obj) + try: + ra_obj = RouteAggregateST.read_vnc_obj(fq_name=ra_name) + if ra_obj: + ra_obj.del_routing_instance(self.obj) + self._vnc_lib.route_aggregate_update(ra_obj) + except NoIdError: + pass + self.routing_policys = {} self.route_aggregates = set() bgpaas_server_name = self.obj.get_fq_name_str() + ':bgpaas-server' @@ -4167,7 +4174,10 @@ def delete_routing_instance(self, ri): return self.obj.set_aggregate_route_nexthop(None) self.obj.set_routing_instance_list([]) - self._vnc_lib.route_aggregate_update(self.obj) + try: + self._vnc_lib.route_aggregate_update(self.obj) + except NoIdError: + pass self.routing_instances.discard(ri.name) # end delete_routing_instance