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.db import nsxv_models
|
||||||
from vmware_nsx.extensions import dhcp_mtu as ext_dhcp_mtu
|
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.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
|
from vmware_nsx.plugins.nsx_v.vshield.common import constants
|
||||||
|
|
||||||
NsxvEdgeDhcpStaticBinding = nsxv_models.NsxvEdgeDhcpStaticBinding
|
NsxvEdgeDhcpStaticBinding = nsxv_models.NsxvEdgeDhcpStaticBinding
|
||||||
@ -379,7 +380,8 @@ def create_nsxv_internal_network(session, network_purpose,
|
|||||||
'az': availability_zone})
|
'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):
|
with session.begin(subtransactions=True):
|
||||||
net_list = (session.query(nsxv_models.NsxvInternalNetworks).
|
net_list = (session.query(nsxv_models.NsxvInternalNetworks).
|
||||||
filter_by(network_purpose=network_purpose,
|
filter_by(network_purpose=network_purpose,
|
||||||
@ -387,16 +389,23 @@ def get_nsxv_internal_network(session, network_purpose, availability_zone):
|
|||||||
if net_list:
|
if net_list:
|
||||||
# Should have only one results as purpose+az are the keys
|
# Should have only one results as purpose+az are the keys
|
||||||
return net_list[0]
|
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
|
# 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).
|
net_list = (session.query(nsxv_models.NsxvInternalNetworks).
|
||||||
filter_by(network_purpose=network_purpose,
|
filter_by(network_purpose=network_purpose,
|
||||||
availability_zone='default').all())
|
availability_zone=nsx_az.DEFAULT_NAME).all())
|
||||||
if net_list:
|
if net_list:
|
||||||
return net_list[0]
|
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):
|
def get_nsxv_internal_networks(session, network_purpose):
|
||||||
with session.begin(subtransactions=True):
|
with session.begin(subtransactions=True):
|
||||||
return (session.query(nsxv_models.NsxvInternalNetworks).
|
return (session.query(nsxv_models.NsxvInternalNetworks).
|
||||||
|
@ -156,7 +156,7 @@ class NsxVMetadataProxyHandler(object):
|
|||||||
|
|
||||||
def _get_internal_net_by_az(self, context):
|
def _get_internal_net_by_az(self, context):
|
||||||
# Get the internal network for the current az
|
# 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,
|
context.session,
|
||||||
vcns_const.InternalEdgePurposes.INTER_EDGE_PURPOSE,
|
vcns_const.InternalEdgePurposes.INTER_EDGE_PURPOSE,
|
||||||
self.az.name)
|
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)
|
LOG.info("Updating MetaData for availability zone: %s", az.name)
|
||||||
|
|
||||||
# Get the list of internal networks for this AZ
|
# 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,
|
edgeapi.context.session,
|
||||||
vcns_constants.InternalEdgePurposes.INTER_EDGE_PURPOSE,
|
vcns_constants.InternalEdgePurposes.INTER_EDGE_PURPOSE,
|
||||||
az.name)
|
az.name)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user