)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"21aad965b295714ffb9005cc381e1e7cd8ad90dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"58911d7f_018cd5ff","updated":"2023-08-09 13:46:16.000000000","message":"recheck underlying CI VM seemed to take a break for ~40 seconds while job was running, causing it to fail.","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7e3c60f39d38b0bbab5a33946c43424ab812c49d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"31bb4d58_d0958fee","updated":"2023-08-17 16:48:14.000000000","message":"Feel free to fix my comment in a follow-up, or I can give a quick re-review if you wanna do it here.","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"94f79ce560fc0fba52ec60baf275ab3890a82dc1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"86c9b96d_b2340331","updated":"2023-08-29 01:25:36.000000000","message":"We\u0027ve agreed to do these as a follow-up","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"5df638708220003464c57cfef1ba9b82a6360214","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"73af1017_07f0514a","updated":"2023-08-29 00:55:35.000000000","message":"mostly doc updates required, I\u0027d be open to landing this if we have a plan for addressing them","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"}],"doc/source/contributor/webapi-version-history.rst":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"30d68494b7061aa66400c1b13f5113f08f48f71b","unresolved":true,"context_lines":[{"line_number":1,"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"},{"line_number":2,"context_line":"REST API Version History"},{"line_number":3,"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"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"1.85 (Bobcat)"},{"line_number":6,"context_line":"-------------"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ecf6f645_3494e999","side":"PARENT","line":4,"updated":"2023-07-19 21:10:01.000000000","message":"bahahaha 1.87 service verb....","commit_id":"be13ebffbf4e0434251076978258f62de54f270a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2a5512e8b8d8eacdcfadf1f4e27764c5b68b2ff1","unresolved":false,"context_lines":[{"line_number":1,"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"},{"line_number":2,"context_line":"REST API Version History"},{"line_number":3,"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"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"1.85 (Bobcat)"},{"line_number":6,"context_line":"-------------"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"0df7265d_77a8af4a","side":"PARENT","line":4,"in_reply_to":"ecf6f645_3494e999","updated":"2023-08-07 16:36:30.000000000","message":"Done","commit_id":"be13ebffbf4e0434251076978258f62de54f270a"}],"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":2103,"context_line":""},{"line_number":2104,"context_line":"    invalid_sort_key_list \u003d [\u0027properties\u0027, \u0027driver_info\u0027, \u0027extra\u0027,"},{"line_number":2105,"context_line":"                             \u0027instance_info\u0027, \u0027driver_internal_info\u0027,"},{"line_number":2106,"context_line":"                             \u0027clean_step\u0027, \u0027deploy_step\u0027,"},{"line_number":2107,"context_line":"                             \u0027raid_config\u0027, \u0027target_raid_config\u0027,"},{"line_number":2108,"context_line":"                             \u0027traits\u0027, \u0027network_data\u0027]"},{"line_number":2109,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5991d569_4305741b","side":"PARENT","line":2106,"updated":"2023-07-19 23:56:47.000000000","message":"Add service_step here","commit_id":"be13ebffbf4e0434251076978258f62de54f270a"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"76ac910631bcf4198fafd23391c39fa0f128ba4f","unresolved":true,"context_lines":[{"line_number":1103,"context_line":"                \u0027args\u0027: {\u0027force\u0027: True},"},{"line_number":1104,"context_line":"                \u0027priority\u0027: 90 }"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"            This is used only when target is \"active\" or \"rebuild\" and is"},{"line_number":1107,"context_line":"            optional."},{"line_number":1108,"context_line":"        :raises: NodeLocked (HTTP 409) if the node is currently locked."},{"line_number":1109,"context_line":"        :raises: ClientSideError (HTTP 409) if the node is already being"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ee1d705_a0f5a000","line":1106,"updated":"2023-07-19 16:41:38.000000000","message":"When target is rebuild? Are you suggesting service steps could be provided on rebuild verb?","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"30d68494b7061aa66400c1b13f5113f08f48f71b","unresolved":true,"context_lines":[{"line_number":1103,"context_line":"                \u0027args\u0027: {\u0027force\u0027: True},"},{"line_number":1104,"context_line":"                \u0027priority\u0027: 90 }"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"            This is used only when target is \"active\" or \"rebuild\" and is"},{"line_number":1107,"context_line":"            optional."},{"line_number":1108,"context_line":"        :raises: NodeLocked (HTTP 409) if the node is currently locked."},{"line_number":1109,"context_line":"        :raises: ClientSideError (HTTP 409) if the node is already being"}],"source_content_type":"text/x-python","patch_set":4,"id":"ca6e84b6_4dbf9405","line":1106,"in_reply_to":"3ee1d705_a0f5a000","updated":"2023-07-19 21:10:01.000000000","message":"Ahh, I see what it is, it is copy pasta from 1081. The line needs to be removed.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"                \u0027args\u0027: {\u0027force\u0027: True},"},{"line_number":1104,"context_line":"                \u0027priority\u0027: 90 }"},{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"            This is used only when target is \"active\" or \"rebuild\" and is"},{"line_number":1107,"context_line":"            optional."},{"line_number":1108,"context_line":"        :raises: NodeLocked (HTTP 409) if the node is currently locked."},{"line_number":1109,"context_line":"        :raises: ClientSideError (HTTP 409) if the node is already being"}],"source_content_type":"text/x-python","patch_set":4,"id":"abda76d4_ee8a7794","line":1106,"in_reply_to":"ca6e84b6_4dbf9405","updated":"2023-07-19 23:56:47.000000000","message":"Done","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"        service_steps parameter of :func:`NodeStatesController.provision`."},{"line_number":1218,"context_line":"    :raises: InvalidParameterValue if validation of steps fails."},{"line_number":1219,"context_line":"    \"\"\""},{"line_number":1220,"context_line":"    _check_steps(service_steps, \u0027service\u0027, _CLEAN_STEPS_SCHEMA)"},{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":""},{"line_number":1223,"context_line":"def _check_steps(steps, step_type, schema):"}],"source_content_type":"text/x-python","patch_set":4,"id":"19b02362_1070626a","line":1220,"updated":"2023-07-19 23:56:47.000000000","message":"So this wrapper needs a basic test along with _check_deploy_steps. Adding","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":1215,"context_line":"        service_steps parameter of :func:`NodeStatesController.provision`."},{"line_number":1216,"context_line":"    :raises: InvalidParameterValue if validation of steps fails."},{"line_number":1217,"context_line":"    \"\"\""},{"line_number":1218,"context_line":"    _check_steps(service_steps, \u0027service\u0027, _CLEAN_STEPS_SCHEMA)"},{"line_number":1219,"context_line":""},{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"def _check_steps(steps, step_type, schema):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3dcc5121_0f1623b1","line":1218,"updated":"2023-08-14 18:12:04.000000000","message":"nit: maybe rename to _STEPS_SCHEMA?","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":1215,"context_line":"        service_steps parameter of :func:`NodeStatesController.provision`."},{"line_number":1216,"context_line":"    :raises: InvalidParameterValue if validation of steps fails."},{"line_number":1217,"context_line":"    \"\"\""},{"line_number":1218,"context_line":"    _check_steps(service_steps, \u0027service\u0027, _CLEAN_STEPS_SCHEMA)"},{"line_number":1219,"context_line":""},{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"def _check_steps(steps, step_type, schema):"}],"source_content_type":"text/x-python","patch_set":7,"id":"8a673560_03abed5b","line":1218,"in_reply_to":"3dcc5121_0f1623b1","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"}],"ironic/api/controllers/v1/versions.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b99d51106f58b4bb63ddf7e3b93054d963092521","unresolved":true,"context_lines":[{"line_number":212,"context_line":"MINOR_84_CONTINUE_INSPECTION \u003d 84"},{"line_number":213,"context_line":"MINOR_85_UNHOLD_VERB \u003d 85"},{"line_number":214,"context_line":"MINOR_86_FIRMWARE_INTERFACE \u003d 86"},{"line_number":215,"context_line":"MINOR_87_SERVICE_VERB \u003d 87"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"# When adding another version, update:"}],"source_content_type":"text/x-python","patch_set":6,"id":"40eacf0d_b1e7ae8f","line":215,"updated":"2023-08-08 23:28:28.000000000","message":"likely should rename this to just SERVICE","commit_id":"fc24d253af99089188ec721601dbeb1400da9629"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":212,"context_line":"MINOR_84_CONTINUE_INSPECTION \u003d 84"},{"line_number":213,"context_line":"MINOR_85_UNHOLD_VERB \u003d 85"},{"line_number":214,"context_line":"MINOR_86_FIRMWARE_INTERFACE \u003d 86"},{"line_number":215,"context_line":"MINOR_87_SERVICE_VERB \u003d 87"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"# When adding another version, update:"}],"source_content_type":"text/x-python","patch_set":6,"id":"6699828f_46880f7a","line":215,"in_reply_to":"40eacf0d_b1e7ae8f","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"fc24d253af99089188ec721601dbeb1400da9629"}],"ironic/common/faults.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"76ac910631bcf4198fafd23391c39fa0f128ba4f","unresolved":true,"context_lines":[{"line_number":24,"context_line":"\"\"\" Node is moved to maintenance due to failure of cleaning up during"},{"line_number":25,"context_line":"    rescue abort. \"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"SERVICE_FAILURE \u003d \u0027service failure\u0027"},{"line_number":28,"context_line":"\"\"\" Node is moved to maintenance due to failure of a service operation. \"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"VALID_FAULTS \u003d (POWER_FAILURE, CLEAN_FAILURE, RESCUE_ABORT_FAILURE,"}],"source_content_type":"text/x-python","patch_set":4,"id":"a9e92ad5_afdded05","line":27,"updated":"2023-07-19 16:41:38.000000000","message":"I know we don\u0027t typically do it this way; but I wonder if servicing failure would be better here ... service failure, without context, implies something entirely different.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":24,"context_line":"\"\"\" Node is moved to maintenance due to failure of cleaning up during"},{"line_number":25,"context_line":"    rescue abort. \"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"SERVICE_FAILURE \u003d \u0027service failure\u0027"},{"line_number":28,"context_line":"\"\"\" Node is moved to maintenance due to failure of a service operation. \"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"VALID_FAULTS \u003d (POWER_FAILURE, CLEAN_FAILURE, RESCUE_ABORT_FAILURE,"}],"source_content_type":"text/x-python","patch_set":4,"id":"4af71924_311191d9","line":27,"in_reply_to":"219e69d8_caa69448","updated":"2023-07-19 23:56:47.000000000","message":"So I talked with Jay about this, briefly, and we\u0027re kind of going back and forth on it, but also realize there is a whole second layer here. I\u0027m kind of thinking a documentation reference table, just to make it super clear. If all else fails we\u0027ll figure it out.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"30d68494b7061aa66400c1b13f5113f08f48f71b","unresolved":true,"context_lines":[{"line_number":24,"context_line":"\"\"\" Node is moved to maintenance due to failure of cleaning up during"},{"line_number":25,"context_line":"    rescue abort. \"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"SERVICE_FAILURE \u003d \u0027service failure\u0027"},{"line_number":28,"context_line":"\"\"\" Node is moved to maintenance due to failure of a service operation. \"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"VALID_FAULTS \u003d (POWER_FAILURE, CLEAN_FAILURE, RESCUE_ABORT_FAILURE,"}],"source_content_type":"text/x-python","patch_set":4,"id":"219e69d8_caa69448","line":27,"in_reply_to":"a9e92ad5_afdded05","updated":"2023-07-19 21:10:01.000000000","message":"And the active state usage also implies something different. I may have broken another developer when comparing english language dialects and slang.\n\nAnyway! I think the consensus of prior discusison was to do \"\u003cstate/mechanism, not in active tense\u003e failure\"\n\nI dunno, I think it is more consistent as is, but I could see it being a little more confusing.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"}],"ironic/common/neutron.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":937,"context_line":""},{"line_number":938,"context_line":"class NeutronNetworkInterfaceMixin(object):"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"    def get_cleaning_network_uuid(self, task):"},{"line_number":941,"context_line":"        cleaning_network \u003d ("},{"line_number":942,"context_line":"            task.node.driver_info.get(\u0027cleaning_network\u0027)"},{"line_number":943,"context_line":"            or CONF.neutron.cleaning_network"}],"source_content_type":"text/x-python","patch_set":4,"id":"0366c6d8_7a63cde3","side":"PARENT","line":940,"updated":"2023-07-19 23:56:47.000000000","message":"le-sigh, no testing for this directly.","commit_id":"be13ebffbf4e0434251076978258f62de54f270a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":946,"context_line":"            cleaning_network, _(\u0027cleaning network\u0027),"},{"line_number":947,"context_line":"            context\u003dtask.context)"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"    def get_provisioning_network_uuid(self, task):"},{"line_number":950,"context_line":"        provisioning_network \u003d ("},{"line_number":951,"context_line":"            task.node.driver_info.get(\u0027provisioning_network\u0027)"},{"line_number":952,"context_line":"            or CONF.neutron.provisioning_network"}],"source_content_type":"text/x-python","patch_set":4,"id":"dc78d508_16d9bb68","side":"PARENT","line":949,"updated":"2023-07-19 23:56:47.000000000","message":"nor this it looks like...","commit_id":"be13ebffbf4e0434251076978258f62de54f270a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":991,"context_line":"                driver\u003dtask.node.driver, extension\u003d\u0027inspection\u0027)"},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"    def get_servicing_network_uuid(self, task):"},{"line_number":994,"context_line":"        rescuing_network \u003d ("},{"line_number":995,"context_line":"            task.node.driver_info.get(\u0027servicing_network\u0027)"},{"line_number":996,"context_line":"            or CONF.neutron.servicing_network"},{"line_number":997,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":4,"id":"f5179af6_b2878431","line":994,"updated":"2023-07-19 23:56:47.000000000","message":"not rescue!","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":993,"context_line":"    def get_servicing_network_uuid(self, task):"},{"line_number":994,"context_line":"        servicing_network \u003d ("},{"line_number":995,"context_line":"            task.node.driver_info.get(\u0027servicing_network\u0027)"},{"line_number":996,"context_line":"            or CONF.neutron.servicing_network"},{"line_number":997,"context_line":"        )"},{"line_number":998,"context_line":"        return validate_network("},{"line_number":999,"context_line":"            servicing_network, _(\u0027servicing network\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"d6e73b33_37ee5050","line":996,"updated":"2023-08-14 18:12:04.000000000","message":"Not really anything we can do about it now, but operators need a decoder ring to tell if a given conf option/verb/etc is -ing or not :(","commit_id":"3bb750c73c385d28527620d92566e10748493829"}],"ironic/common/states.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"76ac910631bcf4198fafd23391c39fa0f128ba4f","unresolved":true,"context_lines":[{"line_number":245,"context_line":"SERVICEWAIT \u003d \u0027service wait\u0027"},{"line_number":246,"context_line":"\"\"\" Node is waiting for an operation to complete. \"\"\""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"SERVICEFAIL \u003d \u0027service failed\u0027"},{"line_number":249,"context_line":"\"\"\" Node has failed in a service step execution. \"\"\""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"SERVICEHOLD \u003d \u0027service hold\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"abf942a4_2bae57b0","line":248,"updated":"2023-07-19 16:41:38.000000000","message":"see previous comment: consider \"servicing failed\"","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"}],"ironic/conductor/manager.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":3734,"context_line":"                \u0027step\u0027: \u003cname_of__step\u003e,"},{"line_number":3735,"context_line":"                \u0027args\u0027: {\u003carg1\u003e: \u003cvalue1\u003e, ..., \u003cargn\u003e: \u003cvaluen\u003e} }"},{"line_number":3736,"context_line":""},{"line_number":3737,"context_line":"            For example (this isn\u0027t a real example, this clean step"},{"line_number":3738,"context_line":"            doesn\u0027t exist)::"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"              { \u0027interface\u0027: deploy\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5dbb1c0f_ecb1e4af","line":3737,"updated":"2023-08-14 18:12:04.000000000","message":"clean?","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":3734,"context_line":"                \u0027step\u0027: \u003cname_of__step\u003e,"},{"line_number":3735,"context_line":"                \u0027args\u0027: {\u003carg1\u003e: \u003cvalue1\u003e, ..., \u003cargn\u003e: \u003cvaluen\u003e} }"},{"line_number":3736,"context_line":""},{"line_number":3737,"context_line":"            For example (this isn\u0027t a real example, this clean step"},{"line_number":3738,"context_line":"            doesn\u0027t exist)::"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"              { \u0027interface\u0027: deploy\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"625f2152_6fc76c3a","line":3737,"in_reply_to":"5dbb1c0f_ecb1e4af","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":3756,"context_line":"            if node.maintenance:"},{"line_number":3757,"context_line":"                raise exception.NodeInMaintenance(op\u003d_(\u0027service\u0027),"},{"line_number":3758,"context_line":"                                                  node\u003dnode.uuid)"},{"line_number":3759,"context_line":"            # NOTE(rloo): service.do_node_service() will also make similar"},{"line_number":3760,"context_line":"            # calls to validate power \u0026 network, but we are doing it again"},{"line_number":3761,"context_line":"            # here so that the user gets immediate feedback of any issues."},{"line_number":3762,"context_line":"            # This behaviour (of validating) is consistent with other methods"}],"source_content_type":"text/x-python","patch_set":7,"id":"4891090c_32cebdc2","line":3759,"updated":"2023-08-14 18:12:04.000000000","message":"I know this is a copy+pasted comment, but we probably shouldn\u0027t tie former maintainers\u0027 names to new comments.","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":3756,"context_line":"            if node.maintenance:"},{"line_number":3757,"context_line":"                raise exception.NodeInMaintenance(op\u003d_(\u0027service\u0027),"},{"line_number":3758,"context_line":"                                                  node\u003dnode.uuid)"},{"line_number":3759,"context_line":"            # NOTE(rloo): service.do_node_service() will also make similar"},{"line_number":3760,"context_line":"            # calls to validate power \u0026 network, but we are doing it again"},{"line_number":3761,"context_line":"            # here so that the user gets immediate feedback of any issues."},{"line_number":3762,"context_line":"            # This behaviour (of validating) is consistent with other methods"}],"source_content_type":"text/x-python","patch_set":7,"id":"61459be0_5b99b01a","line":3759,"in_reply_to":"4891090c_32cebdc2","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"}],"ironic/conductor/rpcapi.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"        return cctxt.call(context, \u0027continue_inspection\u0027, node_id\u003dnode_id,"},{"line_number":1414,"context_line":"                          inventory\u003dinventory, plugin_data\u003dplugin_data)"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"    def do_node_service(self, context, node_id, service_steps,"},{"line_number":1417,"context_line":"                        disable_ramdisk\u003dNone, topic\u003dNone):"},{"line_number":1418,"context_line":"        \"\"\"Signal to conductor service to perform manual cleaning on a node."},{"line_number":1419,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"642d2747_47f1dd9f","line":1416,"updated":"2023-07-19 23:56:47.000000000","message":"Needs a test.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":156,"context_line":"    |    1.57 - Added do_node_service"},{"line_number":157,"context_line":"    \"\"\""},{"line_number":158,"context_line":"    # TODO(TheJulia): At some point we need to peel back the continue"},{"line_number":159,"context_line":"    # methods, as such we don\u0027t add one with do_node_service."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    # NOTE(rloo): This must be in sync with manager.ConductorManager\u0027s."},{"line_number":162,"context_line":"    # NOTE(pas-ha): This also must be in sync with"}],"source_content_type":"text/x-python","patch_set":7,"id":"08f36b62_eb2d0c7b","line":159,"updated":"2023-08-14 18:12:04.000000000","message":"Can we perhaps document this with a launchpad bug?","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    |    1.57 - Added do_node_service"},{"line_number":157,"context_line":"    \"\"\""},{"line_number":158,"context_line":"    # TODO(TheJulia): At some point we need to peel back the continue"},{"line_number":159,"context_line":"    # methods, as such we don\u0027t add one with do_node_service."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    # NOTE(rloo): This must be in sync with manager.ConductorManager\u0027s."},{"line_number":162,"context_line":"    # NOTE(pas-ha): This also must be in sync with"}],"source_content_type":"text/x-python","patch_set":7,"id":"1d1d0d94_031c946c","line":159,"in_reply_to":"08f36b62_eb2d0c7b","updated":"2023-08-16 14:33:01.000000000","message":"Done - https://bugs.launchpad.net/ironic/+bug/2031457","commit_id":"3bb750c73c385d28527620d92566e10748493829"}],"ironic/conductor/servicing.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"@task_manager.require_exclusive_lock"},{"line_number":31,"context_line":"def do_node_service(task, service_steps\u003dNone, disable_ramdisk\u003dFalse):"},{"line_number":32,"context_line":"    \"\"\"Internal RPC method to perform servicing of a node."}],"source_content_type":"text/x-python","patch_set":4,"id":"5a0c283b_77d14253","line":29,"updated":"2023-07-19 23:56:47.000000000","message":"This whole file needs tests. 😭","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b99d51106f58b4bb63ddf7e3b93054d963092521","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"@task_manager.require_exclusive_lock"},{"line_number":31,"context_line":"def do_node_service(task, service_steps\u003dNone, disable_ramdisk\u003dFalse):"},{"line_number":32,"context_line":"    \"\"\"Internal RPC method to perform servicing of a node."}],"source_content_type":"text/x-python","patch_set":4,"id":"e6e5f36c_968370d6","line":29,"in_reply_to":"5a0c283b_77d14253","updated":"2023-08-08 23:28:28.000000000","message":"Done","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":34,"context_line":"    :param task: a TaskManager instance with an exclusive lock on its node"},{"line_number":35,"context_line":"    :param service_steps: The list of service steps to perform. If none, step"},{"line_number":36,"context_line":"                          validation will fail."},{"line_number":37,"context_line":"    :param disable_ramdisk: Whether to skip booting ramdisk for servicinging."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    node \u003d task.node"},{"line_number":40,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3b6a5c58_414d48e3","line":37,"updated":"2023-08-14 18:12:04.000000000","message":"inging?","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    :param task: a TaskManager instance with an exclusive lock on its node"},{"line_number":35,"context_line":"    :param service_steps: The list of service steps to perform. If none, step"},{"line_number":36,"context_line":"                          validation will fail."},{"line_number":37,"context_line":"    :param disable_ramdisk: Whether to skip booting ramdisk for servicinging."},{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    node \u003d task.node"},{"line_number":40,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"602d1d18_8d464a40","line":37,"in_reply_to":"3b6a5c58_414d48e3","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":60,"context_line":"            prepare_result \u003d task.driver.deploy.prepare_service(task)"},{"line_number":61,"context_line":"        else:"},{"line_number":62,"context_line":"            LOG.info(\u0027Skipping preparing for service in-band service since \u0027"},{"line_number":63,"context_line":"                     \u0027out-of-band only clea has been requested for node \u0027"},{"line_number":64,"context_line":"                     \u0027%s\u0027, node.uuid)"},{"line_number":65,"context_line":"            prepare_result \u003d None"},{"line_number":66,"context_line":"    except Exception as e:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9805dcab_f4d85c0c","line":63,"updated":"2023-08-14 18:12:04.000000000","message":"clea (should be service?)","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            prepare_result \u003d task.driver.deploy.prepare_service(task)"},{"line_number":61,"context_line":"        else:"},{"line_number":62,"context_line":"            LOG.info(\u0027Skipping preparing for service in-band service since \u0027"},{"line_number":63,"context_line":"                     \u0027out-of-band only clea has been requested for node \u0027"},{"line_number":64,"context_line":"                     \u0027%s\u0027, node.uuid)"},{"line_number":65,"context_line":"            prepare_result \u003d None"},{"line_number":66,"context_line":"    except Exception as e:"}],"source_content_type":"text/x-python","patch_set":7,"id":"72717ffd_72f2681e","line":63,"in_reply_to":"9805dcab_f4d85c0c","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":104,"context_line":"        is the index (from 0) into the list of service steps in the node\u0027s"},{"line_number":105,"context_line":"        driver_internal_info[\u0027service_steps\u0027]. Is None if there are no steps"},{"line_number":106,"context_line":"        to execute."},{"line_number":107,"context_line":"    :param disable_ramdisk: Whether to skip booting ramdisk for service."},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    node \u003d task.node"},{"line_number":110,"context_line":"    # For manual cleaning, the target provision state is MANAGEABLE,"}],"source_content_type":"text/x-python","patch_set":7,"id":"23a9ad24_87827bb6","line":107,"updated":"2023-08-14 18:12:04.000000000","message":"We need to ensure this method respects disable_ramdisk; it only sets it on dii so unless something further down is taking that value into consideration.\n\nIn general we need to consider what \"disable_ramdisk\" means for this + existing use cases and document them. (but probably not block this change on that doc)","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":true,"context_lines":[{"line_number":104,"context_line":"        is the index (from 0) into the list of service steps in the node\u0027s"},{"line_number":105,"context_line":"        driver_internal_info[\u0027service_steps\u0027]. Is None if there are no steps"},{"line_number":106,"context_line":"        to execute."},{"line_number":107,"context_line":"    :param disable_ramdisk: Whether to skip booting ramdisk for service."},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    node \u003d task.node"},{"line_number":110,"context_line":"    # For manual cleaning, the target provision state is MANAGEABLE,"}],"source_content_type":"text/x-python","patch_set":7,"id":"908afc50_c852c431","line":107,"in_reply_to":"23a9ad24_87827bb6","updated":"2023-08-16 14:33:01.000000000","message":"It is on request, look at your comment above, so we just don\u0027t setup the ramdisk, and we explicitly carry the value around for that context.","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7e3c60f39d38b0bbab5a33946c43424ab812c49d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        is the index (from 0) into the list of service steps in the node\u0027s"},{"line_number":105,"context_line":"        driver_internal_info[\u0027service_steps\u0027]. Is None if there are no steps"},{"line_number":106,"context_line":"        to execute."},{"line_number":107,"context_line":"    :param disable_ramdisk: Whether to skip booting ramdisk for service."},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    node \u003d task.node"},{"line_number":110,"context_line":"    # For manual cleaning, the target provision state is MANAGEABLE,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ece1560_67cbf6a7","line":107,"in_reply_to":"908afc50_c852c431","updated":"2023-08-17 16:48:14.000000000","message":"Ack","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":363,"context_line":"                      \u0027completed. Aborting now that it has completed.\u0027,"},{"line_number":364,"context_line":"                      {\u0027node\u0027: task.node.uuid, \u0027step\u0027: step_name})"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"            if node.target_provision_state \u003d\u003d states.MANAGEABLE:"},{"line_number":367,"context_line":"                target_state \u003d states.MANAGEABLE"},{"line_number":368,"context_line":"            else:"},{"line_number":369,"context_line":"                target_state \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"8f3efc60_244e73b3","line":366,"updated":"2023-08-14 18:12:04.000000000","message":"I didn\u0027t think we could SERVICE to\u003c\u003efrom manageable?","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                      \u0027completed. Aborting now that it has completed.\u0027,"},{"line_number":364,"context_line":"                      {\u0027node\u0027: task.node.uuid, \u0027step\u0027: step_name})"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"            if node.target_provision_state \u003d\u003d states.MANAGEABLE:"},{"line_number":367,"context_line":"                target_state \u003d states.MANAGEABLE"},{"line_number":368,"context_line":"            else:"},{"line_number":369,"context_line":"                target_state \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"d46fd757_d340a7c4","line":366,"in_reply_to":"8f3efc60_244e73b3","updated":"2023-08-16 14:33:01.000000000","message":"copy-pasta cruft.","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"5df638708220003464c57cfef1ba9b82a6360214","unresolved":true,"context_lines":[{"line_number":322,"context_line":"        return"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    last_error \u003d get_last_error(node)"},{"line_number":325,"context_line":"    info_message \u003d _(\u0027Clean operation aborted for node %s\u0027) % node.uuid"},{"line_number":326,"context_line":"    if node.service_step:"},{"line_number":327,"context_line":"        info_message +\u003d ("},{"line_number":328,"context_line":"            _(\u0027 during or after the completion of step \"%s\"\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"22785787_cf2ede45","line":325,"range":{"start_line":325,"start_character":22,"end_line":325,"end_character":27},"updated":"2023-08-29 00:55:35.000000000","message":"nit: This should be \"Service operation...\"?","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"}],"ironic/conductor/steps.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        clean steps."},{"line_number":263,"context_line":"    :returns: A list of clean step dictionaries"},{"line_number":264,"context_line":"    \"\"\""},{"line_number":265,"context_line":"    sort_key \u003d _clean_step_key if sort else None"},{"line_number":266,"context_line":"    service_steps \u003d _get_steps(task, SERVICING_INTERFACE_PRIORITY,"},{"line_number":267,"context_line":"                               \u0027get_service_steps\u0027, enabled\u003denabled,"},{"line_number":268,"context_line":"                               sort_step_key\u003dsort_key)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c3bf457a_b640dd14","line":265,"updated":"2023-07-19 23:56:47.000000000","message":"This should be _service_step_key","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"5df638708220003464c57cfef1ba9b82a6360214","unresolved":true,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"def set_node_service_steps(task, disable_ramdisk\u003dFalse):"},{"line_number":490,"context_line":"    \"\"\"Set up the node with clean step information for cleaning."},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    For automated cleaning, get the clean steps from the driver."},{"line_number":493,"context_line":"    For manual cleaning, the user\u0027s clean steps are known but need to be"},{"line_number":494,"context_line":"    validated against the driver\u0027s clean steps."},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    :param disable_ramdisk: If `True`, only steps with requires_ramdisk\u003dFalse"},{"line_number":497,"context_line":"        are accepted."},{"line_number":498,"context_line":"    :raises: InvalidParameterValue if there is a problem with the user\u0027s"},{"line_number":499,"context_line":"             clean steps."},{"line_number":500,"context_line":"    :raises: NodeCleaningFailure if there was a problem getting the"},{"line_number":501,"context_line":"             clean steps."},{"line_number":502,"context_line":"    \"\"\""},{"line_number":503,"context_line":"    node \u003d task.node"},{"line_number":504,"context_line":"    steps \u003d _validate_user_service_steps("}],"source_content_type":"text/x-python","patch_set":9,"id":"6ae7992c_3438ae6b","line":501,"range":{"start_line":490,"start_character":0,"end_line":501,"end_character":25},"updated":"2023-08-29 00:55:35.000000000","message":"This needs to be updated for s/clean/service/","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"5df638708220003464c57cfef1ba9b82a6360214","unresolved":true,"context_lines":[{"line_number":848,"context_line":"    :raises: InvalidParameterValue if validation of clean steps fails."},{"line_number":849,"context_line":"    :raises: NodeCleaningFailure if there was a problem getting the"},{"line_number":850,"context_line":"        clean steps from the driver."},{"line_number":851,"context_line":"    :return: validated clean steps update with information from the driver"},{"line_number":852,"context_line":"    \"\"\""},{"line_number":853,"context_line":"    # We call with enabled \u003d False below so we pickup auto-disabled"},{"line_number":854,"context_line":"    # steps, since service steps are not automagic like cleaning can be."}],"source_content_type":"text/x-python","patch_set":9,"id":"bc125cf1_e2c0b1de","line":851,"updated":"2023-08-29 00:55:35.000000000","message":"s/clean/service/","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"}],"ironic/conductor/utils.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":1762,"context_line":"                    \u0027however we were unable to do so. Possible older API?\u0027)"},{"line_number":1763,"context_line":""},{"line_number":1764,"context_line":""},{"line_number":1765,"context_line":"def servicing_error_handler(task, logmsg, errmsg\u003dNone, traceback\u003dFalse,"},{"line_number":1766,"context_line":"                            tear_down_service\u003dTrue, set_fail_state\u003dTrue,"},{"line_number":1767,"context_line":"                            set_maintenance\u003dNone):"},{"line_number":1768,"context_line":"    \"\"\"Put a failed node in SERVICEFAIL and maintenance (if needed)."}],"source_content_type":"text/x-python","patch_set":4,"id":"11b1930a_187ac98c","line":1765,"updated":"2023-07-19 23:56:47.000000000","message":"this needs tests","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b99d51106f58b4bb63ddf7e3b93054d963092521","unresolved":false,"context_lines":[{"line_number":1762,"context_line":"                    \u0027however we were unable to do so. Possible older API?\u0027)"},{"line_number":1763,"context_line":""},{"line_number":1764,"context_line":""},{"line_number":1765,"context_line":"def servicing_error_handler(task, logmsg, errmsg\u003dNone, traceback\u003dFalse,"},{"line_number":1766,"context_line":"                            tear_down_service\u003dTrue, set_fail_state\u003dTrue,"},{"line_number":1767,"context_line":"                            set_maintenance\u003dNone):"},{"line_number":1768,"context_line":"    \"\"\"Put a failed node in SERVICEFAIL and maintenance (if needed)."}],"source_content_type":"text/x-python","patch_set":4,"id":"ecfa570f_cab7dac8","line":1765,"in_reply_to":"11b1930a_187ac98c","updated":"2023-08-08 23:28:28.000000000","message":"Done","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b99d51106f58b4bb63ddf7e3b93054d963092521","unresolved":false,"context_lines":[{"line_number":1762,"context_line":"                    \u0027however we were unable to do so. Possible older API?\u0027)"},{"line_number":1763,"context_line":""},{"line_number":1764,"context_line":""},{"line_number":1765,"context_line":"def servicing_error_handler(task, logmsg, errmsg\u003dNone, traceback\u003dFalse,"},{"line_number":1766,"context_line":"                            tear_down_service\u003dTrue, set_fail_state\u003dTrue,"},{"line_number":1767,"context_line":"                            set_maintenance\u003dNone):"},{"line_number":1768,"context_line":"    \"\"\"Put a failed node in SERVICEFAIL and maintenance (if needed)."}],"source_content_type":"text/x-python","patch_set":4,"id":"f64cc8fe_cc9f6ca5","line":1765,"in_reply_to":"11b1930a_187ac98c","updated":"2023-08-08 23:28:28.000000000","message":"Done","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":576,"context_line":""},{"line_number":577,"context_line":"def wipe_service_internal_info(task):"},{"line_number":578,"context_line":"    \"\"\"Remove temporary cleaning fields from driver_internal_info.\"\"\""},{"line_number":579,"context_line":"    if not fast_track_able(task):"},{"line_number":580,"context_line":"        wipe_token_and_url(task)"},{"line_number":581,"context_line":"    node \u003d task.node"},{"line_number":582,"context_line":"    node.set_driver_internal_info(\u0027service_steps\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"53590879_c83040b5","line":579,"updated":"2023-08-14 18:12:04.000000000","message":"Fast track doesn\u0027t make sense in a service context.","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":576,"context_line":""},{"line_number":577,"context_line":"def wipe_service_internal_info(task):"},{"line_number":578,"context_line":"    \"\"\"Remove temporary cleaning fields from driver_internal_info.\"\"\""},{"line_number":579,"context_line":"    if not fast_track_able(task):"},{"line_number":580,"context_line":"        wipe_token_and_url(task)"},{"line_number":581,"context_line":"    node \u003d task.node"},{"line_number":582,"context_line":"    node.set_driver_internal_info(\u0027service_steps\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"eae11589_f31d8f02","line":579,"in_reply_to":"53590879_c83040b5","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"}],"ironic/drivers/base.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"76ac910631bcf4198fafd23391c39fa0f128ba4f","unresolved":true,"context_lines":[{"line_number":597,"context_line":"        state."},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        NOTE(JoshNang) this should be moved to BootInterface when it gets"},{"line_number":600,"context_line":"        implemented."},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":603,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"6b085346_f0926557","line":600,"updated":"2023-07-19 16:41:38.000000000","message":"Is that note from 10 years ago still valid? :D","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        state."},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        NOTE(JoshNang) this should be moved to BootInterface when it gets"},{"line_number":600,"context_line":"        implemented."},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":603,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aac6513_abeaa95d","line":600,"in_reply_to":"6b085346_f0926557","updated":"2023-07-19 23:56:47.000000000","message":"Eh, unlikely!","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":2129,"context_line":""},{"line_number":2130,"context_line":"    Service steps may be used in performing service upon a node."},{"line_number":2131,"context_line":""},{"line_number":2132,"context_line":"    For service, the csteps will be executed in a similar fashion"},{"line_number":2133,"context_line":"    to cleaning, but the steps and order of execution must be"},{"line_number":2134,"context_line":"    explicitly specified by the user when invoking the servicing API."},{"line_number":2135,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"d1e0f4bd_b0596cd7","line":2132,"updated":"2023-08-14 18:12:04.000000000","message":"csteps?","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":2129,"context_line":""},{"line_number":2130,"context_line":"    Service steps may be used in performing service upon a node."},{"line_number":2131,"context_line":""},{"line_number":2132,"context_line":"    For service, the csteps will be executed in a similar fashion"},{"line_number":2133,"context_line":"    to cleaning, but the steps and order of execution must be"},{"line_number":2134,"context_line":"    explicitly specified by the user when invoking the servicing API."},{"line_number":2135,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0445ab0c_15f5faec","line":2132,"in_reply_to":"d1e0f4bd_b0596cd7","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"}],"ironic/drivers/modules/agent_base.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":836,"context_line":"        deploy_utils.tear_down_inband_service("},{"line_number":837,"context_line":"            task, manage_boot\u003dself.should_manage_boot(task))"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @METRICS.timer(\u0027AgentBaseMixin.get_clean_steps\u0027)"},{"line_number":840,"context_line":"    def get_clean_steps(self, task):"},{"line_number":841,"context_line":"        \"\"\"Get the list of clean steps from the agent."},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":844,"context_line":"        :raises NodeCleaningFailure: if the clean steps are not yet"},{"line_number":845,"context_line":"            available (cached), for example, when a node has just been"},{"line_number":846,"context_line":"            enrolled and has not been cleaned yet."},{"line_number":847,"context_line":"        :returns: A list of clean step dictionaries"},{"line_number":848,"context_line":"        \"\"\""},{"line_number":849,"context_line":"        new_priorities \u003d {"},{"line_number":850,"context_line":"            \u0027erase_devices\u0027: CONF.deploy.erase_devices_priority,"},{"line_number":851,"context_line":"            \u0027erase_devices_metadata\u0027:"},{"line_number":852,"context_line":"                CONF.deploy.erase_devices_metadata_priority,"},{"line_number":853,"context_line":"        }"},{"line_number":854,"context_line":"        return get_steps("},{"line_number":855,"context_line":"            task, \u0027clean\u0027, interface\u003d\u0027deploy\u0027,"},{"line_number":856,"context_line":"            override_priorities\u003dnew_priorities)"},{"line_number":857,"context_line":""},{"line_number":858,"context_line":"    @METRICS.timer(\u0027AgentBaseMixin.refresh_steps\u0027)"},{"line_number":859,"context_line":"    def refresh_steps(self, task, step_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1d2af0bb_b2274e57","line":856,"range":{"start_line":839,"start_character":0,"end_line":856,"end_character":47},"updated":"2023-07-19 23:56:47.000000000","message":"An unknown: do we need to support the same functionality like with cleaning/deployment for servicing, then again, they are *not* automatic like they can be with cleaning/deployment. Worst comes to worst, if we get this done, and realize we need it, we can always backport it into place.\n\nMajor differences: cleaning is automatic, deployment is semi-auto, service... not so much, really.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f303b12ae34cb42bf91e1b54287b0d7e52af9df","unresolved":false,"context_lines":[{"line_number":836,"context_line":"        deploy_utils.tear_down_inband_service("},{"line_number":837,"context_line":"            task, manage_boot\u003dself.should_manage_boot(task))"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @METRICS.timer(\u0027AgentBaseMixin.get_clean_steps\u0027)"},{"line_number":840,"context_line":"    def get_clean_steps(self, task):"},{"line_number":841,"context_line":"        \"\"\"Get the list of clean steps from the agent."},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":844,"context_line":"        :raises NodeCleaningFailure: if the clean steps are not yet"},{"line_number":845,"context_line":"            available (cached), for example, when a node has just been"},{"line_number":846,"context_line":"            enrolled and has not been cleaned yet."},{"line_number":847,"context_line":"        :returns: A list of clean step dictionaries"},{"line_number":848,"context_line":"        \"\"\""},{"line_number":849,"context_line":"        new_priorities \u003d {"},{"line_number":850,"context_line":"            \u0027erase_devices\u0027: CONF.deploy.erase_devices_priority,"},{"line_number":851,"context_line":"            \u0027erase_devices_metadata\u0027:"},{"line_number":852,"context_line":"                CONF.deploy.erase_devices_metadata_priority,"},{"line_number":853,"context_line":"        }"},{"line_number":854,"context_line":"        return get_steps("},{"line_number":855,"context_line":"            task, \u0027clean\u0027, interface\u003d\u0027deploy\u0027,"},{"line_number":856,"context_line":"            override_priorities\u003dnew_priorities)"},{"line_number":857,"context_line":""},{"line_number":858,"context_line":"    @METRICS.timer(\u0027AgentBaseMixin.refresh_steps\u0027)"},{"line_number":859,"context_line":"    def refresh_steps(self, task, step_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fe4852fe_36a6a41c","line":856,"range":{"start_line":839,"start_character":0,"end_line":856,"end_character":47},"in_reply_to":"1949538e_927445ce","updated":"2023-08-11 19:47:38.000000000","message":"Done","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b99d51106f58b4bb63ddf7e3b93054d963092521","unresolved":true,"context_lines":[{"line_number":836,"context_line":"        deploy_utils.tear_down_inband_service("},{"line_number":837,"context_line":"            task, manage_boot\u003dself.should_manage_boot(task))"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @METRICS.timer(\u0027AgentBaseMixin.get_clean_steps\u0027)"},{"line_number":840,"context_line":"    def get_clean_steps(self, task):"},{"line_number":841,"context_line":"        \"\"\"Get the list of clean steps from the agent."},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":844,"context_line":"        :raises NodeCleaningFailure: if the clean steps are not yet"},{"line_number":845,"context_line":"            available (cached), for example, when a node has just been"},{"line_number":846,"context_line":"            enrolled and has not been cleaned yet."},{"line_number":847,"context_line":"        :returns: A list of clean step dictionaries"},{"line_number":848,"context_line":"        \"\"\""},{"line_number":849,"context_line":"        new_priorities \u003d {"},{"line_number":850,"context_line":"            \u0027erase_devices\u0027: CONF.deploy.erase_devices_priority,"},{"line_number":851,"context_line":"            \u0027erase_devices_metadata\u0027:"},{"line_number":852,"context_line":"                CONF.deploy.erase_devices_metadata_priority,"},{"line_number":853,"context_line":"        }"},{"line_number":854,"context_line":"        return get_steps("},{"line_number":855,"context_line":"            task, \u0027clean\u0027, interface\u003d\u0027deploy\u0027,"},{"line_number":856,"context_line":"            override_priorities\u003dnew_priorities)"},{"line_number":857,"context_line":""},{"line_number":858,"context_line":"    @METRICS.timer(\u0027AgentBaseMixin.refresh_steps\u0027)"},{"line_number":859,"context_line":"    def refresh_steps(self, task, step_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1949538e_927445ce","line":856,"range":{"start_line":839,"start_character":0,"end_line":856,"end_character":47},"in_reply_to":"1d2af0bb_b2274e57","updated":"2023-08-08 23:28:28.000000000","message":"So, yes, we should support collection, as there is a passthrough *but* we don\u0027t need to do it *out of the gate*\\\n\nAdding this as a release note limitation.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":211,"context_line":"        elif step_type \u003d\u003d \u0027deploy\u0027:"},{"line_number":212,"context_line":"            manager_utils.deploying_error_handler(task, msg,"},{"line_number":213,"context_line":"                                                  traceback\u003dtraceback)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            manager_utils.servicing_error_handler(task, msg,"},{"line_number":216,"context_line":"                                                  traceback\u003dtraceback)"},{"line_number":217,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":7,"id":"c07f8237_3db896b8","line":214,"updated":"2023-08-14 18:12:04.000000000","message":"nit: Perhaps make this more defensive? Check for service specifically and give a unique error if we got a malformed step.\n\nThis pattern somewhat common throughout this file.","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        elif step_type \u003d\u003d \u0027deploy\u0027:"},{"line_number":212,"context_line":"            manager_utils.deploying_error_handler(task, msg,"},{"line_number":213,"context_line":"                                                  traceback\u003dtraceback)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            manager_utils.servicing_error_handler(task, msg,"},{"line_number":216,"context_line":"                                                  traceback\u003dtraceback)"},{"line_number":217,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":7,"id":"cd6c6ea5_6e617b32","line":214,"in_reply_to":"c07f8237_3db896b8","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f303b12ae34cb42bf91e1b54287b0d7e52af9df","unresolved":true,"context_lines":[{"line_number":598,"context_line":"            if not node.service_step:"},{"line_number":599,"context_line":"                LOG.debug(\u0027Node %s just booted to start %s service\u0027,"},{"line_number":600,"context_line":"                          node.uuid)"},{"line_number":601,"context_line":"                msg \u003d _(\u0027Node failed to start the first cleaning step\u0027)"},{"line_number":602,"context_line":"                task.process_event(\u0027resume\u0027)"},{"line_number":603,"context_line":"                # First, cache the service steps"},{"line_number":604,"context_line":"                self.refresh_service_steps(task)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3823cb2c_d4a9b2bf","line":601,"range":{"start_line":601,"start_character":56,"end_line":601,"end_character":64},"updated":"2023-08-11 19:47:38.000000000","message":"I\u0027ve got this in the next patch.","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":598,"context_line":"            if not node.service_step:"},{"line_number":599,"context_line":"                LOG.debug(\u0027Node %s just booted to start %s service\u0027,"},{"line_number":600,"context_line":"                          node.uuid)"},{"line_number":601,"context_line":"                msg \u003d _(\u0027Node failed to start the first cleaning step\u0027)"},{"line_number":602,"context_line":"                task.process_event(\u0027resume\u0027)"},{"line_number":603,"context_line":"                # First, cache the service steps"},{"line_number":604,"context_line":"                self.refresh_service_steps(task)"}],"source_content_type":"text/x-python","patch_set":7,"id":"c3c67b12_2102659a","line":601,"range":{"start_line":601,"start_character":56,"end_line":601,"end_character":64},"in_reply_to":"3823cb2c_d4a9b2bf","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f303b12ae34cb42bf91e1b54287b0d7e52af9df","unresolved":false,"context_lines":[{"line_number":819,"context_line":"        :returns: states.CLEANWAIT to signify an asynchronous prepare"},{"line_number":820,"context_line":"        \"\"\""},{"line_number":821,"context_line":"        result \u003d deploy_utils.prepare_inband_service("},{"line_number":822,"context_line":"            task, manage_boot\u003dself.should_manage_boot(task))"},{"line_number":823,"context_line":"        if result is None:"},{"line_number":824,"context_line":"            # Fast-track, ensure the steps are available."},{"line_number":825,"context_line":"            self.refresh_steps(task, \u0027service\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1e7b439a_b758e6be","line":822,"range":{"start_line":822,"start_character":35,"end_line":822,"end_character":53},"updated":"2023-08-11 19:47:38.000000000","message":"this should always be true,  will fix in next patch.","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f303b12ae34cb42bf91e1b54287b0d7e52af9df","unresolved":false,"context_lines":[{"line_number":834,"context_line":"            be removed"},{"line_number":835,"context_line":"        \"\"\""},{"line_number":836,"context_line":"        deploy_utils.tear_down_inband_service("},{"line_number":837,"context_line":"            task, manage_boot\u003dself.should_manage_boot(task))"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    @METRICS.timer(\u0027AgentBaseMixin.get_clean_steps\u0027)"},{"line_number":840,"context_line":"    def get_clean_steps(self, task):"}],"source_content_type":"text/x-python","patch_set":7,"id":"92282d55_161fec6c","line":837,"updated":"2023-08-11 19:47:38.000000000","message":"These should always be true, will fix in next patch","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"7e3c60f39d38b0bbab5a33946c43424ab812c49d","unresolved":true,"context_lines":[{"line_number":213,"context_line":"                                                  traceback\u003dtraceback)"},{"line_number":214,"context_line":"        elif step_type \u003d\u003d \u0027service\u0027:"},{"line_number":215,"context_line":"            manager_utils.servicing_error_handler(task, msg,"},{"line_number":216,"context_line":"                                                  traceback\u003dtraceback)"},{"line_number":217,"context_line":"        return"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    # Signify that we\u0027ve rebooted"}],"source_content_type":"text/x-python","patch_set":9,"id":"847f3221_daafbec0","line":216,"updated":"2023-08-17 16:48:14.000000000","message":"We probably still need an `else: raise e` here (or equivalent), yeah?","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"799942a9c129426ca4f149e9278acd29a5058f2f","unresolved":true,"context_lines":[{"line_number":213,"context_line":"                                                  traceback\u003dtraceback)"},{"line_number":214,"context_line":"        elif step_type \u003d\u003d \u0027service\u0027:"},{"line_number":215,"context_line":"            manager_utils.servicing_error_handler(task, msg,"},{"line_number":216,"context_line":"                                                  traceback\u003dtraceback)"},{"line_number":217,"context_line":"        return"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    # Signify that we\u0027ve rebooted"}],"source_content_type":"text/x-python","patch_set":9,"id":"6be08503_9ccf465a","line":216,"in_reply_to":"847f3221_daafbec0","updated":"2023-08-18 00:23:05.000000000","message":"Eh, I guess. Only people doing development will encounter it, afaik. 😊","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"5df638708220003464c57cfef1ba9b82a6360214","unresolved":true,"context_lines":[{"line_number":816,"context_line":"            ports cannot be removed or if new cleaning ports cannot be created."},{"line_number":817,"context_line":"        :raises: InvalidParameterValue if cleaning network UUID config option"},{"line_number":818,"context_line":"            has an invalid value."},{"line_number":819,"context_line":"        :returns: states.CLEANWAIT to signify an asynchronous prepare"},{"line_number":820,"context_line":"        \"\"\""},{"line_number":821,"context_line":"        result \u003d deploy_utils.prepare_inband_service("},{"line_number":822,"context_line":"            task, manage_boot\u003dself.should_manage_boot(task))"}],"source_content_type":"text/x-python","patch_set":9,"id":"056abfbd_47183550","line":819,"updated":"2023-08-29 00:55:35.000000000","message":"s/cleaning/servicing/, also is it CLEANWAIT?","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"5df638708220003464c57cfef1ba9b82a6360214","unresolved":true,"context_lines":[{"line_number":831,"context_line":""},{"line_number":832,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":833,"context_line":"        :raises: NodeServiceFailure, NetworkError if the cleaning ports cannot"},{"line_number":834,"context_line":"            be removed"},{"line_number":835,"context_line":"        \"\"\""},{"line_number":836,"context_line":"        deploy_utils.tear_down_inband_service("},{"line_number":837,"context_line":"            task, manage_boot\u003dself.should_manage_boot(task))"}],"source_content_type":"text/x-python","patch_set":9,"id":"6e2e8cf4_67247f68","line":834,"updated":"2023-08-29 00:55:35.000000000","message":"servicing","commit_id":"2366a4b86e7f0127275dba9e94c4a90dd11578ce"}],"ironic/drivers/modules/deploy_utils.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":771,"context_line":"            task, power_state_to_restore)"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"def prepare_inband_service(self, task):"},{"line_number":775,"context_line":"    \"\"\"Boot a service ramdisk on the node."},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    :param task: a TaskManager instance."}],"source_content_type":"text/x-python","patch_set":4,"id":"e4c2ce9d_18614561","line":774,"updated":"2023-07-19 23:56:47.000000000","message":"test needed","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":true,"context_lines":[{"line_number":771,"context_line":"            task, power_state_to_restore)"},{"line_number":772,"context_line":""},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"def prepare_inband_service(self, task):"},{"line_number":775,"context_line":"    \"\"\"Boot a service ramdisk on the node."},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    :param task: a TaskManager instance."}],"source_content_type":"text/x-python","patch_set":4,"id":"8bd4489e_6ade6e00","line":774,"in_reply_to":"e4c2ce9d_18614561","updated":"2023-08-16 14:33:01.000000000","message":"Tested in the next change.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":805,"context_line":"    return states.SERVICEWAIT"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"def tear_down_inband_service(task, manage_boot\u003dTrue):"},{"line_number":809,"context_line":"    \"\"\"Tears down the environment setup for in-band service."},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    This method does the following:"}],"source_content_type":"text/x-python","patch_set":4,"id":"d9a62dd2_6e27db83","line":808,"updated":"2023-07-19 23:56:47.000000000","message":"ditto","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":true,"context_lines":[{"line_number":805,"context_line":"    return states.SERVICEWAIT"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"def tear_down_inband_service(task, manage_boot\u003dTrue):"},{"line_number":809,"context_line":"    \"\"\"Tears down the environment setup for in-band service."},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    This method does the following:"}],"source_content_type":"text/x-python","patch_set":4,"id":"867072ae_e8dd407b","line":808,"in_reply_to":"d9a62dd2_6e27db83","updated":"2023-08-16 14:33:01.000000000","message":"Tested in the next change.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"}],"ironic/drivers/modules/network/neutron.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":266,"context_line":"        return self._remove_network("},{"line_number":267,"context_line":"            task, self.get_inspection_network_uuid(task), \u0027inspection\u0027)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def validate_servicing(self, task):"},{"line_number":270,"context_line":"        \"\"\"Validates the network interface for servicing operation."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        :param task: a TaskManager instance."}],"source_content_type":"text/x-python","patch_set":4,"id":"c213c06a_e69d78b6","line":269,"updated":"2023-07-19 23:56:47.000000000","message":"This needs a test, even just a pass through, we have stuff for get_servicing_network_uuid elsewhere at a high level.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            is invalid."},{"line_number":275,"context_line":"        :raises: MissingParameterValue, if some parameters are missing."},{"line_number":276,"context_line":"        \"\"\""},{"line_number":277,"context_line":"        self.get_rescuing_network_uuid(task)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def add_servicing_network(self, task):"},{"line_number":280,"context_line":"        \"\"\"Create neutron ports for each port to boot the servicing ramdisk."}],"source_content_type":"text/x-python","patch_set":4,"id":"f27d0592_39d79f7e","line":277,"updated":"2023-07-19 23:56:47.000000000","message":"servicing...","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":276,"context_line":"        \"\"\""},{"line_number":277,"context_line":"        self.get_rescuing_network_uuid(task)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def add_servicing_network(self, task):"},{"line_number":280,"context_line":"        \"\"\"Create neutron ports for each port to boot the servicing ramdisk."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        :param task: a TaskManager instance."}],"source_content_type":"text/x-python","patch_set":4,"id":"07297f46_d1e6f79a","line":279,"updated":"2023-07-19 23:56:47.000000000","message":"test needed","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":287,"context_line":"            CONF.neutron.servicing_network_security_groups,"},{"line_number":288,"context_line":"            \u0027servicing\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def remove_servicing_network(self, task):"},{"line_number":291,"context_line":"        \"\"\"Deletes neutron port created for booting the servicing ramdisk."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        :param task: a TaskManager instance."}],"source_content_type":"text/x-python","patch_set":4,"id":"32e6a0b6_c8239491","line":290,"updated":"2023-07-19 23:56:47.000000000","message":"test needed","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"}],"ironic/tests/unit/api/controllers/v1/test_node.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1bb8bd965325354052a6f4ab083b7156b3ccde01","unresolved":true,"context_lines":[{"line_number":6536,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, ret.status_code)"},{"line_number":6537,"context_line":"        self.assertIn(\u0027error_message\u0027, ret.json)"},{"line_number":6538,"context_line":"        mock_dns.assert_not_called()"},{"line_number":6539,"context_line":""},{"line_number":6540,"context_line":"    def test_set_console_mode_enabled(self):"},{"line_number":6541,"context_line":"        with mock.patch.object(rpcapi.ConductorAPI,"},{"line_number":6542,"context_line":"                               \u0027set_console_mode\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"c1f2b1ae_92fab656","line":6539,"updated":"2023-07-19 23:56:47.000000000","message":"Missing: Test to validate service_step is visible with the appropriate api version.","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":6536,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, ret.status_code)"},{"line_number":6537,"context_line":"        self.assertIn(\u0027error_message\u0027, ret.json)"},{"line_number":6538,"context_line":"        mock_dns.assert_not_called()"},{"line_number":6539,"context_line":""},{"line_number":6540,"context_line":"    def test_set_console_mode_enabled(self):"},{"line_number":6541,"context_line":"        with mock.patch.object(rpcapi.ConductorAPI,"},{"line_number":6542,"context_line":"                               \u0027set_console_mode\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"6bce0ef2_446a0de5","line":6539,"in_reply_to":"c1f2b1ae_92fab656","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"6818c4d60ab605fceac0d906f5c60e466e84ee1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2a5512e8b8d8eacdcfadf1f4e27764c5b68b2ff1","unresolved":false,"context_lines":[{"line_number":6974,"context_line":"        api_node._check_clean_steps(clean_steps)"},{"line_number":6975,"context_line":""},{"line_number":6976,"context_line":"        step1 \u003d {\"step\": \"upgrade_firmware\", \"interface\": \"deploy\","},{"line_number":6977,"context_line":"                 \"args\": {\"arg1\": \"value1\", \"arg2\": \"value2\"}}"},{"line_number":6978,"context_line":"        api_node._check_clean_steps([step1])"},{"line_number":6979,"context_line":""},{"line_number":6980,"context_line":"        step2 \u003d {\"step\": \"configure raid\", \"interface\": \"raid\"}"}],"source_content_type":"text/x-python","patch_set":5,"id":"3696a03d_e50724f7","side":"PARENT","line":6977,"updated":"2023-08-07 16:36:30.000000000","message":"priority field is missing..,.. and it is user schema differences.","commit_id":"be13ebffbf4e0434251076978258f62de54f270a"}],"ironic/tests/unit/conductor/test_servicing.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":34,"context_line":"# NOTE(TheJulia): This file is based upon test_cleaning.py with logic"},{"line_number":35,"context_line":"# for automated cleaning out and switched over for the service steps"},{"line_number":36,"context_line":"# framework. It *largely* exists to ensure we have similar consistency"},{"line_number":37,"context_line":"# between the fameworks, similar was done for deploy steps in the past."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class DoNodeServiceTestCase(db_base.DbTestCase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"743578e0_7797b2e7","line":37,"updated":"2023-08-14 18:12:04.000000000","message":"fameworks?","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":34,"context_line":"# NOTE(TheJulia): This file is based upon test_cleaning.py with logic"},{"line_number":35,"context_line":"# for automated cleaning out and switched over for the service steps"},{"line_number":36,"context_line":"# framework. It *largely* exists to ensure we have similar consistency"},{"line_number":37,"context_line":"# between the fameworks, similar was done for deploy steps in the past."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class DoNodeServiceTestCase(db_base.DbTestCase):"}],"source_content_type":"text/x-python","patch_set":7,"id":"b8fd6100_d29d6b95","line":37,"in_reply_to":"743578e0_7797b2e7","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"}],"ironic/tests/unit/drivers/modules/test_agent_base.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":198,"context_line":"            with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":199,"context_line":"                                      shared\u003dTrue) as task:"},{"line_number":200,"context_line":"                self.deploy.heartbeat(task, agent_url, \u00273.2.0\u0027)"},{"line_number":201,"context_line":"                print(task.node)"},{"line_number":202,"context_line":"                self.assertFalse(task.shared)"},{"line_number":203,"context_line":"                self.assertIsNone("},{"line_number":204,"context_line":"                    task.node.driver_internal_info.get(\u0027agent_url\u0027, None))"}],"source_content_type":"text/x-python","patch_set":7,"id":"85693755_19eee928","line":201,"updated":"2023-08-14 18:12:04.000000000","message":"print!","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":199,"context_line":"                                      shared\u003dTrue) as task:"},{"line_number":200,"context_line":"                self.deploy.heartbeat(task, agent_url, \u00273.2.0\u0027)"},{"line_number":201,"context_line":"                print(task.node)"},{"line_number":202,"context_line":"                self.assertFalse(task.shared)"},{"line_number":203,"context_line":"                self.assertIsNone("},{"line_number":204,"context_line":"                    task.node.driver_internal_info.get(\u0027agent_url\u0027, None))"}],"source_content_type":"text/x-python","patch_set":7,"id":"c846036d_2c43c508","line":201,"in_reply_to":"85693755_19eee928","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"}],"releasenotes/notes/add-service-steps-deb45c9a0e77a647.yaml":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"52d9bd345280ddbcbb1971f8df3a50533181c4ca","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a new ironic capbility called ``service_steps`` which allows a"},{"line_number":5,"context_line":"    deployed ``ACTIVE`` node to be modified utilizing a new API provision"},{"line_number":6,"context_line":"    state verb of ``service`` which can include a list of ``service_steps``"},{"line_number":7,"context_line":"    to be performed. This work is inspired by ``clean_steps`` and"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"de9c3c82_6b54ce6b","line":4,"updated":"2023-08-14 18:12:04.000000000","message":"capital Ironic\nspelling: capability","commit_id":"3bb750c73c385d28527620d92566e10748493829"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f28da76d41fd59ea648d69bd01d9839cd8650c52","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a new ironic capbility called ``service_steps`` which allows a"},{"line_number":5,"context_line":"    deployed ``ACTIVE`` node to be modified utilizing a new API provision"},{"line_number":6,"context_line":"    state verb of ``service`` which can include a list of ``service_steps``"},{"line_number":7,"context_line":"    to be performed. This work is inspired by ``clean_steps`` and"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"4943eaaa_4421a572","line":4,"in_reply_to":"de9c3c82_6b54ce6b","updated":"2023-08-16 14:33:01.000000000","message":"Done","commit_id":"3bb750c73c385d28527620d92566e10748493829"}]}
