From 4042b286a9fc25b9d4b5dbaf2a597b0bf804d9b5 Mon Sep 17 00:00:00 2001 From: Shih-Hao Li Date: Fri, 27 May 2016 10:51:07 -0700 Subject: [PATCH] Update name of backend ports when router name is changed Because router name is part of the name of associated logical router link ports in the backend, they need to be updated when users rename a router. Change-Id: I3cad4d6c53151ae856f57a65522548d81e13ad98 --- vmware_nsx/plugins/nsx_v3/plugin.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/vmware_nsx/plugins/nsx_v3/plugin.py b/vmware_nsx/plugins/nsx_v3/plugin.py index 13f9ec6fd0..f9d3874c4c 100644 --- a/vmware_nsx/plugins/nsx_v3/plugin.py +++ b/vmware_nsx/plugins/nsx_v3/plugin.py @@ -1624,11 +1624,24 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin, for route in routes_added: self._routerlib.add_static_routes(nsx_router_id, route) if 'name' in router_data: - name = utils.get_name_and_uuid(router_data['name'] or 'router', - router_id) + # Update the name of logical router. + router_name = router_data['name'] or 'router' + display_name = utils.get_name_and_uuid(router_name, router_id) nsx_router_id = nsx_router_id or nsx_db.get_nsx_router_id( context.session, router_id) - self._router_client.update(nsx_router_id, display_name=name) + self._router_client.update(nsx_router_id, + display_name=display_name) + # Update the name of associated logical ports. + filters = {'device_id': [router_id], + 'device_owner': const.ROUTER_INTERFACE_OWNERS} + ports = self.get_ports(context, filters=filters) + for port in ports: + _, nsx_port_id = nsx_db.get_nsx_switch_and_port_id( + context.session, port['id']) + if nsx_port_id: + name = utils.get_name_and_uuid( + router_name, port['id'], tag='port') + self._port_client.update(nsx_port_id, None, name=name) return super(NsxV3Plugin, self).update_router( context, router_id, router) except nsx_exc.ResourceNotFound: