)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a9837aa98d1f6dcceac8e449cfbc937d2c21ba29","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c903d85c_de62af60","updated":"2025-06-06 17:49:40.000000000","message":"Nobody need review this until CI results come in and I do a better review. Explicitly pushed code-as-written from LLM to test in gate.","commit_id":"53fbd094ae5bf4a3e6cf81bea7af05383a234a32"}],"ironic_python_agent/tests/unit/test_hardware.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"255b1ac813fbbf4f2b7ff7b64018a5d0de0c6476","unresolved":true,"context_lines":[{"line_number":211,"context_line":"            (self.hardware.generate_tls_certificate, (\u0027192.168.1.1\u0027,)),"},{"line_number":212,"context_line":"            (self.hardware.get_usb_devices, ()),"},{"line_number":213,"context_line":"            (self.hardware.erase_block_device, (self.node, mock.Mock())),"},{"line_number":214,"context_line":"            (self.hardware.erase_devices, (self.node, [])),"},{"line_number":215,"context_line":"        ]"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        for method, args in test_methods:"}],"source_content_type":"text/x-python","patch_set":1,"id":"0c28777c_24feddf5","line":214,"updated":"2025-06-06 18:09:55.000000000","message":"This test looks pretty useless?","commit_id":"53fbd094ae5bf4a3e6cf81bea7af05383a234a32"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9767e020be2e009afd805f34db21c6a5cfd6f7a5","unresolved":true,"context_lines":[{"line_number":211,"context_line":"            (self.hardware.generate_tls_certificate, (\u0027192.168.1.1\u0027,)),"},{"line_number":212,"context_line":"            (self.hardware.get_usb_devices, ()),"},{"line_number":213,"context_line":"            (self.hardware.erase_block_device, (self.node, mock.Mock())),"},{"line_number":214,"context_line":"            (self.hardware.erase_devices, (self.node, [])),"},{"line_number":215,"context_line":"        ]"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        for method, args in test_methods:"}],"source_content_type":"text/x-python","patch_set":1,"id":"c2ac207d_8fd11745","line":214,"in_reply_to":"0c28777c_24feddf5","updated":"2025-06-11 15:04:43.000000000","message":"Eh, it\u0027s probably worth it to have an explicit list of abstracted methods.","commit_id":"53fbd094ae5bf4a3e6cf81bea7af05383a234a32"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"faa0ef39d07e438a68e2c7c7aba1bcaeb8bfc891","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            (self.hardware.generate_tls_certificate, (\u0027192.168.1.1\u0027,)),"},{"line_number":212,"context_line":"            (self.hardware.get_usb_devices, ()),"},{"line_number":213,"context_line":"            (self.hardware.erase_block_device, (self.node, mock.Mock())),"},{"line_number":214,"context_line":"            (self.hardware.erase_devices, (self.node, [])),"},{"line_number":215,"context_line":"        ]"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        for method, args in test_methods:"}],"source_content_type":"text/x-python","patch_set":1,"id":"83525584_52918bcd","line":214,"in_reply_to":"c2ac207d_8fd11745","updated":"2025-06-11 15:04:55.000000000","message":"Done","commit_id":"53fbd094ae5bf4a3e6cf81bea7af05383a234a32"}],"releasenotes/notes/fix-hardware-manager-methods-befbec141f8e1620.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"016577762ce2ebb3154f562d9ed891eee19cf76b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed HardwareManager class to remove methods that were only implemented"},{"line_number":5,"context_line":"    in GenericHardwareManager. The methods ``get_skip_list_from_node``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"e8fef8b7_dd458605","line":2,"updated":"2025-06-11 14:55:34.000000000","message":"This is hardly a bug fix, at least as far as operators are concerned.","commit_id":"2632313a5520906ceefda75205a11d5169c83035"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"016577762ce2ebb3154f562d9ed891eee19cf76b","unresolved":true,"context_lines":[{"line_number":14,"context_line":"  - |"},{"line_number":15,"context_line":"    **Custom Hardware Managers Warning**: The methods ``get_skip_list_from_node``"},{"line_number":16,"context_line":"    and ``list_block_devices_check_skip_list`` have been removed from the"},{"line_number":17,"context_line":"    abstract ``HardwareManager`` base class. If you have developed custom"},{"line_number":18,"context_line":"    hardware managers that attempt to override these methods, you will need"},{"line_number":19,"context_line":"    to remove those implementations as they are no longer part of the base"},{"line_number":20,"context_line":"    class interface. These methods were never intended to be overridden and"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9158889a_e4dc15df","line":17,"updated":"2025-06-11 14:55:34.000000000","message":"This is a less important part. The more important is the breaking change in the availability of erase_devices. This note should not be focused on providing an own implementation of erase_devices.","commit_id":"2632313a5520906ceefda75205a11d5169c83035"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9767e020be2e009afd805f34db21c6a5cfd6f7a5","unresolved":true,"context_lines":[{"line_number":14,"context_line":"  - |"},{"line_number":15,"context_line":"    **Custom Hardware Managers Warning**: The methods ``get_skip_list_from_node``"},{"line_number":16,"context_line":"    and ``list_block_devices_check_skip_list`` have been removed from the"},{"line_number":17,"context_line":"    abstract ``HardwareManager`` base class. If you have developed custom"},{"line_number":18,"context_line":"    hardware managers that attempt to override these methods, you will need"},{"line_number":19,"context_line":"    to remove those implementations as they are no longer part of the base"},{"line_number":20,"context_line":"    class interface. These methods were never intended to be overridden and"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"bdb9781a_428c1e24","line":17,"in_reply_to":"9158889a_e4dc15df","updated":"2025-06-11 15:04:43.000000000","message":"I\u0027m really, really confused about this comment. GenericHardwareManager still has an implementation, is enabled by default with no way to disable it. It just led to nasty behaviors when someone might have had multiple HWMs.\n\ne.g. (before this change):\n\nMyCustomFirmwareHardwareManager, priority SERVICE_PROVIDER, inherited from HardwareManager, has the default erase_devices implementation, but exposes it at SERVICE_PROVIDER level\n\nMyCustomDiskEraseFromVendor, priority MAINLINE, has a custom implementation of erase_devices (doesn\u0027t matter where it inherits from) that is completely hidden by the \"MyCustomFirmwareHardwareManager\" having an unexpectedly implemented method in it\u0027s base class.\n\nGenericHardwareManager, priority GENERIC, has that same erase_devices implementation from HardwareManager, but is shadowed by both above.\n\nFINAL BEHAVIOR: Default IPA erase_devices is used unexpectedly.\n\ne.g. (after this change):\n\nMyCustomFirmwareHardwareManager, priority SERVICE_PROVIDER, inherited from HardwareManager, no longer has a erase_devices implementation exposed at all\n\nMyCustomDiskEraseFromVendor, priority MAINLINE, has a custom implementation of erase_devices. This will \"win\" during cleaning now.\n\nGenericHardwareManager, priority GENERIC, has that same erase_devices implementation from HardwareManager, but is shadowed by the above.\n\nFINAL BEHAVIOR: custom erase_devices from MyCustomDiskEraseFromVendor wins","commit_id":"2632313a5520906ceefda75205a11d5169c83035"}]}
