)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Split different live-migration types in nova"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"bp  split-different-live-migration-types"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ia5af81020da637d6c2c413bf75a646a0c3e7ea8d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba15a1d1_258c807e","line":9,"updated":"2015-09-22 13:47:36.000000000","message":"Please provide more information in this message. See [1] for tips.\n\n\"Implements: blueprint split-different-live-migration-types\"\n\n[1] https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f48734c6d68866d6dcb962435d491996d66cc1cd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Split different live-migration types in nova"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"bp  split-different-live-migration-types"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ia5af81020da637d6c2c413bf75a646a0c3e7ea8d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba15a1d1_c91d6fbf","line":9,"in_reply_to":"ba15a1d1_258c807e","updated":"2015-09-25 12:44:14.000000000","message":"Done","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"}],"specs/mitaka/approved/split-different-live-migration-types.rst":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":25,"context_line":"* Off compute node storage—shared file system"},{"line_number":26,"context_line":"* On compute node storage—shared file system"},{"line_number":27,"context_line":"* On compute node storage—nonshared file system"},{"line_number":28,"context_line":"Coverage of all 3 branches in single api method is a challenge, that cause"},{"line_number":29,"context_line":"constant issues, not-easy maintainable code."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_bcbaeddf","line":28,"updated":"2015-09-22 13:47:36.000000000","message":"I like the abstraction layer you use for the categorization. It let\u0027s me grasp it very quickly. I\u0027m unsure if there isn\u0027t also a fourth one, where it is mixed? For example, the instance is launched from a volume (on shared storage) but has disks (config drive, ephemeral, swap) on the compute node (nonshared)?","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f48734c6d68866d6dcb962435d491996d66cc1cd","unresolved":false,"context_lines":[{"line_number":25,"context_line":"* Off compute node storage—shared file system"},{"line_number":26,"context_line":"* On compute node storage—shared file system"},{"line_number":27,"context_line":"* On compute node storage—nonshared file system"},{"line_number":28,"context_line":"Coverage of all 3 branches in single api method is a challenge, that cause"},{"line_number":29,"context_line":"constant issues, not-easy maintainable code."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_e153a715","line":28,"in_reply_to":"ba15a1d1_bcbaeddf","updated":"2015-09-25 12:44:14.000000000","message":"added note for case, you\u0027ve highlighted.","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"05dfa315f3dd6a304d6aeaf5c07cfb81f1188b10","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"----------"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"These changes should not affects operators as they could be threated as"},{"line_number":36,"context_line":"internal."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_a834d5fa","line":35,"updated":"2015-09-22 19:57:01.000000000","message":"s/threated/treated/","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f48734c6d68866d6dcb962435d491996d66cc1cd","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"----------"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"These changes should not affects operators as they could be threated as"},{"line_number":36,"context_line":"internal."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_6914634c","line":35,"in_reply_to":"ba15a1d1_a834d5fa","updated":"2015-09-25 12:44:14.000000000","message":"Done","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":39,"context_line":"-----------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Compute side code cleanup seems to be reasonable change that allows to"},{"line_number":42,"context_line":"concentrate on code quality of live-migration process."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_42b16a8e","line":42,"updated":"2015-09-22 13:47:36.000000000","message":"The list of bugs [1] tagged with \"live-migrate\" (or \"live-migration\") shows that this feature needs some love.\n\n[1] http://bit.ly/1OO41S8","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"05dfa315f3dd6a304d6aeaf5c07cfb81f1188b10","unresolved":false,"context_lines":[{"line_number":39,"context_line":"-----------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Compute side code cleanup seems to be reasonable change that allows to"},{"line_number":42,"context_line":"concentrate on code quality of live-migration process."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_e8016d07","line":42,"in_reply_to":"ba15a1d1_42b16a8e","updated":"2015-09-22 19:57:01.000000000","message":"The Project Priority section refers to whether the spec encompasses functionality that is considered a priority for a particular release cycle. For example, the Liberty priorities:\n\nhttps://etherpad.openstack.org/p/liberty-nova-priorities-tracking\n\nPlease just change the above to be \"None\"","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f48734c6d68866d6dcb962435d491996d66cc1cd","unresolved":false,"context_lines":[{"line_number":39,"context_line":"-----------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Compute side code cleanup seems to be reasonable change that allows to"},{"line_number":42,"context_line":"concentrate on code quality of live-migration process."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_09b28794","line":42,"in_reply_to":"ba15a1d1_e8016d07","updated":"2015-09-25 12:44:14.000000000","message":"Done","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Implement several method for different live-migration types:"},{"line_number":48,"context_line":"* block_live_migrate for non shared storage(--block-migrate flag);"},{"line_number":49,"context_line":"* live_migrate_local_storage for live migration of instances with ephemeral"},{"line_number":50,"context_line":"located on file shares(e.g. NFS);"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_7f7c4772","line":47,"updated":"2015-09-22 13:47:36.000000000","message":"Where do you want to implement that? On the virt driver interface level?","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"05dfa315f3dd6a304d6aeaf5c07cfb81f1188b10","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Implement several method for different live-migration types:"},{"line_number":48,"context_line":"* block_live_migrate for non shared storage(--block-migrate flag);"},{"line_number":49,"context_line":"* live_migrate_local_storage for live migration of instances with ephemeral"},{"line_number":50,"context_line":"located on file shares(e.g. NFS);"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_c3b9ea2f","line":47,"in_reply_to":"ba15a1d1_7f7c4772","updated":"2015-09-22 19:57:01.000000000","message":"Yeah, I have a similar question. Do you plan to create new Task subclasses, one for each type of live migration action?","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"05dfa315f3dd6a304d6aeaf5c07cfb81f1188b10","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Implement several method for different live-migration types:"},{"line_number":48,"context_line":"* block_live_migrate for non shared storage(--block-migrate flag);"},{"line_number":49,"context_line":"* live_migrate_local_storage for live migration of instances with ephemeral"},{"line_number":50,"context_line":"located on file shares(e.g. NFS);"},{"line_number":51,"context_line":"* live_migrate_remote_storage() for ephmerals, located on remote storage (RBD)"},{"line_number":52,"context_line":"or volume-backed instances."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_e3466e4e","line":50,"updated":"2015-09-22 19:57:01.000000000","message":"\"local storage\" sounds like it refers to non-shared storage...","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f48734c6d68866d6dcb962435d491996d66cc1cd","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Implement several method for different live-migration types:"},{"line_number":48,"context_line":"* block_live_migrate for non shared storage(--block-migrate flag);"},{"line_number":49,"context_line":"* live_migrate_local_storage for live migration of instances with ephemeral"},{"line_number":50,"context_line":"located on file shares(e.g. NFS);"},{"line_number":51,"context_line":"* live_migrate_remote_storage() for ephmerals, located on remote storage (RBD)"},{"line_number":52,"context_line":"or volume-backed instances."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_da9be816","line":50,"in_reply_to":"ba15a1d1_e3466e4e","updated":"2015-09-25 12:44:14.000000000","message":"renamed that, added reference for storage decisions chapter","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":49,"context_line":"* live_migrate_local_storage for live migration of instances with ephemeral"},{"line_number":50,"context_line":"located on file shares(e.g. NFS);"},{"line_number":51,"context_line":"* live_migrate_remote_storage() for ephmerals, located on remote storage (RBD)"},{"line_number":52,"context_line":"or volume-backed instances."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_1f30abe7","line":52,"updated":"2015-09-22 13:47:36.000000000","message":"If my question from line 28 is valid and is answerable with \"True\", we would need another method like\n\n    live_migrate_mixed_shared_storage()\n\n(or something with a better name).","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f48734c6d68866d6dcb962435d491996d66cc1cd","unresolved":false,"context_lines":[{"line_number":49,"context_line":"* live_migrate_local_storage for live migration of instances with ephemeral"},{"line_number":50,"context_line":"located on file shares(e.g. NFS);"},{"line_number":51,"context_line":"* live_migrate_remote_storage() for ephmerals, located on remote storage (RBD)"},{"line_number":52,"context_line":"or volume-backed instances."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_419853c0","line":52,"in_reply_to":"ba15a1d1_1f30abe7","updated":"2015-09-25 12:44:14.000000000","message":"hope we could avoid mixed method, see note above.","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Alternative is to specify live-migration comand object that knows by itself,"},{"line_number":59,"context_line":"for which of type it belongs. In first case new method to compute.Manager"},{"line_number":60,"context_line":"and drivers will be added. In second case new migrate-command object argument"},{"line_number":61,"context_line":"should be added to existing methods instead."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_62ca6e70","line":61,"updated":"2015-09-22 13:47:36.000000000","message":"There are other efforts ongoing to restart [1] and cancel [2] live-migrations. This means the \"live-migration\" task isn\u0027t a \"fire-and-forget\" thing (if it ever was) but it has to track its state and allow/disallow further operations on it during its lifecycle. From this high level I tend to believe that the encapsulation of this complexity is more maintainable in a \"migrate\" object. Also, a virt driver interface user (the manager class) doesn\u0027t really care *how* the migration is done, right? Which would mean, that we could hide the specific migration objects and offer only the \"generic\" migration object in the virt driver interface and let the drivers decide how they implement the special cases. Speaking in code I mean something like this:\n\n    class ComputeDriver(object):\n        def live_migrate(self, LiveMigrationTask, [...])\n\n    class LiveMigrationTask(object):\n\n        @staticmethod\n        def create_for(instance, [...])\n            # return a subclass here \n            # dependent on the parameters\n        \n        def start(self, [...])\n        \n        def cancel(self, [...])\n\n        def retry(self, [...])\n\n    class LiveMigrationWithSharedStorageTask(LiveMigrationTask):\n\n        def start(self, [...]):\n            # do your special thing here\n\n    class LiveMigrationWithLocalStorageTask(LiveMigrationTask):\n\n        def start(self, [...]):\n            # do your special thing here\n\n    class LiveMigrationAsBlockMigrationTask(LiveMigrationTask):\n\n        def start(self, [...]):\n            # do your special thing here\n\nJust a few thoughts. I\u0027ll definitely want to see a change there, its hard to analyse and maintain IMO.\n\n[1] https://blueprints.launchpad.net/nova/+spec/manager-restart-during-migration\n\n[2] https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"ead5f121b8ba4ecb86a9f6136a8b09ad9b372867","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Alternative is to specify live-migration comand object that knows by itself,"},{"line_number":59,"context_line":"for which of type it belongs. In first case new method to compute.Manager"},{"line_number":60,"context_line":"and drivers will be added. In second case new migrate-command object argument"},{"line_number":61,"context_line":"should be added to existing methods instead."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_8ff4665b","line":61,"in_reply_to":"ba15a1d1_62ca6e70","updated":"2015-09-23 08:52:03.000000000","message":"After reading TaskFlow\u0027s high level overview [1] (Thanks Jay, for bringing it up!) it seems that this would help in considering the different needs to the live-migration action. It contains pause/resume, retries, notifications and rollbacks and more. The documentation [2] leaves a very good impression (examples! oh my gosh!). I\u0027d like to see it in Nova.\n\n[1] https://wiki.openstack.org/wiki/TaskFlow\n\n[2] http://docs.openstack.org/developer/taskflow/index.html","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Notifications impact"},{"line_number":80,"context_line":"--------------------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"None"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Other end user impact"},{"line_number":85,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_0277f23a","line":82,"updated":"2015-09-22 13:47:36.000000000","message":"Maybe here is an impact? If the specific live-migration has finished, maybe we want to send a specific success message like \"live migration with shared storage is done\" or something like that.","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f48734c6d68866d6dcb962435d491996d66cc1cd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Notifications impact"},{"line_number":80,"context_line":"--------------------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"None"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Other end user impact"},{"line_number":85,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_417e131a","line":82,"in_reply_to":"ba15a1d1_0277f23a","updated":"2015-09-25 12:44:14.000000000","message":"There is Sylvain\u0027s manifesto [1] about long-running tasks, notifications and other cool stuff:) My point here is that we should concentrate on live-migration refactoring here, making it predictable and reliable.\n\n[1] - https://review.openstack.org/#/c/221280/","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":128,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"While this spec is about refactoring, no new specific scenarios should be"},{"line_number":131,"context_line":"added."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_42408aa5","line":131,"updated":"2015-09-22 13:47:36.000000000","message":"Are all of the 3 cases you mentioned above already covered in tempest with appropriate gate jobs? AFAIK the is the \"multinode\" job which can cover live-migration tests, but that setup doesn\u0027t cover all environment possibilities (shared storage, non-shared-storage, ...), but here is a good chance that I\u0027m mistaken.","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f48734c6d68866d6dcb962435d491996d66cc1cd","unresolved":false,"context_lines":[{"line_number":128,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"While this spec is about refactoring, no new specific scenarios should be"},{"line_number":131,"context_line":"added."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_f4eb66da","line":131,"in_reply_to":"ba15a1d1_42408aa5","updated":"2015-09-25 12:44:14.000000000","message":"Updated Testing paragraph, and added more work-items, thanks.","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":134,"context_line":"Documentation Impact"},{"line_number":135,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"None"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_221c76c0","line":137,"updated":"2015-09-22 13:47:36.000000000","message":"If my question from line 28 is valid and is answerable with \"True\", we should update your reference [1].","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"e61fd4f94dd5209a8efdc0c0019b129f9742b457","unresolved":false,"context_lines":[{"line_number":146,"context_line":"History"},{"line_number":147,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_62feee39","line":149,"updated":"2015-09-22 13:47:36.000000000","message":"There is a chance that this takes longer than 1 cycle, which makes me think that it could be good that we keep track of there history here.","commit_id":"95d4e42e19a28617a321d7bf8b91d0d56ff51fbe"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"aa9166caf79024f9e0e3dae8ca74ebacfc3e4d9f","unresolved":false,"context_lines":[{"line_number":53,"context_line":"* block_live_migrate for non shared storage(--block-migrate flag);"},{"line_number":54,"context_line":"* live_migrate_file_level_storage() for live migration of instances with"},{"line_number":55,"context_line":"ephemeral located on file shares(e.g. NFS);"},{"line_number":56,"context_line":"* live_migrate_block_storage() for ephmerals, located on remote storage (RBD)"},{"line_number":57,"context_line":"or volume-backed instances."},{"line_number":58,"context_line":"Note: naming comes from different storage types, descibed in [4]"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a1a9d01_0efd0d3a","line":56,"updated":"2015-09-25 15:49:59.000000000","message":"sp: ephmerals -\u003e ephemerals ?","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"9253589d33de59fbee95cf3f4a3479c32b507705","unresolved":false,"context_lines":[{"line_number":53,"context_line":"* block_live_migrate for non shared storage(--block-migrate flag);"},{"line_number":54,"context_line":"* live_migrate_file_level_storage() for live migration of instances with"},{"line_number":55,"context_line":"ephemeral located on file shares(e.g. NFS);"},{"line_number":56,"context_line":"* live_migrate_block_storage() for ephmerals, located on remote storage (RBD)"},{"line_number":57,"context_line":"or volume-backed instances."},{"line_number":58,"context_line":"Note: naming comes from different storage types, descibed in [4]"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_bdc8e775","line":56,"in_reply_to":"9a1a9d01_0efd0d3a","updated":"2015-10-06 07:42:09.000000000","message":"Done","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"aa9166caf79024f9e0e3dae8ca74ebacfc3e4d9f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"ephemeral located on file shares(e.g. NFS);"},{"line_number":56,"context_line":"* live_migrate_block_storage() for ephmerals, located on remote storage (RBD)"},{"line_number":57,"context_line":"or volume-backed instances."},{"line_number":58,"context_line":"Note: naming comes from different storage types, descibed in [4]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a1a9d01_eef3f971","line":58,"updated":"2015-09-25 15:49:59.000000000","message":"sp: descibed -\u003e described","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"9253589d33de59fbee95cf3f4a3479c32b507705","unresolved":false,"context_lines":[{"line_number":55,"context_line":"ephemeral located on file shares(e.g. NFS);"},{"line_number":56,"context_line":"* live_migrate_block_storage() for ephmerals, located on remote storage (RBD)"},{"line_number":57,"context_line":"or volume-backed instances."},{"line_number":58,"context_line":"Note: naming comes from different storage types, descibed in [4]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_7d880f23","line":58,"in_reply_to":"9a1a9d01_eef3f971","updated":"2015-10-06 07:42:09.000000000","message":"Done","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"ff243d6edb07137204ce5a8770c16c0b9aaa6eae","unresolved":false,"context_lines":[{"line_number":90,"context_line":"* CleanupLocalResorces;"},{"line_number":91,"context_line":"* etc."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Note: There is a big chance that Taskflow[5] library could fit this"},{"line_number":94,"context_line":"requirements. So base task class could be inherited from taskflow"},{"line_number":95,"context_line":"abstractions."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a1a9d01_70ba6de3","line":93,"updated":"2015-09-25 13:21:27.000000000","message":"I\u0027m currently in favor of doing this. Could be more effort in implementing it, but from its documentation it does all we want to have and (should) make the live migration task more robust. Another wild guess from my side is, that the \"virt\" driver interface will look a bit more cleaner if we use this approach, instead of adding more methods with more parameters to it like the primary proposed change seems to do it.","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"aa9166caf79024f9e0e3dae8ca74ebacfc3e4d9f","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Note: There is a big chance that Taskflow[5] library could fit this"},{"line_number":94,"context_line":"requirements. So base task class could be inherited from taskflow"},{"line_number":95,"context_line":"abstractions."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Data model impact"},{"line_number":98,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a1a9d01_4eb1c58e","line":95,"updated":"2015-09-25 15:49:59.000000000","message":"I\u0027m fine with this, here to help ;)","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"ff243d6edb07137204ce5a8770c16c0b9aaa6eae","unresolved":false,"context_lines":[{"line_number":132,"context_line":"Developer impact"},{"line_number":133,"context_line":"----------------"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Allows to simplify changes in live-migration code on compute side."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Implementation"},{"line_number":138,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a1a9d01_702b4dec","line":135,"updated":"2015-09-25 13:21:27.000000000","message":"That\u0027s true, also it would make the life of people easier who will *read* the code and try to understand its flow. It should also allow the debugging of errors which will come more easier.","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"ff243d6edb07137204ce5a8770c16c0b9aaa6eae","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"While no new features would be added to live-migration we could"},{"line_number":165,"context_line":"cover more scenarios in tempests tests and add more multinode jobs"},{"line_number":166,"context_line":"to check different live-migration types described above."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a1a9d01_0bdbc47d","line":166,"updated":"2015-09-25 13:21:27.000000000","message":"yes, please","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"ff243d6edb07137204ce5a8770c16c0b9aaa6eae","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"None"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a1a9d01_4bf8dce5","line":172,"updated":"2015-09-25 13:21:27.000000000","message":"I really like to have the architecture and other design decisions documented. I guess the wiki will have pages which should be updated [1] or maybe it makes sense to move that information to the developer reference [2].\n\n* [1] https://wiki.openstack.org/wiki/LiveMigrationWorkflows\n* [2] http://docs.openstack.org/developer/nova/index.html#architecture-concepts","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"ff243d6edb07137204ce5a8770c16c0b9aaa6eae","unresolved":false,"context_lines":[{"line_number":184,"context_line":"History"},{"line_number":185,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a1a9d01_4b469c24","line":187,"updated":"2015-09-25 13:21:27.000000000","message":"Because of [1] I think it could take longer than 1 cycle to get this done. It could make sense to add and update the history on this one.\n\n* [1] https://review.openstack.org/#/c/226199/","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"9253589d33de59fbee95cf3f4a3479c32b507705","unresolved":false,"context_lines":[{"line_number":184,"context_line":"History"},{"line_number":185,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_3db057dd","line":187,"in_reply_to":"9a1a9d01_4b469c24","updated":"2015-10-06 07:42:09.000000000","message":"Done","commit_id":"39ddd2913052025d0406aa4a951bfa466a53544f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/split-different-live-migration-types"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"There are different types of live-migrations in nova, depending on instance"},{"line_number":14,"context_line":"type and environment configuration. While there only one method in compute\u0027s"},{"line_number":15,"context_line":"manager and driver layer, called live_migration. This cause a lot of \"if/else\""},{"line_number":16,"context_line":"blocks, lot of flows, code grows, and it\u0027s hard to understand what is going on"},{"line_number":17,"context_line":"and to maintain it."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_1d3f3388","line":14,"updated":"2015-10-31 12:12:32.000000000","message":"s/. While there/, however, there is/\n\ns/compute\u0027s/the/","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/split-different-live-migration-types"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"There are different types of live-migrations in nova, depending on instance"},{"line_number":14,"context_line":"type and environment configuration. While there only one method in compute\u0027s"},{"line_number":15,"context_line":"manager and driver layer, called live_migration. This cause a lot of \"if/else\""},{"line_number":16,"context_line":"blocks, lot of flows, code grows, and it\u0027s hard to understand what is going on"},{"line_number":17,"context_line":"and to maintain it."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_91f33d9f","line":14,"in_reply_to":"1a26ad4f_1d3f3388","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":26,"context_line":"* On compute node storage—shared file system"},{"line_number":27,"context_line":"* On compute node storage—nonshared file system"},{"line_number":28,"context_line":"Note: there are several things that comes from [2] and affects all three"},{"line_number":29,"context_line":"approaches. They are:"},{"line_number":30,"context_line":"* Swap"},{"line_number":31,"context_line":"* Ephemeral drive"},{"line_number":32,"context_line":"* Config drive"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_fd4a7725","line":29,"updated":"2015-10-31 12:12:32.000000000","message":"s/Note: there are several things that comes from [2] and affects all three approaches./The flavor specified by the user when launching an instance can affect the storage used by the instance: [2]/","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"* On compute node storage—shared file system"},{"line_number":27,"context_line":"* On compute node storage—nonshared file system"},{"line_number":28,"context_line":"Note: there are several things that comes from [2] and affects all three"},{"line_number":29,"context_line":"approaches. They are:"},{"line_number":30,"context_line":"* Swap"},{"line_number":31,"context_line":"* Ephemeral drive"},{"line_number":32,"context_line":"* Config drive"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_d100e568","line":29,"in_reply_to":"1a26ad4f_fd4a7725","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":30,"context_line":"* Swap"},{"line_number":31,"context_line":"* Ephemeral drive"},{"line_number":32,"context_line":"* Config drive"},{"line_number":33,"context_line":"While they are common things, we need to process them differently. Check"},{"line_number":34,"context_line":"[3] for example. Coverage of all 3 branches in single api method"},{"line_number":35,"context_line":"is a challenge, that cause constant issues, not-easy maintainable code."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_5d604ba5","line":33,"updated":"2015-10-31 12:12:32.000000000","message":"s/While the are common things,/While each of the above rely on some type of disk storage,/","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"* Swap"},{"line_number":31,"context_line":"* Ephemeral drive"},{"line_number":32,"context_line":"* Config drive"},{"line_number":33,"context_line":"While they are common things, we need to process them differently. Check"},{"line_number":34,"context_line":"[3] for example. Coverage of all 3 branches in single api method"},{"line_number":35,"context_line":"is a challenge, that cause constant issues, not-easy maintainable code."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_f103a974","line":33,"in_reply_to":"1a26ad4f_5d604ba5","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":31,"context_line":"* Ephemeral drive"},{"line_number":32,"context_line":"* Config drive"},{"line_number":33,"context_line":"While they are common things, we need to process them differently. Check"},{"line_number":34,"context_line":"[3] for example. Coverage of all 3 branches in single api method"},{"line_number":35,"context_line":"is a challenge, that cause constant issues, not-easy maintainable code."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_7d6507b3","line":34,"updated":"2015-10-31 12:12:32.000000000","message":"You can just leave [3] after \"differently\". There is no need for another sentence. For example, just do:\n\n ... we need to process them differently [3].","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"* Ephemeral drive"},{"line_number":32,"context_line":"* Config drive"},{"line_number":33,"context_line":"While they are common things, we need to process them differently. Check"},{"line_number":34,"context_line":"[3] for example. Coverage of all 3 branches in single api method"},{"line_number":35,"context_line":"is a challenge, that cause constant issues, not-easy maintainable code."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_11074d82","line":34,"in_reply_to":"1a26ad4f_7d6507b3","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":32,"context_line":"* Config drive"},{"line_number":33,"context_line":"While they are common things, we need to process them differently. Check"},{"line_number":34,"context_line":"[3] for example. Coverage of all 3 branches in single api method"},{"line_number":35,"context_line":"is a challenge, that cause constant issues, not-easy maintainable code."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_dd745b69","line":35,"updated":"2015-10-31 12:12:32.000000000","message":"The last sentence is awkward. Perhaps just rewrite it like this:\n\n Covering all of these different storage approaches and storage types results in\n hard-to-maintain code and numerous tricky bugs.","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":32,"context_line":"* Config drive"},{"line_number":33,"context_line":"While they are common things, we need to process them differently. Check"},{"line_number":34,"context_line":"[3] for example. Coverage of all 3 branches in single api method"},{"line_number":35,"context_line":"is a challenge, that cause constant issues, not-easy maintainable code."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_51d635f2","line":35,"in_reply_to":"1a26ad4f_dd745b69","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Project Priority"},{"line_number":45,"context_line":"-----------------"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_fd711777","line":47,"updated":"2015-10-31 12:12:32.000000000","message":"You can remove the Project Priority section entirely. It\u0027s been removed from the Mitaka spec template.","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The point is to specify live-migration command object that knows by itself,"},{"line_number":53,"context_line":"for which of type it belongs. In first case new method to compute.Manager"},{"line_number":54,"context_line":"and drivers will be added. In second case new migrate-command object argument"},{"line_number":55,"context_line":"should be added to existing methods instead."},{"line_number":56,"context_line":"To implement this we should create compute-livel comand/task package."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_bd671fb6","line":53,"updated":"2015-10-31 12:12:32.000000000","message":"s/that knows by itself, for which of type it belongs/for each storage approach/","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The point is to specify live-migration command object that knows by itself,"},{"line_number":53,"context_line":"for which of type it belongs. In first case new method to compute.Manager"},{"line_number":54,"context_line":"and drivers will be added. In second case new migrate-command object argument"},{"line_number":55,"context_line":"should be added to existing methods instead."},{"line_number":56,"context_line":"To implement this we should create compute-livel comand/task package."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_b18201c7","line":53,"in_reply_to":"1a26ad4f_bd671fb6","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":53,"context_line":"for which of type it belongs. In first case new method to compute.Manager"},{"line_number":54,"context_line":"and drivers will be added. In second case new migrate-command object argument"},{"line_number":55,"context_line":"should be added to existing methods instead."},{"line_number":56,"context_line":"To implement this we should create compute-livel comand/task package."},{"line_number":57,"context_line":"Possible base class for that:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class Task(object):"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_7d0c27ed","line":56,"updated":"2015-10-31 12:12:32.000000000","message":"s/livel/live","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"for which of type it belongs. In first case new method to compute.Manager"},{"line_number":54,"context_line":"and drivers will be added. In second case new migrate-command object argument"},{"line_number":55,"context_line":"should be added to existing methods instead."},{"line_number":56,"context_line":"To implement this we should create compute-livel comand/task package."},{"line_number":57,"context_line":"Possible base class for that:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class Task(object):"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_f11169b0","line":56,"in_reply_to":"1a26ad4f_7d0c27ed","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":61,"context_line":"              ..."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        def retry(self):"},{"line_number":64,"context_line":"              ..."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        def rollback(self):"},{"line_number":67,"context_line":"              ..."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_fdf837c5","line":64,"updated":"2015-10-31 12:12:32.000000000","message":"-1 on a retry() method. The retry behaviour should be self-contained in a subtask, not a top-level object method, IMHO. In Taskflow, a Retry is actually just another type of Task/Atom object, not a method on an object.\n\nhttp://docs.openstack.org/developer/taskflow/atoms.html#retry","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":61,"context_line":"              ..."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        def retry(self):"},{"line_number":64,"context_line":"              ..."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        def rollback(self):"},{"line_number":67,"context_line":"              ..."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_716d7931","line":64,"in_reply_to":"1a26ad4f_fdf837c5","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        def retry(self):"},{"line_number":64,"context_line":"              ..."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        def rollback(self):"},{"line_number":67,"context_line":"              ..."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Things to be changed in compute manager:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_bdfe3fac","line":66,"updated":"2015-10-31 12:12:32.000000000","message":"Taskflow calls this revert(), and it is a base method of the base Task object.","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        def retry(self):"},{"line_number":64,"context_line":"              ..."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        def rollback(self):"},{"line_number":67,"context_line":"              ..."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Things to be changed in compute manager:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_91681d23","line":66,"in_reply_to":"1a26ad4f_bdfe3fac","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Things to be changed in compute manager:"},{"line_number":70,"context_line":"Tasks should have ability to be composed of other tasks."},{"line_number":71,"context_line":"For live migration there are could be  several subtasks:"},{"line_number":72,"context_line":"* PreLiveMigrationTask;"},{"line_number":73,"context_line":"* LiveMigrationTask;"},{"line_number":74,"context_line":"* RollbackLiveMigrationTask;"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_7d33c7ab","line":71,"updated":"2015-10-31 12:12:32.000000000","message":"s/are could/may/","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Things to be changed in compute manager:"},{"line_number":70,"context_line":"Tasks should have ability to be composed of other tasks."},{"line_number":71,"context_line":"For live migration there are could be  several subtasks:"},{"line_number":72,"context_line":"* PreLiveMigrationTask;"},{"line_number":73,"context_line":"* LiveMigrationTask;"},{"line_number":74,"context_line":"* RollbackLiveMigrationTask;"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_71549953","line":71,"in_reply_to":"1a26ad4f_7d33c7ab","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Which also could be made of smaller parts, e.g.:"},{"line_number":78,"context_line":"* SetupNetworkTask;"},{"line_number":79,"context_line":"* CleanupLocalResorces;"},{"line_number":80,"context_line":"* etc."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"This change could eliminate need for patches like [4] as we split process"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_1d24135e","line":79,"updated":"2015-10-31 12:12:32.000000000","message":"s/Resorces/Resources/\n\nBut big +1 from me on the division of tasks into subtasks. Taskflow groups Task objects into Flow objects. There might be 3 main LiveMigrateXXX Flow objects, each composed of many Task objects (PreLiveMigrateTask, LiveMigrateTask, etc), and each of those task objects can be composed of further Task objects (SetupNetworkTask, CleanupLocalResourcesTask, etc). Each of those tasks can have a separate retry semantic by deriving from one of Taskflow\u0027s Retry base Task object classes.","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Which also could be made of smaller parts, e.g.:"},{"line_number":78,"context_line":"* SetupNetworkTask;"},{"line_number":79,"context_line":"* CleanupLocalResorces;"},{"line_number":80,"context_line":"* etc."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"This change could eliminate need for patches like [4] as we split process"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_d15c657f","line":79,"in_reply_to":"1a26ad4f_1d24135e","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Note: There is a big chance that Taskflow[5] library could fit this"},{"line_number":86,"context_line":"requirements. So base task class could be inherited from taskflow"},{"line_number":87,"context_line":"abstractions."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Things to be changed in virt driver."},{"line_number":90,"context_line":"Logic and excution paths of live_migration, pre_live_migration, cleanup"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_3d29cf37","line":87,"updated":"2015-10-31 12:12:32.000000000","message":"++","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":87,"context_line":"abstractions."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Things to be changed in virt driver."},{"line_number":90,"context_line":"Logic and excution paths of live_migration, pre_live_migration, cleanup"},{"line_number":91,"context_line":"method are mostly based  on the contents of migrate_data dictionary"},{"line_number":92,"context_line":"object that contains flags from checks that are executed before it."},{"line_number":93,"context_line":"Instead of holding all this logic in single methods, different types"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_dd221b52","line":90,"updated":"2015-10-31 12:12:32.000000000","message":"s/excution/execution/","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"68640ce6494cd45d0de830535e61c27bb2fe5dc2","unresolved":false,"context_lines":[{"line_number":87,"context_line":"abstractions."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Things to be changed in virt driver."},{"line_number":90,"context_line":"Logic and excution paths of live_migration, pre_live_migration, cleanup"},{"line_number":91,"context_line":"method are mostly based  on the contents of migrate_data dictionary"},{"line_number":92,"context_line":"object that contains flags from checks that are executed before it."},{"line_number":93,"context_line":"Instead of holding all this logic in single methods, different types"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_11caed1a","line":90,"in_reply_to":"1a26ad4f_dd221b52","updated":"2015-12-01 20:23:32.000000000","message":"Done","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"d808c4f5a0d315e11a721825f08e1ed7253e8555","unresolved":false,"context_lines":[{"line_number":98,"context_line":"* build live_migration task object on the virt driver side;"},{"line_number":99,"context_line":"* execute created tasks."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Several methods should be added to virt driver interface:"},{"line_number":102,"context_line":"* build_live_migration_task(self, migrate_data) - creates task for"},{"line_number":103,"context_line":"live-migration. Should incapsulate all specific logic for live-migration"},{"line_number":104,"context_line":"Task creation should be a composition of more simple atomic actions,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_5955b5f7","line":101,"updated":"2015-10-21 09:08:03.000000000","message":"Which methods would be removed from the virt driver interface? I guess the \"rollback_live_migration_at_destination\" would be \"hidden\" in the Task object, right?","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":103,"context_line":"live-migration. Should incapsulate all specific logic for live-migration"},{"line_number":104,"context_line":"Task creation should be a composition of more simple atomic actions,"},{"line_number":105,"context_line":"like creation of console log file, connection of volumes, etc."},{"line_number":106,"context_line":"* execute_task(self, task) - execute created task"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"To be consistent, this change should affect all virt drivers."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_bd15dfe5","line":106,"updated":"2015-10-31 12:12:32.000000000","message":"I don\u0027t actually support changing the virt driver API. I believe we can/should do all of these changes within internal areas of the conductor manager and compute manager.\n\nIf it is desired to move to a virt driver API that is Task-based instead of function-based, then we might consider that in the future, but I don\u0027t believe it will be necessary in a first try of this.","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"6aede8cece6a8d3768731b4b536eb474c6c8100a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"live-migration. Should incapsulate all specific logic for live-migration"},{"line_number":104,"context_line":"Task creation should be a composition of more simple atomic actions,"},{"line_number":105,"context_line":"like creation of console log file, connection of volumes, etc."},{"line_number":106,"context_line":"* execute_task(self, task) - execute created task"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"To be consistent, this change should affect all virt drivers."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_36f127ce","line":106,"in_reply_to":"1a26ad4f_bd15dfe5","updated":"2015-12-01 19:48:40.000000000","message":"I\u0027m a huge supporter of moving towards a task based API like this, but not as part of this effort.  I agree that much of this work would fall within the conductor/compute managers.  As much as possible the virt API should remain unchanged for now, but if some small API changes greatly simplify the code then explain that.","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b88c57fe65c166b5b27c26ff4b72f98f8ac2cfc4","unresolved":false,"context_lines":[{"line_number":116,"context_line":"ephemeral located on file shares(e.g. NFS);"},{"line_number":117,"context_line":"* live_migrate_block_storage() for ephemerals, located on remote storage"},{"line_number":118,"context_line":"(RBD) or volume-backed instances."},{"line_number":119,"context_line":"Note: naming comes from different storage types, described in [6]"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Data model impact"},{"line_number":122,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_51936fa3","line":119,"updated":"2015-10-20 15:19:28.000000000","message":"Please note XenAPI only has two options, based on shared storage for the root disk and both hypervisors are in the same pool, or... you use block_migrate which means it just does the right thing with stand-alone hosts that use volume attachments (iSCSI) and local storage for any of the disks.","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"80d76ac689932dbf3d3e1c63bd4859e001f76d07","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Work Items"},{"line_number":174,"context_line":"----------"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"* Split different live-migration type in Nova."},{"line_number":177,"context_line":"* Make existing multinode jobs stable and voting."},{"line_number":178,"context_line":"* Add more jobs to tests all live-migration types."},{"line_number":179,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_7ddae74d","line":176,"updated":"2015-10-31 12:12:32.000000000","message":"The first work item (or one of the first work items) would be to map out Taskflow-derived task object hierarchy for each of the live-migration types.","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"6aede8cece6a8d3768731b4b536eb474c6c8100a","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"* Split different live-migration type in Nova."},{"line_number":177,"context_line":"* Make existing multinode jobs stable and voting."},{"line_number":178,"context_line":"* Add more jobs to tests all live-migration types."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Dependencies"},{"line_number":181,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a8ffd7b_db14844e","line":178,"updated":"2015-12-01 19:48:40.000000000","message":"These last two items seem out of scope here.  They\u0027re necessary for this work, but aren\u0027t done within Nova.  I would see these as dependencies, or this as a dependency of line 177.","commit_id":"ac652f012cc87463ba45d20d68c2c66ac3bedc0c"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c3b993143acf11e3419b5750f1ca6c230084676d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"* Config drive"},{"line_number":33,"context_line":"While each of the above rely on some type of disk storage, we need to process"},{"line_number":34,"context_line":"them differently [3]. Covering all of these different storage approaches"},{"line_number":35,"context_line":"and storage types results in hard-to-maintain code and numerous tricky bugs."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_568379cc","line":35,"updated":"2015-12-02 04:26:32.000000000","message":"Have you talked to He Jie Xu \u003chejie.xu@intel.com\u003e at all? https://review.openstack.org/#/c/245543 seems at least tangentially related to your proposal, and I worry that you\u0027re going to tread on each others toes if you\u0027re not talking to each other.","commit_id":"b66c8879284a5ef973a7e92268d5242b4eacf197"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"7eca90af4028f4ca05b849335fc9bc2f294dfbee","unresolved":false,"context_lines":[{"line_number":32,"context_line":"* Config drive"},{"line_number":33,"context_line":"While each of the above rely on some type of disk storage, we need to process"},{"line_number":34,"context_line":"them differently [3]. Covering all of these different storage approaches"},{"line_number":35,"context_line":"and storage types results in hard-to-maintain code and numerous tricky bugs."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a710552_900fbf2d","line":35,"updated":"2015-12-16 03:20:27.000000000","message":"Hi guys, sorry to make noise here. It may be a little long time ago, I posted a related BP. Would you please also have a look at that ?\n\nhttps://blueprints.launchpad.net/nova/+spec/migration-type-refactor","commit_id":"b66c8879284a5ef973a7e92268d5242b4eacf197"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"7b1c93a0571cf3d30cae84572ef7e26eeff224cb","unresolved":false,"context_lines":[{"line_number":32,"context_line":"* Config drive"},{"line_number":33,"context_line":"While each of the above rely on some type of disk storage, we need to process"},{"line_number":34,"context_line":"them differently [3]. Covering all of these different storage approaches"},{"line_number":35,"context_line":"and storage types results in hard-to-maintain code and numerous tricky bugs."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a740942_fc874bd5","line":35,"in_reply_to":"9a8ffd7b_568379cc","updated":"2015-12-03 19:08:04.000000000","message":"There should be collaboration here, but I don\u0027t think these two efforts are at odds with each other.","commit_id":"b66c8879284a5ef973a7e92268d5242b4eacf197"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c3b993143acf11e3419b5750f1ca6c230084676d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"----------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"These changes should not affects operators as they could be treated as"},{"line_number":42,"context_line":"internal."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Project Priority"},{"line_number":45,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_113bbbd2","line":42,"updated":"2015-12-02 04:26:32.000000000","message":"I would re-phrase this as something like:\n\n\"These changes are internal only, and will have no user visible impact\".","commit_id":"b66c8879284a5ef973a7e92268d5242b4eacf197"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c3b993143acf11e3419b5750f1ca6c230084676d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Project Priority"},{"line_number":45,"context_line":"-----------------"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_914d6b74","line":47,"updated":"2015-12-02 04:26:32.000000000","message":"Not true? Live migration is a priority in mitaka...","commit_id":"b66c8879284a5ef973a7e92268d5242b4eacf197"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"6b4a9e8f815f8295b8b8528317fe7ff48151b301","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Project Priority"},{"line_number":45,"context_line":"-----------------"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_062ecc8b","line":47,"in_reply_to":"9a8ffd7b_914d6b74","updated":"2015-12-03 11:01:52.000000000","message":"This section should be removed...","commit_id":"b66c8879284a5ef973a7e92268d5242b4eacf197"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"6a26b50db6fb0cffef2ca8f34904d0d0c77f2b64","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Note: There is a big chance that Taskflow[5] library could fit this"},{"line_number":83,"context_line":"requirements. So base task class could be inherited from taskflow"},{"line_number":84,"context_line":"abstractions."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Things to be changed in virt driver."},{"line_number":87,"context_line":"Logic and execution paths of live_migration, pre_live_migration, cleanup"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_d7bd30d8","line":84,"updated":"2015-12-01 22:26:16.000000000","message":"+1\n\nSince taskflow has already figured out the split process/execution and declaration part (and has built itself and what it adds around those \u0027core\u0027 concepts...)","commit_id":"b66c8879284a5ef973a7e92268d5242b4eacf197"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"6b4a9e8f815f8295b8b8528317fe7ff48151b301","unresolved":false,"context_lines":[{"line_number":143,"context_line":"Performance Impact"},{"line_number":144,"context_line":"------------------"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"None"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Other deployer impact"},{"line_number":149,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_065c8c17","line":146,"updated":"2015-12-03 11:01:52.000000000","message":"If TaskFlow is an option shouldn\u0027t we describe there that it might impact performance, e.g., it might increase number of DB calls?","commit_id":"b66c8879284a5ef973a7e92268d5242b4eacf197"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"6a26b50db6fb0cffef2ca8f34904d0d0c77f2b64","unresolved":false,"context_lines":[{"line_number":189,"context_line":"Documentation Impact"},{"line_number":190,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Existing live-migration documentation shoulb be updated"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a8ffd7b_b7a18cab","line":192,"updated":"2015-12-01 22:26:16.000000000","message":"shoulb -\u003e should","commit_id":"b66c8879284a5ef973a7e92268d5242b4eacf197"}]}
