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:
parent
0169a508a0
commit
8304b2a28a
@ -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).
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user