Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pyghmi for openSUSE:Factory checked in at 2026-03-04 21:05:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pyghmi (Old) and /work/SRC/openSUSE:Factory/.python-pyghmi.new.561 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyghmi" Wed Mar 4 21:05:26 2026 rev:26 rq:1336185 version:1.6.13 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pyghmi/python-pyghmi.changes 2025-12-29 15:17:16.740181049 +0100 +++ /work/SRC/openSUSE:Factory/.python-pyghmi.new.561/python-pyghmi.changes 2026-03-04 21:05:29.937130787 +0100 @@ -1,0 +2,12 @@ +Tue Mar 3 18:54:56 UTC 2026 - Dirk Müller <[email protected]> + +- update to 1.6.13: + * Provide a specific override for XCC3 generic error + * Correct early fetch of sysurl + * Remove stale setting of health attribute + * Fix missing parameter in function signature + * Stub out cpu/mem/adp/disk inventory for SMMv3 + * Add SMM3 cap setting + * Adapt for alternate type presented in devicedescription + +------------------------------------------------------------------- Old: ---- pyghmi-1.6.11.tar.gz New: ---- pyghmi-1.6.13.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pyghmi.spec ++++++ --- /var/tmp/diff_new_pack.umrUjF/_old 2026-03-04 21:05:30.897170454 +0100 +++ /var/tmp/diff_new_pack.umrUjF/_new 2026-03-04 21:05:30.901170619 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-pyghmi # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: python-pyghmi -Version: 1.6.11 +Version: 1.6.13 Release: 0 Summary: General Hardware Management Initiative (IPMI and others) License: Apache-2.0 ++++++ pyghmi-1.6.11.tar.gz -> pyghmi-1.6.13.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/ChangeLog new/pyghmi-1.6.13/ChangeLog --- old/pyghmi-1.6.11/ChangeLog 2025-12-10 20:10:59.000000000 +0100 +++ new/pyghmi-1.6.13/ChangeLog 2026-02-11 20:55:48.000000000 +0100 @@ -1,6 +1,21 @@ CHANGES ======= +1.6.13 +------ + +* Provide a specific override for XCC3 generic error + +1.6.12 +------ + +* Correct early fetch of sysurl +* Remove stale setting of health attribute +* Fix missing parameter in function signature +* Stub out cpu/mem/adp/disk inventory for SMMv3 +* Add SMM3 cap setting +* Adapt for alternate type presented in devicedescription + 1.6.11 ------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/PKG-INFO new/pyghmi-1.6.13/PKG-INFO --- old/pyghmi-1.6.11/PKG-INFO 2025-12-10 20:11:00.127628300 +0100 +++ new/pyghmi-1.6.13/PKG-INFO 2026-02-11 20:55:48.413373000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: pyghmi -Version: 1.6.11 +Version: 1.6.13 Summary: Python General Hardware Management Initiative (IPMI and others) Home-page: http://github.com/openstack/pyghmi/ Author: Jarrod Johnson diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/pyghmi/ipmi/oem/lenovo/handler.py new/pyghmi-1.6.13/pyghmi/ipmi/oem/lenovo/handler.py --- old/pyghmi-1.6.11/pyghmi/ipmi/oem/lenovo/handler.py 2025-12-10 20:10:03.000000000 +0100 +++ new/pyghmi-1.6.13/pyghmi/ipmi/oem/lenovo/handler.py 2026-02-11 20:55:04.000000000 +0100 @@ -872,7 +872,7 @@ elif self.has_tsma: return self.tsmahandler.get_firmware_inventory( components, raisebypass=False, ipmicmd=self.ipmicmd) - return super(OEMHandler, self).get_oem_firmware(bmcver, components) + return super(OEMHandler, self).get_oem_firmware(bmcver, components, category) def get_diagnostic_data(self, savefile, progress, autosuffix=False): if self.has_xcc: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/pyghmi/redfish/command.py new/pyghmi-1.6.13/pyghmi/redfish/command.py --- old/pyghmi-1.6.11/pyghmi/redfish/command.py 2025-12-10 20:10:03.000000000 +0100 +++ new/pyghmi-1.6.13/pyghmi/redfish/command.py 2026-02-11 20:55:04.000000000 +0100 @@ -123,7 +123,6 @@ 'Status', {}).get('Health', None), const.Health.Warning) self.states = [healthinfo.get('Status', {}).get('Health', 'Unknown')] - self.health = _healthmap[healthinfo['Status']['Health']] if self.health == const.Health.Ok: self.states = [] self.value = value diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/pyghmi/redfish/oem/generic.py new/pyghmi-1.6.13/pyghmi/redfish/oem/generic.py --- old/pyghmi-1.6.11/pyghmi/redfish/oem/generic.py 2025-12-10 20:10:03.000000000 +0100 +++ new/pyghmi-1.6.13/pyghmi/redfish/oem/generic.py 2026-02-11 20:55:04.000000000 +0100 @@ -340,7 +340,7 @@ @property def sysinfo(self): - return self._do_web_request(self._varsysurl) + return self._do_web_request(self.get_default_sysurl()) def get_bmc_csr(self, keytype=None, keylength=None, cn=None, city=None, state=None, country=None, org=None, orgunit=None): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/pyghmi/redfish/oem/lenovo/main.py new/pyghmi-1.6.13/pyghmi/redfish/oem/lenovo/main.py --- old/pyghmi-1.6.11/pyghmi/redfish/oem/lenovo/main.py 2025-12-10 20:10:03.000000000 +0100 +++ new/pyghmi-1.6.13/pyghmi/redfish/oem/lenovo/main.py 2026-02-11 20:55:04.000000000 +0100 @@ -56,7 +56,7 @@ try: devdesc = webclient.grab_json_response_with_status('/DeviceDescription.json') if devdesc[1] == 200: - if devdesc[0]['type'].lower() == 'lenovo-smm3': + if devdesc[0]['type'].lower() in ('lenovo-smm3', 'smm3'): return smm3.OEMHandler(sysinfo, sysurl, webclient, cache, gpool=cmd._gpool) except Exception: pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/pyghmi/redfish/oem/lenovo/smm3.py new/pyghmi-1.6.13/pyghmi/redfish/oem/lenovo/smm3.py --- old/pyghmi-1.6.11/pyghmi/redfish/oem/lenovo/smm3.py 2025-12-10 20:10:03.000000000 +0100 +++ new/pyghmi-1.6.13/pyghmi/redfish/oem/lenovo/smm3.py 2026-02-11 20:55:04.000000000 +0100 @@ -78,6 +78,85 @@ def get_system_configuration(self, hideadvanced=True, fishclient=None): return {} + + def set_bmc_configuration(self, changeset): + chassisparms = {} + nodeparms = {} + for setting, value in changeset.items(): + if setting == 'chassis_user_cap': + chassisparms.setdefault('Oem', {}).setdefault('Lenovo', {}).setdefault('PowerCap', {})['UserPowerCap'] = int(value) + elif setting == 'chassis_user_cap_active': + capstate = value.lower().startswith('enable') + chassisparms.setdefault('Oem', {}).setdefault('Lenovo', {}).setdefault('PowerCap', {})['UserPowerCapEnabled'] = capstate + elif setting.startswith('node_') and setting.endswith('_user_cap'): + nodeid = setting[5:-13] + nodeparms.setdefault(nodeid, {}).setdefault('PowerCap', {})['UserPowerCap'] = int(value) + elif setting.startswith('node_') and setting.endswith('_user_cap_active'): + nodeid = setting[5:-20] + capstate = value.lower().startswith('enable') + nodeparms.setdefault(nodeid, {}).setdefault('PowerCap', {})['UserPowerCapEnabled'] = capstate + if chassisparms: + self._do_web_request('/redfish/v1/Chassis/chassis1', chassisparms, method='PATCH') + for nodeid, parms in nodeparms.items(): + url = '/redfish/v1/Chassis/chassis1/Oem/Lenovo/Nodes/{}'.format(nodeid) + self._do_web_request(url, parms, method='PATCH') + + def _get_cpu_inventory(self, withids=False): + # Empty generator: no CPU inventory items for this OEM handler. + yield from () + + def _get_mem_inventory(self, withids=False): + # Empty generator: no memory inventory items for this OEM handler. + yield from () + + def _get_adp_inventory(self, withids=False, urls=None): + # Empty generator: no adapter inventory items for this OEM handler. + yield from () + + def _get_disk_inventory(self, withids=False, urls=None): + # Empty generator: no disk inventory items for this OEM handler. + yield from () + + def get_bmc_configuration(self): + settings = {} + rsp = self._do_web_request('/redfish/v1/Chassis/chassis1') + chassiscap = rsp.get('Oem', {}).get('Lenovo', {}).get('PowerCap', {}) + usercap = chassiscap.get('UserPowerCap', None) + capstate = chassiscap.get('UserPowerCapEnabled', False) + mincap = chassiscap.get('MinimumPowerCap', None) + maxcap = chassiscap.get('MaximumPowerCap', None) + settings['chassis_user_cap'] = { + 'value': usercap, + 'help': 'Specify a maximum wattage to consume, this specific ' + 'system implements a range from {0} to {1}.'.format( + mincap, maxcap) + } + settings['chassis_user_cap_active'] = { + 'value': 'Enable' if capstate else 'Disable', + 'help': 'Specify whether the user capping setting should be ' + 'used or not at the chassis level.', + } + rsp = self._get_expanded_data('/redfish/v1/Chassis/chassis1/Oem/Lenovo/Nodes') + for noderesp in rsp.get('Members', []): + nodeid = noderesp.get('Id', 'unknown') + nodecap = noderesp.get('PowerCap', {}) + usercap = nodecap.get('UserPowerCap', None) + capstate = nodecap.get('UserPowerCapEnabled', False) + mincap = nodecap.get('MinimumPowerCap', None) + maxcap = nodecap.get('MaximumPowerCap', None) + settings['node_{}_user_cap'.format(nodeid)] = { + 'value': usercap, + 'help': 'Specify a maximum wattage to consume for node ' + '{}, this specific node implements a range from ' + '{} to {}.'.format( + nodeid, mincap, maxcap) + } + settings['node_{}_user_cap_active'.format(nodeid)] = { + 'value': 'Enable' if capstate else 'Disable', + 'help': 'Specify whether the user capping setting should be ' + 'used or not at the node {} level.'.format(nodeid), + } + return settings def retrieve_firmware_upload_url(self): # SMMv3 needs to do the non-multipart upload diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/pyghmi/redfish/oem/lenovo/xcc3.py new/pyghmi-1.6.13/pyghmi/redfish/oem/lenovo/xcc3.py --- old/pyghmi-1.6.11/pyghmi/redfish/oem/lenovo/xcc3.py 2025-12-10 20:10:03.000000000 +0100 +++ new/pyghmi-1.6.13/pyghmi/redfish/oem/lenovo/xcc3.py 2026-02-11 20:55:04.000000000 +0100 @@ -724,7 +724,16 @@ data={'Image': url, 'Inserted': True}, method='PATCH') if code == 500: - raise Exception("Unexpected response when attaching remote media: " + repr(msg)) + errmsg = "Unexpected response when attaching remote media: " + repr(msg) + try: + if url.startswith('https://'): + dmsg = json.loads(msg.decode('utf-8')) + if dmsg.get('error', {}).get('code', '') == 'Base.1.16.0.InternalError': + errmsg = 'XCC3 reported an internal error while attaching https media, check the certificate authorities on the XCC3' + except Exception: + pass + raise Exception(errmsg) + self._invalidate_url_cache(vmurl) raise pygexc.BypassGenericBehavior() break else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/pyghmi.egg-info/PKG-INFO new/pyghmi-1.6.13/pyghmi.egg-info/PKG-INFO --- old/pyghmi-1.6.11/pyghmi.egg-info/PKG-INFO 2025-12-10 20:11:00.000000000 +0100 +++ new/pyghmi-1.6.13/pyghmi.egg-info/PKG-INFO 2026-02-11 20:55:48.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: pyghmi -Version: 1.6.11 +Version: 1.6.13 Summary: Python General Hardware Management Initiative (IPMI and others) Home-page: http://github.com/openstack/pyghmi/ Author: Jarrod Johnson diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyghmi-1.6.11/pyghmi.egg-info/pbr.json new/pyghmi-1.6.13/pyghmi.egg-info/pbr.json --- old/pyghmi-1.6.11/pyghmi.egg-info/pbr.json 2025-12-10 20:11:00.000000000 +0100 +++ new/pyghmi-1.6.13/pyghmi.egg-info/pbr.json 2026-02-11 20:55:48.000000000 +0100 @@ -1 +1 @@ -{"git_version": "8ccf30f", "is_release": true} \ No newline at end of file +{"git_version": "1131f6f", "is_release": true} \ No newline at end of file
