)]}'
{"nova/conductor/tasks/migrate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2b3d7153dec8cf7d811b6fef1f9c9e167ae60d4b","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        svc \u003d objects.Service.get_by_host_and_binary("},{"line_number":193,"context_line":"            self.context, selection.service_host, \u0027nova-compute\u0027)"},{"line_number":194,"context_line":"        new_rpc \u003d self.compute_rpcapi.router.client("},{"line_number":195,"context_line":"            self.context).can_send_version(\u00275.2\u0027)"},{"line_number":196,"context_line":"        return svc.version \u003e\u003d 39 and new_rpc"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ac2212a3","line":194,"updated":"2019-09-23 13:51:37.000000000","message":"This should probably follow the pattern that we used for the NUMA-aware live migration series and add a method on the RPC client API rather than have the caller need to know the internals:\n\nhttps://github.com/openstack/nova/blob/5a1c2d4ffa0815e874f373a87eb38b1833d03b24/nova/compute/rpcapi.py#L976","commit_id":"339c723db250daf2cc0b2df3b2c04cc5585fdd2f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"325632c097c86e1b7120b3e27d384087e3625375","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        svc \u003d objects.Service.get_by_host_and_binary("},{"line_number":193,"context_line":"            self.context, selection.service_host, \u0027nova-compute\u0027)"},{"line_number":194,"context_line":"        new_rpc \u003d self.compute_rpcapi.router.client("},{"line_number":195,"context_line":"            self.context).can_send_version(\u00275.2\u0027)"},{"line_number":196,"context_line":"        return svc.version \u003e\u003d 39 and new_rpc"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ccd42ec0","line":194,"in_reply_to":"3fa7e38b_ac2212a3","updated":"2019-09-23 14:21:24.000000000","message":"Done","commit_id":"339c723db250daf2cc0b2df3b2c04cc5585fdd2f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4df95d10e356107399010601f924b8b155f67659","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def _support_resource_request(self, selection):"},{"line_number":189,"context_line":"        \"\"\"Returns true if the host is new enough to support resource request"},{"line_number":190,"context_line":"        during migration."},{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        svc \u003d objects.Service.get_by_host_and_binary("},{"line_number":193,"context_line":"            self.context, selection.service_host, \u0027nova-compute\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_3d8dea7a","line":190,"updated":"2019-09-23 16:29:36.000000000","message":"and that the compute RPC API version is not pinned during a rolling upgrade.","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28101fcca39e60e0718c728a0ddd21fd940fa110","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def _support_resource_request(self, selection):"},{"line_number":189,"context_line":"        \"\"\"Returns true if the host is new enough to support resource request"},{"line_number":190,"context_line":"        during migration."},{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        svc \u003d objects.Service.get_by_host_and_binary("},{"line_number":193,"context_line":"            self.context, selection.service_host, \u0027nova-compute\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_a95435ff","line":190,"in_reply_to":"3fa7e38b_3d8dea7a","updated":"2019-09-24 08:13:56.000000000","message":"Done","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4df95d10e356107399010601f924b8b155f67659","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        LOG.debug("},{"line_number":229,"context_line":"            \u0027Scheduler returned host %(host)s as a possible migration target \u0027"},{"line_number":230,"context_line":"            \u0027but that host is not new enough to support the migration with \u0027"},{"line_number":231,"context_line":"            \u0027resource request %(request)s or the compute RPC is pinned to \u0027"},{"line_number":232,"context_line":"            \u0027less than 5.2. Trying alternate hosts.\u0027,"},{"line_number":233,"context_line":"            {\u0027host\u0027: selection_list[0].service_host,"},{"line_number":234,"context_line":"             \u0027request\u0027: self.request_spec.requested_resources},"},{"line_number":235,"context_line":"            instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_3de2ca30","line":232,"range":{"start_line":231,"start_character":42,"end_line":232,"end_character":26},"updated":"2019-09-23 16:29:36.000000000","message":"Hmm, if we hit this, none of the alternates will matter even if they are new enough. It\u0027s convenient to include the RPC pin check in _support_resource_request but it\u0027s also a bit inefficient since if we fail that we might as well just fail early, right? It\u0027s a nit though.","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28101fcca39e60e0718c728a0ddd21fd940fa110","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        LOG.debug("},{"line_number":229,"context_line":"            \u0027Scheduler returned host %(host)s as a possible migration target \u0027"},{"line_number":230,"context_line":"            \u0027but that host is not new enough to support the migration with \u0027"},{"line_number":231,"context_line":"            \u0027resource request %(request)s or the compute RPC is pinned to \u0027"},{"line_number":232,"context_line":"            \u0027less than 5.2. Trying alternate hosts.\u0027,"},{"line_number":233,"context_line":"            {\u0027host\u0027: selection_list[0].service_host,"},{"line_number":234,"context_line":"             \u0027request\u0027: self.request_spec.requested_resources},"},{"line_number":235,"context_line":"            instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_893a99c9","line":232,"range":{"start_line":231,"start_character":42,"end_line":232,"end_character":26},"in_reply_to":"3fa7e38b_3de2ca30","updated":"2019-09-24 08:13:56.000000000","message":"True. As we plan to drop this code in Ussuri I\u0027m don\u0027t want to over-engineer this.","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1721baaa53a1fed1b15a8ace7c36e0bdb73f9009","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        LOG.debug("},{"line_number":229,"context_line":"            \u0027Scheduler returned host %(host)s as a possible migration target \u0027"},{"line_number":230,"context_line":"            \u0027but that host is not new enough to support the migration with \u0027"},{"line_number":231,"context_line":"            \u0027resource request %(request)s or the compute RPC is pinned to \u0027"},{"line_number":232,"context_line":"            \u0027less than 5.2. Trying alternate hosts.\u0027,"},{"line_number":233,"context_line":"            {\u0027host\u0027: selection_list[0].service_host,"},{"line_number":234,"context_line":"             \u0027request\u0027: self.request_spec.requested_resources},"},{"line_number":235,"context_line":"            instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_8a0fe435","line":232,"range":{"start_line":231,"start_character":42,"end_line":232,"end_character":26},"in_reply_to":"3fa7e38b_893a99c9","updated":"2019-09-24 13:30:55.000000000","message":"I\u0027m not sure you can drop it in Ussuri. I\u0027m pretty sure that we\u0027re too late to introduce a new compute RPC API 6.0 now in Train which means it will have to be done in Ussuri but we still need a full release boundary with compatibility with 5.x and then we can drop 5.x support in V. Dan Smith would know the details.","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"daae39754690b7f9c4b8e7344afc698950ff98b9","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        LOG.debug("},{"line_number":229,"context_line":"            \u0027Scheduler returned host %(host)s as a possible migration target \u0027"},{"line_number":230,"context_line":"            \u0027but that host is not new enough to support the migration with \u0027"},{"line_number":231,"context_line":"            \u0027resource request %(request)s or the compute RPC is pinned to \u0027"},{"line_number":232,"context_line":"            \u0027less than 5.2. Trying alternate hosts.\u0027,"},{"line_number":233,"context_line":"            {\u0027host\u0027: selection_list[0].service_host,"},{"line_number":234,"context_line":"             \u0027request\u0027: self.request_spec.requested_resources},"},{"line_number":235,"context_line":"            instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_050765cc","line":232,"range":{"start_line":231,"start_character":42,"end_line":232,"end_character":26},"in_reply_to":"3fa7e38b_8a0fe435","updated":"2019-09-24 13:45:08.000000000","message":"Yup, can\u0027t imagine shoving an RPC bump into train at this point (although I could be wrong about what we can shove in at a late date).\n\nThat means U gets 5.x and 6.0, which means V can drop support for 5.x.","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4df95d10e356107399010601f924b8b155f67659","unresolved":false,"context_lines":[{"line_number":6883,"context_line":"            server[\u0027id\u0027], {\u0027migrate\u0027: None})"},{"line_number":6884,"context_line":""},{"line_number":6885,"context_line":"        self.assertEqual(400, ex.response.status_code)"},{"line_number":6886,"context_line":"        self.assertIn(\u0027No valid host was found.\u0027, six.text_type(ex))"},{"line_number":6887,"context_line":""},{"line_number":6888,"context_line":"        # The migration is put into error"},{"line_number":6889,"context_line":"        self._wait_for_migration_status(server, [\u0027error\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_1d558ec6","line":6886,"updated":"2019-09-23 16:29:36.000000000","message":"I\u0027m surprised this doesn\u0027t contain something like \"Exceeded maximum number of retries\" instead.\n\nOh I see, it\u0027s overwritten:\n\nhttps://github.com/openstack/nova/blob/5a1c2d4ffa0815e874f373a87eb38b1833d03b24/nova/conductor/manager.py#L347","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"597bef1e509ec783253efbbcce9f6fdce1fe33c6","unresolved":false,"context_lines":[{"line_number":6900,"context_line":"            \u0027/allocations/%s\u0027 % migration_uuid).body[\u0027allocations\u0027]"},{"line_number":6901,"context_line":"        self.assertEqual({}, migration_allocations)"},{"line_number":6902,"context_line":""},{"line_number":6903,"context_line":"        # The instance still allocated from the source host"},{"line_number":6904,"context_line":"        updated_non_qos_port \u003d self.neutron.show_port("},{"line_number":6905,"context_line":"            non_qos_normal_port[\u0027id\u0027])[\u0027port\u0027]"},{"line_number":6906,"context_line":"        updated_qos_port \u003d self.neutron.show_port("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_94a8748c","line":6903,"range":{"start_line":6903,"start_character":23,"end_line":6903,"end_character":28},"updated":"2019-09-23 20:45:54.000000000","message":"is still","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28101fcca39e60e0718c728a0ddd21fd940fa110","unresolved":false,"context_lines":[{"line_number":6900,"context_line":"            \u0027/allocations/%s\u0027 % migration_uuid).body[\u0027allocations\u0027]"},{"line_number":6901,"context_line":"        self.assertEqual({}, migration_allocations)"},{"line_number":6902,"context_line":""},{"line_number":6903,"context_line":"        # The instance still allocated from the source host"},{"line_number":6904,"context_line":"        updated_non_qos_port \u003d self.neutron.show_port("},{"line_number":6905,"context_line":"            non_qos_normal_port[\u0027id\u0027])[\u0027port\u0027]"},{"line_number":6906,"context_line":"        updated_qos_port \u003d self.neutron.show_port("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_49458142","line":6903,"range":{"start_line":6903,"start_character":23,"end_line":6903,"end_character":28},"in_reply_to":"3fa7e38b_94a8748c","updated":"2019-09-24 08:13:56.000000000","message":"Done","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"}],"nova/tests/unit/conductor/tasks/test_migrate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4df95d10e356107399010601f924b8b155f67659","unresolved":false,"context_lines":[{"line_number":388,"context_line":"    @mock.patch(\u0027nova.scheduler.client.report.SchedulerReportClient.\u0027"},{"line_number":389,"context_line":"                \u0027delete_allocation_for_instance\u0027)"},{"line_number":390,"context_line":"    @mock.patch(\u0027nova.objects.Service.get_by_host_and_binary\u0027)"},{"line_number":391,"context_line":"    def test_get_host_supporting_request_both_hosts_are_new_but_rpc_pinned("},{"line_number":392,"context_line":"            self, mock_get_service, mock_delete_allocation,"},{"line_number":393,"context_line":"            mock_claim_resources):"},{"line_number":394,"context_line":"        self.flags(group\u003d\u0027upgrade_levels\u0027, compute\u003d\u00275.1\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_dd05b6c3","line":391,"updated":"2019-09-23 16:29:36.000000000","message":"We don\u0027t really need a duplicate unit test when the functional test gives us the coverage we care about right?","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"28101fcca39e60e0718c728a0ddd21fd940fa110","unresolved":false,"context_lines":[{"line_number":388,"context_line":"    @mock.patch(\u0027nova.scheduler.client.report.SchedulerReportClient.\u0027"},{"line_number":389,"context_line":"                \u0027delete_allocation_for_instance\u0027)"},{"line_number":390,"context_line":"    @mock.patch(\u0027nova.objects.Service.get_by_host_and_binary\u0027)"},{"line_number":391,"context_line":"    def test_get_host_supporting_request_both_hosts_are_new_but_rpc_pinned("},{"line_number":392,"context_line":"            self, mock_get_service, mock_delete_allocation,"},{"line_number":393,"context_line":"            mock_claim_resources):"},{"line_number":394,"context_line":"        self.flags(group\u003d\u0027upgrade_levels\u0027, compute\u003d\u00275.1\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_a96d15cd","line":391,"in_reply_to":"3fa7e38b_dd05b6c3","updated":"2019-09-24 08:13:56.000000000","message":"Done","commit_id":"0c8e21fa8631038f4f48840b79b5d156e1eb3c8a"}]}
