)]}'
{"/PATCHSET_LEVEL":[{"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":"a719faf716deea0c66bd7d9e0d2ad692a456f08d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a386ed4a_aed72d6a","updated":"2025-06-17 22:36:15.000000000","message":"Also:\n- API-REF\n- webapi-version-history","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"},{"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":"e259ad14d7d6269f39fe351924b6a2b1cb0da71d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5ad2020a_d4b00095","updated":"2025-06-20 19:41:04.000000000","message":"Tested the following in devstack, using manual CURL api calls:\n- Viewing an instance_name via GET /v1/nodes/node-name\n- Adding an instance_name\n- Clearing instance name on undeploy\n- Setting an instance_name via PATCH /v1/nodes/node-name\n- Setting a instance_info/display_name and validating it sets instance_name\n- Setting a instance_info/display_name when instance_name already exists and validating it DOES NOT OVERRIDE existing instance_name\n- node.instance_name not returned for API version \u003c 1.100\n\nNeeds testing/writing:\n- Client code for this, both CLI and openstacksdk\n- Fully integrated with nova (I tested this in theory with a standalone Ironic, but haven\u0027t with actual-nova) -- this could potentially be done by observing CI running with nova\n\nI\u0027m going to fix the issues with documentation in this now so it can be easily made mergeable.","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"23d9fa7c66863036471239334533d2385b75da51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"52401c37_41912670","updated":"2025-07-14 15:20:38.000000000","message":"I will be taking over this change.\n\nIt looks mostly complete to me. I will try to address the real world testing TODO noted in the feedback and this should be ready for reviews.","commit_id":"1f9f1696846c631444d4ffe1d35cbeef74b87d0b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"838e3d55805ff8d374f2dfa337cd433100c600a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8192e896_1050f798","updated":"2025-07-16 01:01:51.000000000","message":"Nova can change instance name, do we consider updating the new field for this case?","commit_id":"28e52ec513b59423bb4f8f4c622f91b526e41ca4"},{"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":"1c5c7003d41cca506cef2f14b5fbd2d8239dbab0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"24b3bd5b_845d7b6f","in_reply_to":"8192e896_1050f798","updated":"2025-08-06 18:19:28.000000000","message":"Currently, we store the instance_name in instance_info and it\u0027s never updated there either. I would consider it an enhancement/additional feature to sync instance_info after provisioning (perhaps by listening into notifications like designate does).","commit_id":"28e52ec513b59423bb4f8f4c622f91b526e41ca4"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"a8952afc382cc3775a646e85636c42ba6da99308","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"28e12412_bf40e49f","updated":"2025-08-17 12:03:06.000000000","message":"The CI logs show the new field is working. `instance_name` is present in all node objects, the new object version (1.42) is being used consistently, and all RPC operations are successful.","commit_id":"74ac87d117e4feba0bdf765dcfe1f934949e5739"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"e844af538984f2d82ba924f0752acaacbfdf91a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6b1b7d05_764fe228","in_reply_to":"28e12412_bf40e49f","updated":"2025-08-17 12:27:19.000000000","message":"https://zuul.opendev.org/t/openstack/build/89150a7cca8c49ccae9a9d608b344476/log/controller/logs/screen-ir-api.txt#1328-1879 - update_node, use of instance_name with default.\n\nhttps://zuul.opendev.org/t/openstack/build/89150a7cca8c49ccae9a9d608b344476/log/controller/logs/screen-ir-cond.txt#2784 - correct 1.42 object version usage","commit_id":"74ac87d117e4feba0bdf765dcfe1f934949e5739"},{"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":"613e98ff937dd5cc69eab1f1259b67743d65be4e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"5b14926f_9a8207f5","updated":"2025-08-26 19:57:03.000000000","message":"Update in progress","commit_id":"fd0565ea4736b537bbc8f317873de1c93978e26d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"183997d48e956df8d448aafdfb064b69eb39c7cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"65d6096b_f31a4b52","updated":"2025-09-23 19:03:00.000000000","message":"Holding, because this is a nested change on top of others.","commit_id":"694bc935bea6112020ec89bcb4bbe704a400ddb2"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"d65c3aeb3788335d74223a01f59f756b5e350aa0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"004e60be_06674ee5","updated":"2025-11-18 07:02:27.000000000","message":"recheck - unrelated CI failure","commit_id":"bc463ebcbbc69ff28d87853bfe7796e88a8e17de"}],"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":"1a555ab410b63f8d78dae004870703e8cb9497de","unresolved":true,"context_lines":[{"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.104 (Flamingo)"},{"line_number":6,"context_line":"------------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Add a new ``instance_name`` field to the node resource. This field provides"}],"source_content_type":"text/x-rst","patch_set":17,"id":"b5e2efec_8f8cb79c","line":5,"range":{"start_line":5,"start_character":6,"end_line":5,"end_character":16},"updated":"2025-09-23 18:21:29.000000000","message":"At this point, it wouldn\u0027t be flamingo.","commit_id":"be81fa457c6fe8df3741f3cbe75302f4ac4fbf84"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3400f0de53685f15b422c751de68e311f9904e75","unresolved":true,"context_lines":[{"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.104 (Flamingo)"},{"line_number":6,"context_line":"------------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Add a new ``instance_name`` field to the node resource. This field provides"}],"source_content_type":"text/x-rst","patch_set":17,"id":"cf485f72_29241455","line":5,"range":{"start_line":5,"start_character":6,"end_line":5,"end_character":16},"in_reply_to":"b5e2efec_8f8cb79c","updated":"2025-09-23 18:22:25.000000000","message":"s/Flamingo/Gazpacho/","commit_id":"be81fa457c6fe8df3741f3cbe75302f4ac4fbf84"}],"ironic/api/controllers/v1/node.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":"a719faf716deea0c66bd7d9e0d2ad692a456f08d","unresolved":true,"context_lines":[{"line_number":186,"context_line":"            \u0027instance_info\u0027: {\u0027type\u0027: [\u0027object\u0027, \u0027null\u0027]},"},{"line_number":187,"context_line":"            \u0027instance_uuid\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":188,"context_line":"            \u0027instance_name\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027minLength\u0027: 1,"},{"line_number":189,"context_line":"                              \u0027maxLength\u0027: 255},"},{"line_number":190,"context_line":"            \u0027lessee\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":191,"context_line":"            \u0027management_interface\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":192,"context_line":"            \u0027maintenance\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027boolean\u0027, \u0027null\u0027]},"}],"source_content_type":"text/x-python","patch_set":2,"id":"90c5c3da_444e44f4","line":189,"updated":"2025-06-17 22:36:15.000000000","message":"min/max length probably not desired as not used elsewhere. if we add these it should be all at once","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"271101061f3124ffdae7adb7fd0fef766c7c0a5f","unresolved":true,"context_lines":[{"line_number":186,"context_line":"            \u0027instance_info\u0027: {\u0027type\u0027: [\u0027object\u0027, \u0027null\u0027]},"},{"line_number":187,"context_line":"            \u0027instance_uuid\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":188,"context_line":"            \u0027instance_name\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027minLength\u0027: 1,"},{"line_number":189,"context_line":"                              \u0027maxLength\u0027: 255},"},{"line_number":190,"context_line":"            \u0027lessee\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":191,"context_line":"            \u0027management_interface\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":192,"context_line":"            \u0027maintenance\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027boolean\u0027, \u0027null\u0027]},"}],"source_content_type":"text/x-python","patch_set":2,"id":"f2b43cb5_7b264cb1","line":189,"in_reply_to":"5da36cfc_0841283d","updated":"2025-08-26 11:18:54.000000000","message":"maxLength definitely useful, otherwise we tend to equal \"\" and None.\n\nnit: instance_name comes before instance_uuid","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"},{"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":"44ca929ba091fbd9ffed3e1794a4410a840d2e34","unresolved":true,"context_lines":[{"line_number":186,"context_line":"            \u0027instance_info\u0027: {\u0027type\u0027: [\u0027object\u0027, \u0027null\u0027]},"},{"line_number":187,"context_line":"            \u0027instance_uuid\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":188,"context_line":"            \u0027instance_name\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027minLength\u0027: 1,"},{"line_number":189,"context_line":"                              \u0027maxLength\u0027: 255},"},{"line_number":190,"context_line":"            \u0027lessee\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":191,"context_line":"            \u0027management_interface\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":192,"context_line":"            \u0027maintenance\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027boolean\u0027, \u0027null\u0027]},"}],"source_content_type":"text/x-python","patch_set":2,"id":"5da36cfc_0841283d","line":189,"in_reply_to":"90c5c3da_444e44f4","updated":"2025-06-20 13:24:08.000000000","message":"We do have maxlength on description, I guess, this is probably good.","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"},{"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":"613e98ff937dd5cc69eab1f1259b67743d65be4e","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            \u0027instance_info\u0027: {\u0027type\u0027: [\u0027object\u0027, \u0027null\u0027]},"},{"line_number":187,"context_line":"            \u0027instance_uuid\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":188,"context_line":"            \u0027instance_name\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027minLength\u0027: 1,"},{"line_number":189,"context_line":"                              \u0027maxLength\u0027: 255},"},{"line_number":190,"context_line":"            \u0027lessee\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":191,"context_line":"            \u0027management_interface\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":192,"context_line":"            \u0027maintenance\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027boolean\u0027, \u0027null\u0027]},"}],"source_content_type":"text/x-python","patch_set":2,"id":"e35cfdef_f31bef73","line":189,"in_reply_to":"f2b43cb5_7b264cb1","updated":"2025-08-26 19:57:03.000000000","message":"Done","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"},{"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":"a719faf716deea0c66bd7d9e0d2ad692a456f08d","unresolved":true,"context_lines":[{"line_number":3216,"context_line":"        if (\u0027instance_info\u0027 in changed_fields"},{"line_number":3217,"context_line":"            and not rpc_node.instance_name"},{"line_number":3218,"context_line":"            and rpc_node.instance_info.get(\u0027display_name\u0027)):"},{"line_number":3219,"context_line":"            rpc_node.instance_name \u003d rpc_node.instance_info[\u0027display_name\u0027]"},{"line_number":3220,"context_line":""},{"line_number":3221,"context_line":"        # NOTE(tenbrae): we calculate the rpc topic here in case node.driver"},{"line_number":3222,"context_line":"        #             has changed, so that update is sent to the"}],"source_content_type":"text/x-python","patch_set":2,"id":"6c543357_db2760d9","line":3219,"updated":"2025-06-17 22:36:15.000000000","message":"Validate this works in the real world","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"},{"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":"613e98ff937dd5cc69eab1f1259b67743d65be4e","unresolved":true,"context_lines":[{"line_number":3216,"context_line":"        if (\u0027instance_info\u0027 in changed_fields"},{"line_number":3217,"context_line":"            and not rpc_node.instance_name"},{"line_number":3218,"context_line":"            and rpc_node.instance_info.get(\u0027display_name\u0027)):"},{"line_number":3219,"context_line":"            rpc_node.instance_name \u003d rpc_node.instance_info[\u0027display_name\u0027]"},{"line_number":3220,"context_line":""},{"line_number":3221,"context_line":"        # NOTE(tenbrae): we calculate the rpc topic here in case node.driver"},{"line_number":3222,"context_line":"        #             has changed, so that update is sent to the"}],"source_content_type":"text/x-python","patch_set":2,"id":"fcfb5939_2b6e807a","line":3219,"in_reply_to":"217d866f_95b97c35","updated":"2025-08-26 19:57:03.000000000","message":"FWIW this testing was done in the real world. Am going to see if we have unit test coverage for this.","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"271101061f3124ffdae7adb7fd0fef766c7c0a5f","unresolved":true,"context_lines":[{"line_number":3216,"context_line":"        if (\u0027instance_info\u0027 in changed_fields"},{"line_number":3217,"context_line":"            and not rpc_node.instance_name"},{"line_number":3218,"context_line":"            and rpc_node.instance_info.get(\u0027display_name\u0027)):"},{"line_number":3219,"context_line":"            rpc_node.instance_name \u003d rpc_node.instance_info[\u0027display_name\u0027]"},{"line_number":3220,"context_line":""},{"line_number":3221,"context_line":"        # NOTE(tenbrae): we calculate the rpc topic here in case node.driver"},{"line_number":3222,"context_line":"        #             has changed, so that update is sent to the"}],"source_content_type":"text/x-python","patch_set":2,"id":"217d866f_95b97c35","line":3219,"in_reply_to":"6c543357_db2760d9","updated":"2025-08-26 11:18:54.000000000","message":"Are there unit tests for this aspect?","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"},{"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":"966d47dc467d9ced024842f893f902f407469dd6","unresolved":true,"context_lines":[{"line_number":3216,"context_line":"        if (\u0027instance_info\u0027 in changed_fields"},{"line_number":3217,"context_line":"            and not rpc_node.instance_name"},{"line_number":3218,"context_line":"            and rpc_node.instance_info.get(\u0027display_name\u0027)):"},{"line_number":3219,"context_line":"            rpc_node.instance_name \u003d rpc_node.instance_info[\u0027display_name\u0027]"},{"line_number":3220,"context_line":""},{"line_number":3221,"context_line":"        # NOTE(tenbrae): we calculate the rpc topic here in case node.driver"},{"line_number":3222,"context_line":"        #             has changed, so that update is sent to the"}],"source_content_type":"text/x-python","patch_set":2,"id":"07125236_a86fbf02","line":3219,"in_reply_to":"fcfb5939_2b6e807a","updated":"2025-08-26 20:22:08.000000000","message":"There are unit tests to cover this, I added one to cover the \"node.instance_name explicitly set doesn\u0027t get overridden\" case.","commit_id":"76149d885f96511e991d50260d7703b0e1ebace3"}],"ironic/api/controllers/v1/versions.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":"b93bde73cbf00137cf0ac22b8b52882a5687f129","unresolved":true,"context_lines":[{"line_number":141,"context_line":"# v1.101: Add category field to port."},{"line_number":142,"context_line":"# v1.102: Add physical_network field to portgroup."},{"line_number":143,"context_line":"# v1.103: Add category field to portgroup"},{"line_number":144,"context_line":"# v1.104: Add instance_name to node"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"MINOR_0_JUNO \u003d 0"}],"source_content_type":"text/x-python","patch_set":15,"id":"4dbc2903_0fc006f7","line":144,"updated":"2025-08-22 17:15:27.000000000","message":"These comments were missed in Clif\u0027s chain, but instead of forcing a full restack I cleaned it up here.","commit_id":"fd0565ea4736b537bbc8f317873de1c93978e26d"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"271101061f3124ffdae7adb7fd0fef766c7c0a5f","unresolved":true,"context_lines":[{"line_number":475,"context_line":"class Connection(api.Connection):"},{"line_number":476,"context_line":"    \"\"\"SqlAlchemy connection.\"\"\""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    # NOTE(dtantsur): don\u0027t forget to update the get_nodeinfo_list docstring"},{"line_number":479,"context_line":"    # in ironic/db/api.py when adding new filters!"},{"line_number":480,"context_line":"    _NODE_QUERY_FIELDS \u003d {\u0027console_enabled\u0027, \u0027maintenance\u0027, \u0027retired\u0027,"},{"line_number":481,"context_line":"                          \u0027driver\u0027, \u0027resource_class\u0027, \u0027provision_state\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ab060c55_bd6d774f","line":478,"updated":"2025-08-26 11:18:54.000000000","message":"don\u0027t forget ;)","commit_id":"fd0565ea4736b537bbc8f317873de1c93978e26d"},{"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":"613e98ff937dd5cc69eab1f1259b67743d65be4e","unresolved":false,"context_lines":[{"line_number":475,"context_line":"class Connection(api.Connection):"},{"line_number":476,"context_line":"    \"\"\"SqlAlchemy connection.\"\"\""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    # NOTE(dtantsur): don\u0027t forget to update the get_nodeinfo_list docstring"},{"line_number":479,"context_line":"    # in ironic/db/api.py when adding new filters!"},{"line_number":480,"context_line":"    _NODE_QUERY_FIELDS \u003d {\u0027console_enabled\u0027, \u0027maintenance\u0027, \u0027retired\u0027,"},{"line_number":481,"context_line":"                          \u0027driver\u0027, \u0027resource_class\u0027, \u0027provision_state\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"5f42a2a5_b2124000","line":478,"in_reply_to":"ab060c55_bd6d774f","updated":"2025-08-26 19:57:03.000000000","message":"Done","commit_id":"fd0565ea4736b537bbc8f317873de1c93978e26d"}]}
