def __init__(self, sysroot=None, init=None, probe_runtime=True): super(LinuxPolicy, self).__init__(sysroot=sysroot, probe_runtime=probe_runtime) self.init_kernel_modules() if init is not None: self.init_system = init elif os.path.isdir("/run/systemd/system/"): self.init_system = SystemdInit() else: self.init_system = InitSystem() self.runtimes = {} if self.probe_runtime: _crun = [ PodmanContainerRuntime(policy=self), DockerContainerRuntime(policy=self) ] for runtime in _crun: if runtime.check_is_active(): self.runtimes[runtime.name] = runtime if runtime.name == self.default_container_runtime: self.runtimes['default'] = self.runtimes[runtime.name] self.runtimes[runtime.name].load_container_info() if self.runtimes and 'default' not in self.runtimes.keys(): # still allow plugins to query a runtime present on the system # even if that is not the policy default one idx = list(self.runtimes.keys()) self.runtimes['default'] = self.runtimes[idx[0]]
def setUp(self): self.mp = MockPlugin({ 'cmdlineopts': MockOptions(), 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'sysroot': os.getcwd(), 'devices': {} }) self.mp.archive = MockArchive()
def test_get_option_as_list_plugin_option_default(self): p = MockPlugin({ 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions(), 'devices': {} }) self.assertEquals(p.get_option_as_list("opt", default=[]), [])
def test_get_unset_plugin_option(self): p = MockPlugin({ 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions(), 'devices': {} }) self.assertEquals(p.get_option("opt"), None)
def test_set_nonexistant_plugin_option(self): p = MockPlugin({ 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions(), 'devices': {} }) self.assertFalse(p.set_option("badopt", "testing"))
def test_plugin_no_descrip(self): p = MockPlugin({ 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions(), 'devices': {} }) self.assertEquals(p.get_description(), "<no description available>")
def test_plugin_set_name(self): p = NamedMockPlugin({ 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions(), 'devices': {} }) self.assertEquals(p.name(), "testing")
def setUp(self): self.commons = { 'sysroot': '/', 'policy': LinuxPolicy(init=InitSystem()), 'cmdlineopts': MockOptions(), 'devices': {} } self.plugin = MockPlugin(self.commons)
def test_postproc_default_on(self): p = PostprocMockPlugin({ 'cmdlineopts': MockOptions(), 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem()), 'devices': {} }) p.postproc() self.assertTrue(p.did_postproc)
def test_get_option_as_list_plugin_option_not_list(self): p = MockPlugin({ 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions(), 'devices': {} }) p.set_option("opt", "testing") self.assertEquals(p.get_option_as_list("opt"), ['testing'])
def test_plugin_has_descrip(self): p = NamedMockPlugin({ 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions(), 'devices': {} }) self.assertEquals(p.get_description(), "This plugin has a description.")
def test_copy_dir_forbidden_path(self): p = ForbiddenMockPlugin({ 'cmdlineopts': MockOptions(), 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'devices': {} }) p.archive = MockArchive() p.setup() p.collect() self.assertEquals(p.archive.m, {})
def test_get_unset_plugin_option_with_default(self): # this shows that even when we pass in a default to get, # we'll get the option's default as set in the plugin # this might not be what we really want p = MockPlugin({ 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions(), 'devices': {} }) self.assertEquals(p.get_option("opt", True), True)
def setUp(self): self.commons = { 'sysroot': '/', 'policy': LinuxPolicy(init=InitSystem()), 'cmdlineopts': MockOptions(), 'devices': {} } self.plugin = Plugin(self.commons) self.plugin.opt_names = ['baz', 'empty', 'test_option'] self.plugin.opt_parms = [ {'enabled': False}, {'enabled': None}, {'enabled': 'foobar'} ]
def test_set_default_cmd_env(self): p = MockPlugin({ 'sysroot': self.sysroot, 'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False), 'cmdlineopts': MockOptions(), 'devices': {} }) e = {'TORVALDS': 'Linus'} p.set_default_cmd_environment(e) self.assertEquals(p.default_environment, e) add_e = {'GREATESTSPORT': 'hockey'} p.add_default_cmd_environment(add_e) self.assertEquals(p.default_environment['GREATESTSPORT'], 'hockey') self.assertEquals(p.default_environment['TORVALDS'], 'Linus')
def determine_host_policy(self): """Attempts to identify the host installation against supported distributions """ if self.local: self.log_info("using local policy %s" % self.commons['policy'].distro) return self.commons['policy'] host = load(cache={}, sysroot=self.opts.sysroot, init=InitSystem(), probe_runtime=True, remote_exec=self._transport.remote_exec, remote_check=self.read_file('/etc/os-release')) if host: self.log_info("loaded policy %s for host" % host.distro) return host self.log_error('Unable to determine host installation. Ignoring node') raise UnsupportedHostException