From f2bd796c2a956b1705ca9e29167963a4ac2bc73b Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 11 Mar 2020 09:29:41 -0400 Subject: [PATCH] Further clean up license error handling Backup of nodelicense was not consistently checked between redfish and ipmi plugins. --- confluent_client/bin/nodelicense | 4 +++- .../confluent/plugins/hardwaremanagement/ipmi.py | 9 ++++++--- .../confluent/plugins/hardwaremanagement/redfish.py | 8 ++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/confluent_client/bin/nodelicense b/confluent_client/bin/nodelicense index 95a3f3b1..babb4abf 100755 --- a/confluent_client/bin/nodelicense +++ b/confluent_client/bin/nodelicense @@ -97,8 +97,10 @@ def save_licenses(session, dirname): fname = res['databynode'][node].get('filename', None) if fname: print('{0}: Saved license to {1}'.format(node, fname)) + elif 'error' in res['databynode'][node]: + sys.stderr.write('{0}: {1}\n'.format(node, res['databynode'][node]['error'])) else: - sys.stderr.write('{0}: {1}'.format(node, repr(res['databynode'][node]))) + sys.stderr.write('{0}: {1}\n'.format(node, repr(res['databynode'][node]))) def show_licenses(session): diff --git a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py index 934df787..e5d7e4d4 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py @@ -1494,11 +1494,14 @@ class IpmiHandler(object): def save_licenses(self): directory = self.inputdata.nodefile(self.node) - if not os.access(os.path.dirname(directory), os.W_OK): + checkdir = directory + if not os.path.isdir(checkdir): + checkdir = os.path.dirname(checkdir) + if not os.access(checkdir, os.W_OK): raise exc.InvalidArgumentException( - 'The onfluent system user/group is unable to write to ' + 'The confluent system user/group is unable to write to ' 'directory {0}, check ownership and permissions'.format( - os.path.dirname(directory))) + checkdir)) for saved in self.ipmicmd.save_licenses(directory): self.output.put(msg.SavedFile(self.node, saved)) diff --git a/confluent_server/confluent/plugins/hardwaremanagement/redfish.py b/confluent_server/confluent/plugins/hardwaremanagement/redfish.py index c2960c85..277ee46e 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/redfish.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/redfish.py @@ -1347,6 +1347,14 @@ class IpmiHandler(object): def save_licenses(self): directory = self.inputdata.nodefile(self.node) + checkdir = directory + if not os.path.isdir(checkdir): + checkdir = os.path.dirname(checkdir) + if not os.access(checkdir, os.W_OK): + raise exc.InvalidArgumentException( + 'The confluent system user/group is unable to write to ' + 'directory {0}, check ownership and permissions'.format( + checkdir)) for saved in self.ipmicmd.save_licenses(directory): self.output.put(msg.SavedFile(self.node, saved))