From fa06bc09c95c52565e29173535c7422608e9a29b Mon Sep 17 00:00:00 2001 From: Jake Hunsaker Date: Fri, 4 Jan 2019 13:35:34 -0500 Subject: [PATCH 1/4] [redhat] Add RHCOS policy Adds a policy for Red Hat CoreOS. Signed-off-by: Jake Hunsaker --- sos/policies/redhat.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py index e1e417f3..ea80704f 100644 --- a/sos/policies/redhat.py +++ b/sos/policies/redhat.py @@ -379,6 +379,48 @@ organization before being passed to any third party. return self.find_preset(ATOMIC) +class RedHatCoreOSPolicy(RHELPolicy): + distro = "Red Hat CoreOS" + msg = _("""\ +This command will collect diagnostic and configuration \ +information from this %(distro)s system. + +An archive containing the collected information will be \ +generated in %(tmpdir)s and may be provided to a %(vendor)s \ +support representative. + +Any information provided to %(vendor)s will be treated in \ +accordance with the published support policies at:\n + %(vendor_url)s + +The generated archive may contain data considered sensitive \ +and its content should be reviewed by the originating \ +organization before being passed to any third party. +%(vendor_text)s +""") + + def __init__(self, sysroot=None): + super(RedHatCoreOSPolicy, self).__init__(sysroot=sysroot) + + @classmethod + def check(cls): + coreos = False + if ENV_HOST_SYSROOT not in os.environ: + return coreos + host_release = os.environ[ENV_HOST_SYSROOT] + cls._redhat_release + try: + for line in open(host_release, 'r').read().splitlines(): + coreos |= 'Red Hat CoreOS' in line + except IOError: + pass + return coreos + + def probe_preset(self): + # As of the creation of this policy, RHCOS is only available for + # RH OCP environments. + return self.find_preset(RHOCP) + + class FedoraPolicy(RedHatPolicy): distro = "Fedora" -- 2.17.2 From 3335f265213d7457d17139ee172bf21f1a66c229 Mon Sep 17 00:00:00 2001 From: "Bryn M. Reeves" Date: Fri, 18 Jan 2019 18:03:21 +0000 Subject: [PATCH 2/4] [policies] factor out Red Hat disclaimer text Rather than repeating the same boilerplate disclaimer text in each Red Hat policy class, define it once as a string, and then cat it into each policy that requires a distinct preamble. Signed-off-by: Bryn M. Reeves --- sos/policies/redhat.py | 48 ++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py index ea80704f..1d1606b6 100644 --- a/sos/policies/redhat.py +++ b/sos/policies/redhat.py @@ -229,6 +229,19 @@ rhel_presets = { note=NOTE_TIME, opts=_opts_verify), } +# Legal disclaimer text for Red Hat products +disclaimer_text = """ +Any information provided to %(vendor)s will be treated in \ +accordance with the published support policies at:\n + %(vendor_url)s + +The generated archive may contain data considered sensitive \ +and its content should be reviewed by the originating \ +organization before being passed to any third party. + +No changes will be made to system configuration. +""" + class RHELPolicy(RedHatPolicy): distro = RHEL_RELEASE_STR @@ -242,18 +255,7 @@ applications. An archive containing the collected information will be \ generated in %(tmpdir)s and may be provided to a %(vendor)s \ support representative. - -Any information provided to %(vendor)s will be treated in \ -accordance with the published support policies at:\n - %(vendor_url)s - -The generated archive may contain data considered sensitive \ -and its content should be reviewed by the originating \ -organization before being passed to any third party. - -No changes will be made to system configuration. -%(vendor_text)s -""") +""" + disclaimer_text + "%(vendor_text)s\n") def __init__(self, sysroot=None): super(RHELPolicy, self).__init__(sysroot=sysroot) @@ -342,16 +344,7 @@ information from this %(distro)s system. An archive containing the collected information will be \ generated in %(tmpdir)s and may be provided to a %(vendor)s \ support representative. - -Any information provided to %(vendor)s will be treated in \ -accordance with the published support policies at:\n - %(vendor_url)s - -The generated archive may contain data considered sensitive \ -and its content should be reviewed by the originating \ -organization before being passed to any third party. -%(vendor_text)s -""") +""" + disclaimer_text + "%(vendor_text)s\n") def __init__(self, sysroot=None): super(RedHatAtomicPolicy, self).__init__(sysroot=sysroot) @@ -388,16 +381,7 @@ information from this %(distro)s system. An archive containing the collected information will be \ generated in %(tmpdir)s and may be provided to a %(vendor)s \ support representative. - -Any information provided to %(vendor)s will be treated in \ -accordance with the published support policies at:\n - %(vendor_url)s - -The generated archive may contain data considered sensitive \ -and its content should be reviewed by the originating \ -organization before being passed to any third party. -%(vendor_text)s -""") +""" + disclaimer_text + "%(vendor_text)s\n") def __init__(self, sysroot=None): super(RedHatCoreOSPolicy, self).__init__(sysroot=sysroot) -- 2.17.2 From ff9b64ffb383b5b57cbba6de665d2b7794849be7 Mon Sep 17 00:00:00 2001 From: Jake Hunsaker Date: Fri, 4 Jan 2019 14:43:05 -0500 Subject: [PATCH 3/4] [rhcos] Add new plugin Adds a new plugin for Red Hat CoreOS Resolves: #1528 Signed-off-by: Jake Hunsaker Signed-off-by: Bryn M. Reeves --- sos/plugins/rhcos.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 sos/plugins/rhcos.py diff --git a/sos/plugins/rhcos.py b/sos/plugins/rhcos.py new file mode 100644 index 00000000..de9af9df --- /dev/null +++ b/sos/plugins/rhcos.py @@ -0,0 +1,30 @@ +# Copyright (C) 2019 Red Hat, Inc., Jake Hunsaker + +# This file is part of the sos project: https://github.com/sosreport/sos +# +# This copyrighted material is made available to anyone wishing to use, +# modify, copy, or redistribute it subject to the terms and conditions of +# version 2 of the GNU General Public License. +# +# See the LICENSE file in the source distribution for further information. + +from sos.plugins import Plugin, RedHatPlugin + + +class RHCoreOS(Plugin, RedHatPlugin): + """Red Hat CoreOS""" + + plugin_name = 'rhcos' + packages = ('redhat-release-coreos', 'coreos-metadata') + + def setup(self): + units = ['coreos-growpart', 'coreos-firstboot-complete'] + for unit in units: + self.add_journal(unit) + + self.add_cmd_output( + 'coreos-metadata --cmdline --attributes /dev/stdout', + timeout=60 + ) + +# vim: set et ts=4 sw=4 : -- 2.17.2 From 12f12d490866587b254cdf182585529714b7e5bc Mon Sep 17 00:00:00 2001 From: Jake Hunsaker Date: Fri, 4 Jan 2019 15:02:55 -0500 Subject: [PATCH 4/4] [rpmostree] Add new plugin Adds a new plugin for rpm-ostree, which is no longer limited to use in Atomic Host. Resolves: #1529 Signed-off-by: Jake Hunsaker Signed-off-by: Bryn M. Reeves --- sos/plugins/atomichost.py | 1 - sos/plugins/rpmostree.py | 40 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 sos/plugins/rpmostree.py diff --git a/sos/plugins/atomichost.py b/sos/plugins/atomichost.py index deecba87..0c1f4026 100644 --- a/sos/plugins/atomichost.py +++ b/sos/plugins/atomichost.py @@ -25,7 +25,6 @@ class AtomicHost(Plugin, RedHatPlugin): return self.policy.in_container() def setup(self): - self.add_copy_spec("/etc/ostree/remotes.d") self.add_cmd_output("atomic host status") if self.get_option('info'): diff --git a/sos/plugins/rpmostree.py b/sos/plugins/rpmostree.py new file mode 100644 index 00000000..3c6872c2 --- /dev/null +++ b/sos/plugins/rpmostree.py @@ -0,0 +1,40 @@ +# Copyright (C) 2019 Red Hat, Inc., Jake Hunsaker + +# This file is part of the sos project: https://github.com/sosreport/sos +# +# This copyrighted material is made available to anyone wishing to use, +# modify, copy, or redistribute it subject to the terms and conditions of +# version 2 of the GNU General Public License. +# +# See the LICENSE file in the source distribution for further information. + +from sos.plugins import Plugin, RedHatPlugin + + +class Rpmostree(Plugin, RedHatPlugin): + """rpm-ostree image/package system""" + + plugin_name = 'rpmostree' + packages = ('rpm-ostree',) + + def setup(self): + self.add_copy_spec('/etc/ostree/remotes.d/') + + subcmds = [ + 'status', + 'db list', + 'db diff', + '--version' + ] + + self.add_cmd_output(["rpm-ostree %s" % subcmd for subcmd in subcmds]) + + units = [ + 'rpm-ostreed', + 'rpm-ostreed-automatic', + 'rpm-ostree-bootstatus' + ] + for unit in units: + self.add_journal(unit) + +# vim: set et ts=4 sw=4 : -- 2.17.2