)]}'
{"nova/compute/resource_tracker.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e4d271f047a73b9c510abdf13176e1d7759fd3d","unresolved":false,"context_lines":[{"line_number":621,"context_line":"                         baremetal resource nodes are handled like any other"},{"line_number":622,"context_line":"                         resource in the system."},{"line_number":623,"context_line":"        \"\"\""},{"line_number":624,"context_line":"        LOG.info(\"Auditing locally available compute resources for \""},{"line_number":625,"context_line":"                  \"%(host)s (node: %(node)s)\","},{"line_number":626,"context_line":"                 {\u0027node\u0027: nodename,"},{"line_number":627,"context_line":"                  \u0027host\u0027: self.host})"}],"source_content_type":"text/x-python","patch_set":4,"id":"df3967d1_6f97a492","line":624,"updated":"2017-07-31 13:45:49.000000000","message":"It is just here to get meaningful logs on the periodic task running. I will remove it later","commit_id":"402c4e566ca6f254f44349d8e90ca63a8a6c4f86"}],"nova/tests/fixtures.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d98d05c9694f98311c72d8ffbd89929c867263af","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"            \u0027nova.scheduler.client.report.SchedulerReportClient.delete\u0027,"},{"line_number":1436,"context_line":"            self._fake_delete))"},{"line_number":1437,"context_line":""},{"line_number":1438,"context_line":"        self.api \u003d PlacementApiClient(self)"},{"line_number":1439,"context_line":""},{"line_number":1440,"context_line":"    @staticmethod"},{"line_number":1441,"context_line":"    def _update_headers_with_version(headers, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_a611ac5f","line":1438,"updated":"2017-07-27 18:00:30.000000000","message":"I\u0027d name this api_client or something like that? Or is this to make the OSAPIFixture\u0027s pattern?","commit_id":"b7e76c92ecaa20f1441463365d35c2b9f4004185"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8c2ade359c65fa32bc860e379c1fd7c87a683ec5","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"                      \u0027host2\u0027: \u0027host1\u0027}"},{"line_number":1106,"context_line":"        return other_host[host]"},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"    def _get_provider_uuid_by_host(self, host):"},{"line_number":1109,"context_line":"        providers \u003d self.placement_api.get("},{"line_number":1110,"context_line":"            \u0027/resource_providers?name\u003d%s\u0027 % host).body"},{"line_number":1111,"context_line":"        return providers[\u0027resource_providers\u0027][0][\u0027uuid\u0027]"},{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"    def _get_provider_usages(self, provider_uuid):"},{"line_number":1114,"context_line":"        return self.placement_api.get("}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_e6633441","line":1111,"range":{"start_line":1108,"start_character":4,"end_line":1111,"end_character":57},"updated":"2017-07-27 17:42:41.000000000","message":"It would probably be safer to get the compute node via the host name and then use the compute node uuid to get the provider, since they share the same uuid.","commit_id":"b7e76c92ecaa20f1441463365d35c2b9f4004185"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b6e4c48bb7d286ee7c84fb94a3ff34f32b69304","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"                      \u0027host2\u0027: \u0027host1\u0027}"},{"line_number":1106,"context_line":"        return other_host[host]"},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"    def _get_provider_uuid_by_host(self, host):"},{"line_number":1109,"context_line":"        providers \u003d self.placement_api.get("},{"line_number":1110,"context_line":"            \u0027/resource_providers?name\u003d%s\u0027 % host).body"},{"line_number":1111,"context_line":"        return providers[\u0027resource_providers\u0027][0][\u0027uuid\u0027]"},{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"    def _get_provider_usages(self, provider_uuid):"},{"line_number":1114,"context_line":"        return self.placement_api.get("}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_f562a709","line":1111,"range":{"start_line":1108,"start_character":4,"end_line":1111,"end_character":57},"in_reply_to":"ff346bd7_e6633441","updated":"2017-07-28 08:24:54.000000000","message":"I don\u0027t know how that is safer as that also needs a pattern match on the host name but I can do that.\nDone.","commit_id":"b7e76c92ecaa20f1441463365d35c2b9f4004185"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d98d05c9694f98311c72d8ffbd89929c867263af","unresolved":false,"context_lines":[{"line_number":1163,"context_line":"        usages \u003d self._get_provider_usages(other_provider_uuid)"},{"line_number":1164,"context_line":"        self.assertEqual(flavors[1][\u0027vcpus\u0027], usages[\u0027VCPU\u0027])"},{"line_number":1165,"context_line":"        self.assertEqual(flavors[1][\u0027ram\u0027], usages[\u0027MEMORY_MB\u0027])"},{"line_number":1166,"context_line":"        self.assertEqual(flavors[1][\u0027disk\u0027], usages[\u0027DISK_GB\u0027])"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"        # Revert the resize and check that the usages"},{"line_number":1169,"context_line":"        post \u003d {\u0027revertResize\u0027: None}"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_81b8d2e4","line":1166,"updated":"2017-07-27 18:00:30.000000000","message":"We should also check that the allocation for the server\u0027s uuid is the expected \"doubling\" while it\u0027s in this state. GET /allocations/{server uuid}\n\nthat\u0027s the same as what you\u0027ve got here, but from a different angle","commit_id":"b7e76c92ecaa20f1441463365d35c2b9f4004185"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b6e4c48bb7d286ee7c84fb94a3ff34f32b69304","unresolved":false,"context_lines":[{"line_number":1163,"context_line":"        usages \u003d self._get_provider_usages(other_provider_uuid)"},{"line_number":1164,"context_line":"        self.assertEqual(flavors[1][\u0027vcpus\u0027], usages[\u0027VCPU\u0027])"},{"line_number":1165,"context_line":"        self.assertEqual(flavors[1][\u0027ram\u0027], usages[\u0027MEMORY_MB\u0027])"},{"line_number":1166,"context_line":"        self.assertEqual(flavors[1][\u0027disk\u0027], usages[\u0027DISK_GB\u0027])"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"        # Revert the resize and check that the usages"},{"line_number":1169,"context_line":"        post \u003d {\u0027revertResize\u0027: None}"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_5090614a","line":1166,"in_reply_to":"ff346bd7_81b8d2e4","updated":"2017-07-28 08:24:54.000000000","message":"I added that check for every step now.\nDone.","commit_id":"b7e76c92ecaa20f1441463365d35c2b9f4004185"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d98d05c9694f98311c72d8ffbd89929c867263af","unresolved":false,"context_lines":[{"line_number":1177,"context_line":"        self.assertEqual(flavors[0][\u0027ram\u0027], usages[\u0027MEMORY_MB\u0027])"},{"line_number":1178,"context_line":"        self.assertEqual(flavors[0][\u0027disk\u0027], usages[\u0027DISK_GB\u0027])"},{"line_number":1179,"context_line":""},{"line_number":1180,"context_line":"        # and the target host allocation should be freed"},{"line_number":1181,"context_line":"        # FIXME(gibi): This is not true in practice, it seems to be a bug"},{"line_number":1182,"context_line":"        # commenting it out to test the delete part"},{"line_number":1183,"context_line":"        #"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_e1b9decb","line":1180,"updated":"2017-07-27 18:00:30.000000000","message":"you may need to wait up to 60 seconds for this to be the case?","commit_id":"b7e76c92ecaa20f1441463365d35c2b9f4004185"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d98d05c9694f98311c72d8ffbd89929c867263af","unresolved":false,"context_lines":[{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":"        # the original host expected to have no allocation"},{"line_number":1265,"context_line":"        # FIXME(gibi): This is not true in practice, it seems to be a bug"},{"line_number":1266,"context_line":"        # commenting it out to check the other provider usage as well"},{"line_number":1267,"context_line":"        #"},{"line_number":1268,"context_line":"        # provider_uuid \u003d self._get_provider_uuid_by_host(original_host)"},{"line_number":1269,"context_line":"        # usages \u003d self._get_provider_usages(provider_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_41a1ca93","line":1266,"updated":"2017-07-27 18:00:30.000000000","message":"you may need to wait up to 60 seconds for this to be the case?","commit_id":"b7e76c92ecaa20f1441463365d35c2b9f4004185"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d98d05c9694f98311c72d8ffbd89929c867263af","unresolved":false,"context_lines":[{"line_number":1282,"context_line":"        self.api.delete_server(server[\u0027id\u0027])"},{"line_number":1283,"context_line":"        self._wait_until_deleted(server)"},{"line_number":1284,"context_line":""},{"line_number":1285,"context_line":"        # both provider should have zero usage"},{"line_number":1286,"context_line":"        # FIXME(gibi): This is not true in practice, it seems to be a bug"},{"line_number":1287,"context_line":"        # commenting it out to check the target provider usage"},{"line_number":1288,"context_line":"        #"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_61cdee64","line":1285,"updated":"2017-07-27 18:00:30.000000000","message":"you may need to wait up to 60 seconds for this to be the case?","commit_id":"b7e76c92ecaa20f1441463365d35c2b9f4004185"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0d247336d40033d68a5088a6d19ac29e8a3da15b","unresolved":false,"context_lines":[{"line_number":1358,"context_line":"        self.assertEqual(flavors[1][\u0027disk\u0027], usages[\u0027DISK_GB\u0027])"},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"        # and our server should have allocation on both providers accordingly"},{"line_number":1361,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1362,"context_line":"        self.assertEqual(2, len(allocations))"},{"line_number":1363,"context_line":"        source_allocation \u003d allocations[provider_uuid][\u0027resources\u0027]"},{"line_number":1364,"context_line":"        self.assertEqual(flavors[0][\u0027vcpus\u0027], source_allocation[\u0027VCPU\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_90ab001c","line":1361,"updated":"2017-07-31 20:36:45.000000000","message":"This is allocations before confirm (i.e. doubled)","commit_id":"efc62d3e0ae2fbdce95a15ba52a6c47972d813dc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0d247336d40033d68a5088a6d19ac29e8a3da15b","unresolved":false,"context_lines":[{"line_number":1373,"context_line":"        # Confirm the resize and check the usages"},{"line_number":1374,"context_line":"        post \u003d {\u0027confirmResize\u0027: None}"},{"line_number":1375,"context_line":"        self.api.post_server_action("},{"line_number":1376,"context_line":"            server[\u0027id\u0027], post, check_response_status\u003d[204])"},{"line_number":1377,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":1378,"context_line":""},{"line_number":1379,"context_line":"        # NOTE(gibi): wait for the  update_available_resource periodic task"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_5063581b","line":1376,"updated":"2017-07-31 20:36:45.000000000","message":"confirm.","commit_id":"efc62d3e0ae2fbdce95a15ba52a6c47972d813dc"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0d247336d40033d68a5088a6d19ac29e8a3da15b","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"        self.assertEqual(flavors[1][\u0027disk\u0027], target_usages[\u0027DISK_GB\u0027])"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"        # and the server allocates only from the target host"},{"line_number":1406,"context_line":"        self.assertEqual(1, len(allocations))"},{"line_number":1407,"context_line":"        allocation \u003d allocations[other_provider_uuid][\u0027resources\u0027]"},{"line_number":1408,"context_line":"        self.assertEqual(flavors[1][\u0027vcpus\u0027], allocation[\u0027VCPU\u0027])"},{"line_number":1409,"context_line":"        self.assertEqual(flavors[1][\u0027ram\u0027], allocation[\u0027MEMORY_MB\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"df3967d1_707d3cb0","line":1406,"updated":"2017-07-31 20:36:45.000000000","message":"Test blows up here, because we never re-fetched allocations after the confirm.","commit_id":"efc62d3e0ae2fbdce95a15ba52a6c47972d813dc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"        target_host \u003d self._other_host(original_host)"},{"line_number":1196,"context_line":""},{"line_number":1197,"context_line":"        # the original host expected to have the old resource usage"},{"line_number":1198,"context_line":"        provider_uuid \u003d self._get_provider_uuid_by_host(original_host)"},{"line_number":1199,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1200,"context_line":"        # NOTE(danms): This is bug 1707071, where we\u0027ve lost the"},{"line_number":1201,"context_line":"        # doubled allocation"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_a77a4721","line":1198,"range":{"start_line":1198,"start_character":8,"end_line":1198,"end_character":70},"updated":"2017-07-31 21:32:47.000000000","message":"redundant","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"        # the destination host expected to have resource allocation based on"},{"line_number":1215,"context_line":"        # the new flavor the server is resized to"},{"line_number":1216,"context_line":"        other_provider_uuid \u003d self._get_provider_uuid_by_host(target_host)"},{"line_number":1217,"context_line":"        usages \u003d self._get_provider_usages(other_provider_uuid)"},{"line_number":1218,"context_line":"        self.assertEqual(flavors[1][\u0027vcpus\u0027], usages[\u0027VCPU\u0027])"},{"line_number":1219,"context_line":"        self.assertEqual(flavors[1][\u0027ram\u0027], usages[\u0027MEMORY_MB\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_8777433b","line":1216,"range":{"start_line":1216,"start_character":8,"end_line":1216,"end_character":74},"updated":"2017-07-31 21:32:47.000000000","message":"redundant","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1239,"context_line":"        self.assertEqual(flavors[1][\u0027ram\u0027], target_allocation[\u0027MEMORY_MB\u0027])"},{"line_number":1240,"context_line":"        self.assertEqual(flavors[1][\u0027disk\u0027], target_allocation[\u0027DISK_GB\u0027])"},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"        # Revert the resize and check that the usages"},{"line_number":1243,"context_line":"        post \u003d {\u0027revertResize\u0027: None}"},{"line_number":1244,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":1245,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_a7f5a7cd","line":1242,"range":{"start_line":1242,"start_character":38,"end_line":1242,"end_character":42},"updated":"2017-07-31 21:32:47.000000000","message":"s/that// ?","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1244,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":1245,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":"        # NOTE(gibi): wait for the  update_available_resource periodic task"},{"line_number":1248,"context_line":"        # to run and settle the allocations"},{"line_number":1249,"context_line":"        time.sleep(2)"},{"line_number":1250,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_07b6b3fb","line":1247,"range":{"start_line":1247,"start_character":34,"end_line":1247,"end_character":36},"updated":"2017-07-31 21:32:47.000000000","message":"s/  / /","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1249,"context_line":"        time.sleep(2)"},{"line_number":1250,"context_line":""},{"line_number":1251,"context_line":"        # the original host expected to have the old resource allocation"},{"line_number":1252,"context_line":"        provider_uuid \u003d self._get_provider_uuid_by_host(original_host)"},{"line_number":1253,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1254,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1255,"context_line":"        other_provider_uuid \u003d self._get_provider_uuid_by_host(target_host)"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_27941737","line":1252,"range":{"start_line":1252,"start_character":8,"end_line":1252,"end_character":70},"updated":"2017-07-31 21:32:47.000000000","message":"redundant","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"        other_provider_uuid \u003d self._get_provider_uuid_by_host(target_host)"},{"line_number":1256,"context_line":"        target_usages \u003d self._get_provider_usages(other_provider_uuid)"},{"line_number":1257,"context_line":""},{"line_number":1258,"context_line":"        import pprint"},{"line_number":1259,"context_line":"        print \u0027Resource states after revertResize\u0027"},{"line_number":1260,"context_line":"        pprint.pprint({\u0027source_usages\u0027: usages,"},{"line_number":1261,"context_line":"                       \u0027target_usages\u0027: target_usages,"},{"line_number":1262,"context_line":"                       \u0027allocations\u0027: allocations})"},{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":"        self.assertEqual(flavors[0][\u0027vcpus\u0027], usages[\u0027VCPU\u0027])"},{"line_number":1265,"context_line":"        self.assertEqual(flavors[0][\u0027ram\u0027], usages[\u0027MEMORY_MB\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_87ace38c","line":1262,"range":{"start_line":1258,"start_character":8,"end_line":1262,"end_character":51},"updated":"2017-07-31 21:32:47.000000000","message":"LOG.info","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"        self._wait_until_deleted(server)"},{"line_number":1285,"context_line":""},{"line_number":1286,"context_line":"        # both provider should have zero usage"},{"line_number":1287,"context_line":"        provider_uuid \u003d self._get_provider_uuid_by_host(original_host)"},{"line_number":1288,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1289,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"},{"line_number":1290,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_e7b60fda","line":1287,"range":{"start_line":1287,"start_character":8,"end_line":1287,"end_character":70},"updated":"2017-07-31 21:32:47.000000000","message":"redundant","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1290,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":1291,"context_line":"                          \u0027DISK_GB\u0027: 0}, usages)"},{"line_number":1292,"context_line":""},{"line_number":1293,"context_line":"        provider_uuid \u003d self._get_provider_uuid_by_host(target_host)"},{"line_number":1294,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1295,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"},{"line_number":1296,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_a7c80755","line":1293,"range":{"start_line":1293,"start_character":8,"end_line":1293,"end_character":68},"updated":"2017-07-31 21:32:47.000000000","message":"just use other_provider_uuid","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1357,"context_line":"        target_host \u003d self._other_host(original_host)"},{"line_number":1358,"context_line":""},{"line_number":1359,"context_line":"        # the original host expected to have the old resource allocation"},{"line_number":1360,"context_line":"        provider_uuid \u003d self._get_provider_uuid_by_host(original_host)"},{"line_number":1361,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1362,"context_line":""},{"line_number":1363,"context_line":"        # NOTE(danms): This is bug 1707071, where we\u0027ve lost the"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_27e2d7d6","line":1360,"range":{"start_line":1360,"start_character":8,"end_line":1360,"end_character":70},"updated":"2017-07-31 21:32:47.000000000","message":"redundant","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"        # the destination host expected to have resource allocation based on"},{"line_number":1376,"context_line":"        # the new flavor the server is resized to"},{"line_number":1377,"context_line":"        other_provider_uuid \u003d self._get_provider_uuid_by_host(target_host)"},{"line_number":1378,"context_line":"        usages \u003d self._get_provider_usages(other_provider_uuid)"},{"line_number":1379,"context_line":"        self.assertEqual(flavors[1][\u0027vcpus\u0027], usages[\u0027VCPU\u0027])"},{"line_number":1380,"context_line":"        self.assertEqual(flavors[1][\u0027ram\u0027], usages[\u0027MEMORY_MB\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_a7cda75e","line":1377,"range":{"start_line":1377,"start_character":8,"end_line":1377,"end_character":74},"updated":"2017-07-31 21:32:47.000000000","message":"redundant","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"        # to run and settle the allocations"},{"line_number":1414,"context_line":"        time.sleep(2)"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        provider_uuid \u003d self._get_provider_uuid_by_host(original_host)"},{"line_number":1417,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1418,"context_line":"        other_provider_uuid \u003d self._get_provider_uuid_by_host(target_host)"},{"line_number":1419,"context_line":"        target_usages \u003d self._get_provider_usages(other_provider_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_e704cf7d","line":1416,"range":{"start_line":1416,"start_character":8,"end_line":1416,"end_character":70},"updated":"2017-07-31 21:32:47.000000000","message":"redundant","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        provider_uuid \u003d self._get_provider_uuid_by_host(original_host)"},{"line_number":1417,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1418,"context_line":"        other_provider_uuid \u003d self._get_provider_uuid_by_host(target_host)"},{"line_number":1419,"context_line":"        target_usages \u003d self._get_provider_usages(other_provider_uuid)"},{"line_number":1420,"context_line":""},{"line_number":1421,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_c7f9cb80","line":1418,"range":{"start_line":1418,"start_character":8,"end_line":1418,"end_character":74},"updated":"2017-07-31 21:32:47.000000000","message":"redundant","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1444,"context_line":"        # to run and settle the allocations"},{"line_number":1445,"context_line":"        time.sleep(2)"},{"line_number":1446,"context_line":""},{"line_number":1447,"context_line":"        provider_uuid \u003d self._get_provider_uuid_by_host(original_host)"},{"line_number":1448,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1449,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"},{"line_number":1450,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_07359346","line":1447,"range":{"start_line":1447,"start_character":8,"end_line":1447,"end_character":70},"updated":"2017-07-31 21:32:47.000000000","message":"redundant","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"60d99f0db4d2caf88e68a38d6136e3b2b82bbdac","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":1451,"context_line":"                          \u0027DISK_GB\u0027: 0}, usages)"},{"line_number":1452,"context_line":""},{"line_number":1453,"context_line":"        provider_uuid \u003d self._get_provider_uuid_by_host(target_host)"},{"line_number":1454,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1455,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"},{"line_number":1456,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":9,"id":"df3967d1_a73b6736","line":1453,"range":{"start_line":1453,"start_character":8,"end_line":1453,"end_character":68},"updated":"2017-07-31 21:32:47.000000000","message":"other_provider_uuid","commit_id":"4d352e098d424d35379761c144a39693e0d19038"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5f23a5116e1ae10e772637d733847cd212ec5a96","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":1281,"context_line":"                          \u0027DISK_GB\u0027: 0}, usages)"},{"line_number":1282,"context_line":""},{"line_number":1283,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1284,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"},{"line_number":1285,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":1286,"context_line":"                          \u0027DISK_GB\u0027: 0}, usages)"}],"source_content_type":"text/x-python","patch_set":11,"id":"df3967d1_677d7fb0","line":1283,"range":{"start_line":1283,"start_character":43,"end_line":1283,"end_character":56},"updated":"2017-07-31 21:45:56.000000000","message":"other_provider_uuid","commit_id":"a085d06473cbe9d7fcd1cf6920a8b8a8384ec434"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5f23a5116e1ae10e772637d733847cd212ec5a96","unresolved":false,"context_lines":[{"line_number":1447,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":1448,"context_line":"                          \u0027DISK_GB\u0027: 0}, usages)"},{"line_number":1449,"context_line":""},{"line_number":1450,"context_line":"        usages \u003d self._get_provider_usages(provider_uuid)"},{"line_number":1451,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"},{"line_number":1452,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":1453,"context_line":"                          \u0027DISK_GB\u0027: 0}, usages)"}],"source_content_type":"text/x-python","patch_set":11,"id":"df3967d1_c75f8b3f","line":1450,"range":{"start_line":1450,"start_character":43,"end_line":1450,"end_character":56},"updated":"2017-07-31 21:45:56.000000000","message":"other_provider_uuid","commit_id":"a085d06473cbe9d7fcd1cf6920a8b8a8384ec434"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"49ac2eed50f795319598bd8d17b5e292a245a80f","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":1080,"context_line":"        self.admin_api.microversion \u003d self.microversion"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"        # NOTE(danms): We need admin_api so we can direct builds to"},{"line_number":1083,"context_line":"        # specific compute nodes. We\u0027re not doing anything in these tests"},{"line_number":1084,"context_line":"        # that should be affected by admin-ness, so this should be okay."},{"line_number":1085,"context_line":"        self.api \u003d self.admin_api"},{"line_number":1086,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"df3967d1_1dd7244e","line":1083,"range":{"start_line":1082,"start_character":23,"end_line":1083,"end_character":33},"updated":"2017-07-31 22:57:12.000000000","message":"Is this needed for the availability_zone entry in the POST /servers request? Because that\u0027s not only for admins.","commit_id":"721ef2791acef30b86f1d4a00e1670ba405144fb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74e92682ed0adaa625a0fbff7b1ed35e1735f597","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":1080,"context_line":"        self.admin_api.microversion \u003d self.microversion"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"        # NOTE(danms): We need admin_api so we can direct builds to"},{"line_number":1083,"context_line":"        # specific compute nodes. We\u0027re not doing anything in these tests"},{"line_number":1084,"context_line":"        # that should be affected by admin-ness, so this should be okay."},{"line_number":1085,"context_line":"        self.api \u003d self.admin_api"},{"line_number":1086,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"df3967d1_7dbf50fb","line":1083,"range":{"start_line":1082,"start_character":23,"end_line":1083,"end_character":33},"in_reply_to":"df3967d1_1dd7244e","updated":"2017-07-31 22:59:19.000000000","message":"nova.tests.functional.api.client.OpenStackApiException: Unexpected status code: {\"forbidden\": {\"code\": 403, \"message\": \"Policy doesn\u0027t allow os_compute_api:servers:create:forced_host to be performed.\"}}","commit_id":"721ef2791acef30b86f1d4a00e1670ba405144fb"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"c9cf5646f4132748ef6912c8c28b4dab5e6e1e2e","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"        self.admin_api \u003d api_fixture.admin_api"},{"line_number":1080,"context_line":"        self.admin_api.microversion \u003d self.microversion"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"        # NOTE(danms): We need admin_api so we can direct builds to"},{"line_number":1083,"context_line":"        # specific compute nodes. We\u0027re not doing anything in these tests"},{"line_number":1084,"context_line":"        # that should be affected by admin-ness, so this should be okay."},{"line_number":1085,"context_line":"        self.api \u003d self.admin_api"},{"line_number":1086,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"df3967d1_b2ecb929","line":1083,"range":{"start_line":1082,"start_character":23,"end_line":1083,"end_character":33},"in_reply_to":"df3967d1_7dbf50fb","updated":"2017-08-01 09:38:18.000000000","message":"If we\u0027re worried about accidentally only testing admin paths, couldn\u0027t we frig the policy instead? That would be more explicit wrt which admin apis were required purely for testing purposes.","commit_id":"721ef2791acef30b86f1d4a00e1670ba405144fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"49ac2eed50f795319598bd8d17b5e292a245a80f","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"            networks\u003d[])"},{"line_number":1158,"context_line":"        initial \u003d (first_compute and self.compute.manager.host or"},{"line_number":1159,"context_line":"                   self.compute2.manager.host)"},{"line_number":1160,"context_line":"        server_req[\u0027availability_zone\u0027] \u003d \u0027nova:%s\u0027 % initial"},{"line_number":1161,"context_line":"        created_server \u003d self.api.post_server({\u0027server\u0027: server_req})"},{"line_number":1162,"context_line":"        server \u003d self._wait_for_state_change("},{"line_number":1163,"context_line":"            self.admin_api, created_server, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"df3967d1_9d94348d","line":1160,"range":{"start_line":1160,"start_character":8,"end_line":1160,"end_character":61},"updated":"2017-07-31 22:57:12.000000000","message":"Do you need the AvailabilityZoneFilter for this?","commit_id":"721ef2791acef30b86f1d4a00e1670ba405144fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"64f41eb8b95f3f7d92b8f2de57c6120a92d52a75","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"            networks\u003d[])"},{"line_number":1158,"context_line":"        initial \u003d (first_compute and self.compute.manager.host or"},{"line_number":1159,"context_line":"                   self.compute2.manager.host)"},{"line_number":1160,"context_line":"        server_req[\u0027availability_zone\u0027] \u003d \u0027nova:%s\u0027 % initial"},{"line_number":1161,"context_line":"        created_server \u003d self.api.post_server({\u0027server\u0027: server_req})"},{"line_number":1162,"context_line":"        server \u003d self._wait_for_state_change("},{"line_number":1163,"context_line":"            self.admin_api, created_server, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"df3967d1_1d3cc491","line":1160,"range":{"start_line":1160,"start_character":8,"end_line":1160,"end_character":61},"in_reply_to":"df3967d1_9d94348d","updated":"2017-07-31 22:59:09.000000000","message":"I guess not, if we enabled that filter it would require host aggregates with AZ metadata per compute host.","commit_id":"721ef2791acef30b86f1d4a00e1670ba405144fb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74e92682ed0adaa625a0fbff7b1ed35e1735f597","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"            networks\u003d[])"},{"line_number":1158,"context_line":"        initial \u003d (first_compute and self.compute.manager.host or"},{"line_number":1159,"context_line":"                   self.compute2.manager.host)"},{"line_number":1160,"context_line":"        server_req[\u0027availability_zone\u0027] \u003d \u0027nova:%s\u0027 % initial"},{"line_number":1161,"context_line":"        created_server \u003d self.api.post_server({\u0027server\u0027: server_req})"},{"line_number":1162,"context_line":"        server \u003d self._wait_for_state_change("},{"line_number":1163,"context_line":"            self.admin_api, created_server, \u0027ACTIVE\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"df3967d1_dd451c19","line":1160,"range":{"start_line":1160,"start_character":8,"end_line":1160,"end_character":61},"in_reply_to":"df3967d1_9d94348d","updated":"2017-07-31 22:59:19.000000000","message":"I thought so, but it seems to be doing the thing, and the AvailabilityFilter doesn\u0027t seem to have much in it related to picking the host, AFAICT.","commit_id":"721ef2791acef30b86f1d4a00e1670ba405144fb"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4c0b8c70e57f14b1784289e41d3028b9c0011a5f","unresolved":false,"context_lines":[{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"class ServerMovingTests(test.TestCase,"},{"line_number":1060,"context_line":"                        integrated_helpers.InstanceHelperMixin):"},{"line_number":1061,"context_line":"    REQUIRES_LOCKING \u003d True"},{"line_number":1062,"context_line":"    microversion \u003d \u0027latest\u0027"},{"line_number":1063,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_8b0e1c8b","line":1060,"updated":"2017-08-01 11:09:04.000000000","message":"This test is complicated enough that it would be really good to map out in a docstring everything it\u0027s attempting to do to give  a frame of reference.","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d200b7ee1fb0c3f10c4998b93963427bb79d029","unresolved":false,"context_lines":[{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"class ServerMovingTests(test.TestCase,"},{"line_number":1060,"context_line":"                        integrated_helpers.InstanceHelperMixin):"},{"line_number":1061,"context_line":"    REQUIRES_LOCKING \u003d True"},{"line_number":1062,"context_line":"    microversion \u003d \u0027latest\u0027"},{"line_number":1063,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_8603b373","line":1060,"in_reply_to":"df3967d1_8b0e1c8b","updated":"2017-08-01 12:27:02.000000000","message":"I added a small description about the intention. I don\u0027t know if we need more detailed scenario description per test case or not.","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4c0b8c70e57f14b1784289e41d3028b9c0011a5f","unresolved":false,"context_lines":[{"line_number":1101,"context_line":"        self.compute \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host1\u0027)"},{"line_number":1102,"context_line":"        # FIXME(gibi): wait for the compute to start the fake virt driver"},{"line_number":1103,"context_line":"        # before we move on as the above set_nodes manipulates global data"},{"line_number":1104,"context_line":"        time.sleep(1)"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"        # NOTE(sbauza): Make sure the FakeDriver returns a different nodename"},{"line_number":1107,"context_line":"        # for the second compute node."}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_cb2b04e9","line":1104,"updated":"2017-08-01 11:09:04.000000000","message":"sleep makes me nervous, and is almost always a bug. Can we poke the service API and look for the checkin instead?","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d200b7ee1fb0c3f10c4998b93963427bb79d029","unresolved":false,"context_lines":[{"line_number":1101,"context_line":"        self.compute \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host1\u0027)"},{"line_number":1102,"context_line":"        # FIXME(gibi): wait for the compute to start the fake virt driver"},{"line_number":1103,"context_line":"        # before we move on as the above set_nodes manipulates global data"},{"line_number":1104,"context_line":"        time.sleep(1)"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"        # NOTE(sbauza): Make sure the FakeDriver returns a different nodename"},{"line_number":1107,"context_line":"        # for the second compute node."}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_e6d27f5c","line":1104,"in_reply_to":"df3967d1_cb2b04e9","updated":"2017-08-01 12:27:02.000000000","message":"This was here to avoid a race condition when the periodic tasks was running in every second and the fake virt driver didn\u0027t make a copy of the nodes list for each driver instance. \nNow periodic task triggered from the test manually and fake virt drive is improved so this sleep is not needed any more. Therefore I removed it.","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4c0b8c70e57f14b1784289e41d3028b9c0011a5f","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"        # bug 1707071 is fixed, we should be able to pass with things"},{"line_number":1145,"context_line":"        # running both ways. Until then, skip."},{"line_number":1146,"context_line":"        self.skipTest(\u0027Bug 1707071\u0027)"},{"line_number":1147,"context_line":"        self.resize_revert(first_compute\u003dTrue)"},{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"    def test_resize_confirm_other(self):"},{"line_number":1150,"context_line":"        # NOTE(danms): This will run the test the other direction,"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_4b04b44a","line":1147,"updated":"2017-08-01 11:09:04.000000000","message":"where does this method exist?","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d200b7ee1fb0c3f10c4998b93963427bb79d029","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"        # bug 1707071 is fixed, we should be able to pass with things"},{"line_number":1145,"context_line":"        # running both ways. Until then, skip."},{"line_number":1146,"context_line":"        self.skipTest(\u0027Bug 1707071\u0027)"},{"line_number":1147,"context_line":"        self.resize_revert(first_compute\u003dTrue)"},{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"    def test_resize_confirm_other(self):"},{"line_number":1150,"context_line":"        # NOTE(danms): This will run the test the other direction,"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_4646eb23","line":1147,"in_reply_to":"df3967d1_4b04b44a","updated":"2017-08-01 12:27:02.000000000","message":"Good catch. It should be test_resize_revert(...). I\u0027ve fixed it.","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d200b7ee1fb0c3f10c4998b93963427bb79d029","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"        # bug 1707071 is fixed, we should be able to pass with things"},{"line_number":1153,"context_line":"        # running both ways. Until then, skip."},{"line_number":1154,"context_line":"        self.skipTest(\u0027Bug 1707071\u0027)"},{"line_number":1155,"context_line":"        self.resize_confirm(first_compute\u003dTrue)"},{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def _boot_and_check_allocations(self, flavor_id, host):"},{"line_number":1158,"context_line":"        flavors \u003d self.api.get_flavors()"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_0650e3d3","line":1155,"updated":"2017-08-01 12:27:02.000000000","message":"ditto","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4c0b8c70e57f14b1784289e41d3028b9c0011a5f","unresolved":false,"context_lines":[{"line_number":1155,"context_line":"        self.resize_confirm(first_compute\u003dTrue)"},{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def _boot_and_check_allocations(self, flavor_id, host):"},{"line_number":1158,"context_line":"        flavors \u003d self.api.get_flavors()"},{"line_number":1159,"context_line":"        server_req \u003d self._build_minimal_create_server_request("},{"line_number":1160,"context_line":"            self.api, \u0027some-server\u0027, flavor_id\u003dflavor_id,"},{"line_number":1161,"context_line":"            image_uuid\u003d\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_4b25d4c1","line":1158,"updated":"2017-08-01 11:09:04.000000000","message":"If we aren\u0027t manipulating the flavors, could we just setup\n\nself.flavor1 and self.flavor2 at setUp(). It makes it one less moving part.","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d200b7ee1fb0c3f10c4998b93963427bb79d029","unresolved":false,"context_lines":[{"line_number":1155,"context_line":"        self.resize_confirm(first_compute\u003dTrue)"},{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def _boot_and_check_allocations(self, flavor_id, host):"},{"line_number":1158,"context_line":"        flavors \u003d self.api.get_flavors()"},{"line_number":1159,"context_line":"        server_req \u003d self._build_minimal_create_server_request("},{"line_number":1160,"context_line":"            self.api, \u0027some-server\u0027, flavor_id\u003dflavor_id,"},{"line_number":1161,"context_line":"            image_uuid\u003d\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_c163e5b0","line":1158,"in_reply_to":"df3967d1_4b25d4c1","updated":"2017-08-01 12:27:02.000000000","message":"Done","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4c0b8c70e57f14b1784289e41d3028b9c0011a5f","unresolved":false,"context_lines":[{"line_number":1341,"context_line":"        source_allocation \u003d allocations[source_provider_uuid][\u0027resources\u0027]"},{"line_number":1342,"context_line":"        self.assertEqual(flavors[0][\u0027vcpus\u0027], source_allocation[\u0027VCPU\u0027])"},{"line_number":1343,"context_line":"        self.assertEqual(flavors[0][\u0027ram\u0027], source_allocation[\u0027MEMORY_MB\u0027])"},{"line_number":1344,"context_line":"        self.assertEqual(flavors[0][\u0027disk\u0027], source_allocation[\u0027DISK_GB\u0027])"},{"line_number":1345,"context_line":""},{"line_number":1346,"context_line":"        self._delete_and_check_allocations("},{"line_number":1347,"context_line":"            server, source_provider_uuid, destination_provider_uuid)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_8b14dc4f","line":1344,"updated":"2017-08-01 11:09:04.000000000","message":"it\u0027s probably worth a\n\nself.assertFlavorMatchesAllocation(self.flavor1, source_allocation)","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d200b7ee1fb0c3f10c4998b93963427bb79d029","unresolved":false,"context_lines":[{"line_number":1341,"context_line":"        source_allocation \u003d allocations[source_provider_uuid][\u0027resources\u0027]"},{"line_number":1342,"context_line":"        self.assertEqual(flavors[0][\u0027vcpus\u0027], source_allocation[\u0027VCPU\u0027])"},{"line_number":1343,"context_line":"        self.assertEqual(flavors[0][\u0027ram\u0027], source_allocation[\u0027MEMORY_MB\u0027])"},{"line_number":1344,"context_line":"        self.assertEqual(flavors[0][\u0027disk\u0027], source_allocation[\u0027DISK_GB\u0027])"},{"line_number":1345,"context_line":""},{"line_number":1346,"context_line":"        self._delete_and_check_allocations("},{"line_number":1347,"context_line":"            server, source_provider_uuid, destination_provider_uuid)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_41cc9560","line":1344,"in_reply_to":"df3967d1_8b14dc4f","updated":"2017-08-01 12:27:02.000000000","message":"Done","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4c0b8c70e57f14b1784289e41d3028b9c0011a5f","unresolved":false,"context_lines":[{"line_number":1346,"context_line":"        self._delete_and_check_allocations("},{"line_number":1347,"context_line":"            server, source_provider_uuid, destination_provider_uuid)"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"    def test_resize_confirm(self, first_compute\u003dFalse):"},{"line_number":1350,"context_line":"        flavors \u003d self.api.get_flavors()"},{"line_number":1351,"context_line":"        initial \u003d (first_compute and self.compute.manager.host or"},{"line_number":1352,"context_line":"                   self.compute2.manager.host)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_abca0017","line":1349,"updated":"2017-08-01 11:09:04.000000000","message":"test_methods taking parameters is a bit confusing","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d200b7ee1fb0c3f10c4998b93963427bb79d029","unresolved":false,"context_lines":[{"line_number":1346,"context_line":"        self._delete_and_check_allocations("},{"line_number":1347,"context_line":"            server, source_provider_uuid, destination_provider_uuid)"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"    def test_resize_confirm(self, first_compute\u003dFalse):"},{"line_number":1350,"context_line":"        flavors \u003d self.api.get_flavors()"},{"line_number":1351,"context_line":"        initial \u003d (first_compute and self.compute.manager.host or"},{"line_number":1352,"context_line":"                   self.compute2.manager.host)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_e162693e","line":1349,"in_reply_to":"df3967d1_abca0017","updated":"2017-08-01 12:27:02.000000000","message":"Pushed the parameter down by one layer.","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"4c0b8c70e57f14b1784289e41d3028b9c0011a5f","unresolved":false,"context_lines":[{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"    def test_resize_confirm(self, first_compute\u003dFalse):"},{"line_number":1350,"context_line":"        flavors \u003d self.api.get_flavors()"},{"line_number":1351,"context_line":"        initial \u003d (first_compute and self.compute.manager.host or"},{"line_number":1352,"context_line":"                   self.compute2.manager.host)"},{"line_number":1353,"context_line":""},{"line_number":1354,"context_line":"        server \u003d self._boot_and_check_allocations(flavors[0][\u0027id\u0027], initial)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_eba6c853","line":1351,"updated":"2017-08-01 11:09:04.000000000","message":"instead of optimizing like this can we just make it an if block. Doing an and between parameters of different types is legit, but it\u0027s definitely a little more brain processing to understand where we\u0027re going here. Give that this is test code, being extra simple would be good.\n\nAnd maybe initial_host instead of initial would have prevented me from having to read the rest of the code to figure out this bit.","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d200b7ee1fb0c3f10c4998b93963427bb79d029","unresolved":false,"context_lines":[{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"    def test_resize_confirm(self, first_compute\u003dFalse):"},{"line_number":1350,"context_line":"        flavors \u003d self.api.get_flavors()"},{"line_number":1351,"context_line":"        initial \u003d (first_compute and self.compute.manager.host or"},{"line_number":1352,"context_line":"                   self.compute2.manager.host)"},{"line_number":1353,"context_line":""},{"line_number":1354,"context_line":"        server \u003d self._boot_and_check_allocations(flavors[0][\u0027id\u0027], initial)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df3967d1_214991cf","line":1351,"in_reply_to":"df3967d1_eba6c853","updated":"2017-08-01 12:27:02.000000000","message":"Done","commit_id":"667c5eba1273baa12cbda3eb9751f955a0f903ed"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6b39e26dfe46a4c1445d8951ca8ec7a88af4553","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"        self.assertFlavorMatchesAllocation(flavor, initial_usages)"},{"line_number":1194,"context_line":""},{"line_number":1195,"context_line":"        # Check that the other provider has no usage"},{"line_number":1196,"context_line":"        other_provider_uuid \u003d self._get_provider_uuid_by_host("},{"line_number":1197,"context_line":"            self._other_host(initial_host))"},{"line_number":1198,"context_line":"        other_usages \u003d self._get_provider_usages(other_provider_uuid)"},{"line_number":1199,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"}],"source_content_type":"text/x-python","patch_set":17,"id":"df3967d1_3c51b863","line":1196,"range":{"start_line":1196,"start_character":8,"end_line":1196,"end_character":27},"updated":"2017-08-01 12:52:07.000000000","message":"This could be dest_provider_uuid, but it\u0027s less necessary here than in the other methods where you\u0027ve already addressed this.","commit_id":"09d1fe7f08ca585bf92f940c724bac94ffa38f99"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6b39e26dfe46a4c1445d8951ca8ec7a88af4553","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"        # Check that the other provider has no usage"},{"line_number":1196,"context_line":"        other_provider_uuid \u003d self._get_provider_uuid_by_host("},{"line_number":1197,"context_line":"            self._other_host(initial_host))"},{"line_number":1198,"context_line":"        other_usages \u003d self._get_provider_usages(other_provider_uuid)"},{"line_number":1199,"context_line":"        self.assertEqual({\u0027VCPU\u0027: 0,"},{"line_number":1200,"context_line":"                          \u0027MEMORY_MB\u0027: 0,"},{"line_number":1201,"context_line":"                          \u0027DISK_GB\u0027: 0}, other_usages)"}],"source_content_type":"text/x-python","patch_set":17,"id":"df3967d1_1c50345d","line":1198,"range":{"start_line":1198,"start_character":8,"end_line":1198,"end_character":20},"updated":"2017-08-01 12:52:07.000000000","message":"And dest_usages.","commit_id":"09d1fe7f08ca585bf92f940c724bac94ffa38f99"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a9f10fc03b07caf91e4dcd2d7af411a14e87230c","unresolved":false,"context_lines":[{"line_number":973,"context_line":"                    [fake_block_device.FakeDbBlockDeviceDict("},{"line_number":974,"context_line":"                    {\u0027device_name\u0027: \u0027/dev/vda\u0027,"},{"line_number":975,"context_line":"                     \u0027source_type\u0027: \u0027volume\u0027,"},{"line_number":976,"context_line":"                     \u0027dest_type\u0027: \u0027volume\u0027,"},{"line_number":977,"context_line":"                     \u0027volume_id\u0027: \u00275d721593-f033-4f6d-ab6f-b5b067e61bc4\u0027})])"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"    def test_attach_detach_vol_to_shelved_server(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_9783dfcc","line":976,"updated":"2017-08-01 13:34:30.000000000","message":"Seems like an unrelated change","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0573f9747a533f3dce0a8cd1e766b5f4b637d6e1","unresolved":false,"context_lines":[{"line_number":973,"context_line":"                    [fake_block_device.FakeDbBlockDeviceDict("},{"line_number":974,"context_line":"                    {\u0027device_name\u0027: \u0027/dev/vda\u0027,"},{"line_number":975,"context_line":"                     \u0027source_type\u0027: \u0027volume\u0027,"},{"line_number":976,"context_line":"                     \u0027dest_type\u0027: \u0027volume\u0027,"},{"line_number":977,"context_line":"                     \u0027volume_id\u0027: \u00275d721593-f033-4f6d-ab6f-b5b067e61bc4\u0027})])"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"    def test_attach_detach_vol_to_shelved_server(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_77a2bb4d","line":976,"updated":"2017-08-01 13:33:05.000000000","message":"this was a copy/paste issue. I will correct.","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"be92e9a43205d043152ff9cb484d08abbac28fbd","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"        # periodics. This effectively allows us to test the matrix of timing"},{"line_number":1148,"context_line":"        # scenarios during move operations."},{"line_number":1149,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":1150,"context_line":"        LOG.info(\u0027Running periodic for host1\u0027)"},{"line_number":1151,"context_line":"        self.compute1.manager.update_available_resource(ctx)"},{"line_number":1152,"context_line":"        LOG.info(\u0027Running periodic for host2\u0027)"},{"line_number":1153,"context_line":"        self.compute2.manager.update_available_resource(ctx)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_b76382dc","line":1150,"updated":"2017-08-01 13:50:04.000000000","message":"Why did you remove my use of the actual hostnames?  I wanted to make sure that we were running two separate managers and not somehow ending up with two references to the same object (or configured the same). Logging the actual names helps ensure that.","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c5a2baff4676370434cd00c90e1796c807562305","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"        # periodics. This effectively allows us to test the matrix of timing"},{"line_number":1148,"context_line":"        # scenarios during move operations."},{"line_number":1149,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":1150,"context_line":"        LOG.info(\u0027Running periodic for host1\u0027)"},{"line_number":1151,"context_line":"        self.compute1.manager.update_available_resource(ctx)"},{"line_number":1152,"context_line":"        LOG.info(\u0027Running periodic for host2\u0027)"},{"line_number":1153,"context_line":"        self.compute2.manager.update_available_resource(ctx)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_9dc41d61","line":1150,"in_reply_to":"df3967d1_9d8c1d80","updated":"2017-08-01 14:56:36.000000000","message":"I put the compute manager\u0027s host back in there.","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bce07a5039324a55be8262a67f1f975b03b8dc91","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"        # periodics. This effectively allows us to test the matrix of timing"},{"line_number":1148,"context_line":"        # scenarios during move operations."},{"line_number":1149,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":1150,"context_line":"        LOG.info(\u0027Running periodic for host1\u0027)"},{"line_number":1151,"context_line":"        self.compute1.manager.update_available_resource(ctx)"},{"line_number":1152,"context_line":"        LOG.info(\u0027Running periodic for host2\u0027)"},{"line_number":1153,"context_line":"        self.compute2.manager.update_available_resource(ctx)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_9d8c1d80","line":1150,"in_reply_to":"df3967d1_b76382dc","updated":"2017-08-01 14:53:06.000000000","message":"Sorry, if I had known you were trying to suss out threading concerns I would have left this in...","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"be92e9a43205d043152ff9cb484d08abbac28fbd","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"        LOG.info(\u0027Finished with periodics\u0027)"},{"line_number":1155,"context_line":""},{"line_number":1156,"context_line":"    def test_resize_revert(self):"},{"line_number":1157,"context_line":"        self._test_resize_revert(dest_hostname\u003d\u0027host2\u0027)"},{"line_number":1158,"context_line":""},{"line_number":1159,"context_line":"    def test_resize_revert_reverse(self):"},{"line_number":1160,"context_line":"        # NOTE(danms): This will run the test the other direction,"}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_b7e6e243","line":1157,"range":{"start_line":1157,"start_character":48,"end_line":1157,"end_character":53},"updated":"2017-08-01 13:50:04.000000000","message":"Shouldn\u0027t all these hosts be using self.computeX.manager.host to make sure we track any changes to those made in setUp()? Not sure why hard-coding those strings helps here.","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bce07a5039324a55be8262a67f1f975b03b8dc91","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"        LOG.info(\u0027Finished with periodics\u0027)"},{"line_number":1155,"context_line":""},{"line_number":1156,"context_line":"    def test_resize_revert(self):"},{"line_number":1157,"context_line":"        self._test_resize_revert(dest_hostname\u003d\u0027host2\u0027)"},{"line_number":1158,"context_line":""},{"line_number":1159,"context_line":"    def test_resize_revert_reverse(self):"},{"line_number":1160,"context_line":"        # NOTE(danms): This will run the test the other direction,"}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_5dd59542","line":1157,"range":{"start_line":1157,"start_character":48,"end_line":1157,"end_character":53},"in_reply_to":"df3967d1_b7e6e243","updated":"2017-08-01 14:53:06.000000000","message":"because first_compute\u003dFalse was not as explicit as just saying which host was the destination.","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"be92e9a43205d043152ff9cb484d08abbac28fbd","unresolved":false,"context_lines":[{"line_number":1194,"context_line":"        self._run_periodics()"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        # Check usages on the selected host after boot"},{"line_number":1197,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(source_hostname)"},{"line_number":1198,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1199,"context_line":"        self.assertFlavorMatchesAllocation(flavor, source_usages)"},{"line_number":1200,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_b7bf02fa","line":1197,"updated":"2017-08-01 13:50:04.000000000","message":"This is wrong, IMHO. We should make sure we\u0027re getting the RP uuid of the host it landed on. We expect it landed on the one we asked for, but I think it\u0027s dangerous to just make this assumption.","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c5a2baff4676370434cd00c90e1796c807562305","unresolved":false,"context_lines":[{"line_number":1194,"context_line":"        self._run_periodics()"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        # Check usages on the selected host after boot"},{"line_number":1197,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(source_hostname)"},{"line_number":1198,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1199,"context_line":"        self.assertFlavorMatchesAllocation(flavor, source_usages)"},{"line_number":1200,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_1daeed97","line":1197,"in_reply_to":"df3967d1_1d44ad1a","updated":"2017-08-01 14:56:36.000000000","message":"Added a verification that the OS-EXT-SRV-ATTR:host \u003d\u003d source_hostname","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bce07a5039324a55be8262a67f1f975b03b8dc91","unresolved":false,"context_lines":[{"line_number":1194,"context_line":"        self._run_periodics()"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        # Check usages on the selected host after boot"},{"line_number":1197,"context_line":"        source_rp_uuid \u003d self._get_provider_uuid_by_host(source_hostname)"},{"line_number":1198,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1199,"context_line":"        self.assertFlavorMatchesAllocation(flavor, source_usages)"},{"line_number":1200,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"df3967d1_1d44ad1a","line":1197,"in_reply_to":"df3967d1_b7bf02fa","updated":"2017-08-01 14:53:06.000000000","message":"I suppose we could issue a separate check that the server\u0027s host attribute \u003d\u003d dest_hostname after boot.","commit_id":"f91ba29350c1dec3d0174a3aaff4187beb87e0cb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"06226dc3040ac2ddcbe8031f767809cf5e8f4aba","unresolved":false,"context_lines":[{"line_number":1194,"context_line":"            self.admin_api, created_server, \u0027ACTIVE\u0027)"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        # Verify that our source host is what the server ended up on"},{"line_number":1197,"context_line":"        self.assertEqual(server[\u0027OS-EXT-SRV-ATTR:host\u0027], source_hostname)"},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"        self._run_periodics()"},{"line_number":1200,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"df3967d1_60d54e43","line":1197,"range":{"start_line":1197,"start_character":25,"end_line":1197,"end_character":72},"updated":"2017-08-01 15:18:24.000000000","message":"These should be reversed since the mismatch error will give (expected, actual), making the output of this confusing.","commit_id":"1425096c3e9a4048438df40a52232571ddb331d0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b0c081e521de3ca28e0c1ff6938d18b03cf614c1","unresolved":false,"context_lines":[{"line_number":1194,"context_line":"            self.admin_api, created_server, \u0027ACTIVE\u0027)"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        # Verify that our source host is what the server ended up on"},{"line_number":1197,"context_line":"        self.assertEqual(server[\u0027OS-EXT-SRV-ATTR:host\u0027], source_hostname)"},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"        self._run_periodics()"},{"line_number":1200,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"df3967d1_a068d686","line":1197,"range":{"start_line":1197,"start_character":25,"end_line":1197,"end_character":72},"in_reply_to":"df3967d1_60d54e43","updated":"2017-08-01 15:20:11.000000000","message":"Done","commit_id":"1425096c3e9a4048438df40a52232571ddb331d0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3b0cc66fc45b894a6af3975e5b1166fc93f6da29","unresolved":false,"context_lines":[{"line_number":1177,"context_line":"        self.skipTest(\u0027Bug 1707071\u0027)"},{"line_number":1178,"context_line":"        self._test_resize_confirm(dest_hostname\u003d\u0027host2\u0027)"},{"line_number":1179,"context_line":""},{"line_number":1180,"context_line":"    def assertFlavorMatchesAllocation(self, flavor, allocation):"},{"line_number":1181,"context_line":"        self.assertEqual(flavor[\u0027vcpus\u0027], allocation[\u0027VCPU\u0027])"},{"line_number":1182,"context_line":"        self.assertEqual(flavor[\u0027ram\u0027], allocation[\u0027MEMORY_MB\u0027])"},{"line_number":1183,"context_line":"        self.assertEqual(flavor[\u0027disk\u0027], allocation[\u0027DISK_GB\u0027])"}],"source_content_type":"text/x-python","patch_set":21,"id":"df3967d1_400eca8d","line":1180,"range":{"start_line":1180,"start_character":26,"end_line":1180,"end_character":37},"updated":"2017-08-01 15:30:10.000000000","message":"This really should be assertFlavorMatchesUsage(), no?","commit_id":"8c92e155cc965a506cfded41cf8f545019e0b228"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e6f63b8c355efb43940a3089e77ab6929d12d78a","unresolved":false,"context_lines":[{"line_number":1364,"context_line":"            server[\u0027id\u0027], post, check_response_status\u003d[204])"},{"line_number":1365,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":1366,"context_line":""},{"line_number":1367,"context_line":"        # Fetch allocations post-confirm"},{"line_number":1368,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"        self._run_periodics()"},{"line_number":1371,"context_line":""},{"line_number":1372,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1373,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":21,"id":"df3967d1_80bcb2dc","line":1370,"range":{"start_line":1367,"start_character":0,"end_line":1370,"end_character":29},"updated":"2017-08-01 15:23:37.000000000","message":"If I move the run_periodics() before the _get_allocations_by_server_uuid() then the assert at L1382 fails. Is it part of the but 1707071 or it is a different one?\n\nIf it is part of 1707071 then I suggest to add a NOTE here too","commit_id":"8c92e155cc965a506cfded41cf8f545019e0b228"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"59419529a448837ec165430a50c3fcc71b8c939a","unresolved":false,"context_lines":[{"line_number":1364,"context_line":"            server[\u0027id\u0027], post, check_response_status\u003d[204])"},{"line_number":1365,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":1366,"context_line":""},{"line_number":1367,"context_line":"        # Fetch allocations post-confirm"},{"line_number":1368,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"        self._run_periodics()"},{"line_number":1371,"context_line":""},{"line_number":1372,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1373,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":21,"id":"df3967d1_e0c6de49","line":1370,"range":{"start_line":1367,"start_character":0,"end_line":1370,"end_character":29},"in_reply_to":"df3967d1_80bcb2dc","updated":"2017-08-01 15:27:24.000000000","message":"That\u0027s concerning. I don\u0027t see how getting the allocations would affect the getting of usages that are asserted on line 1382.","commit_id":"8c92e155cc965a506cfded41cf8f545019e0b228"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"eb68eee7c2b971bbcc01f8aedb55f0717a9b0d3c","unresolved":false,"context_lines":[{"line_number":1364,"context_line":"            server[\u0027id\u0027], post, check_response_status\u003d[204])"},{"line_number":1365,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":1366,"context_line":""},{"line_number":1367,"context_line":"        # Fetch allocations post-confirm"},{"line_number":1368,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"        self._run_periodics()"},{"line_number":1371,"context_line":""},{"line_number":1372,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1373,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":21,"id":"df3967d1_a07b36bc","line":1370,"range":{"start_line":1367,"start_character":0,"end_line":1370,"end_character":29},"in_reply_to":"df3967d1_a01c56c1","updated":"2017-08-01 15:37:11.000000000","message":"As per IRC. Let\u0027s add an assert before the _run_periodics() to check the allocations are correct and add a note that run_periodics() breaks that due to bug 1707071","commit_id":"8c92e155cc965a506cfded41cf8f545019e0b228"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"710b88423144f4186a362c2ea279b080633e9e4b","unresolved":false,"context_lines":[{"line_number":1364,"context_line":"            server[\u0027id\u0027], post, check_response_status\u003d[204])"},{"line_number":1365,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":1366,"context_line":""},{"line_number":1367,"context_line":"        # Fetch allocations post-confirm"},{"line_number":1368,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"        self._run_periodics()"},{"line_number":1371,"context_line":""},{"line_number":1372,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1373,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":21,"id":"df3967d1_0089e2c8","line":1370,"range":{"start_line":1367,"start_character":0,"end_line":1370,"end_character":29},"in_reply_to":"df3967d1_e0c6de49","updated":"2017-08-01 15:33:53.000000000","message":"So, I think this is correct. The assertion on 1386 is testing that the RT\u0027s periodics killed the allocation. We should put a separate assertion *above* line 1370 that tests that after CONFIRM_RESIZE, the allocation was correct...","commit_id":"8c92e155cc965a506cfded41cf8f545019e0b228"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"938b094dd7dd69a4ee246ca65d1ac869d93352ca","unresolved":false,"context_lines":[{"line_number":1364,"context_line":"            server[\u0027id\u0027], post, check_response_status\u003d[204])"},{"line_number":1365,"context_line":"        self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":1366,"context_line":""},{"line_number":1367,"context_line":"        # Fetch allocations post-confirm"},{"line_number":1368,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"        self._run_periodics()"},{"line_number":1371,"context_line":""},{"line_number":1372,"context_line":"        source_usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1373,"context_line":"        dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"}],"source_content_type":"text/x-python","patch_set":21,"id":"df3967d1_a01c56c1","line":1370,"range":{"start_line":1367,"start_character":0,"end_line":1370,"end_character":29},"in_reply_to":"df3967d1_e0c6de49","updated":"2017-08-01 15:30:52.000000000","message":"Sorry, pointed to the wrong assert. it fails the assert at L1386","commit_id":"8c92e155cc965a506cfded41cf8f545019e0b228"}]}
