)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9cbd2e06652972869b9ca6c21d1ce146546b83ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"002fb0b3_a6ff6cb3","updated":"2025-02-27 12:05:23.000000000","message":"Thank you for picking this up!","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"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":"979622a5fcd862af13a9994ecc7f5eedc7b43637","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7f5c2e47_ed9dd250","updated":"2025-04-08 19:14:15.000000000","message":"This was reviewed as part of the PTG review jam.","commit_id":"56d882d639ede7bfdd18897b445f6c549f9e578d"}],"ironic/drivers/modules/redfish/boot.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9cbd2e06652972869b9ca6c21d1ce146546b83ac","unresolved":true,"context_lines":[{"line_number":274,"context_line":"                return"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    if err_msgs:"},{"line_number":277,"context_line":"        encountered_errs \u003d set([err_msgs[0], err_msgs[-1]])"},{"line_number":278,"context_line":"        exc_msg \u003d (\"All virtual media mount attempts failed. \""},{"line_number":279,"context_line":"                   \"Errors encountered: \" + \"; \".join(encountered_errs))"},{"line_number":280,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"10b1ba37_86077bf7","line":277,"updated":"2025-02-27 12:05:23.000000000","message":"If there is only one error, this will cause a duplication. I guess we need to distinguish len \u003e 1 and len \u003d\u003d 1","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"0d5fbb6821b820bc03c52b057175e7197628177a","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                return"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    if err_msgs:"},{"line_number":277,"context_line":"        encountered_errs \u003d set([err_msgs[0], err_msgs[-1]])"},{"line_number":278,"context_line":"        exc_msg \u003d (\"All virtual media mount attempts failed. \""},{"line_number":279,"context_line":"                   \"Errors encountered: \" + \"; \".join(encountered_errs))"},{"line_number":280,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf0c0152_85111a5d","line":277,"in_reply_to":"10b1ba37_86077bf7","updated":"2025-03-03 10:15:48.000000000","message":"Acknowledged","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9cbd2e06652972869b9ca6c21d1ce146546b83ac","unresolved":true,"context_lines":[{"line_number":276,"context_line":"    if err_msgs:"},{"line_number":277,"context_line":"        encountered_errs \u003d set([err_msgs[0], err_msgs[-1]])"},{"line_number":278,"context_line":"        exc_msg \u003d (\"All virtual media mount attempts failed. \""},{"line_number":279,"context_line":"                   \"Errors encountered: \" + \"; \".join(encountered_errs))"},{"line_number":280,"context_line":"    else:"},{"line_number":281,"context_line":"        exc_msg \u003d \u0027No suitable virtual media device found\u0027"},{"line_number":282,"context_line":"    raise exception.InvalidParameterValue(exc_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e2887822_25116d20","line":279,"updated":"2025-02-27 12:05:23.000000000","message":"While you\u0027re here, could you change it to something compatible with i18n? Namely, something like:\n\n exc_msg \u003d _(\"All virtual ......\"\n             \"Errors: %s\") % \"; \".join(...)","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"0d5fbb6821b820bc03c52b057175e7197628177a","unresolved":false,"context_lines":[{"line_number":276,"context_line":"    if err_msgs:"},{"line_number":277,"context_line":"        encountered_errs \u003d set([err_msgs[0], err_msgs[-1]])"},{"line_number":278,"context_line":"        exc_msg \u003d (\"All virtual media mount attempts failed. \""},{"line_number":279,"context_line":"                   \"Errors encountered: \" + \"; \".join(encountered_errs))"},{"line_number":280,"context_line":"    else:"},{"line_number":281,"context_line":"        exc_msg \u003d \u0027No suitable virtual media device found\u0027"},{"line_number":282,"context_line":"    raise exception.InvalidParameterValue(exc_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"4564c077_d49e53c1","line":279,"in_reply_to":"e2887822_25116d20","updated":"2025-03-03 10:15:48.000000000","message":"Acknowledged","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9cbd2e06652972869b9ca6c21d1ce146546b83ac","unresolved":true,"context_lines":[{"line_number":348,"context_line":"            LOG.warning(err_msg)"},{"line_number":349,"context_line":"            continue"},{"line_number":350,"context_line":"        except sushy.exceptions.ServerSideError as e:"},{"line_number":351,"context_line":"            err_msg \u003d getattr(e, \u0027message\u0027, str(e))"},{"line_number":352,"context_line":"            if err_msg not in err_msgs:"},{"line_number":353,"context_line":"                err_msgs.append(err_msg)"},{"line_number":354,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1c8292fd_9a66f28a","line":351,"updated":"2025-02-27 12:05:23.000000000","message":"str(e) should be enough","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"0d5fbb6821b820bc03c52b057175e7197628177a","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            LOG.warning(err_msg)"},{"line_number":349,"context_line":"            continue"},{"line_number":350,"context_line":"        except sushy.exceptions.ServerSideError as e:"},{"line_number":351,"context_line":"            err_msg \u003d getattr(e, \u0027message\u0027, str(e))"},{"line_number":352,"context_line":"            if err_msg not in err_msgs:"},{"line_number":353,"context_line":"                err_msgs.append(err_msg)"},{"line_number":354,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"49ef7fe8_d33f625c","line":351,"in_reply_to":"1c8292fd_9a66f28a","updated":"2025-03-03 10:15:48.000000000","message":"Acknowledged.","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9cbd2e06652972869b9ca6c21d1ce146546b83ac","unresolved":true,"context_lines":[{"line_number":353,"context_line":"                err_msgs.append(err_msg)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"            e.node_uuid \u003d task.node.uuid"},{"line_number":356,"context_line":"            raise"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        LOG.info(\"Inserted boot media %(boot_url)s into \""},{"line_number":359,"context_line":"                 \"%(boot_device)s for node \""}],"source_content_type":"text/x-python","patch_set":1,"id":"3bb1a18a_3bb4af73","line":356,"updated":"2025-02-27 12:05:23.000000000","message":"This raise will prevent your modified logic on line 277 from actually being reached. You probably need to return here instead.","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"0d5fbb6821b820bc03c52b057175e7197628177a","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                err_msgs.append(err_msg)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"            e.node_uuid \u003d task.node.uuid"},{"line_number":356,"context_line":"            raise"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        LOG.info(\"Inserted boot media %(boot_url)s into \""},{"line_number":359,"context_line":"                 \"%(boot_device)s for node \""}],"source_content_type":"text/x-python","patch_set":1,"id":"23ae786e_d5e0c351","line":356,"in_reply_to":"3bb1a18a_3bb4af73","updated":"2025-03-03 10:15:48.000000000","message":"Acknowledged! (Might returning instead of raising here prevent retry?)","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"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":"979622a5fcd862af13a9994ecc7f5eedc7b43637","unresolved":true,"context_lines":[{"line_number":280,"context_line":"        else:"},{"line_number":281,"context_line":"            encountered_errs \u003d set([err_msgs[0], err_msgs[-1]])"},{"line_number":282,"context_line":"            exc_msg \u003d _(\"All virtual media mount attempts failed. \""},{"line_number":283,"context_line":"                        \"Errors encountered: %s\") % \"; \".join(encountered_errs)"},{"line_number":284,"context_line":"    else:"},{"line_number":285,"context_line":"        exc_msg \u003d \u0027No suitable virtual media device found\u0027"},{"line_number":286,"context_line":"    raise exception.InvalidParameterValue(exc_msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ed8a5d8_2db17824","line":283,"updated":"2025-04-08 19:14:15.000000000","message":"We should directly indicate in the message that is the first and the final error encountered.","commit_id":"56d882d639ede7bfdd18897b445f6c549f9e578d"}],"ironic/tests/unit/drivers/modules/redfish/test_boot.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9cbd2e06652972869b9ca6c21d1ce146546b83ac","unresolved":true,"context_lines":[{"line_number":1450,"context_line":"                    task, mock_manager, \u0027img-url\u0027,"},{"line_number":1451,"context_line":"                    sushy.VIRTUAL_MEDIA_CD, err_msgs)"},{"line_number":1452,"context_line":"                self.fail(\"ServerSideError was not raised\")"},{"line_number":1453,"context_line":"            except sushy.exceptions.ServerSideError:"},{"line_number":1454,"context_line":"                self.assertEqual(2, len(err_msgs))"},{"line_number":1455,"context_line":"                self.assertEqual(first_error, err_msgs[0])"},{"line_number":1456,"context_line":"                self.assertEqual(dell_error, err_msgs[1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"c51531dd_1f5cb184","line":1453,"updated":"2025-02-27 12:05:23.000000000","message":"You need to use assertRaises instead, otherwise you get a false positive if the method does not raise (but see my other comment about not raising an exception at all).","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"1dda7580d3bcee73ba54fa191a871fd516fce6ee","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"                    task, mock_manager, \u0027img-url\u0027,"},{"line_number":1451,"context_line":"                    sushy.VIRTUAL_MEDIA_CD, err_msgs)"},{"line_number":1452,"context_line":"                self.fail(\"ServerSideError was not raised\")"},{"line_number":1453,"context_line":"            except sushy.exceptions.ServerSideError:"},{"line_number":1454,"context_line":"                self.assertEqual(2, len(err_msgs))"},{"line_number":1455,"context_line":"                self.assertEqual(first_error, err_msgs[0])"},{"line_number":1456,"context_line":"                self.assertEqual(dell_error, err_msgs[1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"46af605a_720bd0ec","line":1453,"in_reply_to":"c51531dd_1f5cb184","updated":"2025-12-10 18:32:15.000000000","message":"Acknowledged","commit_id":"59701c8a618d92c68aedb95f79436ddae7e9ad02"},{"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":"979622a5fcd862af13a9994ecc7f5eedc7b43637","unresolved":true,"context_lines":[{"line_number":1435,"context_line":"                inserted\u003dFalse,"},{"line_number":1436,"context_line":"                media_types\u003d[sushy.VIRTUAL_MEDIA_CD])"},{"line_number":1437,"context_line":""},{"line_number":1438,"context_line":"            dell_error \u003d \"Unable to locate the ISO or IMG image file\""},{"line_number":1439,"context_line":"            mock_response \u003d mock.MagicMock()"},{"line_number":1440,"context_line":"            mock_response.json.return_value \u003d {"},{"line_number":1441,"context_line":"                \"error\": {\"message\": dell_error}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ce73de0b_2ea1a132","line":1438,"updated":"2025-04-08 19:14:15.000000000","message":"Avoid using hardware trademarks with negative connotation in code.","commit_id":"56d882d639ede7bfdd18897b445f6c549f9e578d"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"1dda7580d3bcee73ba54fa191a871fd516fce6ee","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"                inserted\u003dFalse,"},{"line_number":1436,"context_line":"                media_types\u003d[sushy.VIRTUAL_MEDIA_CD])"},{"line_number":1437,"context_line":""},{"line_number":1438,"context_line":"            dell_error \u003d \"Unable to locate the ISO or IMG image file\""},{"line_number":1439,"context_line":"            mock_response \u003d mock.MagicMock()"},{"line_number":1440,"context_line":"            mock_response.json.return_value \u003d {"},{"line_number":1441,"context_line":"                \"error\": {\"message\": dell_error}"}],"source_content_type":"text/x-python","patch_set":2,"id":"46eb7e69_32f30b61","line":1438,"in_reply_to":"ce73de0b_2ea1a132","updated":"2025-12-10 18:32:15.000000000","message":"Acknowledged","commit_id":"56d882d639ede7bfdd18897b445f6c549f9e578d"}]}
