]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Remove root_helper arg from L3 Agent
authorTerry Wilson <twilson@redhat.com>
Tue, 10 Feb 2015 13:37:34 +0000 (07:37 -0600)
committerTerry Wilson <twilson@redhat.com>
Fri, 13 Feb 2015 10:08:36 +0000 (04:08 -0600)
Remove the root_helper arg from the L3 agent.

Change-Id: Ib66813d9823618cdc3caf48673721173f0bdf5fc
Partially-Implements: blueprint rootwrap-daemon-mode
Depends-On: I1e3b64e5a1d6cff2aebc638710487bbdbdba61d4

15 files changed:
neutron/agent/l3/agent.py
neutron/agent/l3/dvr.py
neutron/agent/l3/dvr_fip_ns.py
neutron/agent/l3/dvr_router.py
neutron/agent/l3/ha_router.py
neutron/agent/l3/router_info.py
neutron/agent/linux/interface.py
neutron/agent/linux/keepalived.py
neutron/services/advanced_service.py
neutron/services/firewall/agents/l3reference/firewall_l3_agent.py
neutron/tests/functional/agent/linux/test_keepalived.py
neutron/tests/unit/agent/l3/test_router_info.py
neutron/tests/unit/agent/test_dvr_fip_ns.py
neutron/tests/unit/test_dvr_router.py
neutron/tests/unit/test_l3_agent.py

index c21edd69384cba0f940d840d552c56c6eff1b85b..c897f52363f6e7c9ee9604e49630174c2fe6d9cf 100644 (file)
@@ -21,7 +21,6 @@ from oslo_utils import excutils
 from oslo_utils import importutils
 from oslo_utils import timeutils
 
-from neutron.agent.common import config
 from neutron.agent.l3 import dvr
 from neutron.agent.l3 import dvr_fip_ns
 from neutron.agent.l3 import dvr_router
@@ -145,7 +144,6 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
             self.conf = conf
         else:
             self.conf = cfg.CONF
-        self.root_helper = config.get_root_helper(self.conf)
         self.router_info = {}
 
         self._check_config_params()
@@ -235,9 +233,9 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
         the database as being hosted on this node.
         """
         try:
-            root_ip = ip_lib.IPWrapper(self.root_helper)
+            root_ip = ip_lib.IPWrapper()
 
-            host_namespaces = root_ip.get_namespaces(self.root_helper)
+            host_namespaces = root_ip.get_namespaces()
             return set(ns for ns in host_namespaces
                        if (ns.startswith(NS_PREFIX)
                            or ns.startswith(dvr.SNAT_NS_PREFIX)))
@@ -289,7 +287,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
         router_id = self.get_router_id(ns)
         if router_id in self.router_info:
             self.router_info[router_id].radvd.disable()
-        ns_ip = ip_lib.IPWrapper(self.root_helper, namespace=ns)
+        ns_ip = ip_lib.IPWrapper(namespace=ns)
         for d in ns_ip.get_devices(exclude_loopback=True):
             if d.name.startswith(INTERNAL_DEV_PREFIX):
                 # device is on default bridge
@@ -307,7 +305,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
             self._delete_namespace(ns_ip, ns)
 
     def _create_namespace(self, name):
-        ip_wrapper_root = ip_lib.IPWrapper(self.root_helper)
+        ip_wrapper_root = ip_lib.IPWrapper()
         ip_wrapper = ip_wrapper_root.ensure_namespace(name)
         ip_wrapper.netns.execute(['sysctl', '-w', 'net.ipv4.ip_forward=1'])
         if self.use_ipv6:
@@ -356,7 +354,6 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
         args = []
         kwargs = {
             'router_id': router_id,
-            'root_helper': self.root_helper,
             'router': router,
             'use_ipv6': self.use_ipv6,
             'ns_name': ns_name,
@@ -423,8 +420,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
         port['ip_cidr'] = "%s/%s" % (ips[0]['ip_address'], prefixlen)
 
     def _get_existing_devices(self, ri):
-        ip_wrapper = ip_lib.IPWrapper(root_helper=self.root_helper,
-                                      namespace=ri.ns_name)
+        ip_wrapper = ip_lib.IPWrapper(namespace=ri.ns_name)
         ip_devs = ip_wrapper.get_devices(exclude_loopback=True)
         return [ip_dev.name for ip_dev in ip_devs]
 
@@ -691,9 +687,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
     def _get_external_device_interface_name(self, ri, ex_gw_port):
         if ri.router['distributed']:
             fip_int = ri.fip_ns.get_int_device_name(ri.router_id)
-            if ip_lib.device_exists(fip_int,
-                                    root_helper=self.root_helper,
-                                    namespace=ri.fip_ns.get_name()):
+            if ip_lib.device_exists(fip_int, namespace=ri.fip_ns.get_name()):
                 return ri.fip_ns.get_rtr_ext_device_name(ri.router_id)
         else:
             return self.get_external_device_name(ex_gw_port['id'])
@@ -724,8 +718,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
                 ip_lib.send_gratuitous_arp(ri.ns_name,
                                            interface_name,
                                            fip_ip,
-                                           self.conf.send_arp_for_ha,
-                                           self.root_helper)
+                                           self.conf.send_arp_for_ha)
             return l3_constants.FLOATINGIP_STATUS_ACTIVE
 
     def _remove_floating_ip(self, ri, device, ip_cidr):
@@ -734,8 +727,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
         else:
             net = netaddr.IPNetwork(ip_cidr)
             device.addr.delete(net.version, ip_cidr)
-            self.driver.delete_conntrack_state(root_helper=self.root_helper,
-                                               namespace=ri.ns_name,
+            self.driver.delete_conntrack_state(namespace=ri.ns_name,
                                                ip=ip_cidr)
             if ri.router['distributed']:
                 ri.floating_ip_removed_dist(ip_cidr)
@@ -759,8 +751,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
                       ri.router['id'])
             return fip_statuses
 
-        device = ip_lib.IPDevice(interface_name, self.root_helper,
-                                 namespace=ri.ns_name)
+        device = ip_lib.IPDevice(interface_name, namespace=ri.ns_name)
         existing_cidrs = self._get_router_cidrs(ri, device)
         new_cidrs = set()
 
@@ -813,7 +804,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
 
     def external_gateway_added(self, ri, ex_gw_port, interface_name):
         if ri.router['distributed']:
-            ip_wrapr = ip_lib.IPWrapper(self.root_helper, namespace=ri.ns_name)
+            ip_wrapr = ip_lib.IPWrapper(namespace=ri.ns_name)
             ip_wrapr.netns.execute(['sysctl', '-w',
                                    'net.ipv4.conf.all.send_redirects=0'])
             snat_ports = self.get_snat_interfaces(ri)
@@ -873,9 +864,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
 
     def _external_gateway_added(self, ri, ex_gw_port, interface_name,
                                 ns_name, preserve_ips):
-        if not ip_lib.device_exists(interface_name,
-                                    root_helper=self.root_helper,
-                                    namespace=ns_name):
+        if not ip_lib.device_exists(interface_name, namespace=ns_name):
             self.driver.plug(ex_gw_port['network_id'],
                              ex_gw_port['id'], interface_name,
                              ex_gw_port['mac_address'],
@@ -893,8 +882,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
             ip_lib.send_gratuitous_arp(ns_name,
                                        interface_name,
                                        ip_address,
-                                       self.conf.send_arp_for_ha,
-                                       self.root_helper)
+                                       self.conf.send_arp_for_ha)
 
     def external_gateway_removed(self, ri, ex_gw_port, interface_name):
         if ri.router['distributed']:
@@ -939,9 +927,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
     def _internal_network_added(self, ns_name, network_id, port_id,
                                 internal_cidr, mac_address,
                                 interface_name, prefix, is_ha=False):
-        if not ip_lib.device_exists(interface_name,
-                                    root_helper=self.root_helper,
-                                    namespace=ns_name):
+        if not ip_lib.device_exists(interface_name, namespace=ns_name):
             self.driver.plug(network_id, port_id, interface_name, mac_address,
                              namespace=ns_name,
                              prefix=prefix)
@@ -953,8 +939,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
             ip_lib.send_gratuitous_arp(ns_name,
                                        interface_name,
                                        ip_address,
-                                       self.conf.send_arp_for_ha,
-                                       self.root_helper)
+                                       self.conf.send_arp_for_ha)
 
     def internal_network_added(self, ri, port):
         network_id = port['network_id']
@@ -1011,14 +996,11 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback,
                     ns_name = self.get_snat_ns_name(ri.router['id'])
                     prefix = dvr.SNAT_INT_DEV_PREFIX
                     if ip_lib.device_exists(snat_interface,
-                                            root_helper=self.root_helper,
                                             namespace=ns_name):
                         self.driver.unplug(snat_interface, namespace=ns_name,
                                            prefix=prefix)
 
-        if ip_lib.device_exists(interface_name,
-                                root_helper=self.root_helper,
-                                namespace=ri.ns_name):
+        if ip_lib.device_exists(interface_name, namespace=ri.ns_name):
             if ri.is_ha:
                 ri._clear_vips(interface_name)
             self.driver.unplug(interface_name, namespace=ri.ns_name,
index ebf4358abc078b7c9f926e1d19a17ddce8a02fcc..fab6f05752721883dc35fae842164606ab3099d9 100644 (file)
@@ -49,14 +49,13 @@ class AgentMixin(object):
         fip_ns = dvr_fip_ns.FipNamespace(ext_net_id,
                                          self.conf,
                                          self.driver,
-                                         self.root_helper,
                                          self.use_ipv6)
         self._fip_namespaces[ext_net_id] = fip_ns
 
         return fip_ns
 
     def _destroy_snat_namespace(self, ns):
-        ns_ip = ip_lib.IPWrapper(self.root_helper, namespace=ns)
+        ns_ip = ip_lib.IPWrapper(namespace=ns)
         # delete internal interfaces
         for d in ns_ip.get_devices(exclude_loopback=True):
             if d.name.startswith(SNAT_INT_DEV_PREFIX):
@@ -175,9 +174,8 @@ class AgentMixin(object):
         try:
             ip_cidr = sn_port['ip_cidr']
             snat_idx = self._get_snat_idx(ip_cidr)
-            ns_ipr = ip_lib.IpRule(self.root_helper, namespace=ri.ns_name)
-            ns_ipd = ip_lib.IPDevice(sn_int, self.root_helper,
-                                     namespace=ri.ns_name)
+            ns_ipr = ip_lib.IpRule(namespace=ri.ns_name)
+            ns_ipd = ip_lib.IPDevice(sn_int, namespace=ri.ns_name)
             ns_ipd.route.add_gateway(gateway, table=snat_idx)
             ns_ipr.add(ip_cidr, snat_idx, snat_idx)
             ns_ipr.netns.execute(['sysctl', '-w', 'net.ipv4.conf.%s.'
@@ -190,9 +188,8 @@ class AgentMixin(object):
         try:
             ip_cidr = sn_port['ip_cidr']
             snat_idx = self._get_snat_idx(ip_cidr)
-            ns_ipr = ip_lib.IpRule(self.root_helper, namespace=ri.ns_name)
-            ns_ipd = ip_lib.IPDevice(sn_int, self.root_helper,
-                                     namespace=ri.ns_name)
+            ns_ipr = ip_lib.IpRule(namespace=ri.ns_name)
+            ns_ipd = ip_lib.IPDevice(sn_int, namespace=ri.ns_name)
             ns_ipd.route.delete_gateway(table=snat_idx)
             ns_ipr.delete(ip_cidr, snat_idx, snat_idx)
         except Exception:
@@ -208,8 +205,7 @@ class AgentMixin(object):
                 # TODO(mrsmith): optimize the calls below for bulk calls
                 net = netaddr.IPNetwork(ip_cidr)
                 interface_name = self.get_internal_device_name(port['id'])
-                device = ip_lib.IPDevice(interface_name, self.root_helper,
-                                         namespace=ri.ns_name)
+                device = ip_lib.IPDevice(interface_name, namespace=ri.ns_name)
                 if operation == 'add':
                     device.neigh.add(net.version, ip, mac)
                 elif operation == 'delete':
index 154d1f0415539e2ed22a34f391f31b47ecdd6710..a8bd68014363e8ef36726a25380fc0931fe297f6 100644 (file)
@@ -37,11 +37,10 @@ FIP_PR_END = FIP_PR_START + 40000
 
 
 class FipNamespace(object):
-    def __init__(self, ext_net_id, agent_conf, driver, root_helper, use_ipv6):
+    def __init__(self, ext_net_id, agent_conf, driver, use_ipv6):
         self._ext_net_id = ext_net_id
         self.agent_conf = agent_conf
         self.driver = driver
-        self.root_helper = root_helper
         self.use_ipv6 = use_ipv6
         self.agent_gateway_port = None
         self._subscribers = set()
@@ -86,9 +85,7 @@ class FipNamespace(object):
     def _gateway_added(self, ex_gw_port, interface_name):
         """Add Floating IP gateway port."""
         ns_name = self.get_name()
-        if not ip_lib.device_exists(interface_name,
-                                    root_helper=self.root_helper,
-                                    namespace=ns_name):
+        if not ip_lib.device_exists(interface_name, namespace=ns_name):
             self.driver.plug(ex_gw_port['network_id'],
                              ex_gw_port['id'],
                              interface_name,
@@ -105,24 +102,21 @@ class FipNamespace(object):
         ip_lib.send_gratuitous_arp(ns_name,
                                    interface_name,
                                    ip_address,
-                                   self.agent_conf.send_arp_for_ha,
-                                   self.root_helper)
+                                   self.agent_conf.send_arp_for_ha)
 
         gw_ip = ex_gw_port['subnet']['gateway_ip']
         if gw_ip:
-            ipd = ip_lib.IPDevice(interface_name,
-                                  self.root_helper,
-                                  namespace=ns_name)
+            ipd = ip_lib.IPDevice(interface_name, namespace=ns_name)
             ipd.route.add_gateway(gw_ip)
 
         cmd = ['sysctl', '-w', 'net.ipv4.conf.%s.proxy_arp=1' % interface_name]
         # TODO(Carl) mlavelle's work has self.ip_wrapper
-        ip_wrapper = ip_lib.IPWrapper(self.root_helper, namespace=ns_name)
+        ip_wrapper = ip_lib.IPWrapper(namespace=ns_name)
         ip_wrapper.netns.execute(cmd, check_exit_code=False)
 
     def create(self):
         # TODO(Carl) Get this functionality from mlavelle's namespace baseclass
-        ip_wrapper_root = ip_lib.IPWrapper(self.root_helper)
+        ip_wrapper_root = ip_lib.IPWrapper()
         ip_wrapper = ip_wrapper_root.ensure_namespace(self.get_name())
         ip_wrapper.netns.execute(['sysctl', '-w', 'net.ipv4.ip_forward=1'])
         if self.use_ipv6:
@@ -139,7 +133,7 @@ class FipNamespace(object):
         ns = self.get_name()
         # TODO(carl) Reconcile this with mlavelle's namespace work
         # TODO(carl) mlavelle's work has self.ip_wrapper
-        ip_wrapper = ip_lib.IPWrapper(self.root_helper, namespace=ns)
+        ip_wrapper = ip_lib.IPWrapper(namespace=ns)
         for d in ip_wrapper.get_devices(exclude_loopback=True):
             if d.name.startswith(FIP_2_ROUTER_DEV_PREFIX):
                 # internal link between IRs and FIP NS
@@ -179,7 +173,7 @@ class FipNamespace(object):
 
     def _internal_ns_interface_added(self, ip_cidr,
                                     interface_name, ns_name):
-        ip_wrapper = ip_lib.IPWrapper(self.root_helper, namespace=ns_name)
+        ip_wrapper = ip_lib.IPWrapper(namespace=ns_name)
         ip_wrapper.netns.execute(['ip', 'addr', 'add',
                                   ip_cidr, 'dev', interface_name])
 
@@ -193,10 +187,8 @@ class FipNamespace(object):
         if ri.rtr_fip_subnet is None:
             ri.rtr_fip_subnet = self.local_subnets.allocate(ri.router_id)
         rtr_2_fip, fip_2_rtr = ri.rtr_fip_subnet.get_pair()
-        ip_wrapper = ip_lib.IPWrapper(self.root_helper,
-                                      namespace=ri.ns_name)
+        ip_wrapper = ip_lib.IPWrapper(namespace=ri.ns_name)
         device_exists = ip_lib.device_exists(rtr_2_fip_name,
-                                             self.root_helper,
                                              namespace=ri.ns_name)
         if not device_exists:
             int_dev = ip_wrapper.add_veth(rtr_2_fip_name,
@@ -212,9 +204,7 @@ class FipNamespace(object):
             int_dev[1].link.set_up()
 
         # add default route for the link local interface
-        device = ip_lib.IPDevice(rtr_2_fip_name,
-                                 self.root_helper,
-                                 namespace=ri.ns_name)
+        device = ip_lib.IPDevice(rtr_2_fip_name, namespace=ri.ns_name)
         device.route.add_gateway(str(fip_2_rtr.ip), table=FIP_RT_TBL)
         #setup the NAT rules and chains
         ri._handle_fip_nat_rules(rtr_2_fip_name, 'add_rules')
@@ -227,12 +217,8 @@ class FipNamespace(object):
         # scan system for any existing fip ports
         ri.dist_fip_count = 0
         rtr_2_fip_interface = self.get_rtr_ext_device_name(ri.router_id)
-        if ip_lib.device_exists(rtr_2_fip_interface,
-                                root_helper=self.root_helper,
-                                namespace=ri.ns_name):
-            device = ip_lib.IPDevice(rtr_2_fip_interface,
-                                     self.root_helper,
-                                     namespace=ri.ns_name)
+        if ip_lib.device_exists(rtr_2_fip_interface, namespace=ri.ns_name):
+            device = ip_lib.IPDevice(rtr_2_fip_interface, namespace=ri.ns_name)
             existing_cidrs = [addr['cidr'] for addr in device.addr.list()]
             fip_cidrs = [c for c in existing_cidrs if
                          common_utils.is_cidr_host(c)]
index 2eca3da6507644d774795de875c4dcb5e287308c..f2adc4759bf3671291f9b072dcd2a71dfc022e85 100644 (file)
@@ -57,13 +57,12 @@ class DvrRouter(router.RouterInfo):
         rule_pr = self.fip_ns.allocate_rule_priority()
         self.floating_ips_dict[floating_ip] = rule_pr
         fip_2_rtr_name = self.fip_ns.get_int_device_name(self.router_id)
-        ip_rule = ip_lib.IpRule(self.root_helper, namespace=self.ns_name)
+        ip_rule = ip_lib.IpRule(namespace=self.ns_name)
         ip_rule.add(fixed_ip, dvr_fip_ns.FIP_RT_TBL, rule_pr)
         #Add routing rule in fip namespace
         fip_ns_name = self.fip_ns.get_name()
         rtr_2_fip, _ = self.rtr_fip_subnet.get_pair()
-        device = ip_lib.IPDevice(fip_2_rtr_name, self.root_helper,
-                                 namespace=fip_ns_name)
+        device = ip_lib.IPDevice(fip_2_rtr_name, namespace=fip_ns_name)
         device.route.add_route(fip_cidr, str(rtr_2_fip.ip))
         interface_name = (
             self.fip_ns.get_ext_device_name(
@@ -71,8 +70,7 @@ class DvrRouter(router.RouterInfo):
         ip_lib.send_garp_for_proxyarp(fip_ns_name,
                                       interface_name,
                                       floating_ip,
-                                      self.agent_conf.send_arp_for_ha,
-                                      self.root_helper)
+                                      self.agent_conf.send_arp_for_ha)
         # update internal structures
         self.dist_fip_count = self.dist_fip_count + 1
 
@@ -88,24 +86,20 @@ class DvrRouter(router.RouterInfo):
         fip_ns_name = self.fip_ns.get_name()
         if floating_ip in self.floating_ips_dict:
             rule_pr = self.floating_ips_dict[floating_ip]
-            ip_rule = ip_lib.IpRule(self.root_helper, namespace=self.ns_name)
+            ip_rule = ip_lib.IpRule(namespace=self.ns_name)
             ip_rule.delete(floating_ip, dvr_fip_ns.FIP_RT_TBL, rule_pr)
             self.fip_ns.deallocate_rule_priority(rule_pr)
             #TODO(rajeev): Handle else case - exception/log?
 
-        device = ip_lib.IPDevice(fip_2_rtr_name, self.root_helper,
-                                 namespace=fip_ns_name)
+        device = ip_lib.IPDevice(fip_2_rtr_name, namespace=fip_ns_name)
 
         device.route.delete_route(fip_cidr, str(rtr_2_fip.ip))
         # check if this is the last FIP for this router
         self.dist_fip_count = self.dist_fip_count - 1
         if self.dist_fip_count == 0:
             #remove default route entry
-            device = ip_lib.IPDevice(rtr_2_fip_name,
-                                     self.root_helper,
-                                     namespace=self.ns_name)
-            ns_ip = ip_lib.IPWrapper(self.root_helper,
-                                     namespace=fip_ns_name)
+            device = ip_lib.IPDevice(rtr_2_fip_name, namespace=self.ns_name)
+            ns_ip = ip_lib.IPWrapper(namespace=fip_ns_name)
             device.route.delete_gateway(str(fip_2_rtr.ip),
                                         table=dvr_fip_ns.FIP_RT_TBL)
             self.fip_ns.local_subnets.release(self.router_id)
index 073ff1154d265119e854a1cf900cc1c7c1b450c9..10314d7571b38752c3d84c63af903d39884a7cd7 100644 (file)
@@ -71,8 +71,7 @@ class HaRouter(router.RouterInfo):
             self.router['id'],
             keepalived.KeepalivedConf(),
             conf_path=self.agent_conf.ha_confs_path,
-            namespace=self.ns_name,
-            root_helper=self.root_helper)
+            namespace=self.ns_name)
 
     def _init_keepalived_manager(self):
         # TODO(Carl) This looks a bit funny, doesn't it?
@@ -207,7 +206,6 @@ class HaRouter(router.RouterInfo):
         process = keepalived.KeepalivedManager.get_process(
             self.agent_conf,
             self.router_id,
-            self.root_helper,
             self.ns_name,
             self.agent_conf.ha_confs_path)
         if process.active:
@@ -223,9 +221,7 @@ class HaRouter(router.RouterInfo):
         a VIP to keepalived. This means that the IPv6 link local address
         will only be present on the master.
         """
-        device = ip_lib.IPDevice(interface_name,
-                                 self.root_helper,
-                                 self.ns_name)
+        device = ip_lib.IPDevice(interface_name, namespace=self.ns_name)
         ipv6_lladdr = self._get_ipv6_lladdr(device.link.address)
 
         if self._should_delete_ipv6_lladdr(ipv6_lladdr):
index 2fbbdc450957e8ae3859ef56c066db1dfc8e5ecf..3c7a5e7dffe7deedc75215191d8c9a6249106efe 100644 (file)
@@ -25,10 +25,10 @@ class RouterInfo(object):
     def __init__(self,
                  router_id,
                  router,
-                 root_helper,
                  agent_conf,
                  interface_driver,
                  use_ipv6=False,
+                 root_helper=None,
                  ns_name=None):
         self.router_id = router_id
         self.ex_gw_port = None
@@ -36,7 +36,6 @@ class RouterInfo(object):
         self._snat_action = None
         self.internal_ports = []
         self.floating_ips = set()
-        self.root_helper = root_helper
         # Invoke the setter for establishing initial SNAT action
         self.router = router
         self.ns_name = ns_name
@@ -83,8 +82,7 @@ class RouterInfo(object):
     def _update_routing_table(self, operation, route):
         cmd = ['ip', 'route', operation, 'to', route['destination'],
                'via', route['nexthop']]
-        ip_wrapper = ip_lib.IPWrapper(self.root_helper,
-                                      namespace=self.ns_name)
+        ip_wrapper = ip_lib.IPWrapper(namespace=self.ns_name)
         ip_wrapper.netns.execute(cmd, check_exit_code=False)
 
     def routes_updated(self):
index 13e429fc3dfdd63bcef96aaca35771518581ebdc..dbdbb9a4e3113f4f24e1e3d529eb364c4bbfe0f4 100644 (file)
@@ -118,9 +118,7 @@ class LinuxInterfaceDriver(object):
         for ip_cidr, ip_version in previous.items():
             if ip_cidr not in preserve_ips:
                 device.addr.delete(ip_version, ip_cidr)
-                self.delete_conntrack_state(root_helper=self.root_helper,
-                                            namespace=namespace,
-                                            ip=ip_cidr)
+                self.delete_conntrack_state(namespace=namespace, ip=ip_cidr)
 
         if gateway:
             device.route.add_gateway(gateway)
@@ -132,21 +130,20 @@ class LinuxInterfaceDriver(object):
         for route in existing_onlink_routes - new_onlink_routes:
             device.route.delete_onlink_route(route)
 
-    def delete_conntrack_state(self, root_helper, namespace, ip):
+    def delete_conntrack_state(self, namespace, ip):
         """Delete conntrack state associated with an IP address.
 
         This terminates any active connections through an IP.  Call this soon
         after removing the IP address from an interface so that new connections
         cannot be created before the IP address is gone.
 
-        root_helper: root_helper to gain root access to call conntrack
         namespace: the name of the namespace where the IP has been configured
         ip: the IP address for which state should be removed.  This can be
             passed as a string with or without /NN.  A netaddr.IPAddress or
             netaddr.Network representing the IP address can also be passed.
         """
         ip_str = str(netaddr.IPNetwork(ip).ip)
-        ip_wrapper = ip_lib.IPWrapper(root_helper, namespace=namespace)
+        ip_wrapper = ip_lib.IPWrapper(namespace=namespace)
 
         # Delete conntrack state for ingress traffic
         # If 0 flow entries have been deleted
index bf43832d101a038c10a2c22c1e2c2132fd344e9e..904aefeb9b0d35e0099705ed045b86375ffb1f79 100644 (file)
@@ -353,11 +353,10 @@ class KeepalivedManager(KeepalivedNotifierMixin):
     """
 
     def __init__(self, resource_id, config, conf_path='/tmp',
-                 namespace=None, root_helper=None):
+                 namespace=None):
         self.resource_id = resource_id
         self.config = config
         self.namespace = namespace
-        self.root_helper = root_helper
         self.conf_path = conf_path
         self.conf = cfg.CONF
         self.process = None
@@ -384,7 +383,6 @@ class KeepalivedManager(KeepalivedNotifierMixin):
 
         self.process = self.get_process(self.conf,
                                         self.resource_id,
-                                        self.root_helper,
                                         self.namespace,
                                         self.conf_path)
 
@@ -427,7 +425,7 @@ class KeepalivedManager(KeepalivedNotifierMixin):
             self.restart()
 
     @classmethod
-    def get_process(cls, conf, resource_id, root_helper, namespace, conf_path):
+    def get_process(cls, conf, resource_id, namespace, conf_path):
         return external_process.ProcessManager(
             conf,
             resource_id,
index d7fcff1f98ef62dda095f6e61a69f5d3050504b1..4a080799fdd1dbbc97522a96ac2b5377ab315a94 100644 (file)
@@ -47,7 +47,6 @@ class AdvancedService(object):
         # from device drivers, which are now provided a service instance.
         # TODO(pcm): Address this in future refactorings.
         self.conf = l3_agent.conf
-        self.root_helper = l3_agent.root_helper
 
     @classmethod
     def instance(cls, l3_agent):
index 411bd892b0acfde455291e1920df9993b7aa2ac9..6c007a62a8b72a906e1c6a17ebfda51ea22b04b0 100644 (file)
@@ -16,7 +16,6 @@
 from oslo_config import cfg
 from oslo_utils import importutils
 
-from neutron.agent.common import config
 from neutron.agent.linux import ip_lib
 from neutron.common import exceptions as nexception
 from neutron.common import topics
@@ -81,7 +80,6 @@ class FWaaSL3AgentRpcCallback(api.FWaaSAgentRpcCallbackMixin):
                 msg = _('Error importing FWaaS device driver: %s')
                 raise ImportError(msg % fwaas_driver_class_path)
         self.services_sync = False
-        self.root_helper = config.get_root_helper(conf)
         # setup RPC to msg fwaas plugin
         self.fwplugin_rpc = FWaaSL3PluginApi(topics.FIREWALL_PLUGIN,
                                              conf.host)
@@ -89,14 +87,14 @@ class FWaaSL3AgentRpcCallback(api.FWaaSAgentRpcCallbackMixin):
 
     def _get_router_info_list_for_tenant(self, routers, tenant_id):
         """Returns the list of router info objects on which to apply the fw."""
-        root_ip = ip_lib.IPWrapper(self.root_helper)
+        root_ip = ip_lib.IPWrapper()
         # Get the routers for the tenant
         router_ids = [
             router['id']
             for router in routers
             if router['tenant_id'] == tenant_id]
-        local_ns_list = root_ip.get_namespaces(
-            self.root_helper) if self.conf.use_namespaces else []
+        local_ns_list = (root_ip.get_namespaces()
+                         if self.conf.use_namespaces else [])
 
         router_info_list = []
         # Pick up namespaces for Tenant Routers
index e8bfbfd0538188bacbc3f96c3af6b470d5fc22ab..be8b50bdb7506d009e9938b0fe30239b78163419 100644 (file)
@@ -30,8 +30,7 @@ class KeepalivedManagerTestCase(functional_base.BaseSudoTestCase,
     def test_keepalived_spawn(self):
         expected_config = self._get_config()
         manager = keepalived.KeepalivedManager('router1', expected_config,
-                                               conf_path=cfg.CONF.state_path,
-                                               root_helper=self.root_helper)
+                                               conf_path=cfg.CONF.state_path)
         self.addCleanup(manager.disable)
 
         manager.spawn()
index 126ea0d79beab5f706e1f14c76a2a2df4f40cf82..8be507754024f76038169ea8fc8a5b04cb8e17cd 100644 (file)
@@ -26,15 +26,12 @@ class TestRouterInfo(base.BaseTestCase):
         super(TestRouterInfo, self).setUp()
 
         conf = agent_config.setup_conf()
-        agent_config.register_root_helper(conf)
-        conf.root_helper = 'sudo'
 
         self.ip_cls_p = mock.patch('neutron.agent.linux.ip_lib.IPWrapper')
         ip_cls = self.ip_cls_p.start()
         self.mock_ip = mock.MagicMock()
         ip_cls.return_value = self.mock_ip
-        self.ri_kwargs = {'root_helper': conf.root_helper,
-                          'agent_conf': conf,
+        self.ri_kwargs = {'agent_conf': conf,
                           'interface_driver': mock.sentinel.interface_driver}
 
     def _check_agent_method_called(self, calls):
index 9f4bc78dba4bd5b6d29da55722a849ed595a54d7..57da7ec32f22f93aaf52fad0d0af7659d861300b 100644 (file)
@@ -34,7 +34,6 @@ class TestDvrFipNs(base.BaseTestCase):
         self.fip_ns = dvr_fip_ns.FipNamespace(self.net_id,
                                               self.conf,
                                               self.driver,
-                                              mock.sentinel.root_helper,
                                               use_ipv6=True)
 
     def test_subscribe(self):
@@ -87,7 +86,7 @@ class TestDvrFipNs(base.BaseTestCase):
         send_arp.assert_called_once_with(self.fip_ns.get_name(),
                                          mock.sentinel.interface_name,
                                          '20.0.0.30',
-                                         mock.ANY, mock.ANY)
+                                         mock.ANY)
 
     @mock.patch.object(ip_lib, 'IPWrapper')
     def test_destroy(self, IPWrapper):
index e443283487f4bc0e2c7d1f37c232e48c014c2903..2f3aa76ce92857c4a9cc3637200947d1148da48a 100644 (file)
@@ -35,7 +35,6 @@ class TestDvrRouterOperations(base.BaseTestCase):
         agent_conf = mock.Mock()
         return dvr_router.DvrRouter(mock.sentinel.router_id,
                                     router,
-                                    mock.sentinel.root_helper,
                                     agent_conf,
                                     mock.sentinel.interface_driver,
                                     **kwargs)
index 5cd7f31db888b105bbabd4d4e4bdf5ee4f1c3b21..ae042bee21b9d7c984a285abd348ec062be14301 100644 (file)
@@ -184,7 +184,6 @@ class BasicRouterOperationsFramework(base.BaseTestCase):
         self.conf.register_opts(ha.OPTS)
         agent_config.register_interface_driver_opts_helper(self.conf)
         agent_config.register_use_namespaces_opts_helper(self.conf)
-        agent_config.register_root_helper(self.conf)
         agent_config.register_process_monitor_opts(self.conf)
         self.conf.register_opts(interface.OPTS)
         self.conf.register_opts(external_process.OPTS)
@@ -193,7 +192,6 @@ class BasicRouterOperationsFramework(base.BaseTestCase):
                                'neutron.agent.linux.interface.NullDriver')
         self.conf.set_override('send_arp_for_ha', 1)
         self.conf.set_override('state_path', '')
-        self.conf.AGENT.root_helper = 'sudo'
 
         self.device_exists_p = mock.patch(
             'neutron.agent.linux.ip_lib.device_exists')
@@ -275,8 +273,7 @@ class BasicRouterOperationsFramework(base.BaseTestCase):
                                          'ip_address': '152.10.0.13'}],
                            'id': _uuid(), 'device_id': _uuid()}]
 
-        self.ri_kwargs = {'root_helper': self.conf.AGENT.root_helper,
-                          'agent_conf': self.conf,
+        self.ri_kwargs = {'agent_conf': self.conf,
                           'interface_driver': mock.sentinel.interface_driver}
 
     def _prepare_internal_network_data(self):
@@ -368,8 +365,7 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
             self.assertEqual(self.mock_driver.plug.call_count, 1)
             self.assertEqual(self.mock_driver.init_l3.call_count, 1)
             self.send_arp.assert_called_once_with(ri.ns_name, interface_name,
-                                                  '99.0.1.9',
-                                                  mock.ANY, mock.ANY)
+                                                  '99.0.1.9', mock.ANY)
         elif action == 'remove':
             self.device_exists.return_value = True
             agent.internal_network_removed(ri, port)
@@ -458,8 +454,7 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
                 self.assertEqual(self.mock_driver.init_l3.call_count, 1)
                 self.send_arp.assert_called_once_with(ri.ns_name,
                                                       interface_name,
-                                                      '20.0.0.30',
-                                                      mock.ANY, mock.ANY)
+                                                      '20.0.0.30', mock.ANY)
                 kwargs = {'preserve_ips': ['192.168.1.34/32'],
                           'namespace': 'qrouter-' + router['id'],
                           'gateway': '20.0.0.1',
@@ -516,7 +511,7 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
         self.assertEqual(self.mock_driver.plug.call_count, 0)
         self.assertEqual(self.mock_driver.init_l3.call_count, 1)
         self.send_arp.assert_called_once_with(ri.ns_name, interface_name,
-                                              '20.0.0.30', mock.ANY, mock.ANY)
+                                              '20.0.0.30', mock.ANY)
         kwargs = {'preserve_ips': ['192.168.1.34/32'],
                   'namespace': 'qrouter-' + router['id'],
                   'gateway': '20.0.0.1',
@@ -1044,7 +1039,6 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
         self.assertEqual({}, fip_statuses)
         device.addr.delete.assert_called_once_with(4, '15.1.2.3/32')
         self.mock_driver.delete_conntrack_state.assert_called_once_with(
-            root_helper=self.conf.AGENT.root_helper,
             namespace=ri.ns_name,
             ip='15.1.2.3/32')