{"sha":"0903ac77f51a6223bb11fd819b29d10893da7877","node_id":"C_kwDOAJmZfdoAKDA5MDNhYzc3ZjUxYTYyMjNiYjExZmQ4MTliMjlkMTA4OTNkYTc4Nzc","commit":{"author":{"name":"Zuul","email":"zuul@review.opendev.org","date":"2024-04-23T15:06:24Z"},"committer":{"name":"Gerrit Code Review","email":"review@openstack.org","date":"2024-04-23T15:06:24Z"},"message":"Merge \"[iRMC] Fix IPMI incompatibility handling error\" into stable/zed","tree":{"sha":"5426f25a360d55aebb1a14131a9216e3e44f31a0","url":"https://api.github.com/repos/openstack/ironic/git/trees/5426f25a360d55aebb1a14131a9216e3e44f31a0"},"url":"https://api.github.com/repos/openstack/ironic/git/commits/0903ac77f51a6223bb11fd819b29d10893da7877","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null,"verified_at":null}},"url":"https://api.github.com/repos/openstack/ironic/commits/0903ac77f51a6223bb11fd819b29d10893da7877","html_url":"https://github.com/openstack/ironic/commit/0903ac77f51a6223bb11fd819b29d10893da7877","comments_url":"https://api.github.com/repos/openstack/ironic/commits/0903ac77f51a6223bb11fd819b29d10893da7877/comments","author":null,"committer":{"login":"openstack-gerrit","id":903479,"node_id":"MDQ6VXNlcjkwMzQ3OQ==","avatar_url":"https://avatars.githubusercontent.com/u/903479?v=4","gravatar_id":"","url":"https://api.github.com/users/openstack-gerrit","html_url":"https://github.com/openstack-gerrit","followers_url":"https://api.github.com/users/openstack-gerrit/followers","following_url":"https://api.github.com/users/openstack-gerrit/following{/other_user}","gists_url":"https://api.github.com/users/openstack-gerrit/gists{/gist_id}","starred_url":"https://api.github.com/users/openstack-gerrit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openstack-gerrit/subscriptions","organizations_url":"https://api.github.com/users/openstack-gerrit/orgs","repos_url":"https://api.github.com/users/openstack-gerrit/repos","events_url":"https://api.github.com/users/openstack-gerrit/events{/privacy}","received_events_url":"https://api.github.com/users/openstack-gerrit/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"8d846b6ee0f118d8385f4ad465321394ad1b3643","url":"https://api.github.com/repos/openstack/ironic/commits/8d846b6ee0f118d8385f4ad465321394ad1b3643","html_url":"https://github.com/openstack/ironic/commit/8d846b6ee0f118d8385f4ad465321394ad1b3643"},{"sha":"aae565bdc39376fc74c6aec93c28b22ae7128df6","url":"https://api.github.com/repos/openstack/ironic/commits/aae565bdc39376fc74c6aec93c28b22ae7128df6","html_url":"https://github.com/openstack/ironic/commit/aae565bdc39376fc74c6aec93c28b22ae7128df6"}],"stats":{"total":29,"additions":22,"deletions":7},"files":[{"sha":"08e37927d470700567772f10f3b0184ba541a74a","filename":"ironic/drivers/modules/irmc/inspect.py","status":"modified","additions":2,"deletions":1,"changes":3,"blob_url":"https://github.com/openstack/ironic/blob/0903ac77f51a6223bb11fd819b29d10893da7877/ironic%2Fdrivers%2Fmodules%2Firmc%2Finspect.py","raw_url":"https://github.com/openstack/ironic/raw/0903ac77f51a6223bb11fd819b29d10893da7877/ironic%2Fdrivers%2Fmodules%2Firmc%2Finspect.py","contents_url":"https://api.github.com/repos/openstack/ironic/contents/ironic%2Fdrivers%2Fmodules%2Firmc%2Finspect.py?ref=0903ac77f51a6223bb11fd819b29d10893da7877","patch":"@@ -197,7 +197,8 @@ def _inspect_hardware(node, existing_traits=None, **kwargs):\n         props = irmc.scci.get_essential_properties(\n             report, IRMCInspect.ESSENTIAL_PROPERTIES)\n         d_info = irmc_common.parse_driver_info(node)\n-        if node.driver_internal_info.get('irmc_ipmi_succeed'):\n+        if (getattr(node, 'power_interface') == 'ipmitool'\n+            or node.driver_internal_info.get('irmc_ipmi_succeed')):\n             capabilities = irmc.scci.get_capabilities_properties(\n                 d_info,\n                 capabilities_props,"},{"sha":"d8ab5ce4fdde4c0babc5a1aa7d1792cdf0600764","filename":"ironic/drivers/modules/irmc/management.py","status":"modified","additions":12,"deletions":6,"changes":18,"blob_url":"https://github.com/openstack/ironic/blob/0903ac77f51a6223bb11fd819b29d10893da7877/ironic%2Fdrivers%2Fmodules%2Firmc%2Fmanagement.py","raw_url":"https://github.com/openstack/ironic/raw/0903ac77f51a6223bb11fd819b29d10893da7877/ironic%2Fdrivers%2Fmodules%2Firmc%2Fmanagement.py","contents_url":"https://api.github.com/repos/openstack/ironic/contents/ironic%2Fdrivers%2Fmodules%2Firmc%2Fmanagement.py?ref=0903ac77f51a6223bb11fd819b29d10893da7877","patch":"@@ -226,7 +226,8 @@ def validate(self, task):\n         :raises: InvalidParameterValue if required parameters are invalid.\n         :raises: MissingParameterValue if a required parameter is missing.\n         \"\"\"\n-        if task.node.driver_internal_info.get('irmc_ipmi_succeed'):\n+        if (getattr(task.node, 'power_interface') == 'ipmitool'\n+            or task.node.driver_internal_info.get('irmc_ipmi_succeed')):\n             irmc_common.parse_driver_info(task.node)\n             irmc_common.update_ipmi_properties(task)\n             super(IRMCManagement, self).validate(task)\n@@ -245,7 +246,8 @@ def get_supported_boot_devices(self, task):\n                   in :mod:`ironic.common.boot_devices`.\n \n         \"\"\"\n-        if task.node.driver_internal_info.get('irmc_ipmi_succeed'):\n+        if (getattr(task.node, 'power_interface') == 'ipmitool'\n+            or task.node.driver_internal_info.get('irmc_ipmi_succeed')):\n             return super(IRMCManagement, self).get_supported_boot_devices(task)\n         else:\n             return super(ipmitool.IPMIManagement,\n@@ -271,7 +273,8 @@ def set_boot_device(self, task, device, persistent=False):\n         :raises: RedfishConnectionError on Redfish operation failure.\n         :raises: RedfishError on Redfish operation failure.\n         \"\"\"\n-        if task.node.driver_internal_info.get('irmc_ipmi_succeed'):\n+        if (getattr(task.node, 'power_interface') == 'ipmitool'\n+            or task.node.driver_internal_info.get('irmc_ipmi_succeed')):\n             if device not in self.get_supported_boot_devices(task):\n                 raise exception.InvalidParameterValue(_(\n                     \"Invalid boot device %s specified.\") % device)\n@@ -331,7 +334,8 @@ def get_boot_device(self, task):\n             :persistent: Whether the boot device will persist to all\n                 future boots or not, None if it is unknown.\n         \"\"\"\n-        if task.node.driver_internal_info.get('irmc_ipmi_succeed'):\n+        if (getattr(task.node, 'power_interface') == 'ipmitool'\n+            or task.node.driver_internal_info.get('irmc_ipmi_succeed')):\n             return super(IRMCManagement, self).get_boot_device(task)\n         else:\n             return super(\n@@ -426,7 +430,8 @@ def get_sensors_data(self, task):\n         if sensor_method == 'scci':\n             return _get_sensors_data(task)\n         elif sensor_method == 'ipmitool':\n-            if task.node.driver_internal_info.get('irmc_ipmi_succeed'):\n+            if (getattr(task.node, 'power_interface') == 'ipmitool'\n+                or task.node.driver_internal_info.get('irmc_ipmi_succeed')):\n                 return super(IRMCManagement, self).get_sensors_data(task)\n             else:\n                 raise exception.InvalidParameterValue(_(\n@@ -567,7 +572,8 @@ def detect_vendor(self, task):\n         :returns: String representing the BMC reported Vendor or\n                   Manufacturer, otherwise returns None.\n         \"\"\"\n-        if task.node.driver_internal_info.get('irmc_ipmi_succeed'):\n+        if (getattr(task.node, 'power_interface') == 'ipmitool'\n+            or task.node.driver_internal_info.get('irmc_ipmi_succeed')):\n             return super(IRMCManagement, self).detect_vendor(task)\n         else:\n             return super(ipmitool.IPMIManagement, self).detect_vendor(task)"},{"sha":"082814707be1e275dfb6129719cda4324ed43763","filename":"releasenotes/notes/fix-overlooked-irmc-ipmi-incompatibility-patch-situation-c246d2b59b2e8a78.yaml","status":"added","additions":8,"deletions":0,"changes":8,"blob_url":"https://github.com/openstack/ironic/blob/0903ac77f51a6223bb11fd819b29d10893da7877/releasenotes%2Fnotes%2Ffix-overlooked-irmc-ipmi-incompatibility-patch-situation-c246d2b59b2e8a78.yaml","raw_url":"https://github.com/openstack/ironic/raw/0903ac77f51a6223bb11fd819b29d10893da7877/releasenotes%2Fnotes%2Ffix-overlooked-irmc-ipmi-incompatibility-patch-situation-c246d2b59b2e8a78.yaml","contents_url":"https://api.github.com/repos/openstack/ironic/contents/releasenotes%2Fnotes%2Ffix-overlooked-irmc-ipmi-incompatibility-patch-situation-c246d2b59b2e8a78.yaml?ref=0903ac77f51a6223bb11fd819b29d10893da7877","patch":"@@ -0,0 +1,8 @@\n+---\n+fixes:\n+  - |\n+    Fixes bug in iRMC driver, where `irmc` power_interface sets and updates\n+    `irmc_ipmi_succeed` flag which is used by rest of iRMC driver code to deal\n+    with iRMC firmware's IPMI incompatibility but `ipmitool` power_interface\n+    doesn't set nor update `irmc_ipmi_succeed` flag and rest of iRMC driver\n+    code fail to handle iRMC firmware's IPMI incompatibility correctly."}]}