)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8f94d16c145a2f0922319cd7dcdc117ef030e401","unresolved":false,"context_lines":[{"line_number":11,"context_line":"support same-host cold migration, which is all of them except"},{"line_number":12,"context_line":"for the hosts using the vCenter driver."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: https://review.opendev.org/666604/"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I7a4b951f3ab324c666ab924e6003d24cc8e539f5"},{"line_number":17,"context_line":"Closes-Bug: #1748697"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_bd616caa","line":14,"updated":"2019-12-12 17:12:05.000000000","message":"This can be removed now.","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ef1701920e821d65bd2f0570ba5340f0a8ceafb1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"support same-host cold migration, which is all of them except"},{"line_number":12,"context_line":"for the hosts using the vCenter driver."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: https://review.opendev.org/666604/"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I7a4b951f3ab324c666ab924e6003d24cc8e539f5"},{"line_number":17,"context_line":"Closes-Bug: #1748697"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_761c7165","line":14,"in_reply_to":"3fa7e38b_bd616caa","updated":"2019-12-12 19:42:45.000000000","message":"Done","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"}],"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7abd7367a1f4fb3812b8042baef2c04d736886c0","unresolved":false,"context_lines":[{"line_number":3878,"context_line":"            # trait and (2) supports cold migration on the same host. If the"},{"line_number":3879,"context_line":"            # compute is old or does not support the trait, disallow same-host"},{"line_number":3880,"context_line":"            # cold migration."},{"line_number":3881,"context_line":"            # TODO(mriedem): In the case of vCenter, if the compute is old this"},{"line_number":3882,"context_line":"            # would break cold migration for that driver so do we need to check"},{"line_number":3883,"context_line":"            # the host\u0027s compute service version and if old fallback to the"},{"line_number":3884,"context_line":"            # legacy behavior of using CONF.allow_resize_to_same_host? That"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_2d50272c","line":3881,"updated":"2019-12-09 16:45:29.000000000","message":"Alternatively we could do a hack check on the cn.hypervisor_type and if it\u0027s vcenter allow the same host cold migration even if the trait isn\u0027t reported yet and remove that hack in V.","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"71f406d36be79ada0ff4eeb0b2ead26f2728d4ce","unresolved":false,"context_lines":[{"line_number":3878,"context_line":"            # trait and (2) supports cold migration on the same host. If the"},{"line_number":3879,"context_line":"            # compute is old or does not support the trait, disallow same-host"},{"line_number":3880,"context_line":"            # cold migration."},{"line_number":3881,"context_line":"            # TODO(mriedem): In the case of vCenter, if the compute is old this"},{"line_number":3882,"context_line":"            # would break cold migration for that driver so do we need to check"},{"line_number":3883,"context_line":"            # the host\u0027s compute service version and if old fallback to the"},{"line_number":3884,"context_line":"            # legacy behavior of using CONF.allow_resize_to_same_host? That"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_36ad99e9","line":3881,"in_reply_to":"3fa7e38b_2d50272c","updated":"2019-12-12 19:48:49.000000000","message":"Dan hates that idea so I\u0027ll just to the todo approach here.","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"48d7ccb9336d886901b2d1d79d54c0207c1c8859","unresolved":false,"context_lines":[{"line_number":3878,"context_line":"            # trait and (2) supports cold migration on the same host. If the"},{"line_number":3879,"context_line":"            # compute is old or does not support the trait, disallow same-host"},{"line_number":3880,"context_line":"            # cold migration."},{"line_number":3881,"context_line":"            # TODO(mriedem): In the case of vCenter, if the compute is old this"},{"line_number":3882,"context_line":"            # would break cold migration for that driver so do we need to check"},{"line_number":3883,"context_line":"            # the host\u0027s compute service version and if old fallback to the"},{"line_number":3884,"context_line":"            # legacy behavior of using CONF.allow_resize_to_same_host? That"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_d1bd2fd7","line":3881,"in_reply_to":"3fa7e38b_36ad99e9","updated":"2019-12-12 21:02:16.000000000","message":"Done","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"}],"nova/scheduler/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c7e671219b9e9a6db540c3fdc9a6e7f2f3676079","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # Create the CUSTOM_COMPUTE_SAME_HOST_COLD_MIGRATE until"},{"line_number":69,"context_line":"        # https://review.opendev.org/#/c/666604/ is merged and released"},{"line_number":70,"context_line":"        # and nova requires that minimum version of os-traits."},{"line_number":71,"context_line":"        resp \u003d self.placement_client.put("},{"line_number":72,"context_line":"            \u0027/traits/CUSTOM_COMPUTE_SAME_HOST_COLD_MIGRATE\u0027, None,"},{"line_number":73,"context_line":"            version\u003d\u00271.6\u0027)"},{"line_number":74,"context_line":"        if not resp:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_26082f25","line":71,"updated":"2019-11-21 14:29:51.000000000","message":"Should try/except Exception this:\n\nhttps://b620b857a32d4f2b3dd8-d2d72e60aa4ca7af838e9dc1dfba5296.ssl.cf1.rackcdn.com/695220/1/check/nova-tox-functional-py36/0a1f323/testr_results.html.gz\n\nhttps://278f4cf4e040bdd4e722-74c6967b9c388ca77dd0a83c1c662326.ssl.cf5.rackcdn.com/695220/1/check/openstack-tox-py36/3b83942/testr_results.html.gz","commit_id":"46a9ccc822bb1bc87ebbdef97aa13d1f53ded872"}],"nova/tests/functional/test_cold_migrate.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"68f1f03d842d35d37ff5db5461d10c220c0d3424","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        when the resource provider does not expose the"},{"line_number":46,"context_line":"        COMPUTE_SAME_HOST_COLD_MIGRATE trait."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":49,"context_line":"        # The fake driver does not report COMPUTE_SAME_HOST_COLD_MIGRATE"},{"line_number":50,"context_line":"        # so cold migration should fail since we only have one host."},{"line_number":51,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_edff2432","line":48,"updated":"2020-01-29 18:26:58.000000000","message":"Looking at the previous PS, this was specifying a server name, so the equivalent I think would be?\n\n server \u003d self._create_server(\n     name\u003d\u0027test_cold_migrate_same_host_not_supported\u0027, networks\u003d\u0027none\u0027)\n\nLooks like we could do without the image_uuid because it looks like it was just getting any valid id, nothing specific wanted.","commit_id":"4921e822e73383af0c8da4c5e3acfaa021eafe68"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d522ecfe27319a8a14ca3c4cad6a4b4da16efea3","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        when the resource provider does not expose the"},{"line_number":46,"context_line":"        COMPUTE_SAME_HOST_COLD_MIGRATE trait."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":49,"context_line":"        # The fake driver does not report COMPUTE_SAME_HOST_COLD_MIGRATE"},{"line_number":50,"context_line":"        # so cold migration should fail since we only have one host."},{"line_number":51,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_d7b5ea7e","line":48,"in_reply_to":"3fa7e38b_9f29dda3","updated":"2020-02-01 17:08:31.000000000","message":"Just think of all those delicious STATS.","commit_id":"4921e822e73383af0c8da4c5e3acfaa021eafe68"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"461cef160f0ce446b509f8ee4a9383f24d86331b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        when the resource provider does not expose the"},{"line_number":46,"context_line":"        COMPUTE_SAME_HOST_COLD_MIGRATE trait."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":49,"context_line":"        # The fake driver does not report COMPUTE_SAME_HOST_COLD_MIGRATE"},{"line_number":50,"context_line":"        # so cold migration should fail since we only have one host."},{"line_number":51,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_bc9867cb","line":48,"in_reply_to":"3fa7e38b_9fbb2473","updated":"2020-01-30 21:33:20.000000000","message":"\u003e OK, I don\u0027t see how they were necessary in the past if \u0027name\u0027 was\n \u003e still an optional kwarg in _build_minimal_create_server_request. I\n \u003e had thought mriedem used names intentionally to help identify\n \u003e things when tests were failing and/or we had func test gate bugs.\n \u003e \n\nThat\u0027s exactly why I did it. Debugging/fingerprinting gate failures is helpful when you have a unique(ish) server name in the functional test traceback on the failure.","commit_id":"4921e822e73383af0c8da4c5e3acfaa021eafe68"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a45caafcb0e7373d99ce8be8eef0a7863668c24c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        when the resource provider does not expose the"},{"line_number":46,"context_line":"        COMPUTE_SAME_HOST_COLD_MIGRATE trait."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":49,"context_line":"        # The fake driver does not report COMPUTE_SAME_HOST_COLD_MIGRATE"},{"line_number":50,"context_line":"        # so cold migration should fail since we only have one host."},{"line_number":51,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_9fbb2473","line":48,"in_reply_to":"3fa7e38b_b33d022b","updated":"2020-01-30 16:18:40.000000000","message":"OK, I don\u0027t see how they were necessary in the past if \u0027name\u0027 was still an optional kwarg in _build_minimal_create_server_request. I had thought mriedem used names intentionally to help identify things when tests were failing and/or we had func test gate bugs.\n\nBut if they\u0027ve already been removed, I didn\u0027t know that, thanks for including a link to examples.","commit_id":"4921e822e73383af0c8da4c5e3acfaa021eafe68"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6237e982964208a54decd8055e7a23f46751a184","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        when the resource provider does not expose the"},{"line_number":46,"context_line":"        COMPUTE_SAME_HOST_COLD_MIGRATE trait."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":49,"context_line":"        # The fake driver does not report COMPUTE_SAME_HOST_COLD_MIGRATE"},{"line_number":50,"context_line":"        # so cold migration should fail since we only have one host."},{"line_number":51,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_9f29dda3","line":48,"in_reply_to":"3fa7e38b_bc9867cb","updated":"2020-01-31 00:13:34.000000000","message":"Dibs on starting a bp to add server names back to all the tests!!! (just kidding)","commit_id":"4921e822e73383af0c8da4c5e3acfaa021eafe68"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"030fadc40bc0cf54af358870b1b569b207711d1c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        when the resource provider does not expose the"},{"line_number":46,"context_line":"        COMPUTE_SAME_HOST_COLD_MIGRATE trait."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":49,"context_line":"        # The fake driver does not report COMPUTE_SAME_HOST_COLD_MIGRATE"},{"line_number":50,"context_line":"        # so cold migration should fail since we only have one host."},{"line_number":51,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_b33d022b","line":48,"in_reply_to":"3fa7e38b_edff2432","updated":"2020-01-30 09:55:19.000000000","message":"I stripped all these out because they were necessary before but no longer are and really just add noise, as you can see by the fact the tests are passing. See the change [1] where we switched over to \u0027_build_server\u0027 (that was before \u0027_create_server\u0027 was added) for loads of other examples.\n\n[1] https://github.com/openstack/nova/commit/458d37fceb931be37b8615bc47f3f3d888a7f8ca#diff-b74a948fb1c76ed29a91fd4913bac295L128","commit_id":"4921e822e73383af0c8da4c5e3acfaa021eafe68"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"68f1f03d842d35d37ff5db5461d10c220c0d3424","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        old so the API falls back to the allow_resize_to_same_host config which"},{"line_number":58,"context_line":"        defaults to False."},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":61,"context_line":"        # Stub the compute service version check to make the compute service"},{"line_number":62,"context_line":"        # appear old."},{"line_number":63,"context_line":"        fake_service \u003d objects.Service()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_ed8404b4","line":60,"updated":"2020-01-29 18:26:58.000000000","message":"Similar here:\n\n server \u003d self._create_server(\n     name\u003d\u0027test_cold_migrate_same_host_old_compute_disallow\u0027, networks\u003d\u0027none\u0027)","commit_id":"4921e822e73383af0c8da4c5e3acfaa021eafe68"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"68f1f03d842d35d37ff5db5461d10c220c0d3424","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        in this test is set to True."},{"line_number":80,"context_line":"        \"\"\""},{"line_number":81,"context_line":"        self.flags(allow_resize_to_same_host\u003dTrue)"},{"line_number":82,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":83,"context_line":"        # Stub the compute service version check to make the compute service"},{"line_number":84,"context_line":"        # appear old."},{"line_number":85,"context_line":"        fake_service \u003d objects.Service()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_0da96023","line":82,"updated":"2020-01-29 18:26:58.000000000","message":"Similar here:\n\n server \u003d self._create_server(\n     name\u003d\u0027test_cold_migrate_same_host_old_compute_allow\u0027, networks\u003d\u0027none\u0027)","commit_id":"4921e822e73383af0c8da4c5e3acfaa021eafe68"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"68f1f03d842d35d37ff5db5461d10c220c0d3424","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        when the resource provider exposes the COMPUTE_SAME_HOST_COLD_MIGRATE"},{"line_number":117,"context_line":"        trait."},{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":"        server \u003d self._create_server(networks\u003d\u0027none\u0027)"},{"line_number":120,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"},{"line_number":121,"context_line":"        server \u003d self._wait_for_state_change(server, \u0027VERIFY_RESIZE\u0027)"},{"line_number":122,"context_line":"        self.assertEqual(\u0027host1\u0027, server[\u0027OS-EXT-SRV-ATTR:host\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_cd9ee8f8","line":119,"updated":"2020-01-29 18:26:58.000000000","message":"Similar here:\n\n server \u003d self._create_server(\n    name\u003d\u0027test_cold_migrate_same_host_supported\u0027, networks\u003d\u0027none\u0027)","commit_id":"4921e822e73383af0c8da4c5e3acfaa021eafe68"}],"nova/tests/functional/wsgi/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8f94d16c145a2f0922319cd7dcdc117ef030e401","unresolved":false,"context_lines":[{"line_number":415,"context_line":"    def test_cold_migrate_same_host_disabled(self):"},{"line_number":416,"context_line":"        # Create a server to play with."},{"line_number":417,"context_line":"        server \u003d self._build_minimal_create_server_request("},{"line_number":418,"context_line":"            self.api, \u0027test_cold_migrate_same_host_disabled\u0027,"},{"line_number":419,"context_line":"            image_uuid\u003dfake_image.get_valid_image_id(), networks\u003d\u0027none\u0027)"},{"line_number":420,"context_line":"        server \u003d self.api.post_server({\u0027server\u0027: server})"},{"line_number":421,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_dd6788b7","line":418,"range":{"start_line":418,"start_character":12,"end_line":418,"end_character":20},"updated":"2019-12-12 17:12:05.000000000","message":"This has to be removed now.","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88eb1b895f05685467f5b297fc83681ec35faf2c","unresolved":false,"context_lines":[{"line_number":415,"context_line":"    def test_cold_migrate_same_host_disabled(self):"},{"line_number":416,"context_line":"        # Create a server to play with."},{"line_number":417,"context_line":"        server \u003d self._build_minimal_create_server_request("},{"line_number":418,"context_line":"            self.api, \u0027test_cold_migrate_same_host_disabled\u0027,"},{"line_number":419,"context_line":"            image_uuid\u003dfake_image.get_valid_image_id(), networks\u003d\u0027none\u0027)"},{"line_number":420,"context_line":"        server \u003d self.api.post_server({\u0027server\u0027: server})"},{"line_number":421,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f616214a","line":418,"range":{"start_line":418,"start_character":12,"end_line":418,"end_character":20},"in_reply_to":"3fa7e38b_dd6788b7","updated":"2019-12-12 19:42:36.000000000","message":"Done","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8f94d16c145a2f0922319cd7dcdc117ef030e401","unresolved":false,"context_lines":[{"line_number":418,"context_line":"            self.api, \u0027test_cold_migrate_same_host_disabled\u0027,"},{"line_number":419,"context_line":"            image_uuid\u003dfake_image.get_valid_image_id(), networks\u003d\u0027none\u0027)"},{"line_number":420,"context_line":"        server \u003d self.api.post_server({\u0027server\u0027: server})"},{"line_number":421,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":422,"context_line":"        # The fake driver does not report CUSTOM_COMPUTE_SAME_HOST_COLD_MIGRATE"},{"line_number":423,"context_line":"        # so cold migration should fail since we only have one host."},{"line_number":424,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_9d0350be","line":421,"range":{"start_line":421,"start_character":45,"end_line":421,"end_character":54},"updated":"2019-12-12 17:12:05.000000000","message":"and this","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88eb1b895f05685467f5b297fc83681ec35faf2c","unresolved":false,"context_lines":[{"line_number":418,"context_line":"            self.api, \u0027test_cold_migrate_same_host_disabled\u0027,"},{"line_number":419,"context_line":"            image_uuid\u003dfake_image.get_valid_image_id(), networks\u003d\u0027none\u0027)"},{"line_number":420,"context_line":"        server \u003d self.api.post_server({\u0027server\u0027: server})"},{"line_number":421,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":422,"context_line":"        # The fake driver does not report CUSTOM_COMPUTE_SAME_HOST_COLD_MIGRATE"},{"line_number":423,"context_line":"        # so cold migration should fail since we only have one host."},{"line_number":424,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_1612dd55","line":421,"range":{"start_line":421,"start_character":45,"end_line":421,"end_character":54},"in_reply_to":"3fa7e38b_9d0350be","updated":"2019-12-12 19:42:36.000000000","message":"Done","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8f94d16c145a2f0922319cd7dcdc117ef030e401","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"},{"line_number":435,"context_line":"        original_host \u003d server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":436,"context_line":"        self._wait_for_server_parameter("},{"line_number":437,"context_line":"            self.api, server, {\u0027status\u0027: \u0027VERIFY_RESIZE\u0027,"},{"line_number":438,"context_line":"                               \u0027OS-EXT-SRV-ATTR:host\u0027: original_host})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_5d0958d9","line":437,"range":{"start_line":437,"start_character":12,"end_line":437,"end_character":20},"updated":"2019-12-12 17:12:05.000000000","message":"and this","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88eb1b895f05685467f5b297fc83681ec35faf2c","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], {\u0027migrate\u0027: None})"},{"line_number":435,"context_line":"        original_host \u003d server[\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":436,"context_line":"        self._wait_for_server_parameter("},{"line_number":437,"context_line":"            self.api, server, {\u0027status\u0027: \u0027VERIFY_RESIZE\u0027,"},{"line_number":438,"context_line":"                               \u0027OS-EXT-SRV-ATTR:host\u0027: original_host})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_b62669b9","line":437,"range":{"start_line":437,"start_character":12,"end_line":437,"end_character":20},"in_reply_to":"3fa7e38b_5d0958d9","updated":"2019-12-12 19:42:36.000000000","message":"Done","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"48d7ccb9336d886901b2d1d79d54c0207c1c8859","unresolved":false,"context_lines":[{"line_number":6622,"context_line":"            self.compute_api.placementclient"},{"line_number":6623,"context_line":"        mock_report_client.assert_called_once_with()"},{"line_number":6624,"context_line":""},{"line_number":6625,"context_line":"    def test_allow_resize_to_same_host(self):"},{"line_number":6626,"context_line":"        # TODO(mriedem): flesh this out"},{"line_number":6627,"context_line":"        pass"},{"line_number":6628,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_717ebb1b","line":6625,"updated":"2019-12-12 21:02:16.000000000","message":"Removed since I have the code all covered with functional tests.","commit_id":"ed05b454a29c679f25e4b5d1e5ac0cdd3d5ef21b"}],"nova/virt/fake.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"682330068a7e0f3c233e09eec6068fe90fc7bbb1","unresolved":false,"context_lines":[{"line_number":712,"context_line":""},{"line_number":713,"context_line":"class SameHostColdMigrateDriver(MediumFakeDriver):"},{"line_number":714,"context_line":"    \"\"\"MediumFakeDriver variant that supports same-host cold migrate.\"\"\""},{"line_number":715,"context_line":"    capabilities \u003d {"},{"line_number":716,"context_line":"        \"has_imagecache\": True,"},{"line_number":717,"context_line":"        \"supports_evacuate\": True,"},{"line_number":718,"context_line":"        \"supports_migrate_to_same_host\": True,"},{"line_number":719,"context_line":"        \"supports_attach_interface\": True,"},{"line_number":720,"context_line":"        \"supports_device_tagging\": True,"},{"line_number":721,"context_line":"        \"supports_tagged_attach_interface\": True,"},{"line_number":722,"context_line":"        \"supports_tagged_attach_volume\": True,"},{"line_number":723,"context_line":"        \"supports_extend_volume\": True,"},{"line_number":724,"context_line":"        \"supports_multiattach\": True,"},{"line_number":725,"context_line":"        \"supports_trusted_certs\": True,"},{"line_number":726,"context_line":"        \"supports_pcpus\": False,"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        # Supported image types"},{"line_number":729,"context_line":"        \"supports_image_type_raw\": True,"},{"line_number":730,"context_line":"        \"supports_image_type_vhd\": False,"},{"line_number":731,"context_line":"    }"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"class PowerUpdateFakeDriver(SmallFakeDriver):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_0b26e823","line":731,"range":{"start_line":715,"start_character":0,"end_line":731,"end_character":5},"updated":"2019-12-18 16:54:06.000000000","message":"How about:\n\n  capabilities \u003d copy.copy(FakeDriver.capabilities)\n  capabilities[\u0027supports_migrate_to_same_host\u0027] \u003d True\n\nWould be much less effort to maintain anyway","commit_id":"618ced0fde6b31168b86a518f2917d45f6813174"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b14db3f4c1e96be9aab005672be921f81148731","unresolved":false,"context_lines":[{"line_number":712,"context_line":""},{"line_number":713,"context_line":"class SameHostColdMigrateDriver(MediumFakeDriver):"},{"line_number":714,"context_line":"    \"\"\"MediumFakeDriver variant that supports same-host cold migrate.\"\"\""},{"line_number":715,"context_line":"    capabilities \u003d {"},{"line_number":716,"context_line":"        \"has_imagecache\": True,"},{"line_number":717,"context_line":"        \"supports_evacuate\": True,"},{"line_number":718,"context_line":"        \"supports_migrate_to_same_host\": True,"},{"line_number":719,"context_line":"        \"supports_attach_interface\": True,"},{"line_number":720,"context_line":"        \"supports_device_tagging\": True,"},{"line_number":721,"context_line":"        \"supports_tagged_attach_interface\": True,"},{"line_number":722,"context_line":"        \"supports_tagged_attach_volume\": True,"},{"line_number":723,"context_line":"        \"supports_extend_volume\": True,"},{"line_number":724,"context_line":"        \"supports_multiattach\": True,"},{"line_number":725,"context_line":"        \"supports_trusted_certs\": True,"},{"line_number":726,"context_line":"        \"supports_pcpus\": False,"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        # Supported image types"},{"line_number":729,"context_line":"        \"supports_image_type_raw\": True,"},{"line_number":730,"context_line":"        \"supports_image_type_vhd\": False,"},{"line_number":731,"context_line":"    }"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"class PowerUpdateFakeDriver(SmallFakeDriver):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_c640c562","line":731,"range":{"start_line":715,"start_character":0,"end_line":731,"end_character":5},"in_reply_to":"3fa7e38b_0b26e823","updated":"2019-12-18 17:20:05.000000000","message":"I\u0027ll do that in a follow up. I did a few things here to try and DRY this up but kept ending up mucking with the global FakeDriver.capabilities so I got tired of trying and moved on. Didn\u0027t occur to me to do a simple copy - I think this would also work:\n\ncapabilities \u003d dict(FakeDriver.capabilities, supports_migrate_to_same_host\u003dTrue)","commit_id":"618ced0fde6b31168b86a518f2917d45f6813174"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1e459647d27b40519cc9d232048a33f8ec545a7a","unresolved":false,"context_lines":[{"line_number":713,"context_line":"class SameHostColdMigrateDriver(MediumFakeDriver):"},{"line_number":714,"context_line":"    \"\"\"MediumFakeDriver variant that supports same-host cold migrate.\"\"\""},{"line_number":715,"context_line":"    capabilities \u003d dict(FakeDriver.capabilities,"},{"line_number":716,"context_line":"                        supports_migrate_to_same_host\u003dTrue)"},{"line_number":717,"context_line":""},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"class PowerUpdateFakeDriver(SmallFakeDriver):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_8f9c2171","line":716,"updated":"2019-12-18 18:12:44.000000000","message":"TIL","commit_id":"6e7dd680235a2d28d4cf0b884492e053e490f473"}],"releasenotes/notes/bug-1748697-COMPUTE_SAME_HOST_COLD_MIGRATE-19ed64bf48bb1fc7.yaml":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"cb8a6a5ff77b0b43272e1a48f0b743aa3baababa","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    API will check if the source compute node resource provider has the"},{"line_number":9,"context_line":"    ``COMPUTE_SAME_HOST_COLD_MIGRATE`` trait and if so the scheduler can select"},{"line_number":10,"context_line":"    the source host. Note that the only in-tree compute driver that supports"},{"line_number":11,"context_line":"    cold migratoin to the same host is ``VMwareVCDriver``."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    To support rolling upgrades with N-1 computes if a node does not report the"},{"line_number":14,"context_line":"    trait and is old the API will fallback to the ``allow_resize_to_same_host``"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3fa7e38b_1b7448cc","line":11,"range":{"start_line":11,"start_character":9,"end_line":11,"end_character":18},"updated":"2020-01-28 21:29:52.000000000","message":"migration","commit_id":"85048f6d4a7aa0f2294f0ae15b45e0a0cd3b034c"}]}
