)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"43437116b92794c8b719e7fc743172daae31234a","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Since there is no python client for the placement api, and the openstack"},{"line_number":10,"context_line":"sdk doesn\u0027t support the endpoints we need, we call the endpoints"},{"line_number":11,"context_line":"directly."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If41cea0edeec8c95717229eb017e32898417a891"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"40c24981_a75d414d","line":12,"updated":"2023-10-25 15:10:21.000000000","message":"nit: there\u0027s a bug for it: https://bugs.launchpad.net/horizon/+bug/1974470\nso: \nCloses/Related-Bug: #1974470","commit_id":"b0d250533c7e236e774cc19512011784f42ef4d2"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"7dfefeb00bee4bf3a814e5ed17aabe20c678520c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Since there is no python client for the placement api, and the openstack"},{"line_number":10,"context_line":"sdk doesn\u0027t support the endpoints we need, we call the endpoints"},{"line_number":11,"context_line":"directly."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If41cea0edeec8c95717229eb017e32898417a891"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"71fac5d5_8b3a1e95","line":12,"in_reply_to":"40c24981_a75d414d","updated":"2023-11-09 21:48:03.000000000","message":"Done","commit_id":"b0d250533c7e236e774cc19512011784f42ef4d2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"ce0bc9e1ff18442be9ea1c51c104d015463c498b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"03acfb78_7298d0c9","updated":"2023-10-19 18:35:31.000000000","message":"Thank you Akihiro for your review!","commit_id":"6dccd7bd6933bf29fe94490a8f25ed21af913656"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"793a58ad70bb696e6820374734cc6218eda69fba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9037ed83_f1ea57f0","updated":"2023-10-19 10:41:28.000000000","message":"soft -1 due to my suggestions and question inline.","commit_id":"6dccd7bd6933bf29fe94490a8f25ed21af913656"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"547b51bf41505ef2ae338c91371620f8581f0884","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"59017277_45ab9617","updated":"2023-12-05 06:04:50.000000000","message":"LGTM, will +2 once I test the patch in local env.","commit_id":"8a59815125cc830381487f4e797003ccfae80335"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"a749c75ff1a5e42f949a9809d0eaadf7e324f48c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"20966a1c_13c84a00","updated":"2023-12-05 18:19:53.000000000","message":"Thanks Vishal","commit_id":"8a59815125cc830381487f4e797003ccfae80335"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"88310554ac6a835df3118bb38346d446aee271d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ddfb1863_869cd355","updated":"2023-11-15 15:49:14.000000000","message":"recheck, random failure","commit_id":"8a59815125cc830381487f4e797003ccfae80335"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"d2f39f03ef47c68e75b3a7e4812d0a03a473592c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"fb306fb1_c4e7847e","updated":"2023-11-15 21:40:47.000000000","message":"recheck, random failure","commit_id":"8a59815125cc830381487f4e797003ccfae80335"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e727b37319f3478212c0854435c623e00bff4def","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7bf4e8ff_a4bbce46","updated":"2024-02-16 14:31:22.000000000","message":"Question: have you tested this with tls enabled? (enable_service tls-proxy in devstack)","commit_id":"ebdb19ab8c84eafaa08930a2d03b6c2970716266"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"3591d77661476e0c31563627f237a55f4454165e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"3a544d2c_f964eeb6","updated":"2023-12-20 06:29:46.000000000","message":"Thanks, LTGM. tested with devstack working fine.","commit_id":"ebdb19ab8c84eafaa08930a2d03b6c2970716266"}],"openstack_dashboard/api/placement.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"793a58ad70bb696e6820374734cc6218eda69fba","unresolved":true,"context_lines":[{"line_number":98,"context_line":"        p[\u0027vcpus_used\u0027] \u003d usages[\u0027VCPU\u0027]"},{"line_number":99,"context_line":"        p[\u0027vcpus_reserved\u0027] \u003d inventories[\u0027VCPU\u0027][\u0027reserved\u0027]"},{"line_number":100,"context_line":"        p[\u0027vcpus\u0027] \u003d inventories[\u0027VCPU\u0027][\u0027total\u0027]"},{"line_number":101,"context_line":"        p[\u0027pcpus_used\u0027] \u003d \u0027-\u0027 if usages.get(\u0027PCPU\u0027) is None else usages[\u0027PCPU\u0027]"},{"line_number":102,"context_line":"        p[\u0027pcpus_reserved\u0027] \u003d \u0027-\u0027 if inventories.get(\u0027PCPU\u0027) is None \\"},{"line_number":103,"context_line":"            else inventories[\u0027PCPU\u0027][\u0027reserved\u0027]"},{"line_number":104,"context_line":"        p[\u0027pcpus\u0027] \u003d \u0027-\u0027 if inventories.get(\u0027PCPU\u0027) is None \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a0ecc5b_75004798","line":101,"updated":"2023-10-19 10:41:28.000000000","message":"How about\n\n    p[\u0027pcpus_used\u0027] \u003d usages.get(\u0027PCPU\u0027)\n\nI think the API layer returns None rather than \u0027-\u0027 (as None is a value that represents there is no value) and we can display \u0027-\u0027 for None in the UI layer.","commit_id":"6dccd7bd6933bf29fe94490a8f25ed21af913656"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"ce0bc9e1ff18442be9ea1c51c104d015463c498b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        p[\u0027vcpus_used\u0027] \u003d usages[\u0027VCPU\u0027]"},{"line_number":99,"context_line":"        p[\u0027vcpus_reserved\u0027] \u003d inventories[\u0027VCPU\u0027][\u0027reserved\u0027]"},{"line_number":100,"context_line":"        p[\u0027vcpus\u0027] \u003d inventories[\u0027VCPU\u0027][\u0027total\u0027]"},{"line_number":101,"context_line":"        p[\u0027pcpus_used\u0027] \u003d \u0027-\u0027 if usages.get(\u0027PCPU\u0027) is None else usages[\u0027PCPU\u0027]"},{"line_number":102,"context_line":"        p[\u0027pcpus_reserved\u0027] \u003d \u0027-\u0027 if inventories.get(\u0027PCPU\u0027) is None \\"},{"line_number":103,"context_line":"            else inventories[\u0027PCPU\u0027][\u0027reserved\u0027]"},{"line_number":104,"context_line":"        p[\u0027pcpus\u0027] \u003d \u0027-\u0027 if inventories.get(\u0027PCPU\u0027) is None \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"e2a64152_9db763ce","line":101,"in_reply_to":"1a0ecc5b_75004798","updated":"2023-10-19 18:35:31.000000000","message":"Tables will do this, yes. Done!","commit_id":"6dccd7bd6933bf29fe94490a8f25ed21af913656"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"2e5c4a98aa346a6c429bd8fd21232f66685a2bef","unresolved":true,"context_lines":[{"line_number":37,"context_line":"@memoized"},{"line_number":38,"context_line":"def make_adapter(request):"},{"line_number":39,"context_line":"    auth \u003d identity.Token("},{"line_number":40,"context_line":"        auth_url\u003dsettings.OPENSTACK_KEYSTONE_URL,"},{"line_number":41,"context_line":"        token\u003drequest.user.token.id,"},{"line_number":42,"context_line":"        project_id\u003drequest.user.project_id,"},{"line_number":43,"context_line":"        project_name\u003drequest.user.project_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9b916199_9cfc5cd4","line":40,"updated":"2023-10-30 10:49:17.000000000","message":"We should probably use base.url_for(request, \u0027identity\u0027) here.","commit_id":"b0d250533c7e236e774cc19512011784f42ef4d2"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"7dfefeb00bee4bf3a814e5ed17aabe20c678520c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"@memoized"},{"line_number":38,"context_line":"def make_adapter(request):"},{"line_number":39,"context_line":"    auth \u003d identity.Token("},{"line_number":40,"context_line":"        auth_url\u003dsettings.OPENSTACK_KEYSTONE_URL,"},{"line_number":41,"context_line":"        token\u003drequest.user.token.id,"},{"line_number":42,"context_line":"        project_id\u003drequest.user.project_id,"},{"line_number":43,"context_line":"        project_name\u003drequest.user.project_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"f551b40a_d91d40c8","line":40,"in_reply_to":"9b916199_9cfc5cd4","updated":"2023-11-09 21:48:03.000000000","message":"Done","commit_id":"b0d250533c7e236e774cc19512011784f42ef4d2"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"297506214684756d65fe7a80a625c1b6a439c63c","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    return _get_json("},{"line_number":71,"context_line":"        request, f\u0027/resource_providers/{uuid}/inventories\u0027)[\u0027inventories\u0027]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def resource_provider_usages(request, uuid):"},{"line_number":75,"context_line":"    return _get_json(request, f\u0027/resource_providers/{uuid}/usages\u0027)[\u0027usages\u0027]"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"e8809d3b_83944a75","line":73,"updated":"2023-11-16 09:57:41.000000000","message":"I checked and some of these methods are not in SDK (https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/placement/v1/_proxy.py )\nand as I see even osc_placement access directly http API instead of SDK in most cases.","commit_id":"8a59815125cc830381487f4e797003ccfae80335"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"a27effbb18d9a89ae171dcf1f1a6b9f654e8b658","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    return _get_json("},{"line_number":71,"context_line":"        request, f\u0027/resource_providers/{uuid}/inventories\u0027)[\u0027inventories\u0027]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def resource_provider_usages(request, uuid):"},{"line_number":75,"context_line":"    return _get_json(request, f\u0027/resource_providers/{uuid}/usages\u0027)[\u0027usages\u0027]"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"a05f7f8b_d76ceec0","line":73,"in_reply_to":"e8809d3b_83944a75","updated":"2023-11-16 15:04:02.000000000","message":"Yes, we asked for adding those calls to the sdk, and they told us to just call the urls.","commit_id":"8a59815125cc830381487f4e797003ccfae80335"}],"openstack_dashboard/dashboards/admin/hypervisors/tables.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"793a58ad70bb696e6820374734cc6218eda69fba","unresolved":true,"context_lines":[{"line_number":83,"context_line":"class AdminProvidersTable(tables.DataTable):"},{"line_number":84,"context_line":"    name \u003d tables.WrappingColumn(\"name\","},{"line_number":85,"context_line":"                                 verbose_name\u003d_(\"Resource Provider Name\"))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    vcpus_used \u003d tables.Column(\"vcpus_used\","},{"line_number":88,"context_line":"                               verbose_name\u003d_(\"VCPUs (used)\"))"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"61b15758_8a13185b","line":86,"updated":"2023-10-19 10:41:28.000000000","message":"In our convention, we don\u0027t have blank lines between table column definitions.","commit_id":"6dccd7bd6933bf29fe94490a8f25ed21af913656"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"ce0bc9e1ff18442be9ea1c51c104d015463c498b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"class AdminProvidersTable(tables.DataTable):"},{"line_number":84,"context_line":"    name \u003d tables.WrappingColumn(\"name\","},{"line_number":85,"context_line":"                                 verbose_name\u003d_(\"Resource Provider Name\"))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    vcpus_used \u003d tables.Column(\"vcpus_used\","},{"line_number":88,"context_line":"                               verbose_name\u003d_(\"VCPUs (used)\"))"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"b15a407a_0db3c7ce","line":86,"in_reply_to":"61b15758_8a13185b","updated":"2023-10-19 18:35:31.000000000","message":"Done","commit_id":"6dccd7bd6933bf29fe94490a8f25ed21af913656"}],"openstack_dashboard/dashboards/admin/hypervisors/tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"793a58ad70bb696e6820374734cc6218eda69fba","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        self.mock_service_list.side_effect \u003d self.exceptions.nova"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        resp \u003d self.client.get(reverse(\u0027horizon:admin:hypervisors:index\u0027))"},{"line_number":79,"context_line":"        self.assertMessageCount(resp, error\u003d2, warning\u003d0)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self.mock_hypervisor_list.assert_called_once_with("},{"line_number":82,"context_line":"            test.IsHttpRequest())"}],"source_content_type":"text/x-python","patch_set":8,"id":"3ddb0d9d_492a1d66","line":79,"updated":"2023-10-19 10:41:28.000000000","message":"question: what triggers the change of the error msg count?\nIn most cases, it hides some coding error in our tests unless we know what happens.\n\nI am not sure we need to mock api.placement methods too.","commit_id":"6dccd7bd6933bf29fe94490a8f25ed21af913656"},{"author":{"_account_id":6914,"name":"Tatiana Ovchinnikova","email":"t.v.ovtchinnikova@gmail.com","username":"tmazur"},"change_message_id":"ce0bc9e1ff18442be9ea1c51c104d015463c498b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.mock_service_list.side_effect \u003d self.exceptions.nova"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        resp \u003d self.client.get(reverse(\u0027horizon:admin:hypervisors:index\u0027))"},{"line_number":79,"context_line":"        self.assertMessageCount(resp, error\u003d2, warning\u003d0)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self.mock_hypervisor_list.assert_called_once_with("},{"line_number":82,"context_line":"            test.IsHttpRequest())"}],"source_content_type":"text/x-python","patch_set":8,"id":"c40400b5_ec692e25","line":79,"in_reply_to":"3ddb0d9d_492a1d66","updated":"2023-10-19 18:35:31.000000000","message":"At this stage, I just wanted this test to pass, honestly. To check we have no other tests failures. The second error is from doing nothing about placement part here, so we will need to either mock placement methods here, or rewrite the test to check the error messages when both hypervisors and placement calls failed. I will do that in the following patch.","commit_id":"6dccd7bd6933bf29fe94490a8f25ed21af913656"}]}
