From 096ce477d314d47aa805fae585dc5aac17810d8f Mon Sep 17 00:00:00 2001 From: Jake Hunsaker Date: Fri, 28 Dec 2018 14:21:40 -0500 Subject: [PATCH] [satellite] Add satellite a supported environment Adds a profile for Satellite 6. While not technically a cluster, Sat 6 does have capsule servers that can be deployed concurrently to help with load and distribution, so it still fits in with sos-collector's goal. Many thanks to Paul Dudley from Red Hat for assistance in providing a test environment for this work and identifying the need. Signed-off-by: Jake Hunsaker --- soscollector/clusters/satellite.py | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 soscollector/clusters/satellite.py diff --git a/soscollector/clusters/satellite.py b/soscollector/clusters/satellite.py new file mode 100644 index 0000000..ccdfefb --- /dev/null +++ b/soscollector/clusters/satellite.py @@ -0,0 +1,43 @@ +# Copyright Red Hat 2018, Jake Hunsaker +# 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. + +from pipes import quote +from soscollector.clusters import Cluster + + +class satellite(Cluster): + """Red Hat Satellite 6""" + + packages = ('satellite', 'satellite-installer') + + def _psql_cmd(self, query): + _cmd = "su postgres -c %s" + _dbcmd = "psql foreman -c %s" + return _cmd % quote(_dbcmd % quote(query)) + + def get_nodes(self): + cmd = self._psql_cmd('select name from smart_proxies') + res = self.exec_master_cmd(cmd, need_root=True) + if res['status'] == 0: + idx = 2 + if 'could not change' in res['stdout']: + idx = 3 + nodes = [n.strip() for n in res['stdout'].splitlines()[idx:-1]] + return nodes + + def set_node_label(self, node): + if node.address == self.master.address: + return 'satellite' + return 'capsule' -- 2.14.5