Blob Blame History Raw
From 9108f2f83613bce42e8be91bbe7fe91fd1b1763a Mon Sep 17 00:00:00 2001
From: Jake Hunsaker <jhunsake@redhat.com>
Date: Thu, 18 Apr 2019 14:58:23 -0400
Subject: [PATCH] [sos-collector] Fix --list-options output

Fixes the output of --list-options to include layered profiles when
reporting base profile options.

Additionally adds output of the cluster types supported by the local
installation of sos-collector. Added cluster_name values to clusters
that were missing them.

Fixes: #22

Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
---
 soscollector/clusters/jbon.py       |  1 +
 soscollector/clusters/kubernetes.py |  1 +
 soscollector/clusters/pacemaker.py  |  1 +
 soscollector/clusters/satellite.py  |  1 +
 soscollector/sos_collector.py       | 40 +++++++++++++++++------------
 5 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/soscollector/clusters/jbon.py b/soscollector/clusters/jbon.py
index ea85ddf..0c53093 100644
--- a/soscollector/clusters/jbon.py
+++ b/soscollector/clusters/jbon.py
@@ -23,6 +23,7 @@ class jbon(Cluster):
     use the provided --nodes list
     '''
 
+    cluster_name = 'Just a Bunch Of Nodes (no cluster)'
     packages = None
 
     def get_nodes(self):
diff --git a/soscollector/clusters/kubernetes.py b/soscollector/clusters/kubernetes.py
index e18ee71..32bc68b 100644
--- a/soscollector/clusters/kubernetes.py
+++ b/soscollector/clusters/kubernetes.py
@@ -19,6 +19,7 @@ from soscollector.clusters import Cluster
 
 class kubernetes(Cluster):
 
+    cluster_name = 'Community Kubernetes'
     packages = ('kubernetes-master',)
     sos_plugins = ['kubernetes']
     sos_plugin_options = {'kubernetes.all': 'on'}
diff --git a/soscollector/clusters/pacemaker.py b/soscollector/clusters/pacemaker.py
index 778d8ae..be6c09e 100644
--- a/soscollector/clusters/pacemaker.py
+++ b/soscollector/clusters/pacemaker.py
@@ -18,6 +18,7 @@ from soscollector.clusters import Cluster
 
 class pacemaker(Cluster):
 
+    cluster_name = 'Pacemaker High Availability Cluster Manager'
     sos_plugins = ['pacemaker']
     packages = ('pacemaker',)
     option_list = [
diff --git a/soscollector/clusters/satellite.py b/soscollector/clusters/satellite.py
index ccdfefb..2c5c73d 100644
--- a/soscollector/clusters/satellite.py
+++ b/soscollector/clusters/satellite.py
@@ -20,6 +20,7 @@ from soscollector.clusters import Cluster
 class satellite(Cluster):
     """Red Hat Satellite 6"""
 
+    cluster_name = 'Red Hat Satellite 6'
     packages = ('satellite', 'satellite-installer')
 
     def _psql_cmd(self, query):
diff --git a/soscollector/sos_collector.py b/soscollector/sos_collector.py
index 54410a2..5b31602 100644
--- a/soscollector/sos_collector.py
+++ b/soscollector/sos_collector.py
@@ -218,19 +218,28 @@ class SosCollector():
 
     def list_options(self):
         '''Display options for available clusters'''
+
+        sys.stdout.write('\nThe following clusters are supported by this '
+                         'installation\n')
+        sys.stdout.write('Use the short name with --cluster-type or cluster '
+                         'options (-c)\n\n')
+        for cluster in sorted(self.clusters, key=lambda x: self.clusters[x]):
+            sys.stdout.write(" {:<15} {:30}\n".format(
+                                cluster,
+                                self.clusters[cluster].cluster_name))
+
         _opts = {}
         for _cluster in self.clusters:
             for opt in self.clusters[_cluster].options:
                 if opt.name not in _opts.keys():
                     _opts[opt.name] = opt
                 else:
-                    clust = _opts[opt.name].cluster
-                    if any(c in opt.cluster for c in clust):
-                        _opts[opt.name].cluster = ','.join(clust)
-                    else:
-                        _opts[opt.name] = opt
-        print('\nThe following cluster options are available:\n')
-        print('{:25} {:15} {:<10} {:10} {:<}'.format(
+                    for clust in opt.cluster:
+                        if clust not in _opts[opt.name].cluster:
+                            _opts[opt.name].cluster.append(clust)
+
+        sys.stdout.write('\nThe following cluster options are available:\n\n')
+        sys.stdout.write(' {:25} {:15} {:<10} {:10} {:<}\n'.format(
             'Cluster',
             'Option Name',
             'Type',
@@ -239,20 +248,17 @@ class SosCollector():
         ))
 
         for _opt in sorted(_opts, key=lambda x: _opts[x].cluster):
-            _clus = None
             opt = _opts[_opt]
-            if isinstance(opt.cluster, list):
-                _clus = opt.cluster[0]
-            optln = '{:25} {:15} {:<10} {:<10} {:<10}'.format(
-                _clus or opt.cluster,
+            optln = ' {:25} {:15} {:<10} {:<10} {:<10}\n'.format(
+                ', '.join(c for c in sorted(opt.cluster)),
                 opt.name,
                 opt.opt_type.__name__,
                 str(opt.value),
-                opt.description
-            )
-            print(optln)
-        print('\nOptions take the form of cluster.name=value'
-              '\nE.G. "ovirt.no-database=True" or "pacemaker.offline=False"')
+                opt.description)
+            sys.stdout.write(optln)
+        sys.stdout.write('\nOptions take the form of cluster.name=value'
+                         '\nE.G. "ovirt.no-database=True" or '
+                         '"pacemaker.offline=False"\n')
 
     def delete_tmp_dir(self):
         '''Removes the temp directory and all collected sosreports'''
-- 
2.17.2

From 70faf097e9d36898cfc624e9e57f46eea25d321c Mon Sep 17 00:00:00 2001
From: Jake Hunsaker <jhunsake@redhat.com>
Date: Tue, 2 Jul 2019 12:35:14 -0400
Subject: [PATCH] [sos-collector] Remove key sorting on cluster list

On python3, using the cluster key on sorting the list was causing an
exception. After testing, it appears a normal keyless sort still gives
us the desired effect, so remove the key sorting.

Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
---
 soscollector/sos_collector.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/soscollector/sos_collector.py b/soscollector/sos_collector.py
index a691219..d0a598f 100644
--- a/soscollector/sos_collector.py
+++ b/soscollector/sos_collector.py
@@ -223,7 +223,7 @@ class SosCollector():
                          'installation\n')
         sys.stdout.write('Use the short name with --cluster-type or cluster '
                          'options (-c)\n\n')
-        for cluster in sorted(self.clusters, key=lambda x: self.clusters[x]):
+        for cluster in sorted(self.clusters):
             sys.stdout.write(" {:<15} {:30}\n".format(
                                 cluster,
                                 self.clusters[cluster].cluster_name))
-- 
2.17.2