)]}'
{"specs/approved/power-fault-recovery.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a3f8a041c103bfbe82931de7f7a2a325dde72531","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Add a new integer option named ``[conductor]power_failure_recovery_interval``"},{"line_number":51,"context_line":"to config how many seconds between each run of periodic task. Set to 0 will"},{"line_number":52,"context_line":"disable power fault recovery, the default value is 0."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_a4040216","line":52,"updated":"2018-03-16 10:40:13.000000000","message":"I don\u0027t quite agree with disabling it by default. It\u0027s a highly demanded feature, I suggest just setting it to something safe (say, 5 minutes).","commit_id":"2e407f84acffbb1a13d032eaa0cea9a8aa91ee00"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5a4e11de002a8ca69d9c93e951d982198aed1836","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Add a new integer option named ``[conductor]power_failure_recovery_interval``"},{"line_number":51,"context_line":"to config how many seconds between each run of periodic task. Set to 0 will"},{"line_number":52,"context_line":"disable power fault recovery, the default value is 0."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_7e3f29b5","line":52,"in_reply_to":"df7087c5_559a486e","updated":"2018-03-19 15:19:37.000000000","message":"\u003e let\u0027s consider a performance edge of 100 nodes managed by a conductor, 200~300 minutes are required for one iteration.\n\nYou\u0027re using an example when 100 nodes ended up with their BMC unreachable. I think an operator with such cloud has bigger problems :) But if somebody really has such situations, they can raise this value, right?\n\nOn the other hand, consider the real case we\u0027re addressing here: a few nodes were unavailable for whatever reasons (networking, etc) for 10 minutes, and ironic moved them to maintenance mode. 1 hour interval means that in the worst case we\u0027ll have 1 hour until they recover. That\u0027s may be fine for a huge cloud (though I\u0027m not sure), but for a smaller cloud it\u0027s too long.\n\nI think there should be some kind of symmetry here: it takes us minutes to move nodes to maintenance, so it should take us minutes to move it back.","commit_id":"2e407f84acffbb1a13d032eaa0cea9a8aa91ee00"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"e9a0c46befd65575161d415f514e5c2d03b7f10f","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Add a new integer option named ``[conductor]power_failure_recovery_interval``"},{"line_number":51,"context_line":"to config how many seconds between each run of periodic task. Set to 0 will"},{"line_number":52,"context_line":"disable power fault recovery, the default value is 0."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_8f7525cf","line":52,"in_reply_to":"df7087c5_7e3f29b5","updated":"2018-03-19 17:15:58.000000000","message":"Here\u0027s the thing - if the networking outage is conductor-side, we will lose all nodes for that conductor, and it will take hours to bring them back.\n\n5 minutes does feel short, but I don\u0027t really have data to support this. It does feel like this should be similar to sync_power_state_interval. Any reason those should not just use the same config option?\n\nAgree it should be enabled by default.","commit_id":"2e407f84acffbb1a13d032eaa0cea9a8aa91ee00"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"2c61e30b68f3a5fa7d4ecf5143850273d8679f6c","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Add a new integer option named ``[conductor]power_failure_recovery_interval``"},{"line_number":51,"context_line":"to config how many seconds between each run of periodic task. Set to 0 will"},{"line_number":52,"context_line":"disable power fault recovery, the default value is 0."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_774e5ec2","line":52,"in_reply_to":"df7087c5_8f7525cf","updated":"2018-03-20 05:45:03.000000000","message":"Nothing special, I just want to achieve it with least performance impact.\nActually I don\u0027t have data support too, keeping symmetry is a kind of way. Consider bringing node into maintenance would cause 6~10 minutes, I\u0027m fine with values without much deviation, set to 5 minutes for now.","commit_id":"2e407f84acffbb1a13d032eaa0cea9a8aa91ee00"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"bed0121352546a7a0ea9afeac219ff29a0508a69","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Add a new integer option named ``[conductor]power_failure_recovery_interval``"},{"line_number":51,"context_line":"to config how many seconds between each run of periodic task. Set to 0 will"},{"line_number":52,"context_line":"disable power fault recovery, the default value is 0."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_559a486e","line":52,"in_reply_to":"df7087c5_a4040216","updated":"2018-03-19 13:57:59.000000000","message":"Ok, I just don\u0027t want to make surprise to users after upgrades.\nThen there will be a tradeoff of choosing default value.\n5 minutes seems too small to me, each ipmitool execution will cause 2~3 minutes to return with current default ipmi retry \u0026 interval settings when BMC is unreachable, let\u0027s consider a performance edge of 100 nodes managed by a conductor, 200~300 minutes are required for one iteration.\nI don\u0027t suppose the worse case would happen, but it highly depends on the cloud scale. From above, I think 1 hour seems fits for most cases, wdyt?","commit_id":"2e407f84acffbb1a13d032eaa0cea9a8aa91ee00"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a3f8a041c103bfbe82931de7f7a2a325dde72531","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Field ``maintenance_type`` is read only from API, and can only be modified"},{"line_number":95,"context_line":"internally. Any POST/PATCH request to Node with ``maintenance_type`` set will"},{"line_number":96,"context_line":"get 406 (Not Acceptable)."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"There is no other impact to API behaviors."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_44072619","line":96,"updated":"2018-03-16 10:40:13.000000000","message":"actually, 400 (Bad Request), Not Acceptable is used with old API versions","commit_id":"2e407f84acffbb1a13d032eaa0cea9a8aa91ee00"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"bed0121352546a7a0ea9afeac219ff29a0508a69","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Field ``maintenance_type`` is read only from API, and can only be modified"},{"line_number":95,"context_line":"internally. Any POST/PATCH request to Node with ``maintenance_type`` set will"},{"line_number":96,"context_line":"get 406 (Not Acceptable)."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"There is no other impact to API behaviors."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_9579c030","line":96,"in_reply_to":"df7087c5_44072619","updated":"2018-03-19 13:57:59.000000000","message":"Ah, right, will update.","commit_id":"2e407f84acffbb1a13d032eaa0cea9a8aa91ee00"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"e9a0c46befd65575161d415f514e5c2d03b7f10f","unresolved":false,"context_lines":[{"line_number":101,"context_line":"Client (CLI) impact"},{"line_number":102,"context_line":"-------------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"The compatibility is handled at ironic API, CLI will not be affected."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"\"ironic\" CLI"},{"line_number":107,"context_line":"~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_cf447d77","line":104,"updated":"2018-03-19 17:15:58.000000000","message":"I think we will need a CLI patch to add the field into the output.","commit_id":"2e407f84acffbb1a13d032eaa0cea9a8aa91ee00"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"2c61e30b68f3a5fa7d4ecf5143850273d8679f6c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"Client (CLI) impact"},{"line_number":102,"context_line":"-------------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"The compatibility is handled at ironic API, CLI will not be affected."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"\"ironic\" CLI"},{"line_number":107,"context_line":"~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df7087c5_37622618","line":104,"in_reply_to":"df7087c5_cf447d77","updated":"2018-03-20 05:45:03.000000000","message":"Done\nAh I messed up with inspect wait, this is a new field, CLI update is required, thanks!","commit_id":"2e407f84acffbb1a13d032eaa0cea9a8aa91ee00"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"361574230e1d8d9c8110c43288a1d16a668143b8","unresolved":false,"context_lines":[{"line_number":35,"context_line":"The field will be set to following values in different cases:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* ``manual``: when a node is explicitly put into maintenance from ironic API."},{"line_number":38,"context_line":"* ``power failure``: when a node is entering maintenance due to power sync"},{"line_number":39,"context_line":"  failure exceeded max retries."},{"line_number":40,"context_line":"* ``clean failure``: when a node is entering maintenance due to failure of a"},{"line_number":41,"context_line":"  cleaning operation."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The field will be set to None if not in maintenance."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_8273a94d","line":41,"range":{"start_line":38,"start_character":0,"end_line":41,"end_character":21},"updated":"2018-03-20 09:40:18.000000000","message":"Ironic also sets the maintenance if rescue abort fails.\nhttps://github.com/openstack/ironic/blob/master/ironic/conductor/manager.py#L740-L741","commit_id":"b118359de4c50d7b63f8c203c797652308e0740a"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a3be3dbe359cc30c1246124147a788847e5964ac","unresolved":false,"context_lines":[{"line_number":35,"context_line":"The field will be set to following values in different cases:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* ``manual``: when a node is explicitly put into maintenance from ironic API."},{"line_number":38,"context_line":"* ``power failure``: when a node is entering maintenance due to power sync"},{"line_number":39,"context_line":"  failure exceeded max retries."},{"line_number":40,"context_line":"* ``clean failure``: when a node is entering maintenance due to failure of a"},{"line_number":41,"context_line":"  cleaning operation."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The field will be set to None if not in maintenance."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_5543f613","line":41,"range":{"start_line":38,"start_character":0,"end_line":41,"end_character":21},"in_reply_to":"df7087c5_8273a94d","updated":"2018-03-21 01:44:03.000000000","message":"Done\nthanks for the update","commit_id":"b118359de4c50d7b63f8c203c797652308e0740a"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"361574230e1d8d9c8110c43288a1d16a668143b8","unresolved":false,"context_lines":[{"line_number":86,"context_line":"* GET /v1/nodes"},{"line_number":87,"context_line":"* GET /v1/nodes/detail"},{"line_number":88,"context_line":"* GET /v1/nodes/{node_ident}"},{"line_number":89,"context_line":"* PATCH /v1/nodes/{node_ident}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"For clients with older microversion, the ``maintenance_type`` is hidden from"},{"line_number":92,"context_line":"the response, this will be done in the ``hide_fields_in_newer_versions``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_624775be","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":30},"updated":"2018-03-20 09:40:18.000000000","message":"Also these APIs\nPUT /v1/nodes/{node_ident}/maintenance\nDELETE /v1/nodes/{node_ident}/maintenance","commit_id":"b118359de4c50d7b63f8c203c797652308e0740a"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"c5e11cc1f1e94e63f7ea52295eb71b9ec028f872","unresolved":false,"context_lines":[{"line_number":86,"context_line":"* GET /v1/nodes"},{"line_number":87,"context_line":"* GET /v1/nodes/detail"},{"line_number":88,"context_line":"* GET /v1/nodes/{node_ident}"},{"line_number":89,"context_line":"* PATCH /v1/nodes/{node_ident}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"For clients with older microversion, the ``maintenance_type`` is hidden from"},{"line_number":92,"context_line":"the response, this will be done in the ``hide_fields_in_newer_versions``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_d17628d9","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":30},"in_reply_to":"df7087c5_624775be","updated":"2018-03-21 15:24:50.000000000","message":"For a second thought, I\u0027m wrong, update_node is a call, not cast, so it\u0027s affected.\nanyway, the endpoints who return node object are involved.","commit_id":"b118359de4c50d7b63f8c203c797652308e0740a"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a3be3dbe359cc30c1246124147a788847e5964ac","unresolved":false,"context_lines":[{"line_number":86,"context_line":"* GET /v1/nodes"},{"line_number":87,"context_line":"* GET /v1/nodes/detail"},{"line_number":88,"context_line":"* GET /v1/nodes/{node_ident}"},{"line_number":89,"context_line":"* PATCH /v1/nodes/{node_ident}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"For clients with older microversion, the ``maintenance_type`` is hidden from"},{"line_number":92,"context_line":"the response, this will be done in the ``hide_fields_in_newer_versions``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_15781e29","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":30},"in_reply_to":"df7087c5_624775be","updated":"2018-03-21 01:44:03.000000000","message":"these two are using update_node underneath, I think they are not affected from the API layer.","commit_id":"b118359de4c50d7b63f8c203c797652308e0740a"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"0597d635ce322ad3d050e6e8268eb2b75abe09ef","unresolved":false,"context_lines":[{"line_number":86,"context_line":"* GET /v1/nodes"},{"line_number":87,"context_line":"* GET /v1/nodes/detail"},{"line_number":88,"context_line":"* GET /v1/nodes/{node_ident}"},{"line_number":89,"context_line":"* PATCH /v1/nodes/{node_ident}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"For clients with older microversion, the ``maintenance_type`` is hidden from"},{"line_number":92,"context_line":"the response, this will be done in the ``hide_fields_in_newer_versions``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_9fac2936","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":30},"in_reply_to":"df7087c5_d17628d9","updated":"2018-03-22 02:50:57.000000000","message":"Oops.. I\u0027m wrong again, entering facepalm mode..\nthese two don\u0027t return node object, 202 is returned if success.","commit_id":"b118359de4c50d7b63f8c203c797652308e0740a"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"c5e11cc1f1e94e63f7ea52295eb71b9ec028f872","unresolved":false,"context_lines":[{"line_number":160,"context_line":"---------------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"A new option ``[conductor]power_failure_recovery_interval`` is introduced to"},{"line_number":163,"context_line":"support power failure recovery. It\u0027s disabled by default, means no impact to"},{"line_number":164,"context_line":"upgrades."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Developer impact"},{"line_number":167,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_313e84da","line":164,"range":{"start_line":163,"start_character":32,"end_line":164,"end_character":9},"updated":"2018-03-21 15:24:50.000000000","message":"needs to update this sentence..","commit_id":"b118359de4c50d7b63f8c203c797652308e0740a"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"0597d635ce322ad3d050e6e8268eb2b75abe09ef","unresolved":false,"context_lines":[{"line_number":160,"context_line":"---------------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"A new option ``[conductor]power_failure_recovery_interval`` is introduced to"},{"line_number":163,"context_line":"support power failure recovery. It\u0027s disabled by default, means no impact to"},{"line_number":164,"context_line":"upgrades."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Developer impact"},{"line_number":167,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_7f5fd540","line":164,"range":{"start_line":163,"start_character":32,"end_line":164,"end_character":9},"in_reply_to":"df7087c5_313e84da","updated":"2018-03-22 02:50:57.000000000","message":"Done","commit_id":"b118359de4c50d7b63f8c203c797652308e0740a"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"0d772283106fc5e770873828ce8b7374e239b515","unresolved":false,"context_lines":[{"line_number":67,"context_line":"Data model impact"},{"line_number":68,"context_line":"-----------------"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"A string field named ``maintenance_type`` will be added to ironic node table."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The field will be added to ``Node`` object, object version will be increased."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_b1b3744d","line":70,"updated":"2018-03-21 14:54:56.000000000","message":"Note that we should set this field to manual for any nodes in maintenance at the time of the db upgrade, for consistency.","commit_id":"b527e646e029644421b4ecebdfccd1b68f71724a"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"0597d635ce322ad3d050e6e8268eb2b75abe09ef","unresolved":false,"context_lines":[{"line_number":67,"context_line":"Data model impact"},{"line_number":68,"context_line":"-----------------"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"A string field named ``maintenance_type`` will be added to ironic node table."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The field will be added to ``Node`` object, object version will be increased."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_1a50270a","line":70,"in_reply_to":"df7087c5_2cf627fb","updated":"2018-03-22 02:50:57.000000000","message":"Done","commit_id":"b527e646e029644421b4ecebdfccd1b68f71724a"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"c5e11cc1f1e94e63f7ea52295eb71b9ec028f872","unresolved":false,"context_lines":[{"line_number":67,"context_line":"Data model impact"},{"line_number":68,"context_line":"-----------------"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"A string field named ``maintenance_type`` will be added to ironic node table."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The field will be added to ``Node`` object, object version will be increased."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_2cf627fb","line":70,"in_reply_to":"df7087c5_b1b3744d","updated":"2018-03-21 15:24:50.000000000","message":"thanks for the input, I\u0027ll put it under section of `Upgrades and Backwards Compatibility`.","commit_id":"b527e646e029644421b4ecebdfccd1b68f71724a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ccee7d64758c40fa1f482e090084d9fc4d35a552","unresolved":false,"context_lines":[{"line_number":112,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The CLI will be updated to support field ``maintenance_type``, guarded"},{"line_number":115,"context_line":"by ironic API microversion."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"RPC API impact"},{"line_number":118,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_b90b4022","line":115,"updated":"2018-03-22 11:23:30.000000000","message":"note: I think we\u0027ll only have to bump the maximum supported microversion to achieve this","commit_id":"c20caae1f7c8fb08d0157f8391eb29977bb0a52f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"8ee433a7fe8e0a57cef2e964774814fef7f555b0","unresolved":false,"context_lines":[{"line_number":112,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"The CLI will be updated to support field ``maintenance_type``, guarded"},{"line_number":115,"context_line":"by ironic API microversion."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"RPC API impact"},{"line_number":118,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df7087c5_49601102","line":115,"in_reply_to":"df7087c5_b90b4022","updated":"2018-03-22 12:14:51.000000000","message":"Unfortunately, we do need to add it here: https://github.com/openstack/python-ironicclient/blob/master/ironicclient/v1/resource_fields.py#L33\n\nand here: https://github.com/openstack/python-ironicclient/blob/master/ironicclient/v1/resource_fields.py#L193","commit_id":"c20caae1f7c8fb08d0157f8391eb29977bb0a52f"}]}
