)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e462de4786df426457a8ed2cb88478588eccdaf","unresolved":false,"context_lines":[{"line_number":7,"context_line":"func test for migrate server with ports having resource request"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new functional test proves that bandwidth allocation is made on the"},{"line_number":10,"context_line":"destiantion host during the migration and the binding:profile of the"},{"line_number":11,"context_line":"port is updated to point to the destination resoruce provider."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"blueprint: support-move-ops-with-qos-ports"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"7faddb67_d8cac144","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":11},"updated":"2019-08-13 12:42:55.000000000","message":"destination","commit_id":"93295da014cead534d23bd93db07af5a43755a0e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e462de4786df426457a8ed2cb88478588eccdaf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new functional test proves that bandwidth allocation is made on the"},{"line_number":10,"context_line":"destiantion host during the migration and the binding:profile of the"},{"line_number":11,"context_line":"port is updated to point to the destination resoruce provider."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"blueprint: support-move-ops-with-qos-ports"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"7faddb67_98d449eb","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":52},"updated":"2019-08-13 12:42:55.000000000","message":"resource","commit_id":"93295da014cead534d23bd93db07af5a43755a0e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7b6a7777122f4b5d655d5ae91d1e9a66522e229","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Func test for migrate server with ports having resource request"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new functional test proves that bandwidth allocation is made on the"},{"line_number":10,"context_line":"destiantion host during the migration and the binding:profile of the"},{"line_number":11,"context_line":"port is updated to point to the destination resoruce provider."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"blueprint: support-move-ops-with-qos-ports"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7faddb67_c20358bd","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":11},"updated":"2019-09-03 16:06:07.000000000","message":"destination","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab234832f819fdaeec1f6679b2af8830f0ecfd8e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Func test for migrate server with ports having resource request"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new functional test proves that bandwidth allocation is made on the"},{"line_number":10,"context_line":"destiantion host during the migration and the binding:profile of the"},{"line_number":11,"context_line":"port is updated to point to the destination resoruce provider."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"blueprint: support-move-ops-with-qos-ports"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7faddb67_b15afe7e","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":11},"in_reply_to":"7faddb67_c20358bd","updated":"2019-09-05 15:09:20.000000000","message":"Done","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7b6a7777122f4b5d655d5ae91d1e9a66522e229","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new functional test proves that bandwidth allocation is made on the"},{"line_number":10,"context_line":"destiantion host during the migration and the binding:profile of the"},{"line_number":11,"context_line":"port is updated to point to the destination resoruce provider."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"blueprint: support-move-ops-with-qos-ports"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7faddb67_e208d4d9","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":52},"updated":"2019-09-03 16:06:07.000000000","message":"resource","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab234832f819fdaeec1f6679b2af8830f0ecfd8e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new functional test proves that bandwidth allocation is made on the"},{"line_number":10,"context_line":"destiantion host during the migration and the binding:profile of the"},{"line_number":11,"context_line":"port is updated to point to the destination resoruce provider."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"blueprint: support-move-ops-with-qos-ports"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7faddb67_7150065f","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":52},"in_reply_to":"7faddb67_e208d4d9","updated":"2019-09-05 15:09:20.000000000","message":"Done","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4cec74a50c613e94c6277fe3c45085385d6fb0aa","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new functional test proves that bandwidth allocation is made on the"},{"line_number":10,"context_line":"destiantion host during the migration and the binding:profile of the"},{"line_number":11,"context_line":"port is updated to point to the destination resoruce provider."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"blueprint: support-move-ops-with-qos-ports"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7faddb67_fd2f1986","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":52},"in_reply_to":"7faddb67_e208d4d9","updated":"2019-09-03 16:26:16.000000000","message":"nit: you might also add something like, \"As a result, migrate_instance_finish has to be un-stubbed in the NeutronFixture to update the port\u0027s binding profile.\"","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab234832f819fdaeec1f6679b2af8830f0ecfd8e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new functional test proves that bandwidth allocation is made on the"},{"line_number":10,"context_line":"destiantion host during the migration and the binding:profile of the"},{"line_number":11,"context_line":"port is updated to point to the destination resoruce provider."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"blueprint: support-move-ops-with-qos-ports"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7faddb67_51daaae8","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":52},"in_reply_to":"7faddb67_fd2f1986","updated":"2019-09-05 15:09:20.000000000","message":"Done","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"}],"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"de8a424f6dc16b16c7cb20f833b1ab85032b6201","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            server[\u0027networks\u0027] \u003d networks"},{"line_number":283,"context_line":"        if az is not None:"},{"line_number":284,"context_line":"            server[\u0027availability_zone\u0027] \u003d az"},{"line_number":285,"context_line":"        if host is not None:"},{"line_number":286,"context_line":"            server[\u0027host\u0027] \u003d host"},{"line_number":287,"context_line":"        return server"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"7faddb67_5fb15000","line":285,"updated":"2019-09-05 16:59:01.000000000","message":"It would be good to add a comment saying this requires at least microversion 2.74. Or just keep this out of the general helper method and leave it in your test\u0027s create server method.","commit_id":"ce6a7b08d33278233efb3b6f4ccf04bddde35639"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d73d7d1fc0161d2315d8fc04e21cb1772929f3fc","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            server[\u0027networks\u0027] \u003d networks"},{"line_number":283,"context_line":"        if az is not None:"},{"line_number":284,"context_line":"            server[\u0027availability_zone\u0027] \u003d az"},{"line_number":285,"context_line":"        if host is not None:"},{"line_number":286,"context_line":"            server[\u0027host\u0027] \u003d host"},{"line_number":287,"context_line":"        return server"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5faad753_983b3c9b","line":285,"in_reply_to":"7faddb67_5fb15000","updated":"2019-09-06 15:13:33.000000000","message":"Done","commit_id":"ce6a7b08d33278233efb3b6f4ccf04bddde35639"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4cec74a50c613e94c6277fe3c45085385d6fb0aa","unresolved":false,"context_lines":[{"line_number":6363,"context_line":"    def setUp(self):"},{"line_number":6364,"context_line":"        super(ServerMoveWithPortResourceRequestTest, self).setUp()"},{"line_number":6365,"context_line":""},{"line_number":6366,"context_line":"        patcher \u003d mock.patch("},{"line_number":6367,"context_line":"            \u0027nova.api.openstack.common.\u0027"},{"line_number":6368,"context_line":"            \u0027supports_port_resource_request_during_move\u0027,"},{"line_number":6369,"context_line":"            return_value\u003dTrue)"},{"line_number":6370,"context_line":"        self.addCleanup(patcher.stop)"},{"line_number":6371,"context_line":"        patcher.start()"},{"line_number":6372,"context_line":""},{"line_number":6373,"context_line":"        self.compute2 \u003d self._start_compute(\u0027host2\u0027)"},{"line_number":6374,"context_line":"        self.compute2_rp_uuid \u003d self._get_provider_uuid_by_host(\u0027host2\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_420c4841","line":6371,"range":{"start_line":6366,"start_character":8,"end_line":6371,"end_character":23},"updated":"2019-09-03 16:26:16.000000000","message":"It would be good to have a comment here about why we need to do this - and would we have a TODO to remove this once resize/cold migration is supported in the API for these types of servers?","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab234832f819fdaeec1f6679b2af8830f0ecfd8e","unresolved":false,"context_lines":[{"line_number":6363,"context_line":"    def setUp(self):"},{"line_number":6364,"context_line":"        super(ServerMoveWithPortResourceRequestTest, self).setUp()"},{"line_number":6365,"context_line":""},{"line_number":6366,"context_line":"        patcher \u003d mock.patch("},{"line_number":6367,"context_line":"            \u0027nova.api.openstack.common.\u0027"},{"line_number":6368,"context_line":"            \u0027supports_port_resource_request_during_move\u0027,"},{"line_number":6369,"context_line":"            return_value\u003dTrue)"},{"line_number":6370,"context_line":"        self.addCleanup(patcher.stop)"},{"line_number":6371,"context_line":"        patcher.start()"},{"line_number":6372,"context_line":""},{"line_number":6373,"context_line":"        self.compute2 \u003d self._start_compute(\u0027host2\u0027)"},{"line_number":6374,"context_line":"        self.compute2_rp_uuid \u003d self._get_provider_uuid_by_host(\u0027host2\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_1669888a","line":6371,"range":{"start_line":6366,"start_character":8,"end_line":6371,"end_character":23},"in_reply_to":"7faddb67_420c4841","updated":"2019-09-05 15:09:20.000000000","message":"Done","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7b6a7777122f4b5d655d5ae91d1e9a66522e229","unresolved":false,"context_lines":[{"line_number":6376,"context_line":"        self.compute2_service_id \u003d self.admin_api.get_services("},{"line_number":6377,"context_line":"            host\u003d\u0027host2\u0027, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":6378,"context_line":""},{"line_number":6379,"context_line":"        # disable host2 to make the initial server boot always host1 then"},{"line_number":6380,"context_line":"        # individual tests can enable host2 as a migration target"},{"line_number":6381,"context_line":"        self.admin_api.put_service("},{"line_number":6382,"context_line":"            self.compute2_service_id, {\u0027status\u0027: \u0027disabled\u0027})"},{"line_number":6383,"context_line":""},{"line_number":6384,"context_line":"    def _check_allocation("},{"line_number":6385,"context_line":"            self, server, compute_rp_uuid, non_qos_port, qos_port,"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_82a560b6","line":6382,"range":{"start_line":6379,"start_character":0,"end_line":6382,"end_character":61},"updated":"2019-09-03 16:06:07.000000000","message":"Oh, that\u0027s probably a better approach that what I did in [1]. Might steal this.\n\n[1] https://review.opendev.org/#/c/671801/35/nova/tests/functional/libvirt/test_numa_servers.py@341","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4cec74a50c613e94c6277fe3c45085385d6fb0aa","unresolved":false,"context_lines":[{"line_number":6376,"context_line":"        self.compute2_service_id \u003d self.admin_api.get_services("},{"line_number":6377,"context_line":"            host\u003d\u0027host2\u0027, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":6378,"context_line":""},{"line_number":6379,"context_line":"        # disable host2 to make the initial server boot always host1 then"},{"line_number":6380,"context_line":"        # individual tests can enable host2 as a migration target"},{"line_number":6381,"context_line":"        self.admin_api.put_service("},{"line_number":6382,"context_line":"            self.compute2_service_id, {\u0027status\u0027: \u0027disabled\u0027})"},{"line_number":6383,"context_line":""},{"line_number":6384,"context_line":"    def _check_allocation("},{"line_number":6385,"context_line":"            self, server, compute_rp_uuid, non_qos_port, qos_port,"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_dd025d09","line":6382,"range":{"start_line":6379,"start_character":0,"end_line":6382,"end_character":61},"in_reply_to":"7faddb67_82a560b6","updated":"2019-09-03 16:26:16.000000000","message":"Alternatively you could use microversion 2.74 to just request a specific host during server create:\n\nhttps://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id66\n\nOr use the forced host az hack by creating the server in AZ \"nova:host1\".\n\nOr just always target the host that the server is not created on and then you don\u0027t have to care which is the source host.","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab234832f819fdaeec1f6679b2af8830f0ecfd8e","unresolved":false,"context_lines":[{"line_number":6376,"context_line":"        self.compute2_service_id \u003d self.admin_api.get_services("},{"line_number":6377,"context_line":"            host\u003d\u0027host2\u0027, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":6378,"context_line":""},{"line_number":6379,"context_line":"        # disable host2 to make the initial server boot always host1 then"},{"line_number":6380,"context_line":"        # individual tests can enable host2 as a migration target"},{"line_number":6381,"context_line":"        self.admin_api.put_service("},{"line_number":6382,"context_line":"            self.compute2_service_id, {\u0027status\u0027: \u0027disabled\u0027})"},{"line_number":6383,"context_line":""},{"line_number":6384,"context_line":"    def _check_allocation("},{"line_number":6385,"context_line":"            self, server, compute_rp_uuid, non_qos_port, qos_port,"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_3164ceb2","line":6382,"range":{"start_line":6379,"start_character":0,"end_line":6382,"end_character":61},"in_reply_to":"7faddb67_dd025d09","updated":"2019-09-05 15:09:20.000000000","message":"microversion 2.74 is a good point. I always hated the --availability-zone hack","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4cec74a50c613e94c6277fe3c45085385d6fb0aa","unresolved":false,"context_lines":[{"line_number":6433,"context_line":"            flavor\u003dself.flavor,"},{"line_number":6434,"context_line":"            networks\u003d[{\u0027port\u0027: non_qos_port[\u0027id\u0027]},"},{"line_number":6435,"context_line":"                      {\u0027port\u0027: qos_port[\u0027id\u0027]}])"},{"line_number":6436,"context_line":"        server \u003d self._wait_for_state_change(self.admin_api, server, \u0027ACTIVE\u0027)"},{"line_number":6437,"context_line":""},{"line_number":6438,"context_line":"        return server"},{"line_number":6439,"context_line":""},{"line_number":6440,"context_line":"    def _delete_server_and_check_allocations(self, qos_port, server):"},{"line_number":6441,"context_line":"        self._delete_and_check_allocations(server)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_9d562505","line":6438,"range":{"start_line":6436,"start_character":8,"end_line":6438,"end_character":21},"updated":"2019-09-03 16:26:16.000000000","message":"nit: could just make this a single line","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab234832f819fdaeec1f6679b2af8830f0ecfd8e","unresolved":false,"context_lines":[{"line_number":6433,"context_line":"            flavor\u003dself.flavor,"},{"line_number":6434,"context_line":"            networks\u003d[{\u0027port\u0027: non_qos_port[\u0027id\u0027]},"},{"line_number":6435,"context_line":"                      {\u0027port\u0027: qos_port[\u0027id\u0027]}])"},{"line_number":6436,"context_line":"        server \u003d self._wait_for_state_change(self.admin_api, server, \u0027ACTIVE\u0027)"},{"line_number":6437,"context_line":""},{"line_number":6438,"context_line":"        return server"},{"line_number":6439,"context_line":""},{"line_number":6440,"context_line":"    def _delete_server_and_check_allocations(self, qos_port, server):"},{"line_number":6441,"context_line":"        self._delete_and_check_allocations(server)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_56f860c2","line":6438,"range":{"start_line":6436,"start_character":8,"end_line":6438,"end_character":21},"in_reply_to":"7faddb67_9d562505","updated":"2019-09-05 15:09:20.000000000","message":"Done","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4cec74a50c613e94c6277fe3c45085385d6fb0aa","unresolved":false,"context_lines":[{"line_number":6456,"context_line":"        self._check_allocation("},{"line_number":6457,"context_line":"            server, self.compute1_rp_uuid, non_qos_port, qos_port)"},{"line_number":6458,"context_line":""},{"line_number":6459,"context_line":"        self.admin_api.put_service("},{"line_number":6460,"context_line":"            self.compute2_service_id, {\u0027status\u0027: \u0027enabled\u0027})"},{"line_number":6461,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"},{"line_number":6462,"context_line":"        self._wait_for_state_change(self.api, server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":6463,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_dd79fd92","line":6460,"range":{"start_line":6459,"start_character":8,"end_line":6460,"end_character":60},"updated":"2019-09-03 16:26:16.000000000","message":"I don\u0027t really like this; it would be cleaner to me to just create the server on host1 explicitly in _create_server_with_ports and then not have to deal with disabling/enabling a service.","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab234832f819fdaeec1f6679b2af8830f0ecfd8e","unresolved":false,"context_lines":[{"line_number":6456,"context_line":"        self._check_allocation("},{"line_number":6457,"context_line":"            server, self.compute1_rp_uuid, non_qos_port, qos_port)"},{"line_number":6458,"context_line":""},{"line_number":6459,"context_line":"        self.admin_api.put_service("},{"line_number":6460,"context_line":"            self.compute2_service_id, {\u0027status\u0027: \u0027enabled\u0027})"},{"line_number":6461,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"},{"line_number":6462,"context_line":"        self._wait_for_state_change(self.api, server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":6463,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_51f86ac2","line":6460,"range":{"start_line":6459,"start_character":8,"end_line":6460,"end_character":60},"in_reply_to":"7faddb67_dd79fd92","updated":"2019-09-05 15:09:20.000000000","message":"Changed to use microversion 2.74 instead.","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d7b6a7777122f4b5d655d5ae91d1e9a66522e229","unresolved":false,"context_lines":[{"line_number":6463,"context_line":""},{"line_number":6464,"context_line":"        migration_uuid \u003d self.get_migration_uuid_for_instance(server[\u0027id\u0027])"},{"line_number":6465,"context_line":""},{"line_number":6466,"context_line":"        # check that server is allocates from the new host properly"},{"line_number":6467,"context_line":"        self._check_allocation("},{"line_number":6468,"context_line":"            server, self.compute2_rp_uuid, non_qos_port, qos_port,"},{"line_number":6469,"context_line":"            migration_uuid, source_compute_rp_uuid\u003dself.compute1_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_e21774a2","line":6466,"range":{"start_line":6466,"start_character":28,"end_line":6466,"end_character":30},"updated":"2019-09-03 16:06:07.000000000","message":"drop","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab234832f819fdaeec1f6679b2af8830f0ecfd8e","unresolved":false,"context_lines":[{"line_number":6463,"context_line":""},{"line_number":6464,"context_line":"        migration_uuid \u003d self.get_migration_uuid_for_instance(server[\u0027id\u0027])"},{"line_number":6465,"context_line":""},{"line_number":6466,"context_line":"        # check that server is allocates from the new host properly"},{"line_number":6467,"context_line":"        self._check_allocation("},{"line_number":6468,"context_line":"            server, self.compute2_rp_uuid, non_qos_port, qos_port,"},{"line_number":6469,"context_line":"            migration_uuid, source_compute_rp_uuid\u003dself.compute1_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_f13076a0","line":6466,"range":{"start_line":6466,"start_character":28,"end_line":6466,"end_character":30},"in_reply_to":"7faddb67_e21774a2","updated":"2019-09-05 15:09:20.000000000","message":"Done","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4cec74a50c613e94c6277fe3c45085385d6fb0aa","unresolved":false,"context_lines":[{"line_number":6468,"context_line":"            server, self.compute2_rp_uuid, non_qos_port, qos_port,"},{"line_number":6469,"context_line":"            migration_uuid, source_compute_rp_uuid\u003dself.compute1_rp_uuid)"},{"line_number":6470,"context_line":""},{"line_number":6471,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027confirmResize\u0027: {}})"},{"line_number":6472,"context_line":""},{"line_number":6473,"context_line":"        # check that allocation is still OK"},{"line_number":6474,"context_line":"        self._check_allocation("}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_ddec9d2a","line":6471,"range":{"start_line":6471,"start_character":68,"end_line":6471,"end_character":70},"updated":"2019-09-03 16:26:16.000000000","message":"nit: probably best to use None here in case this ever changes and we do request body validation (this recently came up when adding the 2.77 microversion, some old tests has to be updated to change {} to None for unshelve).\n\nAlso, don\u0027t you need to wait for something to finish with the confirm to avoid a race checking allocations? Like at least a notification or the migration status to changed to \u0027confirmed\u0027? The _check_allocation call below is just checking that the server still has allocations on the dest compute, but nothing is checking that the source compute allocations tracked with the migration are gone, which you could probably test right?","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ab234832f819fdaeec1f6679b2af8830f0ecfd8e","unresolved":false,"context_lines":[{"line_number":6468,"context_line":"            server, self.compute2_rp_uuid, non_qos_port, qos_port,"},{"line_number":6469,"context_line":"            migration_uuid, source_compute_rp_uuid\u003dself.compute1_rp_uuid)"},{"line_number":6470,"context_line":""},{"line_number":6471,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027confirmResize\u0027: {}})"},{"line_number":6472,"context_line":""},{"line_number":6473,"context_line":"        # check that allocation is still OK"},{"line_number":6474,"context_line":"        self._check_allocation("}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_b1e51edd","line":6471,"range":{"start_line":6471,"start_character":68,"end_line":6471,"end_character":70},"in_reply_to":"7faddb67_ddec9d2a","updated":"2019-09-05 15:09:20.000000000","message":"Done and Done.","commit_id":"9a161a03600feaaa7e1c66dce2fa23ba26e3211d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"de8a424f6dc16b16c7cb20f833b1ab85032b6201","unresolved":false,"context_lines":[{"line_number":6445,"context_line":"        binding_profile \u003d updated_qos_port[\u0027binding:profile\u0027]"},{"line_number":6446,"context_line":"        self.assertNotIn(\u0027allocation\u0027, binding_profile)"},{"line_number":6447,"context_line":""},{"line_number":6448,"context_line":"    def test_migrate_server_with_qos_port_old_compute_service_version(self):"},{"line_number":6449,"context_line":"        non_qos_port \u003d self.neutron.port_1"},{"line_number":6450,"context_line":"        qos_port \u003d self.neutron.port_with_resource_request"},{"line_number":6451,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"7faddb67_bf8c0435","line":6448,"range":{"start_line":6448,"start_character":8,"end_line":6448,"end_character":69},"updated":"2019-09-05 16:59:01.000000000","message":"I\u0027m not sure we really need a functional test for this, the unit tests for the API change seem sufficient.","commit_id":"ce6a7b08d33278233efb3b6f4ccf04bddde35639"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d73d7d1fc0161d2315d8fc04e21cb1772929f3fc","unresolved":false,"context_lines":[{"line_number":6445,"context_line":"        binding_profile \u003d updated_qos_port[\u0027binding:profile\u0027]"},{"line_number":6446,"context_line":"        self.assertNotIn(\u0027allocation\u0027, binding_profile)"},{"line_number":6447,"context_line":""},{"line_number":6448,"context_line":"    def test_migrate_server_with_qos_port_old_compute_service_version(self):"},{"line_number":6449,"context_line":"        non_qos_port \u003d self.neutron.port_1"},{"line_number":6450,"context_line":"        qos_port \u003d self.neutron.port_with_resource_request"},{"line_number":6451,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5faad753_d8fe94ad","line":6448,"range":{"start_line":6448,"start_character":8,"end_line":6448,"end_character":69},"in_reply_to":"7faddb67_bf8c0435","updated":"2019-09-06 15:13:33.000000000","message":"Yeah, I agree for the source compute check the unit test is enough.\n\nLet me change this to trigger the alternate host iteration in the migrate task. https://review.opendev.org/#/c/680394/3/nova/conductor/tasks/migrate.py@236\n\nDone.","commit_id":"ce6a7b08d33278233efb3b6f4ccf04bddde35639"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a96c3224b95b175793a4ef81250b412b21c20509","unresolved":false,"context_lines":[{"line_number":6475,"context_line":"        orig_get_service \u003d nova.objects.Service.get_by_host_and_binary"},{"line_number":6476,"context_line":""},{"line_number":6477,"context_line":"        def fake_get_service(context, host, binary):"},{"line_number":6478,"context_line":"            if host \u003d\u003d \u0027host1\u0027:"},{"line_number":6479,"context_line":"                return orig_get_service(context, host, binary)"},{"line_number":6480,"context_line":"            if host \u003d\u003d \u0027host2\u0027:"},{"line_number":6481,"context_line":"                service \u003d orig_get_service(context, host, binary)"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_a20a7e87","line":6478,"updated":"2019-09-06 18:27:00.000000000","message":"ok so we build on this one - so would we ever hit this?","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3df9fe72a337b2a74767cc3caa3017d1d6f5c936","unresolved":false,"context_lines":[{"line_number":6475,"context_line":"        orig_get_service \u003d nova.objects.Service.get_by_host_and_binary"},{"line_number":6476,"context_line":""},{"line_number":6477,"context_line":"        def fake_get_service(context, host, binary):"},{"line_number":6478,"context_line":"            if host \u003d\u003d \u0027host1\u0027:"},{"line_number":6479,"context_line":"                return orig_get_service(context, host, binary)"},{"line_number":6480,"context_line":"            if host \u003d\u003d \u0027host2\u0027:"},{"line_number":6481,"context_line":"                service \u003d orig_get_service(context, host, binary)"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_d7c64317","line":6478,"in_reply_to":"5faad753_a20a7e87","updated":"2019-09-09 13:05:44.000000000","message":"Nope. Fixed in a followup","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a96c3224b95b175793a4ef81250b412b21c20509","unresolved":false,"context_lines":[{"line_number":6477,"context_line":"        def fake_get_service(context, host, binary):"},{"line_number":6478,"context_line":"            if host \u003d\u003d \u0027host1\u0027:"},{"line_number":6479,"context_line":"                return orig_get_service(context, host, binary)"},{"line_number":6480,"context_line":"            if host \u003d\u003d \u0027host2\u0027:"},{"line_number":6481,"context_line":"                service \u003d orig_get_service(context, host, binary)"},{"line_number":6482,"context_line":"                service.version \u003d 38"},{"line_number":6483,"context_line":"                return service"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_42ff0a67","line":6480,"updated":"2019-09-06 18:27:00.000000000","message":"and we try to migrate to this one","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a96c3224b95b175793a4ef81250b412b21c20509","unresolved":false,"context_lines":[{"line_number":6493,"context_line":"        self.assertEqual(400, ex.response.status_code)"},{"line_number":6494,"context_line":"        self.assertIn(\u0027No valid host was found.\u0027, six.text_type(ex))"},{"line_number":6495,"context_line":""},{"line_number":6496,"context_line":"        # check that the server still allocates from the original host"},{"line_number":6497,"context_line":"        self._check_allocation("},{"line_number":6498,"context_line":"            server, self.compute1_rp_uuid, non_qos_port, qos_port)"},{"line_number":6499,"context_line":""},{"line_number":6500,"context_line":"        # but the migration allocation is gone"},{"line_number":6501,"context_line":"        migration_uuid \u003d self.get_migration_uuid_for_instance(server[\u0027id\u0027])"},{"line_number":6502,"context_line":"        migration_allocations \u003d self.placement_api.get("},{"line_number":6503,"context_line":"            \u0027/allocations/%s\u0027 % migration_uuid).body[\u0027allocations\u0027]"},{"line_number":6504,"context_line":"        self.assertEqual({}, migration_allocations)"},{"line_number":6505,"context_line":""},{"line_number":6506,"context_line":"        self._delete_server_and_check_allocations(qos_port, server)"},{"line_number":6507,"context_line":""},{"line_number":6508,"context_line":"    def test_migrate_server_with_qos_port_old_dest_compute_alternate(self):"},{"line_number":6509,"context_line":"        \"\"\"Create a situation where the first migration target host returned"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_c2f21a9b","line":6506,"range":{"start_line":6496,"start_character":8,"end_line":6506,"end_character":67},"updated":"2019-09-06 18:27:00.000000000","message":"Yeah this is different from the existing unit test coverage so it probably makes the functional test worthwhile.","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a96c3224b95b175793a4ef81250b412b21c20509","unresolved":false,"context_lines":[{"line_number":6526,"context_line":"        orig_get_service \u003d nova.objects.Service.get_by_host_and_binary"},{"line_number":6527,"context_line":""},{"line_number":6528,"context_line":"        def fake_get_service(context, host, binary):"},{"line_number":6529,"context_line":"            if host \u003d\u003d \u0027host1\u0027:"},{"line_number":6530,"context_line":"                return orig_get_service(context, host, binary)"},{"line_number":6531,"context_line":"            if host \u003d\u003d \u0027host2\u0027:"},{"line_number":6532,"context_line":"                service \u003d orig_get_service(context, host, binary)"},{"line_number":6533,"context_line":"                service.version \u003d 38"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_6239e63f","line":6530,"range":{"start_line":6529,"start_character":12,"end_line":6530,"end_character":62},"updated":"2019-09-06 18:27:00.000000000","message":"I think this is unused but it\u0027s OK.","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3df9fe72a337b2a74767cc3caa3017d1d6f5c936","unresolved":false,"context_lines":[{"line_number":6526,"context_line":"        orig_get_service \u003d nova.objects.Service.get_by_host_and_binary"},{"line_number":6527,"context_line":""},{"line_number":6528,"context_line":"        def fake_get_service(context, host, binary):"},{"line_number":6529,"context_line":"            if host \u003d\u003d \u0027host1\u0027:"},{"line_number":6530,"context_line":"                return orig_get_service(context, host, binary)"},{"line_number":6531,"context_line":"            if host \u003d\u003d \u0027host2\u0027:"},{"line_number":6532,"context_line":"                service \u003d orig_get_service(context, host, binary)"},{"line_number":6533,"context_line":"                service.version \u003d 38"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_b7ee2786","line":6530,"range":{"start_line":6529,"start_character":12,"end_line":6530,"end_character":62},"in_reply_to":"5faad753_6239e63f","updated":"2019-09-09 13:05:44.000000000","message":"fixed in a follow up","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a96c3224b95b175793a4ef81250b412b21c20509","unresolved":false,"context_lines":[{"line_number":6528,"context_line":"        def fake_get_service(context, host, binary):"},{"line_number":6529,"context_line":"            if host \u003d\u003d \u0027host1\u0027:"},{"line_number":6530,"context_line":"                return orig_get_service(context, host, binary)"},{"line_number":6531,"context_line":"            if host \u003d\u003d \u0027host2\u0027:"},{"line_number":6532,"context_line":"                service \u003d orig_get_service(context, host, binary)"},{"line_number":6533,"context_line":"                service.version \u003d 38"},{"line_number":6534,"context_line":"                return service"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_223bee38","line":6531,"updated":"2019-09-06 18:27:00.000000000","message":"and this is the first alternate which is too old so it fails","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3df9fe72a337b2a74767cc3caa3017d1d6f5c936","unresolved":false,"context_lines":[{"line_number":6528,"context_line":"        def fake_get_service(context, host, binary):"},{"line_number":6529,"context_line":"            if host \u003d\u003d \u0027host1\u0027:"},{"line_number":6530,"context_line":"                return orig_get_service(context, host, binary)"},{"line_number":6531,"context_line":"            if host \u003d\u003d \u0027host2\u0027:"},{"line_number":6532,"context_line":"                service \u003d orig_get_service(context, host, binary)"},{"line_number":6533,"context_line":"                service.version \u003d 38"},{"line_number":6534,"context_line":"                return service"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_d7bde368","line":6531,"in_reply_to":"5faad753_223bee38","updated":"2019-09-09 13:05:44.000000000","message":"Done","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a96c3224b95b175793a4ef81250b412b21c20509","unresolved":false,"context_lines":[{"line_number":6532,"context_line":"                service \u003d orig_get_service(context, host, binary)"},{"line_number":6533,"context_line":"                service.version \u003d 38"},{"line_number":6534,"context_line":"                return service"},{"line_number":6535,"context_line":"            if host \u003d\u003d \u0027host3\u0027:"},{"line_number":6536,"context_line":"                service \u003d orig_get_service(context, host, binary)"},{"line_number":6537,"context_line":"                service.version \u003d 39"},{"line_number":6538,"context_line":"                return service"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_8213c2b8","line":6535,"updated":"2019-09-06 18:27:00.000000000","message":"and this 2nd alternate is new enough so it passes and that\u0027s where the allocations should go","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3df9fe72a337b2a74767cc3caa3017d1d6f5c936","unresolved":false,"context_lines":[{"line_number":6532,"context_line":"                service \u003d orig_get_service(context, host, binary)"},{"line_number":6533,"context_line":"                service.version \u003d 38"},{"line_number":6534,"context_line":"                return service"},{"line_number":6535,"context_line":"            if host \u003d\u003d \u0027host3\u0027:"},{"line_number":6536,"context_line":"                service \u003d orig_get_service(context, host, binary)"},{"line_number":6537,"context_line":"                service.version \u003d 39"},{"line_number":6538,"context_line":"                return service"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_f7c25fe9","line":6535,"in_reply_to":"5faad753_8213c2b8","updated":"2019-09-09 13:05:44.000000000","message":"Done","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a96c3224b95b175793a4ef81250b412b21c20509","unresolved":false,"context_lines":[{"line_number":6547,"context_line":""},{"line_number":6548,"context_line":"        migration_uuid \u003d self.get_migration_uuid_for_instance(server[\u0027id\u0027])"},{"line_number":6549,"context_line":""},{"line_number":6550,"context_line":"        # check that server allocates from host3"},{"line_number":6551,"context_line":"        self._check_allocation("},{"line_number":6552,"context_line":"            server, compute3_rp_uuid, non_qos_port, qos_port,"},{"line_number":6553,"context_line":"            migration_uuid, source_compute_rp_uuid\u003dself.compute1_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_e21dd6bd","line":6550,"range":{"start_line":6550,"start_character":43,"end_line":6550,"end_character":48},"updated":"2019-09-06 18:27:00.000000000","message":"and the migration allocations from host1","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3df9fe72a337b2a74767cc3caa3017d1d6f5c936","unresolved":false,"context_lines":[{"line_number":6547,"context_line":""},{"line_number":6548,"context_line":"        migration_uuid \u003d self.get_migration_uuid_for_instance(server[\u0027id\u0027])"},{"line_number":6549,"context_line":""},{"line_number":6550,"context_line":"        # check that server allocates from host3"},{"line_number":6551,"context_line":"        self._check_allocation("},{"line_number":6552,"context_line":"            server, compute3_rp_uuid, non_qos_port, qos_port,"},{"line_number":6553,"context_line":"            migration_uuid, source_compute_rp_uuid\u003dself.compute1_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":28,"id":"5faad753_57b1f38e","line":6550,"range":{"start_line":6550,"start_character":43,"end_line":6550,"end_character":48},"in_reply_to":"5faad753_e21dd6bd","updated":"2019-09-09 13:05:44.000000000","message":"Done","commit_id":"d2c4550a1e587feb682ccfa21bd6f25c6891f082"}]}
