)]}'
{"/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":"aed5f7e40c98fe94fa22282ae3f40a0890c78713","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"691b196d_4a518702","updated":"2026-07-10 18:28:23.000000000","message":"I think this could use some high bandwidth discussion to try and reach a shared understanding. There are aspects of this which worry me, but then there are also aspects which I sort of like, but I think the challenge is much more getting on the same starting context which I think discussion would be good.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"cd9df0a018003ae4c64fb463f52929ccd938cb28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"88f85b1b_b380b234","updated":"2026-07-14 16:18:53.000000000","message":"First pass... some comments.","commit_id":"c2fbc67419da027cd2e8d56e179fc5a394017b87"}],"specs/approved/standalone-networking-v2.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":"aed5f7e40c98fe94fa22282ae3f40a0890c78713","unresolved":true,"context_lines":[{"line_number":19,"context_line":"* Interaction with the VIF API"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Additionally, since :doc:`VXLAN support \u003c/specs/approved/vxlan-support\u003e` was"},{"line_number":22,"context_line":"not ready at that time, we did not incorporate it into the MVP."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This specification aims to address these gaps."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"625d2e23_1d0c7c8b","line":22,"updated":"2026-07-10 18:28:23.000000000","message":"Frankly, I think it was more orthogonal because that work was largely outside of ironic\u0027s direct scope and in networking plugins. That beign said it laid a bit of a foundation for the interaction with the devices.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c2e24b291ca2f46e9611cc39336f230ae107fa84","unresolved":true,"context_lines":[{"line_number":19,"context_line":"* Interaction with the VIF API"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Additionally, since :doc:`VXLAN support \u003c/specs/approved/vxlan-support\u003e` was"},{"line_number":22,"context_line":"not ready at that time, we did not incorporate it into the MVP."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This specification aims to address these gaps."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"6a3e2e1a_50d8b4a6","line":22,"in_reply_to":"625d2e23_1d0c7c8b","updated":"2026-07-14 11:18:08.000000000","message":"Yeah, it can be a mistake on my side to mix the two things together. Then again, I don\u0027t have time or spoons for two specs...","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aed5f7e40c98fe94fa22282ae3f40a0890c78713","unresolved":true,"context_lines":[{"line_number":30,"context_line":"----------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Introduce a new CRUD API endpoint ``/v1/network_attachments`` exposing"},{"line_number":33,"context_line":"NetworkAttachment objects with fields:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* ``uuid``, ``name``, ``description``, ``created_at``, ``updated_at``,"},{"line_number":36,"context_line":"  ``extra``, ``owner`` - common fields for Ironic objects."}],"source_content_type":"text/x-rst","patch_set":1,"id":"acbb6d5d_db25025e","line":33,"updated":"2026-07-10 18:28:23.000000000","message":"If you can detail the anticipated use pattern. First reading, I\u0027m thinking we\u0027re competing with neutron which would be hyper-problematic, second reading now I\u0027m wondering if this same record would be applied on multiple nodes, but now I\u0027m thinking inverse would be pretty awesome and consistency driving across use models.\n\nAt the same time, I\u0027m not entirely sure of the basic use pattern. Is the model to have a single record representing base attachment configuration to then be stamped out?","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"cd9df0a018003ae4c64fb463f52929ccd938cb28","unresolved":true,"context_lines":[{"line_number":30,"context_line":"----------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Introduce a new CRUD API endpoint ``/v1/network_attachments`` exposing"},{"line_number":33,"context_line":"NetworkAttachment objects with fields:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* ``uuid``, ``name``, ``description``, ``created_at``, ``updated_at``,"},{"line_number":36,"context_line":"  ``extra``, ``owner`` - common fields for Ironic objects."}],"source_content_type":"text/x-rst","patch_set":1,"id":"623f3855_ca0163e6","line":33,"in_reply_to":"34b871c9_fce6ae3b","updated":"2026-07-14 16:18:53.000000000","message":"My expectation is that a network attachment would be shared across multiple nodes all participating in the same network.  \n\nWhether we allow the same attachment (or different attachments w/ same vlan) to be assigned to multiple ports on the same node, outside of LAG anyway, probably needs to be considered.  We could semantically block that as in some cases that may lead to issues on the host o/s.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa414d6a8f90ee54b6f4738cc61a3a763e8e8041","unresolved":false,"context_lines":[{"line_number":30,"context_line":"----------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Introduce a new CRUD API endpoint ``/v1/network_attachments`` exposing"},{"line_number":33,"context_line":"NetworkAttachment objects with fields:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* ``uuid``, ``name``, ``description``, ``created_at``, ``updated_at``,"},{"line_number":36,"context_line":"  ``extra``, ``owner`` - common fields for Ironic objects."}],"source_content_type":"text/x-rst","patch_set":1,"id":"e77ae4d5_f1d150e0","line":33,"in_reply_to":"623f3855_ca0163e6","updated":"2026-07-15 16:26:02.000000000","message":"Acknowledged","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c2e24b291ca2f46e9611cc39336f230ae107fa84","unresolved":true,"context_lines":[{"line_number":30,"context_line":"----------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Introduce a new CRUD API endpoint ``/v1/network_attachments`` exposing"},{"line_number":33,"context_line":"NetworkAttachment objects with fields:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* ``uuid``, ``name``, ``description``, ``created_at``, ``updated_at``,"},{"line_number":36,"context_line":"  ``extra``, ``owner`` - common fields for Ironic objects."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fd518110_86bce30c","line":33,"in_reply_to":"acbb6d5d_db25025e","updated":"2026-07-14 11:18:08.000000000","message":"Well, competition of Neutron is a question of perspective. You could argue that we\u0027ve already crossed this bridge with Allain\u0027s initial work.\n\nThe problem is: we shouldn\u0027t keep using `port.extra` for a user-facing API. We accepted it to get some progress with the MVP. I don\u0027t think the proper API changes anything wrt Neutron positioning.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"65e81635a01f12e56923c631fcd197ce437e3eee","unresolved":true,"context_lines":[{"line_number":30,"context_line":"----------------------"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Introduce a new CRUD API endpoint ``/v1/network_attachments`` exposing"},{"line_number":33,"context_line":"NetworkAttachment objects with fields:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* ``uuid``, ``name``, ``description``, ``created_at``, ``updated_at``,"},{"line_number":36,"context_line":"  ``extra``, ``owner`` - common fields for Ironic objects."}],"source_content_type":"text/x-rst","patch_set":1,"id":"34b871c9_fce6ae3b","line":33,"in_reply_to":"fd518110_86bce30c","updated":"2026-07-14 14:19:47.000000000","message":"++ problem statement.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aed5f7e40c98fe94fa22282ae3f40a0890c78713","unresolved":true,"context_lines":[{"line_number":39,"context_line":"  ``switchport`` definition introduced in the :doc:`MVP specification"},{"line_number":40,"context_line":"  \u003c/specs/approved/standalone-networking\u003e`."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* ``lag_name`` - override for the LAG name on the switch side. Defaults to the"},{"line_number":43,"context_line":"  port group name (for ports - the name of the port group they\u0027re linked to)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* ``aggregation_mode`` - LAG mode on the switch side. Ignored for ports."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"8855b648_041d5e7d","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":77},"updated":"2026-07-10 18:28:23.000000000","message":"So, overriding the name which should already be on portgroups? Huh?","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"cd9df0a018003ae4c64fb463f52929ccd938cb28","unresolved":true,"context_lines":[{"line_number":39,"context_line":"  ``switchport`` definition introduced in the :doc:`MVP specification"},{"line_number":40,"context_line":"  \u003c/specs/approved/standalone-networking\u003e`."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* ``lag_name`` - override for the LAG name on the switch side. Defaults to the"},{"line_number":43,"context_line":"  port group name (for ports - the name of the port group they\u0027re linked to)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* ``aggregation_mode`` - LAG mode on the switch side. Ignored for ports."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"a5bd982d_269fb9b3","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":77},"in_reply_to":"16b15041_a16229c1","updated":"2026-07-14 16:18:53.000000000","message":"Yes, `lag_name` is a little suspect here.  I likely made a mistake by including it in the port.extra schema.  If we needed it at all it could be derived by an attribute of the port group that the port was associated with, but like Julia said, ultimately, if specified, is going to cause a lot of friction with the switch implementation of the LAG.  \n\nI was likely thinking of how some switch vendors have a port attribute that associates them with a LAG, but forgot that other vendors do it the other way around and have their LAG object have a members attribute that links the LAG to the ports.   \n\nSince Ironic already has the Port-\u003ePortGroup relationship established we can just follow that if the port needs any LAG specific attributes it can get them from the parent PortGroup.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa414d6a8f90ee54b6f4738cc61a3a763e8e8041","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  ``switchport`` definition introduced in the :doc:`MVP specification"},{"line_number":40,"context_line":"  \u003c/specs/approved/standalone-networking\u003e`."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* ``lag_name`` - override for the LAG name on the switch side. Defaults to the"},{"line_number":43,"context_line":"  port group name (for ports - the name of the port group they\u0027re linked to)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* ``aggregation_mode`` - LAG mode on the switch side. Ignored for ports."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fc159ec6_8dc83c32","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":77},"in_reply_to":"4d892b45_86f29d8d","updated":"2026-07-15 16:26:02.000000000","message":"Acknowledged","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"b2ee07e53e74a8fb1b0a86d59b941a85d050d9a0","unresolved":true,"context_lines":[{"line_number":39,"context_line":"  ``switchport`` definition introduced in the :doc:`MVP specification"},{"line_number":40,"context_line":"  \u003c/specs/approved/standalone-networking\u003e`."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* ``lag_name`` - override for the LAG name on the switch side. Defaults to the"},{"line_number":43,"context_line":"  port group name (for ports - the name of the port group they\u0027re linked to)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* ``aggregation_mode`` - LAG mode on the switch side. Ignored for ports."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"4d892b45_86f29d8d","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":77},"in_reply_to":"502df0fa_6d0d4a17","updated":"2026-07-15 12:45:33.000000000","message":"Yes, the lag_name will either have to be derived from the PortGroup or dynamically set by the switch or some combination thereof.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c2e24b291ca2f46e9611cc39336f230ae107fa84","unresolved":true,"context_lines":[{"line_number":39,"context_line":"  ``switchport`` definition introduced in the :doc:`MVP specification"},{"line_number":40,"context_line":"  \u003c/specs/approved/standalone-networking\u003e`."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* ``lag_name`` - override for the LAG name on the switch side. Defaults to the"},{"line_number":43,"context_line":"  port group name (for ports - the name of the port group they\u0027re linked to)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* ``aggregation_mode`` - LAG mode on the switch side. Ignored for ports."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"cc66e8d9_ab97fb67","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":77},"in_reply_to":"8855b648_041d5e7d","updated":"2026-07-14 11:18:08.000000000","message":"Yeah, it\u0027s an odd bit. As far as I could understand it (I hope Allain can jump in), a LAG name can be switch-specific. Worse even, it does not have to be unique Ironic-wide, while PortGroup.name is unique.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0114deb014653c13329d7dbfe995a93e522549c9","unresolved":true,"context_lines":[{"line_number":39,"context_line":"  ``switchport`` definition introduced in the :doc:`MVP specification"},{"line_number":40,"context_line":"  \u003c/specs/approved/standalone-networking\u003e`."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* ``lag_name`` - override for the LAG name on the switch side. Defaults to the"},{"line_number":43,"context_line":"  port group name (for ports - the name of the port group they\u0027re linked to)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* ``aggregation_mode`` - LAG mode on the switch side. Ignored for ports."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"502df0fa_6d0d4a17","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":77},"in_reply_to":"a5bd982d_269fb9b3","updated":"2026-07-15 12:18:14.000000000","message":"So, is it safe to drop it without replacement?","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"65e81635a01f12e56923c631fcd197ce437e3eee","unresolved":true,"context_lines":[{"line_number":39,"context_line":"  ``switchport`` definition introduced in the :doc:`MVP specification"},{"line_number":40,"context_line":"  \u003c/specs/approved/standalone-networking\u003e`."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* ``lag_name`` - override for the LAG name on the switch side. Defaults to the"},{"line_number":43,"context_line":"  port group name (for ports - the name of the port group they\u0027re linked to)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* ``aggregation_mode`` - LAG mode on the switch side. Ignored for ports."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"16b15041_a16229c1","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":77},"in_reply_to":"cc66e8d9_ab97fb67","updated":"2026-07-14 14:19:47.000000000","message":"Yeah, so... the issue gets worse with virutal chassises paired together.\n\nUltimately, it is up to the specific driver\u0027s behavior, and the interface names which need to be recorded for the binding need to be known/set based upon the driver expectations in the local link information. Overrides are nice, but I guess I\u0027d prefer that data to be specifically scoped to that context. :\\","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aed5f7e40c98fe94fa22282ae3f40a0890c78713","unresolved":true,"context_lines":[{"line_number":49,"context_line":"The default represenation of the resource (without ``detail\u003dtrue``) will skip"},{"line_number":50,"context_line":"the ``created_at``, ``updated_at``, ``description``, and ``extra`` fields."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The new resource will follow a similar RBAC policy to ports and port groups,"},{"line_number":53,"context_line":"except that the owner comes from an explicit field rather than from a node"},{"line_number":54,"context_line":"link."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Linking to network attachments"},{"line_number":57,"context_line":"------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"b7ace057_ce645702","line":54,"range":{"start_line":52,"start_character":0,"end_line":54,"end_character":5},"updated":"2026-07-10 18:28:23.000000000","message":"Why would this ever need to be separate? What is the use case for it to be explicitly disjointed as opposed to explicit on the node use.\n\nSpecifically, the owner project would need to match for the RBAC and interactions to even be appropriate in the slightest.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"65e81635a01f12e56923c631fcd197ce437e3eee","unresolved":true,"context_lines":[{"line_number":49,"context_line":"The default represenation of the resource (without ``detail\u003dtrue``) will skip"},{"line_number":50,"context_line":"the ``created_at``, ``updated_at``, ``description``, and ``extra`` fields."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The new resource will follow a similar RBAC policy to ports and port groups,"},{"line_number":53,"context_line":"except that the owner comes from an explicit field rather than from a node"},{"line_number":54,"context_line":"link."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Linking to network attachments"},{"line_number":57,"context_line":"------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"cf15f2fc_9b277cee","line":54,"range":{"start_line":52,"start_character":0,"end_line":54,"end_character":5},"in_reply_to":"4deaf0cd_6159c658","updated":"2026-07-14 14:19:47.000000000","message":"Yeah, except then the idea of lag_name spoils it 😉\n\nBecause that is a single instance resource on the switch.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c2e24b291ca2f46e9611cc39336f230ae107fa84","unresolved":true,"context_lines":[{"line_number":49,"context_line":"The default represenation of the resource (without ``detail\u003dtrue``) will skip"},{"line_number":50,"context_line":"the ``created_at``, ``updated_at``, ``description``, and ``extra`` fields."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The new resource will follow a similar RBAC policy to ports and port groups,"},{"line_number":53,"context_line":"except that the owner comes from an explicit field rather than from a node"},{"line_number":54,"context_line":"link."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Linking to network attachments"},{"line_number":57,"context_line":"------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4deaf0cd_6159c658","line":54,"range":{"start_line":52,"start_character":0,"end_line":54,"end_character":5},"in_reply_to":"b7ace057_ce645702","updated":"2026-07-14 11:18:08.000000000","message":"To avoid duplicating the same resource over a large number of nodes potentially? To use Neutron as a metaphor, you\u0027re asking why a Network is not tied to a single Port.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa414d6a8f90ee54b6f4738cc61a3a763e8e8041","unresolved":false,"context_lines":[{"line_number":49,"context_line":"The default represenation of the resource (without ``detail\u003dtrue``) will skip"},{"line_number":50,"context_line":"the ``created_at``, ``updated_at``, ``description``, and ``extra`` fields."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The new resource will follow a similar RBAC policy to ports and port groups,"},{"line_number":53,"context_line":"except that the owner comes from an explicit field rather than from a node"},{"line_number":54,"context_line":"link."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Linking to network attachments"},{"line_number":57,"context_line":"------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3763c56b_b4c0980a","line":54,"range":{"start_line":52,"start_character":0,"end_line":54,"end_character":5},"in_reply_to":"cf15f2fc_9b277cee","updated":"2026-07-15 16:26:02.000000000","message":"No lag_name, no problem","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aed5f7e40c98fe94fa22282ae3f40a0890c78713","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* Via a new field ``network_attachment_id`` (turning into"},{"line_number":62,"context_line":"  ``network_attachment_uuid`` on the API level, accepting names on"},{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."}],"source_content_type":"text/x-rst","patch_set":1,"id":"2848e180_a7e893bb","line":63,"updated":"2026-07-10 18:28:23.000000000","message":"Why can\u0027t the vif model work for this the same way. If the attachment *modeling* is defined by the other table and all the port provides the physical details.\n\nBut is this a 1:1 or an inverse of many to 1 attachment id model?","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c2e24b291ca2f46e9611cc39336f230ae107fa84","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* Via a new field ``network_attachment_id`` (turning into"},{"line_number":62,"context_line":"  ``network_attachment_uuid`` on the API level, accepting names on"},{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."}],"source_content_type":"text/x-rst","patch_set":1,"id":"83c05b16_26b9cbd0","line":63,"in_reply_to":"2848e180_a7e893bb","updated":"2026-07-14 11:18:08.000000000","message":"The idea was that attachments can be shared between nodes (on the technical level, ports, not nodes) since they\u0027re basically physical networks.\n\nI can be convinced otherwise, although it will cause us some pain in Metal3 where we definitely don\u0027t want a network attachment per port.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"65e81635a01f12e56923c631fcd197ce437e3eee","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* Via a new field ``network_attachment_id`` (turning into"},{"line_number":62,"context_line":"  ``network_attachment_uuid`` on the API level, accepting names on"},{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."}],"source_content_type":"text/x-rst","patch_set":1,"id":"a2fdadfd_aab66169","line":63,"in_reply_to":"83c05b16_26b9cbd0","updated":"2026-07-14 14:19:47.000000000","message":"I was more thinking, if we add a column, we could record the record, but basically make it \"system managed\" yet visible.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa414d6a8f90ee54b6f4738cc61a3a763e8e8041","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"* Via a new field ``network_attachment_id`` (turning into"},{"line_number":62,"context_line":"  ``network_attachment_uuid`` on the API level, accepting names on"},{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7cbb469f_4b948023","line":63,"in_reply_to":"a2fdadfd_aab66169","updated":"2026-07-15 16:26:02.000000000","message":"After some thinking, I\u0027m moving towards VIF API only for now.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aed5f7e40c98fe94fa22282ae3f40a0890c78713","unresolved":true,"context_lines":[{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In the latter case, a similar port selection logic is used as is for Neutron."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"42bd395b_aad82f9c","line":66,"updated":"2026-07-10 18:28:23.000000000","message":"Part of me is wondering if the right path here is to not only when ironic-networking is in use, but to also record vifs inherently. That allows us an eventual path to handle that with some consistency regardless of the actual user who is asking for the attachment.\n\nFurthermore, that would align the first path with it within the lifecycle.\n\nI guess this sort of enables a reverse view which has always been *node focused* where the node itself has to be queried.\n\nThat is unless the structure is the reverse here and we\u0027re still hiding it.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa414d6a8f90ee54b6f4738cc61a3a763e8e8041","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In the latter case, a similar port selection logic is used as is for Neutron."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9e38b7f7_ec90b86a","line":66,"in_reply_to":"23c75de6_a6c9eebf","updated":"2026-07-15 16:26:02.000000000","message":"Done","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"cd9df0a018003ae4c64fb463f52929ccd938cb28","unresolved":true,"context_lines":[{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In the latter case, a similar port selection logic is used as is for Neutron."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"d091e4e4_ac992186","line":66,"in_reply_to":"2b28620e_4228e999","updated":"2026-07-14 16:18:53.000000000","message":"You lost me a bit on the VIF aspect of this in general.  I guess I don\u0027t understand that well enough to know how this relates to it at all.  I thought that was a neutron/nova thing and wouldn\u0027t be at all involved for standalone cases.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c2e24b291ca2f46e9611cc39336f230ae107fa84","unresolved":true,"context_lines":[{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In the latter case, a similar port selection logic is used as is for Neutron."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7fb0af40_15df9193","line":66,"in_reply_to":"42bd395b_aad82f9c","updated":"2026-07-14 11:18:08.000000000","message":"Kind of `port.attached_vif`, which is read-only for a user? I can add it.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"65e81635a01f12e56923c631fcd197ce437e3eee","unresolved":true,"context_lines":[{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In the latter case, a similar port selection logic is used as is for Neutron."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"2b28620e_4228e999","line":66,"in_reply_to":"7fb0af40_15df9193","updated":"2026-07-14 14:19:47.000000000","message":"Sort of, but something along those lines is what I\u0027m thinking in the other comment. That ultimately kind of also softens the positioning and allows us to say \"we\u0027re making our UX experience better *overall* and leveling up, it just so happens we have this whole other interface which may live with or be completely disjointed from users.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0114deb014653c13329d7dbfe995a93e522549c9","unresolved":true,"context_lines":[{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In the latter case, a similar port selection logic is used as is for Neutron."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dac6c17a_6aaf4b52","line":66,"in_reply_to":"d091e4e4_ac992186","updated":"2026-07-15 12:18:14.000000000","message":"Yeah, but we have a generic \"attach a VIF\" API. It was created for Nova, and currently it does nothing meaningful for standalone deployment. It would be cool to attach some meaning to it, and I think using network attachments allows it.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"b2ee07e53e74a8fb1b0a86d59b941a85d050d9a0","unresolved":true,"context_lines":[{"line_number":63,"context_line":"  create/update)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* By providing a network attachment UUID via the VIF API when the"},{"line_number":66,"context_line":"  ironic-networking network interface is used."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"In the latter case, a similar port selection logic is used as is for Neutron."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"23c75de6_a6c9eebf","line":66,"in_reply_to":"dac6c17a_6aaf4b52","updated":"2026-07-15 12:45:33.000000000","message":"Can you describe how that would interact with the VIF functionality at a high level?","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aed5f7e40c98fe94fa22282ae3f40a0890c78713","unresolved":true,"context_lines":[{"line_number":71,"context_line":"----------------------------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* Network attachments objects cannot be deleted while attached to a port or"},{"line_number":74,"context_line":"  port group (explicitly or via a VIF)."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* Changes to network attachments are not immediately applied to already running"},{"line_number":77,"context_line":"  instances. Instead, the ``reattach_networking`` service step must be used"}],"source_content_type":"text/x-rst","patch_set":1,"id":"49caedd1_aee0d789","line":74,"updated":"2026-07-10 18:28:23.000000000","message":"fwiw, I\u0027d take this as a reasonable constraint.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa414d6a8f90ee54b6f4738cc61a3a763e8e8041","unresolved":false,"context_lines":[{"line_number":71,"context_line":"----------------------------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* Network attachments objects cannot be deleted while attached to a port or"},{"line_number":74,"context_line":"  port group (explicitly or via a VIF)."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* Changes to network attachments are not immediately applied to already running"},{"line_number":77,"context_line":"  instances. Instead, the ``reattach_networking`` service step must be used"}],"source_content_type":"text/x-rst","patch_set":1,"id":"26e584a2_0d6efe9b","line":74,"in_reply_to":"49caedd1_aee0d789","updated":"2026-07-15 16:26:02.000000000","message":"Acknowledged","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aed5f7e40c98fe94fa22282ae3f40a0890c78713","unresolved":true,"context_lines":[{"line_number":83,"context_line":"Networking Generic Switch, the only currently supported standalone networking"},{"line_number":84,"context_line":"backend, already has support for EVPN L2VNI for many vendors."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"On the Ironic side, the standalone service needs to be updated with new RPC"},{"line_number":87,"context_line":"calls:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"``plug_switch_to_network(context, switch_id, vni, segmentation_id)``"}],"source_content_type":"text/x-rst","patch_set":1,"id":"79391caa_c9524281","line":86,"updated":"2026-07-10 18:28:23.000000000","message":"we should stress ironic-networking needs, not ironic\u0027s direct rpc model for front end API-\u003eRPC. First reading, I was thinking it was the frontend which had me super worried we\u0027re shifting the model.","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa414d6a8f90ee54b6f4738cc61a3a763e8e8041","unresolved":false,"context_lines":[{"line_number":83,"context_line":"Networking Generic Switch, the only currently supported standalone networking"},{"line_number":84,"context_line":"backend, already has support for EVPN L2VNI for many vendors."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"On the Ironic side, the standalone service needs to be updated with new RPC"},{"line_number":87,"context_line":"calls:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"``plug_switch_to_network(context, switch_id, vni, segmentation_id)``"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0bda69aa_09fe131d","line":86,"in_reply_to":"79391caa_c9524281","updated":"2026-07-15 16:26:02.000000000","message":"Done","commit_id":"af87edf96228de742b8c13abb1e1b84d74052c5f"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"cd9df0a018003ae4c64fb463f52929ccd938cb28","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5decde92_e2ca2489","updated":"2026-07-14 16:18:53.000000000","message":"Could probably consider that network attachment should only be associated to PortGroup rather than on each Port in the group _and_ the PortGroup itself.\n\nWe haven\u0027t gotten to thinking about LAG in Metal3 yet, but my thinking so far is that they can be inferred by possibly grouping together any ports that are associated to the same HNA.  ...but that\u0027s just me thinking out loud at the moment.","commit_id":"c2fbc67419da027cd2e8d56e179fc5a394017b87"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"cd9df0a018003ae4c64fb463f52929ccd938cb28","unresolved":true,"context_lines":[{"line_number":35,"context_line":"NICs are connected to a VLAN (and eventually a VNI) to place nodes on virtual"},{"line_number":36,"context_line":"networks."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Network attachments thus become a representaion of virtual networks in Ironic."},{"line_number":39,"context_line":"It is expected that several ports or port groups use the same network"},{"line_number":40,"context_line":"attachment to connect to the same L2 network on the same switch, although it\u0027s"},{"line_number":41,"context_line":"not a hard requirement, and operators may choose to create a network attachment"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3883dc56_604d7a45","line":38,"range":{"start_line":38,"start_character":34,"end_line":38,"end_character":48},"updated":"2026-07-14 16:18:53.000000000","message":"s/representaion/representation/","commit_id":"c2fbc67419da027cd2e8d56e179fc5a394017b87"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa414d6a8f90ee54b6f4738cc61a3a763e8e8041","unresolved":false,"context_lines":[{"line_number":35,"context_line":"NICs are connected to a VLAN (and eventually a VNI) to place nodes on virtual"},{"line_number":36,"context_line":"networks."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Network attachments thus become a representaion of virtual networks in Ironic."},{"line_number":39,"context_line":"It is expected that several ports or port groups use the same network"},{"line_number":40,"context_line":"attachment to connect to the same L2 network on the same switch, although it\u0027s"},{"line_number":41,"context_line":"not a hard requirement, and operators may choose to create a network attachment"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0b93b9d4_e27c9956","line":38,"range":{"start_line":38,"start_character":34,"end_line":38,"end_character":48},"in_reply_to":"3883dc56_604d7a45","updated":"2026-07-15 16:26:02.000000000","message":"Done","commit_id":"c2fbc67419da027cd2e8d56e179fc5a394017b87"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"cd9df0a018003ae4c64fb463f52929ccd938cb28","unresolved":true,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"As part of this change, the already existing configuration and ``driver_info``"},{"line_number":99,"context_line":"options ``provisioning_network``, ``cleaning_network``, etc will accept a"},{"line_number":100,"context_line":"network attachment UUID. This network attachment must exists at the same of the"},{"line_number":101,"context_line":"interface validation and must have an empty ``owner`` (i.e. created by a system"},{"line_number":102,"context_line":"administrator)."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"0062a376_62488f70","line":100,"updated":"2026-07-14 16:18:53.000000000","message":"s/same/time ?","commit_id":"c2fbc67419da027cd2e8d56e179fc5a394017b87"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fa414d6a8f90ee54b6f4738cc61a3a763e8e8041","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"As part of this change, the already existing configuration and ``driver_info``"},{"line_number":99,"context_line":"options ``provisioning_network``, ``cleaning_network``, etc will accept a"},{"line_number":100,"context_line":"network attachment UUID. This network attachment must exists at the same of the"},{"line_number":101,"context_line":"interface validation and must have an empty ``owner`` (i.e. created by a system"},{"line_number":102,"context_line":"administrator)."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"de48665e_7350939b","line":100,"in_reply_to":"0062a376_62488f70","updated":"2026-07-15 16:26:02.000000000","message":"Done","commit_id":"c2fbc67419da027cd2e8d56e179fc5a394017b87"},{"author":{"_account_id":25437,"name":"Allain Legacy","email":"alegacy@redhat.com","username":"alegacy"},"change_message_id":"cd9df0a018003ae4c64fb463f52929ccd938cb28","unresolved":true,"context_lines":[{"line_number":98,"context_line":"As part of this change, the already existing configuration and ``driver_info``"},{"line_number":99,"context_line":"options ``provisioning_network``, ``cleaning_network``, etc will accept a"},{"line_number":100,"context_line":"network attachment UUID. This network attachment must exists at the same of the"},{"line_number":101,"context_line":"interface validation and must have an empty ``owner`` (i.e. created by a system"},{"line_number":102,"context_line":"administrator)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Limitations of network attachments"}],"source_content_type":"text/x-rst","patch_set":2,"id":"a7dc132a_5d9721c5","line":101,"range":{"start_line":101,"start_character":38,"end_line":101,"end_character":52},"updated":"2026-07-14 16:18:53.000000000","message":"not saying this is wrong, just don\u0027t understand why this has to be the case.","commit_id":"c2fbc67419da027cd2e8d56e179fc5a394017b87"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0114deb014653c13329d7dbfe995a93e522549c9","unresolved":true,"context_lines":[{"line_number":98,"context_line":"As part of this change, the already existing configuration and ``driver_info``"},{"line_number":99,"context_line":"options ``provisioning_network``, ``cleaning_network``, etc will accept a"},{"line_number":100,"context_line":"network attachment UUID. This network attachment must exists at the same of the"},{"line_number":101,"context_line":"interface validation and must have an empty ``owner`` (i.e. created by a system"},{"line_number":102,"context_line":"administrator)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Limitations of network attachments"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d26251ca_d9be632f","line":101,"range":{"start_line":101,"start_character":38,"end_line":101,"end_character":52},"in_reply_to":"a7dc132a_5d9721c5","updated":"2026-07-15 12:18:14.000000000","message":"I\u0027m being paranoid here and letting only the system admin to create network attachments that are used for these networks. This matches our Metal3 design, where the networks come from configuration.","commit_id":"c2fbc67419da027cd2e8d56e179fc5a394017b87"}]}
