)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f330ff59ff6ba0a9310c52d1ce3a266562a8430e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As we found mutliple bugs in the server moving cases this patch adds"},{"line_number":10,"context_line":"test to cover the migrate confirm and migrate revert cases as well."},{"line_number":11,"context_line":"It seems that these two cases works as expected."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I40a244601e1612a87bd41cd6ad652202035a1ce4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ff82abbf_ee5d4847","line":11,"range":{"start_line":11,"start_character":30,"end_line":11,"end_character":35},"updated":"2017-11-27 16:43:55.000000000","message":"work","commit_id":"1dc6d74c000b2c8c250e4869c9478b0c3d32aa86"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ba4d1e1f0eac5ca300d833241f543a097d1389b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As we found mutliple bugs in the server moving cases this patch adds"},{"line_number":10,"context_line":"test to cover the migrate confirm and migrate revert cases as well."},{"line_number":11,"context_line":"It seems that these two cases works as expected."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I40a244601e1612a87bd41cd6ad652202035a1ce4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f93b717_caf08900","line":11,"range":{"start_line":11,"start_character":30,"end_line":11,"end_character":35},"in_reply_to":"ff82abbf_ee5d4847","updated":"2018-01-30 16:57:34.000000000","message":"Done","commit_id":"1dc6d74c000b2c8c250e4869c9478b0c3d32aa86"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f15487cf051ab483525e3998bd48f22929547ddf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"cover migration cases with functional tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As we found mutliple bugs in the server moving cases this patch adds"},{"line_number":10,"context_line":"test to cover the migrate confirm and migrate revert cases as well."},{"line_number":11,"context_line":"It seems that these two cases work as expected."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f93b717_73257a08","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":20},"updated":"2018-02-01 12:37:48.000000000","message":"nit:multiple","commit_id":"1dc7eb27750fee4acc42693441ee93b438d0430f"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"eefeed1b596e0c723328cb58218607ee5f3612a8","unresolved":false,"context_lines":[{"line_number":1272,"context_line":"        return server"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def _resize_and_check_allocations(self, server, old_flavor, new_flavor,"},{"line_number":1275,"context_line":"                                      source_rp_uuid, dest_rp_uuid):"},{"line_number":1276,"context_line":"        self.flags(allow_resize_to_same_host\u003dFalse)"},{"line_number":1277,"context_line":"        resize_req \u003d {"},{"line_number":1278,"context_line":"            \u0027resize\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_29f00afd","line":1275,"updated":"2017-11-27 16:54:29.000000000","message":"nit: unrelated whitespace change","commit_id":"1dc6d74c000b2c8c250e4869c9478b0c3d32aa86"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ba4d1e1f0eac5ca300d833241f543a097d1389b","unresolved":false,"context_lines":[{"line_number":1272,"context_line":"        return server"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def _resize_and_check_allocations(self, server, old_flavor, new_flavor,"},{"line_number":1275,"context_line":"                                      source_rp_uuid, dest_rp_uuid):"},{"line_number":1276,"context_line":"        self.flags(allow_resize_to_same_host\u003dFalse)"},{"line_number":1277,"context_line":"        resize_req \u003d {"},{"line_number":1278,"context_line":"            \u0027resize\u0027: {"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f93b717_aaadfde9","line":1275,"in_reply_to":"ff82abbf_29f00afd","updated":"2018-01-30 16:57:34.000000000","message":"Done","commit_id":"1dc6d74c000b2c8c250e4869c9478b0c3d32aa86"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"eefeed1b596e0c723328cb58218607ee5f3612a8","unresolved":false,"context_lines":[{"line_number":2545,"context_line":"        # Check we\u0027re still accurate after running the periodics"},{"line_number":2546,"context_line":""},{"line_number":2547,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"},{"line_number":2548,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":2549,"context_line":""},{"line_number":2550,"context_line":"        # and the target host allocation should be according to the flavor"},{"line_number":2551,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_usages)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_2957aacc","line":2548,"updated":"2017-11-27 16:54:29.000000000","message":"I know it shouldn\u0027t make any difference, but is there a reason that you did these in the opposite order from L2526-7?\n\nAlso, the blank line between comment and the code it\u0027s describing should be removed.","commit_id":"1dc6d74c000b2c8c250e4869c9478b0c3d32aa86"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ba4d1e1f0eac5ca300d833241f543a097d1389b","unresolved":false,"context_lines":[{"line_number":2545,"context_line":"        # Check we\u0027re still accurate after running the periodics"},{"line_number":2546,"context_line":""},{"line_number":2547,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"},{"line_number":2548,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":2549,"context_line":""},{"line_number":2550,"context_line":"        # and the target host allocation should be according to the flavor"},{"line_number":2551,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_usages)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f93b717_2a8b2d6e","line":2548,"in_reply_to":"ff82abbf_2957aacc","updated":"2018-01-30 16:57:34.000000000","message":"No difference and I don\u0027t remember why I did this way.\nDone","commit_id":"1dc6d74c000b2c8c250e4869c9478b0c3d32aa86"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bc7544a5653619b11176d8bb21276d649374a4e4","unresolved":false,"context_lines":[{"line_number":1644,"context_line":""},{"line_number":1645,"context_line":"        self._run_periodics()"},{"line_number":1646,"context_line":""},{"line_number":1647,"context_line":"        # the original host expected to have the old resource usage"},{"line_number":1648,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1649,"context_line":"        self.assertFlavorMatchesAllocation(old_flavor, source_usages)"},{"line_number":1650,"context_line":""},{"line_number":1651,"context_line":"        # the dest host expected to have resource allocation based on"},{"line_number":1652,"context_line":"        # the new flavor the server is resized to"},{"line_number":1653,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"},{"line_number":1654,"context_line":"        self.assertFlavorMatchesAllocation(new_flavor, dest_usages)"},{"line_number":1655,"context_line":""},{"line_number":1656,"context_line":"        # The instance should own the new_flavor allocation against the"},{"line_number":1657,"context_line":"        # destination host"},{"line_number":1658,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1659,"context_line":"        self.assertEqual(1, len(allocations))"},{"line_number":1660,"context_line":"        dest_allocation \u003d allocations[dest_rp_uuid][\u0027resources\u0027]"},{"line_number":1661,"context_line":"        self.assertFlavorMatchesAllocation(new_flavor, dest_allocation)"},{"line_number":1662,"context_line":""},{"line_number":1663,"context_line":"        # The migration should own the old_flavor allocation against the"},{"line_number":1664,"context_line":"        # source host"},{"line_number":1665,"context_line":"        migration_uuid \u003d self.get_migration_uuid_for_instance(server[\u0027id\u0027])"},{"line_number":1666,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(migration_uuid)"},{"line_number":1667,"context_line":"        source_alloc \u003d allocations[source_rp_uuid][\u0027resources\u0027]"},{"line_number":1668,"context_line":"        self.assertFlavorMatchesAllocation(old_flavor, source_alloc)"},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":""},{"line_number":1671,"context_line":"class TraitsTrackingTests(ProviderUsageBaseTestCase):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_d971b7aa","line":1668,"range":{"start_line":1647,"start_character":0,"end_line":1668,"end_character":68},"updated":"2018-06-15 19:58:38.000000000","message":"I know this is a cut/paste, but this appears to be identical to the code above _run_periodics(), so an opportunity for factoring out (later).","commit_id":"ea6086270eb265ff66ee25a59c0147563ec6d8cf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de04263be9a7f0fc1ea7dc2b87344d9d02891757","unresolved":false,"context_lines":[{"line_number":1644,"context_line":""},{"line_number":1645,"context_line":"        self._run_periodics()"},{"line_number":1646,"context_line":""},{"line_number":1647,"context_line":"        # the original host expected to have the old resource usage"},{"line_number":1648,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1649,"context_line":"        self.assertFlavorMatchesAllocation(old_flavor, source_usages)"},{"line_number":1650,"context_line":""},{"line_number":1651,"context_line":"        # the dest host expected to have resource allocation based on"},{"line_number":1652,"context_line":"        # the new flavor the server is resized to"},{"line_number":1653,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"},{"line_number":1654,"context_line":"        self.assertFlavorMatchesAllocation(new_flavor, dest_usages)"},{"line_number":1655,"context_line":""},{"line_number":1656,"context_line":"        # The instance should own the new_flavor allocation against the"},{"line_number":1657,"context_line":"        # destination host"},{"line_number":1658,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1659,"context_line":"        self.assertEqual(1, len(allocations))"},{"line_number":1660,"context_line":"        dest_allocation \u003d allocations[dest_rp_uuid][\u0027resources\u0027]"},{"line_number":1661,"context_line":"        self.assertFlavorMatchesAllocation(new_flavor, dest_allocation)"},{"line_number":1662,"context_line":""},{"line_number":1663,"context_line":"        # The migration should own the old_flavor allocation against the"},{"line_number":1664,"context_line":"        # source host"},{"line_number":1665,"context_line":"        migration_uuid \u003d self.get_migration_uuid_for_instance(server[\u0027id\u0027])"},{"line_number":1666,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(migration_uuid)"},{"line_number":1667,"context_line":"        source_alloc \u003d allocations[source_rp_uuid][\u0027resources\u0027]"},{"line_number":1668,"context_line":"        self.assertFlavorMatchesAllocation(old_flavor, source_alloc)"},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":""},{"line_number":1671,"context_line":"class TraitsTrackingTests(ProviderUsageBaseTestCase):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_a461dad6","line":1668,"range":{"start_line":1647,"start_character":0,"end_line":1668,"end_character":68},"in_reply_to":"5f7c97a3_d971b7aa","updated":"2018-07-03 13:18:23.000000000","message":"done","commit_id":"ea6086270eb265ff66ee25a59c0147563ec6d8cf"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bc7544a5653619b11176d8bb21276d649374a4e4","unresolved":false,"context_lines":[{"line_number":3144,"context_line":"        self._run_periodics()"},{"line_number":3145,"context_line":""},{"line_number":3146,"context_line":"        # Check we\u0027re still accurate after running the periodics"},{"line_number":3147,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":3148,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"},{"line_number":3149,"context_line":""},{"line_number":3150,"context_line":"        # and the target host allocation should be according to the flavor"},{"line_number":3151,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_usages)"},{"line_number":3152,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"},{"line_number":3153,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":3154,"context_line":"                          \u0027DISK_GB\u0027: 0}, source_usages,"},{"line_number":3155,"context_line":"                          \u0027The source host %s still has usages after the \u0027"},{"line_number":3156,"context_line":"                          \u0027resize has been confirmed\u0027 % source_hostname)"},{"line_number":3157,"context_line":""},{"line_number":3158,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":3159,"context_line":""},{"line_number":3160,"context_line":"        # and the server allocates only from the target host"},{"line_number":3161,"context_line":"        self.assertEqual(1, len(allocations))"},{"line_number":3162,"context_line":""},{"line_number":3163,"context_line":"        dest_allocation \u003d allocations[dest_rp_uuid][\u0027resources\u0027]"},{"line_number":3164,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_allocation)"},{"line_number":3165,"context_line":""},{"line_number":3166,"context_line":"        self._delete_and_check_allocations(server)"},{"line_number":3167,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_79abc3d6","line":3164,"range":{"start_line":3147,"start_character":0,"end_line":3164,"end_character":73},"updated":"2018-06-15 19:58:38.000000000","message":"DRY","commit_id":"ea6086270eb265ff66ee25a59c0147563ec6d8cf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de04263be9a7f0fc1ea7dc2b87344d9d02891757","unresolved":false,"context_lines":[{"line_number":3144,"context_line":"        self._run_periodics()"},{"line_number":3145,"context_line":""},{"line_number":3146,"context_line":"        # Check we\u0027re still accurate after running the periodics"},{"line_number":3147,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":3148,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"},{"line_number":3149,"context_line":""},{"line_number":3150,"context_line":"        # and the target host allocation should be according to the flavor"},{"line_number":3151,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_usages)"},{"line_number":3152,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"},{"line_number":3153,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":3154,"context_line":"                          \u0027DISK_GB\u0027: 0}, source_usages,"},{"line_number":3155,"context_line":"                          \u0027The source host %s still has usages after the \u0027"},{"line_number":3156,"context_line":"                          \u0027resize has been confirmed\u0027 % source_hostname)"},{"line_number":3157,"context_line":""},{"line_number":3158,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":3159,"context_line":""},{"line_number":3160,"context_line":"        # and the server allocates only from the target host"},{"line_number":3161,"context_line":"        self.assertEqual(1, len(allocations))"},{"line_number":3162,"context_line":""},{"line_number":3163,"context_line":"        dest_allocation \u003d allocations[dest_rp_uuid][\u0027resources\u0027]"},{"line_number":3164,"context_line":"        self.assertFlavorMatchesAllocation(self.flavor1, dest_allocation)"},{"line_number":3165,"context_line":""},{"line_number":3166,"context_line":"        self._delete_and_check_allocations(server)"},{"line_number":3167,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_a4d47a4c","line":3164,"range":{"start_line":3147,"start_character":0,"end_line":3164,"end_character":73},"in_reply_to":"5f7c97a3_79abc3d6","updated":"2018-07-03 13:18:23.000000000","message":"Done","commit_id":"ea6086270eb265ff66ee25a59c0147563ec6d8cf"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bc7544a5653619b11176d8bb21276d649374a4e4","unresolved":false,"context_lines":[{"line_number":3182,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":3183,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":3184,"context_line":""},{"line_number":3185,"context_line":"        self._run_periodics()"},{"line_number":3186,"context_line":""},{"line_number":3187,"context_line":"        # the original host expected to have the old resource allocation"},{"line_number":3188,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_59b2874b","line":3185,"range":{"start_line":3185,"start_character":8,"end_line":3185,"end_character":29},"updated":"2018-06-15 19:58:38.000000000","message":"Are we not guaranteed the below stuff works before we _run_periodics?","commit_id":"ea6086270eb265ff66ee25a59c0147563ec6d8cf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de04263be9a7f0fc1ea7dc2b87344d9d02891757","unresolved":false,"context_lines":[{"line_number":3182,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":3183,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":3184,"context_line":""},{"line_number":3185,"context_line":"        self._run_periodics()"},{"line_number":3186,"context_line":""},{"line_number":3187,"context_line":"        # the original host expected to have the old resource allocation"},{"line_number":3188,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_6413c202","line":3185,"range":{"start_line":3185,"start_character":8,"end_line":3185,"end_character":29},"in_reply_to":"5f7c97a3_59b2874b","updated":"2018-07-03 13:18:23.000000000","message":"We can!","commit_id":"ea6086270eb265ff66ee25a59c0147563ec6d8cf"}]}
