)]}'
{"specs/approved/in-band-deploy-steps.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"419e34450d94293de3a0a49eef5891c389472888","unresolved":false,"context_lines":[{"line_number":237,"context_line":"   #. reboot the node, wait for heartbeat (when writing an image?)"},{"line_number":238,"context_line":"   #. gather in-band deploy steps from the agent"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"#. ``continue_deploy`` [90]:"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   #. write image to disk synchronously (``iscsi`` deploy interface)"},{"line_number":243,"context_line":"   #. call IPA ``standby.prepare_image`` API, wait for heartbeats until"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_3ba38fb2","line":240,"updated":"2020-01-03 14:42:49.000000000","message":"Then write_image be it","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f5f7ca59998c3161552e091b0f46cbb2caa3cf5a","unresolved":false,"context_lines":[{"line_number":237,"context_line":"   #. reboot the node, wait for heartbeat (when writing an image?)"},{"line_number":238,"context_line":"   #. gather in-band deploy steps from the agent"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"#. ``continue_deploy`` [90]:"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   #. write image to disk synchronously (``iscsi`` deploy interface)"},{"line_number":243,"context_line":"   #. call IPA ``standby.prepare_image`` API, wait for heartbeats until"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_756d5d65","line":240,"range":{"start_line":240,"start_character":5,"end_line":240,"end_character":20},"updated":"2019-12-11 17:24:07.000000000","message":"bikeshedding: prepare_image/write_image?","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8301c69e3fe5723af95e0d6e73d2deef79089345","unresolved":false,"context_lines":[{"line_number":237,"context_line":"   #. reboot the node, wait for heartbeat (when writing an image?)"},{"line_number":238,"context_line":"   #. gather in-band deploy steps from the agent"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"#. ``continue_deploy`` [90]:"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   #. write image to disk synchronously (``iscsi`` deploy interface)"},{"line_number":243,"context_line":"   #. call IPA ``standby.prepare_image`` API, wait for heartbeats until"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_e99e8653","line":240,"in_reply_to":"3fa7e38b_3ba38fb2","updated":"2020-01-06 14:39:56.000000000","message":"Done","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"cb773d51bd3f90deb8b9d89b2088db6d0af251ea","unresolved":false,"context_lines":[{"line_number":237,"context_line":"   #. reboot the node, wait for heartbeat (when writing an image?)"},{"line_number":238,"context_line":"   #. gather in-band deploy steps from the agent"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"#. ``continue_deploy`` [90]:"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   #. write image to disk synchronously (``iscsi`` deploy interface)"},{"line_number":243,"context_line":"   #. call IPA ``standby.prepare_image`` API, wait for heartbeats until"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_07d071f3","line":240,"range":{"start_line":240,"start_character":5,"end_line":240,"end_character":20},"in_reply_to":"3fa7e38b_756d5d65","updated":"2019-12-12 16:42:20.000000000","message":"Definitely open to suggestions for better names. write_image seems reasonable.","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f5f7ca59998c3161552e091b0f46cbb2caa3cf5a","unresolved":false,"context_lines":[{"line_number":243,"context_line":"   #. call IPA ``standby.prepare_image`` API, wait for heartbeats until"},{"line_number":244,"context_line":"      complete (``direct`` deploy interface)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"#. ``deploy_is_done`` [89] (``direct`` interface only):"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"   #. query IPA ``standby.prepare_image`` command until complete"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#. ``reboot_to_instance`` [80]:"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_55a701a9","line":248,"range":{"start_line":246,"start_character":0,"end_line":248,"end_character":64},"updated":"2019-12-11 17:24:07.000000000","message":"Can we probably generalize it, so that any asynchronous deploy step can be checked for success? I.e. if a deploy step returns DEPLOYWAIT, then before moving to another steps conductor calls the corresponding interface\u0027s check_step_status that either returns DEPLOYWAIT (still busy), None (done) or raises.\n\nWDYT?","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"419e34450d94293de3a0a49eef5891c389472888","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"#. ``deploy_is_done`` [89] (``direct`` interface only):"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"   #. query IPA ``standby.prepare_image`` command until complete"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#. ``reboot_to_instance`` [80]:"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_5ba8cb89","line":248,"updated":"2020-01-03 14:42:49.000000000","message":"Can we try it as an in-band deploy step and fall back to a normal call?","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"cb773d51bd3f90deb8b9d89b2088db6d0af251ea","unresolved":false,"context_lines":[{"line_number":243,"context_line":"   #. call IPA ``standby.prepare_image`` API, wait for heartbeats until"},{"line_number":244,"context_line":"      complete (``direct`` deploy interface)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"#. ``deploy_is_done`` [89] (``direct`` interface only):"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"   #. query IPA ``standby.prepare_image`` command until complete"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#. ``reboot_to_instance`` [80]:"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_6aed6c22","line":248,"range":{"start_line":246,"start_character":0,"end_line":248,"end_character":64},"in_reply_to":"3fa7e38b_55a701a9","updated":"2019-12-12 16:42:20.000000000","message":"There are a few ways we could tackle this one.\n\nWe could make continue_deploy set skip_current_deploy_step: false, and do the polling there. We\u0027d need some logic to send the command on the first call.\n\nOr we could make this an in-band deploy step, and have the polling handled in the normal way. I was a bit concerned about backwards compatibility between ironic and IPA with this though - we\u0027d need a ramdisk that supports in-band deploy steps.","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8301c69e3fe5723af95e0d6e73d2deef79089345","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"#. ``deploy_is_done`` [89] (``direct`` interface only):"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"   #. query IPA ``standby.prepare_image`` command until complete"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#. ``reboot_to_instance`` [80]:"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_e9c76645","line":248,"in_reply_to":"3fa7e38b_5ba8cb89","updated":"2020-01-06 14:39:56.000000000","message":"Possibly. IPA API version might be the best thing to check here. It would be nice to keep the polling in one place (after deprecation period is over).","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"419e34450d94293de3a0a49eef5891c389472888","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#. ``reboot_to_instance`` [80]:"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"   #. prepare instance to boot"},{"line_number":253,"context_line":"   #. power off the node"},{"line_number":254,"context_line":"   #. remove provisioning network"},{"line_number":255,"context_line":"   #. configure tenant networks"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_fb909751","line":252,"updated":"2020-01-03 14:42:49.000000000","message":"Thinking more about it, I think this is an important extension point (think custom kernel params, modifying files, etc). Maybe split \"prepare_boot\" and \"reboot_to_instance\"?","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8301c69e3fe5723af95e0d6e73d2deef79089345","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"#. ``reboot_to_instance`` [80]:"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"   #. prepare instance to boot"},{"line_number":253,"context_line":"   #. power off the node"},{"line_number":254,"context_line":"   #. remove provisioning network"},{"line_number":255,"context_line":"   #. configure tenant networks"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_499c7a0c","line":252,"in_reply_to":"3fa7e38b_fb909751","updated":"2020-01-06 14:39:56.000000000","message":"Done","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"419e34450d94293de3a0a49eef5891c389472888","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"   #. prepare instance to boot"},{"line_number":253,"context_line":"   #. power off the node"},{"line_number":254,"context_line":"   #. remove provisioning network"},{"line_number":255,"context_line":"   #. configure tenant networks"},{"line_number":256,"context_line":"   #. power on the node"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_1b8ed331","line":254,"updated":"2020-01-03 14:42:49.000000000","message":"None? We shouldn\u0027t do anything on a tenant network, we probably won\u0027t have access to it at all.","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f5f7ca59998c3161552e091b0f46cbb2caa3cf5a","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"   #. prepare instance to boot"},{"line_number":253,"context_line":"   #. power off the node"},{"line_number":254,"context_line":"   #. remove provisioning network"},{"line_number":255,"context_line":"   #. configure tenant networks"},{"line_number":256,"context_line":"   #. power on the node"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_f5af0d79","line":254,"updated":"2019-12-11 17:24:07.000000000","message":"Should we maybe split further at this point? To accommodate deploy steps that have to be done on a deployed but powered off machine?","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"8301c69e3fe5723af95e0d6e73d2deef79089345","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"   #. prepare instance to boot"},{"line_number":253,"context_line":"   #. power off the node"},{"line_number":254,"context_line":"   #. remove provisioning network"},{"line_number":255,"context_line":"   #. configure tenant networks"},{"line_number":256,"context_line":"   #. power on the node"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_c9f2aa69","line":254,"in_reply_to":"3fa7e38b_1b8ed331","updated":"2020-01-06 14:39:56.000000000","message":"Done","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"cb773d51bd3f90deb8b9d89b2088db6d0af251ea","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"   #. prepare instance to boot"},{"line_number":253,"context_line":"   #. power off the node"},{"line_number":254,"context_line":"   #. remove provisioning network"},{"line_number":255,"context_line":"   #. configure tenant networks"},{"line_number":256,"context_line":"   #. power on the node"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_0adcf86e","line":254,"in_reply_to":"3fa7e38b_f5af0d79","updated":"2019-12-12 16:42:20.000000000","message":"Certainly possible. What network should the node be on at the time?","commit_id":"5d3af5e039af0c69d7d20f07003a4513d73eb505"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"01e262f9780366b0858a30f49cb6db023b31b72f","unresolved":false,"context_lines":[{"line_number":265,"context_line":"Changes will be necessary for fast track deploys, to skip the direct call to"},{"line_number":266,"context_line":"``continue_deploy`` and rely on the new deploy steps. For boot from volume this"},{"line_number":267,"context_line":"step currently performs the tenant network configuration, instance preparation"},{"line_number":268,"context_line":"and reboot, however that can also be moved to the new steps."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"write_image"},{"line_number":271,"context_line":"^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_5c53c53a","line":268,"updated":"2020-01-07 15:14:58.000000000","message":"I wonder if we should separate the \u0027prepare()\u0027 (or parts of the prepare()) from the deploy step, but maybe that will become clearer while splitting this up. And I think we can prob do that later too, since the priority of these would be \u003e 100. So forget I brought this up.","commit_id":"2c1881b5c4030f0990ae8773e219463e9e9f23a9"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"01e262f9780366b0858a30f49cb6db023b31b72f","unresolved":false,"context_lines":[{"line_number":330,"context_line":"* the ``deploy`` interface may provide both in-band and out-of-band deploy"},{"line_number":331,"context_line":"  steps"},{"line_number":332,"context_line":"* there is no equivalent of manual cleaning"},{"line_number":333,"context_line":"* IPA version mismatch will lead to termination of deployment"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"In-band deploy steps must have a priority between 76 and 99 to ensure they"},{"line_number":336,"context_line":"execute after ``deploy`` and before ``remove_provisioning_network``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_1c60ed34","line":333,"updated":"2020-01-07 15:14:58.000000000","message":"For automated cleaning, when there is a version mismatch, we restart the cleaning. Why not restart the deployment?","commit_id":"2c1881b5c4030f0990ae8773e219463e9e9f23a9"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dc40949ab86744c29127c23566a0154c0fb18dbc","unresolved":false,"context_lines":[{"line_number":330,"context_line":"* the ``deploy`` interface may provide both in-band and out-of-band deploy"},{"line_number":331,"context_line":"  steps"},{"line_number":332,"context_line":"* there is no equivalent of manual cleaning"},{"line_number":333,"context_line":"* IPA version mismatch will lead to termination of deployment"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"In-band deploy steps must have a priority between 76 and 99 to ensure they"},{"line_number":336,"context_line":"execute after ``deploy`` and before ``remove_provisioning_network``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_49952587","line":333,"in_reply_to":"3fa7e38b_1c60ed34","updated":"2020-01-09 11:48:17.000000000","message":"In general we don\u0027t restart deployments for any reason currently. Cleaning failure requires operator intervention, deployment does not. Maybe it\u0027s something we should consider. In general though we might prefer allowing a higher layer (nova) to perform a retry.","commit_id":"2c1881b5c4030f0990ae8773e219463e9e9f23a9"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"6bad723def90ef75b6e1b59c0e1b35759144f8f4","unresolved":false,"context_lines":[{"line_number":330,"context_line":"* the ``deploy`` interface may provide both in-band and out-of-band deploy"},{"line_number":331,"context_line":"  steps"},{"line_number":332,"context_line":"* there is no equivalent of manual cleaning"},{"line_number":333,"context_line":"* IPA version mismatch will lead to termination of deployment"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"In-band deploy steps must have a priority between 76 and 99 to ensure they"},{"line_number":336,"context_line":"execute after ``deploy`` and before ``remove_provisioning_network``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_35e836a5","line":333,"in_reply_to":"3fa7e38b_49952587","updated":"2020-01-09 15:58:26.000000000","message":"Lets see how it goes. We can always add a restart feature later (configurable of course!)\n\nI\u0027m not sure how nova would know whether it would be ok to retry or not, given it is an IPA version mismatch...? Anyway, something to think about/future.","commit_id":"2c1881b5c4030f0990ae8773e219463e9e9f23a9"}]}
