mirror of
https://opendev.org/x/pyghmi
synced 2026-02-25 11:49:20 +00:00
Add facility for managing ikvm launch
Change-Id: I7db63b95d5740b3fa94ab70da0e7a4db56a5690c
This commit is contained in:
@@ -654,6 +654,14 @@ class Command(object):
|
||||
return sel.EventHandler(self.init_sdr(), self).decode_pet(specifictrap,
|
||||
petdata)
|
||||
|
||||
def get_ikvm_methods(self):
|
||||
self.oem_init()
|
||||
return self._oem.get_ikvm_methods()
|
||||
|
||||
def get_ikvm_launchdata(self):
|
||||
self.oem_init()
|
||||
return self._oem.get_ikvm_launchdata()
|
||||
|
||||
def get_inventory_descriptions(self):
|
||||
"""Retrieve list of things that could be inventoried
|
||||
|
||||
|
||||
@@ -47,7 +47,14 @@ class OEMHandler(object):
|
||||
rsp = ipmicmd.xraw_command(netfn=0x2c, command=2, data=(0xdc, 1, 0, 0))
|
||||
wattage = struct.unpack('<H', rsp['data'][1:3])[0]
|
||||
return wattage
|
||||
|
||||
|
||||
def get_ikvm_methods(self):
|
||||
return []
|
||||
|
||||
def get_ikvm_launchdata(self):
|
||||
# no standard ikvm behavior, must be oem defined
|
||||
return {}
|
||||
|
||||
def get_average_processor_temperature(self, ipmicmd):
|
||||
# DCMI suggests preferrence for 0x37 ('Air inlet')
|
||||
# If not that, then 0x40 ('Air inlet')
|
||||
|
||||
@@ -216,6 +216,15 @@ class OEMHandler(generic.OEMHandler):
|
||||
return self.immhandler.remove_storage_configuration(cfgspec)
|
||||
return super(OEMHandler, self).remove_storage_configuration()
|
||||
|
||||
def get_ikvm_methods(self):
|
||||
if self.has_xcc:
|
||||
return ['url']
|
||||
|
||||
def get_ikvm_launchdata(self):
|
||||
if self.has_xcc:
|
||||
return self.immhandler.get_ikvm_launchdata()
|
||||
return {}
|
||||
|
||||
def clear_storage_arrays(self):
|
||||
if self.has_xcc:
|
||||
return self.immhandler.clear_storage_arrays()
|
||||
|
||||
@@ -922,6 +922,18 @@ class XCCClient(IMMClient):
|
||||
return accinfo.get('RoleId', None)
|
||||
return None
|
||||
|
||||
def get_ikvm_methods(self):
|
||||
return ['url']
|
||||
|
||||
def get_ikvm_launchdata(self):
|
||||
access = self.grab_redfish_response_with_status('/redfish/v1/Managers/1/Oem/Lenovo/RemoteControl/Actions/LenovoRemoteControlService.GetRemoteConsoleToken', {})
|
||||
if access[0].get('Token', None):
|
||||
accessinfo = {
|
||||
'url': '/#/login?{}&context=remote&mode=multi'.format(access[0]['Token'])
|
||||
}
|
||||
return accessinfo
|
||||
return {}
|
||||
|
||||
def set_user_access(self, uid, privilege_level):
|
||||
uid = uid - 1
|
||||
role = None
|
||||
|
||||
@@ -432,6 +432,12 @@ class Command(object):
|
||||
self._do_web_request(accinfo[0], userinfo, method='PATCH', etag=etag)
|
||||
return True
|
||||
|
||||
def get_ikvm_methods(self):
|
||||
return self.oem.get_ikvm_methods()
|
||||
|
||||
def get_ikvm_launchdata(self):
|
||||
return self.oem.get_ikvm_launchdata()
|
||||
|
||||
def user_delete(self, uid):
|
||||
self.oem.user_delete(uid)
|
||||
|
||||
|
||||
@@ -1021,6 +1021,12 @@ class OEMHandler(object):
|
||||
return topdata
|
||||
return topdata
|
||||
|
||||
def get_ikvm_methods(self):
|
||||
return []
|
||||
|
||||
def get_ikvm_launchdata(self):
|
||||
return {}
|
||||
|
||||
def get_storage_configuration(self):
|
||||
raise exc.UnsupportedFunctionality(
|
||||
'Remote storage configuration not supported on this platform')
|
||||
|
||||
@@ -157,6 +157,17 @@ class OEMHandler(generic.OEMHandler):
|
||||
del immsettings[setting]
|
||||
return immsettings
|
||||
|
||||
def get_ikvm_methods(self):
|
||||
return ['url']
|
||||
|
||||
def get_ikvm_launchdata(self):
|
||||
access = self._do_web_request('/redfish/v1/Managers/1/Oem/Lenovo/RemoteControl/Actions/LenovoRemoteControlService.GetRemoteConsoleToken', {})
|
||||
if access.get('Token', None):
|
||||
accessinfo = {
|
||||
'url': '/#/login?{}&context=remote&mode=multi'.format(access['Token'])
|
||||
}
|
||||
return accessinfo
|
||||
|
||||
def get_system_configuration(self, hideadvanced=True, fishclient=None,
|
||||
fetchimm=False):
|
||||
if not self.fwc:
|
||||
|
||||
@@ -77,6 +77,17 @@ class OEMHandler(generic.OEMHandler):
|
||||
progress({'phase': 'complete'})
|
||||
return savefile
|
||||
|
||||
def get_ikvm_methods(self):
|
||||
return ['openbmc', 'url']
|
||||
|
||||
def get_ikvm_launchdata(self):
|
||||
access = self._do_web_request('/redfish/v1/Managers/1/Oem/Lenovo/RemoteControl/Actions/LenovoRemoteControlService.GetRemoteConsoleToken', {})
|
||||
if access.get('Token', None):
|
||||
accessinfo = {
|
||||
'url': '/#/login?{}&context=remote&mode=multi'.format(access['Token'])
|
||||
}
|
||||
return accessinfo
|
||||
|
||||
def get_system_power_watts(self, fishclient):
|
||||
powerinfo = fishclient._do_web_request('/redfish/v1/Chassis/1/Sensors/power_Sys_Power')
|
||||
return powerinfo['Reading']
|
||||
|
||||
Reference in New Issue
Block a user