From 4d9ce8958402cb80660264eb9d13ef71a0e146f7 Mon Sep 17 00:00:00 2001 From: Gary Kotton Date: Thu, 28 Apr 2016 22:30:16 -0700 Subject: [PATCH] NSX|V: validate result before return IP Ensures that ports exist before reading the port 'ip_address'. Change-Id: I8fd02a61a9f755437e4fb8b93a2d55728d53aa86 Closes-bug: #1576516 --- vmware_nsx/plugins/nsx_v/md_proxy.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/vmware_nsx/plugins/nsx_v/md_proxy.py b/vmware_nsx/plugins/nsx_v/md_proxy.py index 9059869037..4a608b90cb 100644 --- a/vmware_nsx/plugins/nsx_v/md_proxy.py +++ b/vmware_nsx/plugins/nsx_v/md_proxy.py @@ -196,11 +196,14 @@ class NsxVMetadataProxyHandler: return internal_net, internal_subnet def _get_edge_internal_ip(self, rtr_id): - filters = { - 'network_id': [self.internal_net], - 'device_id': [rtr_id]} - ports = self.nsxv_plugin.get_ports(self.context, filters=filters) + filters = { + 'network_id': [self.internal_net], + 'device_id': [rtr_id]} + ports = self.nsxv_plugin.get_ports(self.context, filters=filters) + if ports: return ports[0]['fixed_ips'][0]['ip_address'] + else: + LOG.error(_LE("No port found for metadata for %s"), rtr_id) def _get_edge_rtr_id_by_ext_ip(self, edge_ip): rtr_list = nsxv_db.get_nsxv_internal_edge(