)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bdd54c72d9219c2203ab2253a291960d006ad660","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"2343a8e2_72048a3f","updated":"2025-12-16 14:52:58.000000000","message":"1) `directions_tap_mirror`, in parameters.yamls need to be updated\n2) A new API extension needs a release note","commit_id":"0bf6bd9ec62181b58163dbc41f2631eca7c6964e"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"150e298ce2bbc94657c2d25ff9fd8452b9ee15b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"35a85b29_28e36fc6","in_reply_to":"2343a8e2_72048a3f","updated":"2025-12-16 16:14:40.000000000","message":"Done! Thanks for the reviews","commit_id":"0bf6bd9ec62181b58163dbc41f2631eca7c6964e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"df9608e736a7ec9d8aa484b6a01b0a6c9e316050","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2647b2cf_49328f0f","updated":"2025-12-16 22:34:06.000000000","message":"Ahhh is missing the addition of this new extension to `api.definitions.__init__`. Check, for example, https://review.opendev.org/c/openstack/neutron-lib/+/803051/9/neutron_lib/api/definitions/__init__.py","commit_id":"8470dd8e1f746c4a6d9093c55c274878fb1970f3"}],"neutron_lib/api/definitions/tap_mirror.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"b9e6c6f71a14a6fecbdc62ab21f1b5a239bf0d74","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    \u0027type:dict\u0027: {"},{"line_number":29,"context_line":"        \u0027IN\u0027: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":30,"context_line":"        \u0027OUT\u0027: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":31,"context_line":"        \u0027BOTH\u0027: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False}"},{"line_number":32,"context_line":"    }"},{"line_number":33,"context_line":"}"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"51e7865a_2f9cb248","line":31,"updated":"2025-12-08 08:54:21.000000000","message":"we need to add new api extension which will introduce that, so that this new feature can be discoverable","commit_id":"8677e12c08f746fbaa9ff65f0e4076967ce0c23f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"155395330522398bce680ba1dc7f67a54c3cbd64","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    \u0027type:dict\u0027: {"},{"line_number":29,"context_line":"        \u0027IN\u0027: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":30,"context_line":"        \u0027OUT\u0027: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":31,"context_line":"        \u0027BOTH\u0027: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False}"},{"line_number":32,"context_line":"    }"},{"line_number":33,"context_line":"}"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a83f6ad4_b59f4492","line":31,"in_reply_to":"51e7865a_2f9cb248","updated":"2025-12-09 08:17:50.000000000","message":"^^ +1. You need to create a new API extension, something like `tap_mirror_both_directions`. There are examples in the code of updated parameters:\n* https://review.opendev.org/c/openstack/neutron-lib/+/580387\n* https://review.opendev.org/c/openstack/neutron-lib/+/550920\n* https://review.opendev.org/c/openstack/neutron-lib/+/927820","commit_id":"8677e12c08f746fbaa9ff65f0e4076967ce0c23f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8fb85ed546703f98186d076012a23e2cc7c1363b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \u0027type:dict\u0027: {"},{"line_number":29,"context_line":"        \u0027IN\u0027: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":30,"context_line":"        \u0027OUT\u0027: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":31,"context_line":"        \u0027BOTH\u0027: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False}"},{"line_number":32,"context_line":"    }"},{"line_number":33,"context_line":"}"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6fe36e54_f634af22","line":31,"in_reply_to":"a83f6ad4_b59f4492","updated":"2025-12-17 14:19:04.000000000","message":"Done","commit_id":"8677e12c08f746fbaa9ff65f0e4076967ce0c23f"}],"neutron_lib/api/definitions/tap_mirror_both_direction.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bdd54c72d9219c2203ab2253a291960d006ad660","unresolved":true,"context_lines":[{"line_number":22,"context_line":"               \"for BOTH direction.\")"},{"line_number":23,"context_line":"UPDATED_TIMESTAMP \u003d \"2025-12-15T11:45:00-00:00\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"DIRECTION_SPEC \u003d {"},{"line_number":26,"context_line":"     \u0027type:dict\u0027: {"},{"line_number":27,"context_line":"        taas.DIRECTION_IN: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":28,"context_line":"        taas.DIRECTION_OUT: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":29,"context_line":"        taas.DIRECTION_BOTH: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":30,"context_line":"    }"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":34,"context_line":"    tap_mirror.COLLECTION_NAME: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"434cf632_55972bf3","line":31,"range":{"start_line":25,"start_character":0,"end_line":31,"end_character":1},"updated":"2025-12-16 14:52:58.000000000","message":"mini nit: because `DIRECTION_SPEC` is actually expanding `tap_mirror.DIRECTION_SPEC`, I would copy it and add the needed new fields:\n```\nDIRECTION_SPEC \u003d copy.deepcopy(tap_mirror.DIRECTION_SPEC)\nDIRECTION_SPEC[\u0027type:dict\u0027][taas.DIRECTION_BOTH] \u003d {\n    \u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False}\n\n```","commit_id":"0bf6bd9ec62181b58163dbc41f2631eca7c6964e"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"150e298ce2bbc94657c2d25ff9fd8452b9ee15b0","unresolved":false,"context_lines":[{"line_number":22,"context_line":"               \"for BOTH direction.\")"},{"line_number":23,"context_line":"UPDATED_TIMESTAMP \u003d \"2025-12-15T11:45:00-00:00\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"DIRECTION_SPEC \u003d {"},{"line_number":26,"context_line":"     \u0027type:dict\u0027: {"},{"line_number":27,"context_line":"        taas.DIRECTION_IN: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":28,"context_line":"        taas.DIRECTION_OUT: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":29,"context_line":"        taas.DIRECTION_BOTH: {\u0027type:integer\u0027: None, \u0027default\u0027: None, \u0027required\u0027: False},"},{"line_number":30,"context_line":"    }"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"RESOURCE_ATTRIBUTE_MAP \u003d {"},{"line_number":34,"context_line":"    tap_mirror.COLLECTION_NAME: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"ad3bc059_1788bfaf","line":31,"range":{"start_line":25,"start_character":0,"end_line":31,"end_character":1},"in_reply_to":"434cf632_55972bf3","updated":"2025-12-16 16:14:40.000000000","message":"Done","commit_id":"0bf6bd9ec62181b58163dbc41f2631eca7c6964e"}]}
