예제 #1
0
    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]]
예제 #2
0
 def setUp(self):
     self.mp = MockPlugin({
         'cmdlineopts': MockOptions(),
         'policy': LinuxPolicy(init=InitSystem(), probe_runtime=False),
         'sysroot': os.getcwd(),
         'devices': {}
     })
     self.mp.archive = MockArchive()
예제 #3
0
 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=[]), [])
예제 #4
0
 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)
예제 #5
0
 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"))
예제 #6
0
 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>")
예제 #7
0
 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")
예제 #8
0
 def setUp(self):
     self.commons = {
         'sysroot': '/',
         'policy': LinuxPolicy(init=InitSystem()),
         'cmdlineopts': MockOptions(),
         'devices': {}
     }
     self.plugin = MockPlugin(self.commons)
예제 #9
0
 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)
예제 #10
0
 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'])
예제 #11
0
 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.")
예제 #12
0
 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, {})
예제 #13
0
 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)
예제 #14
0
 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'}
     ]
예제 #15
0
 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')
예제 #16
0
파일: sosnode.py 프로젝트: mamatha4/sos
 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