)]}'
{"nova/conductor/api.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"569e96db28d90a8cf273b5b57baa644180706e45","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        self._manager \u003d utils.ExceptionHelper("},{"line_number":345,"context_line":"                manager.ComputeTaskManager())"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def migrate_server(self, context, instance, scheduler_hint, live, rebuild,"},{"line_number":348,"context_line":"                  flavor, block_migration, disk_over_commit):"},{"line_number":349,"context_line":"        return self._manager.migrate_server(context, instance, scheduler_hint,"},{"line_number":350,"context_line":"            live, rebuild, flavor, block_migration, disk_over_commit)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPH%2F%2Ftes%3D","line":347,"updated":"2013-05-24 18:55:25.000000000","message":"This should spawn a greenthread, otherwise you get async with ComputeTaskAPI and blocking here.  Technically it goes async in self._manager but presumably that\u0027s going away.  Check out nova/utils.py in https://review.openstack.org/#/c/29091 and also nova/tests/api/ec2/test_cinder_cloud.py if you have testing issues.","commit_id":"cbd82f1c2a18944977203783cb43e77ed11bc804"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"43abf176fafb4840c40b5eeeccf39fad1bf16acc","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        self._manager \u003d utils.ExceptionHelper("},{"line_number":345,"context_line":"                manager.ComputeTaskManager())"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def migrate_server(self, context, instance, scheduler_hint, live, rebuild,"},{"line_number":348,"context_line":"                  flavor, block_migration, disk_over_commit):"},{"line_number":349,"context_line":"        return self._manager.migrate_server(context, instance, scheduler_hint,"},{"line_number":350,"context_line":"            live, rebuild, flavor, block_migration, disk_over_commit)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPH%2F%2FqeY%3D","line":347,"in_reply_to":"AAAAPH%2F%2Ftes%3D","updated":"2013-05-28 10:09:41.000000000","message":"I was going to skip this till your change hits trunk, as we don\u0027t need it just yet. I could depend on your change I guess, and pull in that stuff in that way.","commit_id":"cbd82f1c2a18944977203783cb43e77ed11bc804"}],"nova/conductor/manager.py":[{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"5cbe7b1763c50880306ecbc39e9001dfbd6c9bfc","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":452,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":453,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":454,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":455,"context_line":"                  block_migration, disk_over_commit):"},{"line_number":456,"context_line":"        if not live or rebuild:"},{"line_number":457,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F5b8%3D","line":454,"updated":"2013-05-20 19:18:29.000000000","message":"In order to use this as the \u0027unified-top-level\u0027 call for all migration types we wil probably need to add more parameters like \u0027reservations\u0027 and others. But it looks a good start and we can extend it when needed.","commit_id":"d47b52e6963dc6affd6af917ad289c96c8d94e63"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"826de72c43ca9d615267b05d85bd1a74f5f889d0","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":452,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":453,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":454,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":455,"context_line":"                  block_migration, disk_over_commit):"},{"line_number":456,"context_line":"        if not live or rebuild:"},{"line_number":457,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F3T0%3D","line":454,"in_reply_to":"AAAAPH%2F%2F41w%3D","updated":"2013-05-21 13:05:19.000000000","message":"Cool, I will add that and update the change. Thanks Tiago for taking a look for me.","commit_id":"d47b52e6963dc6affd6af917ad289c96c8d94e63"},{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"6eacc4d85f131197071df3d2d45da290687085c7","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":452,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":453,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":454,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":455,"context_line":"                  block_migration, disk_over_commit):"},{"line_number":456,"context_line":"        if not live or rebuild:"},{"line_number":457,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F41w%3D","line":454,"in_reply_to":"AAAAPH%2F%2F448%3D","updated":"2013-05-20 22:20:11.000000000","message":"Ok. Re-thinking:\n\nSince I think we are going to call migrate_server from the compute/api...  we will be able to get most of the other parameters from there (conductor) with just a small refactoring on compute/api.resize.\n\nSo, as John suggested we only need to add flavor(_id)\n\nTiago","commit_id":"d47b52e6963dc6affd6af917ad289c96c8d94e63"},{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"a3614a94c2929ca41e88ca9ceba87aeb62706891","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":452,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":453,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":454,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":455,"context_line":"                  block_migration, disk_over_commit):"},{"line_number":456,"context_line":"        if not live or rebuild:"},{"line_number":457,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F448%3D","line":454,"in_reply_to":"AAAAPH%2F%2F5PU%3D","updated":"2013-05-20 22:05:05.000000000","message":"Currently we have:\ncontext, image, instance, flavor, destination, reservations\u003dNone, request_spec\u003dNone, filter_properties\u003dNone and node\u003dNone.\n\nI would say that for cold migration/resize we would need to add:\n\n(image, flavor, reservations\u003dNone, request_spec\u003dNone, filter_properties)\n\nFor \u0027node\u0027 we certainly can make a rpc call to the scheduler asking for it and we will still keep backward-compat with the compute API.\n\nBtw, I\u0027m wondering if we can do the same for \u0027destination\u0027. Destination for cold migration can also be a rpc call to scheduler. I\u0027m wondering if this is also the case for live migration.","commit_id":"d47b52e6963dc6affd6af917ad289c96c8d94e63"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"56c37f0bea28b9731423486840bd87092a163af2","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":452,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":453,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":454,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":455,"context_line":"                  block_migration, disk_over_commit):"},{"line_number":456,"context_line":"        if not live or rebuild:"},{"line_number":457,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F5PU%3D","line":454,"in_reply_to":"AAAAPH%2F%2F5Vs%3D","updated":"2013-05-20 20:15:34.000000000","message":"+1 to working to get this right first time. I thought I had added everything that was needed. I think the only missing this is actually \"flavor\" as this should cover resize, cold and live migrations?\n\nTiago, what else am I missing (assuming this is just the first call that starts the process)?","commit_id":"d47b52e6963dc6affd6af917ad289c96c8d94e63"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"175ecd8cf58160bbe14480454e7142b5f1551dd9","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":452,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":453,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":454,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":455,"context_line":"                  block_migration, disk_over_commit):"},{"line_number":456,"context_line":"        if not live or rebuild:"},{"line_number":457,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F5Vs%3D","line":454,"in_reply_to":"AAAAPH%2F%2F5ZY%3D","updated":"2013-05-20 19:36:42.000000000","message":"Yes, let\u0027s go ahead and get the right args now ... otherwise the code will be a little messier dealing with rpc backwards compat.","commit_id":"d47b52e6963dc6affd6af917ad289c96c8d94e63"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cedc588620d032be1c639b138a038a8a497e8248","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":452,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":453,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":454,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":455,"context_line":"                  block_migration, disk_over_commit):"},{"line_number":456,"context_line":"        if not live or rebuild:"},{"line_number":457,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPH%2F%2F5ZY%3D","line":454,"in_reply_to":"AAAAPH%2F%2F5b8%3D","updated":"2013-05-20 19:23:28.000000000","message":"If that\u0027s the case, I think we should try to get the API right the first time if we can, instead of just revving it again. Perhaps you guys can work together to get the right args in place?","commit_id":"d47b52e6963dc6affd6af917ad289c96c8d94e63"},{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"48d2c99c00442bfa2b48d79a1d76c40979bdc39d","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":454,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":455,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":456,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":457,"context_line":"                  flavor, block_migration, disk_over_commit):"},{"line_number":458,"context_line":"        if not live or rebuild or (flavor !\u003d None):"},{"line_number":459,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPH%2F%2F3I4%3D","line":456,"updated":"2013-05-21 14:10:47.000000000","message":"Nit: Maybe we could add a doc-string explaining the parameters? It is not clear what \u0027live, rebuild\u0027 are... or maybe rename them to \u0027is_live\u0027, \u0027is_rebuild\u0027. Or we can even create a \u0027type\u0027 where it can be \u0027live, rebuild\u0027...? What do you think.","commit_id":"e110d535368306f5946c51ac2e09e9629eb452c3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0638389a04457ad46b93b8c23634f63c9e8abe30","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":454,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":455,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":456,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":457,"context_line":"                  flavor, block_migration, disk_over_commit):"},{"line_number":458,"context_line":"        if not live or rebuild or (flavor !\u003d None):"},{"line_number":459,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPH%2F%2F3Cc%3D","line":456,"in_reply_to":"AAAAPH%2F%2F3I4%3D","updated":"2013-05-21 14:54:16.000000000","message":"I hope it will make more sense when the code is in there, but yes, its a bit too cryptic right now. I will have a think about that.","commit_id":"e110d535368306f5946c51ac2e09e9629eb452c3"},{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"8386feec0da4aacb1a2aa5fe3965199231728de7","unresolved":false,"context_lines":[{"line_number":484,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":485,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":486,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":487,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":488,"context_line":"                  flavor, block_migration, disk_over_commit):"},{"line_number":489,"context_line":"        if not live or rebuild or (flavor !\u003d None):"},{"line_number":490,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fxa0%3D","line":487,"updated":"2013-05-23 12:38:44.000000000","message":"Can we add \u0027filter_properties\u0027 as another parameter? I\u0027m sorry about that, but it is built based on compute conf option \u0027allow_migrate_to_same_host\u0027 which can\u0027t be read from conductor. As discussed on IRC, can this be an conductor option instead? I mean, can we move it from compute to conductor as well?","commit_id":"5783d6ad62f17068d69f63e8254c7bf2063bfd68"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1ef49060e97c8615443134f413ca4ecebbe3723c","unresolved":false,"context_lines":[{"line_number":484,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":485,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":486,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":487,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":488,"context_line":"                  flavor, block_migration, disk_over_commit):"},{"line_number":489,"context_line":"        if not live or rebuild or (flavor !\u003d None):"},{"line_number":490,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2FxXY%3D","line":487,"in_reply_to":"AAAAPH%2F%2Fxa0%3D","updated":"2013-05-23 13:06:21.000000000","message":"I am keen to keep the interface clean.\n\nMaybe we something more general to include scheduler_hints could be better? This means we should probably remove the destination, as that is just a scheduler_hint I guess?","commit_id":"5783d6ad62f17068d69f63e8254c7bf2063bfd68"},{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"edc2ca14541af236e4450822c0e9185afc24b8b1","unresolved":false,"context_lines":[{"line_number":484,"context_line":"                                  exception.InvalidLocalStorage,"},{"line_number":485,"context_line":"                                  exception.InvalidSharedStorage,"},{"line_number":486,"context_line":"                                  exception.MigrationPreCheckError)"},{"line_number":487,"context_line":"    def migrate_server(self, context, instance, destination, live, rebuild,"},{"line_number":488,"context_line":"                  flavor, block_migration, disk_over_commit):"},{"line_number":489,"context_line":"        if not live or rebuild or (flavor !\u003d None):"},{"line_number":490,"context_line":"            raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPH%2F%2FxQc%3D","line":487,"updated":"2013-05-23 13:53:45.000000000","message":"Ok. So we can add \u0027scheduler_hint\u0027 or another name suggestion which will hold other parameters like \u0027destination\u0027 and \u0027filter_properties\u0027. That will make things easier when \u0027destination\u0027 is no longer an option for live migration.","commit_id":"261cfd889337223006648628dde90410b7ecbc08"}],"nova/conductor/rpcapi.py":[{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"3088fcff340a4a603e9c849372bf59ff8496851c","unresolved":false,"context_lines":[{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def migrate_server(self, context, instance, scheduler_hint, live, rebuild,"},{"line_number":463,"context_line":"                  flavor, block_migration, disk_over_commit):"},{"line_number":464,"context_line":"        instance_p \u003d jsonutils.to_primitive(instance)"},{"line_number":465,"context_line":"        msg \u003d self.make_msg(\u0027migrate_server\u0027, instance\u003dinstance_p,"},{"line_number":466,"context_line":"            scheduler_hint\u003dscheduler_hint, live\u003dlive, rebuild\u003drebuild,"},{"line_number":467,"context_line":"            flavor\u003dflavor, block_migration\u003dblock_migration,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPH%2F%2Fwhw%3D","line":464,"updated":"2013-05-23 18:28:17.000000000","message":"\u0027flavor\u0027 should be converted to primitive as well.","commit_id":"cbd82f1c2a18944977203783cb43e77ed11bc804"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"43abf176fafb4840c40b5eeeccf39fad1bf16acc","unresolved":false,"context_lines":[{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def migrate_server(self, context, instance, scheduler_hint, live, rebuild,"},{"line_number":463,"context_line":"                  flavor, block_migration, disk_over_commit):"},{"line_number":464,"context_line":"        instance_p \u003d jsonutils.to_primitive(instance)"},{"line_number":465,"context_line":"        msg \u003d self.make_msg(\u0027migrate_server\u0027, instance\u003dinstance_p,"},{"line_number":466,"context_line":"            scheduler_hint\u003dscheduler_hint, live\u003dlive, rebuild\u003drebuild,"},{"line_number":467,"context_line":"            flavor\u003dflavor, block_migration\u003dblock_migration,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPH%2F%2Fqek%3D","line":464,"in_reply_to":"AAAAPH%2F%2Fwhw%3D","updated":"2013-05-28 10:09:41.000000000","message":"good spot, thanks.","commit_id":"cbd82f1c2a18944977203783cb43e77ed11bc804"}]}
