2
0
mirror of https://opendev.org/x/pyghmi synced 2026-01-12 03:02:33 +00:00

Extend IPMI privilege to redfish role

The XCC conservatively holds back administrator from IPMI
access.  If an IPMI request comes in, add
a corresponding redfish to make
the user actually have the requested role.

Change-Id: I4c360388fa487256df382f0f4afc74cd1d1f69a1
This commit is contained in:
Jarrod Johnson
2022-09-30 09:18:08 -04:00
parent 8156a63c2b
commit 76af0fd66a
2 changed files with 18 additions and 0 deletions

View File

@@ -1316,6 +1316,10 @@ class OEMHandler(generic.OEMHandler):
return True
return False
def set_user_access(self, uid, channel, callback, link_auth, ipmi_msg, privilege_level):
if self.has_xcc:
self.immhandler.set_user_access(uid, privilege_level)
def process_zero_fru(self, zerofru):
if (self.oemid['manufacturer_id'] == 19046
and self.oemid['product_id'] == 13616):

View File

@@ -883,6 +883,20 @@ class XCCClient(IMMClient):
self.ipmicmd.ipmi_session.register_keepalive(self.keepalive, None)
self.adp_referer = None
def set_user_access(self, uid, privilege_level):
uid = uid - 1
role = None
if privilege_level == 'administrator':
role = 'Administrator'
elif privilege_level == 'operator':
role = 'Operator'
elif privileg_level == 'user':
role = 'ReadOnly'
if role:
self.grab_redfish_response_with_status(
'/redfish/v1/AccountService/Accounts/{0}'.format(uid),
{'RoleId': role}, method='PATCH')
def reseat(self):
rsp = self.wc.grab_json_response_with_status(
'/api/providers/virt_reseat', '{}')