NSX|v: get internal net by az fix

getting the internal network per availability zone has a fallback to the
default az which should not always be used.
This patch creates a version of this db api without a fallback and uses
it when we shouldn't use the default az.

Change-Id: I2ec37e431fa08c80c19c32a50ed4e5a71222b0c2
This commit is contained in:
Adit Sarfaty 2017-08-16 11:07:27 +03:00
parent 0169a508a0
commit 8304b2a28a
3 changed files with 15 additions and 6 deletions

View File

@ -34,6 +34,7 @@ from vmware_nsx.db import db as nsx_db
from vmware_nsx.db import nsxv_models
from vmware_nsx.extensions import dhcp_mtu as ext_dhcp_mtu
from vmware_nsx.extensions import dns_search_domain as ext_dns_search_domain
from vmware_nsx.plugins.nsx_v import availability_zones as nsx_az
from vmware_nsx.plugins.nsx_v.vshield.common import constants
NsxvEdgeDhcpStaticBinding = nsxv_models.NsxvEdgeDhcpStaticBinding
@ -379,7 +380,8 @@ def create_nsxv_internal_network(session, network_purpose,
'az': availability_zone})
def get_nsxv_internal_network(session, network_purpose, availability_zone):
def get_nsxv_internal_network(session, network_purpose, availability_zone,
default_fallback=True):
with session.begin(subtransactions=True):
net_list = (session.query(nsxv_models.NsxvInternalNetworks).
filter_by(network_purpose=network_purpose,
@ -387,16 +389,23 @@ def get_nsxv_internal_network(session, network_purpose, availability_zone):
if net_list:
# Should have only one results as purpose+az are the keys
return net_list[0]
else:
elif default_fallback and availability_zone != nsx_az.DEFAULT_NAME:
# try the default availability zone, since this zone does not
# have his own
# have his own internal edge
net_list = (session.query(nsxv_models.NsxvInternalNetworks).
filter_by(network_purpose=network_purpose,
availability_zone='default').all())
availability_zone=nsx_az.DEFAULT_NAME).all())
if net_list:
return net_list[0]
def get_nsxv_internal_network_for_az(session, network_purpose,
availability_zone):
return get_nsxv_internal_network(session, network_purpose,
availability_zone,
default_fallback=False)
def get_nsxv_internal_networks(session, network_purpose):
with session.begin(subtransactions=True):
return (session.query(nsxv_models.NsxvInternalNetworks).

View File

@ -156,7 +156,7 @@ class NsxVMetadataProxyHandler(object):
def _get_internal_net_by_az(self, context):
# Get the internal network for the current az
int_net = nsxv_db.get_nsxv_internal_network(
int_net = nsxv_db.get_nsxv_internal_network_for_az(
context.session,
vcns_const.InternalEdgePurposes.INTER_EDGE_PURPOSE,
self.az.name)

View File

@ -59,7 +59,7 @@ def nsx_redo_metadata_cfg_for_az(az, edgeapi):
LOG.info("Updating MetaData for availability zone: %s", az.name)
# Get the list of internal networks for this AZ
db_net = nsxv_db.get_nsxv_internal_network(
db_net = nsxv_db.get_nsxv_internal_network_for_az(
edgeapi.context.session,
vcns_constants.InternalEdgePurposes.INTER_EDGE_PURPOSE,
az.name)