diff options
author | James O. D. Hunt <james.o.hunt@intel.com> | 2017-10-05 11:09:30 +0100 |
---|---|---|
committer | Bryn M. Reeves <bmr@redhat.com> | 2018-04-04 17:16:01 +0100 |
commit | 54c28fd10a9656abe3726254b2e91c7c61c6413d (patch) | |
tree | 241ddcd627d3f9815adce8a248296035ec0956aa | |
parent | cc415800f41685801cea95c680d54f7533c895bb (diff) | |
download | sos-54c28fd10a9656abe3726254b2e91c7c61c6413d.tar.gz |
[clear_containers] Add new plugin for Clear Containers
Add a new plugin for the Intel(R) Clear Containers runtime
(`cc-runtime`).
See:
- https://github.com/clearcontainers/runtime
- https://github.com/clearcontainers
Resolves: #1119
Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
-rw-r--r-- | sos/plugins/clear_containers.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/sos/plugins/clear_containers.py b/sos/plugins/clear_containers.py new file mode 100644 index 00000000..78bd7450 --- /dev/null +++ b/sos/plugins/clear_containers.py @@ -0,0 +1,89 @@ +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import re + +from sos.plugins import (Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin, + SuSEPlugin) + + +class ClearContainers(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin, + SuSEPlugin): + """Intel(R) Clear Containers configuration + """ + + plugin_name = 'clear_containers' + profiles = ('system', 'virt') + + runtime = 'cc-runtime' + packages = (runtime,) + + def attach_cc_config_files(self): + + # start with the default file locations + config_files = [ + '/etc/clear-containers/configuration.toml' + '/usr/share/defaults/clear-containers/configuration.toml' + ] + + # obtain a list of config files by asking the runtime + cmd = '{} --cc-show-default-config-paths'.format(self.runtime) + configs = self.get_command_output(cmd)['output'] + + for config in configs.splitlines(): + if config != "": + config_files.append(config) + + # get a unique list of config files + config_files = set(config_files) + + self.add_copy_spec(config_files) + + def attach_cc_log_files(self): + # start with the default global log + log_files = [ + '/var/lib/clear-containers/runtime/runtime.log' + ] + + # query the runtime to find the configured global log file + cmd = '{} cc-env'.format(self.runtime) + output = self.get_command_output(cmd)['output'] + for line in output.splitlines(): + result = re.search(r'\bGlobalLogPath\b\s+=\s+"(.+)"', line) + if result: + global_logfile = result.group(1) + if global_logfile: + log_files.append(global_logfile) + break + + # get a unique list of log files + log_files = set(log_files) + + self.add_copy_spec(log_files, self.limit) + + def setup(self): + self.limit = self.get_option("log_size") + + if self.get_option("all_logs"): + # no limit on amount of data recorded + self.limit = None + + self.add_cmd_output('{} cc-env'.format(self.runtime)) + self.attach_cc_config_files() + + self.attach_cc_log_files() + self.add_journal(units="cc-proxy") + self.add_journal(identifier="cc-shim") + +# vim: set et ts=4 sw=4 : |