diff --git a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py index db40e941..d5ed8289 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py @@ -838,7 +838,14 @@ class IpmiHandler: return # Update user elif len(self.element) == 4: - user = int(self.element[-1]) + # ipmi users really are numbered slots, unlike redfish accounts, so + # say that rather than letting the conversion fail as a surprise + try: + user = int(self.element[-1]) + except ValueError: + raise pygexc.InvalidParameterValue( + 'ipmi users are numbered, and "{0}" is not a user ' + 'number'.format(self.element[-1])) if self.op == 'read': data = await self.ipmicmd.get_user(uid=user) await self.output.put(msg.User( diff --git a/confluent_server/confluent/plugins/hardwaremanagement/redfish.py b/confluent_server/confluent/plugins/hardwaremanagement/redfish.py index f3bdc132..8cc84492 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/redfish.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/redfish.py @@ -734,7 +734,10 @@ class IpmiHandler: return # Update user elif len(self.element) == 4: - user = int(self.element[-1]) + # A redfish account is identified by a string, and an + # implementation is free to use the account name as one, so take it + # as given rather than assuming a number + user = self.element[-1] if self.op == 'read': data = await self.ipmicmd.get_user(uid=user) await self.output.put(msg.User(