)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1c2d2a988785be958921b50d7540272e2ad57976","unresolved":true,"context_lines":[{"line_number":10,"context_line":"could make Ironic lose track of a port that succeeded when a later port"},{"line_number":11,"context_line":"failed. This adjusts the behavior to record the port at the time of"},{"line_number":12,"context_line":"creation and then ensures that the ports are properly cleaned up."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Assisted-By: Claude Sonnet 5.5"},{"line_number":15,"context_line":"Change-Id: I30bd95441a89b44155c714c91828a3179be9154f"},{"line_number":16,"context_line":"Signed-off-by: Doug Goldstein \u003ccardoe@cardoe.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"e324718d_5b2f2e58","line":13,"updated":"2026-10-23 14:13:27.000000000","message":"Out of curiosity, is there a bug id?","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"b1a275bc022c602073b185032879cb82b55019de","unresolved":false,"context_lines":[{"line_number":10,"context_line":"could make Ironic lose track of a port that succeeded when a later port"},{"line_number":11,"context_line":"failed. This adjusts the behavior to record the port at the time of"},{"line_number":12,"context_line":"creation and then ensures that the ports are properly cleaned up."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Assisted-By: Claude Sonnet 5.5"},{"line_number":15,"context_line":"Change-Id: I30bd95441a89b44155c714c91828a3179be9154f"},{"line_number":16,"context_line":"Signed-off-by: Doug Goldstein \u003ccardoe@cardoe.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"036d2c51_dbe923b9","line":13,"in_reply_to":"e324718d_5b2f2e58","updated":"2026-10-23 19:28:14.000000000","message":"Done","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"}],"/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":"1c2d2a988785be958921b50d7540272e2ad57976","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"19006b27_28ee7773","updated":"2026-10-23 14:13:27.000000000","message":"Hey Doug, quick revision needed.","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"a2e554caa2fde9d53e0571e795376643a2c711aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d795b4c4_80de79b5","updated":"2026-10-19 21:16:34.000000000","message":"Overall looks good to me, except for the docstring. Not going to hold it up though.","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"bd7984883c4ec22c3fbfc2f633b8ee15e95d16c2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7b525fa2_bc69ea85","updated":"2026-10-26 18:06:34.000000000","message":"I don\u0027t know if this is even backportable anymore.","commit_id":"8a836d4444e4ae40c2e512cb4a807c39115f68e2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dfbedab69db44f0a45b94a63d384e17a5db412c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"25a5be32_eaa88d56","updated":"2026-10-27 16:34:01.000000000","message":"To my mind, the biggest issue with backporting is the shuffling of nettypes around. I feel like we\u0027ve muddied the water there, and we either need to embrace singularly or disjoint it. Just not really sure which the best path is. The issue with nettypes and moving it around is broadly that it is also breaking even though its internals.","commit_id":"44c73bd1a62cb5d9f573f87b934de370152c2da5"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"8b5441c7277cc5855000de9935d1dde73a55729d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a1dbac58_b772df9c","in_reply_to":"25a5be32_eaa88d56","updated":"2026-10-27 17:02:25.000000000","message":"Yeah I wish I put them in non-neutron spot to begin with.","commit_id":"44c73bd1a62cb5d9f573f87b934de370152c2da5"}],"ironic/common/neutron.py":[{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"a2e554caa2fde9d53e0571e795376643a2c711aa","unresolved":true,"context_lines":[{"line_number":339,"context_line":"        update_neutron_port(context, port.id, attrs, client\u003dclient)"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"def add_ports_to_network(task, network_uuid, vif_key: str,"},{"line_number":343,"context_line":"                         security_groups\u003dNone):"},{"line_number":344,"context_line":"    \"\"\"Create neutron ports to boot the ramdisk."},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8b1b9405_d96e2af2","line":342,"updated":"2026-10-19 21:16:34.000000000","message":"Should add `vif_key` to the docstring. \n\nCan this be an enum type when it\u0027s passed in?","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"b1a275bc022c602073b185032879cb82b55019de","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        update_neutron_port(context, port.id, attrs, client\u003dclient)"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"def add_ports_to_network(task, network_uuid, vif_key: str,"},{"line_number":343,"context_line":"                         security_groups\u003dNone):"},{"line_number":344,"context_line":"    \"\"\"Create neutron ports to boot the ramdisk."},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"510f0962_2c86ec5c","line":342,"in_reply_to":"23dfe60f_dd3cecae","updated":"2026-10-23 19:28:14.000000000","message":"Done","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"052ecf18ad4a68f5e97e5e0040a1dc62093d91d6","unresolved":true,"context_lines":[{"line_number":339,"context_line":"        update_neutron_port(context, port.id, attrs, client\u003dclient)"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"def add_ports_to_network(task, network_uuid, vif_key: str,"},{"line_number":343,"context_line":"                         security_groups\u003dNone):"},{"line_number":344,"context_line":"    \"\"\"Create neutron ports to boot the ramdisk."},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"23dfe60f_dd3cecae","line":342,"in_reply_to":"7610c73e_dd7eee01","updated":"2026-10-23 19:20:25.000000000","message":"On backport, you can merge in other content like enums if you need to. The review bar goes back up, but thats sort of the right path as long as you don\u0027t chagne anything else in the backport.","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"a3a82eb8ebd5a29ce2f34e118eb71c77148ed159","unresolved":true,"context_lines":[{"line_number":339,"context_line":"        update_neutron_port(context, port.id, attrs, client\u003dclient)"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"def add_ports_to_network(task, network_uuid, vif_key: str,"},{"line_number":343,"context_line":"                         security_groups\u003dNone):"},{"line_number":344,"context_line":"    \"\"\"Create neutron ports to boot the ramdisk."},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7610c73e_dd7eee01","line":342,"in_reply_to":"8b1b9405_d96e2af2","updated":"2026-10-23 19:11:57.000000000","message":"So I agree. Due to circular imports I\u0027d need to move the enum to ironic/common/network.py though. Would this change still be backportable?","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1c2d2a988785be958921b50d7540272e2ad57976","unresolved":true,"context_lines":[{"line_number":354,"context_line":"    :param network_uuid: UUID of a neutron network where ports will be"},{"line_number":355,"context_line":"        created."},{"line_number":356,"context_line":"    :param security_groups: List of Security Groups UUIDs to be used for"},{"line_number":357,"context_line":"        network."},{"line_number":358,"context_line":"    :raises: NetworkError"},{"line_number":359,"context_line":"    :returns: a dictionary in the form {port.uuid: neutron_port[\u0027id\u0027]}"},{"line_number":360,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"0fa0c121_9bdf19af","line":357,"updated":"2026-10-23 14:13:27.000000000","message":"update docstring please.","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"b1a275bc022c602073b185032879cb82b55019de","unresolved":false,"context_lines":[{"line_number":354,"context_line":"    :param network_uuid: UUID of a neutron network where ports will be"},{"line_number":355,"context_line":"        created."},{"line_number":356,"context_line":"    :param security_groups: List of Security Groups UUIDs to be used for"},{"line_number":357,"context_line":"        network."},{"line_number":358,"context_line":"    :raises: NetworkError"},{"line_number":359,"context_line":"    :returns: a dictionary in the form {port.uuid: neutron_port[\u0027id\u0027]}"},{"line_number":360,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"26c7cd41_b9cd0c01","line":357,"in_reply_to":"0fa0c121_9bdf19af","updated":"2026-10-23 19:28:14.000000000","message":"Done","commit_id":"d6e6998cbf59f69de3062f3d7451901799c64952"}],"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":"dfbedab69db44f0a45b94a63d384e17a5db412c8","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        try:"},{"line_number":68,"context_line":"            vifs \u003d neutron.add_ports_to_network(task, network, net_type,"},{"line_number":69,"context_line":"                                                security_groups\u003dsecurity_groups)"},{"line_number":70,"context_line":"        except Exception:"},{"line_number":71,"context_line":"            # ensure we clean up prior to re-raising"},{"line_number":72,"context_line":"            neutron.rollback_ports(task, network, net_type)"},{"line_number":73,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":6,"id":"20a243eb_ed94917c","line":70,"updated":"2026-10-27 16:34:01.000000000","message":"I\u0027m not a huge fan of blanket exception, but i I think its actually appropriate here. Any error -\u003e go rewind.","commit_id":"44c73bd1a62cb5d9f573f87b934de370152c2da5"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"8b5441c7277cc5855000de9935d1dde73a55729d","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        try:"},{"line_number":68,"context_line":"            vifs \u003d neutron.add_ports_to_network(task, network, net_type,"},{"line_number":69,"context_line":"                                                security_groups\u003dsecurity_groups)"},{"line_number":70,"context_line":"        except Exception:"},{"line_number":71,"context_line":"            # ensure we clean up prior to re-raising"},{"line_number":72,"context_line":"            neutron.rollback_ports(task, network, net_type)"},{"line_number":73,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":6,"id":"2e75358d_03cddc8e","line":70,"in_reply_to":"20a243eb_ed94917c","updated":"2026-10-27 17:02:25.000000000","message":"I can improve the comments but my intention was that its like a cleanup step and just passing along the exception.","commit_id":"44c73bd1a62cb5d9f573f87b934de370152c2da5"}]}
