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

Reply via email to