self._populate_networks_cache()
self._process_monitor = external_process.ProcessMonitor(
config=self.conf,
- root_helper=self.root_helper,
resource_type='dhcp')
def _populate_networks_cache(self):
self.process_monitor = external_process.ProcessMonitor(
config=self.conf,
- root_helper=self.root_helper,
resource_type='router')
try:
Note: The manager expects uuid to be in cmdline.
"""
- def __init__(self, conf, uuid, root_helper='sudo',
- namespace=None, service=None, pids_path=None,
- default_cmd_callback=None,
+ def __init__(self, conf, uuid, namespace=None, service=None,
+ pids_path=None, default_cmd_callback=None,
cmd_addl_env=None, pid_file=None):
self.conf = conf
self.uuid = uuid
- self.root_helper = root_helper
self.namespace = namespace
self.default_cmd_callback = default_cmd_callback
self.cmd_addl_env = cmd_addl_env
cmd_callback = self.default_cmd_callback
cmd = cmd_callback(self.get_pid_file_name())
- ip_wrapper = ip_lib.IPWrapper(self.root_helper, self.namespace)
+ ip_wrapper = ip_lib.IPWrapper(namespace=self.namespace)
ip_wrapper.netns.execute(cmd, addl_env=self.cmd_addl_env)
elif reload_cfg:
self.reload_cfg()
if self.active:
cmd = ['kill', '-%s' % (sig), pid]
- utils.execute(cmd, self.root_helper)
+ utils.execute(cmd, run_as_root=True)
# In the case of shutting down, remove the pid file
if sig == '9':
fileutils.delete_if_exists(self.get_pid_file_name())
class ProcessMonitor(object):
- def __init__(self, config, root_helper, resource_type):
+ def __init__(self, config, resource_type):
"""Handle multiple process managers and watch over all of them.
:param config: oslo config object with the agent configuration.
:type config: oslo_config.ConfigOpts
- :param root_helper: root helper to be used with new ProcessManagers
- :type root_helper: str
:param resource_type: can be dhcp, router, load_balancer, etc.
:type resource_type: str
"""
self._config = config
- self._root_helper = root_helper
self._resource_type = resource_type
self._process_managers = {}
cmd_addl_env, pid_file):
return ProcessManager(conf=self._config,
uuid=uuid,
- root_helper=self._root_helper,
namespace=namespace,
service=service,
default_cmd_callback=cmd_callback,
return external_process.ProcessManager(
conf,
resource_id,
- root_helper,
namespace,
pids_path=conf_path)
return external_process.ProcessManager(
conf,
router_id,
- config.get_root_helper(conf),
ns_name)
@classmethod
return conf
-def _get_dhcp_process_monitor(config, root_helper):
+def _get_dhcp_process_monitor(config):
return external_process.ProcessMonitor(
config=config,
- root_helper=root_helper,
resource_type='dhcp')
dhcp_driver = importutils.import_object(
conf.dhcp_driver,
conf=conf,
- process_monitor=_get_dhcp_process_monitor(conf, root_helper),
+ process_monitor=_get_dhcp_process_monitor(conf),
network=dhcp.NetModel(conf.use_namespaces, {'id': network_id}),
root_helper=root_helper,
plugin=FakeDhcpPlugin())
process = external_process.ProcessManager(
cfg.CONF,
'router1',
- self.root_helper,
namespace=None,
pids_path=cfg.CONF.state_path)
self.assertTrue(process.active)
def build_process_monitor(self):
return external_process.ProcessMonitor(
config=cfg.CONF,
- root_helper=None,
resource_type='test')
def _make_cmdline_callback(self, uuid):
pm = external_process.ProcessManager(
conf,
router.router_id,
- self.root_helper,
router.ns_name)
return pm.active
conf.AGENT.check_child_processes = True
self.pmonitor = external_process.ProcessMonitor(
config=conf,
- root_helper=None,
resource_type='test')
def get_monitored_process_manager(self, uuid, service=None):
from oslo_config import cfg
-from neutron.agent.common import config as agent_config
from neutron.agent.l3 import config as l3_config
from neutron.agent.metadata import driver as metadata_driver
from neutron.openstack.common import uuidutils
super(TestMetadataDriver, self).setUp()
cfg.CONF.register_opts(l3_config.OPTS)
cfg.CONF.register_opts(metadata_driver.MetadataDriver.OPTS)
- agent_config.register_root_helper(cfg.CONF)
def test_metadata_nat_rules(self):
rules = ('PREROUTING', '-s 0.0.0.0/0 -d 169.254.169.254/32 '
mock.patch(ip_class_path)) as (geteuid, getegid, ip_mock):
driver._spawn_metadata_proxy(router_id, router_ns, cfg.CONF)
ip_mock.assert_has_calls([
- mock.call('sudo', router_ns),
+ mock.call(namespace=router_ns),
mock.call().netns.execute([
'neutron-ns-metadata-proxy',
mock.ANY,
def _process_manager_constructor_call(self):
return mock.call(conf=cfg.CONF,
uuid=FAKE_NETWORK_UUID,
- root_helper='sudo',
namespace=FAKE_NETWORK_DHCP_NS,
service=None,
default_cmd_callback=mock.ANY,
service=process,
default_cmd_callback=mock.ANY,
namespace=ri.ns_name,
- root_helper=self.conf.AGENT.root_helper,
conf=self.conf,
pid_file=None,
cmd_addl_env=None)]
manager.enable(callback)
callback.assert_called_once_with('pidfile')
ip_lib.assert_has_calls([
- mock.call.IPWrapper('sudo', 'ns'),
+ mock.call.IPWrapper(namespace='ns'),
mock.call.IPWrapper().netns.execute(['the', 'cmd'],
addl_env=None)])
pid.__get__ = mock.Mock(return_value=4)
with mock.patch.object(ep.ProcessManager, 'active') as active:
active.__get__ = mock.Mock(return_value=True)
-
manager = ep.ProcessManager(self.conf, 'uuid')
- manager.disable()
- self.execute(['kill', '-9', 4], 'sudo')
+
+ with mock.patch.object(ep, 'utils') as utils:
+ manager.disable()
+ utils.assert_has_calls(
+ mock.call.execute(['kill', '-9', 4], run_as_root=True))
def test_disable_namespace(self):
with mock.patch.object(ep.ProcessManager, 'pid') as pid:
with mock.patch.object(ep, 'utils') as utils:
manager.disable()
utils.assert_has_calls(
- mock.call.execute(['kill', '-9', 4], 'sudo'))
+ mock.call.execute(['kill', '-9', 4], run_as_root=True))
def test_disable_not_active(self):
with mock.patch.object(ep.ProcessManager, 'pid') as pid: