)]}'
{"/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":"a6cbd11cca0bb48fb102dbe300838e74f1529fbe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e1c2051a_5c02fb96","updated":"2023-11-13 23:30:09.000000000","message":"I revmoe","commit_id":"4e5b7bc15c0ef29368ff2ec37aa920161e21611b"},{"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":"c1d078e74ee68d6b5a56c1190c789c472f17bc58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"48545c54_ac6eab19","in_reply_to":"e1c2051a_5c02fb96","updated":"2023-11-13 23:30:29.000000000","message":"inadvertant","commit_id":"4e5b7bc15c0ef29368ff2ec37aa920161e21611b"},{"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":"e15b61d351c876599e580be81c98689387b8ac33","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3844275e_ddb29eec","updated":"2023-12-12 17:27:10.000000000","message":"recheck failures appear unrelated","commit_id":"0b014859853a176483424f8598c8f77d108f041b"},{"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":"6af567002aa6d2447010359efec46282e96e15fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e502587d_f092ac13","updated":"2023-11-18 01:37:35.000000000","message":"recheck seeing if I can get a clean run","commit_id":"0b014859853a176483424f8598c8f77d108f041b"},{"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":"007c6c69a87da422500a9409e37f7bf7d4f36618","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e5b41a1d_19e66387","updated":"2023-11-15 21:27:09.000000000","message":"see https://review.opendev.org/c/openstack/ironic/+/900958 for Ironic CI results","commit_id":"0b014859853a176483424f8598c8f77d108f041b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"395dbcf05cc837627d1de7a4ca8425d22f10f164","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fd204ad6_93018f15","updated":"2023-12-19 11:59:00.000000000","message":"this need a rebase but it think","commit_id":"6f4436559814b76562532adc3da186d7cfae66e2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"79df0ae327fdfb1dd3285694a5f41c3ade3dba3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2a0e5afb_a068e9e1","in_reply_to":"fd204ad6_93018f15","updated":"2023-12-19 11:59:49.000000000","message":"its more or less good to go after the pep8 issue is fixed.","commit_id":"6f4436559814b76562532adc3da186d7cfae66e2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f73cb11f70180b78d2095e61ca931935daddd77e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"fdfb4880_138daa03","updated":"2024-02-28 17:58:00.000000000","message":"Late to the party, but great to see this go in. Thank you JayF!","commit_id":"fa3cf7d50cba921ea67eb161e6a199067ea62deb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7aadb366271a311fc1683cf7bd429d0ed9b59390","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"0173b6af_dbc3c7f4","updated":"2024-01-18 22:29:17.000000000","message":"This looks reasonable to me. Thanks for the detailed commit message and code comments.","commit_id":"fa3cf7d50cba921ea67eb161e6a199067ea62deb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"47c84fe0125a348fdc4f48d742fc98f19741c92b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b6952839_b48d0ac7","updated":"2024-01-08 13:59:02.000000000","message":"recheck grenade-skip-level-always is not running the code that is being modifed","commit_id":"fa3cf7d50cba921ea67eb161e6a199067ea62deb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8e8aac77a0c6318c2d39e78a5ffaea06bd6e948b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"4f756527_2559a0c3","updated":"2024-01-19 09:49:54.000000000","message":"recheck timeout exception on some fixture","commit_id":"fa3cf7d50cba921ea67eb161e6a199067ea62deb"}],"nova/tests/unit/virt/ironic/test_driver.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":"a6cbd11cca0bb48fb102dbe300838e74f1529fbe","unresolved":true,"context_lines":[{"line_number":610,"context_line":"    def test_list_instances_uses_instance_uuid(self, mock_inst_by_uuid):"},{"line_number":611,"context_line":"        self.driver.list_instances()"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"        self.mock_conn.nodes.assert_called_with(associated\u003dTrue,"},{"line_number":614,"context_line":"                                                fields\u003d[\u0027instance_uuid\u0027])"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    @mock.patch.object(objects.Instance, \u0027get_by_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"02b10f95_8f80d9c6","side":"PARENT","line":613,"updated":"2023-11-13 23:30:09.000000000","message":"This test was only needed because this was a separate codepath; now that it\u0027s unified with the cached nodes path this shouldn\u0027t be needed anymore. (same below)","commit_id":"96d7c42e2759cd90930a0c5b31ea1b2b412baa2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"395dbcf05cc837627d1de7a4ca8425d22f10f164","unresolved":false,"context_lines":[{"line_number":610,"context_line":"    def test_list_instances_uses_instance_uuid(self, mock_inst_by_uuid):"},{"line_number":611,"context_line":"        self.driver.list_instances()"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"        self.mock_conn.nodes.assert_called_with(associated\u003dTrue,"},{"line_number":614,"context_line":"                                                fields\u003d[\u0027instance_uuid\u0027])"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    @mock.patch.object(objects.Instance, \u0027get_by_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ae906520_bd99fd09","side":"PARENT","line":613,"in_reply_to":"02b10f95_8f80d9c6","updated":"2023-12-19 11:59:00.000000000","message":"Acknowledged","commit_id":"96d7c42e2759cd90930a0c5b31ea1b2b412baa2d"},{"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":"848758c6c394607d22f36ec0bec70a39ca23283e","unresolved":false,"context_lines":[{"line_number":610,"context_line":"    def test_list_instances_uses_instance_uuid(self, mock_inst_by_uuid):"},{"line_number":611,"context_line":"        self.driver.list_instances()"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"        self.mock_conn.nodes.assert_called_with(associated\u003dTrue,"},{"line_number":614,"context_line":"                                                fields\u003d[\u0027instance_uuid\u0027])"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    @mock.patch.object(objects.Instance, \u0027get_by_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"a305bb4b_a6a39551","side":"PARENT","line":613,"in_reply_to":"02b10f95_8f80d9c6","updated":"2023-12-14 20:55:38.000000000","message":"Done","commit_id":"96d7c42e2759cd90930a0c5b31ea1b2b412baa2d"},{"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":"a6cbd11cca0bb48fb102dbe300838e74f1529fbe","unresolved":true,"context_lines":[{"line_number":614,"context_line":"                                                fields\u003d[\u0027instance_uuid\u0027])"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    @mock.patch.object(objects.Instance, \u0027get_by_uuid\u0027)"},{"line_number":617,"context_line":"    def test_list_instances_fail(self, mock_inst_by_uuid):"},{"line_number":618,"context_line":"        self.mock_conn.nodes.side_effect \u003d exception.NovaException"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"        self.assertRaises(exception.VirtDriverNotReady,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3b72b7b5_f6bf391d","side":"PARENT","line":617,"updated":"2023-11-13 23:30:09.000000000","message":"This is a weirder case, and I\u0027m curious about opinions on changed behavior here.\n\nPrior to this, if there was any error connecting to the Ironic API; it would\u0027ve bubbled up immediately. Using the cache, with a refresh, however, swallows these errors. I can rewrite the code to permit someone to opt-into having those exceptions re-raised to get the existing behavior in place, but I\u0027m not sure it\u0027s valuable.\n\nJust pointing out that this test removal *does* indicate a change in behavior, it was intentional, and I\u0027m not sure it was the right thing to do  😊","commit_id":"96d7c42e2759cd90930a0c5b31ea1b2b412baa2d"},{"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":"848758c6c394607d22f36ec0bec70a39ca23283e","unresolved":false,"context_lines":[{"line_number":614,"context_line":"                                                fields\u003d[\u0027instance_uuid\u0027])"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    @mock.patch.object(objects.Instance, \u0027get_by_uuid\u0027)"},{"line_number":617,"context_line":"    def test_list_instances_fail(self, mock_inst_by_uuid):"},{"line_number":618,"context_line":"        self.mock_conn.nodes.side_effect \u003d exception.NovaException"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"        self.assertRaises(exception.VirtDriverNotReady,"}],"source_content_type":"text/x-python","patch_set":1,"id":"84eb32ce_4a580b9f","side":"PARENT","line":617,"in_reply_to":"3b72b7b5_f6bf391d","updated":"2023-12-14 20:55:38.000000000","message":"Done","commit_id":"96d7c42e2759cd90930a0c5b31ea1b2b412baa2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"395dbcf05cc837627d1de7a4ca8425d22f10f164","unresolved":false,"context_lines":[{"line_number":614,"context_line":"                                                fields\u003d[\u0027instance_uuid\u0027])"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    @mock.patch.object(objects.Instance, \u0027get_by_uuid\u0027)"},{"line_number":617,"context_line":"    def test_list_instances_fail(self, mock_inst_by_uuid):"},{"line_number":618,"context_line":"        self.mock_conn.nodes.side_effect \u003d exception.NovaException"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"        self.assertRaises(exception.VirtDriverNotReady,"}],"source_content_type":"text/x-python","patch_set":1,"id":"754ac479_1a4d948a","side":"PARENT","line":617,"in_reply_to":"3b72b7b5_f6bf391d","updated":"2023-12-19 11:59:00.000000000","message":"the change in behaviour i guess is we will return the stale info instead of a 500 or similar\n\ni think that is ok as long as we are clear that this is cached info from an api perspective when usign the ironic driver.","commit_id":"96d7c42e2759cd90930a0c5b31ea1b2b412baa2d"},{"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":"a6cbd11cca0bb48fb102dbe300838e74f1529fbe","unresolved":true,"context_lines":[{"line_number":606,"context_line":"        num_nodes \u003d 2"},{"line_number":607,"context_line":"        nodes \u003d []"},{"line_number":608,"context_line":"        for n in range(num_nodes):"},{"line_number":609,"context_line":"            nodes.append(ironic_utils.get_test_node("},{"line_number":610,"context_line":"                                      instance_id\u003duuidutils.generate_uuid(),"},{"line_number":611,"context_line":"                                      fields\u003d[\u0027instance_id\u0027]))"},{"line_number":612,"context_line":"        self.driver.node_cache \u003d nodes"}],"source_content_type":"text/x-python","patch_set":1,"id":"04a00d03_246c3e5d","line":609,"updated":"2023-11-13 23:30:09.000000000","message":"going to use _get_cached_node here for parallelism with the list_instances test","commit_id":"4e5b7bc15c0ef29368ff2ec37aa920161e21611b"},{"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":"848758c6c394607d22f36ec0bec70a39ca23283e","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        num_nodes \u003d 2"},{"line_number":607,"context_line":"        nodes \u003d []"},{"line_number":608,"context_line":"        for n in range(num_nodes):"},{"line_number":609,"context_line":"            nodes.append(ironic_utils.get_test_node("},{"line_number":610,"context_line":"                                      instance_id\u003duuidutils.generate_uuid(),"},{"line_number":611,"context_line":"                                      fields\u003d[\u0027instance_id\u0027]))"},{"line_number":612,"context_line":"        self.driver.node_cache \u003d nodes"}],"source_content_type":"text/x-python","patch_set":1,"id":"5615dbe9_13a8a020","line":609,"in_reply_to":"04a00d03_246c3e5d","updated":"2023-12-14 20:55:38.000000000","message":"Done","commit_id":"4e5b7bc15c0ef29368ff2ec37aa920161e21611b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"395dbcf05cc837627d1de7a4ca8425d22f10f164","unresolved":true,"context_lines":[{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        response \u003d self.driver.list_instances()"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        self.mock_conn.nodes.assert_called_with(associated\u003dTrue,"},{"line_number":600,"context_line":"                                                fields\u003d[\u0027instance_uuid\u0027])"},{"line_number":601,"context_line":"        expected_calls \u003d [mock.call(mock.ANY, instances[0].uuid),"},{"line_number":602,"context_line":"                          mock.call(mock.ANY, instances[1].uuid)]"}],"source_content_type":"text/x-python","patch_set":6,"id":"185d1a4c_9ef11f9e","side":"PARENT","line":599,"updated":"2023-12-19 11:59:00.000000000","message":"you could keep the mock and assert its not called instead but im alos ok with remiving it.","commit_id":"96d7c42e2759cd90930a0c5b31ea1b2b412baa2d"},{"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":"93a8bd2e04f37bed174c83dc63838d444a449f85","unresolved":false,"context_lines":[{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        response \u003d self.driver.list_instances()"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        self.mock_conn.nodes.assert_called_with(associated\u003dTrue,"},{"line_number":600,"context_line":"                                                fields\u003d[\u0027instance_uuid\u0027])"},{"line_number":601,"context_line":"        expected_calls \u003d [mock.call(mock.ANY, instances[0].uuid),"},{"line_number":602,"context_line":"                          mock.call(mock.ANY, instances[1].uuid)]"}],"source_content_type":"text/x-python","patch_set":6,"id":"9e436338_ae89eb52","side":"PARENT","line":599,"in_reply_to":"185d1a4c_9ef11f9e","updated":"2023-12-19 22:58:11.000000000","message":"(this comment is old; responding just in case anyone sees and is confused) No we can\u0027t keep this; we\u0027re not making this call anymore. We\u0027ve got the cache prepopulated with the self.driver.node_cache \u003d nodes on L586 on the \"new\" side, so the list_instances() call won\u0027t refresh cache and hit the mocked-connection at all.","commit_id":"96d7c42e2759cd90930a0c5b31ea1b2b412baa2d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"395dbcf05cc837627d1de7a4ca8425d22f10f164","unresolved":false,"context_lines":[{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    @mock.patch.object(objects.Instance, \u0027get_by_uuid\u0027)"},{"line_number":584,"context_line":"    def test_list_instances(self, mock_inst_by_uuid):"},{"line_number":585,"context_line":"        nodes \u003d {}"},{"line_number":586,"context_line":"        instances \u003d []"},{"line_number":587,"context_line":"        for i in range(2):"},{"line_number":588,"context_line":"            uuid \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":6,"id":"a294eada_74b73488","line":585,"updated":"2023-12-19 11:59:00.000000000","message":"ok so for the cache we need a dict of nood uuid to instnace uuid isntead of a list","commit_id":"67bac769f51766bd4c99402e12aa358515b2a69b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"395dbcf05cc837627d1de7a4ca8425d22f10f164","unresolved":false,"context_lines":[{"line_number":593,"context_line":"            nodes[node_uuid] \u003d _get_cached_node("},{"line_number":594,"context_line":"                uuid\u003dnode_uuid, instance_id\u003duuid)"},{"line_number":595,"context_line":"        mock_inst_by_uuid.side_effect \u003d instances"},{"line_number":596,"context_line":"        self.driver.node_cache \u003d nodes"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        response \u003d self.driver.list_instances()"},{"line_number":599,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5ee2e25f_c71cc2eb","line":596,"updated":"2023-12-19 11:59:00.000000000","message":"since we are altertering it here to populate the cache","commit_id":"67bac769f51766bd4c99402e12aa358515b2a69b"}],"releasenotes/notes/ironic-list-instance-respect-partition-key-339ff653eaa00753.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b21f268467b4fd2199a7559e12a04d7900f49d1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"fixes:"},{"line_number":2,"context_line":"  - Ironic virt driver now uses the node cache and respects partition keys, "},{"line_number":3,"context_line":"    such as conductor group, for list_instances and list_instance_uuids calls."},{"line_number":4,"context_line":"    This fix will improve perfomance of the periodic queries which use these"},{"line_number":5,"context_line":"    driver methods and reduce API and DB load on the backing Ironic service."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"14aa612e_a575e7e4","line":2,"updated":"2023-12-13 20:23:01.000000000","message":":) thanks\n\nat the end of the day that does not really hurt but its nice to clean up\n\nill review properly tomorrow","commit_id":"67bac769f51766bd4c99402e12aa358515b2a69b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"395dbcf05cc837627d1de7a4ca8425d22f10f164","unresolved":true,"context_lines":[{"line_number":1,"context_line":"fixes:"},{"line_number":2,"context_line":"  - Ironic virt driver now uses the node cache and respects partition keys,"},{"line_number":3,"context_line":"    such as conductor group, for list_instances and list_instance_uuids calls."},{"line_number":4,"context_line":"    This fix will improve perfomance of the periodic queries which use these"},{"line_number":5,"context_line":"    driver methods and reduce API and DB load on the backing Ironic service."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"78c39df0_d724f08c","line":4,"range":{"start_line":4,"start_character":26,"end_line":4,"end_character":36},"updated":"2023-12-19 11:59:00.000000000","message":"so my codespell patch finally merged and it noticed this should have 2 \"r\"s\n\n\"\"\"\nreleasenotes/notes/ironic-list-instance-respect-partition-key-339ff653eaa00753.yaml:4: perfomance \u003d\u003d\u003e performance\n\"\"\"","commit_id":"f99c161d450a5f61417477d31a697e8627680776"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"200b04084f93cb4e038324531282a1ddfac331e3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"fixes:"},{"line_number":2,"context_line":"  - Ironic virt driver now uses the node cache and respects partition keys,"},{"line_number":3,"context_line":"    such as conductor group, for list_instances and list_instance_uuids calls."},{"line_number":4,"context_line":"    This fix will improve perfomance of the periodic queries which use these"},{"line_number":5,"context_line":"    driver methods and reduce API and DB load on the backing Ironic service."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"c061dc77_23ca8fb2","line":4,"range":{"start_line":4,"start_character":26,"end_line":4,"end_character":36},"in_reply_to":"78c39df0_d724f08c","updated":"2023-12-20 00:13:18.000000000","message":"Done","commit_id":"f99c161d450a5f61417477d31a697e8627680776"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7aadb366271a311fc1683cf7bd429d0ed9b59390","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"9a2846cb_18f517f7","line":6,"updated":"2024-01-18 22:29:17.000000000","message":"Would have liked to see a link to the launchpad bug included in the release note.","commit_id":"fa3cf7d50cba921ea67eb161e6a199067ea62deb"}]}
