)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9e696533ec09ea61e9ac6ae32e1a0e1a7e0dc900","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1393a692_5fe03da9","updated":"2023-02-03 12:14:35.000000000","message":"Thank you Julia. Looks good to me. I added some minor comments and some questions (more to help my understanding of the topic than anything)","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"0d3242d89b3b8a54b33d134384c99cceda45462a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0b892e3e_a9c9a9bf","updated":"2023-02-01 05:15:59.000000000","message":"Thank you, Julia! Adding myself and Moshe to reviewers for visibility.","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"18fff2d505d3519877797f63e6821eb709d9dbe4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6336fdfd_57c47a37","updated":"2023-02-20 23:17:30.000000000","message":"I don\u0027t love the name modify for this; it implies this would only be to support changes when in reality,  it can do anything cleaning can -- including business logic validation against servers as we have examples for.\n\nI will ponder a better name; I liked it at first but upon reflection I think modify puts this in a box that it may not belong in.","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"6fee2a2481e1c505e6d20a7cc554f56656671e6d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7f91221d_6da1a0b2","updated":"2023-02-21 04:23:11.000000000","message":"Thank you Julia and Jay, some comments \u0026 ideas in-line.","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"4bf5006aeb6dbc61dc2b1ad3b856508c0b5ae5d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"106eab4f_d601eb30","updated":"2023-02-21 05:51:44.000000000","message":"Thank you Julia, great work. LGTM.\n\nI added some further comments on MODIFY vs other verbs as per the earlier discussion however personally I am happy to proceed either way based on community (lazy) consensus on the terminology.","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6719f692b356fef3b3daa2ded3a2d6a9f887fe00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8c9424db_ac69c61f","in_reply_to":"6336fdfd_57c47a37","updated":"2023-02-21 19:32:41.000000000","message":"So one thing that led me towards modify from \"active\" is we are taking the node out of service for $something. And inherently, even if your taking the machine down to perform, say policy validation of the running OS, or even snapshotting it, your still making some sort of modification to the state, system, or even just the metadata about it. The net effect may be moot though, and I think that is okay.\n\nAnyway, naming is also the root of all evil. :)","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"39601bc2cd49453aa2036ae19175794c23f74ab5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ed688017_324f7d60","updated":"2023-03-14 20:53:25.000000000","message":"I feel pretty strongly about not adding the new SERVICE stable state. If that didn\u0027t exist, I would +2 this right now.","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"6c2f851f1ef73beab80391c2ee05b325943581e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c013695c_18818724","updated":"2023-03-14 22:13:33.000000000","message":"Notes on patchset 4 are still valid,","commit_id":"f011b75ae78e8f21a241c890fb1d649aa1ab05eb"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"02f126c952cf2f2076251b84c063471ae447b1a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"78534ca9_5eaabe3a","in_reply_to":"c013695c_18818724","updated":"2023-03-14 22:14:01.000000000","message":"this was leftover, didn\u0027t mean to submit it with this comment","commit_id":"f011b75ae78e8f21a241c890fb1d649aa1ab05eb"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"911e816e8b5e59b2652d2c3376d2b8bec2ea6014","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bdc386cd_a1cba0e9","updated":"2023-03-28 21:29:02.000000000","message":"This was discussed at PTG today. I think we determined a solution for the stable state disagreements.\n\nInstead of a bespoke stable state for parking a node; instead we are going to add a step to \"hold\" a node. That node would go into {CLEAN,DEPLOY,SERVICE}_HOLD as appropriate. The only way to resume processing steps on that node would be a full ABORT or an API call telling it to resume. This can be useful for coordinating external services, or human intervention, with automated Ironic steps.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"2bd675a242735180d654c4fba97cb29ecef0b0bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1f3e6eb5_f0592365","updated":"2023-04-13 20:38:45.000000000","message":"lgtm, not going to +W now since we have an open question.","commit_id":"a05c9ee0bef8eb0233cf67073639a9af63423920"}],"specs/approved/active-steps.rst":[{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9e696533ec09ea61e9ac6ae32e1a0e1a7e0dc900","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Unfortunately, Ironic has limited options in this area for infrastructure"},{"line_number":19,"context_line":"operators who wish to automate activities such as \"upgrading firmware\","},{"line_number":20,"context_line":"or \"changing low level settings\" when a system is deployed. Today they can"},{"line_number":21,"context_line":"possibly leverage the **rescue** process, but that also means they have to"},{"line_number":22,"context_line":"articulate everything after the rescue process had completed."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"c7740158_6166c9bf","line":20,"range":{"start_line":20,"start_character":49,"end_line":20,"end_character":50},"updated":"2023-02-03 12:14:35.000000000","message":"already","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c85c1154429a388c4329b1add8e95fcf8ebc38b7","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Unfortunately, Ironic has limited options in this area for infrastructure"},{"line_number":19,"context_line":"operators who wish to automate activities such as \"upgrading firmware\","},{"line_number":20,"context_line":"or \"changing low level settings\" when a system is deployed. Today they can"},{"line_number":21,"context_line":"possibly leverage the **rescue** process, but that also means they have to"},{"line_number":22,"context_line":"articulate everything after the rescue process had completed."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"610105d5_5e49000d","line":20,"range":{"start_line":20,"start_character":49,"end_line":20,"end_character":50},"in_reply_to":"c7740158_6166c9bf","updated":"2023-02-03 21:36:18.000000000","message":"Done","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9e696533ec09ea61e9ac6ae32e1a0e1a7e0dc900","unresolved":true,"context_lines":[{"line_number":22,"context_line":"articulate everything after the rescue process had completed."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Yet Ironic also has quite a bit of tooling to enable settings to be"},{"line_number":25,"context_line":"changed as part of cleaning, and we should provide capability to leverage"},{"line_number":26,"context_line":"it, or to do something arbitrary."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Problem description"},{"line_number":29,"context_line":"\u003d\u003d\u003d\u003d\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":"8837e1c2_c89999ba","line":26,"range":{"start_line":25,"start_character":18,"end_line":26,"end_character":33},"updated":"2023-02-03 12:14:35.000000000","message":"a small suggestion - trying to reinforce the fact that we already have some of the steps that can be used to update firmware or firmware/BIOS settings, however we are missing a mechanism to run these steps on ACTIVE nodes:\n\n\"deployment or cleaning. It would be valuable to provide a mechanism that will allow using existing steps such as updating firmware and changing BIOS settings not only on nodes that are being deployed or cleaned but also on nodes that in ACTIVE state. The same mechanism can be used to support steps that may be only applicable to nodes in ACTIVE state or to execute arbitrary actions.\"","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"6fee2a2481e1c505e6d20a7cc554f56656671e6d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"articulate everything after the rescue process had completed."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Yet Ironic also has quite a bit of tooling to enable settings to be"},{"line_number":25,"context_line":"changed as part of cleaning, and we should provide capability to leverage"},{"line_number":26,"context_line":"it, or to do something arbitrary."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Problem description"},{"line_number":29,"context_line":"\u003d\u003d\u003d\u003d\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":"0e3b6d79_95ccb0fa","line":26,"range":{"start_line":25,"start_character":18,"end_line":26,"end_character":33},"in_reply_to":"74ffe63c_b755fb3d","updated":"2023-02-21 04:23:11.000000000","message":"Reads great now, thank you Julia.","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c85c1154429a388c4329b1add8e95fcf8ebc38b7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"articulate everything after the rescue process had completed."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Yet Ironic also has quite a bit of tooling to enable settings to be"},{"line_number":25,"context_line":"changed as part of cleaning, and we should provide capability to leverage"},{"line_number":26,"context_line":"it, or to do something arbitrary."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Problem description"},{"line_number":29,"context_line":"\u003d\u003d\u003d\u003d\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":"74ffe63c_b755fb3d","line":26,"range":{"start_line":25,"start_character":18,"end_line":26,"end_character":33},"in_reply_to":"8837e1c2_c89999ba","updated":"2023-02-03 21:36:18.000000000","message":"Agree, however I\u0027ve rewrote the end of the paragraph to be short and clear on the overall idea.","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9e696533ec09ea61e9ac6ae32e1a0e1a7e0dc900","unresolved":true,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"To do this, we will implement a **modify** API verb which will move a node"},{"line_number":52,"context_line":"into a **modifying** state, in line with the existing cleaning and deploy"},{"line_number":53,"context_line":"processes. The IPA ramdisk will be booted utilized, and the node will enter"},{"line_number":54,"context_line":"a **modify wait** state."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Once IPA is online, two possible paths can be taken."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ceb4cca9_cff1a646","line":53,"range":{"start_line":53,"start_character":35,"end_line":53,"end_character":50},"updated":"2023-02-03 12:14:35.000000000","message":"maybe just \"booted\" or \"utilized\"?","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c85c1154429a388c4329b1add8e95fcf8ebc38b7","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"To do this, we will implement a **modify** API verb which will move a node"},{"line_number":52,"context_line":"into a **modifying** state, in line with the existing cleaning and deploy"},{"line_number":53,"context_line":"processes. The IPA ramdisk will be booted utilized, and the node will enter"},{"line_number":54,"context_line":"a **modify wait** state."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Once IPA is online, two possible paths can be taken."}],"source_content_type":"text/x-rst","patch_set":1,"id":"c60ce356_e63c9cff","line":53,"range":{"start_line":53,"start_character":35,"end_line":53,"end_character":50},"in_reply_to":"ceb4cca9_cff1a646","updated":"2023-02-03 21:36:18.000000000","message":"eh, likely just booted, I was likely thinking something else and got interrupted.","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9e696533ec09ea61e9ac6ae32e1a0e1a7e0dc900","unresolved":false,"context_lines":[{"line_number":60,"context_line":"**modifying** state, heartbeat, and upon all steps completed, the node will"},{"line_number":61,"context_line":"automatically return to the **active** state."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"If the **modify** verb was invoked without a ``modify_steps`` parameter,"},{"line_number":64,"context_line":"then the node will move to a new stable **modify** state, and remain there"},{"line_number":65,"context_line":"until after a **active** or **unmodify** verb has been receieved by the API."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"To achive this, we will also need to:"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"0bbfc68a_8a95f49e","line":65,"range":{"start_line":63,"start_character":0,"end_line":65,"end_character":76},"updated":"2023-02-03 12:14:35.000000000","message":"Not a suggestion, just an enthusiastic comment: I haven\u0027t thought about this during our initial discussion at the PTG but I think that\u0027s a great idea - perhaps to prototype or test a firmware upgrade procedure on a single node prior to rolling it out to a greater number - but while retaining the same IPA environment. Firmware flashing tools are picky at times and require dependencies that IPA may or may not have.","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c85c1154429a388c4329b1add8e95fcf8ebc38b7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"**modifying** state, heartbeat, and upon all steps completed, the node will"},{"line_number":61,"context_line":"automatically return to the **active** state."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"If the **modify** verb was invoked without a ``modify_steps`` parameter,"},{"line_number":64,"context_line":"then the node will move to a new stable **modify** state, and remain there"},{"line_number":65,"context_line":"until after a **active** or **unmodify** verb has been receieved by the API."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"To achive this, we will also need to:"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ec46b29_39ea3615","line":65,"range":{"start_line":63,"start_character":0,"end_line":65,"end_character":76},"in_reply_to":"0bbfc68a_8a95f49e","updated":"2023-02-03 21:36:18.000000000","message":"Which was kind of why I was thinking of other ramdisks as well.","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9e696533ec09ea61e9ac6ae32e1a0e1a7e0dc900","unresolved":true,"context_lines":[{"line_number":79,"context_line":"* Introduction of, or modification of existing housekeeping periodic steps"},{"line_number":80,"context_line":"  to include handling for the newly proposed states. In particular,"},{"line_number":81,"context_line":"  modification is preferred from a database efficiency standpoint, however"},{"line_number":82,"context_line":"  it is ultimately the implementer\u0027s progative."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Operationally, should a stable modify state be utilized, the node will"},{"line_number":85,"context_line":"be treated similarly to the existing Rescue interface in terms of network"}],"source_content_type":"text/x-rst","patch_set":1,"id":"06b71a1a_2ce4531b","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":46},"updated":"2023-02-03 12:14:35.000000000","message":"prerogative?","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c85c1154429a388c4329b1add8e95fcf8ebc38b7","unresolved":false,"context_lines":[{"line_number":79,"context_line":"* Introduction of, or modification of existing housekeeping periodic steps"},{"line_number":80,"context_line":"  to include handling for the newly proposed states. In particular,"},{"line_number":81,"context_line":"  modification is preferred from a database efficiency standpoint, however"},{"line_number":82,"context_line":"  it is ultimately the implementer\u0027s progative."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Operationally, should a stable modify state be utilized, the node will"},{"line_number":85,"context_line":"be treated similarly to the existing Rescue interface in terms of network"}],"source_content_type":"text/x-rst","patch_set":1,"id":"920c9897_1c3e4a58","line":82,"range":{"start_line":82,"start_character":37,"end_line":82,"end_character":46},"in_reply_to":"06b71a1a_2ce4531b","updated":"2023-02-03 21:36:18.000000000","message":"Thanks, this is what I get for not having a spell checker.","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9e696533ec09ea61e9ac6ae32e1a0e1a7e0dc900","unresolved":false,"context_lines":[{"line_number":129,"context_line":"+--------------------+-------------------------------------------------------+"},{"line_number":130,"context_line":"| states.MODIFY      | New stable state to represent a ndoe being modified   |"},{"line_number":131,"context_line":"|                    | by a system operator.                                 |"},{"line_number":132,"context_line":"+--------------------+-------------------------------------------------------+"},{"line_number":133,"context_line":"| states.UNMODIFY    | A new unstable state to indicate a node is exiting a  |"},{"line_number":134,"context_line":"|                    | modify state and returning to an active state.        |"},{"line_number":135,"context_line":"+--------------------+-------------------------------------------------------+"},{"line_number":136,"context_line":"| states.MODIFYERROR | An error state to indicate therew as an error in the  |"},{"line_number":137,"context_line":"|                    | process of handling the request. This is a stable     |"},{"line_number":138,"context_line":"|                    | state until the operator removes the node from it.    |"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a5d3cec2_af51b0a4","line":135,"range":{"start_line":132,"start_character":0,"end_line":135,"end_character":78},"updated":"2023-02-03 12:14:35.000000000","message":"This is more of a question than a comment: We don\u0027t have a comparable state for cleaning and deploying, correct? The transitions are direct like cleaning \u003e available|managable and deploying \u003e active. I feel I don\u0027t fully understand why modifying is different and needs that extra state. Is this because we want to support modify state with no modify steps ( https://review.opendev.org/c/openstack/ironic-specs/+/872349/1/specs/approved/active-steps.rst#63 )?","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c85c1154429a388c4329b1add8e95fcf8ebc38b7","unresolved":false,"context_lines":[{"line_number":129,"context_line":"+--------------------+-------------------------------------------------------+"},{"line_number":130,"context_line":"| states.MODIFY      | New stable state to represent a ndoe being modified   |"},{"line_number":131,"context_line":"|                    | by a system operator.                                 |"},{"line_number":132,"context_line":"+--------------------+-------------------------------------------------------+"},{"line_number":133,"context_line":"| states.UNMODIFY    | A new unstable state to indicate a node is exiting a  |"},{"line_number":134,"context_line":"|                    | modify state and returning to an active state.        |"},{"line_number":135,"context_line":"+--------------------+-------------------------------------------------------+"},{"line_number":136,"context_line":"| states.MODIFYERROR | An error state to indicate therew as an error in the  |"},{"line_number":137,"context_line":"|                    | process of handling the request. This is a stable     |"},{"line_number":138,"context_line":"|                    | state until the operator removes the node from it.    |"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6f9fd7ab_ff59f931","line":135,"range":{"start_line":132,"start_character":0,"end_line":135,"end_character":78},"in_reply_to":"a5d3cec2_af51b0a4","updated":"2023-02-03 21:36:18.000000000","message":"You are correct, we don\u0027t have a directly comparable state with cleaning/deploy, but we do in rescue, and it seems like an obvious case that someone may wish to be able to fire up a ramdisk and modify things manually.\n\nSo, basically, yes!","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9e696533ec09ea61e9ac6ae32e1a0e1a7e0dc900","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Security impact"},{"line_number":256,"context_line":"---------------"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"No security impact is anticipated."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Other end user impact"},{"line_number":261,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c0f78e36_1a23fe51","line":258,"range":{"start_line":257,"start_character":0,"end_line":258,"end_character":34},"updated":"2023-02-03 12:14:35.000000000","message":"This will typically be an admin-only feature, correct? (https://review.opendev.org/c/openstack/ironic-specs/+/872349/1/specs/approved/active-steps.rst#333) Otherwise my question would be whether active steps could be potentially used to install modified firmware in ways that clean/deploy steps do not allow?\nJust thinking aloud here.","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c85c1154429a388c4329b1add8e95fcf8ebc38b7","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Security impact"},{"line_number":256,"context_line":"---------------"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"No security impact is anticipated."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"Other end user impact"},{"line_number":261,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"280a8559_0e6def4c","line":258,"range":{"start_line":257,"start_character":0,"end_line":258,"end_character":34},"in_reply_to":"c0f78e36_1a23fe51","updated":"2023-02-03 21:36:18.000000000","message":"I think it would be admin/owner which would already be able to utilize the existing functionality if they were to articulate it all out.\n\nI\u0027m going to revise that to specify what we anticipate.\n\n...\n\nAnd actually, yes, there is. We need to explicitly prevent lesses from using this feature.","commit_id":"d6816e1aa3f991c4205fcf61dbd933d50c84943d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"18fff2d505d3519877797f63e6821eb709d9dbe4","unresolved":true,"context_lines":[{"line_number":30,"context_line":"Problem description"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Deployed systems need to be able to be modified:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* Firmware settings and software sometimes need to be modified or updated."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9de30e10_18eed4b6","line":33,"updated":"2023-02-20 23:17:30.000000000","message":"I think there are potentially more cases here than modification. You could use these to validate a server is operating within a stated security policy, run diagnostics, or literally any thing you\u0027d want to do in cleaning. Honestly I think the compliance sort of thing is extremely interesting... \n\nThere\u0027s no technical limitation that exists, nor one that we can create, that would prevent this from modifying OS on disk. This is a major risk but also a major benefit if we sell it that way.","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"6fee2a2481e1c505e6d20a7cc554f56656671e6d","unresolved":true,"context_lines":[{"line_number":30,"context_line":"Problem description"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Deployed systems need to be able to be modified:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* Firmware settings and software sometimes need to be modified or updated."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ac6cf94e_5ffeb0de","line":33,"in_reply_to":"9de30e10_18eed4b6","updated":"2023-02-21 04:23:11.000000000","message":"Suggestion 1 based on Jay\u0027s insights:\nShooting from the hip: how about maintenance? That\u0027s essentially what it is. Taking the node/workload offline to do some hardware maintenance one way or another. I know we use maintenance mode in a different context so gotta be careful here but just throwing it out there as food for thought. Maybe this idea will bring further, more practical ones :)\nI do have to say though I like maintenance much less once we start adding prefixes and suffixes. MAINTAINING - maybe - but UNMAINTAINING? O_o\n\nSuggestion 2:\nMaybe (IN_)SERVICE / SERVICING?\nDictionary definition: \"Servicing: to perform routine maintenance or repair work on (a vehicle or machine)\".\nSERVICING... UNSERVICING... maybe?\nI think I am running out of talent here so will stop now and hand over to others.\nHaving said all this I am happy to keep the MODIFY(ING) if we can\u0027t come up with anything better.","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6719f692b356fef3b3daa2ded3a2d6a9f887fe00","unresolved":true,"context_lines":[{"line_number":30,"context_line":"Problem description"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Deployed systems need to be able to be modified:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* Firmware settings and software sometimes need to be modified or updated."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"f3bc406e_c45425f9","line":33,"in_reply_to":"ac6cf94e_5ffeb0de","updated":"2023-02-21 19:32:41.000000000","message":"Maintenance has a pre-defined use and meaning. To give it a double meaning might be problematic from a conceptual understanding standpoint, so I think we would want to avoid that. Also, we\u0027re inherently talking about a verb as well, which doesn\u0027t help.\n\nI could just see sudden moments of alarm in an operations center if someone said \"I\u0027m going to unmaintain the machine now\". But that whole thought does flash me back to a discussion of the meaning of \"maintain\" and \"support\", which can have different meanings in different cultures, and how we would most likely want to be very careful around those words because the meaning can become overloaded outside of the original context.\n\n\"service\" and the permutations could work. I don\u0027t love it, but I also don\u0027t dislike it either. It might grow on me. Jay, any thoughts?","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cc564fc6127d71bc8891a4b89e603dedac66d753","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Problem description"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Deployed systems need to be able to be modified:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* Firmware settings and software sometimes need to be modified or updated."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"a7e0d649_df05d5e7","line":33,"in_reply_to":"f3bc406e_c45425f9","updated":"2023-03-14 22:03:53.000000000","message":"Okay, I\u0027ve changed the text to service/servicing and so on and so forth. I believe that covers  \"I need to do a thing that may not be a state modification.\"","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"18fff2d505d3519877797f63e6821eb709d9dbe4","unresolved":true,"context_lines":[{"line_number":99,"context_line":"the rescue framework, which is not ideal and has no capability for step"},{"line_number":100,"context_line":"execution."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Another possibility could be to hijack the existing rebuild verb, however"},{"line_number":103,"context_line":"rebuild has always suggested \"re-deployment\", so that is inherently"},{"line_number":104,"context_line":"problematic."},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"a9673444_e9d604a4","line":102,"updated":"2023-02-20 23:17:30.000000000","message":"extremely no to this; rebuild means rebuild :D\n\nI don\u0027t even grok how this could be an alternative","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6719f692b356fef3b3daa2ded3a2d6a9f887fe00","unresolved":true,"context_lines":[{"line_number":99,"context_line":"the rescue framework, which is not ideal and has no capability for step"},{"line_number":100,"context_line":"execution."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Another possibility could be to hijack the existing rebuild verb, however"},{"line_number":103,"context_line":"rebuild has always suggested \"re-deployment\", so that is inherently"},{"line_number":104,"context_line":"problematic."},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"a0cde023_b5d592a4","line":102,"in_reply_to":"2ba3964b_ebdf5ad9","updated":"2023-02-21 19:32:41.000000000","message":"I completely agree.\n\nSo the take away is to put a .. note:: we discussed this in the spec and it was a \"nope, never\" reaction amongst cores.\n\nHonestly, that was kind of the way I was thinking originally as well, but it was something I could see as being slightly extended to facilitate the overall interaction.","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cc564fc6127d71bc8891a4b89e603dedac66d753","unresolved":true,"context_lines":[{"line_number":99,"context_line":"the rescue framework, which is not ideal and has no capability for step"},{"line_number":100,"context_line":"execution."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Another possibility could be to hijack the existing rebuild verb, however"},{"line_number":103,"context_line":"rebuild has always suggested \"re-deployment\", so that is inherently"},{"line_number":104,"context_line":"problematic."},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"37de4e8d_d9a758bf","line":102,"in_reply_to":"a0cde023_b5d592a4","updated":"2023-03-14 22:03:53.000000000","message":"I\u0027m revising the text to kind of further detail the origins/results of the ideas I have been kind thinking of. I guess I\u0027m keeping them because there is no explicit requirement that the alternative has to be at the same level of scope, capability, or popularity.","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"6fee2a2481e1c505e6d20a7cc554f56656671e6d","unresolved":true,"context_lines":[{"line_number":99,"context_line":"the rescue framework, which is not ideal and has no capability for step"},{"line_number":100,"context_line":"execution."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Another possibility could be to hijack the existing rebuild verb, however"},{"line_number":103,"context_line":"rebuild has always suggested \"re-deployment\", so that is inherently"},{"line_number":104,"context_line":"problematic."},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"2ba3964b_ebdf5ad9","line":102,"in_reply_to":"a9673444_e9d604a4","updated":"2023-02-21 04:23:11.000000000","message":"While I don\u0027t feel about it as strongly as Jay, I agree, let\u0027s keep rebuild the way it is. Rebuild has its place; also I *think* it is good for nova compatibility.","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"4bf5006aeb6dbc61dc2b1ad3b856508c0b5ae5d8","unresolved":true,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"The general flow will be:"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  **ACTIVE** -\u003e **MODIFYING** -\u003e **MODIFYWAIT** -\u003e **MODIFY**"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"In the case of the unmodify verb being issued:"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bb260758_7e8578d3","line":147,"updated":"2023-02-21 05:51:44.000000000","message":"If we were to use \"service\" as the verb this would look like:\n  **ACTIVE** -\u003e **SERVICING** -\u003e **SERVICEWAIT** -\u003e **SERVICE**\n  \n@JayF @TheJulia WDYT?","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cc564fc6127d71bc8891a4b89e603dedac66d753","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"The general flow will be:"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  **ACTIVE** -\u003e **MODIFYING** -\u003e **MODIFYWAIT** -\u003e **MODIFY**"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"In the case of the unmodify verb being issued:"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf5496bd_0aeaa713","line":147,"in_reply_to":"4c9fa2c3_85e2e3b4","updated":"2023-03-14 22:03:53.000000000","message":"Done","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6719f692b356fef3b3daa2ded3a2d6a9f887fe00","unresolved":true,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"The general flow will be:"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  **ACTIVE** -\u003e **MODIFYING** -\u003e **MODIFYWAIT** -\u003e **MODIFY**"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"In the case of the unmodify verb being issued:"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"4c9fa2c3_85e2e3b4","line":147,"in_reply_to":"bb260758_7e8578d3","updated":"2023-02-21 19:32:41.000000000","message":"Still pondering, I don\u0027t hate it.\n\nAnd it does semi-align\n\nAnd sometimes service is preventative. Such as performing a thermal inspection of my electrical panels last weekend. It yielded some issues, I now have replacement parts and I will SERVICE it later.\n\nWe might need to make a rule about jokes though.","commit_id":"d2735eba6d4adffdf5a39c8f16881b255a4bad4c"}],"specs/approved/service-steps.rst":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"39601bc2cd49453aa2036ae19175794c23f74ab5","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"A reality in the operation of systems is that sometimes things need to"},{"line_number":14,"context_line":"be changed. An additional unfortunate reality is that the closer we get"},{"line_number":15,"context_line":"to the underlying infrastrucutre, the greater the burden it is to take a"},{"line_number":16,"context_line":"model of \"just redeploy with new settings\"."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Unfortunately, Ironic has limited options in this area for infrastructure"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7027eb6f_dc7e6cc0","line":15,"updated":"2023-03-14 20:53:25.000000000","message":"nit: infrastructure","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2431c7a68843ca16817c1ed92201a6d63bff3142","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"A reality in the operation of systems is that sometimes things need to"},{"line_number":14,"context_line":"be changed. An additional unfortunate reality is that the closer we get"},{"line_number":15,"context_line":"to the underlying infrastrucutre, the greater the burden it is to take a"},{"line_number":16,"context_line":"model of \"just redeploy with new settings\"."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Unfortunately, Ironic has limited options in this area for infrastructure"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ef74376_5b0a9df9","line":15,"in_reply_to":"7027eb6f_dc7e6cc0","updated":"2023-03-16 18:37:21.000000000","message":"Done","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"39601bc2cd49453aa2036ae19175794c23f74ab5","unresolved":true,"context_lines":[{"line_number":42,"context_line":"  state of the hardware and software from an \"out of bands\" process,"},{"line_number":43,"context_line":"  which may result in the hardware being removed from inventory, or returned"},{"line_number":44,"context_line":"  to a running state if no issue are detected."},{"line_number":45,"context_line":" "},{"line_number":46,"context_line":"* Operations teams needing to test the Memory, CPU, or Network in order to"},{"line_number":47,"context_line":"  identify an issue or address a customer concern."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"08e90f47_2ec35f49","line":45,"updated":"2023-03-14 20:53:25.000000000","message":"nit: whitespace","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2431c7a68843ca16817c1ed92201a6d63bff3142","unresolved":false,"context_lines":[{"line_number":42,"context_line":"  state of the hardware and software from an \"out of bands\" process,"},{"line_number":43,"context_line":"  which may result in the hardware being removed from inventory, or returned"},{"line_number":44,"context_line":"  to a running state if no issue are detected."},{"line_number":45,"context_line":" "},{"line_number":46,"context_line":"* Operations teams needing to test the Memory, CPU, or Network in order to"},{"line_number":47,"context_line":"  identify an issue or address a customer concern."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e1df7363_4626d21c","line":45,"in_reply_to":"08e90f47_2ec35f49","updated":"2023-03-16 18:37:21.000000000","message":"Done","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"39601bc2cd49453aa2036ae19175794c23f74ab5","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"If the **service** verb was invoked without a ``service_steps`` parameter,"},{"line_number":74,"context_line":"then the node will move to a new stable **service** state, and remain there"},{"line_number":75,"context_line":"until after an **active** or **unservice** verb has been receieved by the API."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"To achive this, we will also need to:"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f52aaa8_578136cc","line":75,"updated":"2023-03-14 20:53:25.000000000","message":"I do not think we should support this. How would this differ from maintenance? \n\nI\u0027m on board for running service steps, but another freeform way for a node to get \"paused\" is going to add complexity that we don\u0027t need IMO. Overloading what \"SERVICE\" means (even if we draw a line via SERVICE vs SERVICING) is going to be confusing. \n\nFrankly I don\u0027t see these items as related: we do not have any way, for instance, for an operator to do a manual, hands-on deploy or cleaning. We should continue to parallel that behavior, and encourage the use of maintenance mode for active nodes that need interactive operator work done on them.","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2431c7a68843ca16817c1ed92201a6d63bff3142","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"If the **service** verb was invoked without a ``service_steps`` parameter,"},{"line_number":74,"context_line":"then the node will move to a new stable **service** state, and remain there"},{"line_number":75,"context_line":"until after an **active** or **unservice** verb has been receieved by the API."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"To achive this, we will also need to:"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ff57c213_d79b6096","line":75,"in_reply_to":"4066bc5d_f0b2a5ec","updated":"2023-03-16 18:37:21.000000000","message":"I think in the mean time, I\u0027ll amend it add a note with options. I was actually talking with one of our field folks today who (unprompted) commented about maintenance and misconceptions, and even the need to really convey \"I\u0027m doing something\" which aligned with my prior comments. Definitely an area where we need to be careful with naming.","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cc564fc6127d71bc8891a4b89e603dedac66d753","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"If the **service** verb was invoked without a ``service_steps`` parameter,"},{"line_number":74,"context_line":"then the node will move to a new stable **service** state, and remain there"},{"line_number":75,"context_line":"until after an **active** or **unservice** verb has been receieved by the API."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"To achive this, we will also need to:"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"6f23caba_b7fa77dd","line":75,"in_reply_to":"5f52aaa8_578136cc","updated":"2023-03-14 22:03:53.000000000","message":"Maintenance as a flag is \"don\u0027t do anything\", the service state from an intent is more \"it is being worked on\" where orchestration is still at play. You can\u0027t issue verbs/commands in maintenance state. In a nova-centric world (so ~50% of our users), the machine just can\u0027t be scheduled upon, but the whole case for this, the verb, and whatnot is so that a deployed node can be changed.\n\nThe main reason why I think it is important to have is so we *can* enable disjointed systems. Someone or a piece of software can perform various actions automatically, go verify or do a single disjointed step (say, imaging the local storage), and then additional automated steps can be executed to return it to normal state.\n\nI guess my point is, if we don\u0027t have a stable state, then we\u0027re forcing everything to be entirely ironic native which I suspect the non-developer Ironic users might find frustrating and sort of a non-starter. I feel pretty strongly that we ought to be able to drop the node into a stable state of some sort for $human things or for independent/process verification before proceeding. The maintenance flag is just not that in my opinion.\n\nI guess, we could have a \"pause\" step or \"exit\" clean/deploy/etc step which kicks a node out. Pause is something I\u0027ve got proposed on the DPU support change. That could be a bit nasty, or humans can possibly force a fail with a step so they can pause things.\n\nI guess it is amusing because you didn\u0027t express this when it was modify/modifying, so I can\u0027t help but wonder if it is just overloading of names that got us here.\n\nAnother aspect, and part of the inspiration I drew from was I\u0027m aware of quite a few operators who miss-use rescue for this very sort purpose and class of operations today.","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"6c2f851f1ef73beab80391c2ee05b325943581e4","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"If the **service** verb was invoked without a ``service_steps`` parameter,"},{"line_number":74,"context_line":"then the node will move to a new stable **service** state, and remain there"},{"line_number":75,"context_line":"until after an **active** or **unservice** verb has been receieved by the API."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"To achive this, we will also need to:"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"4066bc5d_f0b2a5ec","line":75,"in_reply_to":"6f23caba_b7fa77dd","updated":"2023-03-14 22:13:33.000000000","message":"If we need this concept, IMO it should absolutely not overload the name. SERVICE vs SERVICING is really just a semantic difference that will not have significant meaning to someone who hasn\u0027t memorized our provision states.\n\nI don\u0027t really think it\u0027s related to Ironic-powered service-steps either, but I can see why you want to bundle them... but I think we can find a way to do it that doesn\u0027t introduce confusingly similar-but-different nomenclature ala SERVICE vs SERVICING.\n\nMaybe even OUT_OF_SERVICE or similar would work? I\u0027ll think about names...","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7757404e6d60b82e910eca0079ea065ddedd3dee","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"If the **service** verb was invoked without a ``service_steps`` parameter,"},{"line_number":74,"context_line":"then the node will move to a new stable **service** state, and remain there"},{"line_number":75,"context_line":"until after an **active** or **unservice** verb has been receieved by the API."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"To achive this, we will also need to:"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"d76a8511_808aa913","line":75,"in_reply_to":"ff57c213_d79b6096","updated":"2023-04-06 19:03:24.000000000","message":"Done","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"39601bc2cd49453aa2036ae19175794c23f74ab5","unresolved":true,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"In addition to these new states, new state verbs are anticipated:"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"* service "},{"line_number":195,"context_line":"* unservice"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"In the process of moving back from a service state, the node will have a boot"}],"source_content_type":"text/x-rst","patch_set":4,"id":"db7d6260_0aad2e7a","line":194,"updated":"2023-03-14 20:53:25.000000000","message":"nit: whitespace","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2431c7a68843ca16817c1ed92201a6d63bff3142","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"In addition to these new states, new state verbs are anticipated:"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"* service "},{"line_number":195,"context_line":"* unservice"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"In the process of moving back from a service state, the node will have a boot"}],"source_content_type":"text/x-rst","patch_set":4,"id":"56a5c4f0_0a1b3af0","line":194,"in_reply_to":"db7d6260_0aad2e7a","updated":"2023-03-16 18:37:21.000000000","message":"Done","commit_id":"7bdcc25bb42a849b499381acc91fbc7bef00a5c1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":58,"context_line":"execute steps and return the node to an **active** state, as well as a"},{"line_number":59,"context_line":"standing state to allow operators to perform their other needful actions."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"To do this, we will implement a **service** API verb which will move a node"},{"line_number":62,"context_line":"into a **servicing** state, in line with the existing cleaning and deploy"},{"line_number":63,"context_line":"processes. The IPA ramdisk will be booted, and the node will enter a"},{"line_number":64,"context_line":"**service wait** state."}],"source_content_type":"text/x-rst","patch_set":6,"id":"0a8e2755_a26d8c27","line":61,"updated":"2023-03-17 11:21:33.000000000","message":"I like \"service\"!","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a53e8b9839299324010390acf025cc10d4171f36","unresolved":false,"context_lines":[{"line_number":68,"context_line":"If the **service** verb was invoked with with a ``service_steps`` parameter,"},{"line_number":69,"context_line":"in the same line of ``clean steps``, then the node state will return to the"},{"line_number":70,"context_line":"**servicing** state, heartbeat, and upon all steps completed, the node will"},{"line_number":71,"context_line":"automatically return to the **active** state."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"If the **service** verb was invoked without a ``service_steps`` parameter,"},{"line_number":74,"context_line":"then the node will move to a new stable **service** state, and remain there"}],"source_content_type":"text/x-rst","patch_set":6,"id":"d4accdc8_e7e7cbec","line":71,"updated":"2023-03-17 13:33:49.000000000","message":"Nope?","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"If the **service** verb was invoked without a ``service_steps`` parameter,"},{"line_number":74,"context_line":"then the node will move to a new stable **service** state, and remain there"},{"line_number":75,"context_line":"until after an **active** or **unservice** verb has been receieved by the API."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":".. TODO:: The above paragraph is currently under discussion, in that naming is"},{"line_number":78,"context_line":"   hard, and one of the proposed solutions is \"out of service\", which does"}],"source_content_type":"text/x-rst","patch_set":6,"id":"8478b443_a52f7584","line":75,"updated":"2023-03-17 11:21:33.000000000","message":"This is just rescue, no? At the first pass, I feel pretty much against adding a new API that looks very similar to rescue but is not one.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"3fb87dd8f83a811a580fdd19611f2a2aa5fd63be","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"If the **service** verb was invoked without a ``service_steps`` parameter,"},{"line_number":74,"context_line":"then the node will move to a new stable **service** state, and remain there"},{"line_number":75,"context_line":"until after an **active** or **unservice** verb has been receieved by the API."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":".. TODO:: The above paragraph is currently under discussion, in that naming is"},{"line_number":78,"context_line":"   hard, and one of the proposed solutions is \"out of service\", which does"}],"source_content_type":"text/x-rst","patch_set":6,"id":"23741966_f7084dff","line":75,"in_reply_to":"8478b443_a52f7584","updated":"2023-03-17 17:03:52.000000000","message":"I mostly still agree; my bigger concern is why is this getting mixed in with service steps? I think that mixing them together is going to end up with a more confusing interface (see the comment Dmitry made on UNSERVICE verb).","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* Add an additional ``service_step`` field to the Node object. Similar to clean"},{"line_number":86,"context_line":"  steps, a ``service_steps`` entry would also be utilized in the node"},{"line_number":87,"context_line":"  ``driver_internal_info`` field."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"* Increment the API version."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3f92ebf4_1cc83feb","line":87,"updated":"2023-03-17 11:21:33.000000000","message":"DII keeps growing. Maybe it\u0027s our chance to turn the tide and add an available_service_steps field to the Node?","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"3fb87dd8f83a811a580fdd19611f2a2aa5fd63be","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* Add an additional ``service_step`` field to the Node object. Similar to clean"},{"line_number":86,"context_line":"  steps, a ``service_steps`` entry would also be utilized in the node"},{"line_number":87,"context_line":"  ``driver_internal_info`` field."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"* Increment the API version."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"a194dcbf_14ceb0af","line":87,"in_reply_to":"3f92ebf4_1cc83feb","updated":"2023-03-17 17:03:52.000000000","message":"Or even just \"steps\" and and use state to derive if it\u0027s service/clean/deploy/whatever steps","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ad3c30c68b0656c51424890aff667c4dc42c8d","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* Add an additional ``service_step`` field to the Node object. Similar to clean"},{"line_number":86,"context_line":"  steps, a ``service_steps`` entry would also be utilized in the node"},{"line_number":87,"context_line":"  ``driver_internal_info`` field."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"* Increment the API version."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"04740340_e20b5f76","line":87,"in_reply_to":"a194dcbf_14ceb0af","updated":"2023-03-29 19:50:14.000000000","message":"I\u0027d almost prefer to just re-scrub all of the steps stuff to be more generic so we use two specific fields instead of have type specific fields. The issue is, for every new field, it is an additional iteration we have to take to return a result set.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  steps, a ``service_steps`` entry would also be utilized in the node"},{"line_number":87,"context_line":"  ``driver_internal_info`` field."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"* Increment the API version."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* Make appropriate decorator modifications in alignment with deploy steps and"},{"line_number":92,"context_line":"  cleaning steps, which would also be in line with existing deployment"}],"source_content_type":"text/x-rst","patch_set":6,"id":"e0fe8c47_c1ef76a0","line":89,"updated":"2023-03-17 11:21:33.000000000","message":"What about compatibility? Nova and other consumers will not treat nodes in SERVICE* states as active. Should we change the reported state in older API versions?","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ad3c30c68b0656c51424890aff667c4dc42c8d","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  steps, a ``service_steps`` entry would also be utilized in the node"},{"line_number":87,"context_line":"  ``driver_internal_info`` field."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"* Increment the API version."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* Make appropriate decorator modifications in alignment with deploy steps and"},{"line_number":92,"context_line":"  cleaning steps, which would also be in line with existing deployment"}],"source_content_type":"text/x-rst","patch_set":6,"id":"a4d2642a_369dc7a4","line":89,"in_reply_to":"e0fe8c47_c1ef76a0","updated":"2023-03-29 19:50:14.000000000","message":"So typically we\u0027ve not done this outside of the None-\u003eAvailable transition. This really shouldn\u0027t be a break, but if you can provide insight into additional use that would be helpful. The issue is no matter what, there is sort of a break, and this is an area where we historically expect some changes. In other words, I think we just need to understand and appropriately navigate.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":118,"context_line":"execution, meaning any action taken would need to be manually composed and"},{"line_number":119,"context_line":"executed externally. Of course, this is possible today to partly achieve"},{"line_number":120,"context_line":"the same basic effect. Rescue itself helped inspire this overall"},{"line_number":121,"context_line":"specification as a superset of functionality."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Another possibility could be to extend the existing rebuild verb to allow"},{"line_number":124,"context_line":"steps to be passed in a non-destructive, non-redeploy scenario. However"}],"source_content_type":"text/x-rst","patch_set":6,"id":"d6d696d0_c2d9e9ea","line":121,"updated":"2023-03-17 11:21:33.000000000","message":"This alternative does not explain why the 2nd part of the proposal (the one with the \"service\" stable state) cannot be done through rescue (I fully agree about the 1st part).","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":124,"context_line":"steps to be passed in a non-destructive, non-redeploy scenario. However"},{"line_number":125,"context_line":"the rebuild verb has always suggested \"re-deployment\", and separating that"},{"line_number":126,"context_line":"identity might prove difficult and time consuming to deliver only part"},{"line_number":127,"context_line":"of the needful functionality. Contributors are not convinced this is even"},{"line_number":128,"context_line":"a viable alternative and have also noted concerns of operator confusion,"},{"line_number":129,"context_line":"resulting in this being a further unlikely alternative."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"853b9753_451e17c2","line":127,"updated":"2023-03-17 11:21:33.000000000","message":"Yeah, it\u0027s semantically opposite. Rebuild is about re-deploying OS, service is about NOT re-deploying OS.\n\nThinking more about it... rebuild can be reimplemented as a service step and deprecated as a separate action.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ad3c30c68b0656c51424890aff667c4dc42c8d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"steps to be passed in a non-destructive, non-redeploy scenario. However"},{"line_number":125,"context_line":"the rebuild verb has always suggested \"re-deployment\", and separating that"},{"line_number":126,"context_line":"identity might prove difficult and time consuming to deliver only part"},{"line_number":127,"context_line":"of the needful functionality. Contributors are not convinced this is even"},{"line_number":128,"context_line":"a viable alternative and have also noted concerns of operator confusion,"},{"line_number":129,"context_line":"resulting in this being a further unlikely alternative."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"01ba6958_9fc168d5","line":127,"in_reply_to":"494e8ea8_61a29b24","updated":"2023-03-29 19:50:14.000000000","message":"I think rebuild would just be an alias, or deploy.write_image being called... *whistles*","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"3fb87dd8f83a811a580fdd19611f2a2aa5fd63be","unresolved":false,"context_lines":[{"line_number":124,"context_line":"steps to be passed in a non-destructive, non-redeploy scenario. However"},{"line_number":125,"context_line":"the rebuild verb has always suggested \"re-deployment\", and separating that"},{"line_number":126,"context_line":"identity might prove difficult and time consuming to deliver only part"},{"line_number":127,"context_line":"of the needful functionality. Contributors are not convinced this is even"},{"line_number":128,"context_line":"a viable alternative and have also noted concerns of operator confusion,"},{"line_number":129,"context_line":"resulting in this being a further unlikely alternative."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"494e8ea8_61a29b24","line":127,"in_reply_to":"853b9753_451e17c2","updated":"2023-03-17 17:03:52.000000000","message":"We could also implement snapshotting as service steps (we\u0027d have to add methods to IPA too, likely) :D","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":136,"context_line":"database change. This field will not be indexed."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Use of subfield values **driver_internal_info[\u0027service_steps\u0027]** and"},{"line_number":139,"context_line":"**driver_internal_info[\u0027service_step_index\u0027]**."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"State Machine Impact"},{"line_number":142,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"216e24bb_2f8e169f","line":139,"updated":"2023-03-17 11:21:33.000000000","message":"See above.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":157,"context_line":"| states.SERVICE or   | New stable state to represent a ndoe being modified   |"},{"line_number":158,"context_line":"| OUT_OF_SERVICE      | by a system operator.                                 |"},{"line_number":159,"context_line":"+---------------------+-------------------------------------------------------+"},{"line_number":160,"context_line":"| states.UNSERVICE    | A new unstable state to indicate a node is exiting a  |"},{"line_number":161,"context_line":"|                     | service state and returning to an active state.       |"},{"line_number":162,"context_line":"+---------------------+-------------------------------------------------------+"},{"line_number":163,"context_line":"| states.SERVICEERROR | An error state to indicate there was an error in the  |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"c8d6f01d_31a24ed6","line":160,"updated":"2023-03-17 11:21:33.000000000","message":"UNSERVICE sounds like something that moves to OUT_OF_SERVICE...","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8eb9a9837e83aa0350b0be095b4949c35950ff7f","unresolved":false,"context_lines":[{"line_number":193,"context_line":"In the event of an error, the operation can be retired or the node"},{"line_number":194,"context_line":"returned to an *active* state:"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"  **SERVICING** -\u003e **SERVICEERROR** -\u003e **ACTIVE**"},{"line_number":197,"context_line":"  **SERVICING** -\u003e **SERVICEERROR** -\u003e **SERVICING**"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"In addition to these new states, new state verbs are anticipated:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"f1d4798a_aebc66a8","line":196,"updated":"2023-03-17 13:31:28.000000000","message":"We call states with -FAIL not _ERROR","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8eb9a9837e83aa0350b0be095b4949c35950ff7f","unresolved":false,"context_lines":[{"line_number":194,"context_line":"returned to an *active* state:"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"  **SERVICING** -\u003e **SERVICEERROR** -\u003e **ACTIVE**"},{"line_number":197,"context_line":"  **SERVICING** -\u003e **SERVICEERROR** -\u003e **SERVICING**"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"In addition to these new states, new state verbs are anticipated:"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"c485cc60_9c18ebc7","line":197,"updated":"2023-03-17 13:31:28.000000000","message":"I think you\u0027re missing SERVICING-\u003eSERVICE (the operator decided to abandon the planned actions and interfere manually). Or will it happen through SERVICING?","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ad3c30c68b0656c51424890aff667c4dc42c8d","unresolved":false,"context_lines":[{"line_number":194,"context_line":"returned to an *active* state:"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"  **SERVICING** -\u003e **SERVICEERROR** -\u003e **ACTIVE**"},{"line_number":197,"context_line":"  **SERVICING** -\u003e **SERVICEERROR** -\u003e **SERVICING**"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"In addition to these new states, new state verbs are anticipated:"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9cf7f8c9_10046205","line":197,"in_reply_to":"c485cc60_9c18ebc7","updated":"2023-03-29 19:50:14.000000000","message":"I think happen through servicing, and since we no longer have a stable state, pause/wait/hold will just hold in the unstable servicing state.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":216,"context_line":"   While this seems like a potentially breaking change, we have only done this"},{"line_number":217,"context_line":"   when we\u0027ve renamed or changed the overall meaning of a state. i.e."},{"line_number":218,"context_line":"   None -\u003e Available and Inspect Wait -\u003e Inspecting for older API clients."},{"line_number":219,"context_line":"   In other words, these being net-new should not be breaking."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":".. NOTE::"},{"line_number":222,"context_line":"   Nova impact is covered below."}],"source_content_type":"text/x-rst","patch_set":6,"id":"e378e491_54bc39d6","line":219,"updated":"2023-03-17 11:21:33.000000000","message":"Unlike some completely new actions, this change will violate expectations about deployed nodes.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"2bd675a242735180d654c4fba97cb29ecef0b0bb","unresolved":true,"context_lines":[{"line_number":216,"context_line":"   While this seems like a potentially breaking change, we have only done this"},{"line_number":217,"context_line":"   when we\u0027ve renamed or changed the overall meaning of a state. i.e."},{"line_number":218,"context_line":"   None -\u003e Available and Inspect Wait -\u003e Inspecting for older API clients."},{"line_number":219,"context_line":"   In other words, these being net-new should not be breaking."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":".. NOTE::"},{"line_number":222,"context_line":"   Nova impact is covered below."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7da28147_ad46a74a","line":219,"in_reply_to":"17346955_4ac4e669","updated":"2023-04-13 20:38:45.000000000","message":"I think we need to agree on the path we will follow before merging, probably here in the spec or a discussion during the weekly meeting?","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fa5a90bea8a2da64222ff5f8a3721acc7bb5ee91","unresolved":true,"context_lines":[{"line_number":216,"context_line":"   While this seems like a potentially breaking change, we have only done this"},{"line_number":217,"context_line":"   when we\u0027ve renamed or changed the overall meaning of a state. i.e."},{"line_number":218,"context_line":"   None -\u003e Available and Inspect Wait -\u003e Inspecting for older API clients."},{"line_number":219,"context_line":"   In other words, these being net-new should not be breaking."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":".. NOTE::"},{"line_number":222,"context_line":"   Nova impact is covered below."}],"source_content_type":"text/x-rst","patch_set":6,"id":"e80484e0_c1188759","line":219,"in_reply_to":"7da28147_ad46a74a","updated":"2023-04-25 00:26:42.000000000","message":"There is a practicality aspect which I suspect we are only going to sort through on actual code.\n\nAnd I guess my preference on that is that we\u0027ve gone back and forth with it before, and even with rescue, we still exposed the new state anyway.\n\nDunno.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ad3c30c68b0656c51424890aff667c4dc42c8d","unresolved":true,"context_lines":[{"line_number":216,"context_line":"   While this seems like a potentially breaking change, we have only done this"},{"line_number":217,"context_line":"   when we\u0027ve renamed or changed the overall meaning of a state. i.e."},{"line_number":218,"context_line":"   None -\u003e Available and Inspect Wait -\u003e Inspecting for older API clients."},{"line_number":219,"context_line":"   In other words, these being net-new should not be breaking."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":".. NOTE::"},{"line_number":222,"context_line":"   Nova impact is covered below."}],"source_content_type":"text/x-rst","patch_set":6,"id":"17346955_4ac4e669","line":219,"in_reply_to":"e378e491_54bc39d6","updated":"2023-03-29 19:50:14.000000000","message":"I think the same concern was raised on rescue.\n\nI guess the option is to decide which path we want to take. :\\","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":246,"context_line":"\"openstacksdk\""},{"line_number":247,"context_line":"~~~~~~~~~~~~~~"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"No required changes to ``openstacksdk`` are anticipated."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"RPC API impact"},{"line_number":252,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"ec059532_908c94bd","line":249,"updated":"2023-03-17 11:21:33.000000000","message":"The new actions will need to be exposed.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ad3c30c68b0656c51424890aff667c4dc42c8d","unresolved":false,"context_lines":[{"line_number":246,"context_line":"\"openstacksdk\""},{"line_number":247,"context_line":"~~~~~~~~~~~~~~"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"No required changes to ``openstacksdk`` are anticipated."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"RPC API impact"},{"line_number":252,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"27402c5e_db31cd5a","line":249,"in_reply_to":"ec059532_908c94bd","updated":"2023-03-29 19:50:14.000000000","message":"Updating, we don\u0027t need to expose new actions it looks like, but a kwarg for the steps.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":274,"context_line":"------------------"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"A review of Nova\u0027s virt/ironic/driver.py code suggests that no impact is to"},{"line_number":277,"context_line":"be anticipated through the introduction of the base state."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"We *may* want to introduce a version guard to return a VirtDriverNotReady"},{"line_number":280,"context_line":"exception should an action such as unprovisioning or vif actions are attempted"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bff035c2_57d20f96","line":277,"updated":"2023-03-17 11:21:33.000000000","message":"Nova is not the only potential consumer.. Metal3, for example, does check all states.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1a8383863430b53a7050dccbe294f09f37b4031e","unresolved":false,"context_lines":[{"line_number":274,"context_line":"------------------"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"A review of Nova\u0027s virt/ironic/driver.py code suggests that no impact is to"},{"line_number":277,"context_line":"be anticipated through the introduction of the base state."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"We *may* want to introduce a version guard to return a VirtDriverNotReady"},{"line_number":280,"context_line":"exception should an action such as unprovisioning or vif actions are attempted"}],"source_content_type":"text/x-rst","patch_set":6,"id":"8a7d0dd6_18fa598a","line":277,"in_reply_to":"bff035c2_57d20f96","updated":"2023-03-29 18:58:02.000000000","message":"Aside: I would be +1 to adding a \"Metal3 Impact\" or \"Non-OpenStack Integrations Impact\" section to the spec template.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ad3c30c68b0656c51424890aff667c4dc42c8d","unresolved":true,"context_lines":[{"line_number":274,"context_line":"------------------"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"A review of Nova\u0027s virt/ironic/driver.py code suggests that no impact is to"},{"line_number":277,"context_line":"be anticipated through the introduction of the base state."},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"We *may* want to introduce a version guard to return a VirtDriverNotReady"},{"line_number":280,"context_line":"exception should an action such as unprovisioning or vif actions are attempted"}],"source_content_type":"text/x-rst","patch_set":6,"id":"311fff74_37a5a1aa","line":277,"in_reply_to":"bff035c2_57d20f96","updated":"2023-03-29 19:50:14.000000000","message":"We need to add that to the template and the validation logic.\n\nI guess with metal3 I\u0027m personally not too concerned, but metal3 is likely to gain support with the invocation of it from metal3, since AFAIK nobody points metal3 at a pre-existing ironic.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":312,"context_line":".. NOTE:: We may wish to consider permitting the agent to heartbeat and"},{"line_number":313,"context_line":"   the callback URL if it has been moved to a different network. This does"},{"line_number":314,"context_line":"   have a security impact, but would allow fast-track to be applied on a"},{"line_number":315,"context_line":"   more consistent basis."},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"Other end user impact"},{"line_number":318,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"0ab629aa_4162c610","line":315,"updated":"2023-03-17 11:21:33.000000000","message":"++","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":355,"context_line":"-----------"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":".. todo::"},{"line_number":358,"context_line":"   Volunteers? Happy to hack on this if I can get people to commit to review."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"Primary assignee:"},{"line_number":361,"context_line":"  \u003cIRC handle, email address, or None\u003e"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7e7af33d_630c39fd","line":358,"updated":"2023-03-17 11:21:33.000000000","message":"Chat with Jacob if not already.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":379,"context_line":"  valid network for the service operations."},{"line_number":380,"context_line":"* Decorate appropriate step actions as \"service steps\"."},{"line_number":381,"context_line":"* Compose tempest test schenario."},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"Dependencies"},{"line_number":384,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"50df148e_f7a023f6","line":382,"updated":"2023-03-17 11:21:33.000000000","message":"I\u0027d prefer us to pick some specific action and implement it as a service step so that it can serve as a reference. Otherwise, you cannot even test it properly. If you take my crazy idea about rebuilding as a service step, that may be it.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ad3c30c68b0656c51424890aff667c4dc42c8d","unresolved":false,"context_lines":[{"line_number":379,"context_line":"  valid network for the service operations."},{"line_number":380,"context_line":"* Decorate appropriate step actions as \"service steps\"."},{"line_number":381,"context_line":"* Compose tempest test schenario."},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"Dependencies"},{"line_number":384,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"347db8cb_835c4119","line":382,"in_reply_to":"50df148e_f7a023f6","updated":"2023-03-29 19:50:14.000000000","message":"I think wait/sleep/pause or kind of the ones for now which we start with.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71bad3729f3690cdc71189efba9165c0926e8394","unresolved":false,"context_lines":[{"line_number":390,"context_line":""},{"line_number":391,"context_line":"A tempest scenario test for this will be needed. Such a test would likely"},{"line_number":392,"context_line":"consist of moving a deployed node into a service state, and eventually back"},{"line_number":393,"context_line":"out of it."},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":396,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":"fb97e6b0_8fcc6b62","line":393,"updated":"2023-03-17 11:21:33.000000000","message":"Given that I\u0027m -1 to this idea, I\u0027d like to at least see something to test the non-service-state idea (see above).","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ad3c30c68b0656c51424890aff667c4dc42c8d","unresolved":false,"context_lines":[{"line_number":390,"context_line":""},{"line_number":391,"context_line":"A tempest scenario test for this will be needed. Such a test would likely"},{"line_number":392,"context_line":"consist of moving a deployed node into a service state, and eventually back"},{"line_number":393,"context_line":"out of it."},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":396,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":"5bbc762a_7fc710ce","line":393,"in_reply_to":"fb97e6b0_8fcc6b62","updated":"2023-03-29 19:50:14.000000000","message":"Updating to point to pause/wait, or hold.","commit_id":"b9101df38e1df41451396dcb9e7bbaeff5dc8ff7"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"166b0eb2d8a1f4adf67ff1e34af6212f92395f05","unresolved":true,"context_lines":[{"line_number":104,"context_line":"  set of steps have been received."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* ``pause`` - This step would pause the step execution for a user defined"},{"line_number":107,"context_line":"  period of time. Think of this as \"sleep\"."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* ``wait`` - This step would allow an operator tell Ironic to wait for a"},{"line_number":110,"context_line":"  condition to be met before proceeding with steps. This may be a file"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4b0a3bb5_630c7da5","line":107,"updated":"2023-03-29 19:55:19.000000000","message":"Curious; why not just call this sleep? editing to answer my own question: computers can \"sleep\", like as in a power state, so not overloading that is good...","commit_id":"79bdeafb90e75fd0c56b66bee89d4ec29e523df6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c1bfec1275fba386d7fd91b45c81ffd7ca3f742e","unresolved":false,"context_lines":[{"line_number":104,"context_line":"  set of steps have been received."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* ``pause`` - This step would pause the step execution for a user defined"},{"line_number":107,"context_line":"  period of time. Think of this as \"sleep\"."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* ``wait`` - This step would allow an operator tell Ironic to wait for a"},{"line_number":110,"context_line":"  condition to be met before proceeding with steps. This may be a file"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dceb3d1f_8d2b59b4","line":107,"in_reply_to":"4b0a3bb5_630c7da5","updated":"2023-04-04 19:11:53.000000000","message":"Done","commit_id":"79bdeafb90e75fd0c56b66bee89d4ec29e523df6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fa5a90bea8a2da64222ff5f8a3721acc7bb5ee91","unresolved":true,"context_lines":[{"line_number":104,"context_line":"  set of steps have been received."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* ``pause`` - This step would pause the step execution for a user defined"},{"line_number":107,"context_line":"  period of time. Think of this as \"sleep\"."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"* ``wait`` - This step would allow an operator tell Ironic to wait for a"},{"line_number":110,"context_line":"  condition to be met before proceeding with steps. This may be a file"}],"source_content_type":"text/x-rst","patch_set":7,"id":"27f18f35_f7e00492","line":107,"in_reply_to":"dceb3d1f_8d2b59b4","updated":"2023-04-25 00:26:42.000000000","message":"Maybe sleep *is* better... dunno.\n\nSleep was kind of what my brain jumped to.","commit_id":"79bdeafb90e75fd0c56b66bee89d4ec29e523df6"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"166b0eb2d8a1f4adf67ff1e34af6212f92395f05","unresolved":true,"context_lines":[{"line_number":112,"context_line":"  successfully."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"These temporary holding states, when used, will leave the node\u0027s provision"},{"line_number":115,"context_line":"state in the **SERVICING** state. A conductor failover is not anticipated"},{"line_number":116,"context_line":"to be fatal to this in the long term, as long as the agent continues"},{"line_number":117,"context_line":"to heartbeat. An ``unhold`` provision_state action is expected to just"},{"line_number":118,"context_line":"remove the current step name in progress, allowing the next step to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"c0e25e3a_3e765663","line":115,"updated":"2023-03-29 19:55:19.000000000","message":"In the PTG, concerns were raised about using the same state to refer to waiting on automation and waiting on humans (or API users) to resume.\n\nTo handle that case, I\u0027d suggest we specifically use a \"SERVICE HOLD\" (or CLEAN HOLD or DEPLOY HOLD as appropriate) to reflect that Ironic will not take action on that node until prompted by an API user.","commit_id":"79bdeafb90e75fd0c56b66bee89d4ec29e523df6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"00effc4472269c71ac6da8d063a0ad613c9c7776","unresolved":true,"context_lines":[{"line_number":112,"context_line":"  successfully."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"These temporary holding states, when used, will leave the node\u0027s provision"},{"line_number":115,"context_line":"state in the **SERVICING** state. A conductor failover is not anticipated"},{"line_number":116,"context_line":"to be fatal to this in the long term, as long as the agent continues"},{"line_number":117,"context_line":"to heartbeat. An ``unhold`` provision_state action is expected to just"},{"line_number":118,"context_line":"remove the current step name in progress, allowing the next step to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"a8044741_0b8caa29","line":115,"in_reply_to":"02884e60_99bf8202","updated":"2023-04-07 17:02:26.000000000","message":"Yeah, I think we\u0027re thinking the exact same thing, just using slightly different words.","commit_id":"79bdeafb90e75fd0c56b66bee89d4ec29e523df6"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7757404e6d60b82e910eca0079ea065ddedd3dee","unresolved":true,"context_lines":[{"line_number":112,"context_line":"  successfully."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"These temporary holding states, when used, will leave the node\u0027s provision"},{"line_number":115,"context_line":"state in the **SERVICING** state. A conductor failover is not anticipated"},{"line_number":116,"context_line":"to be fatal to this in the long term, as long as the agent continues"},{"line_number":117,"context_line":"to heartbeat. An ``unhold`` provision_state action is expected to just"},{"line_number":118,"context_line":"remove the current step name in progress, allowing the next step to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"02884e60_99bf8202","line":115,"in_reply_to":"78bc0220_adee20de","updated":"2023-04-06 19:03:24.000000000","message":"It has to be a pretty clear line, IMO:\n\n-ING states  -\u003e we are actively doing something on this node\n-WAIT states -\u003e we are waiting for a job to complete (agent, bmc, etc)\n-HOLD states -\u003e we are waiting for an API call to continue\n\nThis to me means that the proposed \"wait\" step would be a -WAIT state, and \"hold\" would be a HOLD state (and probably the only way to get to a hold state?)\n\nI think we agree, but I wasn\u0027t sure, so I wanted to restate it.","commit_id":"79bdeafb90e75fd0c56b66bee89d4ec29e523df6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c1bfec1275fba386d7fd91b45c81ffd7ca3f742e","unresolved":true,"context_lines":[{"line_number":112,"context_line":"  successfully."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"These temporary holding states, when used, will leave the node\u0027s provision"},{"line_number":115,"context_line":"state in the **SERVICING** state. A conductor failover is not anticipated"},{"line_number":116,"context_line":"to be fatal to this in the long term, as long as the agent continues"},{"line_number":117,"context_line":"to heartbeat. An ``unhold`` provision_state action is expected to just"},{"line_number":118,"context_line":"remove the current step name in progress, allowing the next step to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"78bc0220_adee20de","line":115,"in_reply_to":"c0e25e3a_3e765663","updated":"2023-04-04 19:11:53.000000000","message":"I think for *hold* it makes sense, I think pause/wait, it is more situational. I think that aligns with the discussion, from my point of view. Updating.","commit_id":"79bdeafb90e75fd0c56b66bee89d4ec29e523df6"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7757404e6d60b82e910eca0079ea065ddedd3dee","unresolved":true,"context_lines":[{"line_number":124,"context_line":"As for hold, a conductor failover is not anticipated to be fatal to this"},{"line_number":125,"context_line":"in the long term, as long as the agent continues to heartbeat. An"},{"line_number":126,"context_line":"``unhold`` provision_state action is expected to just remove the current"},{"line_number":127,"context_line":"step name in progress, allowing the next step to proceed upon next heartbeat."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":".. NOTE:: Ironic *might* need a step which enables the agent token to be"},{"line_number":130,"context_line":"   removed to allow the agent to be restarted or rebooted. This is not"}],"source_content_type":"text/x-rst","patch_set":8,"id":"32315fd3_220a912c","line":127,"updated":"2023-04-06 19:03:24.000000000","message":"Should we assume agent is running? What happens in the case where we \"hold\" after an OOB step, into an OOB step? No need to outline it in the spec; just making sure we\u0027ve considered that.","commit_id":"a05c9ee0bef8eb0233cf67073639a9af63423920"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"00effc4472269c71ac6da8d063a0ad613c9c7776","unresolved":true,"context_lines":[{"line_number":124,"context_line":"As for hold, a conductor failover is not anticipated to be fatal to this"},{"line_number":125,"context_line":"in the long term, as long as the agent continues to heartbeat. An"},{"line_number":126,"context_line":"``unhold`` provision_state action is expected to just remove the current"},{"line_number":127,"context_line":"step name in progress, allowing the next step to proceed upon next heartbeat."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":".. NOTE:: Ironic *might* need a step which enables the agent token to be"},{"line_number":130,"context_line":"   removed to allow the agent to be restarted or rebooted. This is not"}],"source_content_type":"text/x-rst","patch_set":8,"id":"312c8b89_0cd029be","line":127,"in_reply_to":"32315fd3_220a912c","updated":"2023-04-07 17:02:26.000000000","message":"We don\u0027t need  to assume it, but we do need it to return if it wants to continue. :)\n\nThe existing power state logic *should* cover clearing tokens as well so as long as someone doesn\u0027t go too far off the rails, things should just work. In theory.... I hope. :)\n\nWe should likely put in a giant warning saying \"For reasons related to security, if you intend to perform power actions, ask ironic to do them. Otherwise there will be pain and suffering.\"","commit_id":"a05c9ee0bef8eb0233cf67073639a9af63423920"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"2bd675a242735180d654c4fba97cb29ecef0b0bb","unresolved":true,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Assignee(s)"},{"line_number":387,"context_line":"-----------"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":".. todo::"},{"line_number":390,"context_line":"   Volunteers? Happy to hack on this if I can get people to commit to review."},{"line_number":391,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"687310bf_b475dfeb","line":388,"updated":"2023-04-13 20:38:45.000000000","message":"we probably need to update things here, but not sure if is necessary before merging.","commit_id":"a05c9ee0bef8eb0233cf67073639a9af63423920"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fa5a90bea8a2da64222ff5f8a3721acc7bb5ee91","unresolved":true,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":"Assignee(s)"},{"line_number":387,"context_line":"-----------"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":".. todo::"},{"line_number":390,"context_line":"   Volunteers? Happy to hack on this if I can get people to commit to review."},{"line_number":391,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"81688d91_548af36f","line":388,"in_reply_to":"687310bf_b475dfeb","updated":"2023-04-25 00:26:42.000000000","message":"Yeah, agreed. I guess I\u0027m on the hook to do this now.","commit_id":"a05c9ee0bef8eb0233cf67073639a9af63423920"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"2bd675a242735180d654c4fba97cb29ecef0b0bb","unresolved":true,"context_lines":[{"line_number":410,"context_line":"* Add networking internals to place the machine on to a"},{"line_number":411,"context_line":"  valid network for the service operations."},{"line_number":412,"context_line":"* Decorate appropriate step actions as \"service steps\"."},{"line_number":413,"context_line":"* Compose tempest test schenario."},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"Dependencies"},{"line_number":416,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5cb8102f_5b715649","line":413,"range":{"start_line":413,"start_character":23,"end_line":413,"end_character":32},"updated":"2023-04-13 20:38:45.000000000","message":"s/schenario/scenario","commit_id":"a05c9ee0bef8eb0233cf67073639a9af63423920"}]}
