From c328fea49a7e13b910321faba53aa18a9d2c0c2c Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 11 May 2022 16:01:43 -0400 Subject: [PATCH] Cleaner output on cli Based on feedback, remove the added 'inlet_' from pdu output. Also, fix geist plugin to block unsupported features for now. --- confluent_client/bin/nodepower | 6 +++++- confluent_client/confluent/client.py | 13 ++++++------- .../confluent/plugins/hardwaremanagement/geist.py | 5 +++++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/confluent_client/bin/nodepower b/confluent_client/bin/nodepower index 59d55b13..dffa241c 100755 --- a/confluent_client/bin/nodepower +++ b/confluent_client/bin/nodepower @@ -51,6 +51,7 @@ except IndexError: client.check_globbing(noderange) setstate = None if len(args) > 1: + setstate = args[1] if setstate == 'softoff': setstate = 'shutdown' @@ -81,4 +82,7 @@ if options.previous: # add dictionary to session session.add_precede_dict(prev) -sys.exit(session.simple_noderange_command(noderange, '/power/{0}'.format(powurl), setstate, promptover=options.maxnodes, key='state')) +def outhandler(node, res): + for k in res[node]: + client.cprint('{0}: {1}: {2}'.format(node, k.replace('inlet_', ''), res[node][k])) +sys.exit(session.simple_noderange_command(noderange, '/power/{0}'.format(powurl), setstate, promptover=options.maxnodes, key='state', outhandler=outhandler)) diff --git a/confluent_client/confluent/client.py b/confluent_client/confluent/client.py index 47eaa494..ad29ff02 100644 --- a/confluent_client/confluent/client.py +++ b/confluent_client/confluent/client.py @@ -208,7 +208,7 @@ class Command(object): def add_precede_dict(self, dict): self._prevdict = dict - def handle_results(self, ikey, rc, res, errnodes=None): + def handle_results(self, ikey, rc, res, errnodes=None, outhandler=None): if 'error' in res: if errnodes is not None: errnodes.add(self._currnoderange) @@ -245,13 +245,12 @@ class Command(object): node, val, self._prevdict[node])) else: cprint('{0}: {1}'.format(node, val)) - elif ikey == 'state': - for k in res[node]: - cprint('{0}: {1}: {2}'.format(node, k, res[node][k])) + elif outhandler: + outhandler(node, res) return rc def simple_noderange_command(self, noderange, resource, input=None, - key=None, errnodes=None, promptover=None, **kwargs): + key=None, errnodes=None, promptover=None, outhandler=None, **kwargs): try: self._currnoderange = noderange rc = 0 @@ -265,13 +264,13 @@ class Command(object): if input is None: for res in self.read('/noderange/{0}/{1}'.format( noderange, resource)): - rc = self.handle_results(ikey, rc, res, errnodes) + rc = self.handle_results(ikey, rc, res, errnodes, outhandler) else: self.stop_if_noderange_over(noderange, promptover) kwargs[ikey] = input for res in self.update('/noderange/{0}/{1}'.format( noderange, resource), kwargs): - rc = self.handle_results(ikey, rc, res, errnodes) + rc = self.handle_results(ikey, rc, res, errnodes, outhandler) self._currnoderange = None return rc except KeyboardInterrupt: diff --git a/confluent_server/confluent/plugins/hardwaremanagement/geist.py b/confluent_server/confluent/plugins/hardwaremanagement/geist.py index 0181b39d..62bac271 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/geist.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/geist.py @@ -15,6 +15,7 @@ import pyghmi.util.webclient as wc import confluent.util as util import confluent.messages as msg +import confluent.exceptions as exc class GeistClient(object): @@ -102,12 +103,16 @@ class GeistClient(object): def retrieve(nodes, element, configmanager, inputdata): + if 'outlets' not in element: + raise exc.NotImplementedException('Not implemented') for node in nodes: gc = GeistClient(node, configmanager) state = gc.get_outlet(element[-1]) yield msg.PowerState(node=node, state=state) def update(nodes, element, configmanager, inputdata): + if 'outlets' not in element: + raise exc.NotImplementedException('Not implemented') for node in nodes: gc = GeistClient(node, configmanager) newstate = inputdata.powerstate(node)