diff --git a/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc/openbmc_bmcconfig.py b/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc/openbmc_bmcconfig.py index 45c83c460..902858229 100644 --- a/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc/openbmc_bmcconfig.py +++ b/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc/openbmc_bmcconfig.py @@ -404,6 +404,25 @@ rmdir \"/tmp/$userid\" \n") self.callback.info("%s: BMC Setting %s..." % (node, openbmc.RSPCONFIG_APIS[key]['display_name'])) + def _get_powersupplyredundancy_value(self, node, obmc): + try: + psr_info = obmc.get_powersupplyredundancy() + for key, value in psr_info.items(): + if key == 'PowerSupplyRedundancyEnabled': + result = '%s: %s: %s' % (node, openbmc.RSPCONFIG_APIS['powersupplyredundancy']['display_name'], + openbmc.RSPCONFIG_APIS['powersupplyredundancy']['attr_values'][str(value)][0]) + return self.callback.info(result) + except SelfServerException as e: + return self.callback.error(e.message, node) + except SelfClientException as e: + if e.code == 404: + return self.callback.error('404 Not Found - Requested endpoint does not exist or may ' \ + 'indicate function is not supported on this OpenBMC firmware.', node) + if e.code == 403: + return self.callback.error('403 Forbidden - Requested endpoint does not exist or may ' \ + 'indicate function is not yet supported by OpenBMC firmware.', node) + return self.callback.error(e.message, node) + def _get_apis_values(self, key, **kw): node = kw['node'] obmc = openbmc.OpenBMCRest(name=node, nodeinfo=kw['nodeinfo'], messager=self.callback, @@ -416,6 +435,9 @@ rmdir \"/tmp/$userid\" \n") return self.callback.error(e.message, node) except SelfClientException as e: if e.code == 404: + if key == 'powersupplyredundancy': + return self._get_powersupplyredundancy_value(node, obmc) + return self.callback.error('404 Not Found - Requested endpoint does not exist or may ' \ 'indicate function is not supported on this OpenBMC firmware.', node) if e.code == 403: diff --git a/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py b/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py index 4f1a65b20..3f1565833 100644 --- a/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py +++ b/xCAT-openbmc-py/lib/python/agent/hwctl/openbmc_client.py @@ -200,12 +200,16 @@ RSPCONFIG_APIS = { 'baseurl': "/sensors/chassis/PowerSupplyRedundancy/", 'set_url': "action/setValue", 'get_url': "action/getValue", + 'get_url_new': '/control/power_supply_redundancy', 'get_method': 'POST', + 'get_method_new': 'GET', 'get_data': [], 'display_name': "BMC PowerSupplyRedundancy", 'attr_values': { 'disabled': ["Disabled"], 'enabled': ["Enabled"], + 'False': ['Disabled'], + 'True': ["Enabled"], }, }, 'powerrestorepolicy': { @@ -790,6 +794,10 @@ class OpenBMCRest(object): data={"data": attr_info['get_data']} return self.request(method, get_url, payload=data, cmd="get_%s" % key) + def get_powersupplyredundancy(self): + attr_info = RSPCONFIG_APIS['powersupplyredundancy'] + return self.request(attr_info['get_method_new'], attr_info['get_url_new'], cmd='get_powersupplyredundancy') + def set_admin_passwd(self, passwd): payload = { "data": [passwd] }