diff --git a/neutron/plugins/ml2/drivers/opendaylight/README b/neutron/plugins/ml2/drivers/opendaylight/README deleted file mode 100644 index 37e82d8d57d..00000000000 --- a/neutron/plugins/ml2/drivers/opendaylight/README +++ /dev/null @@ -1,46 +0,0 @@ -OpenDaylight ML2 MechanismDriver -================================ -OpenDaylight is an Open Source SDN Controller developed by a plethora of -companies and hosted by the Linux Foundation. The OpenDaylight website -contains more information on the capabilities OpenDaylight provides: - - http://www.opendaylight.org - -The networking-odl project provides a thin layer sitting between this -driver and OpenDaylight. The code can be downloaded from: - - https://git.openstack.org/cgit/openstack/networking-odl - -Theory of operation -=================== -The OpenStack Neutron integration with OpenDaylight consists of the ML2 -MechanismDriver which acts as a REST proxy and passes all Neutron API -calls into OpenDaylight. OpenDaylight contains a NB REST service (called -the NeutronAPIService) which caches data from these proxied API calls and -makes it available to other services inside of OpenDaylight. One current -user of the SB side of the NeutronAPIService is the OVSDB code in -OpenDaylight. OVSDB uses the neutron information to isolate tenant networks -using GRE or VXLAN tunnels. - -How to use the OpenDaylight ML2 MechanismDriver -=============================================== -To use the ML2 MechanismDriver, you need to ensure you have it configured -as one of the "mechanism_drivers" in ML2: - - mechanism_drivers=opendaylight - -The next step is to setup the "[ml2_odl]" section in either the ml2_conf.ini -file or in a separate ml2_conf_odl.ini file. An example is shown below: - - [ml2_odl] - password = admin - username = admin - url = http://192.168.100.1:8080/controller/nb/v2/neutron - -When starting OpenDaylight, ensure you have the SimpleForwarding application -disabled or remove the .jar file from the plugins directory. Also ensure you -start OpenDaylight before you start OpenStack Neutron. - -There is devstack support for this which will automatically pull down OpenDaylight -and start it as part of devstack as well. The patch for this will likely merge -around the same time as this patch merges. diff --git a/neutron/plugins/ml2/drivers/opendaylight/__init__.py b/neutron/plugins/ml2/drivers/opendaylight/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/neutron/plugins/ml2/drivers/opendaylight/driver.py b/neutron/plugins/ml2/drivers/opendaylight/driver.py deleted file mode 100644 index 05228502514..00000000000 --- a/neutron/plugins/ml2/drivers/opendaylight/driver.py +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2013-2014 OpenStack Foundation -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from networking_odl.common import constants as odl_const -from networking_odl.ml2 import mech_driver -from oslo_config import cfg -from oslo_log import log - -from neutron.plugins.ml2 import driver_api as api - -LOG = log.getLogger(__name__) - -odl_opts = [ - cfg.StrOpt('url', - help=_("HTTP URL of OpenDaylight REST interface.")), - cfg.StrOpt('username', - help=_("HTTP username for authentication")), - cfg.StrOpt('password', secret=True, - help=_("HTTP password for authentication")), - cfg.IntOpt('timeout', default=10, - help=_("HTTP timeout in seconds.")), - cfg.IntOpt('session_timeout', default=30, - help=_("Tomcat session timeout in minutes.")), -] - -cfg.CONF.register_opts(odl_opts, "ml2_odl") - - -class OpenDaylightMechanismDriver(api.MechanismDriver): - - """Mechanism Driver for OpenDaylight. - - This driver was a port from the NCS MechanismDriver. The API - exposed by ODL is slightly different from the API exposed by NCS, - but the general concepts are the same. - """ - - def initialize(self): - self.url = cfg.CONF.ml2_odl.url - self.timeout = cfg.CONF.ml2_odl.timeout - self.username = cfg.CONF.ml2_odl.username - self.password = cfg.CONF.ml2_odl.password - required_opts = ('url', 'username', 'password') - for opt in required_opts: - if not getattr(self, opt): - raise cfg.RequiredOptError(opt, 'ml2_odl') - - self.odl_drv = mech_driver.OpenDaylightDriver() - - # Postcommit hooks are used to trigger synchronization. - - def create_network_postcommit(self, context): - self.odl_drv.synchronize('create', odl_const.ODL_NETWORKS, context) - - def update_network_postcommit(self, context): - self.odl_drv.synchronize('update', odl_const.ODL_NETWORKS, context) - - def delete_network_postcommit(self, context): - self.odl_drv.synchronize('delete', odl_const.ODL_NETWORKS, context) - - def create_subnet_postcommit(self, context): - self.odl_drv.synchronize('create', odl_const.ODL_SUBNETS, context) - - def update_subnet_postcommit(self, context): - self.odl_drv.synchronize('update', odl_const.ODL_SUBNETS, context) - - def delete_subnet_postcommit(self, context): - self.odl_drv.synchronize('delete', odl_const.ODL_SUBNETS, context) - - def create_port_postcommit(self, context): - self.odl_drv.synchronize('create', odl_const.ODL_PORTS, context) - - def update_port_postcommit(self, context): - self.odl_drv.synchronize('update', odl_const.ODL_PORTS, context) - - def delete_port_postcommit(self, context): - self.odl_drv.synchronize('delete', odl_const.ODL_PORTS, context) - - def bind_port(self, context): - self.odl_drv.bind_port(context) diff --git a/neutron/plugins/ml2/drivers/opendaylight/requirements.txt b/neutron/plugins/ml2/drivers/opendaylight/requirements.txt deleted file mode 100644 index 3a4d512910a..00000000000 --- a/neutron/plugins/ml2/drivers/opendaylight/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -networking-odl diff --git a/neutron/tests/unit/plugins/ml2/drivers/opendaylight/__init__.py b/neutron/tests/unit/plugins/ml2/drivers/opendaylight/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/neutron/tests/unit/plugins/ml2/drivers/opendaylight/test_driver.py b/neutron/tests/unit/plugins/ml2/drivers/opendaylight/test_driver.py deleted file mode 100644 index 09f6d0ca530..00000000000 --- a/neutron/tests/unit/plugins/ml2/drivers/opendaylight/test_driver.py +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright (c) 2013-2015 OpenStack Foundation -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import sys - -import mock -from neutron import context -from neutron.tests.unit.plugins.ml2 import test_plugin - - -with mock.patch.dict(sys.modules, - {'networking_odl': mock.Mock(), - 'networking_odl.common': mock.Mock(), - 'networking_odl.ml2': mock.Mock()}): - from networking_odl.common import constants as const - from neutron.plugins.ml2.drivers.opendaylight import driver - - -class TestODLShim(test_plugin.Ml2PluginV2TestCase): - - def setUp(self): - super(TestODLShim, self).setUp() - self.context = context.get_admin_context() - self.plugin = mock.Mock() - self.driver = driver.OpenDaylightMechanismDriver() - self.driver.odl_drv = mock.Mock() - - def test_create_network_postcommit(self): - self.driver.create_network_postcommit(self.context) - self.driver.odl_drv.synchronize.assert_called_with('create', - const.ODL_NETWORKS, - self.context) - - def test_update_network_postcommit(self): - self.driver.update_network_postcommit(self.context) - self.driver.odl_drv.synchronize.assert_called_with('update', - const.ODL_NETWORKS, - self.context) - - def test_delete_network_postcommit(self): - self.driver.delete_network_postcommit(self.context) - self.driver.odl_drv.synchronize.assert_called_with('delete', - const.ODL_NETWORKS, - self.context) - - def test_create_subnet_postcommit(self): - self.driver.create_subnet_postcommit(self.context) - self.driver.odl_drv.synchronize.assert_called_with('create', - const.ODL_SUBNETS, - self.context) - - def test_update_subnet_postcommit(self): - self.driver.update_subnet_postcommit(self.context) - self.driver.odl_drv.synchronize.assert_called_with('update', - const.ODL_SUBNETS, - self.context) - - def test_delete_subnet_postcommit(self): - self.driver.delete_subnet_postcommit(self.context) - self.driver.odl_drv.synchronize.assert_called_with('delete', - const.ODL_SUBNETS, - self.context) - - def test_create_port_postcommit(self): - self.driver.create_port_postcommit(self.context) - self.driver.odl_drv.synchronize.assert_called_with('create', - const.ODL_PORTS, - self.context) - - def test_update_port_postcommit(self): - self.driver.update_port_postcommit(self.context) - self.driver.odl_drv.synchronize.assert_called_with('update', - const.ODL_PORTS, - self.context) - - def test_delete_port_postcommit(self): - self.driver.delete_port_postcommit(self.context) - self.driver.odl_drv.synchronize.assert_called_with('delete', - const.ODL_PORTS, - self.context) - - def test_bind_port_delegation(self): - # given front-end with attached back-end - front_end = self.driver - front_end.odl_drv = back_end = mock.MagicMock( - spec=driver.OpenDaylightMechanismDriver) - # given PortContext to be forwarded to back-end without using - context = object() - - # when binding port - front_end.bind_port(context) - - # then port is bound by back-end - back_end.bind_port.assert_called_once_with(context) diff --git a/setup.cfg b/setup.cfg index 3eb8e8fa289..14b28a58899 100644 --- a/setup.cfg +++ b/setup.cfg @@ -126,7 +126,6 @@ neutron.ml2.type_drivers = gre = neutron.plugins.ml2.drivers.type_gre:GreTypeDriver vxlan = neutron.plugins.ml2.drivers.type_vxlan:VxlanTypeDriver neutron.ml2.mechanism_drivers = - opendaylight = neutron.plugins.ml2.drivers.opendaylight.driver:OpenDaylightMechanismDriver logger = neutron.tests.unit.plugins.ml2.drivers.mechanism_logger:LoggerMechanismDriver test = neutron.tests.unit.plugins.ml2.drivers.mechanism_test:TestMechanismDriver linuxbridge = neutron.plugins.ml2.drivers.linuxbridge.mech_driver.mech_linuxbridge:LinuxbridgeMechanismDriver