)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ee8f962680254f066917b990f0623212738dec1e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sylvain Bauza \u003csbauza@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-09-21 19:17:45 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix definitely move single instance when created concurrently"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When we fixed the problem in If7da79356174be57481ef246618221e3b2ff8200"},{"line_number":10,"context_line":"we forgot to modify a specific check in select_destinations()."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f5c4f37_6788f31e","line":7,"range":{"start_line":7,"start_character":1,"end_line":7,"end_character":61},"updated":"2017-09-21 17:35:18.000000000","message":"The above isn\u0027t a sentence or even a partial sentence. I think you\u0027re trying to say this?\n\n Ensure instance can migrate when launched in a group","commit_id":"559796642291e9f2886ca03da22f4e8f8713feb5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bffd8857f443558d262e218b56e471b9f0e578c2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sylvain Bauza \u003csbauza@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-09-21 19:17:45 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix definitely move single instance when created concurrently"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When we fixed the problem in If7da79356174be57481ef246618221e3b2ff8200"},{"line_number":10,"context_line":"we forgot to modify a specific check in select_destinations()."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7f515b1d_9bf91f4f","line":7,"range":{"start_line":7,"start_character":1,"end_line":7,"end_character":61},"in_reply_to":"9f5c4f37_6788f31e","updated":"2017-09-21 23:24:01.000000000","message":"I\u0027d avoid the word \"group\" here since that might imply server groups. Maybe \"Fix multi-created instance NoValidHost during migration\"?","commit_id":"559796642291e9f2886ca03da22f4e8f8713feb5"}],"nova/scheduler/filter_scheduler.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ee8f962680254f066917b990f0623212738dec1e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # instances. This is incorrect when doing a move or resize operation,"},{"line_number":84,"context_line":"        # so prefer the length of instance_uuids unless it is None."},{"line_number":85,"context_line":"        num_instances \u003d (len(instance_uuids) if instance_uuids"},{"line_number":86,"context_line":"                         else spec_obj.num_instances)"},{"line_number":87,"context_line":"        selected_hosts \u003d self._schedule(context, spec_obj, instance_uuids,"},{"line_number":88,"context_line":"            alloc_reqs_by_rp_uuid, provider_summaries)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f5c4f37_679d9358","line":86,"updated":"2017-09-21 17:35:18.000000000","message":"Why do we even need spec_obj.num_instances any more? Can\u0027t we rely on instance_uuids being a non-empty list now?","commit_id":"559796642291e9f2886ca03da22f4e8f8713feb5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"92bad9bc12fb3de030ee750c338653ff34c0fc9f","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # instances. This is incorrect when doing a move or resize operation,"},{"line_number":84,"context_line":"        # so prefer the length of instance_uuids unless it is None."},{"line_number":85,"context_line":"        num_instances \u003d (len(instance_uuids) if instance_uuids"},{"line_number":86,"context_line":"                         else spec_obj.num_instances)"},{"line_number":87,"context_line":"        selected_hosts \u003d self._schedule(context, spec_obj, instance_uuids,"},{"line_number":88,"context_line":"            alloc_reqs_by_rp_uuid, provider_summaries)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_9b9eae05","line":86,"in_reply_to":"7f515b1d_5bcba71d","updated":"2017-09-22 12:54:27.000000000","message":"Oh yeah, we have to backport this fix, so if we make the assumption that instance_uuids will always be provided, we have to do that in a separate queens-only change.","commit_id":"559796642291e9f2886ca03da22f4e8f8713feb5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f26b179843b6101f107731380105c2a89bc228f","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # instances. This is incorrect when doing a move or resize operation,"},{"line_number":84,"context_line":"        # so prefer the length of instance_uuids unless it is None."},{"line_number":85,"context_line":"        num_instances \u003d (len(instance_uuids) if instance_uuids"},{"line_number":86,"context_line":"                         else spec_obj.num_instances)"},{"line_number":87,"context_line":"        selected_hosts \u003d self._schedule(context, spec_obj, instance_uuids,"},{"line_number":88,"context_line":"            alloc_reqs_by_rp_uuid, provider_summaries)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_5bcba71d","line":86,"in_reply_to":"9f5c4f37_679d9358","updated":"2017-09-21 23:21:16.000000000","message":"We have the same thing on L171 so that\u0027s probably why. But we should consider just assuming that instance_uuids will be provided by now assuming conductor is upgraded at this point.\n\nAlso L186.","commit_id":"559796642291e9f2886ca03da22f4e8f8713feb5"}],"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":"4eba5fa329d99b4c12e009724e55255d779ff908","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        # Poll the migration until it is done."},{"line_number":135,"context_line":"        migration \u003d self._wait_for_migration_status(server, \u0027running\u0027)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        self.assertEqual(\u0027live-migration\u0027, migration[\u0027migration_type\u0027])"},{"line_number":138,"context_line":"        self.assertEqual(original_host, migration[\u0027source_compute\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_d12ac5e5","line":135,"range":{"start_line":135,"start_character":61,"end_line":135,"end_character":68},"updated":"2017-09-22 13:54:19.000000000","message":"Running is not done. Hence the race.","commit_id":"f40a2f9015d7153337de50c2a1f098f43a2bb256"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4eba5fa329d99b4c12e009724e55255d779ff908","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        # Verify that the migration succeeded as the instance is now on the"},{"line_number":141,"context_line":"        # destination node."},{"line_number":142,"context_line":"        server \u003d self.api.get_server(server[\u0027id\u0027])"},{"line_number":143,"context_line":"        self.assertEqual(target_host, server[\u0027OS-EXT-SRV-ATTR:host\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_91ffad66","line":143,"updated":"2017-09-22 13:54:19.000000000","message":"You must have a race here or something, the functional job passed on py27 but failed on py35:\n\nhttp://logs.openstack.org/93/506093/4/check/gate-nova-tox-functional-py35-ubuntu-xenial/02b09ca/console.html#_2017-09-21_23_40_45_073107","commit_id":"f40a2f9015d7153337de50c2a1f098f43a2bb256"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0aa8fde012651a170e8cfcef9c703337e6e9d1e9","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":5,"id":"7f515b1d_a2ce3c2a","line":32,"range":{"start_line":30,"start_character":4,"end_line":32,"end_character":12},"updated":"2017-09-28 15:13:18.000000000","message":"This was changed back to the confusing version, should be \n\n\"When moving one of those instances, the scheduler should not include num_instances \u003e 1 in the request spec.\".","commit_id":"7fbd119086530aadd677352961bf9db797c09e84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0aa8fde012651a170e8cfcef9c703337e6e9d1e9","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        # Poll the migration until it is done."},{"line_number":135,"context_line":"        migration \u003d self._wait_for_migration_status(server, \u0027completed\u0027)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        self.assertEqual(\u0027live-migration\u0027, migration[\u0027migration_type\u0027])"},{"line_number":138,"context_line":"        self.assertEqual(original_host, migration[\u0027source_compute\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_4202e83e","line":135,"range":{"start_line":135,"start_character":61,"end_line":135,"end_character":70},"updated":"2017-09-28 15:13:18.000000000","message":"Hmm, this is timing out:\n\nhttp://logs.openstack.org/93/506093/5/check/gate-nova-tox-functional-ubuntu-xenial/dd893ff/console.html#_2017-09-28_14_43_40_240800\n\nBut I see from the logs:\n\n\"2017-09-28 14:40:42,023 INFO [nova.compute.manager] Migrating instance to host2 finished successfully.\"\n\nSo then migrate_data that is sent from the fake driver must not have the migration object set in it?","commit_id":"7fbd119086530aadd677352961bf9db797c09e84"}],"nova/virt/fake.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ee8f962680254f066917b990f0623212738dec1e","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        data.graphics_listen_addr_vnc \u003d CONF.vnc.server_listen"},{"line_number":510,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":511,"context_line":"        data.serial_listen_addr \u003d None"},{"line_number":512,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":513,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":514,"context_line":"        if block_migration is not None:"},{"line_number":515,"context_line":"            data.block_migration \u003d block_migration"},{"line_number":516,"context_line":"        if disk_over_commit is not None:"},{"line_number":517,"context_line":"            data.disk_over_commit \u003d disk_over_commit"},{"line_number":518,"context_line":"        data.disk_available_mb \u003d 100000"},{"line_number":519,"context_line":"        data.is_shared_block_storage \u003d True"},{"line_number":520,"context_line":"        data.is_shared_instance_path \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f5c4f37_47d04ff8","line":517,"range":{"start_line":512,"start_character":0,"end_line":517,"end_character":52},"updated":"2017-09-21 17:35:18.000000000","message":"I\u0027m not sure why the above changes are in this patch. I read your commit message again but I still don\u0027t understand.","commit_id":"559796642291e9f2886ca03da22f4e8f8713feb5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"53a83655dcd38006051d5035ff690ae1d51e9e2a","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        data.graphics_listen_addr_vnc \u003d CONF.vnc.server_listen"},{"line_number":511,"context_line":"        data.graphics_listen_addr_spice \u003d CONF.spice.server_listen"},{"line_number":512,"context_line":"        data.serial_listen_addr \u003d None"},{"line_number":513,"context_line":"        # Notes(eliqiao): block_migration and disk_over_commit are not"},{"line_number":514,"context_line":"        # nullable, so just don\u0027t set them if they are None"},{"line_number":515,"context_line":"        if block_migration is not None:"},{"line_number":516,"context_line":"            data.block_migration \u003d block_migration"},{"line_number":517,"context_line":"        if disk_over_commit is not None:"},{"line_number":518,"context_line":"            data.disk_over_commit \u003d disk_over_commit"},{"line_number":519,"context_line":"        data.disk_available_mb \u003d 100000"},{"line_number":520,"context_line":"        data.is_shared_block_storage \u003d True"},{"line_number":521,"context_line":"        data.is_shared_instance_path \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_fd15f9e5","line":518,"range":{"start_line":513,"start_character":8,"end_line":518,"end_character":52},"updated":"2017-09-28 15:40:26.000000000","message":"I\u0027m not sure why this needed to change.\n\n\u003clater\u003e\n\nI guess because you\u0027re using \"\u0027block_migration\u0027: \u0027auto\u0027\" in the API request which sends block_migration\u003dNone.","commit_id":"7fbd119086530aadd677352961bf9db797c09e84"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ab53da0944f9e422307307559bc7aa915d69ae55","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        if block_migration is not None:"},{"line_number":516,"context_line":"            data.block_migration \u003d block_migration"},{"line_number":517,"context_line":"        if disk_over_commit is not None:"},{"line_number":518,"context_line":"            data.disk_over_commit \u003d disk_over_commit"},{"line_number":519,"context_line":"        data.disk_available_mb \u003d 100000"},{"line_number":520,"context_line":"        data.is_shared_block_storage \u003d True"},{"line_number":521,"context_line":"        data.is_shared_instance_path \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_dd323d10","line":518,"updated":"2017-09-28 16:03:28.000000000","message":"What does the above have to do with this fix?","commit_id":"87ca0d8af0d6440a7effd4da9e47321b3a335442"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"16b39322e1fb77de266bc3ddae2fb0c5d28c3580","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        if block_migration is not None:"},{"line_number":516,"context_line":"            data.block_migration \u003d block_migration"},{"line_number":517,"context_line":"        if disk_over_commit is not None:"},{"line_number":518,"context_line":"            data.disk_over_commit \u003d disk_over_commit"},{"line_number":519,"context_line":"        data.disk_available_mb \u003d 100000"},{"line_number":520,"context_line":"        data.is_shared_block_storage \u003d True"},{"line_number":521,"context_line":"        data.is_shared_instance_path \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_d2a32eff","line":518,"in_reply_to":"7f515b1d_287d7c6d","updated":"2017-09-29 18:05:24.000000000","message":"If you pass block_migration\u003dauto to the API, eventually block_migration\u003dNone is passed in here, and you can\u0027t assign that to the MigrateData object because block_migration in that object isn\u0027t a nullable field. Remove this and run the test and see what happens.","commit_id":"87ca0d8af0d6440a7effd4da9e47321b3a335442"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9893cc915eb2b996958ed26f8f6c0f63648b4994","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        if block_migration is not None:"},{"line_number":516,"context_line":"            data.block_migration \u003d block_migration"},{"line_number":517,"context_line":"        if disk_over_commit is not None:"},{"line_number":518,"context_line":"            data.disk_over_commit \u003d disk_over_commit"},{"line_number":519,"context_line":"        data.disk_available_mb \u003d 100000"},{"line_number":520,"context_line":"        data.is_shared_block_storage \u003d True"},{"line_number":521,"context_line":"        data.is_shared_instance_path \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_287d7c6d","line":518,"in_reply_to":"7f515b1d_dd323d10","updated":"2017-09-29 09:47:11.000000000","message":"Jay, look at the commit msg. The problem is that the fake driver is bonkers when it\u0027s used for live-migrating as it\u0027s missing a few stuff like the above since we now pass a nullable block_migration attribute.\n\nSee my commit msg, I tried to explain why.","commit_id":"87ca0d8af0d6440a7effd4da9e47321b3a335442"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ab53da0944f9e422307307559bc7aa915d69ae55","unresolved":false,"context_lines":[{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def pre_live_migration(self, context, instance, block_device_info,"},{"line_number":538,"context_line":"                           network_info, disk_info, migrate_data):"},{"line_number":539,"context_line":"        return migrate_data"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    def unfilter_instance(self, instance, network_info):"},{"line_number":542,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_1d57b528","line":539,"updated":"2017-09-28 16:03:28.000000000","message":"What does this have to do with this fix?","commit_id":"87ca0d8af0d6440a7effd4da9e47321b3a335442"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"16b39322e1fb77de266bc3ddae2fb0c5d28c3580","unresolved":false,"context_lines":[{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def pre_live_migration(self, context, instance, block_device_info,"},{"line_number":538,"context_line":"                           network_info, disk_info, migrate_data):"},{"line_number":539,"context_line":"        return migrate_data"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    def unfilter_instance(self, instance, network_info):"},{"line_number":542,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_b2a6720e","line":539,"in_reply_to":"7f515b1d_1d57b528","updated":"2017-09-29 18:05:24.000000000","message":"All virt drivers should be doing this. If you don\u0027t, the migrate_data object is lost and doesn\u0027t come out during post_live_migration, which is where the migration record status is updated to \u0027completed\u0027 which is what the functional test is waiting for to know when the live migration is done.","commit_id":"87ca0d8af0d6440a7effd4da9e47321b3a335442"}]}
