)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"6504ca59955aa7448d651f9c6bf79bd1668c4218","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"62970c15_ea339831","updated":"2021-11-15 19:25:01.000000000","message":"\u003e Patch Set 3:\n\u003e \n\u003e Unit tests for this change is still missing.\n\nAdded unit test for new functionality","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":819,"name":"Adrien Cunin","email":"adrien@adriencunin.fr","username":"adri2000"},"change_message_id":"a31289a712d781e45b3a53bc8f55622908ed4d3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"78c657e3_f8aa6e40","updated":"2022-01-12 15:17:44.000000000","message":"FWIW, I tested and applied the patch on a Victoria deployment, and it does fix the resize problem as expected.","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"3a56486a9647ec207048b094404480717764d362","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a7017dd8_7ac91679","updated":"2022-01-06 08:28:34.000000000","message":"LGTM!\n\nThanks for the patch. There is unresolved comment on the function naming of one of the tests. Could you please check and resolve the same.","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"0a662c2eac53c1a258bcaa09500c5de6765364d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"555be8cc_256fbdb5","updated":"2022-01-19 23:14:44.000000000","message":"Thank you for the patch. Please address a minor comment inline.","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":819,"name":"Adrien Cunin","email":"adrien@adriencunin.fr","username":"adri2000"},"change_message_id":"231b501aff120de37a2407631b5250dd50409f64","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"46003493_630abdae","in_reply_to":"31e028ab_429695e5","updated":"2022-01-13 09:06:12.000000000","message":"Sure, what logs exactly are you interested in?","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"b497866bf5ce5baaa3e09239422d80674cd4a1e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"720fb788_9180c4ca","in_reply_to":"46003493_630abdae","updated":"2022-01-13 14:35:08.000000000","message":"Done","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"b497866bf5ce5baaa3e09239422d80674cd4a1e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"134e50a2_ae2fd5a8","in_reply_to":"46003493_630abdae","updated":"2022-01-13 14:35:08.000000000","message":"Misread \u0027doesnt fix Victoria\u0027, never mind)","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"29b41cc68b48be066dc9e55469584c663758d1a7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"31e028ab_429695e5","in_reply_to":"78c657e3_f8aa6e40","updated":"2022-01-12 16:19:58.000000000","message":"Could you provide some logs?","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7685ba498195d44be100be260c51b6483cf3365f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f222e1a8_ed4ff4d3","updated":"2022-01-20 17:56:38.000000000","message":"recheck","commit_id":"b370c9dd0019aed8d9033aed1c90bad1e6230933"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"99d3888c8954fcab02135e7e07ccb84c188869e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d636d4d5_8272c059","updated":"2022-01-27 18:05:29.000000000","message":"Also, the confirm/revert resize action slightly breaks the instances table (although the wrong alignment can be fixed by refreshing page). It doesn\u0027t look like it\u0027s in the scope, so I\u0027m ok with merging this patch and fixing the action as a follow-up.","commit_id":"35dfe935444d0e4652c5923e56a23534cd022738"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"0ea60f76b3800156323908013f2943eeafa21891","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ee963530_3e3c6640","updated":"2022-01-25 02:58:32.000000000","message":"LGTM!","commit_id":"35dfe935444d0e4652c5923e56a23534cd022738"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"7b9ed1e6fdae5d6c133cdcb1a2504b6557ea43bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"79f08163_c4f63d08","updated":"2022-01-27 17:58:59.000000000","message":"Thanks for the patch. LGTM, tested with nova microversion \u003c2.46 and \u003e 2.46 and works fine in both cases.","commit_id":"35dfe935444d0e4652c5923e56a23534cd022738"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"eb7bc7eae234823f2f2eb433c13c3eba4f1b7a15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"640fc6eb_f7c8822a","updated":"2022-01-27 18:00:50.000000000","message":"The patch needs to be rebased manually now, after droppping django based launch instance implementation.","commit_id":"35dfe935444d0e4652c5923e56a23534cd022738"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"1b27c89fd208e40125891503825e5f624be48db3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"8fec7d5c_2ccdb420","updated":"2022-01-24 16:19:29.000000000","message":"recheck","commit_id":"35dfe935444d0e4652c5923e56a23534cd022738"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0ab5b0a6653b8945cb096784bca86f0d1a4ee3b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f812ae61_f90ddcd3","updated":"2022-02-07 05:58:18.000000000","message":"I am addressing my comments.","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a0ab595cae021b0431c24f1548307cab375a373f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"a5ee5714_87680325","updated":"2022-02-01 10:51:04.000000000","message":"The main code looks good, but I see several things to be improved in the unit tests.\nIf you are okay, I can update it.","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"419e3167b603bc3eae2b3b1cc7bd0ac6e98f950e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ec5c5fc4_8ad49847","updated":"2022-02-16 07:15:51.000000000","message":"The integartion tests job failed in patch set 12 in four consecutive runs. It does not look transient.\nMost failures happened in the pagination tests.\nBefore investigating the detail, I will rebase this on top of the latest master.\n\n----\n\nhttps://zuul.opendev.org/t/openstack/build/85db7e7445fa4b63b615b6b1747f1ead\n\nTestAdminInstances.test_instances_pagination\nTestAdminInstances.test_instances_pagination_and_filtration\nTestAdminVolumes.test_volumes_pagination\n\nhttps://zuul.opendev.org/t/openstack/build/f70dd93bed604dbd9777ea40e054e2ca/conso\n\nTestAdminInstances.test_instances_pagination\nTestAdminInstances.test_instances_pagination_and_filtration\nTestAdminVolumes.test_volumes_pagination\n\nhttps://zuul.opendev.org/t/openstack/build/9eb5f50d12e540959c1b85cee26191b0 \n\nTestInstances.test_instances_pagination\nTestInstances.test_instances_pagination_and_filtration\nTestAdminInstances.test_instances_pagination\nTestAdminInstances.test_instances_pagination_and_filtration\nTestVolumesBasic.test_volumes_pagination\nTestAdminVolumes.test_volumes_pagination\n\nhttps://zuul.opendev.org/t/openstack/build/c69ef3fc5c544c63a56fa81987fe3a19\n\nTestInstances.test_instances_pagination_and_filtration\n\n","commit_id":"60f275b781f1480c73987c582c33afbb4b372f5a"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"f6e6160572627746f94979eae47ca8011f93d3d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"02d52e3a_294195c1","updated":"2022-02-16 07:15:32.000000000","message":"recheck","commit_id":"60f275b781f1480c73987c582c33afbb4b372f5a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"f492f9a37b06ad38e1d93fb19d4180e6574ee84a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"85e1c8d8_9bb1584a","updated":"2022-02-14 19:36:30.000000000","message":"recheck","commit_id":"60f275b781f1480c73987c582c33afbb4b372f5a"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"4da0a8813c06d072248fba3f9447d42127d7a67e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"9ab781ef_aa25e846","updated":"2022-02-16 05:41:37.000000000","message":"recheck","commit_id":"60f275b781f1480c73987c582c33afbb4b372f5a"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"610b3e981704f540fc80fa822a09f39179d6139e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"a1bcc30f_45151343","updated":"2022-02-15 15:57:07.000000000","message":"recheck","commit_id":"60f275b781f1480c73987c582c33afbb4b372f5a"}],"openstack_dashboard/dashboards/project/instances/tests.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"f8520fb0e47cf1c44e4e1faa837ffdcdfd0b7ebf","unresolved":true,"context_lines":[{"line_number":4208,"context_line":"                                                     server.id)"},{"line_number":4209,"context_line":"        self.mock_flavor_list.assert_called_once_with(helpers.IsHttpRequest())"},{"line_number":4210,"context_line":""},{"line_number":4211,"context_line":"    @helpers.create_mocks({api.nova: (\u0027server_get\u0027,"},{"line_number":4212,"context_line":"                                      \u0027flavor_list\u0027,"},{"line_number":4213,"context_line":"                                      \u0027flavor_get\u0027,"},{"line_number":4214,"context_line":"                                      \u0027server_group_list\u0027,"},{"line_number":4215,"context_line":"                                      \u0027tenant_absolute_limits\u0027,"},{"line_number":4216,"context_line":"                                      \u0027is_feature_available\u0027)})"},{"line_number":4217,"context_line":"    def test_instance_resize_get_current_flavor_not_found(self):"},{"line_number":4218,"context_line":"        server \u003d self.servers.first()"},{"line_number":4219,"context_line":"        self.mock_server_get.return_value \u003d server"},{"line_number":4220,"context_line":"        self.mock_flavor_list.return_value \u003d []"},{"line_number":4221,"context_line":"        self.mock_flavor_get.side_effect \u003d self.exceptions.nova"},{"line_number":4222,"context_line":"        self.mock_server_group_list.return_value \u003d self.server_groups.list()"},{"line_number":4223,"context_line":"        self.mock_tenant_absolute_limits.return_value \u003d self.limits[\u0027absolute\u0027]"},{"line_number":4224,"context_line":""},{"line_number":4225,"context_line":"        url \u003d reverse(\u0027horizon:project:instances:resize\u0027, args\u003d[server.id])"},{"line_number":4226,"context_line":"        res \u003d self.client.get(url)"},{"line_number":4227,"context_line":""},{"line_number":4228,"context_line":"        self.assertTemplateUsed(res, views.WorkflowView.template_name)"},{"line_number":4229,"context_line":""},{"line_number":4230,"context_line":"        self.mock_server_get.assert_called_once_with(helpers.IsHttpRequest(),"},{"line_number":4231,"context_line":"                                                     server.id)"},{"line_number":4232,"context_line":"        self.assert_mock_multiple_calls_with_same_arguments("},{"line_number":4233,"context_line":"            self.mock_flavor_list, 2,"},{"line_number":4234,"context_line":"            mock.call(helpers.IsHttpRequest()))"},{"line_number":4235,"context_line":"        self.mock_flavor_get.assert_called_once_with("},{"line_number":4236,"context_line":"            helpers.IsHttpRequest(), server.flavor[\u0027id\u0027])"},{"line_number":4237,"context_line":"        self.mock_server_group_list.assert_called_once_with("},{"line_number":4238,"context_line":"            helpers.IsHttpRequest())"},{"line_number":4239,"context_line":"        self.mock_tenant_absolute_limits.assert_called_once_with("},{"line_number":4240,"context_line":"            helpers.IsHttpRequest(), reserved\u003dTrue)"},{"line_number":4241,"context_line":""},{"line_number":4242,"context_line":"    def _instance_resize_post(self, server_id, flavor_id, disk_config):"},{"line_number":4243,"context_line":"        formData \u003d {\u0027flavor\u0027: flavor_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"adddff6d_e8c068b7","side":"PARENT","line":4240,"range":{"start_line":4211,"start_character":4,"end_line":4240,"end_character":51},"updated":"2021-09-14 12:09:47.000000000","message":"Why did you remove this tests, IMO it\u0027s better to fix it per new changes.","commit_id":"465d1649190debebaab2b895d6b937bcc753ac9a"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"3d503d7532d895e2141b56412224586deeb16ddf","unresolved":true,"context_lines":[{"line_number":4208,"context_line":"                                                     server.id)"},{"line_number":4209,"context_line":"        self.mock_flavor_list.assert_called_once_with(helpers.IsHttpRequest())"},{"line_number":4210,"context_line":""},{"line_number":4211,"context_line":"    @helpers.create_mocks({api.nova: (\u0027server_get\u0027,"},{"line_number":4212,"context_line":"                                      \u0027flavor_list\u0027,"},{"line_number":4213,"context_line":"                                      \u0027flavor_get\u0027,"},{"line_number":4214,"context_line":"                                      \u0027server_group_list\u0027,"},{"line_number":4215,"context_line":"                                      \u0027tenant_absolute_limits\u0027,"},{"line_number":4216,"context_line":"                                      \u0027is_feature_available\u0027)})"},{"line_number":4217,"context_line":"    def test_instance_resize_get_current_flavor_not_found(self):"},{"line_number":4218,"context_line":"        server \u003d self.servers.first()"},{"line_number":4219,"context_line":"        self.mock_server_get.return_value \u003d server"},{"line_number":4220,"context_line":"        self.mock_flavor_list.return_value \u003d []"},{"line_number":4221,"context_line":"        self.mock_flavor_get.side_effect \u003d self.exceptions.nova"},{"line_number":4222,"context_line":"        self.mock_server_group_list.return_value \u003d self.server_groups.list()"},{"line_number":4223,"context_line":"        self.mock_tenant_absolute_limits.return_value \u003d self.limits[\u0027absolute\u0027]"},{"line_number":4224,"context_line":""},{"line_number":4225,"context_line":"        url \u003d reverse(\u0027horizon:project:instances:resize\u0027, args\u003d[server.id])"},{"line_number":4226,"context_line":"        res \u003d self.client.get(url)"},{"line_number":4227,"context_line":""},{"line_number":4228,"context_line":"        self.assertTemplateUsed(res, views.WorkflowView.template_name)"},{"line_number":4229,"context_line":""},{"line_number":4230,"context_line":"        self.mock_server_get.assert_called_once_with(helpers.IsHttpRequest(),"},{"line_number":4231,"context_line":"                                                     server.id)"},{"line_number":4232,"context_line":"        self.assert_mock_multiple_calls_with_same_arguments("},{"line_number":4233,"context_line":"            self.mock_flavor_list, 2,"},{"line_number":4234,"context_line":"            mock.call(helpers.IsHttpRequest()))"},{"line_number":4235,"context_line":"        self.mock_flavor_get.assert_called_once_with("},{"line_number":4236,"context_line":"            helpers.IsHttpRequest(), server.flavor[\u0027id\u0027])"},{"line_number":4237,"context_line":"        self.mock_server_group_list.assert_called_once_with("},{"line_number":4238,"context_line":"            helpers.IsHttpRequest())"},{"line_number":4239,"context_line":"        self.mock_tenant_absolute_limits.assert_called_once_with("},{"line_number":4240,"context_line":"            helpers.IsHttpRequest(), reserved\u003dTrue)"},{"line_number":4241,"context_line":""},{"line_number":4242,"context_line":"    def _instance_resize_post(self, server_id, flavor_id, disk_config):"},{"line_number":4243,"context_line":"        formData \u003d {\u0027flavor\u0027: flavor_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"45cf6ff6_616edc56","side":"PARENT","line":4240,"range":{"start_line":4211,"start_character":4,"end_line":4240,"end_character":51},"in_reply_to":"adddff6d_e8c068b7","updated":"2021-09-16 12:25:38.000000000","message":"Code block covered by this test was totally removed in previous patchset. For now, returning both code and test","commit_id":"465d1649190debebaab2b895d6b937bcc753ac9a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a0ab595cae021b0431c24f1548307cab375a373f","unresolved":true,"context_lines":[{"line_number":2154,"context_line":"    @helpers.create_mocks({api.neutron: (\u0027tenant_floating_ip_release\u0027,)})"},{"line_number":2155,"context_line":"    def test_disassociate_floating_ip_with_release(self):"},{"line_number":2156,"context_line":"        self._test_disassociate_floating_ip(is_release\u003dTrue)"},{"line_number":2157,"context_line":""},{"line_number":2158,"context_line":"    @helpers.create_mocks({api.nova: (\u0027server_get\u0027,"},{"line_number":2159,"context_line":"                                      \u0027flavor_list\u0027,"},{"line_number":2160,"context_line":"                                      \u0027tenant_absolute_limits\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"4d5b8d7a_74aecc43","line":2157,"updated":"2022-02-01 10:51:04.000000000","message":"Unit test needs to cover both cases (nova API \u003c2.47 and \u003e\u003d2.47)","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38668c73d414d6265f9b049ba13084d8b39768d6","unresolved":false,"context_lines":[{"line_number":2154,"context_line":"    @helpers.create_mocks({api.neutron: (\u0027tenant_floating_ip_release\u0027,)})"},{"line_number":2155,"context_line":"    def test_disassociate_floating_ip_with_release(self):"},{"line_number":2156,"context_line":"        self._test_disassociate_floating_ip(is_release\u003dTrue)"},{"line_number":2157,"context_line":""},{"line_number":2158,"context_line":"    @helpers.create_mocks({api.nova: (\u0027server_get\u0027,"},{"line_number":2159,"context_line":"                                      \u0027flavor_list\u0027,"},{"line_number":2160,"context_line":"                                      \u0027tenant_absolute_limits\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bc1dcf92_e20c2554","line":2157,"in_reply_to":"4d5b8d7a_74aecc43","updated":"2022-02-14 09:22:34.000000000","message":"Done","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0ab5b0a6653b8945cb096784bca86f0d1a4ee3b1","unresolved":true,"context_lines":[{"line_number":2202,"context_line":"            self.mock_flavor_list, 2,"},{"line_number":2203,"context_line":"            mock.call(helpers.IsHttpRequest()))"},{"line_number":2204,"context_line":"        self.mock_tenant_absolute_limits.assert_called_once_with("},{"line_number":2205,"context_line":"            helpers.IsHttpRequest(), reserved\u003dTrue)"},{"line_number":2206,"context_line":""},{"line_number":2207,"context_line":"    @helpers.create_mocks({api.nova: (\u0027server_get\u0027,)})"},{"line_number":2208,"context_line":"    def test_instance_resize_get_server_get_exception(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"4254177a_2131467c","line":2205,"updated":"2022-02-07 05:58:18.000000000","message":"mock_flavor_get needs to be asserted here.","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38668c73d414d6265f9b049ba13084d8b39768d6","unresolved":false,"context_lines":[{"line_number":2202,"context_line":"            self.mock_flavor_list, 2,"},{"line_number":2203,"context_line":"            mock.call(helpers.IsHttpRequest()))"},{"line_number":2204,"context_line":"        self.mock_tenant_absolute_limits.assert_called_once_with("},{"line_number":2205,"context_line":"            helpers.IsHttpRequest(), reserved\u003dTrue)"},{"line_number":2206,"context_line":""},{"line_number":2207,"context_line":"    @helpers.create_mocks({api.nova: (\u0027server_get\u0027,)})"},{"line_number":2208,"context_line":"    def test_instance_resize_get_server_get_exception(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"005609e6_6363a56f","line":2205,"in_reply_to":"4254177a_2131467c","updated":"2022-02-14 09:22:34.000000000","message":"Done","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0ab5b0a6653b8945cb096784bca86f0d1a4ee3b1","unresolved":true,"context_lines":[{"line_number":2225,"context_line":"        server \u003d self.servers.first()"},{"line_number":2226,"context_line":""},{"line_number":2227,"context_line":"        self.mock_server_get.return_value \u003d server"},{"line_number":2228,"context_line":"        self.mock_flavor_list.side_effect \u003d self.exceptions.nova"},{"line_number":2229,"context_line":""},{"line_number":2230,"context_line":"        url \u003d reverse(\u0027horizon:project:instances:resize\u0027,"},{"line_number":2231,"context_line":"                      args\u003d[server.id])"}],"source_content_type":"text/x-python","patch_set":11,"id":"0a9f1164_c3c1b84d","line":2228,"updated":"2022-02-07 05:58:18.000000000","message":"If flavor_get needs to be mocked, return_value of flavor_get() needs to be assigned properly and mock_flavor_get should be asserted below.","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38668c73d414d6265f9b049ba13084d8b39768d6","unresolved":false,"context_lines":[{"line_number":2225,"context_line":"        server \u003d self.servers.first()"},{"line_number":2226,"context_line":""},{"line_number":2227,"context_line":"        self.mock_server_get.return_value \u003d server"},{"line_number":2228,"context_line":"        self.mock_flavor_list.side_effect \u003d self.exceptions.nova"},{"line_number":2229,"context_line":""},{"line_number":2230,"context_line":"        url \u003d reverse(\u0027horizon:project:instances:resize\u0027,"},{"line_number":2231,"context_line":"                      args\u003d[server.id])"}],"source_content_type":"text/x-python","patch_set":11,"id":"8a9ab835_594af4f0","line":2228,"in_reply_to":"0a9f1164_c3c1b84d","updated":"2022-02-14 09:22:34.000000000","message":"Done\n\nflavor_get needs to be mocked. I added the assertion for self.mock_flavor_get.","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"042f32a1fa96191bd6ae696d2dfa3d6399f69cce","unresolved":true,"context_lines":[{"line_number":2189,"context_line":"                         workflows.ResizeInstance.name)"},{"line_number":2190,"context_line":"        self.assertContains(res, \u0027Disk Partition\u0027)"},{"line_number":2191,"context_line":""},{"line_number":2192,"context_line":"        config_drive_field_label \u003d \u0027Configuration Drive\u0027"},{"line_number":2193,"context_line":"        self.assertNotContains(res, config_drive_field_label)"},{"line_number":2194,"context_line":""},{"line_number":2195,"context_line":"        step \u003d workflow.get_step(\"flavor_choice\")"},{"line_number":2196,"context_line":"        self.assertEqual(step.action.initial[\u0027old_flavor_name\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"4c55958d_880fef0c","line":2193,"range":{"start_line":2192,"start_character":8,"end_line":2193,"end_character":61},"updated":"2022-02-16 06:47:13.000000000","message":"Could you drop this because we are not using the config_drive option here? It needs to show only for Launch Instance.","commit_id":"60f275b781f1480c73987c582c33afbb4b372f5a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ead6c667f50f4b4d60ec39249b80da37b554f5ae","unresolved":true,"context_lines":[{"line_number":2189,"context_line":"                         workflows.ResizeInstance.name)"},{"line_number":2190,"context_line":"        self.assertContains(res, \u0027Disk Partition\u0027)"},{"line_number":2191,"context_line":""},{"line_number":2192,"context_line":"        config_drive_field_label \u003d \u0027Configuration Drive\u0027"},{"line_number":2193,"context_line":"        self.assertNotContains(res, config_drive_field_label)"},{"line_number":2194,"context_line":""},{"line_number":2195,"context_line":"        step \u003d workflow.get_step(\"flavor_choice\")"},{"line_number":2196,"context_line":"        self.assertEqual(step.action.initial[\u0027old_flavor_name\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"52b90b00_759e376b","line":2193,"range":{"start_line":2192,"start_character":8,"end_line":2193,"end_character":61},"in_reply_to":"4c55958d_880fef0c","updated":"2022-02-16 07:03:14.000000000","message":"This is completely unrelated to this fix. It should be done separately as a follow-up of Django Launch Instance clenaup. Mixing two fixes in a single commit is toally a bad idea.","commit_id":"60f275b781f1480c73987c582c33afbb4b372f5a"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"dedbd3b397ffe77382dfa3bb694a44eb522cb727","unresolved":false,"context_lines":[{"line_number":2189,"context_line":"                         workflows.ResizeInstance.name)"},{"line_number":2190,"context_line":"        self.assertContains(res, \u0027Disk Partition\u0027)"},{"line_number":2191,"context_line":""},{"line_number":2192,"context_line":"        config_drive_field_label \u003d \u0027Configuration Drive\u0027"},{"line_number":2193,"context_line":"        self.assertNotContains(res, config_drive_field_label)"},{"line_number":2194,"context_line":""},{"line_number":2195,"context_line":"        step \u003d workflow.get_step(\"flavor_choice\")"},{"line_number":2196,"context_line":"        self.assertEqual(step.action.initial[\u0027old_flavor_name\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"0b2d8c23_7a65248d","line":2193,"range":{"start_line":2192,"start_character":8,"end_line":2193,"end_character":61},"in_reply_to":"52b90b00_759e376b","updated":"2022-02-16 07:13:02.000000000","message":"ok, let\u0027s do it in a separate patch.","commit_id":"60f275b781f1480c73987c582c33afbb4b372f5a"}],"openstack_dashboard/dashboards/project/instances/utils.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"d89ebfac98f63e351ce7134fdcc5d9a372f0727b","unresolved":true,"context_lines":[{"line_number":242,"context_line":"    :param kwargs: flavor parameters to return if hit some flavor discrepancy"},{"line_number":243,"context_line":"    :return: flavor name or default placeholder"},{"line_number":244,"context_line":"    \"\"\""},{"line_number":245,"context_line":"    def flavor_from_dict(input):"},{"line_number":246,"context_line":"        \"\"\"Creates flavor-like objects from dictionary"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        :param input: dictionary contains vcpu, ram, name, etc. values"},{"line_number":249,"context_line":"        :return: novaclient.v2.flavors.Flavor like object"},{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        return namedtuple(\u0027Flavor\u0027, input.keys())(*input.values())"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    flavor_id \u003d instance.flavor.get(\u0027id\u0027)"},{"line_number":254,"context_line":"    instance_id \u003d instance.id"}],"source_content_type":"text/x-python","patch_set":7,"id":"c64b3c94_272b6127","line":251,"range":{"start_line":245,"start_character":4,"end_line":251,"end_character":66},"updated":"2021-11-18 04:36:20.000000000","message":"I am also not sure we really need this function and falllback_flavor.\nCan\u0027t we just get flavor_id directly from instance.flavor.get(\u0027id\u0027) and then check microversion condition and return flavor.","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"1db8d19475b4b5ee355ef627f60a80994f8a60aa","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    :param kwargs: flavor parameters to return if hit some flavor discrepancy"},{"line_number":243,"context_line":"    :return: flavor name or default placeholder"},{"line_number":244,"context_line":"    \"\"\""},{"line_number":245,"context_line":"    def flavor_from_dict(input):"},{"line_number":246,"context_line":"        \"\"\"Creates flavor-like objects from dictionary"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        :param input: dictionary contains vcpu, ram, name, etc. values"},{"line_number":249,"context_line":"        :return: novaclient.v2.flavors.Flavor like object"},{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        return namedtuple(\u0027Flavor\u0027, input.keys())(*input.values())"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    flavor_id \u003d instance.flavor.get(\u0027id\u0027)"},{"line_number":254,"context_line":"    instance_id \u003d instance.id"}],"source_content_type":"text/x-python","patch_set":7,"id":"4a8b3f87_0c362249","line":251,"range":{"start_line":245,"start_character":4,"end_line":251,"end_character":66},"in_reply_to":"74991c22_8f34a0a7","updated":"2021-12-08 07:55:19.000000000","message":"ack.","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"dd6e9594a5dfa228668a4772edfb0cfb17a80013","unresolved":true,"context_lines":[{"line_number":242,"context_line":"    :param kwargs: flavor parameters to return if hit some flavor discrepancy"},{"line_number":243,"context_line":"    :return: flavor name or default placeholder"},{"line_number":244,"context_line":"    \"\"\""},{"line_number":245,"context_line":"    def flavor_from_dict(input):"},{"line_number":246,"context_line":"        \"\"\"Creates flavor-like objects from dictionary"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        :param input: dictionary contains vcpu, ram, name, etc. values"},{"line_number":249,"context_line":"        :return: novaclient.v2.flavors.Flavor like object"},{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        return namedtuple(\u0027Flavor\u0027, input.keys())(*input.values())"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    flavor_id \u003d instance.flavor.get(\u0027id\u0027)"},{"line_number":254,"context_line":"    instance_id \u003d instance.id"}],"source_content_type":"text/x-python","patch_set":7,"id":"74991c22_8f34a0a7","line":251,"range":{"start_line":245,"start_character":4,"end_line":251,"end_character":66},"in_reply_to":"c64b3c94_272b6127","updated":"2021-11-18 15:03:45.000000000","message":"Later code in dashboards/project/instances/tables.py::InstancesTable relies on presence of pre-2.46-like flavor object at instance attribute. I assume that current approach results in more compact and modular code","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a0ab595cae021b0431c24f1548307cab375a373f","unresolved":true,"context_lines":[{"line_number":242,"context_line":"    :param kwargs: flavor parameters to return if hit some flavor discrepancy"},{"line_number":243,"context_line":"    :return: flavor name or default placeholder"},{"line_number":244,"context_line":"    \"\"\""},{"line_number":245,"context_line":"    def flavor_from_dict(input):"},{"line_number":246,"context_line":"        \"\"\"Creates flavor-like objects from dictionary"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        :param input: dictionary contains vcpu, ram, name, etc. values"}],"source_content_type":"text/x-python","patch_set":11,"id":"89c267ca_ecbcc5ef","line":245,"range":{"start_line":245,"start_character":25,"end_line":245,"end_character":30},"updated":"2022-02-01 10:51:04.000000000","message":"nit: Could you avoid using the build-in function name as a variable?","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38668c73d414d6265f9b049ba13084d8b39768d6","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    :param kwargs: flavor parameters to return if hit some flavor discrepancy"},{"line_number":243,"context_line":"    :return: flavor name or default placeholder"},{"line_number":244,"context_line":"    \"\"\""},{"line_number":245,"context_line":"    def flavor_from_dict(input):"},{"line_number":246,"context_line":"        \"\"\"Creates flavor-like objects from dictionary"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        :param input: dictionary contains vcpu, ram, name, etc. values"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba241d1b_626a1cf1","line":245,"range":{"start_line":245,"start_character":25,"end_line":245,"end_character":30},"in_reply_to":"89c267ca_ecbcc5ef","updated":"2022-02-14 09:22:34.000000000","message":"Done\n\nRenamed to \"flavor_dict\".","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a0ab595cae021b0431c24f1548307cab375a373f","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        :param input: dictionary contains vcpu, ram, name, etc. values"},{"line_number":249,"context_line":"        :return: novaclient.v2.flavors.Flavor like object"},{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        return namedtuple(\u0027Flavor\u0027, input.keys())(*input.values())"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    flavor_id \u003d instance.flavor.get(\u0027id\u0027)"},{"line_number":254,"context_line":"    instance_id \u003d instance.id"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ddd0663_f605b856","line":251,"updated":"2022-02-01 10:51:04.000000000","message":"NOTE: python 3.7+ guarantees the order of dict keys/values as a language feature.\nIn addition, python 3.6 (and 3.5) is implemented as such (even though it is not explicitly declared as a language behavior). Thus, there is no problem to use input.keys() and input.values() separately.","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a0ab595cae021b0431c24f1548307cab375a373f","unresolved":true,"context_lines":[{"line_number":255,"context_line":"    fallback_flavor \u003d {\u0027vcpus\u0027: 0, \u0027ram\u0027: 0, \u0027disk\u0027: 0, \u0027ephemeral\u0027: 0,"},{"line_number":256,"context_line":"                       \u0027swap\u0027: 0, \u0027name\u0027: _(\u0027Not available\u0027),"},{"line_number":257,"context_line":"                       \u0027original_name\u0027: _(\u0027Not available\u0027), \u0027extra_specs\u0027: {}}"},{"line_number":258,"context_line":"    fallback_flavor.update(kwargs)"},{"line_number":259,"context_line":"    if flavor_id:  # Nova API \u003c\u003d2.46"},{"line_number":260,"context_line":"        try:"},{"line_number":261,"context_line":"            flavor \u003d api.nova.flavor_get(request, flavor_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"c3856297_c592f052","line":258,"updated":"2022-02-01 10:51:04.000000000","message":"L.254-258 is only used in the if clause (L.260-268).\nCould you move it?","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38668c73d414d6265f9b049ba13084d8b39768d6","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    fallback_flavor \u003d {\u0027vcpus\u0027: 0, \u0027ram\u0027: 0, \u0027disk\u0027: 0, \u0027ephemeral\u0027: 0,"},{"line_number":256,"context_line":"                       \u0027swap\u0027: 0, \u0027name\u0027: _(\u0027Not available\u0027),"},{"line_number":257,"context_line":"                       \u0027original_name\u0027: _(\u0027Not available\u0027), \u0027extra_specs\u0027: {}}"},{"line_number":258,"context_line":"    fallback_flavor.update(kwargs)"},{"line_number":259,"context_line":"    if flavor_id:  # Nova API \u003c\u003d2.46"},{"line_number":260,"context_line":"        try:"},{"line_number":261,"context_line":"            flavor \u003d api.nova.flavor_get(request, flavor_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"b23b409d_5f62687f","line":258,"in_reply_to":"c3856297_c592f052","updated":"2022-02-14 09:22:34.000000000","message":"Done","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a0ab595cae021b0431c24f1548307cab375a373f","unresolved":true,"context_lines":[{"line_number":258,"context_line":"    fallback_flavor.update(kwargs)"},{"line_number":259,"context_line":"    if flavor_id:  # Nova API \u003c\u003d2.46"},{"line_number":260,"context_line":"        try:"},{"line_number":261,"context_line":"            flavor \u003d api.nova.flavor_get(request, flavor_id)"},{"line_number":262,"context_line":"            return flavor"},{"line_number":263,"context_line":"        except Exception:"},{"line_number":264,"context_line":"            msg \u003d _(\u0027Unable to retrieve flavor information \u0027"},{"line_number":265,"context_line":"                    \u0027for instance \"%s\".\u0027) % instance_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"afb82613_d32f0f9f","line":262,"range":{"start_line":261,"start_character":12,"end_line":262,"end_character":25},"updated":"2022-02-01 10:51:04.000000000","message":"There is no need to assign \"flavor\".\n\n return api.nova.flavor_get(...)","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38668c73d414d6265f9b049ba13084d8b39768d6","unresolved":false,"context_lines":[{"line_number":258,"context_line":"    fallback_flavor.update(kwargs)"},{"line_number":259,"context_line":"    if flavor_id:  # Nova API \u003c\u003d2.46"},{"line_number":260,"context_line":"        try:"},{"line_number":261,"context_line":"            flavor \u003d api.nova.flavor_get(request, flavor_id)"},{"line_number":262,"context_line":"            return flavor"},{"line_number":263,"context_line":"        except Exception:"},{"line_number":264,"context_line":"            msg \u003d _(\u0027Unable to retrieve flavor information \u0027"},{"line_number":265,"context_line":"                    \u0027for instance \"%s\".\u0027) % instance_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"20888814_a3c4003f","line":262,"range":{"start_line":261,"start_character":12,"end_line":262,"end_character":25},"in_reply_to":"afb82613_d32f0f9f","updated":"2022-02-14 09:22:34.000000000","message":"Done","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"}],"openstack_dashboard/dashboards/project/instances/views.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"f832073b1ab2db9fda77acda92c69451e37bb1e7","unresolved":true,"context_lines":[{"line_number":608,"context_line":"            msg \u003d _(\u0027Unable to retrieve instance details.\u0027)"},{"line_number":609,"context_line":"            exceptions.handle(self.request, msg, redirect\u003dredirect)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        flavor_id \u003d instance.flavor.get(\u0027id\u0027, None)"},{"line_number":612,"context_line":"        if flavor_id:  # Nova API \u003c\u003d2.46"},{"line_number":613,"context_line":"            flavors \u003d self.get_flavors()"},{"line_number":614,"context_line":"            if flavor_id in flavors:"}],"source_content_type":"text/x-python","patch_set":2,"id":"8b4c8d8f_24c01def","line":611,"range":{"start_line":611,"start_character":35,"end_line":611,"end_character":51},"updated":"2021-09-22 16:23:23.000000000","message":"None is default value for .get(), so .get(\u0027id\u0027) is enough.","commit_id":"077db5351faf8bd25f5f88b2e6e9d88259760fd5"}],"openstack_dashboard/dashboards/project/instances/workflows/resize_instance.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"f8520fb0e47cf1c44e4e1faa837ffdcdfd0b7ebf","unresolved":true,"context_lines":[{"line_number":47,"context_line":"                              \"_flavors_and_quotas.html\")"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def populate_flavor_choices(self, request, context):"},{"line_number":50,"context_line":"        # import pdb; pdb.set_trace()"},{"line_number":51,"context_line":"        old_flavor_name \u003d context.get(\u0027old_flavor_name\u0027)"},{"line_number":52,"context_line":"        flavors \u003d context.get(\u0027flavors\u0027).values()"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a3455d1d_ab9dbb9a","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":37},"updated":"2021-09-14 12:09:47.000000000","message":"you forgot to remove pdb, please remove it.","commit_id":"c70fcbc05927c385d7bcf62f9bdb8c18230d70fd"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"3d503d7532d895e2141b56412224586deeb16ddf","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                              \"_flavors_and_quotas.html\")"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def populate_flavor_choices(self, request, context):"},{"line_number":50,"context_line":"        # import pdb; pdb.set_trace()"},{"line_number":51,"context_line":"        old_flavor_name \u003d context.get(\u0027old_flavor_name\u0027)"},{"line_number":52,"context_line":"        flavors \u003d context.get(\u0027flavors\u0027).values()"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4ea28fa8_0bc817df","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":37},"in_reply_to":"a3455d1d_ab9dbb9a","updated":"2021-09-16 12:25:38.000000000","message":"Done","commit_id":"c70fcbc05927c385d7bcf62f9bdb8c18230d70fd"}],"openstack_dashboard/test/test_data/nova_data.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a0ab595cae021b0431c24f1548307cab375a373f","unresolved":true,"context_lines":[{"line_number":86,"context_line":"                    \"rel\": \"bookmark\""},{"line_number":87,"context_line":"                }"},{"line_number":88,"context_line":"            ],"},{"line_number":89,"context_line":"            \"original_name\": \"%(flavor_original_name)s\""},{"line_number":90,"context_line":"        },"},{"line_number":91,"context_line":"        \"id\": \"%(server_id)s\","},{"line_number":92,"context_line":"        \"user_id\": \"%(user_id)s\","}],"source_content_type":"text/x-python","patch_set":11,"id":"6f64516e_fcaff483","line":89,"updated":"2022-02-01 10:51:04.000000000","message":"I think it is not a good idea to mix two versions of the server data. Mixing response examples from various versions in a single data is really confusing.\nI believe we should have either version of the server data.\nWe can update the server data for the other version inside unit tests.","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38668c73d414d6265f9b049ba13084d8b39768d6","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                    \"rel\": \"bookmark\""},{"line_number":87,"context_line":"                }"},{"line_number":88,"context_line":"            ],"},{"line_number":89,"context_line":"            \"original_name\": \"%(flavor_original_name)s\""},{"line_number":90,"context_line":"        },"},{"line_number":91,"context_line":"        \"id\": \"%(server_id)s\","},{"line_number":92,"context_line":"        \"user_id\": \"%(user_id)s\","}],"source_content_type":"text/x-python","patch_set":11,"id":"4913fe51_cd85465d","line":89,"in_reply_to":"6f64516e_fcaff483","updated":"2022-02-14 09:22:34.000000000","message":"Done","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"}],"openstack_dashboard/test/unit/api/test_nova.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"3f501781ce1f77c34e898c4f7055535f828fe79c","unresolved":true,"context_lines":[{"line_number":667,"context_line":"        novaclient.flavor_access.remove_tenant_access.assert_called_once_with("},{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"45c493a9_4f0f7a2c","line":670,"updated":"2021-11-17 13:08:19.000000000","message":"Could we also mock microversion \u003c\u003d 2.46 and check here like below:\n @mock.patch.object(api.nova, \u0027get_microversion\u0027, return_value\u003d\u00272.46\u0027)","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"dd6e9594a5dfa228668a4772edfb0cfb17a80013","unresolved":true,"context_lines":[{"line_number":667,"context_line":"        novaclient.flavor_access.remove_tenant_access.assert_called_once_with("},{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"22003f5a_e2184d2d","line":670,"in_reply_to":"45c493a9_4f0f7a2c","updated":"2021-11-18 15:03:45.000000000","message":"Didn\u0027t catch an idea. I think that get_microversion call is redundant, we anyway need to get flavor after it and parse it in one or other way","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"3f501781ce1f77c34e898c4f7055535f828fe79c","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"},{"line_number":674,"context_line":"        novaclient \u003d mock_novaclient.return_value"}],"source_content_type":"text/x-python","patch_set":7,"id":"f0126dea_14d72da2","line":671,"range":{"start_line":671,"start_character":8,"end_line":671,"end_character":35},"updated":"2021-11-17 13:08:19.000000000","message":"It is not much clear what do you mean by 246 here.\nCould we use \u0027test_resolve_flavor_microversion_less_than_2.46_with_flavor\u0027 or something else?","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"1db8d19475b4b5ee355ef627f60a80994f8a60aa","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"},{"line_number":674,"context_line":"        novaclient \u003d mock_novaclient.return_value"}],"source_content_type":"text/x-python","patch_set":7,"id":"a7c7b7f9_987970e5","line":671,"range":{"start_line":671,"start_character":8,"end_line":671,"end_character":35},"in_reply_to":"1884e947_602630ef","updated":"2021-12-08 07:55:19.000000000","message":"Hmm, let\u0027s see what other reviewers think.","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"3a56486a9647ec207048b094404480717764d362","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"},{"line_number":674,"context_line":"        novaclient \u003d mock_novaclient.return_value"}],"source_content_type":"text/x-python","patch_set":7,"id":"dd4b11da_c7e41afe","line":671,"range":{"start_line":671,"start_character":8,"end_line":671,"end_character":35},"in_reply_to":"91a3cd0b_aa3a1411","updated":"2022-01-06 08:28:34.000000000","message":"Vadym, your explanation makes sense to me. As there is a review that says 246 is not clear, can you add a comment to the function mentioning about the nova api microversion 2.46 explicitly","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":8992,"name":"Billy Olsen","email":"billy.olsen@canonical.com","username":"billy-olsen"},"change_message_id":"1e96a8b7da9ef3b0181ab66e38004484fd873770","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"},{"line_number":674,"context_line":"        novaclient \u003d mock_novaclient.return_value"}],"source_content_type":"text/x-python","patch_set":7,"id":"dd6f8493_445ee9c4","line":671,"range":{"start_line":671,"start_character":8,"end_line":671,"end_character":35},"in_reply_to":"a7c7b7f9_987970e5","updated":"2021-12-22 20:46:54.000000000","message":"FWIW, the \u0027.\u0027 character in the function name isn\u0027t allowed, its invalid syntax so you\u0027ll need to replace it with an alternative. I think what you really want is the function to describe the behavior, which is really something test_resolve_flavor_legacy_api and some comments in the function can clarify some of the details if necessary.","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"0a662c2eac53c1a258bcaa09500c5de6765364d1","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"},{"line_number":674,"context_line":"        novaclient \u003d mock_novaclient.return_value"}],"source_content_type":"text/x-python","patch_set":7,"id":"ef592daa_55ffe2dd","line":671,"range":{"start_line":671,"start_character":8,"end_line":671,"end_character":35},"in_reply_to":"dd4b11da_c7e41afe","updated":"2022-01-19 23:14:44.000000000","message":"+1 for adding comments and not touching functions names","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"4d2560cd9a6fdd6525a240f0e8e827d2dfd16fdb","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"},{"line_number":674,"context_line":"        novaclient \u003d mock_novaclient.return_value"}],"source_content_type":"text/x-python","patch_set":7,"id":"91a3cd0b_aa3a1411","line":671,"range":{"start_line":671,"start_character":8,"end_line":671,"end_character":35},"in_reply_to":"dd6f8493_445ee9c4","updated":"2021-12-29 10:47:36.000000000","message":"I\u0027d prefer to save point to 2.46 in the method name because at some future moment we can get one more api deprecation","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38668c73d414d6265f9b049ba13084d8b39768d6","unresolved":false,"context_lines":[{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"},{"line_number":674,"context_line":"        novaclient \u003d mock_novaclient.return_value"}],"source_content_type":"text/x-python","patch_set":7,"id":"2395ef07_53422c62","line":671,"range":{"start_line":671,"start_character":8,"end_line":671,"end_character":35},"in_reply_to":"ef592daa_55ffe2dd","updated":"2022-02-14 09:22:34.000000000","message":"I moved the tests to openstack_dashboard/dashboards/project/instances/tests.py and the new tests are named like xxxx_nova_api_(lt|ge)_2_47.","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"dd6e9594a5dfa228668a4772edfb0cfb17a80013","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            flavor\u003dflavor, tenant\u003dtenant)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"    @mock.patch.object(api._nova, \u0027novaclient\u0027)"},{"line_number":671,"context_line":"    def test_resolve_flavor_pre_246(self, mock_novaclient):"},{"line_number":672,"context_line":"        instance \u003d mock.Mock()"},{"line_number":673,"context_line":"        instance.flavor.get.return_value \u003d \u00271\u0027"},{"line_number":674,"context_line":"        novaclient \u003d mock_novaclient.return_value"}],"source_content_type":"text/x-python","patch_set":7,"id":"1884e947_602630ef","line":671,"range":{"start_line":671,"start_character":8,"end_line":671,"end_character":35},"in_reply_to":"f0126dea_14d72da2","updated":"2021-11-18 15:03:45.000000000","message":"Yes, more verbose function name will be better. But not sure that dot in function name is a good idea","commit_id":"cfe7045d5e6f66e68d3822dfb0d63e9d0d57cd4f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ecb768773b8a8831f349296c7138e5038acef5c8","unresolved":true,"context_lines":[{"line_number":30,"context_line":"from horizon import exceptions as horizon_exceptions"},{"line_number":31,"context_line":"from openstack_dashboard import api"},{"line_number":32,"context_line":"from openstack_dashboard.dashboards.project.instances \\"},{"line_number":33,"context_line":"    import utils as instance_utils"},{"line_number":34,"context_line":"from openstack_dashboard.test import helpers as test"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"2979aeeb_549c52e1","line":33,"updated":"2022-02-02 09:21:27.000000000","message":"This file is to test openstack_dashboard/api/nova.py. It is not the right place to add unit tests for openstack_dashboasrd/dashboards/project/instances/. It should be placed in openstack_dashboasrd/dashboards/project/instances/tests.py.\n\nThe other choice is to move instance_utils.resolve_flavor() to api/nova.py.","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38668c73d414d6265f9b049ba13084d8b39768d6","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from horizon import exceptions as horizon_exceptions"},{"line_number":31,"context_line":"from openstack_dashboard import api"},{"line_number":32,"context_line":"from openstack_dashboard.dashboards.project.instances \\"},{"line_number":33,"context_line":"    import utils as instance_utils"},{"line_number":34,"context_line":"from openstack_dashboard.test import helpers as test"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"2063115d_c63eafe1","line":33,"in_reply_to":"2979aeeb_549c52e1","updated":"2022-02-14 09:22:34.000000000","message":"Done","commit_id":"745c234fd5fd872ec8a1796f8e143c659f7ea396"}]}
