)]}'
{"doc/source/contributor/resize-and-cold-migrate.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"051520d783d7c2bc16191d69835ba958bc1e87cf","unresolved":false,"context_lines":[{"line_number":112,"context_line":"Sequence Diagrams"},{"line_number":113,"context_line":"~~~~~~~~~~~~~~~~~"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"The following diagrams are current as of the 21.0.0 (Ussuri) release."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Resize"},{"line_number":118,"context_line":"------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_34259cbf","line":115,"updated":"2019-11-22 22:24:33.000000000","message":"So the flow and task states are identical for both resize and cold migrate? That might be worth calling out here explicitly.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"303f65baa68215cd0c735499ae07fff192b50fd3","unresolved":false,"context_lines":[{"line_number":112,"context_line":"Sequence Diagrams"},{"line_number":113,"context_line":"~~~~~~~~~~~~~~~~~"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"The following diagrams are current as of the 21.0.0 (Ussuri) release."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Resize"},{"line_number":118,"context_line":"------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_75f46e87","line":115,"in_reply_to":"3fa7e38b_34259cbf","updated":"2019-11-23 02:00:27.000000000","message":"Yes, except the caveat about resize to same host but I didn\u0027t get into that in the diagram since it\u0027s not the default configuration.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"051520d783d7c2bc16191d69835ba958bc1e87cf","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Resize"},{"line_number":118,"context_line":"------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"This is the sequence of calls to get the server to ``VERIFY_RESIZE`` status."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":".. seqdiag::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_8fcc7d34","line":119,"updated":"2019-11-22 22:24:33.000000000","message":"It would also be neat to link directly to the APIs that start the operations here (the ones referenced on L178 and 179)...","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bb68a2bcaa55ca23e66e0b81a82ae5e11b19ed47","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Resize"},{"line_number":118,"context_line":"------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"This is the sequence of calls to get the server to ``VERIFY_RESIZE`` status."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":".. seqdiag::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_95b32a9a","line":119,"in_reply_to":"3fa7e38b_35ea769f","updated":"2019-11-23 03:16:45.000000000","message":"Oh, no idea, kinda doubt it, but would be cool to try. But at least a link in the text blip for each section.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"303f65baa68215cd0c735499ae07fff192b50fd3","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Resize"},{"line_number":118,"context_line":"------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"This is the sequence of calls to get the server to ``VERIFY_RESIZE`` status."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":".. seqdiag::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_35ea769f","line":119,"in_reply_to":"3fa7e38b_8fcc7d34","updated":"2019-11-23 02:00:27.000000000","message":"Is that possible from a diagram?","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6f3e001166da7d70606b5b5d28869bf24b1a8ceb","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        activation \u003d none;"},{"line_number":129,"context_line":"        default_note_color \u003d white;"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        API -\u003e Conductor [label \u003d \"cast\", note \u003d \"resize_instance/migrate_server\"];"},{"line_number":132,"context_line":"               Conductor \u003d\u003e Scheduler [label \u003d \"call\", note \u003d \"select_destinations\"];"},{"line_number":133,"context_line":"               Conductor -\u003e Destination [label \u003d \"cast\", note \u003d \"prep_resize\"];"},{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_a43057eb","line":131,"updated":"2019-11-26 19:42:28.000000000","message":"OK, so the API layer calls compute_api.resize(), which calls compute_task_api.resize_instance(), which via the rpcapi casts to condutor manager\u0027s migrate_server(). What you have is a good enough simplification.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9670924129342727b70e742c52c958cb054c686b","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        activation \u003d none;"},{"line_number":129,"context_line":"        default_note_color \u003d white;"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        API -\u003e Conductor [label \u003d \"cast\", note \u003d \"resize_instance/migrate_server\"];"},{"line_number":132,"context_line":"               Conductor \u003d\u003e Scheduler [label \u003d \"call\", note \u003d \"select_destinations\"];"},{"line_number":133,"context_line":"               Conductor -\u003e Destination [label \u003d \"cast\", note \u003d \"prep_resize\"];"},{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_f0a925de","line":131,"in_reply_to":"3fa7e38b_a43057eb","updated":"2019-11-26 23:55:10.000000000","message":"Yeah I didn\u0027t really want to complicate the diagram with all of the internal-to-conductor stuff that goes on.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6f3e001166da7d70606b5b5d28869bf24b1a8ceb","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        default_note_color \u003d white;"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        API -\u003e Conductor [label \u003d \"cast\", note \u003d \"resize_instance/migrate_server\"];"},{"line_number":132,"context_line":"               Conductor \u003d\u003e Scheduler [label \u003d \"call\", note \u003d \"select_destinations\"];"},{"line_number":133,"context_line":"               Conductor -\u003e Destination [label \u003d \"cast\", note \u003d \"prep_resize\"];"},{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"},{"line_number":135,"context_line":"                   Source -\u003e Destination [label \u003d \"cast\", note \u003d \"finish_resize\"];"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_24522714","line":132,"updated":"2019-11-26 19:42:28.000000000","message":"Inside migrate_server() we call _cold_migrate(), which builds a migrate task and execute()s it. Inside that _execute() we call select_destinations(). Again, this is OK as a simplification.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6f3e001166da7d70606b5b5d28869bf24b1a8ceb","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        API -\u003e Conductor [label \u003d \"cast\", note \u003d \"resize_instance/migrate_server\"];"},{"line_number":132,"context_line":"               Conductor \u003d\u003e Scheduler [label \u003d \"call\", note \u003d \"select_destinations\"];"},{"line_number":133,"context_line":"               Conductor -\u003e Destination [label \u003d \"cast\", note \u003d \"prep_resize\"];"},{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"},{"line_number":135,"context_line":"                   Source -\u003e Destination [label \u003d \"cast\", note \u003d \"finish_resize\"];"},{"line_number":136,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_44572303","line":133,"updated":"2019-11-26 19:42:28.000000000","message":"✓","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6f3e001166da7d70606b5b5d28869bf24b1a8ceb","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        API -\u003e Conductor [label \u003d \"cast\", note \u003d \"resize_instance/migrate_server\"];"},{"line_number":132,"context_line":"               Conductor \u003d\u003e Scheduler [label \u003d \"call\", note \u003d \"select_destinations\"];"},{"line_number":133,"context_line":"               Conductor -\u003e Destination [label \u003d \"cast\", note \u003d \"prep_resize\"];"},{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"},{"line_number":135,"context_line":"                   Source -\u003e Destination [label \u003d \"cast\", note \u003d \"finish_resize\"];"},{"line_number":136,"context_line":"    }"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_04628bda","line":134,"updated":"2019-11-26 19:42:28.000000000","message":"✓ (there\u0027s the private _resize_instance() and the resize claim in there as well, before we call the source, but this is fine.)","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9670924129342727b70e742c52c958cb054c686b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        API -\u003e Conductor [label \u003d \"cast\", note \u003d \"resize_instance/migrate_server\"];"},{"line_number":132,"context_line":"               Conductor \u003d\u003e Scheduler [label \u003d \"call\", note \u003d \"select_destinations\"];"},{"line_number":133,"context_line":"               Conductor -\u003e Destination [label \u003d \"cast\", note \u003d \"prep_resize\"];"},{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"},{"line_number":135,"context_line":"                   Source -\u003e Destination [label \u003d \"cast\", note \u003d \"finish_resize\"];"},{"line_number":136,"context_line":"    }"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_d0b0a943","line":134,"in_reply_to":"3fa7e38b_04628bda","updated":"2019-11-26 23:55:10.000000000","message":"The resize_claim happens in prep_resize (well, _prep_resize to be specific) on the dest host, but sure. :) Again, this is high-level.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6f3e001166da7d70606b5b5d28869bf24b1a8ceb","unresolved":false,"context_lines":[{"line_number":132,"context_line":"               Conductor \u003d\u003e Scheduler [label \u003d \"call\", note \u003d \"select_destinations\"];"},{"line_number":133,"context_line":"               Conductor -\u003e Destination [label \u003d \"cast\", note \u003d \"prep_resize\"];"},{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"},{"line_number":135,"context_line":"                   Source -\u003e Destination [label \u003d \"cast\", note \u003d \"finish_resize\"];"},{"line_number":136,"context_line":"    }"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Confirm resize"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_24a0e7f3","line":135,"updated":"2019-11-26 19:42:28.000000000","message":"✓\n\nDo we want to mention the call to driver.migrate_disk_and_power_off() ?","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9670924129342727b70e742c52c958cb054c686b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"               Conductor \u003d\u003e Scheduler [label \u003d \"call\", note \u003d \"select_destinations\"];"},{"line_number":133,"context_line":"               Conductor -\u003e Destination [label \u003d \"cast\", note \u003d \"prep_resize\"];"},{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"},{"line_number":135,"context_line":"                   Source -\u003e Destination [label \u003d \"cast\", note \u003d \"finish_resize\"];"},{"line_number":136,"context_line":"    }"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Confirm resize"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_f09285a0","line":135,"in_reply_to":"3fa7e38b_24a0e7f3","updated":"2019-11-26 23:55:10.000000000","message":"I don\u0027t no, at least not here. There are lots of details and I want to keep this high level. If we feel the need to drill into the low-level details of each piece of the puzzle then that should come separately but it would also risk drifting from what actually happens in the code.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6f3e001166da7d70606b5b5d28869bf24b1a8ceb","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"},{"line_number":135,"context_line":"                   Source -\u003e Destination [label \u003d \"cast\", note \u003d \"finish_resize\"];"},{"line_number":136,"context_line":"    }"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Confirm resize"},{"line_number":139,"context_line":"--------------"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_44288332","line":137,"updated":"2019-11-26 19:42:28.000000000","message":"Do we want to mention the cleanup? AFAICT there\u0027s not much besides calling _revert_allocations(), but that can happen in various places. From looking at the code for this review, here\u0027s a non-exhaustive list:\n\n1. The initial call to compute manager\u0027s prep_resize(). Depending on the exception that the inner _prep_resize() raises, we either just _revert_allocations() and fail the migration, or revert and reschedule.\n\n2. Once we\u0027re on the source in resize_instance(), if the inner _resize_instance() raises, we _revert_allocations() and re-raise, but the call to resize_instance() is a cast, so...","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9670924129342727b70e742c52c958cb054c686b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                   Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"resize_instance\"];"},{"line_number":135,"context_line":"                   Source -\u003e Destination [label \u003d \"cast\", note \u003d \"finish_resize\"];"},{"line_number":136,"context_line":"    }"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Confirm resize"},{"line_number":139,"context_line":"--------------"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_90e9d11a","line":137,"in_reply_to":"3fa7e38b_44288332","updated":"2019-11-26 23:55:10.000000000","message":"Again, that\u0027s a level of detail I don\u0027t want to get into here. This diagram is assuming happy path with no reschedules or failures. If someone wants to post a diagram for the reschedule flow that would be fine but separate.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"051520d783d7c2bc16191d69835ba958bc1e87cf","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Confirm resize"},{"line_number":139,"context_line":"--------------"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"This is the sequence of calls when confirming `or deleting`_ a server in"},{"line_number":142,"context_line":"``VERIFY_RESIZE`` status."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_afcff925","line":140,"updated":"2019-11-22 22:24:33.000000000","message":"...and then to the confirm action here...","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6f3e001166da7d70606b5b5d28869bf24b1a8ceb","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        activation \u003d none;"},{"line_number":154,"context_line":"        default_note_color \u003d white;"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        API -\u003e Source [label \u003d \"cast (or call if deleting)\", note \u003d \"confirm_resize\"];"},{"line_number":157,"context_line":"    }"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Revert resize"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_e41f2f6f","line":156,"updated":"2019-11-26 19:42:28.000000000","message":"✓\n\n(If the inner _confirm_resize() fails, we just error out the instance)","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"051520d783d7c2bc16191d69835ba958bc1e87cf","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Revert resize"},{"line_number":160,"context_line":"-------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"This is the sequence of calls when reverting a server in ``VERIFY_RESIZE``"},{"line_number":163,"context_line":"status."},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_4fda05e9","line":161,"updated":"2019-11-22 22:24:33.000000000","message":"...and the revert action here.","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6f3e001166da7d70606b5b5d28869bf24b1a8ceb","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        activation \u003d none;"},{"line_number":172,"context_line":"        default_note_color \u003d white;"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        API -\u003e Destination [label \u003d \"cast\", note \u003d \"revert_resize\"];"},{"line_number":175,"context_line":"               Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"finish_revert_resize\"];"},{"line_number":176,"context_line":"    }"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_3f047014","line":174,"updated":"2019-11-26 19:42:28.000000000","message":"✓\n\n(Ditto for cleanup - except there\u0027s no inner method)","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6f3e001166da7d70606b5b5d28869bf24b1a8ceb","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        default_note_color \u003d white;"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        API -\u003e Destination [label \u003d \"cast\", note \u003d \"revert_resize\"];"},{"line_number":175,"context_line":"               Source \u003c- Destination [label \u003d \"cast\", leftnote \u003d \"finish_revert_resize\"];"},{"line_number":176,"context_line":"    }"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":".. _resize API: https://docs.openstack.org/api-ref/compute/#resize-server-resize-action"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_5f092c29","line":175,"updated":"2019-11-26 19:42:28.000000000","message":"✓\n\n(Ditto for cleanup)","commit_id":"49422f87d20edd2dd9f4eccb4447fb8cd4671e1c"}]}
