Merge pull request #26 from rodis/havana

Change all the quantum references to neutron
This commit is contained in:
Doug Hellmann 2013-09-23 13:29:43 -07:00
commit a3262561d9
15 changed files with 109 additions and 110 deletions

@ -1,5 +1,5 @@
==================================================================== ====================================================================
Akanda User-facing API implemented as a Quantum Resource Extension Akanda User-facing API implemented as a Neutron Resource Extension
==================================================================== ====================================================================
Provides Provides
@ -8,20 +8,20 @@ Provides
Portforward Portforward
----------- -----------
portfoward.py implemented under quantum/extensions allows the ability portfoward.py implemented under neutron/extensions allows the ability
to create portforwarding rules. to create portforwarding rules.
Filterrule Filterrule
---------- ----------
filterrule.py implemented under quantum/extensions allows the ability filterrule.py implemented under neutron/extensions allows the ability
to create firewall rules that eventually gets implemented as OpenBSD to create firewall rules that eventually gets implemented as OpenBSD
PF rules within the Akanda appliance. PF rules within the Akanda appliance.
AddressBook AddressBook
----------- -----------
addressbook.py implemented under quantum/extensions allows the ability addressbook.py implemented under neutron/extensions allows the ability
to administratively manage IP Address groups that can be used in filter to administratively manage IP Address groups that can be used in filter
rules. rules.
@ -31,7 +31,7 @@ Info
This is the home for the REST API that users will be calling directly with This is the home for the REST API that users will be calling directly with
their preferred REST tool (curl, Python wrapper, etc.). their preferred REST tool (curl, Python wrapper, etc.).
This code could eventually become part of OpenStack Quantum or act as a source This code could eventually become part of OpenStack Neutron or act as a source
or inspiration that will. As such, this API should be constructed entirely with or inspiration that will. As such, this API should be constructed entirely with
standard OpenStack tools. standard OpenStack tools.
@ -40,7 +40,7 @@ Authz
----- -----
The resource extensions are implemented with the ability to leverage AuthZ. The resource extensions are implemented with the ability to leverage AuthZ.
In order to use AuthZ, update Quantum's policy file for the extension to work In order to use AuthZ, update Neutron's policy file for the extension to work
with the following:: with the following::
"create_portforward": [], "create_portforward": [],
@ -49,7 +49,7 @@ with the following::
"delete_portforward": [["rule:admin_or_owner"]] "delete_portforward": [["rule:admin_or_owner"]]
To use quotas, add to the QUOTAS section of quantum.conf:: To use quotas, add to the QUOTAS section of neutron.conf::
quota_portforward = 10 quota_portforward = 10
@ -70,31 +70,31 @@ Preliminary Steps
enable_service q-svc enable_service q-svc
enable_service q-agt enable_service q-agt
enable_service q-dhcp enable_service q-dhcp
enable_service quantum enable_service neutron
enable_service q-l3 enable_service q-l3
LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver
Q_PLUGIN=openvswitch Q_PLUGIN=openvswitch
NOVA_USE_QUANTUM_API=v2 NOVA_USE_NEUTRON_API=v2
2. Run ./stack.sh until the stack account and /opt/stack directory gets created. 2. Run ./stack.sh until the stack account and /opt/stack directory gets created.
3. Run ./unstack.sh 3. Run ./unstack.sh
Quantum Extensions install Neutron Extensions install
-------------------------- --------------------------
<workdir> = https://github.com/dreamhost/akanda/tree/master/userapi_extensions/akanda/quantum <workdir> = https://github.com/dreamhost/akanda/tree/master/userapi_extensions/akanda/neutron
1. Clone quantum to /opt/stack using ``git clone https://github.com/openstack/quantum.git`` 1. Clone neutron to /opt/stack using ``git clone https://github.com/openstack/neutron.git``
2. Change to the ``userapi_extensions`` dir within the Akanda project 2. Change to the ``userapi_extensions`` dir within the Akanda project
3. Run ``python setup.py develop`` 3. Run ``python setup.py develop``
4. Return to devstack directory and replace the following lines:: 4. Return to devstack directory and replace the following lines::
- Q_PLUGIN_CLASS="quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2" - Q_PLUGIN_CLASS="neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2"
+ Q_PLUGIN_CLASS="akanda.quantum.plugins.ovs_quantum_plugin.OVSQuantumPluginV2" + Q_PLUGIN_CLASS="akanda.neutron.plugins.ovs_neutron_plugin.OVSNeutronPluginV2"
5. Add the following line to load the extension right above Q_AUTH_STRATEGY:: 5. Add the following line to load the extension right above Q_AUTH_STRATEGY::
+ iniset $Q_CONF_FILE DEFAULT api_extensions_path "extensions:/opt/stack/akanda/userapi_extensions/akanda/quantum/extensions" + iniset $Q_CONF_FILE DEFAULT api_extensions_path "extensions:/opt/stack/akanda/userapi_extensions/akanda/neutron/extensions"
6. Run ./stack.sh again to generate the required DB migrations and start the required services. 6. Run ./stack.sh again to generate the required DB migrations and start the required services.
@ -102,20 +102,20 @@ Quantum Extensions install
similar to the following to indicate a successful load of an similar to the following to indicate a successful load of an
extension, however it is not complete without quotas:: extension, however it is not complete without quotas::
2012-09-11 09:17:04 INFO [quantum.api.extensions] Initializing extension manager. 2012-09-11 09:17:04 INFO [neutron.api.extensions] Initializing extension manager.
2012-09-11 09:17:04 INFO [quantum.api.extensions] Loading extension file: _authzbase.py 2012-09-11 09:17:04 INFO [neutron.api.extensions] Loading extension file: _authzbase.py
2012-09-11 09:17:04 INFO [quantum.api.extensions] Loading extension file: addressbook.py 2012-09-11 09:17:04 INFO [neutron.api.extensions] Loading extension file: addressbook.py
2012-09-11 09:17:04 DEBUG [quantum.api.extensions] Ext name: addressbook 2012-09-11 09:17:04 DEBUG [neutron.api.extensions] Ext name: addressbook
2012-09-11 09:17:04 DEBUG [quantum.api.extensions] Ext alias: dhaddressbook 2012-09-11 09:17:04 DEBUG [neutron.api.extensions] Ext alias: dhaddressbook
2012-09-11 09:17:04 DEBUG [quantum.api.extensions] Ext description: An addressbook extension 2012-09-11 09:17:04 DEBUG [neutron.api.extensions] Ext description: An addressbook extension
2012-09-11 09:17:04 DEBUG [quantum.api.extensions] Ext namespace: http://docs.dreamcompute.com/api/ext/v1.0 2012-09-11 09:17:04 DEBUG [neutron.api.extensions] Ext namespace: http://docs.dreamcompute.com/api/ext/v1.0
8. Switch to q-svc screen and press Ctrl-C 8. Switch to q-svc screen and press Ctrl-C
9. To enable Quote Support 9. To enable Quote Support
Stop q-svc as add the following to [QUOTA] section of Stop q-svc as add the following to [QUOTA] section of
``/etc/quantum/quantum.conf``:: ``/etc/neutron/neutron.conf``::
quota_portforward = 10 quota_portforward = 10
quota_filterrule = 100 quota_filterrule = 100
@ -123,7 +123,7 @@ Quantum Extensions install
quota_addressbookgroup = 50 quota_addressbookgroup = 50
quota_addressbookentry = 250 quota_addressbookentry = 250
10. Add the follow to /etc/quantum/policy.json to enable policies:: 10. Add the follow to /etc/neutron/policy.json to enable policies::
"create_filerrule": [], "create_filerrule": [],
"get_filterrule": [["rule:admin_or_owner"]], "get_filterrule": [["rule:admin_or_owner"]],
@ -148,11 +148,11 @@ Quantum Extensions install
Appendix Appendix
-------- --------
To manually start and stop Quantum Services under DevStack: To manually start and stop Neutron Services under DevStack:
1. Run 'screen -x'. To show a list of screens, use Ctrl+A+" (double quote char) 1. Run 'screen -x'. To show a list of screens, use Ctrl+A+" (double quote char)
2. Select q-svc. In most cases - Ctrl+A+1 should work. 2. Select q-svc. In most cases - Ctrl+A+1 should work.
3. Run the following to start Quantum or Ctrl+C to stop:: 3. Run the following to start Neutron or Ctrl+C to stop::
$ need-command-here $ need-command-here
@ -160,8 +160,7 @@ To manually start and stop Quantum Services under DevStack:
Gotchas Gotchas
======= =======
1. There is no Quantum Model validation for source and destination 1. There is no Neutron Model validation for source and destination
protocols in FilterRule. I.e., you can create forward rules between protocols in FilterRule. I.e., you can create forward rules between
UDP and TCP or anything else. Currently validation happens only in UDP and TCP or anything else. Currently validation happens only in
Horizon. If you use the API directly, you are on your own! Horizon. If you use the API directly, you are on your own!

@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# DreamHost Quantum Extensions # DreamHost Neutron Extensions
# Copyright 2012 New Dream Network, LLC (DreamHost) # Copyright 2012 New Dream Network, LLC (DreamHost)
# @author: Murali Raju, New Dream Network, LLC (DreamHost) # @author: Murali Raju, New Dream Network, LLC (DreamHost)
# @author: Mark Mcclain, New Dream Network, LLC (DreamHost) # @author: Mark Mcclain, New Dream Network, LLC (DreamHost)
@ -26,9 +26,9 @@ from sqlalchemy import orm
from sqlalchemy.orm import validates from sqlalchemy.orm import validates
from quantum.db import model_base from neutron.db import model_base
from quantum.db import models_v2 from neutron.db import models_v2
from quantum.openstack.common import timeutils from neutron.openstack.common import timeutils
def validate_port_number(port): def validate_port_number(port):

@ -13,32 +13,32 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# DreamHost Quantum Extensions # DreamHost Neutron Extensions
# @author: Murali Raju, New Dream Network, LLC (DreamHost) # @author: Murali Raju, New Dream Network, LLC (DreamHost)
# @author: Mark Mcclain, New Dream Network, LLC (DreamHost) # @author: Mark Mcclain, New Dream Network, LLC (DreamHost)
import abc import abc
from quantum import quota from neutron import quota
from quantum.api.v2 import base from neutron.api.v2 import base
from quantum.api.v2 import resource as api_resource from neutron.api.v2 import resource as api_resource
from quantum.common import exceptions as q_exc from neutron.common import exceptions as q_exc
from quantum.common.config import cfg from neutron.common.config import cfg
class ResourcePlugin(object): class ResourcePlugin(object):
""" """
This is a class does some of what the Quantum plugin does, managing This is a class does some of what the Neutron plugin does, managing
resources in a way very similar to what Quantum does. It differ from resources in a way very similar to what Neutron does. It differ from
Quantum is that this provides a base plugin infrastructure, and doesn't Neutron is that this provides a base plugin infrastructure, and doesn't
manage any resources. manage any resources.
Quantum doesn't split infrastructure and implementation. Neutron doesn't split infrastructure and implementation.
""" """
JOINS = () JOINS = ()
def __init__(self, delegate): def __init__(self, delegate):
# synthesize the hooks because Quantum's base class uses the # synthesize the hooks because Neutron's base class uses the
# resource name as part of the method name # resource name as part of the method name
setattr(self, 'get_%s' % delegate.collection_name, setattr(self, 'get_%s' % delegate.collection_name,
self._get_collection) self._get_collection)

@ -13,20 +13,20 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# DreamHost Quantum Extensions # DreamHost Neutron Extensions
# @author: Murali Raju, New Dream Network, LLC (DreamHost) # @author: Murali Raju, New Dream Network, LLC (DreamHost)
# @author: Mark Mcclain, New Dream Network, LLC (DreamHost) # @author: Mark Mcclain, New Dream Network, LLC (DreamHost)
import logging import logging
from quantum.api import extensions from neutron.api import extensions
from quantum.api.v2 import attributes from neutron.api.v2 import attributes
from quantum.common import exceptions as q_exc from neutron.common import exceptions as q_exc
from sqlalchemy.orm import exc from sqlalchemy.orm import exc
from akanda.quantum.db import models_v2 from akanda.neutron.db import models_v2
from akanda.quantum.extensions import _authzbase from akanda.neutron.extensions import _authzbase
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)

@ -13,17 +13,17 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# DreamHost Quantum Extensions # DreamHost Neutron Extensions
# @author: Murali Raju, New Dream Network, LLC (DreamHost) # @author: Murali Raju, New Dream Network, LLC (DreamHost)
# @author: Mark Mcclain, New Dream Network, LLC (DreamHost) # @author: Mark Mcclain, New Dream Network, LLC (DreamHost)
from quantum.api import extensions from neutron.api import extensions
from quantum.api.v2 import attributes from neutron.api.v2 import attributes
from quantum.common import exceptions from neutron.common import exceptions
from akanda.quantum.db import models_v2 from akanda.neutron.db import models_v2
from akanda.quantum.extensions import _authzbase from akanda.neutron.extensions import _authzbase
class AddressGroupResource(_authzbase.ResourceDelegate): class AddressGroupResource(_authzbase.ResourceDelegate):

@ -13,18 +13,18 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# DreamHost Quantum Extensions # DreamHost Neutron Extensions
# @author: Murali Raju, New Dream Network, LLC (DreamHost) # @author: Murali Raju, New Dream Network, LLC (DreamHost)
# @author: Mark Mcclain, New Dream Network, LLC (DreamHost) # @author: Mark Mcclain, New Dream Network, LLC (DreamHost)
from quantum.api import extensions from neutron.api import extensions
from quantum.api.v2 import attributes from neutron.api.v2 import attributes
from quantum.common import exceptions as q_exc from neutron.common import exceptions as q_exc
from sqlalchemy.orm import exc from sqlalchemy.orm import exc
from akanda.quantum.db import models_v2 from akanda.neutron.db import models_v2
from akanda.quantum.extensions import _authzbase from akanda.neutron.extensions import _authzbase
class FilterruleResource(_authzbase.ResourceDelegate): class FilterruleResource(_authzbase.ResourceDelegate):

@ -13,16 +13,16 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# DreamHost Quantum Extensions # DreamHost Neutron Extensions
# @author: Murali Raju, New Dream Network, LLC (DreamHost) # @author: Murali Raju, New Dream Network, LLC (DreamHost)
from quantum.api import extensions from neutron.api import extensions
from quantum.api.v2 import attributes from neutron.api.v2 import attributes
from quantum.common import exceptions from neutron.common import exceptions
from akanda.quantum.db import models_v2 from akanda.neutron.db import models_v2
from akanda.quantum.extensions import _authzbase from akanda.neutron.extensions import _authzbase
class PortaliasResource(_authzbase.ResourceDelegate): class PortaliasResource(_authzbase.ResourceDelegate):

@ -13,19 +13,19 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
# DreamHost Quantum Extensions # DreamHost Neutron Extensions
# @author: Murali Raju, New Dream Network, LLC (DreamHost) # @author: Murali Raju, New Dream Network, LLC (DreamHost)
# @author: Mark Mcclain, New Dream Network, LLC (DreamHost) # @author: Mark Mcclain, New Dream Network, LLC (DreamHost)
from sqlalchemy.orm import exc from sqlalchemy.orm import exc
from quantum.api import extensions from neutron.api import extensions
from quantum.api.v2 import attributes from neutron.api.v2 import attributes
from quantum.common import exceptions as q_exc from neutron.common import exceptions as q_exc
from quantum.db import models_v2 as qmodels from neutron.db import models_v2 as qmodels
from akanda.quantum.db import models_v2 from akanda.neutron.db import models_v2
from akanda.quantum.extensions import _authzbase from akanda.neutron.extensions import _authzbase
class PortforwardResource(_authzbase.ResourceDelegate): class PortforwardResource(_authzbase.ResourceDelegate):

@ -3,16 +3,16 @@ import netaddr
import logging import logging
import random import random
from quantum.api.v2 import attributes from neutron.api.v2 import attributes
from quantum.common.config import cfg from neutron.common.config import cfg
from quantum.common import exceptions as q_exc from neutron.common import exceptions as q_exc
from quantum.db import db_base_plugin_v2 from neutron.db import db_base_plugin_v2
from quantum.db import models_v2 as qmodels from neutron.db import models_v2 as qmodels
from quantum.db import l3_db from neutron.db import l3_db
from quantum import manager from neutron import manager
from sqlalchemy.orm import exc from sqlalchemy.orm import exc
from akanda.quantum.db import models_v2 as akmodels from akanda.neutron.db import models_v2 as akmodels
IPV6_ASSIGNMENT_ATTEMPTS = 1000 IPV6_ASSIGNMENT_ATTEMPTS = 1000
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
@ -103,7 +103,7 @@ def auto_add_other_resources(f):
def monkey_patch_ipv6_generator(): def monkey_patch_ipv6_generator():
cls = db_base_plugin_v2.QuantumDbPluginV2 cls = db_base_plugin_v2.NeutronDbPluginV2
cls._generate_mac = _wrap_generate_mac(cls._generate_mac) cls._generate_mac = _wrap_generate_mac(cls._generate_mac)
cls._generate_ip = _wrap_generate_ip(cls, cls._generate_ip) cls._generate_ip = _wrap_generate_ip(cls, cls._generate_ip)
@ -159,7 +159,7 @@ def _add_subnet_to_router(context, subnet):
if not subnet.get('gateway_ip'): if not subnet.get('gateway_ip'):
return return
plugin = manager.QuantumManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
router_q = context.session.query(l3_db.Router) router_q = context.session.query(l3_db.Router)
router_q = router_q.filter_by(tenant_id=context.tenant_id) router_q = router_q.filter_by(tenant_id=context.tenant_id)
@ -242,7 +242,7 @@ def _update_internal_gateway_port_ip(context, router_id, subnet):
# we call into the plugin vs updating the db directly because of l3 hooks # we call into the plugin vs updating the db directly because of l3 hooks
# baked into the plugins. # baked into the plugins.
plugin = manager.QuantumManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
port_dict = {'fixed_ips': fixed_ips} port_dict = {'fixed_ips': fixed_ips}
plugin.update_port( plugin.update_port(
context.elevated(), context.elevated(),
@ -254,7 +254,7 @@ def _update_internal_gateway_port_ip(context, router_id, subnet):
def _add_ipv6_subnet(context, network): def _add_ipv6_subnet(context, network):
plugin = manager.QuantumManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
try: try:
subnet_generator = _ipv6_subnet_generator( subnet_generator = _ipv6_subnet_generator(
@ -322,7 +322,7 @@ def _ipv6_subnet_generator(network_range, prefixlen):
def _wrap_generate_mac(f): def _wrap_generate_mac(f):
""" Adds mac_address to context object instead of patch Quantum. """ Adds mac_address to context object instead of patch Neutron.
Annotating the object requires a less invasive change until upstream Annotating the object requires a less invasive change until upstream
can be fixed in Havana. This version works in concert with can be fixed in Havana. This version works in concert with
@ -345,7 +345,7 @@ def _wrap_generate_ip(cls, f):
the network. the network.
NOTE: This method is intended to patch a private method on the NOTE: This method is intended to patch a private method on the
Quantum base plugin. The method prefers to generate an IP from large IPv6 Neutron base plugin. The method prefers to generate an IP from large IPv6
subnets. If a suitable subnet cannot be found, the method will fallback subnets. If a suitable subnet cannot be found, the method will fallback
to the original implementation. to the original implementation.
""" """

@ -18,20 +18,20 @@
import functools import functools
from quantum.common import topics from neutron.common import topics
from quantum.db import l3_db from neutron.db import l3_db
from quantum.db import l3_rpc_base as l3_rpc from neutron.db import l3_rpc_base as l3_rpc
from quantum.extensions import portsecurity as psec from neutron.extensions import portsecurity as psec
from quantum.extensions import securitygroup as ext_sg from neutron.extensions import securitygroup as ext_sg
from quantum.openstack.common import log as logging from neutron.openstack.common import log as logging
from quantum.openstack.common import rpc from neutron.openstack.common import rpc
from quantum.plugins.nicira.nicira_nvp_plugin.QuantumPlugin import nicira_db from neutron.plugins.nicira.nicira_nvp_plugin.NeutronPlugin import nicira_db
from quantum.plugins.nicira.nicira_nvp_plugin import QuantumPlugin as nvp from neutron.plugins.nicira.nicira_nvp_plugin import NeutronPlugin as nvp
from quantum.plugins.nicira.nicira_nvp_plugin.QuantumPlugin import nvplib from neutron.plugins.nicira.nicira_nvp_plugin.NeutronPlugin import nvplib
from akanda.quantum.plugins import decorators as akanda from akanda.neutron.plugins import decorators as akanda
LOG = logging.getLogger("QuantumPlugin") LOG = logging.getLogger("NeutronPlugin")
akanda.monkey_patch_ipv6_generator() akanda.monkey_patch_ipv6_generator()
@ -73,7 +73,7 @@ class AkandaNvpRpcCallbacks(l3_rpc.L3RpcCallbackMixin, nvp.NVPRpcCallbacks):
class NvpPluginV2(nvp.NvpPluginV2): class NvpPluginV2(nvp.NvpPluginV2):
""" """
NvpPluginV2 is a Quantum plugin that provides L2 Virtual Network NvpPluginV2 is a Neutron plugin that provides L2 Virtual Network
functionality using NVP. functionality using NVP.
""" """
supported_extension_aliases = ( supported_extension_aliases = (
@ -174,7 +174,7 @@ class NvpPluginV2(nvp.NvpPluginV2):
port_data['fixed_ips'], port_data['fixed_ips'],
port_data[psec.PORTSECURITY], port_data[psec.PORTSECURITY],
port_data[ext_sg.SECURITYGROUPS]) port_data[ext_sg.SECURITYGROUPS])
nicira_db.add_quantum_nvp_port_mapping( nicira_db.add_neutron_nvp_port_mapping(
context.session, port_data['id'], lport['uuid']) context.session, port_data['id'], lport['uuid'])
d_owner = port_data['device_owner'] d_owner = port_data['device_owner']
@ -189,7 +189,7 @@ class NvpPluginV2(nvp.NvpPluginV2):
'port_id': port_data['id'], 'port_id': port_data['id'],
'nvp_port_id': lport['uuid']}) 'nvp_port_id': lport['uuid']})
except Exception: except Exception:
# failed to create port in NVP delete port from quantum_db # failed to create port in NVP delete port from neutron_db
LOG.exception(_("An exception occured while plugging " LOG.exception(_("An exception occured while plugging "
"the interface")) "the interface"))
raise raise

@ -16,15 +16,15 @@
# under the License. # under the License.
# #
from quantum.plugins.openvswitch import ovs_quantum_plugin from neutron.plugins.openvswitch import ovs_neutron_plugin
from akanda.quantum.plugins import decorators as akanda from akanda.neutron.plugins import decorators as akanda
akanda.monkey_patch_ipv6_generator() akanda.monkey_patch_ipv6_generator()
class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2): class OVSNeutronPluginV2(ovs_neutron_plugin.OVSNeutronPluginV2):
_supported_extension_aliases = ( _supported_extension_aliases = (
ovs_quantum_plugin.OVSQuantumPluginV2._supported_extension_aliases + ovs_neutron_plugin.OVSNeutronPluginV2._supported_extension_aliases +
["dhportforward", "dhaddressgroup", "dhaddressentry", ["dhportforward", "dhaddressgroup", "dhaddressentry",
"dhfilterrule", "dhportalias"]) "dhfilterrule", "dhportalias"])
@ -36,13 +36,13 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
@akanda.auto_add_other_resources @akanda.auto_add_other_resources
@akanda.auto_add_ipv6_subnet @akanda.auto_add_ipv6_subnet
def create_network(self, context, network): def create_network(self, context, network):
return super(OVSQuantumPluginV2, self).create_network(context, network) return super(OVSNeutronPluginV2, self).create_network(context, network)
@akanda.auto_add_subnet_to_router @akanda.auto_add_subnet_to_router
def create_subnet(self, context, subnet): def create_subnet(self, context, subnet):
return super(OVSQuantumPluginV2, self).create_subnet(context, subnet) return super(OVSNeutronPluginV2, self).create_subnet(context, subnet)
@akanda.sync_subnet_gateway_port @akanda.sync_subnet_gateway_port
def update_subnet(self, context, id, subnet): def update_subnet(self, context, id, subnet):
return super(OVSQuantumPluginV2, self).update_subnet( return super(OVSNeutronPluginV2, self).update_subnet(
context, id, subnet) context, id, subnet)