)]}'
{"doc/notification_samples/service-update.json":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cb1d1feb7b2c16a1a0535a174b23bd2592fb4e54","unresolved":false,"context_lines":[{"line_number":13,"context_line":"            \"disabled_reason\": null,"},{"line_number":14,"context_line":"            \"report_count\": 1,"},{"line_number":15,"context_line":"            \"forced_down\": false,"},{"line_number":16,"context_line":"            \"version\": 23,"},{"line_number":17,"context_line":"            \"availability_zone\": null,"},{"line_number":18,"context_line":"            \"uuid\": \"fa69c544-906b-4a6a-a9c6-c1f7a8078c73\""},{"line_number":19,"context_line":"        }"}],"source_content_type":"application/json","patch_set":4,"id":"7f287b81_7ccadba1","line":16,"updated":"2017-09-01 07:35:21.000000000","message":"+1 Unfortunately service version bump still needs a manual change in the notification sample","commit_id":"86157ef6c6b6b04aa3540f72c1f682bd17918b43"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c112afd6324241db309d6ff64667c883d94e0da1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"            \"disabled_reason\": null,"},{"line_number":14,"context_line":"            \"report_count\": 1,"},{"line_number":15,"context_line":"            \"forced_down\": false,"},{"line_number":16,"context_line":"            \"version\": 23,"},{"line_number":17,"context_line":"            \"availability_zone\": null,"},{"line_number":18,"context_line":"            \"uuid\": \"fa69c544-906b-4a6a-a9c6-c1f7a8078c73\""},{"line_number":19,"context_line":"        }"}],"source_content_type":"application/json","patch_set":4,"id":"7f287b81_a5a4a2ba","line":16,"in_reply_to":"7f287b81_7ccadba1","updated":"2017-09-01 10:17:09.000000000","message":"I pushed a test improvement to avoid this in the future: https://review.openstack.org/#/c/499957/","commit_id":"86157ef6c6b6b04aa3540f72c1f682bd17918b43"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"43ec8bb21b127539d2be998ff21e8621aacd2c53","unresolved":false,"context_lines":[{"line_number":13,"context_line":"            \"disabled_reason\": null,"},{"line_number":14,"context_line":"            \"report_count\": 1,"},{"line_number":15,"context_line":"            \"forced_down\": false,"},{"line_number":16,"context_line":"            \"version\": 23,"},{"line_number":17,"context_line":"            \"availability_zone\": null,"},{"line_number":18,"context_line":"            \"uuid\": \"fa69c544-906b-4a6a-a9c6-c1f7a8078c73\""},{"line_number":19,"context_line":"        }"}],"source_content_type":"application/json","patch_set":15,"id":"7f515b1d_2e08642b","line":16,"updated":"2017-10-05 16:17:34.000000000","message":"As the patch https://review.openstack.org/#/c/499957/ has been merged you don\u0027t need this change any more. (But it also does not cause any harm if bumped)","commit_id":"4c6b68d1f51ae5c0234f9f0d2274827e9a1a33bb"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1139fb209fcde51a43a3cac7843cfdf6c99b2567","unresolved":false,"context_lines":[{"line_number":3887,"context_line":"        if not isinstance(instance_type, objects.Flavor):"},{"line_number":3888,"context_line":"            instance_type \u003d objects.Flavor.get_by_id(context,"},{"line_number":3889,"context_line":"                                                     instance_type[\u0027id\u0027])"},{"line_number":3890,"context_line":"        with self._error_out_instance_on_exception(context, instance):"},{"line_number":3891,"context_line":"            compute_utils.notify_usage_exists(self.notifier, context, instance,"},{"line_number":3892,"context_line":"                                              current_period\u003dTrue)"},{"line_number":3893,"context_line":"            self._notify_about_instance_usage("}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_59bef3ff","line":3890,"range":{"start_line":3890,"start_character":18,"end_line":3890,"end_character":50},"updated":"2017-10-04 16:40:30.000000000","message":"Unrelated, but if prep_resize fails and we don\u0027t reschedule, I don\u0027t see where we ever set the migration status to \u0027failed\u0027. I would think drop_move_claim() would be doing it somewhere but I don\u0027t see that.\n\nIf we get to the point of casting to resize_instance on the source node then we\u0027ll set the migration status to \u0027error\u0027, but we don\u0027t if prep_resize fails before getting to resize_instance.\n\nOHHHH I know why, because before this change we never had the migration record before the RT move_claim, so things like UnableToMigrateToSelf could fail and we wouldn\u0027t have a migration to set to error state.\n\nSo, we probably need to use the errors_out_migration_ctxt like in resize_instance.","commit_id":"f15abc3dd3ab03795ed88c07e422ccc6e3b5e0d1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"08e11f3b97796c678d5dfaac4fb9630cdab205f9","unresolved":false,"context_lines":[{"line_number":3887,"context_line":"        if not isinstance(instance_type, objects.Flavor):"},{"line_number":3888,"context_line":"            instance_type \u003d objects.Flavor.get_by_id(context,"},{"line_number":3889,"context_line":"                                                     instance_type[\u0027id\u0027])"},{"line_number":3890,"context_line":"        with self._error_out_instance_on_exception(context, instance):"},{"line_number":3891,"context_line":"            compute_utils.notify_usage_exists(self.notifier, context, instance,"},{"line_number":3892,"context_line":"                                              current_period\u003dTrue)"},{"line_number":3893,"context_line":"            self._notify_about_instance_usage("}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_448e06d1","line":3890,"range":{"start_line":3890,"start_character":18,"end_line":3890,"end_character":50},"in_reply_to":"7f515b1d_59bef3ff","updated":"2017-10-04 17:38:44.000000000","message":"Done","commit_id":"f15abc3dd3ab03795ed88c07e422ccc6e3b5e0d1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"dcdcee8bb357cc1ac386664670397bb07401b57c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        yield"},{"line_number":118,"context_line":"    except Exception:"},{"line_number":119,"context_line":"        with excutils.save_and_reraise_exception():"},{"line_number":120,"context_line":"            if migration:"},{"line_number":121,"context_line":"                # We may have been passed None for our migration if we\u0027re"},{"line_number":122,"context_line":"                # receiving from an older client. The migration will be"},{"line_number":123,"context_line":"                # errored via the legacy path."}],"source_content_type":"text/x-python","patch_set":14,"id":"7f515b1d_1fa05ba5","line":120,"updated":"2017-10-04 17:47:23.000000000","message":"Let me know if you hate this. I\u0027m not proud of it, but it would make prep_resize a lot messier if we didn\u0027t just do it this way.","commit_id":"12f3e28dfcac138581e4d5e8aa5be5a807460dbb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"32043423e6e99c3a5c154076539a6fb9d01401b0","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        yield"},{"line_number":118,"context_line":"    except Exception:"},{"line_number":119,"context_line":"        with excutils.save_and_reraise_exception():"},{"line_number":120,"context_line":"            if migration:"},{"line_number":121,"context_line":"                # We may have been passed None for our migration if we\u0027re"},{"line_number":122,"context_line":"                # receiving from an older client. The migration will be"},{"line_number":123,"context_line":"                # errored via the legacy path."}],"source_content_type":"text/x-python","patch_set":14,"id":"7f515b1d_b1dbbb4d","line":120,"in_reply_to":"7f515b1d_1fa05ba5","updated":"2017-10-04 18:26:54.000000000","message":"OK, just so I get this straight, this conditional is just handling the case when a newer conductor is sending a prep_resize() RPC that does not include the migration object, yes? In that case, clearly we don\u0027t want to try operating on a NoneType...","commit_id":"12f3e28dfcac138581e4d5e8aa5be5a807460dbb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"46d1fb954e8c124a74202dea0ae1a372b9ddb60b","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        yield"},{"line_number":118,"context_line":"    except Exception:"},{"line_number":119,"context_line":"        with excutils.save_and_reraise_exception():"},{"line_number":120,"context_line":"            if migration:"},{"line_number":121,"context_line":"                # We may have been passed None for our migration if we\u0027re"},{"line_number":122,"context_line":"                # receiving from an older client. The migration will be"},{"line_number":123,"context_line":"                # errored via the legacy path."}],"source_content_type":"text/x-python","patch_set":14,"id":"7f515b1d_3158eb54","line":120,"in_reply_to":"7f515b1d_b1dbbb4d","updated":"2017-10-04 18:36:20.000000000","message":"It\u0027d be something older, which really shouldn\u0027t happen if we\u0027re upgrading conductors early like you should. However, the RPC interface says that we could get no migration from older clients, so we have to be defensive.","commit_id":"12f3e28dfcac138581e4d5e8aa5be5a807460dbb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44de539db3c1b013d00bfb6b0053277364b3a8fd","unresolved":false,"context_lines":[{"line_number":3888,"context_line":"            instance_type \u003d objects.Flavor.get_by_id(context,"},{"line_number":3889,"context_line":"                                                     instance_type[\u0027id\u0027])"},{"line_number":3890,"context_line":"        with self._error_out_instance_on_exception(context, instance), \\"},{"line_number":3891,"context_line":"                 errors_out_migration_ctxt(migration):"},{"line_number":3892,"context_line":"            compute_utils.notify_usage_exists(self.notifier, context, instance,"},{"line_number":3893,"context_line":"                                              current_period\u003dTrue)"},{"line_number":3894,"context_line":"            self._notify_about_instance_usage("}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_e494abea","line":3891,"updated":"2017-10-05 16:49:36.000000000","message":"Yeah this is fine, and consistent with what resize_instance does.\n\nWhat\u0027s not fine, is your indentation...","commit_id":"5fd019a67f653c03e986ec2a599ad8a9873f93a1"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3bd592c932aa3df30a458c4e56b086d8a79883bc","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                                 new_pci_requests, overhead\u003doverhead,"},{"line_number":323,"context_line":"                                 limits\u003dlimits)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        claim.migration \u003d migration"},{"line_number":326,"context_line":"        claimed_pci_devices_objs \u003d []"},{"line_number":327,"context_line":"        if self.pci_tracker:"},{"line_number":328,"context_line":"            # NOTE(jaypipes): ComputeNode.pci_device_pools is set below"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_d982e300","line":325,"range":{"start_line":325,"start_character":8,"end_line":325,"end_character":35},"updated":"2017-10-04 16:52:45.000000000","message":"At some point we could stop doing this weird hand-holding dance between the RT and the compute, but if we can\u0027t be sure we\u0027re getting a migration record from conductor yet then I guess this can\u0027t be removed.\n\nGiven we expect people to upgrade conductor before computes though, I\u0027d think it\u0027s a safe bet.\n\nOh but we don\u0027t send the migration from conductor until all computes are upgraded, I see.","commit_id":"f15abc3dd3ab03795ed88c07e422ccc6e3b5e0d1"}],"nova/conductor/tasks/migrate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3bd592c932aa3df30a458c4e56b086d8a79883bc","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                                                           [\u0027nova-compute\u0027])"},{"line_number":44,"context_line":"        if minver \u003c 23:"},{"line_number":45,"context_line":"            # NOTE(danms): We can\u0027t pre-create the migration since we have"},{"line_number":46,"context_line":"            # old computes. Let the source compute do it (legacy behavior)."},{"line_number":47,"context_line":"            return None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        migration \u003d objects.Migration(context\u003dself.context.elevated())"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_b91167af","line":46,"range":{"start_line":46,"start_character":36,"end_line":46,"end_character":42},"updated":"2017-10-04 16:52:45.000000000","message":"dest compute actually, we cast to the dest compute for prep_resize which calls RT.resize_claim which creates the migration record.","commit_id":"f15abc3dd3ab03795ed88c07e422ccc6e3b5e0d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3bd592c932aa3df30a458c4e56b086d8a79883bc","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        hosts \u003d self.scheduler_client.select_destinations("},{"line_number":97,"context_line":"            self.context, self.request_spec, [self.instance.uuid])"},{"line_number":98,"context_line":"        host_state \u003d hosts[0]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        scheduler_utils.populate_filter_properties(legacy_props,"},{"line_number":101,"context_line":"                                                   host_state)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_f9ca3f18","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":29},"updated":"2017-10-04 16:52:45.000000000","message":"nit: we could set the dest_compute/dest_node at this point if we wanted. However, RT._claim_existing_migration will do that for us if we pass an existing migration down anyway.","commit_id":"f15abc3dd3ab03795ed88c07e422ccc6e3b5e0d1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"579ee9db86207f5a1c78bc87facdccc29e238928","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        hosts \u003d self.scheduler_client.select_destinations("},{"line_number":97,"context_line":"            self.context, self.request_spec, [self.instance.uuid])"},{"line_number":98,"context_line":"        host_state \u003d hosts[0]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        scheduler_utils.populate_filter_properties(legacy_props,"},{"line_number":101,"context_line":"                                                   host_state)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_843df7de","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":29},"in_reply_to":"7f515b1d_64aa221a","updated":"2017-10-05 16:56:31.000000000","message":"Yup.","commit_id":"f15abc3dd3ab03795ed88c07e422ccc6e3b5e0d1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"08e11f3b97796c678d5dfaac4fb9630cdab205f9","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        hosts \u003d self.scheduler_client.select_destinations("},{"line_number":97,"context_line":"            self.context, self.request_spec, [self.instance.uuid])"},{"line_number":98,"context_line":"        host_state \u003d hosts[0]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        scheduler_utils.populate_filter_properties(legacy_props,"},{"line_number":101,"context_line":"                                                   host_state)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_64aa221a","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":29},"in_reply_to":"7f515b1d_f9ca3f18","updated":"2017-10-04 17:38:44.000000000","message":"Yeah, and if we reschedule it\u0027d need to change and be set when the rt claim actually happens anyway, yeah?","commit_id":"f15abc3dd3ab03795ed88c07e422ccc6e3b5e0d1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"43ec8bb21b127539d2be998ff21e8621aacd2c53","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def rollback(self):"},{"line_number":126,"context_line":"        if self._migration:"},{"line_number":127,"context_line":"            self._migration.status \u003d \u0027failed\u0027"},{"line_number":128,"context_line":"            self._migration.save()"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_697d361b","line":127,"updated":"2017-10-05 16:17:34.000000000","message":"Is it intentional to set the migration to \u0027failed\u0027 here but set it to \u0027error\u0027 in the errors_out_migration_ctxt() call?","commit_id":"4c6b68d1f51ae5c0234f9f0d2274827e9a1a33bb"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"157d644dafc53b0531ec770026283caebb3a5c12","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def rollback(self):"},{"line_number":126,"context_line":"        if self._migration:"},{"line_number":127,"context_line":"            self._migration.status \u003d \u0027failed\u0027"},{"line_number":128,"context_line":"            self._migration.save()"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_a4dc7346","line":127,"in_reply_to":"7f515b1d_697d361b","updated":"2017-10-05 16:37:20.000000000","message":"Actually we use both of these, but not for any good reason I think.\n\n grep \u0027mig.*status \u003d.*failed\u0027 -r nova | wc -l\n 9\n grep \u0027mig.*status \u003d.*error\u0027 -r nova | wc -l\n 15\n\nI don\u0027t really have a strong preference, although I guess I could change this to be consistent even within this patch :)","commit_id":"4c6b68d1f51ae5c0234f9f0d2274827e9a1a33bb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"579ee9db86207f5a1c78bc87facdccc29e238928","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        migration.instance_uuid \u003d self.instance.uuid"},{"line_number":55,"context_line":"        migration.source_compute \u003d self.instance.host"},{"line_number":56,"context_line":"        migration.source_node \u003d self.instance.node"},{"line_number":57,"context_line":"        migration.migration_type \u003d (self.instance.flavor.id !\u003d self.flavor.id"},{"line_number":58,"context_line":"                                    and \u0027resize\u0027 or \u0027migration\u0027)"},{"line_number":59,"context_line":"        migration.create()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self._migration \u003d migration"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_df75fc99","line":58,"range":{"start_line":57,"start_character":36,"end_line":58,"end_character":48},"updated":"2017-10-05 16:56:31.000000000","message":"not to nitpick you to death, but there is no unit test for this - we could add one on top in a separate change though","commit_id":"5fd019a67f653c03e986ec2a599ad8a9873f93a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"579ee9db86207f5a1c78bc87facdccc29e238928","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def rollback(self):"},{"line_number":126,"context_line":"        if self._migration:"},{"line_number":127,"context_line":"            self._migration.status \u003d \u0027error\u0027"},{"line_number":128,"context_line":"            self._migration.save()"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_5f3b4cd0","line":127,"updated":"2017-10-05 16:56:31.000000000","message":"Not to nit pick, but just to pile on to the inconsistent way we do this, but the live migration task will set the migration status to \u0027failed\u0027 for stuff like this:\n\nhttps://github.com/openstack/nova/blob/master/nova/conductor/tasks/live_migrate.py#L351\n\nBut then if the task raises NoValidHost, we set it to \u0027error\u0027:\n\nhttps://github.com/openstack/nova/blob/master/nova/conductor/manager.py#L439\n\nSame for evacuate:\n\nhttps://github.com/openstack/nova/blob/master/nova/conductor/manager.py#L871\n\nSo who actually knows, it doesn\u0027t make any sense, and no one should probably ever try to put semantic meaning behind the difference of \u0027failed\u0027 and \u0027error\u0027 for migration status since they mean the same thing.","commit_id":"5fd019a67f653c03e986ec2a599ad8a9873f93a1"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"43ec8bb21b127539d2be998ff21e8621aacd2c53","unresolved":false,"context_lines":[{"line_number":6414,"context_line":"                              {}, \u0027node\u0027, False,"},{"line_number":6415,"context_line":"                              migration\u003dmigration)"},{"line_number":6416,"context_line":""},{"line_number":6417,"context_line":"            # Make sure we set migration status to failed"},{"line_number":6418,"context_line":"            self.assertEqual(migration.status, \u0027error\u0027)"},{"line_number":6419,"context_line":""},{"line_number":6420,"context_line":"            # Run it again with migration\u003dNone and make sure we don\u0027t choke"},{"line_number":6421,"context_line":"            self.assertRaises(test.TestingException,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f515b1d_49c6fa4b","line":6418,"range":{"start_line":6417,"start_character":12,"end_line":6418,"end_character":55},"updated":"2017-10-05 16:17:34.000000000","message":"failed or error?","commit_id":"4c6b68d1f51ae5c0234f9f0d2274827e9a1a33bb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"579ee9db86207f5a1c78bc87facdccc29e238928","unresolved":false,"context_lines":[{"line_number":6415,"context_line":"                              {}, \u0027node\u0027, False,"},{"line_number":6416,"context_line":"                              migration\u003dmigration)"},{"line_number":6417,"context_line":""},{"line_number":6418,"context_line":"            # Make sure we set migration status to failed"},{"line_number":6419,"context_line":"            self.assertEqual(migration.status, \u0027error\u0027)"},{"line_number":6420,"context_line":""},{"line_number":6421,"context_line":"            # Run it again with migration\u003dNone and make sure we don\u0027t choke"}],"source_content_type":"text/x-python","patch_set":16,"id":"7f515b1d_df4cdc77","line":6418,"range":{"start_line":6418,"start_character":51,"end_line":6418,"end_character":57},"updated":"2017-10-05 16:56:31.000000000","message":"error","commit_id":"5fd019a67f653c03e986ec2a599ad8a9873f93a1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28e8796033ff93e00d46e0602a31de53c6398efd","unresolved":false,"context_lines":[{"line_number":6416,"context_line":"                              {}, \u0027node\u0027, False,"},{"line_number":6417,"context_line":"                              migration\u003dmigration)"},{"line_number":6418,"context_line":""},{"line_number":6419,"context_line":"            # Make sure we set migration status to failed"},{"line_number":6420,"context_line":"            self.assertEqual(migration.status, \u0027error\u0027)"},{"line_number":6421,"context_line":""},{"line_number":6422,"context_line":"            # Run it again with migration\u003dNone and make sure we don\u0027t choke"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f515b1d_b0538ae2","line":6419,"range":{"start_line":6419,"start_character":51,"end_line":6419,"end_character":57},"updated":"2017-10-05 19:37:26.000000000","message":"error","commit_id":"323f6454bc29551cf05f2b6ff7e0bfa58bb19f8b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2a09f865f1bc091a83d4252824833ce9ad89e156","unresolved":false,"context_lines":[{"line_number":6416,"context_line":"                              {}, \u0027node\u0027, False,"},{"line_number":6417,"context_line":"                              migration\u003dmigration)"},{"line_number":6418,"context_line":""},{"line_number":6419,"context_line":"            # Make sure we set migration status to failed"},{"line_number":6420,"context_line":"            self.assertEqual(migration.status, \u0027error\u0027)"},{"line_number":6421,"context_line":""},{"line_number":6422,"context_line":"            # Run it again with migration\u003dNone and make sure we don\u0027t choke"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f515b1d_21573c05","line":6419,"range":{"start_line":6419,"start_character":51,"end_line":6419,"end_character":57},"updated":"2017-10-06 10:08:52.000000000","message":"error :)","commit_id":"9868a4d9c1c3b705d328fc11bba634857cde0f2e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c7d1d14036b06e9cf2d527069e509fd6214055c8","unresolved":false,"context_lines":[{"line_number":6416,"context_line":"                              {}, \u0027node\u0027, False,"},{"line_number":6417,"context_line":"                              migration\u003dmigration)"},{"line_number":6418,"context_line":""},{"line_number":6419,"context_line":"            # Make sure we set migration status to failed"},{"line_number":6420,"context_line":"            self.assertEqual(migration.status, \u0027error\u0027)"},{"line_number":6421,"context_line":""},{"line_number":6422,"context_line":"            # Run it again with migration\u003dNone and make sure we don\u0027t choke"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f515b1d_c02ee68a","line":6419,"range":{"start_line":6419,"start_character":51,"end_line":6419,"end_character":57},"in_reply_to":"7f515b1d_21573c05","updated":"2017-10-09 14:35:53.000000000","message":"https://review.openstack.org/#/c/510591/","commit_id":"9868a4d9c1c3b705d328fc11bba634857cde0f2e"}],"nova/tests/unit/conductor/tasks/test_migrate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3bd592c932aa3df30a458c4e56b086d8a79883bc","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            filter_properties\u003dself.filter_properties,"},{"line_number":107,"context_line":"            node\u003dself.hosts[0][\u0027nodename\u0027], clean_shutdown\u003dself.clean_shutdown)"},{"line_number":108,"context_line":"        az_mock.assert_called_once_with(self.context, \u0027host1\u0027)"},{"line_number":109,"context_line":"        self.assertIsNotNone(task._migration)"},{"line_number":110,"context_line":"        task._migration.create.assert_called_once_with()"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @mock.patch(\u0027nova.objects.Migration.save\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_b9a2874a","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":45},"updated":"2017-10-04 16:52:45.000000000","message":"Should probably assert the stuff set on the migration object, for example the migration_type has some logic in it based on the flavor - so in this case I\u0027m assuming the type is going to be \u0027migration\u0027, but we could have a separate unit test to verify it handles the \u0027resize\u0027 logic.","commit_id":"f15abc3dd3ab03795ed88c07e422ccc6e3b5e0d1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"08e11f3b97796c678d5dfaac4fb9630cdab205f9","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            filter_properties\u003dself.filter_properties,"},{"line_number":107,"context_line":"            node\u003dself.hosts[0][\u0027nodename\u0027], clean_shutdown\u003dself.clean_shutdown)"},{"line_number":108,"context_line":"        az_mock.assert_called_once_with(self.context, \u0027host1\u0027)"},{"line_number":109,"context_line":"        self.assertIsNotNone(task._migration)"},{"line_number":110,"context_line":"        task._migration.create.assert_called_once_with()"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @mock.patch(\u0027nova.objects.Migration.save\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f515b1d_bf25c7ad","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":45},"in_reply_to":"7f515b1d_b9a2874a","updated":"2017-10-04 17:38:44.000000000","message":"Done","commit_id":"f15abc3dd3ab03795ed88c07e422ccc6e3b5e0d1"}]}
