)]}'
{"/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":"467df4fe947d892e91351bdbab5c5fc215876624","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8d5b4519_5d45cd6d","updated":"2023-11-14 17:40:29.000000000","message":"This actually looks on the right track to me. Fix the lint issues, plus one question inline.","commit_id":"1d6731cba6f0e5091e826d9b392fea4f82dd298c"},{"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":"b900d8d2768d4b3977431714a9e2db8cb8b8d184","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8e4b1fe2_194d9361","updated":"2023-11-18 01:35:52.000000000","message":"Please bump the API microversion https://opendev.org/openstack/ironic/src/branch/master/ironic/api/controllers/v1/versions.py#L220 and add a release note https://docs.openstack.org/ironic/newton/dev/faq.html#create-a-new-release-note describing the change and the added functionality.\n\nI don\u0027t believe we should need to guard any of the new functionality behind any version checks; we\u0027re only adding not changing anything, but it appears historically we\u0027ve changed the microversion when adding new items to the schema for local_link_connection.\n\nWe may want to ask Dmitry, as he works on rust-openstack, if that is OK -- I know adding things to JSON fields in the rust client can cause pain.","commit_id":"f252e2276f22df6c52dd9c3dab15ca7047832b91"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf1649d16026da29fd7e18ba6fecef6d9192237f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b7345841_3bf30a62","in_reply_to":"8e4b1fe2_194d9361","updated":"2023-12-04 10:53:30.000000000","message":"It won\u0027t cause issues for rust-openstack or gophercloud, but generally you\u0027re right: we should not treat adding new fields as unconditionally safe.\n\nWe absolutely should guard any new functionality behind a microversion btw, unless we dramatically change our stance on microversioning. Any microversion must stay unchanged for the lifetime of Ironic (things like continue_inspection are unfortunate exceptions because of the way they are). This is a question of discoverability more than compatibility.","commit_id":"f252e2276f22df6c52dd9c3dab15ca7047832b91"},{"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":"f3d911ff669af31e42de2150a577c576831dcca8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9f3aa62d_63c26e45","updated":"2023-11-20 17:51:15.000000000","message":"Please add a release note as requested on previous patchsets.","commit_id":"572b2a001dc681fe67d79b43bc0ba19286feb2d1"},{"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":"a31bf8504840ac3b6fa2b837430159badf106626","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"025d2dc4_c386f0db","updated":"2023-12-04 16:20:54.000000000","message":"Dmitry and I talked about this here: https://meetings.opendev.org/irclogs/%23openstack-ironic/%23openstack-ironic.2023-12-04.log.html#t2023-12-04T16:08:13\n\nWe need to:\n- only accept values matching the new schema if the microversion is high enough\n- only display values matching the new schema if the microversion is high enough (likely this would mean dropping all keys that we added on the way out?)","commit_id":"d1e1071ba7a778f49d580dac9747fb2be3eacd61"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dec8100391b74d5efc843faf5b654e39baf57ba7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d11d4614_7683bf18","updated":"2024-01-11 22:31:24.000000000","message":"Overall, LGTM. Two suggestions in line.","commit_id":"f459f2f935e28f6b2ebdcf4799f02ffacff59cf9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"576aa0522585aeb1bd58a7c9bdca8bc8a1387a34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"e97249d1_04165484","updated":"2024-02-05 11:14:27.000000000","message":"Looks okay, but please do follow-up on the issues inline.","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"de2dbe133f6d424eedc6a9760a01f93b03989ef7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"6894ddac_06fe51ab","updated":"2024-02-02 16:12:29.000000000","message":"boop, hey Dmitry, please take another look, specifically Jay\u0027s most recent comment. Thanks!","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"}],"api-ref/source/baremetal-api-v1-ports.inc":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d535eec0d07033592228e1c6073ff8b455eb3d5d","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":".. versionadded:: 1.90"},{"line_number":118,"context_line":"  ``local_link_connection`` fields now accepts a dictionary"},{"line_number":119,"context_line":"  of ``vtep-logical-switch``, ``vtep-physical-switch`` and ``port_id``"},{"line_number":120,"context_line":"  to identify ovn vtep switches."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Normal response code: 201"}],"source_content_type":"text/x-c++src","patch_set":13,"id":"57da2f88_ea966b01","line":119,"updated":"2024-01-24 13:36:56.000000000","message":"I feel bad about commenting so late, but could we use underscores instead of dashes for consistency with other fields?","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"576aa0522585aeb1bd58a7c9bdca8bc8a1387a34","unresolved":true,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":".. versionadded:: 1.90"},{"line_number":118,"context_line":"  ``local_link_connection`` fields now accepts a dictionary"},{"line_number":119,"context_line":"  of ``vtep-logical-switch``, ``vtep-physical-switch`` and ``port_id``"},{"line_number":120,"context_line":"  to identify ovn vtep switches."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Normal response code: 201"}],"source_content_type":"text/x-c++src","patch_set":13,"id":"dc15c7ed_04e38b49","line":119,"in_reply_to":"3bf095c9_8720ea36","updated":"2024-02-05 11:14:27.000000000","message":"Neutron, Y U LIKE THAT??\n\nHonestly, I would support versions with underscores as aliases so that at least OUR API is consistent. Can be done in a follow-up if you agree.","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"},{"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":"65e4442874cfc9b659eccd8876ddd9ccef94c7e7","unresolved":true,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":".. versionadded:: 1.90"},{"line_number":118,"context_line":"  ``local_link_connection`` fields now accepts a dictionary"},{"line_number":119,"context_line":"  of ``vtep-logical-switch``, ``vtep-physical-switch`` and ``port_id``"},{"line_number":120,"context_line":"  to identify ovn vtep switches."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Normal response code: 201"}],"source_content_type":"text/x-c++src","patch_set":13,"id":"872ef918_af6f1fea","line":119,"in_reply_to":"57da2f88_ea966b01","updated":"2024-01-24 16:29:19.000000000","message":"No, actually. Not unless we want to add code to mutate the keys instead of passing them unmodified in the Neutron binding profile. I think keeping our API consistent with the binding profile in Neutron, plus keeping the code simpler, is more important than multiple local_link_connection keys using inconsistent underscore and dash.","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"},{"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":"794510defc1f02492f4e4eafac6f231e4a6a79bf","unresolved":true,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":".. versionadded:: 1.90"},{"line_number":118,"context_line":"  ``local_link_connection`` fields now accepts a dictionary"},{"line_number":119,"context_line":"  of ``vtep-logical-switch``, ``vtep-physical-switch`` and ``port_id``"},{"line_number":120,"context_line":"  to identify ovn vtep switches."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Normal response code: 201"}],"source_content_type":"text/x-c++src","patch_set":13,"id":"3bf095c9_8720ea36","line":119,"in_reply_to":"872ef918_af6f1fea","updated":"2024-01-24 17:38:26.000000000","message":"https://github.com/openstack/neutron/blob/8cba9a2ee86cb3b65645674ef315c14cfb261143/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L327\n\nJust sourcing my claim that it\u0027s the actual key used in Neutron :)","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"}],"doc/source/admin/ovn-networking.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"576aa0522585aeb1bd58a7c9bdca8bc8a1387a34","unresolved":true,"context_lines":[{"line_number":153,"context_line":"VTEP Switch Support"},{"line_number":154,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Alpha-quality support was added to Ironic for OVN VTEP switches in API version"},{"line_number":157,"context_line":"1.90. When the keys ``vtep-logical-switch``, ``vtep-physical-switch``, and"},{"line_number":158,"context_line":"``port_id`` are set in ``port.local_link_connection``, Ironic will pass them on"},{"line_number":159,"context_line":"to Neutron to be included in the binding profile to enable OVN support."}],"source_content_type":"text/x-rst","patch_set":13,"id":"afb5c7dd_d2619225","line":156,"updated":"2024-02-05 11:14:27.000000000","message":"nit: Any documentation to link to? Maybe Neutron or OVN docs?","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6e594e95cf03c1471132360392a38f68d8f7d6a1","unresolved":true,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Alpha-quality support was added to Ironic for OVN VTEP switches in API version"},{"line_number":157,"context_line":"1.90. When the keys ``vtep-logical-switch``, ``vtep-physical-switch``, and"},{"line_number":158,"context_line":"``port_id`` are set in ``port.local_link_connection``, Ironic will pass them on"},{"line_number":159,"context_line":"to Neutron to be included in the binding profile to enable OVN support."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"There `are reports of this approach working \u003chttps://bugs.launchpad.net/ironic/+bug/2034953\u003e`_,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"cd6c6996_90b80b2d","line":158,"range":{"start_line":158,"start_character":25,"end_line":158,"end_character":30},"updated":"2024-01-23 19:58:13.000000000","message":"nit, this is the python object model, the field is exposed as just ``local_link_connection`` on the api of each port.","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"576aa0522585aeb1bd58a7c9bdca8bc8a1387a34","unresolved":true,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Alpha-quality support was added to Ironic for OVN VTEP switches in API version"},{"line_number":157,"context_line":"1.90. When the keys ``vtep-logical-switch``, ``vtep-physical-switch``, and"},{"line_number":158,"context_line":"``port_id`` are set in ``port.local_link_connection``, Ironic will pass them on"},{"line_number":159,"context_line":"to Neutron to be included in the binding profile to enable OVN support."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"There `are reports of this approach working \u003chttps://bugs.launchpad.net/ironic/+bug/2034953\u003e`_,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"61963ca6_af4f3ee0","line":158,"range":{"start_line":158,"start_character":25,"end_line":158,"end_character":30},"in_reply_to":"cd6c6996_90b80b2d","updated":"2024-02-05 11:14:27.000000000","message":"Let\u0027s add a CLI example.","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"}],"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":"dec8100391b74d5efc843faf5b654e39baf57ba7","unresolved":true,"context_lines":[{"line_number":15,"context_line":"     \"port_id\": \"exampleportid\","},{"line_number":16,"context_line":"     \"vtep-logical-switch\": \"examplelogicalswitch\","},{"line_number":17,"context_line":"     \"vtep-physical-switch\": \"examplephysicalswitch\""},{"line_number":18,"context_line":"   }"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"1.89 (Caracal)"},{"line_number":21,"context_line":"---------------------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"97225e0d_24af0b94","line":18,"updated":"2024-01-11 22:31:24.000000000","message":"Just thinking out loud here, it would be good if there was an example or something else in the overall documentation. That can also come later in some sort of follow-up patch.","commit_id":"f459f2f935e28f6b2ebdcf4799f02ffacff59cf9"},{"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":"8bc96bda34aa6d94d2230cc83df498487f755438","unresolved":true,"context_lines":[{"line_number":15,"context_line":"     \"port_id\": \"exampleportid\","},{"line_number":16,"context_line":"     \"vtep-logical-switch\": \"examplelogicalswitch\","},{"line_number":17,"context_line":"     \"vtep-physical-switch\": \"examplephysicalswitch\""},{"line_number":18,"context_line":"   }"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"1.89 (Caracal)"},{"line_number":21,"context_line":"---------------------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"2f169e4d_faf6da53","line":18,"in_reply_to":"97225e0d_24af0b94","updated":"2024-01-11 22:45:08.000000000","message":"Bluntly, I\u0027m really uncomfortable writing examples I\u0027m completely unable to test. It was my hope I could put this up and Austin from Juniper would volunteer to test it 😄","commit_id":"f459f2f935e28f6b2ebdcf4799f02ffacff59cf9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dec8100391b74d5efc843faf5b654e39baf57ba7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"     \"vtep-physical-switch\": \"examplephysicalswitch\""},{"line_number":18,"context_line":"   }"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"1.89 (Caracal)"},{"line_number":21,"context_line":"---------------------------------"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Adds support to attaching or detaching images from a node\u0027s virtual"},{"line_number":24,"context_line":"media using the ``/v1/nodes/{node_ident}/vmedia`` endpoint. A ``POST``"},{"line_number":25,"context_line":"request containing ``device_type``, ``image_url``,"},{"line_number":26,"context_line":"and ``image_download_source`` will attach the requested image to the"},{"line_number":27,"context_line":"node\u0027s virtual media. A later ``DELETE`` request to the same endpoint"},{"line_number":28,"context_line":"will detach it."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"1.88 (Bobcat)"},{"line_number":31,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba467466_f38304e3","line":28,"range":{"start_line":20,"start_character":0,"end_line":28,"end_character":15},"updated":"2024-01-11 22:31:24.000000000","message":"Thank you for adding this!","commit_id":"f459f2f935e28f6b2ebdcf4799f02ffacff59cf9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"576aa0522585aeb1bd58a7c9bdca8bc8a1387a34","unresolved":true,"context_lines":[{"line_number":6,"context_line":"-----------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"API supports ovn vtep switches as a valid schema for"},{"line_number":9,"context_line":"``port.local_link_connection``. Ovn vtep switches are represented"},{"line_number":10,"context_line":"as the following:"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":".. code-block:: json"}],"source_content_type":"text/x-rst","patch_set":13,"id":"036f3400_bd77ba70","line":9,"updated":"2024-02-05 11:14:27.000000000","message":"nit: OVN VTEP (on 2 lines)","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"}],"ironic/api/controllers/v1/port.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"576aa0522585aeb1bd58a7c9bdca8bc8a1387a34","unresolved":true,"context_lines":[{"line_number":127,"context_line":"            # set to empty. This is because api version clients in this branch"},{"line_number":128,"context_line":"            # expect the key port.local_link_connection to exist even if we"},{"line_number":129,"context_line":"            # cannot set a valid value"},{"line_number":130,"context_line":"            port[\u0027local_link_connection\u0027] \u003d {}"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def convert_with_links(rpc_port, fields\u003dNone, sanitize\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa41ecba_342095dd","line":130,"updated":"2024-02-05 11:14:27.000000000","message":"I\u0027ll use this code as an example the next time someone asks why I\u0027m so religiously against JSON fields.. You\u0027re not just removing the new fields, you\u0027re also removing the recognized ones. Which I sorta understand, but also it\u0027s wrong.","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"},{"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":"9bc2a63362fecf8a740c39f445883a75b27ca5ac","unresolved":true,"context_lines":[{"line_number":127,"context_line":"            # set to empty. This is because api version clients in this branch"},{"line_number":128,"context_line":"            # expect the key port.local_link_connection to exist even if we"},{"line_number":129,"context_line":"            # cannot set a valid value"},{"line_number":130,"context_line":"            port[\u0027local_link_connection\u0027] \u003d {}"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def convert_with_links(rpc_port, fields\u003dNone, sanitize\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":13,"id":"83fb639c_22e149ca","line":130,"in_reply_to":"fa41ecba_342095dd","updated":"2024-02-05 16:08:52.000000000","message":"I thought intently about this. I\u0027m fairly certain the correct thing to do if we have more fields than the API client can read is to return nothing: incomplete data may give a false impression of what\u0027s happening vs dropping the whole field if it\u0027s unsupported.\n\nEssentially I took the approach of: port.local_link_connection is a single object, even if it\u0027s a JSON field. If we can\u0027t display the whole object, display none of it. It seems especially wrong if we were to display results that didn\u0027t match schemas we support for push.","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"576aa0522585aeb1bd58a7c9bdca8bc8a1387a34","unresolved":true,"context_lines":[{"line_number":365,"context_line":"                    and \u0027network_type\u0027 in fields[\u0027local_link_connection\u0027]):"},{"line_number":366,"context_line":"                raise exception.NotAcceptable()"},{"line_number":367,"context_line":"            if (not api_utils.allow_ovn_vtep_version()"},{"line_number":368,"context_line":"                    and \u0027vtep-logical-switch\u0027"},{"line_number":369,"context_line":"                    in fields[\u0027local_link_connection\u0027]):"},{"line_number":370,"context_line":"                raise exception.NotAcceptable()"},{"line_number":371,"context_line":"        if (\u0027name\u0027 in fields"}],"source_content_type":"text/x-python","patch_set":13,"id":"372219c5_2d9a311f","line":368,"updated":"2024-02-05 11:14:27.000000000","message":"Why not check the physical-switch field?","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"}],"ironic/common/neutron.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":"467df4fe947d892e91351bdbab5c5fc215876624","unresolved":true,"context_lines":[{"line_number":324,"context_line":"            vtep_physical_switch \u003d portmap[ironic_port.uuid][\u0027switch_info\u0027][\u0027enum\u0027][1]"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"            binding_profile[\u0027vtep-logical-switch\u0027] \u003d vtep_logical_switch"},{"line_number":327,"context_line":"            binding_profile[\u0027vtep-physical-switch\u0027] \u003d vtep_physical_switch"},{"line_number":328,"context_line":"        "},{"line_number":329,"context_line":"        update_port_attrs[\u0027binding:profile\u0027] \u003d binding_profile"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fc79615e_d4c3b5ab","line":327,"updated":"2023-11-14 17:40:29.000000000","message":"Should we only do this if they are set to not-None? I wonder if we filter none values out later.","commit_id":"1d6731cba6f0e5091e826d9b392fea4f82dd298c"},{"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":"3915ae8e30f018a041e4a633f5eda6a6525edd62","unresolved":true,"context_lines":[{"line_number":324,"context_line":"            vtep_physical_switch \u003d portmap[ironic_port.uuid][\u0027switch_info\u0027][\u0027enum\u0027][1]"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"            binding_profile[\u0027vtep-logical-switch\u0027] \u003d vtep_logical_switch"},{"line_number":327,"context_line":"            binding_profile[\u0027vtep-physical-switch\u0027] \u003d vtep_physical_switch"},{"line_number":328,"context_line":"        "},{"line_number":329,"context_line":"        update_port_attrs[\u0027binding:profile\u0027] \u003d binding_profile"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f622e73_53a5139a","line":327,"in_reply_to":"fc79615e_d4c3b5ab","updated":"2023-11-14 17:43:17.000000000","message":"So two things here:\n\nLine 321 is not going to iterate like you expect; also the schema of that field won\u0027t look like you expect.\n\nI bet unit tests would give you insight on the shape of this data.","commit_id":"1d6731cba6f0e5091e826d9b392fea4f82dd298c"},{"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":"b900d8d2768d4b3977431714a9e2db8cb8b8d184","unresolved":true,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        # Determine if network type is OVN"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        if \"\":"},{"line_number":322,"context_line":"            info \u003d portmap[ironic_port.uuid][\u0027switch_type\u0027]"},{"line_number":323,"context_line":"            binding_profile[info] \u003d portmap[ironic_port.uuid][info]"},{"line_number":324,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"66d8e813_f9d208f0","line":321,"updated":"2023-11-18 01:35:52.000000000","message":"this looks incomplete?","commit_id":"f252e2276f22df6c52dd9c3dab15ca7047832b91"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"576aa0522585aeb1bd58a7c9bdca8bc8a1387a34","unresolved":true,"context_lines":[{"line_number":407,"context_line":"    elif isinstance(port_info, dict):"},{"line_number":408,"context_line":"        local_link_connection \u003d port_info[\u0027local_link_connection\u0027]"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    if all(k in local_link_connection.keys()"},{"line_number":411,"context_line":"           for k in [\u0027vtep-logical-switch\u0027, \u0027vtep-physical-switch\u0027]):"},{"line_number":412,"context_line":"        return True"},{"line_number":413,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"d25a6ba4_3a0fccbb","line":410,"updated":"2024-02-05 11:14:27.000000000","message":"nit\n\n return \u0027vtep-logical-switch\u0027 in local_link_connection and \u0027vtep-physical-switch\u0027 in local_link_connection\n \nActually, you can check only one of them since they are dependent","commit_id":"ed946c4d55cb647177c3f88498fc3442ced9a63c"}],"ironic/tests/unit/api/controllers/v1/test_utils.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":"b900d8d2768d4b3977431714a9e2db8cb8b8d184","unresolved":true,"context_lines":[{"line_number":1881,"context_line":"        value \u003d {\u0027port_id\u0027: \u002742\u0027,"},{"line_number":1882,"context_line":"                 \u0027vtep-logical-switch\u0027: \u0027jswitch\u0027,"},{"line_number":1883,"context_line":"                 \u0027vtep-physical-switch\u0027: \u0027jswitch\u0027,"},{"line_number":1884,"context_line":"                 \u0027switch_id\u0027: \u00270a:1b:2c:3d:4e:5f\u0027}"},{"line_number":1885,"context_line":"        self.assertEqual(value, v(\u0027l\u0027, value))"}],"source_content_type":"text/x-python","patch_set":5,"id":"a528c193_3260d38c","line":1884,"updated":"2023-11-18 01:35:52.000000000","message":"probably don\u0027t want to set switch_id on the positive test here, since it\u0027s not required in your schema?","commit_id":"f252e2276f22df6c52dd9c3dab15ca7047832b91"},{"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":"8bc96bda34aa6d94d2230cc83df498487f755438","unresolved":false,"context_lines":[{"line_number":1881,"context_line":"        value \u003d {\u0027port_id\u0027: \u002742\u0027,"},{"line_number":1882,"context_line":"                 \u0027vtep-logical-switch\u0027: \u0027jswitch\u0027,"},{"line_number":1883,"context_line":"                 \u0027vtep-physical-switch\u0027: \u0027jswitch\u0027,"},{"line_number":1884,"context_line":"                 \u0027switch_id\u0027: \u00270a:1b:2c:3d:4e:5f\u0027}"},{"line_number":1885,"context_line":"        self.assertEqual(value, v(\u0027l\u0027, value))"}],"source_content_type":"text/x-python","patch_set":5,"id":"b35fee32_f7aa605f","line":1884,"in_reply_to":"a528c193_3260d38c","updated":"2024-01-11 22:45:08.000000000","message":"Done","commit_id":"f252e2276f22df6c52dd9c3dab15ca7047832b91"},{"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":"f3d911ff669af31e42de2150a577c576831dcca8","unresolved":true,"context_lines":[{"line_number":1880,"context_line":"        v \u003d utils.LOCAL_LINK_VALIDATOR"},{"line_number":1881,"context_line":"        value \u003d {\u0027port_id\u0027: \u002742\u0027,"},{"line_number":1882,"context_line":"                 \u0027vtep-logical-switch\u0027: \u0027jswitch\u0027,"},{"line_number":1883,"context_line":"                 \u0027vtep-physical-switch\u0027: \u0027jswitch\u0027}"},{"line_number":1884,"context_line":"        self.assertEqual(value, v(\u0027l\u0027, value))"}],"source_content_type":"text/x-python","patch_set":7,"id":"8bc00ae7_bd1ec119","line":1883,"updated":"2023-11-20 17:51:15.000000000","message":"We probably want different values here for the good test; maybe lswitch/pswitch for logical/physical?","commit_id":"572b2a001dc681fe67d79b43bc0ba19286feb2d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dec8100391b74d5efc843faf5b654e39baf57ba7","unresolved":true,"context_lines":[{"line_number":1880,"context_line":"        v \u003d utils.LOCAL_LINK_VALIDATOR"},{"line_number":1881,"context_line":"        value \u003d {\u0027port_id\u0027: \u002742\u0027,"},{"line_number":1882,"context_line":"                 \u0027vtep-logical-switch\u0027: \u0027jswitch\u0027,"},{"line_number":1883,"context_line":"                 \u0027vtep-physical-switch\u0027: \u0027jswitch\u0027}"},{"line_number":1884,"context_line":"        self.assertEqual(value, v(\u0027l\u0027, value))"}],"source_content_type":"text/x-python","patch_set":7,"id":"9541ab65_3b0fbe6f","line":1883,"in_reply_to":"8bc00ae7_bd1ec119","updated":"2024-01-11 22:31:24.000000000","message":"+1","commit_id":"572b2a001dc681fe67d79b43bc0ba19286feb2d1"},{"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":"8bc96bda34aa6d94d2230cc83df498487f755438","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"        v \u003d utils.LOCAL_LINK_VALIDATOR"},{"line_number":1881,"context_line":"        value \u003d {\u0027port_id\u0027: \u002742\u0027,"},{"line_number":1882,"context_line":"                 \u0027vtep-logical-switch\u0027: \u0027jswitch\u0027,"},{"line_number":1883,"context_line":"                 \u0027vtep-physical-switch\u0027: \u0027jswitch\u0027}"},{"line_number":1884,"context_line":"        self.assertEqual(value, v(\u0027l\u0027, value))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ebf102f9_d04cd056","line":1883,"in_reply_to":"9541ab65_3b0fbe6f","updated":"2024-01-11 22:45:08.000000000","message":"Done","commit_id":"572b2a001dc681fe67d79b43bc0ba19286feb2d1"}]}
