aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames O. D. Hunt <james.o.hunt@intel.com>2017-10-05 11:09:30 +0100
committerBryn M. Reeves <bmr@redhat.com>2018-04-04 17:16:01 +0100
commit54c28fd10a9656abe3726254b2e91c7c61c6413d (patch)
tree241ddcd627d3f9815adce8a248296035ec0956aa
parentcc415800f41685801cea95c680d54f7533c895bb (diff)
downloadsos-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.py89
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 :