)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[{"line_number":10,"context_line":"\u0027baremetal\u0027 to function correctly. However Nova always creates ports of"},{"line_number":11,"context_line":"VNIC_TYPE \u0027normal\u0027 due to not supplying this field. The result is that"},{"line_number":12,"context_line":"Ironic itself has to edit the VNIC_TYPE on the port when Nova calls"},{"line_number":13,"context_line":"Ironic. This change leads to spurious warnings in both Nova and Neutron"},{"line_number":14,"context_line":"about the type changing. So instead add a helper method to ComputeDriver"},{"line_number":15,"context_line":"allowing the driver to specify the VNIC_TYPE that should be used."},{"line_number":16,"context_line":"Implement it only for the Ironic driver so that all other drivers retain"},{"line_number":17,"context_line":"the same behavior. This could be useful in the libvirt driver in the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1338058e_7dd3238f","line":14,"range":{"start_line":13,"start_character":8,"end_line":14,"end_character":24},"updated":"2026-03-25 19:34:41.000000000","message":"they are emitted today becasue nova and neutron do not offically supprot changign the vnic type on a port with device_id set\n\nso it not `spurious` but in this very specific case it benine which iw why we did not make it fatal when we fixed https://bugs.launchpad.net/ossa/+bug/1981813 in the ironic case.\n\n\nits a misconception to think that that is techinly alllwoed when the prot is unbond (binding:host_id is None) when a port is logcially attached to a nova isntnace (device_id set to a non empty value)","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[{"line_number":14,"context_line":"about the type changing. So instead add a helper method to ComputeDriver"},{"line_number":15,"context_line":"allowing the driver to specify the VNIC_TYPE that should be used."},{"line_number":16,"context_line":"Implement it only for the Ironic driver so that all other drivers retain"},{"line_number":17,"context_line":"the same behavior. This could be useful in the libvirt driver in the"},{"line_number":18,"context_line":"future to query the hypervisor to potentially create \u0027direct\u0027 ports when"},{"line_number":19,"context_line":"appropriate for example."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Assisted-by: Claude Code 2.0"},{"line_number":22,"context_line":"Change-Id: I33938006d7fb2b07186c64f85b1ad86b70875c61"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7486c8df_06357ceb","line":19,"range":{"start_line":17,"start_character":19,"end_line":19,"end_character":23},"updated":"2026-03-25 19:34:41.000000000","message":"we shoudl remvoe this\nthat expand the scope fo this to soemthing we agreed not to do in the past edxplcity as part of supproting sriov port so it underminds the case for this by widning the scope to potical usecases you dont need for your feature.\n\nthe virt driver interface change does enable that but it was intentionally not supported.\n\nhttps://github.com/openstack/nova-specs/blob/master/specs/juno/implemented/pci-passthrough-sriov.rst#requested_networks-nics\n\nwhen ironic networking support was started 3 releases later a different approch was taken for ironic codifyign an inhreit racy operation that really should not have been allowed.\n\nthis chagne is resovling that race.","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[{"line_number":17,"context_line":"the same behavior. This could be useful in the libvirt driver in the"},{"line_number":18,"context_line":"future to query the hypervisor to potentially create \u0027direct\u0027 ports when"},{"line_number":19,"context_line":"appropriate for example."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Assisted-by: Claude Code 2.0"},{"line_number":22,"context_line":"Change-Id: I33938006d7fb2b07186c64f85b1ad86b70875c61"},{"line_number":23,"context_line":"Signed-off-by: Doug Goldstein \u003ccardoe@cardoe.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"0eae578c_bded07e6","line":20,"updated":"2026-03-25 19:34:41.000000000","message":"lets create a blueprint for this and present it at a nova irc meeting to see if other agree this could be specless.","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"}],"/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":"d568a9de74628dfd0797ea11bf3cfd518568575d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"14cada89_7be687ea","updated":"2026-03-07 16:06:43.000000000","message":"Makes a ton of sense to me to address the logging, and would get me out of the occasional discussion of someone complaining about the spurious log entries and going for the pre-created port workflow as a result.","commit_id":"a3ef9bac94b078e611438236640ffc109deaf882"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"880c08ff_52043eff","updated":"2026-03-25 19:34:41.000000000","message":"+1 for now as this need wider agreement but i could see making this change in principal to improve ironic support","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"ffe8c1ba328ff3a87288bc0107cda46de797b761","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"480e9304_05455990","updated":"2026-03-25 17:30:44.000000000","message":"This fixes: https://bugs.launchpad.net/nova/+bug/2076265 but I don\u0027t wanna make that comment which will rerun tests.","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"627e6be8_77070488","in_reply_to":"480e9304_05455990","updated":"2026-03-25 19:34:41.000000000","message":"yes but its really a feature not a bug so this woudl need a sepcless bluepritn apporved to proceed\n\n\ni think this could be a viable approch but im not sure if we can or shoudl avoid the virt driver api chagne.\n\nim thinkign if we can/shoudl keep it as you proposed or if i t would be better to jsut ahve a class level constant for the vnic type on teh triver or a compute capability triati or simialr.\n\ni.e. i think it could be useful as  followup to have compute driver reprot aset of standard traits for the vnic types they supproted for filterign ectra but that is some thign that can alwasy be added later.\n\n\nthis avoid the prior probelm fo https://review.opendev.org/c/openstack/nova-specs/+/672400/3 by not makign it api driven with the downside that this\ncurrent approch only impvoev the ironic case rather then also neutorn ports.\n\nsince this is focused on impoving the ironic nova integration i think its justifed to excpoded the broader problem statement.\n\n\nthe lack of virtdriver depenend vif types is precisly why \nhttps://static.opendev.org/docs/ironic/2025.2/admin/networking.html#vif-attachment-flow recomend taht neutron ports are precreted when  using ironic today.\n\nso this is a know gap but not an unfixable one.its just not a bug form a nova perspective.\n\nbut lest see if we can get concenous to move this forward as a specless blueprint.","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"}],"nova/network/neutron.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[{"line_number":475,"context_line":"        network_id,"},{"line_number":476,"context_line":"        fixed_ip\u003dNone,"},{"line_number":477,"context_line":"        security_group_ids\u003dNone,"},{"line_number":478,"context_line":"        vnic_type\u003dNone,"},{"line_number":479,"context_line":"    ):"},{"line_number":480,"context_line":"        \"\"\"Attempts to create a port for the instance on the given network."},{"line_number":481,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1c034052_8196aab2","line":478,"range":{"start_line":478,"start_character":22,"end_line":478,"end_character":23},"updated":"2026-03-25 19:34:41.000000000","message":"nit: we normally avoid the trailing comman to prevent this","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[{"line_number":497,"context_line":"        \"\"\""},{"line_number":498,"context_line":"        # Set the device_id so it\u0027s clear who this port was created for,"},{"line_number":499,"context_line":"        # and to stop other instances trying to use it"},{"line_number":500,"context_line":"        port_req_body \u003d {\u0027port\u0027: {\u0027device_id\u0027: instance.uuid}}"},{"line_number":501,"context_line":"        try:"},{"line_number":502,"context_line":"            if fixed_ip:"},{"line_number":503,"context_line":"                port_req_body[\u0027port\u0027][\u0027fixed_ips\u0027] \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"ea8f3e36_4251fef0","line":500,"range":{"start_line":500,"start_character":5,"end_line":500,"end_character":62},"updated":"2026-03-25 19:34:41.000000000","message":"so jsut to renfoce what i iluded too in the release note\n\nocne the device id is set on a port its condier attahce to a nove isntance and its vnic_type adn port bidning profile content shoudl nto change out of band of a nova api call.\n\n\nthis is why we issue the warning today as its not genericlly safe to change the vnic type if device_id is set to a nova instance.\n\nempirically it appears to be functional historically for the ironic boot flow\nbut this has always been strictly out side fo our support boundary even if it was not strictly broken.\n\nwe did have a denial of service CVE cause by this exact thing (chanign the vnic type of an attached port) prots are attech to a instance long before they are boudn to a host\n\nwe do not suprpot changing the vnic type on shelve offloated isntances either for example which is an other case wehre it could be chaned in nova after the device_id is set even when it not bound to a host.\n\nso +1 for actully bring the ironic flow in lien with our expections","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[{"line_number":1017,"context_line":"        nets,"},{"line_number":1018,"context_line":"        neutron,"},{"line_number":1019,"context_line":"        security_group_ids,"},{"line_number":1020,"context_line":"        vnic_type\u003dNone,"},{"line_number":1021,"context_line":"    ):"},{"line_number":1022,"context_line":"        \"\"\"Create port for network_requests that don\u0027t have a port_id"},{"line_number":1023,"context_line":""},{"line_number":1024,"context_line":"        :param context: The request context."}],"source_content_type":"text/x-python","patch_set":2,"id":"b0776486_f93ba1ce","line":1021,"range":{"start_line":1020,"start_character":22,"end_line":1021,"end_character":6},"updated":"2026-03-25 19:34:41.000000000","message":"nit: again if you did not add the trailign comman i twoudl not have been reflowed","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"}],"nova/virt/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[{"line_number":2026,"context_line":"    def get_vnic_type(self):"},{"line_number":2027,"context_line":"        \"\"\"Get the vnic_type used for Nova-created ports."},{"line_number":2028,"context_line":""},{"line_number":2029,"context_line":"        :returns: a binding:vnic_type string to set on auto-created ports,"},{"line_number":2030,"context_line":"            or None to leave the vnic_type unset (Neutron will use its"},{"line_number":2031,"context_line":"            default, which is \u0027normal\u0027)."},{"line_number":2032,"context_line":"        \"\"\""},{"line_number":2033,"context_line":"        return None"},{"line_number":2034,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"e6f2a518_5160648d","line":2031,"range":{"start_line":2029,"start_character":8,"end_line":2031,"end_character":40},"updated":"2026-03-25 19:34:41.000000000","message":"this default is actully chose by the neutron core plugin and you are correct that\nit is normal for the ml2 core plugin.\n\nbecause fo that it also more correct to default to None here so that the default remians up to neutron rhater then encodeign vnic_type\u003dnormal even if that is\nthe defautl in practice today.\n\nif neutron ever supprot settign the default vnic_type at the network/subnet level\n\na feature that was dicusssed a very very long time ago that would \"just work\" if we return None without future nova changes.","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"}],"releasenotes/notes/ironic-baremetal-vnic-type-port-creation-f49da09962e3f292.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When Nova auto-creates Neutron ports for instances using the Ironic virt"},{"line_number":5,"context_line":"    driver, it now correctly sets ``binding:vnic_type`` to ``baremetal`` on"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"87ab6364_d3beb585","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":5},"updated":"2026-03-25 19:34:41.000000000","message":"feature","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"00c80dac0bfc17325d1a761daf52c6621ecc1711","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When Nova auto-creates Neutron ports for instances using the Ironic virt"},{"line_number":5,"context_line":"    driver, it now correctly sets ``binding:vnic_type`` to ``baremetal`` on"},{"line_number":6,"context_line":"    those ports. Previously, Nova did not set ``binding:vnic_type`` when"},{"line_number":7,"context_line":"    auto-creating ports, so Neutron would default to ``normal``. Ironic then"},{"line_number":8,"context_line":"    updates the port\u0027s ``binding:vnic_type`` to ``baremetal`` itself as part"},{"line_number":9,"context_line":"    of its normal operation, which triggered spurious warning log messages in"},{"line_number":10,"context_line":"    Nova about an unexpected vnic_type change. Ports are now created with the"},{"line_number":11,"context_line":"    correct type from the start, eliminating those warnings."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"a5c8d3ea_d3b2a99c","line":11,"range":{"start_line":4,"start_character":4,"end_line":11,"end_character":60},"updated":"2026-03-25 19:34:41.000000000","message":"```suggestion\n   Nova now supports hypervisor-aware port creation. Prior to this release,\nNova exclusively did not set the vnic_type for ports it created in\nperformance to network or subnet requests so that the Neutron backend\ncould determine the appropriate values. This was originally an artifact\nof the Nova-network to Neutron migration where it was envisioned an SDN\ncontroller or Neutron itself would make an appropriate decision. In\nreality, this results in all Nova-created ports being created with\nvnic_type\u003dnormal, the Neutron default. This works for all virt drivers\nexcept for Ironic, which requires vnic_type\u003dbaremetal. Nova now supports\nsetting the default vnic type based on the virt driver. By default,\nthis is an opt-in behavior for virt drivers and only the Ironic driver\nuses it today. All other virt drivers will continue to create ports\nwithout specifying a vnic type. This resolved the impenitence mismatch between\nnovas expectation that port with device-id set to a nova instance UUID never have\nthere vnic type modified while that is set removing the warning that is currently\nlogged in the ironic both flow.\n```","commit_id":"5dd5216f17f1b4286b374cf1429f40d4c8515ef3"}]}
