)]}'
{"nova/api/openstack/compute/evacuate.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"12d62f203ca9d1bf1cd3b9a9b90937baa16327e7","unresolved":true,"context_lines":[{"line_number":122,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if self.network_api.instance_has_extended_resource_request(id):"},{"line_number":125,"context_line":"            version \u003d service.get_minimum_version_all_cells("},{"line_number":126,"context_line":"                context, [\"nova-compute\"])"},{"line_number":127,"context_line":"            if version \u003c 59:"},{"line_number":128,"context_line":"                msg \u003d _("},{"line_number":129,"context_line":"                    \"The evacuate server operation with port having extended \""},{"line_number":130,"context_line":"                    \"resource request, like a port with both QoS minimum \""},{"line_number":131,"context_line":"                    \"bandwidth and packet rate policies, is not supported \""},{"line_number":132,"context_line":"                    \"with old compute services. Please upgrade nova compute \""},{"line_number":133,"context_line":"                    \"service to Xena.\")"},{"line_number":134,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        try:"},{"line_number":137,"context_line":"            self.compute_api.evacuate(context, instance, host,"}],"source_content_type":"text/x-python","patch_set":22,"id":"7b28e5d8_54a3f918","line":134,"range":{"start_line":125,"start_character":0,"end_line":134,"end_character":57},"updated":"2021-08-27 10:44:26.000000000","message":"Shouldn\u0027t this be done in the compute API?\n\nLater, okay so there\u0027s at least one example of us doing this outside of the compute API below:\n\nhttps://github.com/openstack/nova/blob/2a78626a85954997d35f5fe62c50de297e2ca92d/nova/api/openstack/compute/server_groups.py#L79-L85\n\nI\u0027d still rather do checks like this in the compute API using constants and just leave the API to translate the raised exceptions into meaningful HTTP responses.","commit_id":"a56104311376db509d79d905d9add2ee70a7d8e5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"89e0298d53f7ab74c66de422807c7a0e9a65ecf1","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if self.network_api.instance_has_extended_resource_request(id):"},{"line_number":125,"context_line":"            version \u003d service.get_minimum_version_all_cells("},{"line_number":126,"context_line":"                context, [\"nova-compute\"])"},{"line_number":127,"context_line":"            if version \u003c 59:"},{"line_number":128,"context_line":"                msg \u003d _("},{"line_number":129,"context_line":"                    \"The evacuate server operation with port having extended \""},{"line_number":130,"context_line":"                    \"resource request, like a port with both QoS minimum \""},{"line_number":131,"context_line":"                    \"bandwidth and packet rate policies, is not supported \""},{"line_number":132,"context_line":"                    \"with old compute services. Please upgrade nova compute \""},{"line_number":133,"context_line":"                    \"service to Xena.\")"},{"line_number":134,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        try:"},{"line_number":137,"context_line":"            self.compute_api.evacuate(context, instance, host,"}],"source_content_type":"text/x-python","patch_set":22,"id":"6d25cf9b_ddcfa9fe","line":134,"range":{"start_line":125,"start_character":0,"end_line":134,"end_character":57},"in_reply_to":"7b28e5d8_54a3f918","updated":"2021-08-27 16:29:37.000000000","message":"Done","commit_id":"a56104311376db509d79d905d9add2ee70a7d8e5"}],"nova/conductor/manager.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1d426ac90ccd20766c48ccffe190ab5bc7c4d3e","unresolved":true,"context_lines":[{"line_number":964,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":965,"context_line":"                            context, instance.uuid)"},{"line_number":966,"context_line":"                    )"},{"line_number":967,"context_line":"                    external_resources \u003d res_req"},{"line_number":968,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":969,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":970,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":19,"id":"48e8759c_4bf498ef","line":967,"updated":"2021-08-06 15:29:24.000000000","message":"Can you submit a follow-up to remove this unnecessary aliasing?","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"31b2b305aaf5403d1a9d092d046c527c0e32317e","unresolved":false,"context_lines":[{"line_number":964,"context_line":"                        self.network_api.get_requested_resource_for_instance("},{"line_number":965,"context_line":"                            context, instance.uuid)"},{"line_number":966,"context_line":"                    )"},{"line_number":967,"context_line":"                    external_resources \u003d res_req"},{"line_number":968,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":969,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":970,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":19,"id":"9d958b57_3852524f","line":967,"in_reply_to":"48e8759c_4bf498ef","updated":"2021-08-16 19:32:03.000000000","message":"Done","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1d426ac90ccd20766c48ccffe190ab5bc7c4d3e","unresolved":true,"context_lines":[{"line_number":1164,"context_line":"                            context, instance.uuid)"},{"line_number":1165,"context_line":"                    )"},{"line_number":1166,"context_line":"                    external_resources \u003d []"},{"line_number":1167,"context_line":"                    external_resources +\u003d res_req"},{"line_number":1168,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":1169,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1170,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":19,"id":"0542dfb4_63b35818","line":1167,"updated":"2021-08-06 15:29:24.000000000","message":"nit: A follow-up to rename \u0027external_resource\u0027 to \u0027res_req\u0027 would be nice. As it stands, this is effectively an unnecessary alias as above","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"31b2b305aaf5403d1a9d092d046c527c0e32317e","unresolved":false,"context_lines":[{"line_number":1164,"context_line":"                            context, instance.uuid)"},{"line_number":1165,"context_line":"                    )"},{"line_number":1166,"context_line":"                    external_resources \u003d []"},{"line_number":1167,"context_line":"                    external_resources +\u003d res_req"},{"line_number":1168,"context_line":"                    extra_specs \u003d request_spec.flavor.extra_specs"},{"line_number":1169,"context_line":"                    device_profile \u003d extra_specs.get(\u0027accel:device_profile\u0027)"},{"line_number":1170,"context_line":"                    external_resources.extend("}],"source_content_type":"text/x-python","patch_set":19,"id":"dd1f4c62_d39ce759","line":1167,"in_reply_to":"0542dfb4_63b35818","updated":"2021-08-16 19:32:03.000000000","message":"Done","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"}],"nova/network/neutron.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"140b37548b3304c661c8c372078a8376c21db807","unresolved":true,"context_lines":[{"line_number":2352,"context_line":"        for port in data.get(\u0027ports\u0027, []):"},{"line_number":2353,"context_line":"            resource_request \u003d port.get(constants.RESOURCE_REQUEST)"},{"line_number":2354,"context_line":"            if extended_rr and resource_request:"},{"line_number":2355,"context_line":"                # need to handle the new resource request format"},{"line_number":2356,"context_line":"                resource_requests.extend("},{"line_number":2357,"context_line":"                    objects.RequestGroup.from_extended_port_request("},{"line_number":2358,"context_line":"                        context\u003dNone,"}],"source_content_type":"text/x-python","patch_set":16,"id":"730aa408_89109007","line":2355,"updated":"2021-07-23 17:30:26.000000000","message":"drop this","commit_id":"6d1ad97d87cc7eeffda13273b9030905e2324bcb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"65e81e11233ce2c34f1d09dfaf4b3bfd8a12ab06","unresolved":false,"context_lines":[{"line_number":2352,"context_line":"        for port in data.get(\u0027ports\u0027, []):"},{"line_number":2353,"context_line":"            resource_request \u003d port.get(constants.RESOURCE_REQUEST)"},{"line_number":2354,"context_line":"            if extended_rr and resource_request:"},{"line_number":2355,"context_line":"                # need to handle the new resource request format"},{"line_number":2356,"context_line":"                resource_requests.extend("},{"line_number":2357,"context_line":"                    objects.RequestGroup.from_extended_port_request("},{"line_number":2358,"context_line":"                        context\u003dNone,"}],"source_content_type":"text/x-python","patch_set":16,"id":"6092b8e0_a039b3f3","line":2355,"in_reply_to":"730aa408_89109007","updated":"2021-08-03 12:18:28.000000000","message":"Done","commit_id":"6d1ad97d87cc7eeffda13273b9030905e2324bcb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"140b37548b3304c661c8c372078a8376c21db807","unresolved":true,"context_lines":[{"line_number":2356,"context_line":"                resource_requests.extend("},{"line_number":2357,"context_line":"                    objects.RequestGroup.from_extended_port_request("},{"line_number":2358,"context_line":"                        context\u003dNone,"},{"line_number":2359,"context_line":"                        port_resource_request\u003dport[\u0027resource_request\u0027]))"},{"line_number":2360,"context_line":"            else:"},{"line_number":2361,"context_line":"                # keep supporting the old format of the resource_request"},{"line_number":2362,"context_line":"                if resource_request:"}],"source_content_type":"text/x-python","patch_set":16,"id":"c09873cd_84c1a67e","line":2359,"updated":"2021-07-23 17:30:26.000000000","message":"add parsing for req lvl params.","commit_id":"6d1ad97d87cc7eeffda13273b9030905e2324bcb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"65e81e11233ce2c34f1d09dfaf4b3bfd8a12ab06","unresolved":false,"context_lines":[{"line_number":2356,"context_line":"                resource_requests.extend("},{"line_number":2357,"context_line":"                    objects.RequestGroup.from_extended_port_request("},{"line_number":2358,"context_line":"                        context\u003dNone,"},{"line_number":2359,"context_line":"                        port_resource_request\u003dport[\u0027resource_request\u0027]))"},{"line_number":2360,"context_line":"            else:"},{"line_number":2361,"context_line":"                # keep supporting the old format of the resource_request"},{"line_number":2362,"context_line":"                if resource_request:"}],"source_content_type":"text/x-python","patch_set":16,"id":"17cbe651_a7846749","line":2359,"in_reply_to":"c09873cd_84c1a67e","updated":"2021-08-03 12:18:28.000000000","message":"Done","commit_id":"6d1ad97d87cc7eeffda13273b9030905e2324bcb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1d426ac90ccd20766c48ccffe190ab5bc7c4d3e","unresolved":true,"context_lines":[{"line_number":1019,"context_line":"        return False"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    def get_binding_profile_allocation("},{"line_number":1022,"context_line":"        self, context, port_id, resource_provider_mapping"},{"line_number":1023,"context_line":"    ):"},{"line_number":1024,"context_line":"        neutron \u003d get_client(context)"},{"line_number":1025,"context_line":"        port \u003d self._show_port(context, port_id, neutron_client\u003dneutron)"}],"source_content_type":"text/x-python","patch_set":19,"id":"d48f0ddd_bb32e6bc","line":1022,"updated":"2021-08-06 15:29:24.000000000","message":"nit: type hints and a docstring would be cool","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"31b2b305aaf5403d1a9d092d046c527c0e32317e","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"        return False"},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    def get_binding_profile_allocation("},{"line_number":1022,"context_line":"        self, context, port_id, resource_provider_mapping"},{"line_number":1023,"context_line":"    ):"},{"line_number":1024,"context_line":"        neutron \u003d get_client(context)"},{"line_number":1025,"context_line":"        port \u003d self._show_port(context, port_id, neutron_client\u003dneutron)"}],"source_content_type":"text/x-python","patch_set":19,"id":"2220b5f8_c894dd78","line":1022,"in_reply_to":"d48f0ddd_bb32e6bc","updated":"2021-08-16 19:32:03.000000000","message":"Done","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1d426ac90ccd20766c48ccffe190ab5bc7c4d3e","unresolved":false,"context_lines":[{"line_number":2376,"context_line":"                            context\u003dNone, port_uuid\u003dport[\u0027id\u0027],"},{"line_number":2377,"context_line":"                            port_resource_request\u003dport[\u0027resource_request\u0027]))"},{"line_number":2378,"context_line":""},{"line_number":2379,"context_line":"        return resource_requests, request_level_params"},{"line_number":2380,"context_line":""},{"line_number":2381,"context_line":"    def validate_networks(self, context, requested_networks, num_instances):"},{"line_number":2382,"context_line":"        \"\"\"Validate that the tenant can use the requested networks."}],"source_content_type":"text/x-python","patch_set":19,"id":"131061a6_3ed55e10","line":2379,"updated":"2021-08-06 15:29:24.000000000","message":"nit: I probably would have dragged this function signature change and resulting test fallout out a separate change","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"}],"nova/tests/functional/test_servers_resource_request.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2081623a13b62c605acedf628473123f694e9abc","unresolved":true,"context_lines":[{"line_number":2892,"context_line":"            \u0027supported by old nova compute service. Upgrade your compute \u0027"},{"line_number":2893,"context_line":"            \u0027services to Xena.\u0027,"},{"line_number":2894,"context_line":"            str(ex)"},{"line_number":2895,"context_line":"        )"},{"line_number":2896,"context_line":""},{"line_number":2897,"context_line":""},{"line_number":2898,"context_line":"class ExtendedResourceRequestTempNegativeTest("}],"source_content_type":"text/x-python","patch_set":18,"id":"fe79371b_1cec539f","line":2895,"updated":"2021-08-03 15:39:04.000000000","message":"Add tests here with move op with old compute","commit_id":"5f49cca83233b0bc11c5eea8e956463ea8836745"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7b566e0e5fc2e771e0fc4353af77c8ac82da4565","unresolved":false,"context_lines":[{"line_number":2892,"context_line":"            \u0027supported by old nova compute service. Upgrade your compute \u0027"},{"line_number":2893,"context_line":"            \u0027services to Xena.\u0027,"},{"line_number":2894,"context_line":"            str(ex)"},{"line_number":2895,"context_line":"        )"},{"line_number":2896,"context_line":""},{"line_number":2897,"context_line":""},{"line_number":2898,"context_line":"class ExtendedResourceRequestTempNegativeTest("}],"source_content_type":"text/x-python","patch_set":18,"id":"ab000f76_ff1a8093","line":2895,"in_reply_to":"fe79371b_1cec539f","updated":"2021-08-04 16:50:54.000000000","message":"Done","commit_id":"5f49cca83233b0bc11c5eea8e956463ea8836745"}],"nova/tests/unit/api/openstack/compute/test_migrate_server.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1d426ac90ccd20766c48ccffe190ab5bc7c4d3e","unresolved":false,"context_lines":[{"line_number":207,"context_line":"            self.req, instance[\u0027uuid\u0027],"},{"line_number":208,"context_line":"            body\u003d{\u0027migrate\u0027: None}"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        self.assertIn(\"Please upgrade nova compute service to Xena\", str(ex))"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def _test_migrate_live_succeeded(self, param):"},{"line_number":213,"context_line":"        instance \u003d self._stub_instance_get()"}],"source_content_type":"text/x-python","patch_set":19,"id":"2285b034_058f2a60","line":210,"updated":"2021-08-06 15:29:24.000000000","message":"Cool, just testing that things fail with older service versions and pass with newer ones","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"}],"nova/tests/unit/api/openstack/compute/test_server_actions.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1d426ac90ccd20766c48ccffe190ab5bc7c4d3e","unresolved":false,"context_lines":[{"line_number":903,"context_line":"        ex \u003d self.assertRaises("},{"line_number":904,"context_line":"            webob.exc.HTTPBadRequest, self.controller._action_resize, self.req,"},{"line_number":905,"context_line":"            FAKE_UUID, body\u003dbody)"},{"line_number":906,"context_line":"        self.assertIn(\"Please upgrade nova compute service to Xena\", str(ex))"},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"    def test_confirm_resize_server(self):"},{"line_number":909,"context_line":"        body \u003d dict(confirmResize\u003dNone)"}],"source_content_type":"text/x-python","patch_set":19,"id":"6bf74d79_2b05dfd2","line":906,"updated":"2021-08-06 15:29:24.000000000","message":"Ditto","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"}],"nova/tests/unit/api/openstack/compute/test_shelve.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1d426ac90ccd20766c48ccffe190ab5bc7c4d3e","unresolved":true,"context_lines":[{"line_number":136,"context_line":"        new\u003dmock.Mock(return_value\u003dTrue),"},{"line_number":137,"context_line":"    )"},{"line_number":138,"context_line":"    @mock.patch(\u0027nova.api.openstack.common.get_instance\u0027)"},{"line_number":139,"context_line":"    def test_unshelve_shelved_with_extended_resource_request_old_compute("},{"line_number":140,"context_line":"        self, mock_get_instance"},{"line_number":141,"context_line":"    ):"},{"line_number":142,"context_line":"        \"\"\"Test that only unshelving after shelve offload is rejected\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"8d887384_dcfb6ac1","line":139,"updated":"2021-08-06 15:29:24.000000000","message":"There\u0027s no \"new\" variant of this test fwict. Assume you think it\u0027s unnecessary given the above","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"31b2b305aaf5403d1a9d092d046c527c0e32317e","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        new\u003dmock.Mock(return_value\u003dTrue),"},{"line_number":137,"context_line":"    )"},{"line_number":138,"context_line":"    @mock.patch(\u0027nova.api.openstack.common.get_instance\u0027)"},{"line_number":139,"context_line":"    def test_unshelve_shelved_with_extended_resource_request_old_compute("},{"line_number":140,"context_line":"        self, mock_get_instance"},{"line_number":141,"context_line":"    ):"},{"line_number":142,"context_line":"        \"\"\"Test that only unshelving after shelve offload is rejected\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"d1573db5_937e39cd","line":139,"in_reply_to":"8d887384_dcfb6ac1","updated":"2021-08-16 19:32:03.000000000","message":"yepp, if the new code accidentally started to reject shelved instances even on new computes then this test would catch it.","commit_id":"1032054105adad76c329d07bf30e89dc25f4a17f"}]}
