Merge "NSX|V3: nsx-provider network bugs fixing"
This commit is contained in:
commit
8f7af6f42e
@ -948,12 +948,14 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
|
|||||||
nsx_net_id)
|
nsx_net_id)
|
||||||
|
|
||||||
rollback_network = True
|
rollback_network = True
|
||||||
|
is_overlay_network = self._is_overlay_network(
|
||||||
|
context, created_net['id'])
|
||||||
if (is_backend_network and
|
if (is_backend_network and
|
||||||
cfg.CONF.nsx_v3.native_dhcp_metadata and
|
cfg.CONF.nsx_v3.native_dhcp_metadata and
|
||||||
self._is_overlay_network(context, created_net['id'])):
|
is_overlay_network):
|
||||||
# Enable native metadata proxy for this network.
|
# Enable native metadata proxy for this network.
|
||||||
tags = self.nsxlib.build_v3_tags_payload(
|
tags = self.nsxlib.build_v3_tags_payload(
|
||||||
net_data, resource_type='os-neutron-net-id',
|
created_net, resource_type='os-neutron-net-id',
|
||||||
project_name=context.tenant_name)
|
project_name=context.tenant_name)
|
||||||
name = utils.get_name_and_uuid('%s-%s' % (
|
name = utils.get_name_and_uuid('%s-%s' % (
|
||||||
'mdproxy', created_net['name'] or 'network'),
|
'mdproxy', created_net['name'] or 'network'),
|
||||||
@ -965,13 +967,19 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
|
|||||||
LOG.debug("Created MD-Proxy logical port %(port)s "
|
LOG.debug("Created MD-Proxy logical port %(port)s "
|
||||||
"for network %(network)s",
|
"for network %(network)s",
|
||||||
{'port': md_port['id'],
|
{'port': md_port['id'],
|
||||||
'network': net_data['id']})
|
'network': created_net['id']})
|
||||||
except Exception:
|
except Exception:
|
||||||
with excutils.save_and_reraise_exception():
|
with excutils.save_and_reraise_exception():
|
||||||
# Undo creation on the backend
|
# Undo creation on the backend
|
||||||
LOG.exception('Failed to create network')
|
LOG.exception('Failed to create network')
|
||||||
if nsx_net_id:
|
if (nsx_net_id and
|
||||||
|
net_type != utils.NsxV3NetworkTypes.NSX_NETWORK):
|
||||||
self.nsxlib.logical_switch.delete(nsx_net_id)
|
self.nsxlib.logical_switch.delete(nsx_net_id)
|
||||||
|
if (cfg.CONF.nsx_v3.native_dhcp_metadata and
|
||||||
|
is_backend_network and is_overlay_network):
|
||||||
|
# Delete the mdproxy port manually
|
||||||
|
self._delete_network_nsx_dhcp_port(created_net['id'])
|
||||||
|
|
||||||
if rollback_network:
|
if rollback_network:
|
||||||
super(NsxV3Plugin, self).delete_network(
|
super(NsxV3Plugin, self).delete_network(
|
||||||
context, created_net['id'])
|
context, created_net['id'])
|
||||||
@ -1031,6 +1039,13 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
|
|||||||
# we have nothing else to do but raise the exception.
|
# we have nothing else to do but raise the exception.
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
def _delete_network_nsx_dhcp_port(self, network_id):
|
||||||
|
port_id = self.nsxlib.get_id_by_resource_and_tag(
|
||||||
|
self.nsxlib.logical_port.resource_type,
|
||||||
|
'os-neutron-net-id', network_id)
|
||||||
|
if port_id:
|
||||||
|
self.nsxlib.logical_port.delete(port_id)
|
||||||
|
|
||||||
def delete_network(self, context, network_id):
|
def delete_network(self, context, network_id):
|
||||||
if cfg.CONF.nsx_v3.native_dhcp_metadata:
|
if cfg.CONF.nsx_v3.native_dhcp_metadata:
|
||||||
lock = 'nsxv3_network_' + network_id
|
lock = 'nsxv3_network_' + network_id
|
||||||
@ -1056,11 +1071,7 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
|
|||||||
if (cfg.CONF.nsx_v3.native_dhcp_metadata and is_nsx_net and
|
if (cfg.CONF.nsx_v3.native_dhcp_metadata and is_nsx_net and
|
||||||
is_overlay_network):
|
is_overlay_network):
|
||||||
# Delete the mdproxy port manually
|
# Delete the mdproxy port manually
|
||||||
port_id = self.nsxlib.get_id_by_resource_and_tag(
|
self._delete_network_nsx_dhcp_port(network_id)
|
||||||
self.nsxlib.logical_port.resource_type,
|
|
||||||
'os-neutron-net-id', network_id)
|
|
||||||
if port_id:
|
|
||||||
self.nsxlib.logical_port.delete(port_id)
|
|
||||||
# TODO(berlin): delete subnets public announce on the network
|
# TODO(berlin): delete subnets public announce on the network
|
||||||
|
|
||||||
def _get_network_nsx_id(self, context, neutron_id):
|
def _get_network_nsx_id(self, context, neutron_id):
|
||||||
@ -3424,7 +3435,7 @@ class NsxV3Plugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
|
|||||||
def _validate_multiple_subnets_routers(self, context, router_id, net_id):
|
def _validate_multiple_subnets_routers(self, context, router_id, net_id):
|
||||||
network = self.get_network(context, net_id)
|
network = self.get_network(context, net_id)
|
||||||
net_type = network.get(pnet.NETWORK_TYPE)
|
net_type = network.get(pnet.NETWORK_TYPE)
|
||||||
if (net_type and net_type != utils.NsxV3NetworkTypes.GENEVE):
|
if (net_type and not self._is_overlay_network(context, net_id)):
|
||||||
err_msg = (_("Only overlay networks can be attached to a logical "
|
err_msg = (_("Only overlay networks can be attached to a logical "
|
||||||
"router. Network %(net_id)s is a %(net_type)s based "
|
"router. Network %(net_id)s is a %(net_type)s based "
|
||||||
"network") % {'net_id': net_id, 'net_type': net_type})
|
"network") % {'net_id': net_id, 'net_type': net_type})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user