TVD: Support DVS plugin calls

Change-Id: Ie8aa590bada844492541cc3df0e23c1c735882bf
This commit is contained in:
Adit Sarfaty 2017-12-19 12:45:06 +02:00
parent bc888c65b9
commit bb5966e1ba
2 changed files with 37 additions and 12 deletions

View File

@ -138,8 +138,8 @@ class NsxDvsV2(addr_pair_db.AllowedAddressPairsMixin,
# security-groups extension supported by this plugin
pbin.CAP_PORT_FILTER: True}
def _extend_network_dict_provider(self, context, network,
multiprovider=None, bindings=None):
def _extend_get_network_dict_provider(self, context, network,
multiprovider=None, bindings=None):
if not bindings:
bindings = nsx_db.get_network_bindings(context.session,
network['id'])
@ -310,7 +310,7 @@ class NsxDvsV2(addr_pair_db.AllowedAddressPairsMixin,
# to add provider networks fields
net_result = self._make_network_dict(network,
context=context)
self._extend_network_dict_provider(context, net_result)
self._extend_get_network_dict_provider(context, net_result)
return db_utils.resource_fields(net_result, fields)
def get_network(self, context, id, fields=None):
@ -326,7 +326,7 @@ class NsxDvsV2(addr_pair_db.AllowedAddressPairsMixin,
context, filters, fields, sorts,
limit, marker, page_reverse))
for net in networks:
self._extend_network_dict_provider(context, net)
self._extend_get_network_dict_provider(context, net)
return (networks if not fields else
[db_utils.resource_fields(network,
fields) for network in networks])
@ -343,7 +343,7 @@ class NsxDvsV2(addr_pair_db.AllowedAddressPairsMixin,
# Process port security extension
self._process_network_port_security_update(
context, net_attrs, net_res)
self._extend_network_dict_provider(context, net_res)
self._extend_get_network_dict_provider(context, net_res)
return net_res
@ -504,3 +504,7 @@ class NsxDvsV2(addr_pair_db.AllowedAddressPairsMixin,
msg = (_("Unable to create router %s with DVS") %
router['router']['name'])
raise n_exc.BadRequest(resource="router", msg=msg)
def get_network_availability_zones(self, net_db):
"""Api to comply with the NSX-TVD plugin"""
return []

View File

@ -159,11 +159,18 @@ class NsxTVDPlugin(addr_pair_db.AllowedAddressPairsMixin,
for plugin in self.plugins:
# TODO(asarfaty): add other resources here
plugin_type = self.plugins[plugin].plugin_type()
self._unsupported_fields[plugin_type] = {'router': []}
self._unsupported_fields[plugin_type] = {'router': [],
'port': []}
# router size and type are supported only by the V plugin
self._unsupported_fields[t.NsxV3Plugin.plugin_type()]['router'] = [
'router_size', 'router_type']
self._unsupported_fields[dvs.NsxDvsV2.plugin_type()]['router'] = [
'router_size', 'router_type']
# port mac learning is not supported by the dvs plugin
self._unsupported_fields[dvs.NsxDvsV2.plugin_type()]['port'] = [
'mac_learning_enabled']
def _validate_obj_extensions(self, data, plugin_type, obj_type):
"""prevent configuration of unsupported extensions"""
@ -239,13 +246,21 @@ class NsxTVDPlugin(addr_pair_db.AllowedAddressPairsMixin,
return p.update_network(context, id, network)
def create_port(self, context, port):
id = port['port']['network_id']
p = self._get_plugin_from_net_id(context, id)
return p.create_port(context, port)
net_id = port['port']['network_id']
p = self._get_plugin_from_net_id(context, net_id)
self._validate_obj_extensions(
port['port'], p.plugin_type(), 'port')
new_port = p.create_port(context, port)
self._cleanup_obj_fields(
new_port, p.plugin_type(), 'port')
LOG.error("DEBUG ADIT created new_port %s", new_port)
return new_port
def update_port(self, context, id, port):
db_port = self._get_port(context, id)
p = self._get_plugin_from_net_id(context, db_port['network_id'])
self._validate_obj_extensions(
port['port'], p.plugin_type(), 'port')
return p.update_port(context, id, port)
def delete_port(self, context, id, **kwargs):
@ -256,7 +271,10 @@ class NsxTVDPlugin(addr_pair_db.AllowedAddressPairsMixin,
def get_port(self, context, id, fields=None):
db_port = self._get_port(context, id)
p = self._get_plugin_from_net_id(context, db_port['network_id'])
return p.get_port(context, id, fields=fields)
port = p.get_port(context, id, fields=fields)
self._cleanup_obj_fields(
port, p.plugin_type(), 'port')
return port
def get_ports(self, context, filters=None, fields=None,
sorts=None, limit=None, marker=None,
@ -275,7 +293,10 @@ class NsxTVDPlugin(addr_pair_db.AllowedAddressPairsMixin,
p = self._get_plugin_from_net_id(context, port['network_id'])
if hasattr(p, '_extend_get_port_dict_qos_and_binding'):
p._extend_get_port_dict_qos_and_binding(context, port)
p._remove_provider_security_groups_from_list(port)
if hasattr(p, '_remove_provider_security_groups_from_list'):
p._remove_provider_security_groups_from_list(port)
self._cleanup_obj_fields(
port, p.plugin_type(), 'port')
return (ports if not fields else
[db_utils.resource_fields(port, fields) for port in ports])
@ -364,7 +385,7 @@ class NsxTVDPlugin(addr_pair_db.AllowedAddressPairsMixin,
router['router'], p.plugin_type(), 'router')
new_router = p.create_router(context, router)
self._cleanup_obj_fields(
router['router'], p.plugin_type(), 'router')
new_router, p.plugin_type(), 'router')
return new_router
def update_router(self, context, router_id, router):