)]}'
{"nova/compute/api.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1d6488282b3771c7ce8242db16fa121a4db9a8d5","unresolved":false,"context_lines":[{"line_number":3284,"context_line":"                                  instance_actions.LIVE_MIGRATION)"},{"line_number":3285,"context_line":"        try:"},{"line_number":3286,"context_line":"            request_spec \u003d objects.RequestSpec.get_by_instance_uuid("},{"line_number":3287,"context_line":"                context, instance.uuid)"},{"line_number":3288,"context_line":"        except exception.RequestSpecNotFound:"},{"line_number":3289,"context_line":"            # Some old instances can still have no RequestSpec object attached"},{"line_number":3290,"context_line":"            # to them, we need to support the old way"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_fa304aea","line":3287,"updated":"2016-02-11 10:30:46.000000000","message":"wonder if this could be instance.request_spec? like a lazy loaded field?","commit_id":"a21a3d3f8b10d17c46e72bf60e3d4b270b6d7fbb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1d6488282b3771c7ce8242db16fa121a4db9a8d5","unresolved":false,"context_lines":[{"line_number":3288,"context_line":"        except exception.RequestSpecNotFound:"},{"line_number":3289,"context_line":"            # Some old instances can still have no RequestSpec object attached"},{"line_number":3290,"context_line":"            # to them, we need to support the old way"},{"line_number":3291,"context_line":"            request_spec \u003d None"},{"line_number":3292,"context_line":"        self.compute_task_api.live_migrate_instance(context, instance,"},{"line_number":3293,"context_line":"                host_name, block_migration\u003dblock_migration,"},{"line_number":3294,"context_line":"                disk_over_commit\u003ddisk_over_commit,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_d707671a","line":3291,"updated":"2016-02-11 10:30:46.000000000","message":"This seems a little odd, given we then create a fake one inside the compute_task_api","commit_id":"a21a3d3f8b10d17c46e72bf60e3d4b270b6d7fbb"}],"nova/conductor/manager.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3b7a8816f378e9cbd328600115a6cf507ba65749","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    def _build_live_migrate_task(self, context, instance, destination,"},{"line_number":339,"context_line":"                                 block_migration, disk_over_commit, migration,"},{"line_number":340,"context_line":"                                 request_spec\u003dNone):"},{"line_number":341,"context_line":"        return live_migrate.LiveMigrationTask(context, instance,"},{"line_number":342,"context_line":"                                              destination, block_migration,"},{"line_number":343,"context_line":"                                              disk_over_commit, migration,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_f537aefc","line":340,"updated":"2016-02-17 21:19:20.000000000","message":"Why default to None here? You should be guaranteed to have this passed in from the caller above.","commit_id":"941c712be2e20ff897016147820a7c80f59bfa61"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b1aab57c45da237ee20604397f2a78f0da89e251","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    def _build_live_migrate_task(self, context, instance, destination,"},{"line_number":339,"context_line":"                                 block_migration, disk_over_commit, migration,"},{"line_number":340,"context_line":"                                 request_spec\u003dNone):"},{"line_number":341,"context_line":"        return live_migrate.LiveMigrationTask(context, instance,"},{"line_number":342,"context_line":"                                              destination, block_migration,"},{"line_number":343,"context_line":"                                              disk_over_commit, migration,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_f46822f7","line":340,"in_reply_to":"dae33548_d6fc0fba","updated":"2016-02-18 14:27:31.000000000","message":"yeah, we don\u0027t need this, but its a nit.","commit_id":"941c712be2e20ff897016147820a7c80f59bfa61"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"20f31d299469dc7ca8d0783a8d10af7dd5007d40","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    def _build_live_migrate_task(self, context, instance, destination,"},{"line_number":339,"context_line":"                                 block_migration, disk_over_commit, migration,"},{"line_number":340,"context_line":"                                 request_spec\u003dNone):"},{"line_number":341,"context_line":"        return live_migrate.LiveMigrationTask(context, instance,"},{"line_number":342,"context_line":"                                              destination, block_migration,"},{"line_number":343,"context_line":"                                              disk_over_commit, migration,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_d6fc0fba","line":340,"in_reply_to":"dae33548_f537aefc","updated":"2016-02-18 11:27:31.000000000","message":"Right, it was just a defensive approach in case there was a 2nd caller.","commit_id":"941c712be2e20ff897016147820a7c80f59bfa61"}],"nova/conductor/tasks/live_migrate.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9e492303a5e0e2236a7b7fabf8ee30f3e77b04a2","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            # NOTE(sbauza): We were unable to find an original RequestSpec"},{"line_number":176,"context_line":"            # object - probably because the instance is old."},{"line_number":177,"context_line":"            # We need to mock that the old way"},{"line_number":178,"context_line":"            request_spec \u003d objects.RequestSpec.from_components("},{"line_number":179,"context_line":"                self.context, self.instance.uuid, image,"},{"line_number":180,"context_line":"                self.instance.get_flavor(), self.instance.numa_topology,"},{"line_number":181,"context_line":"                self.instance.pci_requests,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_37227bba","line":178,"updated":"2016-02-11 10:29:48.000000000","message":"It feels like we should do this in the API, or do the fetch of the request spec from the instance here.\n\nIt feels odd to split the two apart. In fact I wonder if they could be a property on the instance that deals with this mess?","commit_id":"a21a3d3f8b10d17c46e72bf60e3d4b270b6d7fbb"}],"nova/tests/unit/conductor/tasks/test_live_migrate.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3b7a8816f378e9cbd328600115a6cf507ba65749","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.block_migration \u003d \"bm\""},{"line_number":47,"context_line":"        self.disk_over_commit \u003d \"doc\""},{"line_number":48,"context_line":"        self.migration \u003d objects.Migration()"},{"line_number":49,"context_line":"        self.fake_spec \u003d objects.RequestSpec()"},{"line_number":50,"context_line":"        self._generate_task()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _generate_task(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_072dc3fd","line":49,"updated":"2016-02-17 21:19:20.000000000","message":"It doesn\u0027t seem to matter here, but there is a populated RequestSpec object available in nova.tests.unit.fake_request_spec.","commit_id":"941c712be2e20ff897016147820a7c80f59bfa61"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"20f31d299469dc7ca8d0783a8d10af7dd5007d40","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        self.block_migration \u003d \"bm\""},{"line_number":47,"context_line":"        self.disk_over_commit \u003d \"doc\""},{"line_number":48,"context_line":"        self.migration \u003d objects.Migration()"},{"line_number":49,"context_line":"        self.fake_spec \u003d objects.RequestSpec()"},{"line_number":50,"context_line":"        self._generate_task()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _generate_task(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_56a47fb8","line":49,"in_reply_to":"dae33548_072dc3fd","updated":"2016-02-18 11:27:31.000000000","message":"Good to know, but I usually prefer to provide an empty object to make sure we don\u0027t use the related fields. So, if someone wants to use a field from it, then it would raise an exception and their would have to modify the UT anyway.","commit_id":"941c712be2e20ff897016147820a7c80f59bfa61"}]}
