summaryrefslogtreecommitdiffstats
path: root/build/neutron-patch-NSDriver.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build/neutron-patch-NSDriver.patch')
-rw-r--r--build/neutron-patch-NSDriver.patch231
1 files changed, 0 insertions, 231 deletions
diff --git a/build/neutron-patch-NSDriver.patch b/build/neutron-patch-NSDriver.patch
deleted file mode 100644
index d5889e38..00000000
--- a/build/neutron-patch-NSDriver.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-From ff4e918d21970a81604a0aaa2af888141f93cdac Mon Sep 17 00:00:00 2001
-From: Feng Pan <fpan@redhat.com>
-Date: Sun, 5 Feb 2017 21:34:19 -0500
-Subject: [PATCH] Add NSDriver
-
----
- neutron/agent/l3/namespaces.py | 6 ++--
- neutron/agent/l3/router_info.py | 14 ++++----
- neutron/agent/linux/interface.py | 76 +++++++++++++++++++++++++++++++++++++++-
- 3 files changed, 87 insertions(+), 9 deletions(-)
-
-diff --git a/neutron/agent/l3/namespaces.py b/neutron/agent/l3/namespaces.py
-index e70d7bb..3c932a8 100644
---- a/neutron/agent/l3/namespaces.py
-+++ b/neutron/agent/l3/namespaces.py
-@@ -18,6 +18,7 @@ import functools
- from oslo_log import log as logging
- from oslo_utils import excutils
-
-+from neutron.agent.linux.interface import OVSInterfaceDriver
- from neutron._i18n import _LE, _LW
- from neutron.agent.linux import ip_lib
-
-@@ -110,8 +111,9 @@ class Namespace(object):
-
- class RouterNamespace(Namespace):
-
-- def __init__(self, router_id, agent_conf, driver, use_ipv6):
-+ def __init__(self, router_id, agent_conf, driver, use_ipv6, ovs_driver):
- self.router_id = router_id
-+ self.ovs_driver = ovs_driver
- name = self._get_ns_name(router_id)
- super(RouterNamespace, self).__init__(
- name, agent_conf, driver, use_ipv6)
-@@ -131,7 +133,7 @@ class RouterNamespace(Namespace):
- elif d.name.startswith(ROUTER_2_FIP_DEV_PREFIX):
- ns_ip.del_veth(d.name)
- elif d.name.startswith(EXTERNAL_DEV_PREFIX):
-- self.driver.unplug(
-+ self.ovs_driver.unplug(
- d.name,
- bridge=self.agent_conf.external_network_bridge,
- namespace=self.name,
-diff --git a/neutron/agent/l3/router_info.py b/neutron/agent/l3/router_info.py
-index 3fd3934..b33fb7e 100644
---- a/neutron/agent/l3/router_info.py
-+++ b/neutron/agent/l3/router_info.py
-@@ -27,6 +27,7 @@ from neutron.common import exceptions as n_exc
- from neutron.common import ipv6_utils
- from neutron.common import utils as common_utils
- from neutron.ipam import utils as ipam_utils
-+from neutron.agent.linux.interface import OVSInterfaceDriver
-
- LOG = logging.getLogger(__name__)
- INTERNAL_DEV_PREFIX = namespaces.INTERNAL_DEV_PREFIX
-@@ -47,6 +48,7 @@ class RouterInfo(object):
- agent_conf,
- interface_driver,
- use_ipv6=False):
-+ self.ovs_driver = OVSInterfaceDriver(agent_conf)
- self.router_id = router_id
- self.ex_gw_port = None
- self._snat_enabled = None
-@@ -57,7 +59,7 @@ class RouterInfo(object):
- self.router = router
- self.use_ipv6 = use_ipv6
- ns = self.create_router_namespace_object(
-- router_id, agent_conf, interface_driver, use_ipv6)
-+ router_id, agent_conf, interface_driver, use_ipv6, self.ovs_driver)
- self.router_namespace = ns
- self.ns_name = ns.name
- self.available_mark_ids = set(range(ADDRESS_SCOPE_MARK_ID_MIN,
-@@ -94,9 +96,9 @@ class RouterInfo(object):
- self.router_namespace.create()
-
- def create_router_namespace_object(
-- self, router_id, agent_conf, iface_driver, use_ipv6):
-+ self, router_id, agent_conf, iface_driver, use_ipv6, ovs_driver):
- return namespaces.RouterNamespace(
-- router_id, agent_conf, iface_driver, use_ipv6)
-+ router_id, agent_conf, iface_driver, use_ipv6, ovs_driver)
-
- @property
- def router(self):
-@@ -583,7 +585,7 @@ class RouterInfo(object):
- for ip in floating_ips]
-
- def _plug_external_gateway(self, ex_gw_port, interface_name, ns_name):
-- self.driver.plug(ex_gw_port['network_id'],
-+ self.ovs_driver.plug(ex_gw_port['network_id'],
- ex_gw_port['id'],
- interface_name,
- ex_gw_port['mac_address'],
-@@ -641,7 +643,7 @@ class RouterInfo(object):
-
- self._add_route_to_gw(ex_gw_port, device_name=interface_name,
- namespace=ns_name, preserve_ips=preserve_ips)
-- self.driver.init_router_port(
-+ self.ovs_driver.init_router_port(
- interface_name,
- ip_cidrs,
- namespace=ns_name,
-@@ -735,7 +737,7 @@ class RouterInfo(object):
- for stale_dev in stale_devs:
- LOG.debug('Deleting stale external router device: %s', stale_dev)
- pd.remove_gw_interface(self.router['id'])
-- self.driver.unplug(stale_dev,
-+ self.ovs_driver.unplug(stale_dev,
- bridge=self.agent_conf.external_network_bridge,
- namespace=self.ns_name,
- prefix=EXTERNAL_DEV_PREFIX)
-diff --git a/neutron/agent/linux/interface.py b/neutron/agent/linux/interface.py
-index c2eb06e..80da16f 100644
---- a/neutron/agent/linux/interface.py
-+++ b/neutron/agent/linux/interface.py
-@@ -15,7 +15,7 @@
-
- import abc
- import time
--
-+import eventlet
- import netaddr
- from neutron_lib import constants
- from oslo_config import cfg
-@@ -288,6 +288,80 @@ class NullDriver(LinuxInterfaceDriver):
- def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
- pass
-
-+class NSDriver(LinuxInterfaceDriver):
-+ """Device independent driver enabling creation of a non device specific
-+ interface in network spaces. Attachment to the device is not performed.
-+ """
-+ MAX_TIME_FOR_DEVICE_EXISTENCE = 30
-+
-+ @classmethod
-+ def _device_is_created_in_time(cls, device_name):
-+ """See if device is created, within time limit."""
-+ attempt = 0
-+ while attempt < NSDriver.MAX_TIME_FOR_DEVICE_EXISTENCE:
-+ if ip_lib.device_exists(device_name):
-+ return True
-+ attempt += 1
-+ eventlet.sleep(1)
-+ LOG.error(_LE("Device %(dev)s was not created in %(time)d seconds"),
-+ {'dev': device_name,
-+ 'time': NSDriver.MAX_TIME_FOR_DEVICE_EXISTENCE})
-+ return False
-+
-+ def _configure_mtu(self, ns_dev, mtu=None):
-+ # Need to set MTU, after added to namespace. See review
-+ # https://review.openstack.org/327651
-+ try:
-+ # Note: network_device_mtu will be deprecated in future
-+ mtu_override = self.conf.network_device_mtu
-+ except cfg.NoSuchOptError:
-+ LOG.warning(_LW("Config setting for MTU deprecated - any "
-+ "override will be ignored."))
-+ mtu_override = None
-+ if mtu_override:
-+ mtu = mtu_override
-+ LOG.debug("Overriding MTU to %d", mtu)
-+ if mtu:
-+ ns_dev.link.set_mtu(mtu)
-+ else:
-+ LOG.debug("No MTU provided - skipping setting value")
-+
-+ def plug(self, network_id, port_id, device_name, mac_address,
-+ bridge=None, namespace=None, prefix=None, mtu=None):
-+
-+ # Overriding this, we still want to add an existing device into the
-+ # namespace.
-+ self.plug_new(network_id, port_id, device_name, mac_address,
-+ bridge, namespace, prefix, mtu)
-+
-+ def plug_new(self, network_id, port_id, device_name, mac_address,
-+ bridge=None, namespace=None, prefix=None, mtu=None):
-+
-+ ip = ip_lib.IPWrapper()
-+ ns_dev = ip.device(device_name)
-+
-+ LOG.debug("Plugging dev: '%s' into namespace: '%s' ",
-+ device_name, namespace)
-+
-+ # Wait for device creation
-+ if not self._device_is_created_in_time(device_name):
-+ return
-+
-+ ns_dev.link.set_address(mac_address)
-+
-+ if namespace:
-+ namespace_obj = ip.ensure_namespace(namespace)
-+ namespace_obj.add_device_to_namespace(ns_dev)
-+
-+ self._configure_mtu(ns_dev, mtu)
-+
-+ ns_dev.link.set_up()
-+
-+ def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
-+ # Device removal is done externally. Just remove the namespace
-+ LOG.debug("Removing namespace: '%s'", namespace)
-+ ip_lib.IPWrapper(namespace).garbage_collect_namespace()
-+
-
- class OVSInterfaceDriver(LinuxInterfaceDriver):
- """Driver for creating an internal interface on an OVS bridge."""
-diff --git a/neutron/agent/l3/ha_router.py b/usr/lib/python2.7/site-packages/neutron/agent/l3/ha_router.py
-index ca0e50d..2c4fdad 100644
---- a/neutron/agent/l3/ha_router.py
-+++ b/usr/lib/python2.7/site-packages/neutron/agent/l3/ha_router.py
-@@ -52,15 +52,14 @@ class HaRouterNamespace(namespaces.RouterNamespace):
- class HaRouter(router.RouterInfo):
- def __init__(self, state_change_callback, *args, **kwargs):
- super(HaRouter, self).__init__(*args, **kwargs)
--
- self.ha_port = None
- self.keepalived_manager = None
- self.state_change_callback = state_change_callback
-
- def create_router_namespace_object(
-- self, router_id, agent_conf, iface_driver, use_ipv6):
-+ self, router_id, agent_conf, iface_driver, use_ipv6, ovs_driver):
- return HaRouterNamespace(
-- router_id, agent_conf, iface_driver, use_ipv6)
-+ router_id, agent_conf, iface_driver, use_ipv6, ovs_driver)
-
- @property
- def ha_priority(self):
-
---
-2.9.3
-