sos-collector/SOURCES/sos-collector-rhhi-list.patch

173 lines
6.7 KiB
Diff

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