)]}'
{"specs/approved/node-retirement.rst":[{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"575d9d2d6c06236cfe4b44b3d8f7549d6ac42176","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Support for node retirement"},{"line_number":9,"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your StoryBoard story (which should have an `rfe`` tag):"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://storyboard.openstack.org/#!/story/2005425"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_6bb790da","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":75},"updated":"2019-05-03 04:41:16.000000000","message":"I think this line can be removed.","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"3c60b76ef964f202574ce54969fad6cbafb97ce5","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Support for node retirement"},{"line_number":9,"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your StoryBoard story (which should have an `rfe`` tag):"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://storyboard.openstack.org/#!/story/2005425"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_066ccb34","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":75},"in_reply_to":"dfbec78f_6bb790da","updated":"2019-05-03 08:30:40.000000000","message":"Done","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"575d9d2d6c06236cfe4b44b3d8f7549d6ac42176","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  way into retirement (setting maintenance to \u0027True\u0027 does only partially help"},{"line_number":52,"context_line":"  with this scheduling race as -- apart from not being meant to be used in this"},{"line_number":53,"context_line":"  situation -- this will prevent cleaning);"},{"line_number":54,"context_line":"* there is no easy wasy to mark nodes as \u0027retired\u0027 and hence there is no"},{"line_number":55,"context_line":"  obvious way to identify and list such nodes (as required by third party"},{"line_number":56,"context_line":"  tools or the remaining retirement workflow)."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_4bb64cdc","line":54,"range":{"start_line":54,"start_character":19,"end_line":54,"end_character":23},"updated":"2019-05-03 04:41:16.000000000","message":"s/wasy/way/","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"3c60b76ef964f202574ce54969fad6cbafb97ce5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  way into retirement (setting maintenance to \u0027True\u0027 does only partially help"},{"line_number":52,"context_line":"  with this scheduling race as -- apart from not being meant to be used in this"},{"line_number":53,"context_line":"  situation -- this will prevent cleaning);"},{"line_number":54,"context_line":"* there is no easy wasy to mark nodes as \u0027retired\u0027 and hence there is no"},{"line_number":55,"context_line":"  obvious way to identify and list such nodes (as required by third party"},{"line_number":56,"context_line":"  tools or the remaining retirement workflow)."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_2669cf24","line":54,"range":{"start_line":54,"start_character":19,"end_line":54,"end_character":23},"in_reply_to":"dfbec78f_4bb64cdc","updated":"2019-05-03 08:30:40.000000000","message":"Done","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"575d9d2d6c06236cfe4b44b3d8f7549d6ac42176","unresolved":false,"context_lines":[{"line_number":130,"context_line":"The proposed change will require a new sub-resource for the \u0027nodes\u0027"},{"line_number":131,"context_line":"resource to set and unset the \u0027retired\u0027 field:"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* PUT /v1/nodes/{node_ident}/retired"},{"line_number":134,"context_line":"  Task: Set Retired Flag"},{"line_number":135,"context_line":"  Request that ironic sets the \u0027retired\u0027 flag on the node. This will disable"},{"line_number":136,"context_line":"  certain automatic actions that the node’s driver may take, and remove the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_cbc1dc30","line":133,"updated":"2019-05-03 04:41:16.000000000","message":"What are the actions performed while retirement? Is it only node cleaning?","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"3c60b76ef964f202574ce54969fad6cbafb97ce5","unresolved":false,"context_lines":[{"line_number":130,"context_line":"The proposed change will require a new sub-resource for the \u0027nodes\u0027"},{"line_number":131,"context_line":"resource to set and unset the \u0027retired\u0027 field:"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* PUT /v1/nodes/{node_ident}/retired"},{"line_number":134,"context_line":"  Task: Set Retired Flag"},{"line_number":135,"context_line":"  Request that ironic sets the \u0027retired\u0027 flag on the node. This will disable"},{"line_number":136,"context_line":"  certain automatic actions that the node’s driver may take, and remove the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_c620f3fa","line":133,"in_reply_to":"dfbec78f_cbc1dc30","updated":"2019-05-03 08:30:40.000000000","message":"As for maintenance, it sets a flag and removes a node from the list of nodes eligible for scheduling.","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1eea5a6a9f2570567c07a662dd0636484c4967f6","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node maintenance set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node maintenance unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_f2f4ded1","line":163,"range":{"start_line":163,"start_character":1,"end_line":163,"end_character":2},"updated":"2019-05-02 17:50:21.000000000","message":"You mean,\n\nopenstack baremetal node retire set [-h] [--reason \u003creason\u003e] \u003cnode\u003e\nopenstack baremetal node retire unset [-h] [--reason \u003creason\u003e] \u003cnode\u003e","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"575d9d2d6c06236cfe4b44b3d8f7549d6ac42176","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node maintenance set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node maintenance unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_6bdc7018","line":163,"range":{"start_line":163,"start_character":1,"end_line":163,"end_character":2},"in_reply_to":"dfbec78f_f2f4ded1","updated":"2019-05-03 04:41:16.000000000","message":"+1","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"3c60b76ef964f202574ce54969fad6cbafb97ce5","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node maintenance set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node maintenance unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_e61df7bd","line":163,"range":{"start_line":163,"start_character":1,"end_line":163,"end_character":2},"in_reply_to":"dfbec78f_f2f4ded1","updated":"2019-05-03 08:30:40.000000000","message":"Yes, thanks!","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"1eea5a6a9f2570567c07a662dd0636484c4967f6","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"References"},{"line_number":279,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"None."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_72a54eb5","line":279,"updated":"2019-05-02 17:50:21.000000000","message":"Also should we add code to exclude these nodes from periodic tasks like sync_power_states, sync_local_states?","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"575d9d2d6c06236cfe4b44b3d8f7549d6ac42176","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"References"},{"line_number":279,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"None."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfbec78f_2be678ea","line":279,"in_reply_to":"dfbec78f_72a54eb5","updated":"2019-05-03 04:41:16.000000000","message":"+1","commit_id":"92bfb1d9deb32d31640bf7715756b75ad128f7d8"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"02e776e2c21cd75e78a7cd80a539c9e0c4abefa6","unresolved":false,"context_lines":[{"line_number":113,"context_line":"State Machine Impact"},{"line_number":114,"context_line":"--------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"When \u0027retired\u0027 is set to True, a node will not move to \u0027available\u0027 after"},{"line_number":117,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"When \u0027retired\u0027 is set to True, a node cannot move from \u0027manageable\u0027 to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfbec78f_2121b9b5","line":116,"updated":"2019-05-03 11:35:03.000000000","message":"what happen if the node is already in available mode? should we move it back to manageable?","commit_id":"04a71f7943234c2dd70bfc94acd854982e20f2bd"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"859c98bec744fe6af9a35e9dc2613691aa9fdf23","unresolved":false,"context_lines":[{"line_number":113,"context_line":"State Machine Impact"},{"line_number":114,"context_line":"--------------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"When \u0027retired\u0027 is set to True, a node will not move to \u0027available\u0027 after"},{"line_number":117,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"When \u0027retired\u0027 is set to True, a node cannot move from \u0027manageable\u0027 to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfbec78f_3cd000ca","line":116,"in_reply_to":"dfbec78f_2121b9b5","updated":"2019-05-03 13:33:03.000000000","message":"I think this is a sensible suggestion, yes. I updated the spec accordingly.","commit_id":"04a71f7943234c2dd70bfc94acd854982e20f2bd"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c0c82502b8bd22d22b3e5714ae37a9720adbba40","unresolved":false,"context_lines":[{"line_number":118,"context_line":"When \u0027retired\u0027 is set to True, a node will not move to \u0027available\u0027 after"},{"line_number":119,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"When \u0027retired\u0027 is set to True, a node cannot move from \u0027manageable\u0027 to"},{"line_number":122,"context_line":"\u0027available\u0027."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfbec78f_ea76083f","line":122,"range":{"start_line":121,"start_character":0,"end_line":122,"end_character":12},"updated":"2019-05-04 16:35:30.000000000","message":"Also if the node is in \u0027available\u0027 state when \u0027retired\u0027 is set to True, it would move to \u0027manageable\u0027 state.","commit_id":"16fb3c41dc27fc3ca21e1e2f700c0e211c687d06"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"08a57083d228ea60c2f7bf6e60f00380aea11fbe","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"None."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\"openstack baremetal\" CLI"},{"line_number":159,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfbec78f_4a52b469","line":158,"updated":"2019-05-04 16:43:26.000000000","message":"Apart from openstack cli can you also add support for this new API in openstacksdk?","commit_id":"16fb3c41dc27fc3ca21e1e2f700c0e211c687d06"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"d74e3d99dc0b632c7d861e644460d5664441d7c6","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node retired set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node retired unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfbec78f_bd670926","line":163,"updated":"2019-05-03 17:29:05.000000000","message":"i think this makes more sense.\n\nopenstack baremetal node retire set [--reason \u003creason\u003e] \u003cnode\u003e\nopenstack baremetal node retire unset \u003cnode\u003e\n\nChange retired to retire (past tense to present tense)","commit_id":"16fb3c41dc27fc3ca21e1e2f700c0e211c687d06"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"46d01ef69d83f918cf1dd8cedc30fd8eff2a3ab3","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node retired set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node retired unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfbec78f_062a508f","line":163,"in_reply_to":"dfbec78f_35eea922","updated":"2019-05-07 19:10:57.000000000","message":"\u003e Ha ha ha, deal!\n\n;)","commit_id":"16fb3c41dc27fc3ca21e1e2f700c0e211c687d06"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"e38a4aae101b2bbbcf1b35f907f9b5e25f22f2bd","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node retired set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node retired unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfbec78f_75742136","line":163,"in_reply_to":"dfbec78f_35eea922","updated":"2019-05-07 07:13:46.000000000","message":"I find it weird!\nBut I also understand and I agree with the reasoning behind, also the logic reflects the same for the \u0027maintenance\u0027 state set/unset command, so I guess no croissants? :/","commit_id":"16fb3c41dc27fc3ca21e1e2f700c0e211c687d06"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"6f8c6cefaca4d80e9d084c6d40185e8564828ec9","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node retired set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node retired unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfbec78f_e78e352d","line":163,"in_reply_to":"dfbec78f_bd670926","updated":"2019-05-06 07:01:22.000000000","message":"\u0027retired\u0027 is a describing the node\u0027s (binary) state, so I think the past participle is more intuitive here. Also, the DB field says \u0027retired\u0027 and I\u0027d like to avoid we have \u0027retire \u0027 here and \u0027retired\u0027 there.","commit_id":"16fb3c41dc27fc3ca21e1e2f700c0e211c687d06"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c0c82502b8bd22d22b3e5714ae37a9720adbba40","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node retired set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node retired unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfbec78f_cabc64bd","line":163,"in_reply_to":"dfbec78f_bd670926","updated":"2019-05-04 16:35:30.000000000","message":"+1","commit_id":"16fb3c41dc27fc3ca21e1e2f700c0e211c687d06"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"fb888f1055ec0259cfade032aee302bb6562f665","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node retired set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node retired unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfbec78f_35eea922","line":163,"in_reply_to":"dfbec78f_e2837a03","updated":"2019-05-07 06:46:19.000000000","message":"Ha ha ha, deal!","commit_id":"16fb3c41dc27fc3ca21e1e2f700c0e211c687d06"},{"author":{"_account_id":12640,"name":"Arun S A G","email":"sagarun@gmail.com","username":"sagarun"},"change_message_id":"3d4443d06b7ae3d093afcd1d06ecaae96f708d45","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Two additional subcommands"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* openstack baremetal node retired set [-h] [--reason \u003creason\u003e] \u003cnode\u003e"},{"line_number":164,"context_line":"* openstack baremetal node retired unset [-h] \u003cnode\u003e"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"shall be added to set and unset a node\u0027s \u0027retired\u0027 field (and provide a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfbec78f_e2837a03","line":163,"in_reply_to":"dfbec78f_e78e352d","updated":"2019-05-06 19:11:25.000000000","message":"\u003e \u0027retired\u0027 is a describing the node\u0027s (binary) state, so I think the\n \u003e past participle is more intuitive here. Also, the DB field says\n \u003e \u0027retired\u0027 and I\u0027d like to avoid we have \u0027retire \u0027 here and\n \u003e \u0027retired\u0027 there.\n\n\nOkay! if someone else find it weird, croissants for everyone on you :)","commit_id":"16fb3c41dc27fc3ca21e1e2f700c0e211c687d06"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"99bb521fecea9386607d2fc5cd93057d1d12edcd","unresolved":false,"context_lines":[{"line_number":62,"context_line":"* \u0027retired\u0027 (True/False)"},{"line_number":63,"context_line":"* \u0027retired_reason\u0027 (text)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"in analogy to the existing \u0027maintenance\u0027 and \u0027maintenance_reason\u0027."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The \u0027retired\u0027 field shall signal that a node is meant to be retired and that"},{"line_number":68,"context_line":"the node should not be considered for scheduling any longer. The \u0027retired\u0027"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_bf430f13","line":65,"updated":"2019-05-10 16:03:56.000000000","message":"Can a node be both in maintenance and retired? If \"maintenance\" and \"retired\" are mutually exclusive, should they be values of the same property that has more values than a boolean?","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7bfdd7f51fc86c080970f55e776d0823444df382","unresolved":false,"context_lines":[{"line_number":62,"context_line":"* \u0027retired\u0027 (True/False)"},{"line_number":63,"context_line":"* \u0027retired_reason\u0027 (text)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"in analogy to the existing \u0027maintenance\u0027 and \u0027maintenance_reason\u0027."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The \u0027retired\u0027 field shall signal that a node is meant to be retired and that"},{"line_number":68,"context_line":"the node should not be considered for scheduling any longer. The \u0027retired\u0027"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_7f3d9729","line":65,"in_reply_to":"dfbec78f_bf430f13","updated":"2019-05-10 16:29:31.000000000","message":"I don\u0027t think they are (or should be) mutually exclusive.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"99bb521fecea9386607d2fc5cd93057d1d12edcd","unresolved":false,"context_lines":[{"line_number":65,"context_line":"in analogy to the existing \u0027maintenance\u0027 and \u0027maintenance_reason\u0027."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The \u0027retired\u0027 field shall signal that a node is meant to be retired and that"},{"line_number":68,"context_line":"the node should not be considered for scheduling any longer. The \u0027retired\u0027"},{"line_number":69,"context_line":"field can be set irrespective of the node\u0027s state, in particular when the"},{"line_number":70,"context_line":"node is \u0027active\u0027."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_5f4c5341","line":68,"updated":"2019-05-10 16:03:56.000000000","message":"Could we just use the maintenance flag to indicate that the node is not a candidate for scheduling?","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7bfdd7f51fc86c080970f55e776d0823444df382","unresolved":false,"context_lines":[{"line_number":65,"context_line":"in analogy to the existing \u0027maintenance\u0027 and \u0027maintenance_reason\u0027."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"The \u0027retired\u0027 field shall signal that a node is meant to be retired and that"},{"line_number":68,"context_line":"the node should not be considered for scheduling any longer. The \u0027retired\u0027"},{"line_number":69,"context_line":"field can be set irrespective of the node\u0027s state, in particular when the"},{"line_number":70,"context_line":"node is \u0027active\u0027."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_3fdf1fd7","line":68,"in_reply_to":"dfbec78f_5f4c5341","updated":"2019-05-10 16:29:31.000000000","message":"Yes, we could set \u0027maintenance\u0027 the moment we set \u0027retired\u0027 to exclude the node from maintenance. That would mix the two concepts, though.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"99bb521fecea9386607d2fc5cd93057d1d12edcd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"The \u0027retired\u0027 field shall signal that a node is meant to be retired and that"},{"line_number":68,"context_line":"the node should not be considered for scheduling any longer. The \u0027retired\u0027"},{"line_number":69,"context_line":"field can be set irrespective of the node\u0027s state, in particular when the"},{"line_number":70,"context_line":"node is \u0027active\u0027."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Active nodes which are cleaned while \u0027retired\u0027 is True, e.g. upon instance"},{"line_number":73,"context_line":"deletion, go to \u0027manageable\u0027 (rather than \u0027available\u0027). This leaves no window"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_3f4f1f35","line":70,"updated":"2019-05-10 16:03:56.000000000","message":"It sounds like what we really want is a state transition from \"active\" to \"deleted\" (or whatever) without pausing at any states that allow the node to be scheduled. That sounds like a \"retire\" verb, rather than a flag on the node itself.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7bfdd7f51fc86c080970f55e776d0823444df382","unresolved":false,"context_lines":[{"line_number":67,"context_line":"The \u0027retired\u0027 field shall signal that a node is meant to be retired and that"},{"line_number":68,"context_line":"the node should not be considered for scheduling any longer. The \u0027retired\u0027"},{"line_number":69,"context_line":"field can be set irrespective of the node\u0027s state, in particular when the"},{"line_number":70,"context_line":"node is \u0027active\u0027."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Active nodes which are cleaned while \u0027retired\u0027 is True, e.g. upon instance"},{"line_number":73,"context_line":"deletion, go to \u0027manageable\u0027 (rather than \u0027available\u0027). This leaves no window"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_dff1236d","line":70,"in_reply_to":"dfbec78f_3f4f1f35","updated":"2019-05-10 16:29:31.000000000","message":"Agreed. The main point I\u0027d like to achieve, though, is to easily identify retired nodes. If they simply move to \u0027manageable\u0027, without an additional flag then identifying them is the same as now (cumbersome :)).","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f597b99bebbde2534724b6e0e351f40770509db2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"The \u0027retired\u0027 field shall signal that a node is meant to be retired and that"},{"line_number":68,"context_line":"the node should not be considered for scheduling any longer. The \u0027retired\u0027"},{"line_number":69,"context_line":"field can be set irrespective of the node\u0027s state, in particular when the"},{"line_number":70,"context_line":"node is \u0027active\u0027."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Active nodes which are cleaned while \u0027retired\u0027 is True, e.g. upon instance"},{"line_number":73,"context_line":"deletion, go to \u0027manageable\u0027 (rather than \u0027available\u0027). This leaves no window"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_7850f42c","line":70,"in_reply_to":"dfbec78f_dff1236d","updated":"2019-11-22 12:35:51.000000000","message":"Also: nodes can still be active when the flag is set. We usually plan retirements months in advance and it\u0027d be pretty handy to flag nodes accordingly.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"99bb521fecea9386607d2fc5cd93057d1d12edcd","unresolved":false,"context_lines":[{"line_number":74,"context_line":"where a retired node would receive another instance. Otherwise, \u0027retired\u0027 set"},{"line_number":75,"context_line":"to True shall not interfere with cleaning."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Available nodes which get \u0027retired\u0027 set shall move to \u0027manageable\u0027."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Nodes with \u0027retired\u0027 set to True cannot move from manageable to available"},{"line_number":80,"context_line":"(to prevent accidental re-use): the \"provide\" verb is blocked. In order to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_bf11cf06","line":77,"updated":"2019-05-10 16:03:56.000000000","message":"Is that automatic? Are there other examples of setting values on nodes causing state transitions in that way (sorry, I\u0027m a bit new here, but this seems unusual based on how I\u0027ve been using Ironic so far)?","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7fcb2a9c512190c508f63be77dc7f416ddea215b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"where a retired node would receive another instance. Otherwise, \u0027retired\u0027 set"},{"line_number":75,"context_line":"to True shall not interfere with cleaning."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Available nodes which get \u0027retired\u0027 set shall move to \u0027manageable\u0027."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Nodes with \u0027retired\u0027 set to True cannot move from manageable to available"},{"line_number":80,"context_line":"(to prevent accidental re-use): the \"provide\" verb is blocked. In order to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_f6b8c0e5","line":77,"in_reply_to":"dfbec78f_768cd07e","updated":"2019-05-12 19:30:25.000000000","message":"\u003e \u003e It sounds like you\u0027re adding a flag as a way to add a state, but\n \u003e \u003e without updating the state machine. If \"retired\" is different\n \u003e from\n \u003e \u003e \"manageable\" then it ought to be a separate state.\n \u003e \n \u003e \"retired\" is not a state, it\u0027s more like the \u0027maintenance\u0027 flag:\n \u003e one of the main features we need is to be able to set it without\n \u003e changing the state, e.g. when the node is \"active\", so that the\n \u003e state machine can be followed, e.g. for cleaning, but it is\n \u003e prevented that the node is eligible for scheduling.\n\nThe description you\u0027re giving makes it seem that it isn\u0027t like the maintenance flag, though. The maintenance flag bypasses some of the protective checks in state transitions, but doesn\u0027t cause any automatically and does not make it so some transitions are off limits. This new thing hides the node in that final \"manageable\" state, where it is not eligible for scheduling. Setting the flag is also described as triggering state transitions on its own.\n\nIf we don\u0027t add this to the state machine, how will we document that setting the flag changes those behaviors in the existing states and adds that new transition?\n\n \u003e \n \u003e \u003e Then you\u0027d be\n \u003e \u003e able to query the nodes in that state and users would be able to\n \u003e \u003e explicitly put nodes into that state in the normal way, without\n \u003e the\n \u003e \u003e surprising behavior of having a flag on the node trigger a state\n \u003e \u003e transition.\n \u003e \n \u003e We may want to drop the state change if that is confusing.\n \u003e \u0027manageable\u0027 was just a sensible state to have nodes in before they\n \u003e are removed (and would then not require operators to move nodes\n \u003e once more before they are removable).\n\nI think what you want is transitions from several of the operational states (active, error, the various versions of \"failed\", manageable, etc.) via an action like \"remove from service\", through cleaning, to a state that means the node is unschedulable (maybe that\u0027s a good name for the state) but still known to ironic (unlike deleting it). That avoids having effectively 2 versions of the manageable state (one where the node is manageable, and one where it\u0027s not actually manageable). It also makes it clear how to get the node into the new state, and what\u0027s going to happen to it when that transition happens. Having that clarity is part of the point of the state machine, right?","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7bfdd7f51fc86c080970f55e776d0823444df382","unresolved":false,"context_lines":[{"line_number":74,"context_line":"where a retired node would receive another instance. Otherwise, \u0027retired\u0027 set"},{"line_number":75,"context_line":"to True shall not interfere with cleaning."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Available nodes which get \u0027retired\u0027 set shall move to \u0027manageable\u0027."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Nodes with \u0027retired\u0027 set to True cannot move from manageable to available"},{"line_number":80,"context_line":"(to prevent accidental re-use): the \"provide\" verb is blocked. In order to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_fff66763","line":77,"in_reply_to":"dfbec78f_bf11cf06","updated":"2019-05-10 16:29:31.000000000","message":"That would be automatic and would probably the first of this kind. The alternative would be to introduce a completely new state (which is certainly possible, but seemed heavier).","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7189a3dd2e60e66c87b19527eec9c24448e7dfe9","unresolved":false,"context_lines":[{"line_number":74,"context_line":"where a retired node would receive another instance. Otherwise, \u0027retired\u0027 set"},{"line_number":75,"context_line":"to True shall not interfere with cleaning."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Available nodes which get \u0027retired\u0027 set shall move to \u0027manageable\u0027."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Nodes with \u0027retired\u0027 set to True cannot move from manageable to available"},{"line_number":80,"context_line":"(to prevent accidental re-use): the \"provide\" verb is blocked. In order to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_768cd07e","line":77,"in_reply_to":"dfbec78f_db59258e","updated":"2019-05-12 18:44:18.000000000","message":"\u003e It sounds like you\u0027re adding a flag as a way to add a state, but\n \u003e without updating the state machine. If \"retired\" is different from\n \u003e \"manageable\" then it ought to be a separate state.\n\n\"retired\" is not a state, it\u0027s more like the \u0027maintenance\u0027 flag: one of the main features we need is to be able to set it without changing the state, e.g. when the node is \"active\", so that the state machine can be followed, e.g. for cleaning, but it is prevented that the node is eligible for scheduling.\n\n \u003e Then you\u0027d be\n \u003e able to query the nodes in that state and users would be able to\n \u003e explicitly put nodes into that state in the normal way, without the\n \u003e surprising behavior of having a flag on the node trigger a state\n \u003e transition.\n \nWe may want to drop the state change if that is confusing. \u0027manageable\u0027 was just a sensible state to have nodes in before they are removed (and would then not require operators to move nodes once more before they are removable).","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f597b99bebbde2534724b6e0e351f40770509db2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"where a retired node would receive another instance. Otherwise, \u0027retired\u0027 set"},{"line_number":75,"context_line":"to True shall not interfere with cleaning."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Available nodes which get \u0027retired\u0027 set shall move to \u0027manageable\u0027."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Nodes with \u0027retired\u0027 set to True cannot move from manageable to available"},{"line_number":80,"context_line":"(to prevent accidental re-use): the \"provide\" verb is blocked. In order to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_aba938dd","line":77,"in_reply_to":"dfbec78f_f6b8c0e5","updated":"2019-11-22 12:35:51.000000000","message":"We have state \"versions\" then already: manageable w/ and w/o maintenance, active w/ and w/o protected, ...\n\nAnd with my operator hat on, I can say that good logging and/or docs will help to understand what the flag does ... not sure the current state machine is a good example of clarity how things work ... let alone if we add more states :)","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"eb108dd40cfd3799b11b977f29ed1b68780e0194","unresolved":false,"context_lines":[{"line_number":74,"context_line":"where a retired node would receive another instance. Otherwise, \u0027retired\u0027 set"},{"line_number":75,"context_line":"to True shall not interfere with cleaning."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Available nodes which get \u0027retired\u0027 set shall move to \u0027manageable\u0027."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Nodes with \u0027retired\u0027 set to True cannot move from manageable to available"},{"line_number":80,"context_line":"(to prevent accidental re-use): the \"provide\" verb is blocked. In order to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_db59258e","line":77,"in_reply_to":"dfbec78f_fff66763","updated":"2019-05-12 17:08:23.000000000","message":"It sounds like you\u0027re adding a flag as a way to add a state, but without updating the state machine. If \"retired\" is different from \"manageable\" then it ought to be a separate state. Then you\u0027d be able to query the nodes in that state and users would be able to explicitly put nodes into that state in the normal way, without the surprising behavior of having a flag on the node trigger a state transition.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"99bb521fecea9386607d2fc5cd93057d1d12edcd","unresolved":false,"context_lines":[{"line_number":92,"context_line":"An alternative to address the lack of support for node retirement would be"},{"line_number":93,"context_line":"to introduce a new state \u0027retired\u0027 in the ironic state diagram. While this"},{"line_number":94,"context_line":"would require additional efforts to implement, there are no obvious benefits"},{"line_number":95,"context_line":"compared to the proposal of this specification."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Using the currently available means in ironic, such as the \u0027maintenance\u0027 state"},{"line_number":98,"context_line":"and \u0027maintenance_reason\u0027, is certainly possible but will cause inconveniences"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_ff342795","line":95,"updated":"2019-05-10 16:03:56.000000000","message":"I don\u0027t think we need a state, just a transition (or set of transitions).","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7fcb2a9c512190c508f63be77dc7f416ddea215b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"An alternative to address the lack of support for node retirement would be"},{"line_number":93,"context_line":"to introduce a new state \u0027retired\u0027 in the ironic state diagram. While this"},{"line_number":94,"context_line":"would require additional efforts to implement, there are no obvious benefits"},{"line_number":95,"context_line":"compared to the proposal of this specification."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Using the currently available means in ironic, such as the \u0027maintenance\u0027 state"},{"line_number":98,"context_line":"and \u0027maintenance_reason\u0027, is certainly possible but will cause inconveniences"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_96d14426","line":95,"in_reply_to":"dfbec78f_36f098fe","updated":"2019-05-12 19:30:25.000000000","message":"Except that when the node has this flag set, it won\u0027t be manageable.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"eb108dd40cfd3799b11b977f29ed1b68780e0194","unresolved":false,"context_lines":[{"line_number":92,"context_line":"An alternative to address the lack of support for node retirement would be"},{"line_number":93,"context_line":"to introduce a new state \u0027retired\u0027 in the ironic state diagram. While this"},{"line_number":94,"context_line":"would require additional efforts to implement, there are no obvious benefits"},{"line_number":95,"context_line":"compared to the proposal of this specification."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Using the currently available means in ironic, such as the \u0027maintenance\u0027 state"},{"line_number":98,"context_line":"and \u0027maintenance_reason\u0027, is certainly possible but will cause inconveniences"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_9b572d59","line":95,"in_reply_to":"dfbec78f_7f87d7b6","updated":"2019-05-12 17:08:23.000000000","message":"But \"manageable\" *is not* the desired state here, right? The desired state is one in which the node will not be reclaimed to be used again.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f597b99bebbde2534724b6e0e351f40770509db2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"An alternative to address the lack of support for node retirement would be"},{"line_number":93,"context_line":"to introduce a new state \u0027retired\u0027 in the ironic state diagram. While this"},{"line_number":94,"context_line":"would require additional efforts to implement, there are no obvious benefits"},{"line_number":95,"context_line":"compared to the proposal of this specification."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Using the currently available means in ironic, such as the \u0027maintenance\u0027 state"},{"line_number":98,"context_line":"and \u0027maintenance_reason\u0027, is certainly possible but will cause inconveniences"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_184c609c","line":95,"in_reply_to":"dfbec78f_96d14426","updated":"2019-11-22 12:35:51.000000000","message":"It is. Even more than a node that is manageable but has maintenance set.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7189a3dd2e60e66c87b19527eec9c24448e7dfe9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"An alternative to address the lack of support for node retirement would be"},{"line_number":93,"context_line":"to introduce a new state \u0027retired\u0027 in the ironic state diagram. While this"},{"line_number":94,"context_line":"would require additional efforts to implement, there are no obvious benefits"},{"line_number":95,"context_line":"compared to the proposal of this specification."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Using the currently available means in ironic, such as the \u0027maintenance\u0027 state"},{"line_number":98,"context_line":"and \u0027maintenance_reason\u0027, is certainly possible but will cause inconveniences"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_36f098fe","line":95,"in_reply_to":"dfbec78f_9b572d59","updated":"2019-05-12 18:44:18.000000000","message":"I think it is: it is the point from which nodes can be sent to \u0027available\u0027, \u0027cleaning\u0027, \u0027inspection\u0027 ... or they can be deleted from ironic (and manageable nodes are not eligible for scheduling).","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7bfdd7f51fc86c080970f55e776d0823444df382","unresolved":false,"context_lines":[{"line_number":92,"context_line":"An alternative to address the lack of support for node retirement would be"},{"line_number":93,"context_line":"to introduce a new state \u0027retired\u0027 in the ironic state diagram. While this"},{"line_number":94,"context_line":"would require additional efforts to implement, there are no obvious benefits"},{"line_number":95,"context_line":"compared to the proposal of this specification."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Using the currently available means in ironic, such as the \u0027maintenance\u0027 state"},{"line_number":98,"context_line":"and \u0027maintenance_reason\u0027, is certainly possible but will cause inconveniences"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_7f87d7b6","line":95,"in_reply_to":"dfbec78f_ff342795","updated":"2019-05-10 16:29:31.000000000","message":"Nodes can already move to the desired end state (\u0027manageable\u0027), but there is no way to see why they moved there (or exclude them from scheduling).","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"99bb521fecea9386607d2fc5cd93057d1d12edcd","unresolved":false,"context_lines":[{"line_number":122,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"When \u0027retired\u0027 is set to True, a node cannot move from \u0027manageable\u0027 to"},{"line_number":125,"context_line":"\u0027available\u0027."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_bfdf8f38","line":125,"updated":"2019-05-10 16:03:56.000000000","message":"There are a lot of other states. Does this new flag not have any impact on them?","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7fcb2a9c512190c508f63be77dc7f416ddea215b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"When \u0027retired\u0027 is set to True, a node cannot move from \u0027manageable\u0027 to"},{"line_number":125,"context_line":"\u0027available\u0027."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_76c4d05f","line":125,"in_reply_to":"dfbec78f_7fb0378b","updated":"2019-05-12 19:30:25.000000000","message":"If modifying the state machine is hard, maybe we can make that simpler.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7bfdd7f51fc86c080970f55e776d0823444df382","unresolved":false,"context_lines":[{"line_number":122,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"When \u0027retired\u0027 is set to True, a node cannot move from \u0027manageable\u0027 to"},{"line_number":125,"context_line":"\u0027available\u0027."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_7fb0378b","line":125,"in_reply_to":"dfbec78f_bfdf8f38","updated":"2019-05-10 16:29:31.000000000","message":"The flag is really pretty light-weight. It\u0027s mostly to tag a node so that 3rd party tools or workflows can identify the nodes to remove from ironic.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a13483f1a25ce4baa3013a2c86485c7b387a85bb","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The REST API will need to be extended."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The proposed change will require a new sub-resource for the \u0027nodes\u0027"},{"line_number":134,"context_line":"resource to set and unset the \u0027retired\u0027 field:"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* PUT /v1/nodes/{node_ident}/retired"},{"line_number":137,"context_line":"  Task: Set Retired Flag"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfbec78f_98c405f7","line":134,"range":{"start_line":133,"start_character":33,"end_line":134,"end_character":45},"updated":"2019-05-13 15:55:34.000000000","message":"Let\u0027s not do this please. I don\u0027t remember why we did it for maintenance, but it was a mistake from restful point of view and a pain for SDKs. Let\u0027s just update them the way \"protected\" is updated.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f597b99bebbde2534724b6e0e351f40770509db2","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The REST API will need to be extended."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The proposed change will require a new sub-resource for the \u0027nodes\u0027"},{"line_number":134,"context_line":"resource to set and unset the \u0027retired\u0027 field:"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* PUT /v1/nodes/{node_ident}/retired"},{"line_number":137,"context_line":"  Task: Set Retired Flag"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_4b468452","line":134,"range":{"start_line":133,"start_character":33,"end_line":134,"end_character":45},"in_reply_to":"dfbec78f_98c405f7","updated":"2019-11-22 12:35:51.000000000","message":"Thanks, Dmitry. I changed the spec accordingly.","commit_id":"14edc4bc39b272910d4f880eec47dd94fc20b3d5"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"2e7c48195da1dfe251a244fda829eae1e1d6aab5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"\u0027available\u0027 or after being moved to \u0027manageable\u0027 (and potential additional"},{"line_number":43,"context_line":"cleaning)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"There are at least two issues that this spec tries to improve:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* between the deletion of the instance and the deletion of the node, there"},{"line_number":48,"context_line":"  is a time window in which a new instance could be scheduled to a node on its"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_09ddf412","line":45,"range":{"start_line":45,"start_character":54,"end_line":45,"end_character":61},"updated":"2019-11-22 13:45:48.000000000","message":"nit: fix ?","commit_id":"529286129b077e5bbcd20067091e2085c05dd94f"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"95201d7d5765dee8bea926464d20064e73e63da6","unresolved":false,"context_lines":[{"line_number":42,"context_line":"\u0027available\u0027 or after being moved to \u0027manageable\u0027 (and potential additional"},{"line_number":43,"context_line":"cleaning)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"There are at least two issues that this spec tries to improve:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* between the deletion of the instance and the deletion of the node, there"},{"line_number":48,"context_line":"  is a time window in which a new instance could be scheduled to a node on its"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_3366aff0","line":45,"range":{"start_line":45,"start_character":54,"end_line":45,"end_character":61},"in_reply_to":"3fa7e38b_09ddf412","updated":"2019-12-02 14:03:34.000000000","message":"Done","commit_id":"529286129b077e5bbcd20067091e2085c05dd94f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c11d89096fad6e20dac243547b1789f8ea3c8ba3","unresolved":false,"context_lines":[{"line_number":95,"context_line":"An alternative to address the lack of support for node retirement would be"},{"line_number":96,"context_line":"to introduce a new state \u0027retired\u0027 in the ironic state diagram. While this"},{"line_number":97,"context_line":"would require additional efforts to implement, there are no obvious benefits"},{"line_number":98,"context_line":"compared to the proposal of this specification."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Using the currently available means in ironic, such as the \u0027maintenance\u0027 state"},{"line_number":101,"context_line":"and \u0027maintenance_reason\u0027, is certainly possible but will cause inconveniences"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_e11da4be","line":98,"updated":"2019-12-02 13:43:25.000000000","message":"For the record, I\u0027m a hard -1 to using an state field that is designed present context for the future case of \"this will be removed... eventually.\"","commit_id":"529286129b077e5bbcd20067091e2085c05dd94f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c11d89096fad6e20dac243547b1789f8ea3c8ba3","unresolved":false,"context_lines":[{"line_number":176,"context_line":"------------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"None."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Ramdisk impact"},{"line_number":182,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_c161883a","line":179,"updated":"2019-12-02 13:43:25.000000000","message":"Seems like there will be an eventual impact here, but that may be out of scope of this spec.","commit_id":"529286129b077e5bbcd20067091e2085c05dd94f"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"95201d7d5765dee8bea926464d20064e73e63da6","unresolved":false,"context_lines":[{"line_number":176,"context_line":"------------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"None."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Ramdisk impact"},{"line_number":182,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_53a6cb0f","line":179,"in_reply_to":"3fa7e38b_c161883a","updated":"2019-12-02 14:03:34.000000000","message":"I think it\u0027s be good to mention that here, added now. Thanks!","commit_id":"529286129b077e5bbcd20067091e2085c05dd94f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c11d89096fad6e20dac243547b1789f8ea3c8ba3","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    * change cleaning --\u003e manageable"},{"line_number":241,"context_line":"    * move available --\u003e manageable"},{"line_number":242,"context_line":"    * block manageable --\u003e available"},{"line_number":243,"context_line":"* Exclude retired nodes from periodic tasks"},{"line_number":244,"context_line":"* Extend API"},{"line_number":245,"context_line":"* Extend cli"},{"line_number":246,"context_line":"* Add new API to openstacksdk"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_21697c25","line":243,"updated":"2019-12-02 13:43:25.000000000","message":"Super reasonable!","commit_id":"529286129b077e5bbcd20067091e2085c05dd94f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c11d89096fad6e20dac243547b1789f8ea3c8ba3","unresolved":false,"context_lines":[{"line_number":245,"context_line":"* Extend cli"},{"line_number":246,"context_line":"* Add new API to openstacksdk"},{"line_number":247,"context_line":"* Add documentation"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Dependencies"},{"line_number":251,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_a15ecc76","line":248,"updated":"2019-12-02 13:43:25.000000000","message":"There is a missing item, nova.virt.ironic will likely need to be updated to navigate the new flag. That may be out of scope of this item though.","commit_id":"529286129b077e5bbcd20067091e2085c05dd94f"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"95201d7d5765dee8bea926464d20064e73e63da6","unresolved":false,"context_lines":[{"line_number":245,"context_line":"* Extend cli"},{"line_number":246,"context_line":"* Add new API to openstacksdk"},{"line_number":247,"context_line":"* Add documentation"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"Dependencies"},{"line_number":251,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_f38d777c","line":248,"in_reply_to":"3fa7e38b_a15ecc76","updated":"2019-12-02 14:03:34.000000000","message":"Thanks, Julia, I added this now.","commit_id":"529286129b077e5bbcd20067091e2085c05dd94f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9043cb110ec0b8b69b0110abba717b1fe2509447","unresolved":false,"context_lines":[{"line_number":77,"context_line":"Active nodes which are cleaned while \u0027retired\u0027 is True, e.g. upon instance"},{"line_number":78,"context_line":"deletion, go to \u0027manageable\u0027 (rather than \u0027available\u0027). This leaves no window"},{"line_number":79,"context_line":"where a retired node would receive another instance. Otherwise, \u0027retired\u0027 set"},{"line_number":80,"context_line":"to True shall not interfere with cleaning."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Nodes with \u0027retired\u0027 set to True cannot move from manageable to available"},{"line_number":83,"context_line":"(to prevent accidental re-use): the \"provide\" verb is blocked. In order to"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_e5d11ffa","line":80,"updated":"2019-12-03 11:19:59.000000000","message":"I assume rebuilds are also possible. Or?","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"a99cc9422e4663c9b169ffc72207d2b155646e67","unresolved":false,"context_lines":[{"line_number":77,"context_line":"Active nodes which are cleaned while \u0027retired\u0027 is True, e.g. upon instance"},{"line_number":78,"context_line":"deletion, go to \u0027manageable\u0027 (rather than \u0027available\u0027). This leaves no window"},{"line_number":79,"context_line":"where a retired node would receive another instance. Otherwise, \u0027retired\u0027 set"},{"line_number":80,"context_line":"to True shall not interfere with cleaning."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Nodes with \u0027retired\u0027 set to True cannot move from manageable to available"},{"line_number":83,"context_line":"(to prevent accidental re-use): the \"provide\" verb is blocked. In order to"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_b03b5c37","line":80,"in_reply_to":"3fa7e38b_e5d11ffa","updated":"2019-12-03 17:23:41.000000000","message":"Yes. Should I make this explicit?","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9043cb110ec0b8b69b0110abba717b1fe2509447","unresolved":false,"context_lines":[{"line_number":118,"context_line":"State Machine Impact"},{"line_number":119,"context_line":"--------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"The \u0027retired\u0027 field can be set on nodes in any state."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"When \u0027retired\u0027 is set to True, a node will not move to \u0027available\u0027 after"},{"line_number":124,"context_line":"cleaning, but to \u0027manageable\u0027."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_8502ab71","line":121,"updated":"2019-12-03 11:19:59.000000000","message":"Including transient states as long as the node is not locked?","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"a99cc9422e4663c9b169ffc72207d2b155646e67","unresolved":false,"context_lines":[{"line_number":118,"context_line":"State Machine Impact"},{"line_number":119,"context_line":"--------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"The \u0027retired\u0027 field can be set on nodes in any state."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"When \u0027retired\u0027 is set to True, a node will not move to \u0027available\u0027 after"},{"line_number":124,"context_line":"cleaning, but to \u0027manageable\u0027."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_f0b23406","line":121,"in_reply_to":"3fa7e38b_8502ab71","updated":"2019-12-03 17:23:41.000000000","message":"Hmm, no strong opinion, but I\u0027d tend to say \"yes\" ... refusing to do it will require the admin to wait or come back to this node.","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1842fbcf93b2f23c90e94cf5c52e41068d9bba2e","unresolved":false,"context_lines":[{"line_number":118,"context_line":"State Machine Impact"},{"line_number":119,"context_line":"--------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"The \u0027retired\u0027 field can be set on nodes in any state."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"When \u0027retired\u0027 is set to True, a node will not move to \u0027available\u0027 after"},{"line_number":124,"context_line":"cleaning, but to \u0027manageable\u0027."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_5f79d3f8","line":121,"in_reply_to":"3fa7e38b_f0b23406","updated":"2019-12-03 22:21:30.000000000","message":"I think we should absolutely do so. It changes some logic but we\u0027ve also had cases where trying to put tons of extra guard rails in have caused more issues then they have prevente.d","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9043cb110ec0b8b69b0110abba717b1fe2509447","unresolved":false,"context_lines":[{"line_number":119,"context_line":"--------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"The \u0027retired\u0027 field can be set on nodes in any state."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"When \u0027retired\u0027 is set to True, a node will not move to \u0027available\u0027 after"},{"line_number":124,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_a505677b","line":122,"updated":"2019-12-03 11:19:59.000000000","message":"What happens when you set the flat on an \"available\" node? It sounds like a state we want to avoid, no? Maybe make it HTTP 400?","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"a99cc9422e4663c9b169ffc72207d2b155646e67","unresolved":false,"context_lines":[{"line_number":119,"context_line":"--------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"The \u0027retired\u0027 field can be set on nodes in any state."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"When \u0027retired\u0027 is set to True, a node will not move to \u0027available\u0027 after"},{"line_number":124,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_d0f13898","line":122,"in_reply_to":"3fa7e38b_a505677b","updated":"2019-12-03 17:23:41.000000000","message":"I was thinking about \"available\" as well ... also here I\u0027d tend to say \"yes, allow available nodes to have the retired flag set\". My thinking is that as an operator one usually retires a whole delivery of nodes. Requiring the operator to move them to certain states first seems like an uncomfortable detour :) Any particular reason why you think \"available\" should be excluded? (The one you point out below?)","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1842fbcf93b2f23c90e94cf5c52e41068d9bba2e","unresolved":false,"context_lines":[{"line_number":119,"context_line":"--------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"The \u0027retired\u0027 field can be set on nodes in any state."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"When \u0027retired\u0027 is set to True, a node will not move to \u0027available\u0027 after"},{"line_number":124,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_bf69e726","line":122,"in_reply_to":"3fa7e38b_d0f13898","updated":"2019-12-03 22:21:30.000000000","message":"I absolutely believe an operator should be able to set in any state including available, it should only govern the path when things transition states.\n\nCould this end up with an an available node flagged for retirement, absolutely. There is no need for us to change the state, the operator can change it at will if they have the API queries to return just retired nodes.","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9043cb110ec0b8b69b0110abba717b1fe2509447","unresolved":false,"context_lines":[{"line_number":124,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"When \u0027retired\u0027 is set to True, a node cannot move from \u0027manageable\u0027 to"},{"line_number":127,"context_line":"\u0027available\u0027, the corresponding \u0027provide\u0027 verb will return an HTTP 403."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_45fcb371","line":127,"updated":"2019-12-03 11:19:59.000000000","message":"We use HTTP Conflict for invalid states. 400 possibly, but 403 sounds definitely wrong to me.","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"a99cc9422e4663c9b169ffc72207d2b155646e67","unresolved":false,"context_lines":[{"line_number":124,"context_line":"cleaning, but to \u0027manageable\u0027."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"When \u0027retired\u0027 is set to True, a node cannot move from \u0027manageable\u0027 to"},{"line_number":127,"context_line":"\u0027available\u0027, the corresponding \u0027provide\u0027 verb will return an HTTP 403."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_1099106c","line":127,"in_reply_to":"3fa7e38b_45fcb371","updated":"2019-12-03 17:23:41.000000000","message":"Ok, I change to 409?","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9043cb110ec0b8b69b0110abba717b1fe2509447","unresolved":false,"context_lines":[{"line_number":176,"context_line":"------------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"The nova driver needs to skip nodes with the retirement flag set when"},{"line_number":179,"context_line":"compiling the list of nodes eligible for scheduling."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Ramdisk impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_65ff6f66","line":179,"updated":"2019-12-03 11:19:59.000000000","message":"This shouldn\u0027t be possible - see above. And while we can update nova, we cannot update all potential consumers (e.g. old versions of metalsmith) in use.","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1842fbcf93b2f23c90e94cf5c52e41068d9bba2e","unresolved":false,"context_lines":[{"line_number":176,"context_line":"------------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"The nova driver needs to skip nodes with the retirement flag set when"},{"line_number":179,"context_line":"compiling the list of nodes eligible for scheduling."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Ramdisk impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_9ff50b54","line":179,"in_reply_to":"3fa7e38b_3003ec78","updated":"2019-12-03 22:21:30.000000000","message":"I\u0027m kind of -1 to the idea of refusing to allow available nodes to have the flag set. I\u0027m sure someone will find it frustrating and confusing from an API interaction and just file a bug that they should be able to since it is an eventual case that is available to be signaled to supported consumers.\n\nIf someone tries to deploy an available node with retirement set, that should ideally fail.","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"a99cc9422e4663c9b169ffc72207d2b155646e67","unresolved":false,"context_lines":[{"line_number":176,"context_line":"------------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"The nova driver needs to skip nodes with the retirement flag set when"},{"line_number":179,"context_line":"compiling the list of nodes eligible for scheduling."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Ramdisk impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_3003ec78","line":179,"in_reply_to":"3fa7e38b_65ff6f66","updated":"2019-12-03 17:23:41.000000000","message":"Hmm ... so you suggest to exclude available from having the flag set? This would solve this backwards compatibility issue, not unlogical :-), but may require an additional state change the operator needs to node to do ... OTOH, it would complete avoid any changes to the nova driver ... fine with me :)","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"db2e0e0a7b144b4a86c0d83a3a3623b9b1a4c3ad","unresolved":false,"context_lines":[{"line_number":176,"context_line":"------------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"The nova driver needs to skip nodes with the retirement flag set when"},{"line_number":179,"context_line":"compiling the list of nodes eligible for scheduling."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Ramdisk impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_5cc23636","line":179,"in_reply_to":"3fa7e38b_9ff50b54","updated":"2019-12-04 12:40:36.000000000","message":"I\u0027m open to any suggestions that keep backwards compatibility (yours does not).","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9043cb110ec0b8b69b0110abba717b1fe2509447","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    * move available --\u003e manageable"},{"line_number":243,"context_line":"    * block manageable --\u003e available"},{"line_number":244,"context_line":"* Exclude retired nodes from periodic tasks"},{"line_number":245,"context_line":"* Exclude retired nodes from scheduling (nova driver)"},{"line_number":246,"context_line":"* Extend API"},{"line_number":247,"context_line":"* Extend cli"},{"line_number":248,"context_line":"* Add new API to openstacksdk"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_05f6bb91","line":245,"updated":"2019-12-03 11:19:59.000000000","message":"* Exclude retires nodes from allocations (but see above)","commit_id":"4f549c6a7da0763687939622f69f09b33f434e01"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a0af94f9ef9a718b78364991e9a6d70f1383122","unresolved":false,"context_lines":[{"line_number":118,"context_line":"State Machine Impact"},{"line_number":119,"context_line":"--------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"The \u0027retired\u0027 field can be set on nodes in any state except \u0027available\u0027."},{"line_number":122,"context_line":"Nodes in \u0027available\u0027 should be moved to manageable first to ensure"},{"line_number":123,"context_line":"backwards compatibility with tools like metalsmith. This also eliminates"},{"line_number":124,"context_line":"the need for changes in the nova driver."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_7f8fefcc","line":121,"updated":"2019-12-03 22:23:24.000000000","message":"*sigh* I\u0027m really not a fan of wrapping additional checks around when the field can be set, but I sense we\u0027ll just bikeshed.","commit_id":"e7b7ec85b203ba74e3b772bbee3aefbff7248111"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a0af94f9ef9a718b78364991e9a6d70f1383122","unresolved":false,"context_lines":[{"line_number":121,"context_line":"The \u0027retired\u0027 field can be set on nodes in any state except \u0027available\u0027."},{"line_number":122,"context_line":"Nodes in \u0027available\u0027 should be moved to manageable first to ensure"},{"line_number":123,"context_line":"backwards compatibility with tools like metalsmith. This also eliminates"},{"line_number":124,"context_line":"the need for changes in the nova driver."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"The \u0027retired\u0027 field can also be set for nodes in transient states,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3fa7e38b_ffb43f84","line":124,"updated":"2019-12-03 22:23:24.000000000","message":"This is reasonable :)","commit_id":"e7b7ec85b203ba74e3b772bbee3aefbff7248111"}]}
