)]}'
{"nova/tests/functional/regressions/test_bug_1718455.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"64d3bbdae8860829b51c90af24d16e85acfb4af1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.start_service(\u0027conductor\u0027)"},{"line_number":58,"context_line":"        self.start_service(\u0027scheduler\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # set_nodes() is needed to have each compute service return a"},{"line_number":63,"context_line":"        # different nodename, so we get two hosts in the list of candidates"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_98822ac8","line":60,"updated":"2017-09-21 15:15:43.000000000","message":"nit: This cleanup should go right after nova.tests.unit.image.fake.stub_out_image_service(self).","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"64d3bbdae8860829b51c90af24d16e85acfb4af1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.flavor1 \u003d flavors[0]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _boot_servers(self, num_servers\u003d1):"},{"line_number":81,"context_line":"        server_req \u003d self._build_minimal_create_server_request("},{"line_number":82,"context_line":"            self.api, \u0027some-server\u0027, flavor_id\u003dself.flavor1[\u0027id\u0027],"},{"line_number":83,"context_line":"            image_uuid\u003d\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":84,"context_line":"            networks\u003d\u0027none\u0027)"},{"line_number":85,"context_line":"        if num_servers \u003e 1:"},{"line_number":86,"context_line":"            server_req.update({\u0027min_count\u0027: str(num_servers)})"},{"line_number":87,"context_line":"        created_server_1 \u003d self.api.post_server({\u0027server\u0027: server_req})"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_78609633","line":84,"range":{"start_line":81,"start_character":21,"end_line":84,"end_character":28},"updated":"2017-09-21 15:15:43.000000000","message":"Don\u0027t you want to force the servers to the same host so that you can disable the other host before attempting the live migration?","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"64d3bbdae8860829b51c90af24d16e85acfb4af1","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            networks\u003d\u0027none\u0027)"},{"line_number":85,"context_line":"        if num_servers \u003e 1:"},{"line_number":86,"context_line":"            server_req.update({\u0027min_count\u0027: str(num_servers)})"},{"line_number":87,"context_line":"        created_server_1 \u003d self.api.post_server({\u0027server\u0027: server_req})"},{"line_number":88,"context_line":"        return self._wait_for_state_change("},{"line_number":89,"context_line":"            self.api, created_server_1, \u0027ACTIVE\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_live_migrate_one_instance(self):"},{"line_number":92,"context_line":"        # Boot a server"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_18599a59","line":89,"range":{"start_line":87,"start_character":8,"end_line":89,"end_character":49},"updated":"2017-09-21 15:15:43.000000000","message":"nit: this could be racy since we\u0027re not waiting for both servers to be ACTIVE. The best way to do this would be to get a reservation ID back, then list servers using that reservation ID and then loop on those and wait for them to be ACTIVE.\n\nOr you could just use \"self.api.get_servers()\" like you are below.","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b43d2f6cdef5c319d07fece65ba8157b35336f30","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        return self._wait_for_state_change("},{"line_number":89,"context_line":"            self.api, created_server_1, \u0027ACTIVE\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_live_migrate_one_instance(self):"},{"line_number":92,"context_line":"        # Boot a server"},{"line_number":93,"context_line":"        self._boot_servers(num_servers\u003d2)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_2d4ae726","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":38},"updated":"2017-09-21 12:21:25.000000000","message":"This test name doesn\u0027t show the main purpose of this.\nHow about test_live_migrate_one_instance_on_error or something?","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6e0a00e4149464e7298abcd70697177dce326233","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        return self._wait_for_state_change("},{"line_number":89,"context_line":"            self.api, created_server_1, \u0027ACTIVE\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_live_migrate_one_instance(self):"},{"line_number":92,"context_line":"        # Boot a server"},{"line_number":93,"context_line":"        self._boot_servers(num_servers\u003d2)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_ce03410f","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":38},"in_reply_to":"9f5c4f37_2d4ae726","updated":"2017-09-21 13:49:04.000000000","message":"Well, I think the docstring above makes it clear that we will first test a failure case, so the next patch with the fix will modify that test to be positive eventually.","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"64d3bbdae8860829b51c90af24d16e85acfb4af1","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            self.api, created_server_1, \u0027ACTIVE\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_live_migrate_one_instance(self):"},{"line_number":92,"context_line":"        # Boot a server"},{"line_number":93,"context_line":"        self._boot_servers(num_servers\u003d2)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        servers \u003d self.api.get_servers()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_d830a20a","line":92,"range":{"start_line":92,"start_character":10,"end_line":92,"end_character":23},"updated":"2017-09-21 15:15:43.000000000","message":"nit: boot two servers in a multi-create request","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b43d2f6cdef5c319d07fece65ba8157b35336f30","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        # Initiate live migration for that instance by targeting the other host"},{"line_number":103,"context_line":"        post \u003d {\u0027os-migrateLive\u0027: {\u0027block_migration\u0027: \u0027auto\u0027,"},{"line_number":104,"context_line":"                                   \u0027host\u0027: target_host}}"},{"line_number":105,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_4dd07b51","line":105,"range":{"start_line":105,"start_character":8,"end_line":105,"end_character":55},"updated":"2017-09-21 12:21:25.000000000","message":"Can we add a return code check of this call to verify an error happens?\nCurrent test scenario is difficult to understand an error happens during the migration.","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6e0a00e4149464e7298abcd70697177dce326233","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        # Initiate live migration for that instance by targeting the other host"},{"line_number":103,"context_line":"        post \u003d {\u0027os-migrateLive\u0027: {\u0027block_migration\u0027: \u0027auto\u0027,"},{"line_number":104,"context_line":"                                   \u0027host\u0027: target_host}}"},{"line_number":105,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_4e187180","line":105,"range":{"start_line":105,"start_character":8,"end_line":105,"end_character":55},"in_reply_to":"9f5c4f37_4dd07b51","updated":"2017-09-21 13:49:04.000000000","message":"The action itself returns a HTTP200 AFAIR given it\u0027s an async call to the scheduler that bubbles up the exception to the conductor hence setting the migration to the error state but the instance being still ACTIVE.","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"64d3bbdae8860829b51c90af24d16e85acfb4af1","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        # Initiate live migration for that instance by targeting the other host"},{"line_number":103,"context_line":"        post \u003d {\u0027os-migrateLive\u0027: {\u0027block_migration\u0027: \u0027auto\u0027,"},{"line_number":104,"context_line":"                                   \u0027host\u0027: target_host}}"},{"line_number":105,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_1b02b4b5","line":105,"range":{"start_line":105,"start_character":8,"end_line":105,"end_character":55},"in_reply_to":"9f5c4f37_4e187180","updated":"2017-09-21 15:15:43.000000000","message":"Some documentation could be useful here. Since this is using the latest microversion, it\u0027s using \u003e\u003d2.34 which makes the live migration pre-checks in conductor asynchronous. If we hit a NoValidHost in conductor with microversion \u003c 2.34, it would be a 400 error. So Sylvain is right, except it\u0027s actually a 202 response.\n\nWhen the async operation in conductor fails with NoValidHost, the instance is left in ACTIVE state and the migration record status is set to \"error\":\n\nhttps://github.com/openstack/nova/blob/b926a1d4df86cbd48ba2b8b371454ccef96383c7/nova/conductor/manager.py#L439","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"64d3bbdae8860829b51c90af24d16e85acfb4af1","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                                   \u0027host\u0027: target_host}}"},{"line_number":105,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        # Verify that the migration failed as the instance is still on the"},{"line_number":110,"context_line":"        # source node."}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_7be1b0fe","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":72},"updated":"2017-09-21 15:15:43.000000000","message":"This seems racy...I don\u0027t think we actually change the vm_state while it\u0027s live migrating. We\u0027d change the task_state, so either check for task_state is None or just remove this and poll until the migration status is error, like I do in this test:\n\nhttps://github.com/openstack/nova/blob/b926a1d4df86cbd48ba2b8b371454ccef96383c7/nova/tests/functional/test_servers.py#L2122","commit_id":"59f4e5d273be73e075d9dc20899e609c441cac3a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"55b0f18a76abee5c06d952accf8ab8d2052a0d13","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    When creating multiple instances at the same time, the RequestSpec record"},{"line_number":29,"context_line":"    is persisting the number of concurrent instances."},{"line_number":30,"context_line":"    Once we want to move or rebuild one of them, the scheduler shouldn\u0027t"},{"line_number":31,"context_line":"    lookup that specific record unless we don\u0027t pass a list of instance UUIDs"},{"line_number":32,"context_line":"    to move. It was partially fixed by bug #1708961 but we forgot to amend"},{"line_number":33,"context_line":"    some place in the scheduler so that the right number of hosts was returned"},{"line_number":34,"context_line":"    to the scheduler method calling both the Placement API and filters/weighers"},{"line_number":35,"context_line":"    but we were verifying that returned size of hosts against a wrong number,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f5c4f37_672c7347","line":32,"range":{"start_line":30,"start_character":4,"end_line":32,"end_character":12},"updated":"2017-09-21 17:29:31.000000000","message":"Reword the above to this:\n\n\"When moving one of those instances, the scheduler should not include num_instances \u003e 1 in the request spec.\"","commit_id":"f16f034d7e3e281e9fa232a0911ccacc704a3eaf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"55b0f18a76abee5c06d952accf8ab8d2052a0d13","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    is persisting the number of concurrent instances."},{"line_number":30,"context_line":"    Once we want to move or rebuild one of them, the scheduler shouldn\u0027t"},{"line_number":31,"context_line":"    lookup that specific record unless we don\u0027t pass a list of instance UUIDs"},{"line_number":32,"context_line":"    to move. It was partially fixed by bug #1708961 but we forgot to amend"},{"line_number":33,"context_line":"    some place in the scheduler so that the right number of hosts was returned"},{"line_number":34,"context_line":"    to the scheduler method calling both the Placement API and filters/weighers"},{"line_number":35,"context_line":"    but we were verifying that returned size of hosts against a wrong number,"},{"line_number":36,"context_line":"    which is the number of instances created concurrently."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    That test will create 2 concurrent instances and verify that when"},{"line_number":39,"context_line":"    live-migrating one of them, we end up with a NoValidHost exception."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f5c4f37_07f017c9","line":36,"range":{"start_line":32,"start_character":13,"end_line":36,"end_character":58},"updated":"2017-09-21 17:29:31.000000000","message":"This last sentence is very difficult to read. How about this instead?\n\n\"Ensure that we set the RequestSpec.num_instances attribute to 1 when moving an instance.\"","commit_id":"f16f034d7e3e281e9fa232a0911ccacc704a3eaf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b05f103b8e3f4d826da2b1c592e3823385296955","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    is persisting the number of concurrent instances."},{"line_number":30,"context_line":"    Once we want to move or rebuild one of them, the scheduler shouldn\u0027t"},{"line_number":31,"context_line":"    lookup that specific record unless we don\u0027t pass a list of instance UUIDs"},{"line_number":32,"context_line":"    to move. It was partially fixed by bug #1708961 but we forgot to amend"},{"line_number":33,"context_line":"    some place in the scheduler so that the right number of hosts was returned"},{"line_number":34,"context_line":"    to the scheduler method calling both the Placement API and filters/weighers"},{"line_number":35,"context_line":"    but we were verifying that returned size of hosts against a wrong number,"},{"line_number":36,"context_line":"    which is the number of instances created concurrently."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    That test will create 2 concurrent instances and verify that when"},{"line_number":39,"context_line":"    live-migrating one of them, we end up with a NoValidHost exception."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f5c4f37_477def1a","line":36,"range":{"start_line":32,"start_character":13,"end_line":36,"end_character":58},"in_reply_to":"9f5c4f37_07f017c9","updated":"2017-09-21 17:31:13.000000000","message":"The fix isn\u0027t actually changing RequestSpec.num_instances I don\u0027t think, it\u0027s that we consult the length of instance_uuids in the scheduler rather than RequestSpec.num_instances. Either could work though. Changing RequestSpec.num_instances would have be done in several places though (cold migrate, live migrate, evacuate and unshelve).","commit_id":"f16f034d7e3e281e9fa232a0911ccacc704a3eaf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e1ac16d947d0112427b1451b4a355d86d766bc6b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    is persisting the number of concurrent instances."},{"line_number":30,"context_line":"    Once we want to move or rebuild one of them, the scheduler shouldn\u0027t"},{"line_number":31,"context_line":"    lookup that specific record unless we don\u0027t pass a list of instance UUIDs"},{"line_number":32,"context_line":"    to move. It was partially fixed by bug #1708961 but we forgot to amend"},{"line_number":33,"context_line":"    some place in the scheduler so that the right number of hosts was returned"},{"line_number":34,"context_line":"    to the scheduler method calling both the Placement API and filters/weighers"},{"line_number":35,"context_line":"    but we were verifying that returned size of hosts against a wrong number,"},{"line_number":36,"context_line":"    which is the number of instances created concurrently."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    That test will create 2 concurrent instances and verify that when"},{"line_number":39,"context_line":"    live-migrating one of them, we end up with a NoValidHost exception."}],"source_content_type":"text/x-python","patch_set":2,"id":"7f515b1d_886425bb","line":36,"range":{"start_line":32,"start_character":13,"end_line":36,"end_character":58},"in_reply_to":"9f5c4f37_477def1a","updated":"2017-09-22 09:37:06.000000000","message":"Yeah, to make it clear, I provided a quick fix so it can be easily backportable since it only touches the scheduler code while what you propose is needing a lot of modifications in conductor calls.\n\nThat said, looks maybe a good talk for changing that in a follow-up change and maybe deprecate num_instances field which is now errorprone and meaningless in 80% of cases (ie. all move operations) and only right when you create.","commit_id":"f16f034d7e3e281e9fa232a0911ccacc704a3eaf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"55b0f18a76abee5c06d952accf8ab8d2052a0d13","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    which is the number of instances created concurrently."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    That test will create 2 concurrent instances and verify that when"},{"line_number":39,"context_line":"    live-migrating one of them, we end up with a NoValidHost exception."},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f5c4f37_87b527f1","line":39,"range":{"start_line":39,"start_character":33,"end_line":39,"end_character":71},"updated":"2017-09-21 17:29:31.000000000","message":"why? don\u0027t we want to end up with the instance successfully migrated?","commit_id":"f16f034d7e3e281e9fa232a0911ccacc704a3eaf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a72b529c7b68394780656af62559fa8b8c3f6f6a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    which is the number of instances created concurrently."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    That test will create 2 concurrent instances and verify that when"},{"line_number":39,"context_line":"    live-migrating one of them, we end up with a NoValidHost exception."},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    microversion \u003d \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f5c4f37_c78e7f26","line":39,"range":{"start_line":39,"start_character":33,"end_line":39,"end_character":71},"in_reply_to":"9f5c4f37_87b527f1","updated":"2017-09-21 17:32:07.000000000","message":"No. Check out the bug report, it\u0027s pretty clear there, but it\u0027s that we hit this and things explode:\n\nhttps://github.com/openstack/nova/blob/f211c9a9d96a65dc78ee690aa9e83005df2e3fba/nova/scheduler/filter_scheduler.py#L86","commit_id":"f16f034d7e3e281e9fa232a0911ccacc704a3eaf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f832700883ffd7a98feb47b34d9172876809e4ef","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                                                       \u0027ACTIVE\u0027)"},{"line_number":96,"context_line":"        return servers"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _wait_for_migration_status(self, server, expected_status):"},{"line_number":99,"context_line":"        \"\"\"Waits for a migration record with the given status to be found"},{"line_number":100,"context_line":"        for the given server, else the test fails. The migration record, if"},{"line_number":101,"context_line":"        found, is returned."}],"source_content_type":"text/x-python","patch_set":2,"id":"7f515b1d_8cd68bf1","line":98,"updated":"2017-09-21 20:39:59.000000000","message":"We could also pull this into InstanceHelperMixin since that other test is using it, but we can save that for later cleanup.","commit_id":"f16f034d7e3e281e9fa232a0911ccacc704a3eaf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b364670dcad8d6ab9f74575d4c73d816692f06bf","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    When creating multiple instances at the same time, the RequestSpec record"},{"line_number":29,"context_line":"    is persisting the number of concurrent instances."},{"line_number":30,"context_line":"    When moving one of those instances, the scheduler should not include"},{"line_number":31,"context_line":"    num_instances \u003e 1 in the request spec."},{"line_number":32,"context_line":"    It was partially fixed by bug #1708961 but we forgot to amend"},{"line_number":33,"context_line":"    some place in the scheduler so that the right number of hosts was returned"},{"line_number":34,"context_line":"    to the scheduler method calling both the Placement API and filters/weighers"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_489d0d58","line":31,"updated":"2017-09-22 09:44:52.000000000","message":"Well, technically, the bugfix is simply just having the scheduler not looking up at the wrong field. Not sure we should mention that now even if I think it\u0027s a good idea (as I said in my ealier comment, deprecating num_instances seems a far better idea).","commit_id":"016d3efa393f864585ecc13317e46415a5cba825"}]}
