Merge pull request #26 from rodis/havana
Change all the quantum references to neutron
This commit is contained in:
commit
a3262561d9
@ -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)
|
Loading…
x
Reference in New Issue
Block a user