From 34655a8e6e974a3240e73e1eadd0fe1a399fede8 Mon Sep 17 00:00:00 2001 From: Ryan Tidwell Date: Fri, 5 Oct 2018 15:48:16 -0500 Subject: [PATCH] Migrate neutron-dynamic-routing from Ryu to os-ken This change causes neutron-dynamic-routing to stop consuming Ryu in favor of os-ken. os-ken becomes the reference implementation for BGP services and neutron-dynamic-routing no longer has a dependency on Ryu. Partially-Implements: blueprint ryu-framework-maintenace-transition Change-Id: I4a68440809cad5de2d6d191f7211d68b542672e5 --- .zuul.yaml | 10 +- devstack/lib/dr | 2 +- devstack/settings | 2 +- doc/source/admin/agent-scheduler.rst | 2 +- doc/source/admin/bgp-speaker.rst | 8 +- doc/source/admin/system-design.rst | 4 +- doc/source/contributor/dragent-drivers.rst | 8 +- lower-constraints.txt | 2 +- .../agent/driver/{ryu => os_ken}/__init__.py | 0 .../agent/driver/{ryu => os_ken}/driver.py | 30 +-- .../tests/tempest/scenario/README | 2 +- .../tests/tempest/scenario/base.py | 2 +- .../tests/tempest/scenario/base_test_proto.py | 2 +- .../tests/tempest/scenario/basic/base.py | 4 +- .../tempest/scenario/basic/test_4byte_asn.py | 4 +- .../tempest/scenario/basic/test_basic.py | 2 +- .../tests/tempest/scenario/ipv4/test_ipv4.py | 4 +- .../tests/tempest/scenario/ipv6/test_ipv6.py | 4 +- .../bgp/driver/{ryu => os_ken}/__init__.py | 0 .../bgp/driver/{ryu => os_ken}/test_driver.py | 174 +++++++++--------- .../unit/services/bgp/driver/test_utils.py | 14 +- .../post.yaml | 0 .../run.yaml | 12 +- requirements.txt | 1 + test-requirements.txt | 1 - 25 files changed, 148 insertions(+), 146 deletions(-) rename neutron_dynamic_routing/services/bgp/agent/driver/{ryu => os_ken}/__init__.py (100%) rename neutron_dynamic_routing/services/bgp/agent/driver/{ryu => os_ken}/driver.py (91%) rename neutron_dynamic_routing/tests/unit/services/bgp/driver/{ryu => os_ken}/__init__.py (100%) rename neutron_dynamic_routing/tests/unit/services/bgp/driver/{ryu => os_ken}/test_driver.py (60%) rename playbooks/{neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4 => neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4}/post.yaml (100%) rename playbooks/{neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4 => neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4}/run.yaml (89%) diff --git a/.zuul.yaml b/.zuul.yaml index 48eed723..407df7fc 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -83,10 +83,10 @@ - ^releasenotes/.*$ - job: - name: neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4 + name: neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4 parent: legacy-dsvm-base - run: playbooks/neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4/run.yaml - post-run: playbooks/neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4/post.yaml + run: playbooks/neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4/run.yaml + post-run: playbooks/neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4/post.yaml timeout: 7800 required-projects: - openstack-infra/devstack-gate @@ -121,8 +121,8 @@ - neutron-dynamic-routing-dsvm-tempest-api experimental: jobs: - - neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4 + - neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4 periodic: jobs: - - neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4 + - neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4 - legacy-periodic-neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4 diff --git a/devstack/lib/dr b/devstack/lib/dr index 1f1dcac2..507ba44e 100644 --- a/devstack/lib/dr +++ b/devstack/lib/dr @@ -23,7 +23,7 @@ function configure_dr_agent_bgp_config { function configure_dr_agent_bgp_driver { if [ -z "$BGP_SPEAKER_DRIVER" ] ; then - BGP_SPEAKER_DRIVER=$RYU_BGP_SPEAKER_DRIVER + BGP_SPEAKER_DRIVER=$OSKEN_BGP_SPEAKER_DRIVER fi iniset $DR_AGENT_BGP_CONF_FILE bgp bgp_speaker_driver $BGP_SPEAKER_DRIVER } diff --git a/devstack/settings b/devstack/settings index 3a43204d..32b738ff 100644 --- a/devstack/settings +++ b/devstack/settings @@ -74,5 +74,5 @@ DR_AGENT_BINARY=${DR_AGENT_BINARY:-"$NEUTRON_BIN_DIR/neutron-bgp-dragent"} DR_AGENT_BGP_CONF_FILE=${DR_AGENT_BGP_CONF_FILE:-"$NEUTRON_CONF_DIR/bgp_dragent.ini"} BGP_ROUTER_ID=${BGP_ROUTER_ID:-"127.0.0.1"} BGP_PLUGIN=${BGP_PLUGIN:-"neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin"} -RYU_BGP_SPEAKER_DRIVER="neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver.RyuBgpDriver" +OSKEN_BGP_SPEAKER_DRIVER="neutron_dynamic_routing.services.bgp.agent.driver.os_ken.driver.OsKenBgpDriver" diff --git a/doc/source/admin/agent-scheduler.rst b/doc/source/admin/agent-scheduler.rst index 009b0679..9eb229ef 100644 --- a/doc/source/admin/agent-scheduler.rst +++ b/doc/source/admin/agent-scheduler.rst @@ -33,7 +33,7 @@ realize the required dynamic routing protocol functionality. For details, please refer to the system design document :doc:`system-design` .. note:: - One DRAgent can support multiple drivers but currently ONLY Ryu is + One DRAgent can support multiple drivers but currently ONLY os-ken is integrated successfully. diff --git a/doc/source/admin/bgp-speaker.rst b/doc/source/admin/bgp-speaker.rst index f4d28d2d..81181626 100644 --- a/doc/source/admin/bgp-speaker.rst +++ b/doc/source/admin/bgp-speaker.rst @@ -129,12 +129,12 @@ and BGP Speaker object instance is created. For details refer to BGP Speaker Life Cycle ~~~~~~~~~~~~~~~~~~~~~~ -Now we support RyuBgpDriver, BGP Speaker will be processed by Dragent. When +Now we support OsKenBgpDriver, BGP Speaker will be processed by Dragent. When associating a BGP Speaker with an active Dragent, the plugin will send an RPC message to the agent for calling driver in order to create a BGP Speaker instance. -In RyuBgpDriver, the created instance ``BGP Speaker`` will setup by router-id -and ASN, then Ryu will setup new context with speaker configuration and listeners +In OsKenBgpDriver, the created instance ``BGP Speaker`` will setup by router-id +and ASN, then os-ken will setup new context with speaker configuration and listeners which monitor whether the related peers are alive. Then the following operation could be done. @@ -144,7 +144,7 @@ Then the following operation could be done. instance, so it will be still the db operation until the speaker is associated with dragent, and all the peers connection before will be setup by ``BGP Speaker`` creation. If add peers into speaker which is running, Dragent will call driver - to add peer dynamically. For RyuBgpDriver, it will register a new neighbor + to add peer dynamically. For OsKenBgpDriver, it will register a new neighbor based on your peer configuration and try to establish a session with the peer. * Delete peers from BGP Speaker diff --git a/doc/source/admin/system-design.rst b/doc/source/admin/system-design.rst index 3148f936..bb971069 100644 --- a/doc/source/admin/system-design.rst +++ b/doc/source/admin/system-design.rst @@ -81,7 +81,7 @@ The following figure shows the architecture of this feature:: | +---------------------+ | | +---------------------+ | | | | | | | | +---------+-----------+ | | +---------+-----------+ | - | | Ryu | Other | | | | Ryu | Other | | + | | os-ken | Other | | | | os-ken | Other | | | | Driver | Drivers | | | | Driver | Drivers | | | +---------+-----------+ | | +---------+-----------+ | | | | | @@ -126,5 +126,5 @@ It manages and configures different dynamic routing stack through `Common Driver API <../contributor/dragent-drivers.html>`_. .. note:: - Currently, only integration with `Ryu `_ + Currently, only integration with `os-ken `_ is supported. Future releases will add the support for Quagga, Bird, etc. diff --git a/doc/source/contributor/dragent-drivers.rst b/doc/source/contributor/dragent-drivers.rst index d181ee7d..5e5aac63 100644 --- a/doc/source/contributor/dragent-drivers.rst +++ b/doc/source/contributor/dragent-drivers.rst @@ -46,14 +46,14 @@ functionality of a dynamic routing protocol:: | | | | | | | +------------+------------+ | - | | Ryu | Other | | + | | os-ken | Other | | | | Driver | Drivers | | | +------------+------------+ | | | +-------------------------------+ .. note:: - In the first release, only the integration with Ryu is supported. Later release will + In the first release, only the integration with os-ken is supported. Later release will have support for Quagga, Bird etc. Besides, BGP is the only protocol supported now but support for more dynamic routing protocols might come in the future. @@ -66,8 +66,8 @@ BGP Driver ~~~~~~~~~~ There are two configuration parameters related to BGP which are specified in ``bgp_dragent.ini``. -* bgp_speaker_driver, to define BGP speaker driver class. Default is Ryu - (neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver.RyuBgpDriver). +* bgp_speaker_driver, to define BGP speaker driver class. Default is os-ken + (neutron_dynamic_routing.services.bgp.agent.driver.os_ken.driver.OsKenBgpDriver). * bgp_router_id, to define BGP identity (typically an IPv4 address). Default is a unique loopback interface IP address. diff --git a/lower-constraints.txt b/lower-constraints.txt index 1875e514..b089776e 100644 --- a/lower-constraints.txt +++ b/lower-constraints.txt @@ -57,6 +57,7 @@ neutron-lib==1.21.0 openstackdocstheme==1.18.1 openstacksdk==0.11.2 os-client-config==1.28.0 +os-ken==0.3.0 os-service-types==1.2.0 os-xenapi==0.3.1 osc-lib==1.8.0 @@ -118,7 +119,6 @@ requests==2.14.2 requestsexceptions==1.2.0 rfc3986==0.3.1 Routes==2.3.1 -ryu==4.24 simplejson==3.5.1 six==1.10.0 snowballstemmer==1.2.1 diff --git a/neutron_dynamic_routing/services/bgp/agent/driver/ryu/__init__.py b/neutron_dynamic_routing/services/bgp/agent/driver/os_ken/__init__.py similarity index 100% rename from neutron_dynamic_routing/services/bgp/agent/driver/ryu/__init__.py rename to neutron_dynamic_routing/services/bgp/agent/driver/os_ken/__init__.py diff --git a/neutron_dynamic_routing/services/bgp/agent/driver/ryu/driver.py b/neutron_dynamic_routing/services/bgp/agent/driver/os_ken/driver.py similarity index 91% rename from neutron_dynamic_routing/services/bgp/agent/driver/ryu/driver.py rename to neutron_dynamic_routing/services/bgp/agent/driver/os_ken/driver.py index 3d8c362f..f5ba7a44 100644 --- a/neutron_dynamic_routing/services/bgp/agent/driver/ryu/driver.py +++ b/neutron_dynamic_routing/services/bgp/agent/driver/os_ken/driver.py @@ -13,10 +13,10 @@ # License for the specific language governing permissions and limitations # under the License. +from os_ken.services.protocols.bgp import bgpspeaker +from os_ken.services.protocols.bgp.rtconf.neighbors import CONNECT_MODE_ACTIVE from oslo_log import log as logging from oslo_utils import encodeutils -from ryu.services.protocols.bgp import bgpspeaker -from ryu.services.protocols.bgp.rtconf.neighbors import CONNECT_MODE_ACTIVE from neutron_lib import constants as lib_consts @@ -48,14 +48,14 @@ def best_path_change_cb(event): 'is_withdraw': event.is_withdraw}) -class RyuBgpDriver(base.BgpDriverBase): - """BGP speaker implementation via Ryu.""" +class OsKenBgpDriver(base.BgpDriverBase): + """BGP speaker implementation via os-ken.""" def __init__(self, cfg): - LOG.info(_LI('Initializing Ryu driver for BGP Speaker functionality.')) + LOG.info(_LI('Initializing os-ken driver for BGP functionality.')) self._read_config(cfg) - # Note: Even though Ryu can only support one BGP speaker as of now, + # Note: Even though os-ken can only support one BGP speaker as of now, # we have tried making the framework generic for the future purposes. self.cache = utils.BgpMultiSpeakerCache() @@ -66,8 +66,8 @@ class RyuBgpDriver(base.BgpDriverBase): 'functional working.')) else: self.routerid = cfg.bgp_router_id - LOG.info(_LI('Initialized Ryu BGP Speaker driver interface with ' - 'bgp_router_id=%s'), self.routerid) + LOG.info(_LI('Initialized os-ken BGP Speaker driver interface ' + 'with bgp_router_id=%s'), self.routerid) def add_bgp_speaker(self, speaker_as): curr_speaker = self.cache.get_bgp_speaker(speaker_as) @@ -76,7 +76,7 @@ class RyuBgpDriver(base.BgpDriverBase): current_as=speaker_as, rtid=self.routerid) - # Ryu can only support One speaker + # os-ken can only support One speaker if self.cache.get_hosted_bgp_speakers_count() == 1: raise bgp_driver_exc.BgpSpeakerMaxScheduled(count=1) @@ -84,7 +84,7 @@ class RyuBgpDriver(base.BgpDriverBase): # speaker_as must be an integer in the allowed range. utils.validate_as_num('local_as', speaker_as) - # Notify Ryu about BGP Speaker addition. + # Notify os-ken about BGP Speaker addition. # Please note: Since, only the route-advertisement support is # implemented we are explicitly setting the bgp_server_port # attribute to 0 which disables listening on port 179. @@ -104,7 +104,7 @@ class RyuBgpDriver(base.BgpDriverBase): if not curr_speaker: raise bgp_driver_exc.BgpSpeakerNotAdded(local_as=speaker_as, rtid=self.routerid) - # Notify Ryu about BGP Speaker deletion + # Notify os-ken about BGP Speaker deletion curr_speaker.shutdown() LOG.info(_LI('Removed BGP Speaker for local_as=%(as)d with ' 'router_id=%(rtid)s.'), @@ -125,7 +125,7 @@ class RyuBgpDriver(base.BgpDriverBase): if password is not None: password = encodeutils.to_utf8(password) - # Notify Ryu about BGP Peer addition + # Notify os-ken about BGP Peer addition if ip_version == lib_consts.IP_VERSION_4: enable_ipv4 = True enable_ipv6 = False @@ -150,7 +150,7 @@ class RyuBgpDriver(base.BgpDriverBase): # Validate peer_ip. It must be a string. utils.validate_ip_addr(peer_ip) - # Notify Ryu about BGP Peer removal + # Notify os-ken about BGP Peer removal curr_speaker.neighbor_del(address=peer_ip) LOG.info(_LI('Removed BGP Peer %(peer)s from BGP Speaker ' 'running for local_as=%(local_as)d.'), @@ -166,7 +166,7 @@ class RyuBgpDriver(base.BgpDriverBase): utils.validate_string(cidr) utils.validate_string(nexthop) - # Notify Ryu about route advertisement + # Notify os-ken about route advertisement curr_speaker.prefix_add(prefix=cidr, next_hop=nexthop) LOG.info(_LI('Route cidr=%(prefix)s, nexthop=%(nexthop)s is ' 'advertised for BGP Speaker running for ' @@ -181,7 +181,7 @@ class RyuBgpDriver(base.BgpDriverBase): # Validate cidr. It must be a string. utils.validate_string(cidr) - # Notify Ryu about route withdrawal + # Notify os-ken about route withdrawal curr_speaker.prefix_del(prefix=cidr) LOG.info(_LI('Route cidr=%(prefix)s is withdrawn from BGP Speaker ' 'running for local_as=%(local_as)d.'), diff --git a/neutron_dynamic_routing/tests/tempest/scenario/README b/neutron_dynamic_routing/tests/tempest/scenario/README index dad07c05..44990bdc 100644 --- a/neutron_dynamic_routing/tests/tempest/scenario/README +++ b/neutron_dynamic_routing/tests/tempest/scenario/README @@ -28,7 +28,7 @@ diagram: container +---------+ +---------+ -docker container environment is provided by test tool of ryu. +docker container environment is provided by test tool of os-ken. It has the following functions: - build and remove a container image. - run, stop and remove a container. diff --git a/neutron_dynamic_routing/tests/tempest/scenario/base.py b/neutron_dynamic_routing/tests/tempest/scenario/base.py index 322b6f89..0615ec6b 100644 --- a/neutron_dynamic_routing/tests/tempest/scenario/base.py +++ b/neutron_dynamic_routing/tests/tempest/scenario/base.py @@ -24,7 +24,7 @@ from tempest.common import utils from tempest import config from neutron_tempest_plugin.api import base -from ryu.tests.integrated.common import docker_base as ctn_base +from os_ken.tests.integrated.common import docker_base as ctn_base from neutron_dynamic_routing.tests.tempest import bgp_client diff --git a/neutron_dynamic_routing/tests/tempest/scenario/base_test_proto.py b/neutron_dynamic_routing/tests/tempest/scenario/base_test_proto.py index 17dc3f39..3a3ee3a3 100644 --- a/neutron_dynamic_routing/tests/tempest/scenario/base_test_proto.py +++ b/neutron_dynamic_routing/tests/tempest/scenario/base_test_proto.py @@ -18,7 +18,7 @@ from tempest import config from neutron_dynamic_routing.tests.tempest.scenario import base -from ryu.tests.integrated.common import docker_base as ctn_base +from os_ken.tests.integrated.common import docker_base as ctn_base CONF = config.CONF diff --git a/neutron_dynamic_routing/tests/tempest/scenario/basic/base.py b/neutron_dynamic_routing/tests/tempest/scenario/basic/base.py index 0fd1bfa6..9573e7df 100644 --- a/neutron_dynamic_routing/tests/tempest/scenario/basic/base.py +++ b/neutron_dynamic_routing/tests/tempest/scenario/basic/base.py @@ -15,8 +15,8 @@ # under the License. from neutron_dynamic_routing.tests.tempest.scenario import base -from ryu.tests.integrated.common import docker_base as ctn_base -from ryu.tests.integrated.common import quagga +from os_ken.tests.integrated.common import docker_base as ctn_base +from os_ken.tests.integrated.common import quagga class BgpSpeakerBasicTestJSONBase(base.BgpSpeakerScenarioTestJSONBase): diff --git a/neutron_dynamic_routing/tests/tempest/scenario/basic/test_4byte_asn.py b/neutron_dynamic_routing/tests/tempest/scenario/basic/test_4byte_asn.py index 87a60c10..9b0f0e43 100644 --- a/neutron_dynamic_routing/tests/tempest/scenario/basic/test_4byte_asn.py +++ b/neutron_dynamic_routing/tests/tempest/scenario/basic/test_4byte_asn.py @@ -17,8 +17,8 @@ from tempest.lib import decorators from neutron_dynamic_routing.tests.tempest.scenario import base from neutron_dynamic_routing.tests.tempest.scenario import base_test_proto as test_base # noqa -from ryu.tests.integrated.common import docker_base as ctn_base -from ryu.tests.integrated.common import quagga +from os_ken.tests.integrated.common import docker_base as ctn_base +from os_ken.tests.integrated.common import quagga CONF = config.CONF diff --git a/neutron_dynamic_routing/tests/tempest/scenario/basic/test_basic.py b/neutron_dynamic_routing/tests/tempest/scenario/basic/test_basic.py index d2c33179..4fbbb65f 100644 --- a/neutron_dynamic_routing/tests/tempest/scenario/basic/test_basic.py +++ b/neutron_dynamic_routing/tests/tempest/scenario/basic/test_basic.py @@ -20,7 +20,7 @@ from tempest.lib import decorators from neutron_dynamic_routing.tests.tempest.scenario import base as s_base from neutron_dynamic_routing.tests.tempest.scenario.basic import base -from ryu.tests.integrated.common import docker_base as ctn_base +from os_ken.tests.integrated.common import docker_base as ctn_base CONF = config.CONF diff --git a/neutron_dynamic_routing/tests/tempest/scenario/ipv4/test_ipv4.py b/neutron_dynamic_routing/tests/tempest/scenario/ipv4/test_ipv4.py index ce6f41cc..47f03cc0 100644 --- a/neutron_dynamic_routing/tests/tempest/scenario/ipv4/test_ipv4.py +++ b/neutron_dynamic_routing/tests/tempest/scenario/ipv4/test_ipv4.py @@ -20,8 +20,8 @@ from tempest.lib import decorators from neutron_dynamic_routing.tests.tempest.scenario import base from neutron_dynamic_routing.tests.tempest.scenario import base_test_proto as test_base # noqa -from ryu.tests.integrated.common import docker_base as ctn_base -from ryu.tests.integrated.common import quagga +from os_ken.tests.integrated.common import docker_base as ctn_base +from os_ken.tests.integrated.common import quagga CONF = config.CONF diff --git a/neutron_dynamic_routing/tests/tempest/scenario/ipv6/test_ipv6.py b/neutron_dynamic_routing/tests/tempest/scenario/ipv6/test_ipv6.py index a35a5a9b..2de59b4f 100644 --- a/neutron_dynamic_routing/tests/tempest/scenario/ipv6/test_ipv6.py +++ b/neutron_dynamic_routing/tests/tempest/scenario/ipv6/test_ipv6.py @@ -20,8 +20,8 @@ from tempest.lib import decorators from neutron_dynamic_routing.tests.tempest.scenario import base from neutron_dynamic_routing.tests.tempest.scenario import base_test_proto as test_base # noqa -from ryu.tests.integrated.common import docker_base as ctn_base -from ryu.tests.integrated.common import quagga +from os_ken.tests.integrated.common import docker_base as ctn_base +from os_ken.tests.integrated.common import quagga CONF = config.CONF diff --git a/neutron_dynamic_routing/tests/unit/services/bgp/driver/ryu/__init__.py b/neutron_dynamic_routing/tests/unit/services/bgp/driver/os_ken/__init__.py similarity index 100% rename from neutron_dynamic_routing/tests/unit/services/bgp/driver/ryu/__init__.py rename to neutron_dynamic_routing/tests/unit/services/bgp/driver/os_ken/__init__.py diff --git a/neutron_dynamic_routing/tests/unit/services/bgp/driver/ryu/test_driver.py b/neutron_dynamic_routing/tests/unit/services/bgp/driver/os_ken/test_driver.py similarity index 60% rename from neutron_dynamic_routing/tests/unit/services/bgp/driver/ryu/test_driver.py rename to neutron_dynamic_routing/tests/unit/services/bgp/driver/os_ken/test_driver.py index 18ad94dc..4541a04e 100644 --- a/neutron_dynamic_routing/tests/unit/services/bgp/driver/ryu/test_driver.py +++ b/neutron_dynamic_routing/tests/unit/services/bgp/driver/os_ken/test_driver.py @@ -16,16 +16,16 @@ import six import mock +from os_ken.services.protocols.bgp import bgpspeaker +from os_ken.services.protocols.bgp.rtconf.neighbors import CONNECT_MODE_ACTIVE from oslo_config import cfg from oslo_utils import encodeutils -from ryu.services.protocols.bgp import bgpspeaker -from ryu.services.protocols.bgp.rtconf.neighbors import CONNECT_MODE_ACTIVE from neutron.tests import base from neutron_dynamic_routing.services.bgp.agent import config as bgp_config from neutron_dynamic_routing.services.bgp.agent.driver import exceptions as bgp_driver_exc # noqa -from neutron_dynamic_routing.services.bgp.agent.driver.ryu import driver as ryu_driver # noqa +from neutron_dynamic_routing.services.bgp.agent.driver.os_ken import driver as os_ken_driver # noqa # Test variables for BGP Speaker FAKE_LOCAL_AS1 = 12345 @@ -44,45 +44,45 @@ FAKE_ROUTE = '2.2.2.0/24' FAKE_NEXTHOP = '5.5.5.5' -class TestRyuBgpDriver(base.BaseTestCase): +class TestOsKenBgpDriver(base.BaseTestCase): def setUp(self): - super(TestRyuBgpDriver, self).setUp() + super(TestOsKenBgpDriver, self).setUp() cfg.CONF.register_opts(bgp_config.BGP_PROTO_CONFIG_OPTS, 'BGP') cfg.CONF.set_override('bgp_router_id', FAKE_ROUTER_ID, 'BGP') - self.ryu_bgp_driver = ryu_driver.RyuBgpDriver(cfg.CONF.BGP) - mock_ryu_speaker_p = mock.patch.object(bgpspeaker, 'BGPSpeaker') - self.mock_ryu_speaker = mock_ryu_speaker_p.start() + self.os_ken_bgp_driver = os_ken_driver.OsKenBgpDriver(cfg.CONF.BGP) + mock_os_ken_speaker_p = mock.patch.object(bgpspeaker, 'BGPSpeaker') + self.mock_os_ken_speaker = mock_os_ken_speaker_p.start() def test_add_new_bgp_speaker(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) - self.mock_ryu_speaker.assert_called_once_with( + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.mock_os_ken_speaker.assert_called_once_with( as_number=FAKE_LOCAL_AS1, router_id=FAKE_ROUTER_ID, bgp_server_port=0, - best_path_change_handler=ryu_driver.best_path_change_cb, - peer_down_handler=ryu_driver.bgp_peer_down_cb, - peer_up_handler=ryu_driver.bgp_peer_up_cb) + best_path_change_handler=os_ken_driver.best_path_change_cb, + peer_down_handler=os_ken_driver.bgp_peer_down_cb, + peer_up_handler=os_ken_driver.bgp_peer_up_cb) def test_remove_bgp_speaker(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) - speaker = self.ryu_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) - self.ryu_bgp_driver.delete_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) + speaker = self.os_ken_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.delete_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(0, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) self.assertEqual(1, speaker.shutdown.call_count) def test_add_bgp_peer_without_password(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) - self.ryu_bgp_driver.add_bgp_peer(FAKE_LOCAL_AS1, + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.add_bgp_peer(FAKE_LOCAL_AS1, FAKE_PEER_IP, FAKE_PEER_AS) - speaker = self.ryu_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) + speaker = self.os_ken_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) speaker.neighbor_add.assert_called_once_with( address=FAKE_PEER_IP, remote_as=FAKE_PEER_AS, @@ -92,15 +92,15 @@ class TestRyuBgpDriver(base.BaseTestCase): connect_mode=CONNECT_MODE_ACTIVE) def test_add_bgp_peer_with_password(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) - self.ryu_bgp_driver.add_bgp_peer(FAKE_LOCAL_AS1, + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.add_bgp_peer(FAKE_LOCAL_AS1, FAKE_PEER_IP, FAKE_PEER_AS, FAKE_AUTH_TYPE, FAKE_PEER_PASSWORD) - speaker = self.ryu_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) + speaker = self.os_ken_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) speaker.neighbor_add.assert_called_once_with( address=FAKE_PEER_IP, remote_as=FAKE_PEER_AS, @@ -110,17 +110,17 @@ class TestRyuBgpDriver(base.BaseTestCase): connect_mode=CONNECT_MODE_ACTIVE) def test_add_bgp_peer_with_unicode_password(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) NEW_FAKE_PEER_PASSWORD = six.text_type(FAKE_PEER_PASSWORD) - self.ryu_bgp_driver.add_bgp_peer( + self.os_ken_bgp_driver.add_bgp_peer( FAKE_LOCAL_AS1, FAKE_PEER_IP, FAKE_PEER_AS, FAKE_AUTH_TYPE, NEW_FAKE_PEER_PASSWORD) - speaker = self.ryu_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) + speaker = self.os_ken_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) speaker.neighbor_add.assert_called_once_with( address=FAKE_PEER_IP, remote_as=FAKE_PEER_AS, @@ -130,13 +130,13 @@ class TestRyuBgpDriver(base.BaseTestCase): connect_mode=CONNECT_MODE_ACTIVE) def test_add_bgp_peer_with_ipv6(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) - self.ryu_bgp_driver.add_bgp_peer(FAKE_LOCAL_AS1, + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.add_bgp_peer(FAKE_LOCAL_AS1, FAKE_PEER_IPV6, FAKE_PEER_AS) - speaker = self.ryu_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) + speaker = self.os_ken_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) speaker.neighbor_add.assert_called_once_with( address=FAKE_PEER_IPV6, remote_as=FAKE_PEER_AS, @@ -146,159 +146,161 @@ class TestRyuBgpDriver(base.BaseTestCase): connect_mode=CONNECT_MODE_ACTIVE) def test_remove_bgp_peer(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) - self.ryu_bgp_driver.delete_bgp_peer(FAKE_LOCAL_AS1, FAKE_PEER_IP) - speaker = self.ryu_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.delete_bgp_peer(FAKE_LOCAL_AS1, FAKE_PEER_IP) + speaker = self.os_ken_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) speaker.neighbor_del.assert_called_once_with(address=FAKE_PEER_IP) def test_advertise_route(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) - self.ryu_bgp_driver.advertise_route(FAKE_LOCAL_AS1, + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.advertise_route(FAKE_LOCAL_AS1, FAKE_ROUTE, FAKE_NEXTHOP) - speaker = self.ryu_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) + speaker = self.os_ken_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) speaker.prefix_add.assert_called_once_with(prefix=FAKE_ROUTE, next_hop=FAKE_NEXTHOP) def test_withdraw_route(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) - self.ryu_bgp_driver.withdraw_route(FAKE_LOCAL_AS1, FAKE_ROUTE) - speaker = self.ryu_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.withdraw_route(FAKE_LOCAL_AS1, FAKE_ROUTE) + speaker = self.os_ken_bgp_driver.cache.get_bgp_speaker(FAKE_LOCAL_AS1) speaker.prefix_del.assert_called_once_with(prefix=FAKE_ROUTE) def test_add_same_bgp_speakers_twice(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertRaises(bgp_driver_exc.BgpSpeakerAlreadyScheduled, - self.ryu_bgp_driver.add_bgp_speaker, FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker, + FAKE_LOCAL_AS1) def test_add_different_bgp_speakers_when_one_already_added(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertRaises(bgp_driver_exc.BgpSpeakerMaxScheduled, - self.ryu_bgp_driver.add_bgp_speaker, + self.os_ken_bgp_driver.add_bgp_speaker, FAKE_LOCAL_AS2) def test_add_bgp_speaker_with_invalid_asnum_paramtype(self): self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.add_bgp_speaker, '12345') + self.os_ken_bgp_driver.add_bgp_speaker, '12345') def test_add_bgp_speaker_with_invalid_asnum_range(self): self.assertRaises(bgp_driver_exc.InvalidParamRange, - self.ryu_bgp_driver.add_bgp_speaker, -1) + self.os_ken_bgp_driver.add_bgp_speaker, -1) self.assertRaises(bgp_driver_exc.InvalidParamRange, - self.ryu_bgp_driver.add_bgp_speaker, 4294967296) + self.os_ken_bgp_driver.add_bgp_speaker, 4294967296) # valid when enables 4 byte AS number - self.ryu_bgp_driver.add_bgp_speaker(65536) + self.os_ken_bgp_driver.add_bgp_speaker(65536) def test_add_bgp_peer_with_invalid_paramtype(self): # Test with an invalid asnum data-type - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP, '12345') # Test with an invalid auth-type and an invalid password self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP, FAKE_PEER_AS, 'sha-1', 1234) # Test with an invalid auth-type and a valid password self.assertRaises(bgp_driver_exc.InvaildAuthType, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP, FAKE_PEER_AS, 'hmac-md5', FAKE_PEER_PASSWORD) # Test with none auth-type and a valid password self.assertRaises(bgp_driver_exc.InvaildAuthType, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP, FAKE_PEER_AS, 'none', FAKE_PEER_PASSWORD) # Test with none auth-type and an invalid password self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP, FAKE_PEER_AS, 'none', 1234) # Test with a valid auth-type and no password self.assertRaises(bgp_driver_exc.PasswordNotSpecified, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP, FAKE_PEER_AS, FAKE_AUTH_TYPE, None) # Test with a invalid ip address self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, '1.2.3.a', FAKE_PEER_AS, FAKE_AUTH_TYPE, FAKE_PEER_PASSWORD) def test_add_bgp_peer_with_invalid_asnum_range(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertRaises(bgp_driver_exc.InvalidParamRange, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP, -1) self.assertRaises(bgp_driver_exc.InvalidParamRange, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP, 4294967296) # valid when enables 4 byte AS number - self.ryu_bgp_driver.add_bgp_peer(FAKE_LOCAL_AS1, FAKE_PEER_IP, 65536) + self.os_ken_bgp_driver.add_bgp_peer(FAKE_LOCAL_AS1, FAKE_PEER_IP, + 65536) def test_add_bgp_peer_without_adding_speaker(self): self.assertRaises(bgp_driver_exc.BgpSpeakerNotAdded, - self.ryu_bgp_driver.add_bgp_peer, + self.os_ken_bgp_driver.add_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP, FAKE_PEER_AS) def test_remove_bgp_peer_with_invalid_paramtype(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.delete_bgp_peer, + self.os_ken_bgp_driver.delete_bgp_peer, FAKE_LOCAL_AS1, 12345) def test_remove_bgp_peer_without_adding_speaker(self): self.assertRaises(bgp_driver_exc.BgpSpeakerNotAdded, - self.ryu_bgp_driver.delete_bgp_peer, + self.os_ken_bgp_driver.delete_bgp_peer, FAKE_LOCAL_AS1, FAKE_PEER_IP) def test_advertise_route_with_invalid_paramtype(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.advertise_route, + self.os_ken_bgp_driver.advertise_route, FAKE_LOCAL_AS1, 12345, FAKE_NEXTHOP) self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.advertise_route, + self.os_ken_bgp_driver.advertise_route, FAKE_LOCAL_AS1, FAKE_ROUTE, 12345) def test_advertise_route_without_adding_speaker(self): self.assertRaises(bgp_driver_exc.BgpSpeakerNotAdded, - self.ryu_bgp_driver.advertise_route, + self.os_ken_bgp_driver.advertise_route, FAKE_LOCAL_AS1, FAKE_ROUTE, FAKE_NEXTHOP) def test_withdraw_route_with_invalid_paramtype(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.withdraw_route, + self.os_ken_bgp_driver.withdraw_route, FAKE_LOCAL_AS1, 12345) self.assertRaises(bgp_driver_exc.InvalidParamType, - self.ryu_bgp_driver.withdraw_route, + self.os_ken_bgp_driver.withdraw_route, FAKE_LOCAL_AS1, 12345) def test_withdraw_route_without_adding_speaker(self): self.assertRaises(bgp_driver_exc.BgpSpeakerNotAdded, - self.ryu_bgp_driver.withdraw_route, + self.os_ken_bgp_driver.withdraw_route, FAKE_LOCAL_AS1, FAKE_ROUTE) def test_add_multiple_bgp_speakers(self): - self.ryu_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.add_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) self.assertRaises(bgp_driver_exc.BgpSpeakerMaxScheduled, - self.ryu_bgp_driver.add_bgp_speaker, + self.os_ken_bgp_driver.add_bgp_speaker, FAKE_LOCAL_AS2) self.assertRaises(bgp_driver_exc.BgpSpeakerNotAdded, - self.ryu_bgp_driver.delete_bgp_speaker, + self.os_ken_bgp_driver.delete_bgp_speaker, FAKE_LOCAL_AS2) self.assertEqual(1, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) - self.ryu_bgp_driver.delete_bgp_speaker(FAKE_LOCAL_AS1) + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.delete_bgp_speaker(FAKE_LOCAL_AS1) self.assertEqual(0, - self.ryu_bgp_driver.cache.get_hosted_bgp_speakers_count()) + self.os_ken_bgp_driver.cache.get_hosted_bgp_speakers_count()) diff --git a/neutron_dynamic_routing/tests/unit/services/bgp/driver/test_utils.py b/neutron_dynamic_routing/tests/unit/services/bgp/driver/test_utils.py index 38889ad5..53fb9708 100644 --- a/neutron_dynamic_routing/tests/unit/services/bgp/driver/test_utils.py +++ b/neutron_dynamic_routing/tests/unit/services/bgp/driver/test_utils.py @@ -24,7 +24,7 @@ from neutron_dynamic_routing.services.bgp.common import constants as bgp_consts FAKE_IP = '2.2.2.5' FAKE_IPV6 = '2001:db8::' FAKE_LOCAL_AS = 12345 -FAKE_RYU_SPEAKER = {} +FAKE_OS_KEN_SPEAKER = {} EXC_INV_PARAMTYPE = "Parameter %(param)s must be of %(param_type)s type." EXC_INV_PARAMRANGE = "%(param)s must be in %(range)s range." EXC_PASSWORD_NOTSPEC = "Password not specified for authentication " + \ @@ -152,25 +152,25 @@ class TestBgpMultiSpeakerCache(base.BaseTestCase): def setUp(self): super(TestBgpMultiSpeakerCache, self).setUp() - self.expected_cache = {FAKE_LOCAL_AS: FAKE_RYU_SPEAKER} + self.expected_cache = {FAKE_LOCAL_AS: FAKE_OS_KEN_SPEAKER} self.bs_cache = bgp_driver_utils.BgpMultiSpeakerCache() def test_put_bgp_speaker(self): - self.bs_cache.put_bgp_speaker(FAKE_LOCAL_AS, FAKE_RYU_SPEAKER) + self.bs_cache.put_bgp_speaker(FAKE_LOCAL_AS, FAKE_OS_KEN_SPEAKER) self.assertEqual(self.expected_cache, self.bs_cache.cache) def test_remove_bgp_speaker(self): - self.bs_cache.put_bgp_speaker(FAKE_LOCAL_AS, FAKE_RYU_SPEAKER) + self.bs_cache.put_bgp_speaker(FAKE_LOCAL_AS, FAKE_OS_KEN_SPEAKER) self.assertEqual(1, len(self.bs_cache.cache)) self.bs_cache.remove_bgp_speaker(FAKE_LOCAL_AS) self.assertEqual(0, len(self.bs_cache.cache)) def test_get_bgp_speaker(self): - self.bs_cache.put_bgp_speaker(FAKE_LOCAL_AS, FAKE_RYU_SPEAKER) + self.bs_cache.put_bgp_speaker(FAKE_LOCAL_AS, FAKE_OS_KEN_SPEAKER) self.assertEqual( - FAKE_RYU_SPEAKER, + FAKE_OS_KEN_SPEAKER, self.bs_cache.get_bgp_speaker(FAKE_LOCAL_AS)) def test_get_hosted_bgp_speakers_count(self): - self.bs_cache.put_bgp_speaker(FAKE_LOCAL_AS, FAKE_RYU_SPEAKER) + self.bs_cache.put_bgp_speaker(FAKE_LOCAL_AS, FAKE_OS_KEN_SPEAKER) self.assertEqual(1, self.bs_cache.get_hosted_bgp_speakers_count()) diff --git a/playbooks/neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4/post.yaml b/playbooks/neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4/post.yaml similarity index 100% rename from playbooks/neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4/post.yaml rename to playbooks/neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4/post.yaml diff --git a/playbooks/neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4/run.yaml b/playbooks/neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4/run.yaml similarity index 89% rename from playbooks/neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4/run.yaml rename to playbooks/neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4/run.yaml index c4e1e12e..73192afe 100644 --- a/playbooks/neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4/run.yaml +++ b/playbooks/neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4/run.yaml @@ -1,6 +1,6 @@ - hosts: all - name: Autoconverted job legacy-neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4 - from old job gate-neutron-dynamic-routing-dsvm-tempest-with-ryu-master-scenario-ipv4-nv + name: Autoconverted job legacy-neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4 + from old job gate-neutron-dynamic-routing-dsvm-tempest-with-os-ken-master-scenario-ipv4-nv tasks: - name: Ensure legacy workspace directory @@ -48,11 +48,11 @@ export DEVSTACK_LOCAL_CONFIG function gate_hook { - local ryu_path=$BASE/new/ryu_master - if [[ ! -d $ryu_path ]]; then - git clone https://github.com/osrg/ryu $ryu_path + local os_ken_path=$BASE/new/os_ken_master + if [[ ! -d $os_ken_path ]]; then + git clone git://git.openstack.org/openstack/os-ken $os_ken_path fi - sudo pip install -e $ryu_path + sudo pip install -e $os_ken_path bash -xe $BASE/new/neutron-dynamic-routing/neutron_dynamic_routing/tests/contrib/gate_hook.sh dsvm-scenario } export -f gate_hook diff --git a/requirements.txt b/requirements.txt index c67705e4..26f2b38c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,6 +10,7 @@ SQLAlchemy>=1.2.0 # MIT alembic>=0.8.10 # MIT six>=1.10.0 # MIT neutron-lib>=1.21.0 # Apache-2.0 +os-ken>=0.3.0 # Apache-2.0 oslo.config>=5.2.0 # Apache-2.0 oslo.db>=4.27.0 # Apache-2.0 oslo.log>=3.36.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index e24f784d..7e59b711 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -20,4 +20,3 @@ WebTest>=2.0.27 # MIT oslotest>=3.2.0 # Apache-2.0 reno>=2.5.0 # Apache-2.0 tempest>=17.1.0 # Apache-2.0 -ryu>=4.24 # Apache-2.0