)]}'
{"id":"openstack%2Fovsdbapp~950742","triplet_id":"openstack%2Fovsdbapp~master~I56439ff1f4c19d5a015ac9d9cbaccf7a7922377a","project":"openstack/ovsdbapp","branch":"master","topic":"mirror-rules","attention_set":{},"removed_from_attention_set":{"16688":{"account":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"last_update":"2026-10-08 15:07:15.000000000","reason":"\u003cGERRIT_ACCOUNT_16688\u003e replied on the change","reason_account":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"}},"38024":{"account":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"last_update":"2026-10-13 15:00:41.000000000","reason":"Change was submitted"},"5756":{"account":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"last_update":"2026-10-13 13:49:22.000000000","reason":"\u003cGERRIT_ACCOUNT_5756\u003e replied on the change","reason_account":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"}},"32077":{"account":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"last_update":"2026-10-13 15:00:41.000000000","reason":"Change was submitted"},"8655":{"account":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"last_update":"2026-10-13 15:00:41.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I56439ff1f4c19d5a015ac9d9cbaccf7a7922377a","subject":"nb: add support for mirror-rules in mirrors","status":"MERGED","created":"2025-05-23 10:49:28.000000000","updated":"2026-10-13 15:02:06.000000000","submitted":"2026-10-13 15:00:41.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":31,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"950742-mirror-rules","meta_rev_id":"3d502f3e7a764945830232dc08a33827f180b36e","_number":950742,"virtual_id_number":950742,"owner":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},{"value":0,"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-10-13 15:00:40.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"all":[{"value":2,"date":"2026-10-08 15:07:15.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},{"value":2,"date":"2026-10-13 13:49:22.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"all":[{"value":0,"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},{"value":1,"date":"2026-10-13 13:49:22.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},{"value":0,"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"}],"reviewers":{"REVIEWER":[{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-05-23 11:48:19.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2025-05-26 09:43:02.000000000","updated_by":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"reviewer":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"state":"CC"},{"updated":"2025-06-11 10:08:35.000000000","updated_by":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"reviewer":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"state":"REVIEWER"},{"updated":"2025-06-11 10:08:35.000000000","updated_by":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"reviewer":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"state":"REVIEWER"},{"updated":"2025-08-04 10:41:16.000000000","updated_by":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"reviewer":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"state":"REMOVED"},{"updated":"2025-08-07 14:05:39.000000000","updated_by":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"reviewer":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"state":"CC"},{"updated":"2026-09-23 02:24:48.000000000","updated_by":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"reviewer":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"state":"CC"},{"updated":"2026-10-08 05:04:32.000000000","updated_by":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"reviewer":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"state":"REVIEWER"}],"messages":[{"id":"9f85d08648a8a129def5ff0d3f9cbe68e6b9c97c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"date":"2025-05-23 10:49:28.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"15ccc2c026a5e690740733ad8d0f120f5048ee96","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-05-23 11:48:19.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/fe21f64f77f24ad98a7f4834a0ec53de\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/75578ce7160e46ff8d9d88c68b27236b : SUCCESS in 3m 21s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/8b2487e204b04da0b6542b31eff48e52 : SUCCESS in 2m 36s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/b0a534d1fe9140cdab4ec3f8c65730f5 : SUCCESS in 2m 54s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/b4b276e3d4904cb190ad0c95906cddb1 : SUCCESS in 4m 40s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a3bc33ab2a7f4bbe820adaf909823644 : SUCCESS in 5m 14s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/ac22ce8457eb484f944814ee3e4cd471 : SUCCESS in 7m 00s\n- ovsdbapp-neutron-ovn-tempest-ovs-release https://zuul.opendev.org/t/openstack/build/4992883201024185a2e8c4b5627e3637 : SUCCESS in 58m 27s","accounts_in_message":[],"_revision_number":1},{"id":"3aa8619cf34f4811074c748d3f7261bb5fa7f920","author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"date":"2025-05-26 09:43:02.000000000","message":"Patch Set 1:\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"19295d1908f6df0408d3f7d8ea7fdc02e434b8e2","author":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"date":"2025-08-04 10:41:16.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"d45f9f47a7846e381283d8075fc063a68ec64542","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2025-08-04 14:54:45.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"00b9c337e61bf02193c49208fbc92b7c210ef033","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2025-08-04 15:36:10.000000000","message":"Patch Set 1:\n\n(4 comments)","accounts_in_message":[],"_revision_number":1},{"id":"3c141189eaca9f46a1031242b9fc82b1094115c0","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2025-08-04 15:36:50.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"cf2f16f661eb2979c05e0fa21d0cbe7fc47a7357","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"date":"2025-08-07 09:57:23.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":2},{"id":"963c05d499e46554d2f8e3fad73343516db5485b","author":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"date":"2025-08-07 10:29:40.000000000","message":"Patch Set 2:\n\n(4 comments)","accounts_in_message":[],"_revision_number":2},{"id":"47ded4c8c76c6cea641b3dd2c74752548207be7c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-08-07 11:47:54.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2d4c2c99d47240bcab2da7acbc6ecbaa\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/77938325802c44fa9ab7fd216efeb87b : SUCCESS in 4m 43s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/267177b1171a4a819c48b2b3bde16c73 : SUCCESS in 2m 57s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/92ba4425762a424dbd6babf8172415e7 : SUCCESS in 3m 32s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/7e2605e83e9c445ab777ca33cff60937 : SUCCESS in 6m 12s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/93c08506134c4e0fba88e8660a295800 : SUCCESS in 7m 40s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/c78272697f284688afff25e90f70d6bf : SUCCESS in 6m 14s\n- ovsdbapp-neutron-ovn-tempest-ovs-release https://zuul.opendev.org/t/openstack/build/3c9ee6c8a81c4232b5a68ae8265f1f15 : SUCCESS in 1h 42m 20s","accounts_in_message":[],"_revision_number":2},{"id":"736fb009deeac1d27e66f8aa9ce7b2c2b5e6c7c8","author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"date":"2025-08-07 12:13:11.000000000","message":"Patch Set 2: Code-Review-1\n\n(2 comments)","accounts_in_message":[],"_revision_number":2},{"id":"17982c3995f45851acdd8138d0682a2b59ab02b0","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2025-12-23 20:32:27.000000000","message":"Patch Set 2: Code-Review-1\n\n(2 comments)","accounts_in_message":[],"_revision_number":2},{"id":"6f2d8997c8019decf7a072c3b1b27b7430676924","author":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"date":"2026-09-23 02:24:48.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"9e505dc3e18c39dcbe684a0cc282926b28a1d2ad","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"date":"2026-10-07 10:20:37.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"8569c78c3413d0311bd81414d15b6718412dda63","author":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"date":"2026-10-07 10:21:58.000000000","message":"Patch Set 2:\n\n(3 comments)","accounts_in_message":[],"_revision_number":2},{"id":"8d02e231d57580aac94d0d1340df12954e41d258","author":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"date":"2026-10-07 10:22:38.000000000","message":"Patch Set 3:\n\nPatch set 3: rebased on current master and addresses the open PS2 comments, as announced in my comment of Sep 23 (no reply from the author within the two weeks). Alexander remains the author; happy to hand it back at any time.\n\nChanges vs PS2:\n- MirrorAddCommand: lport mirror type (sink is a logical switch port); with may_exist\u003dTrue the mirror_rules column is no longer touched, rules are managed only by MirrorRuleAdd/Del (Terry, Rodolfo)\n- lport mirrors and the Mirror_Rule commands check at runtime that the NB schema has Mirror.mirror_rules and raise a clear error on older OVN; gre/erspan/local keep working (Rodolfo, Terry)\n- priority 0 rule fix, api.py docstrings, release note rewritten\n- functional tests: lport add, may_exist keeps rules, rule add/del, skipped when the schema has no Mirror_Rule\n\nConsumers: Neutron RFEs https://bugs.launchpad.net/neutron/+bug/2168007 (lport tap mirrors) and https://bugs.launchpad.net/neutron/+bug/2168008 (mirror rules), both approved at the Oct 2 drivers meeting; the tap-as-a-service changes depend on this one.","accounts_in_message":[],"_revision_number":3},{"id":"668f6319695912b2703fa258051144c143ba3ac0","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-07 11:42:39.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/11d39cb990e14f3eb592a62c81b05c0a\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f1143cb5bf884e578c2cfa013beadc78 : SUCCESS in 3m 46s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/4ec02c3246e841e5a4e6a44c0644ef45 : SUCCESS in 3m 31s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/c88f1efb8eb24947903ad482c67a6047 : SUCCESS in 6m 05s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/05efa7f0869c484db5ff5847c61e2789 : SUCCESS in 7m 00s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/2c2874e5d955435690afd8af36f6733a : SUCCESS in 5m 34s\n- ovsdbapp-neutron-ovn-tempest-ovs-release https://zuul.opendev.org/t/openstack/build/b2c781b9caa54edbb7b7a348cfeb00fc : SUCCESS in 36m 46s\n- neutron-functional https://zuul.opendev.org/t/openstack/build/dcb90f95192745649ed0525e579e5147 : SUCCESS in 49m 21s","accounts_in_message":[],"_revision_number":3},{"id":"f06b7fea317b16082f755a300d38b6b916feb144","author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"date":"2026-10-08 12:44:53.000000000","message":"Patch Set 3: Code-Review-1\n\n(4 comments)","accounts_in_message":[],"_revision_number":3},{"id":"bb2f48f53be8ef927c0d7501b47616349716b438","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"date":"2026-10-08 14:49:20.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"6519ba3f0b996d2737bff663790a7d09a4e7337b","author":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"date":"2026-10-08 14:49:46.000000000","message":"Patch Set 3:\n\n(4 comments)","accounts_in_message":[],"_revision_number":3},{"id":"c647e4b823e59aae212a266c1d56bdc3bd839bc6","author":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"date":"2026-10-08 14:49:48.000000000","message":"Patch Set 4:\n\nPatch set 4 addresses the PS3 comments: commit message wrapped at 72 columns and the patch set history removed; MirrorAddCommand reuses _check_mirror_rules_supported for the lport type; a missing parent Mirror is reported as RuntimeError by the mirror rule commands (and by LspAttachMirror/LspDetachMirror, which now report whether the LSP or the Mirror is missing). API docstrings adjusted (may_exist compares priority, match and action, like ovn-nbctl; if_exists also covers a missing mirror). Functional tests added for the missing mirror cases.","accounts_in_message":[],"_revision_number":4},{"id":"17c48d76d4a75344873e0aad2bbab0d300303b63","author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"date":"2026-10-08 15:07:15.000000000","message":"Patch Set 4: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"ba3e62a4bfa3178ba564d7ac6dc67832e09cf82f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-08 17:00:32.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6b2ffa9511a24b02a002fb3a6b1a659e\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/dc7f0bf1ecf34416a2450bec1ef793d3 : SUCCESS in 3m 56s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/c3bb4181a81f4650b657212822d5b701 : SUCCESS in 3m 59s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f4ca16fa6e5f4a13a9448578fe9f0069 : SUCCESS in 4m 47s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/276f24c3baa746cc817fef640a9e6629 : SUCCESS in 7m 02s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/57b9816b50f145388c730c2be42561d8 : SUCCESS in 7m 13s\n- ovsdbapp-neutron-ovn-tempest-ovs-release https://zuul.opendev.org/t/openstack/build/095e6da639e742119f738b1a6bd634fa : SUCCESS in 52m 31s\n- neutron-functional https://zuul.opendev.org/t/openstack/build/c0339a02cd1c45ada413da4ed48c7c40 : SUCCESS in 46m 36s","accounts_in_message":[],"_revision_number":4},{"id":"56e1be2c30241b7fa6fc64dc9c569f3c295a59a3","author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"date":"2026-10-13 13:49:22.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"f7fb1b1e4034cbe2fb48bc1337d0d03c26459081","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-13 13:49:42.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":4},{"id":"ba695a6a7fc1c9cb94d79a1a4855e93006b7fe38","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-13 15:00:40.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/46d53cb3a32849cba63850bf0d102b6b\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/6ea2c1e41915456e8c5bfb6bd1edc0ad : SUCCESS in 3m 32s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/eaacac20b6254d7e8aaa0326d3479815 : SUCCESS in 3m 33s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/7417f6b4deff455eaded3565e142925d : SUCCESS in 5m 55s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5ed4675bce6e4ea3bd8f214e83ed3acd : SUCCESS in 7m 30s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/2de39a4e71524763a73b071646f69b3d : SUCCESS in 7m 15s\n- ovsdbapp-neutron-ovn-tempest-ovs-release https://zuul.opendev.org/t/openstack/build/f784fc48ff994633818094937adee8a2 : SUCCESS in 1h 10m 30s","accounts_in_message":[],"_revision_number":4},{"id":"0b1e9d659eea1ad7fb33390a74102413981d382f","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-13 15:00:41.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":4},{"id":"3d502f3e7a764945830232dc08a33827f180b36e","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-13 15:02:06.000000000","message":"Patch Set 4:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2f633e98ab3947f3bc4c39b8c304492d\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e2861d2af8574c3d8f32eef0b64760d0 : SUCCESS in 44s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"fbeb0a5431610e5e1953d98442b305ce5c4677ab","revisions":{"bf52b1d7f9ab32660fdf66fed660afae8efcc6f2":{"kind":"REWORK","_number":1,"created":"2025-05-23 10:49:28.000000000","uploader":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"ref":"refs/changes/42/950742/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ovsdbapp","ref":"refs/changes/42/950742/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/1"}}},"commit":{"parents":[{"commit":"e18261565f4220e2fedd5ec32acca35fb62833bd","subject":"Merge \"Replace UPPER_CONSTRAINTS_FILE\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/e18261565f4220e2fedd5ec32acca35fb62833bd"}]}],"author":{"name":"Gnatyuk Alexander","email":"agnatyuk@k2.cloud","date":"2025-05-22 16:11:12.000000000","tz":180},"committer":{"name":"Gnatyuk Alexander","email":"agnatyuk@k2.cloud","date":"2025-05-23 10:48:06.000000000","tz":180},"subject":"nb: add support for mirror-rules in mirrors","message":"nb: add support for mirror-rules in mirrors\n\nOVN has added new Mirror type - \u0027lport\u0027 and new entities - mirror rules\nThis change adds support for this feature.\n\nChanges include:\n1. MirrorAddCommand - to support new mirror type\n2. LspAttachMirror - to fix addition of mirror to LSP\n3. LspDetachMirror - to fix deletion of mirror from LSP\n4. MirrorRuleAddCommand - to create mirror rules\n5. MirrorRuleDelCommand - to delete mirror rules\n\nSee this commit for more information:\nhttps://github.com/ovn-org/ovn/commit/3dd8f36b85b3e648bc506839aa62e81b21c41e30\n\nCloses-Bug: #2111518\n\nChange-Id: I56439ff1f4c19d5a015ac9d9cbaccf7a7922377a\nSigned-off-by: Gnatyuk Alexander \u003cagnatyuk@k2.cloud\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/bf52b1d7f9ab32660fdf66fed660afae8efcc6f2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/bf52b1d7f9ab32660fdf66fed660afae8efcc6f2"}]},"branch":"refs/heads/master"},"dfa5343162ab3446e8471e72f751b9ce71711b3c":{"kind":"REWORK","_number":2,"created":"2025-08-07 09:57:23.000000000","uploader":{"_account_id":38024,"name":"Alexander Gnatyuk","display_name":"Alexander Gnatyuk","email":"agnatyuk@k2.cloud","username":"agnatyuk"},"ref":"refs/changes/42/950742/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ovsdbapp","ref":"refs/changes/42/950742/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/2"}}},"commit":{"parents":[{"commit":"085ee75dee277839c04e54535d06263aebfed776","subject":"Merge \"nb: add support for chains in logical router policies\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/085ee75dee277839c04e54535d06263aebfed776"}]}],"author":{"name":"Gnatyuk Alexander","email":"agnatyuk@k2.cloud","date":"2025-05-22 16:11:12.000000000","tz":180},"committer":{"name":"Gnatyuk Alexander","email":"agnatyuk@k2.cloud","date":"2025-08-07 09:55:43.000000000","tz":180},"subject":"nb: add support for mirror-rules in mirrors","message":"nb: add support for mirror-rules in mirrors\n\nOVN has added new Mirror type - \u0027lport\u0027 and new entities - mirror rules\nThis change adds support for this feature.\n\nChanges include:\n1. MirrorAddCommand - to support new mirror type\n2. LspAttachMirror - to fix addition of mirror to LSP\n3. LspDetachMirror - to fix deletion of mirror from LSP\n4. MirrorRuleAddCommand - to create mirror rules\n5. MirrorRuleDelCommand - to delete mirror rules\n\nSee this commit for more information:\nhttps://github.com/ovn-org/ovn/commit/3dd8f36b85b3e648bc506839aa62e81b21c41e30\n\nCloses-Bug: #2111518\n\nChange-Id: I56439ff1f4c19d5a015ac9d9cbaccf7a7922377a\nSigned-off-by: Gnatyuk Alexander \u003cagnatyuk@k2.cloud\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/dfa5343162ab3446e8471e72f751b9ce71711b3c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/dfa5343162ab3446e8471e72f751b9ce71711b3c"}]},"branch":"refs/heads/master"},"bc73998750949d459edcf266f1fb7bbf074a48a5":{"kind":"REWORK","_number":3,"created":"2026-10-07 10:20:37.000000000","uploader":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"ref":"refs/changes/42/950742/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ovsdbapp","ref":"refs/changes/42/950742/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/3"}}},"commit":{"parents":[{"commit":"8901cfd5f0235af231c00d880740877e4bfe2ef2","subject":"Merge \"ovn-sb: Set default ``hostname`` in ``chassis_add``\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/8901cfd5f0235af231c00d880740877e4bfe2ef2"}]}],"author":{"name":"Gnatyuk Alexander","email":"agnatyuk@k2.cloud","date":"2025-05-22 16:11:12.000000000","tz":180},"committer":{"name":"Chanyeol Yoon","email":"ycy1766@gmail.com","date":"2026-10-07 10:16:35.000000000","tz":540},"subject":"nb: add support for mirror-rules in mirrors","message":"nb: add support for mirror-rules in mirrors\n\nAdd support for the \"lport\" mirror type and the Mirror_Rule entities\nintroduced in OVN 25.09 [1]:\n\n1. MirrorAddCommand: accept the lport type.\n2. LspAttachMirror / LspDetachMirror: fix adding/removing mirrors on an LSP.\n3. MirrorRuleAddCommand / MirrorRuleDelCommand: create and delete mirror\n   rules.\n\nChanges since PS2, following the review:\n\n* MirrorAddCommand no longer sets ``mirror_rules`` unconditionally, so\n  calling ``mirror_add`` with ``may_exist\u003dTrue`` on an existing mirror\n  keeps its rules. Rules are managed only through the mirror rule\n  commands, mirroring the ovn-nbctl split.\n* The lport mirror and mirror rule commands check at runtime that the\n  connected Northbound schema has ``Mirror.mirror_rules`` and raise\n  ``RuntimeError`` otherwise, so the library keeps working with older\n  OVN releases; the existing mirror types are unaffected.\n* ``mirror_rule_del`` accepts the valid priority 0.\n* Functional tests skip when the schema has no mirror rule support and\n  cover the ``may_exist`` and priority 0 cases.\n\n[1] https://github.com/ovn-org/ovn/commit/3dd8f36b85b3e648bc506839aa62e81b21c41e30\n\nCloses-Bug: #2111518\nCo-Authored-By: Chanyeol Yoon \u003cycy1766@gmail.com\u003e\nChange-Id: I56439ff1f4c19d5a015ac9d9cbaccf7a7922377a\nSigned-off-by: Gnatyuk Alexander \u003cagnatyuk@k2.cloud\u003e\nSigned-off-by: Chanyeol Yoon \u003cycy1766@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/bc73998750949d459edcf266f1fb7bbf074a48a5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/bc73998750949d459edcf266f1fb7bbf074a48a5"}]},"branch":"refs/heads/master"},"fbeb0a5431610e5e1953d98442b305ce5c4677ab":{"kind":"REWORK","_number":4,"created":"2026-10-08 14:49:20.000000000","uploader":{"_account_id":32077,"name":"chanyeol yoon","display_name":"chanyeol","email":"ycy1766@gmail.com","username":"ycy1766","status":"ktcloud cloud engineer "},"ref":"refs/changes/42/950742/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ovsdbapp","ref":"refs/changes/42/950742/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ovsdbapp refs/changes/42/950742/4"}}},"commit":{"parents":[{"commit":"8901cfd5f0235af231c00d880740877e4bfe2ef2","subject":"Merge \"ovn-sb: Set default ``hostname`` in ``chassis_add``\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/8901cfd5f0235af231c00d880740877e4bfe2ef2"}]}],"author":{"name":"Gnatyuk Alexander","email":"agnatyuk@k2.cloud","date":"2025-05-22 16:11:12.000000000","tz":180},"committer":{"name":"Chanyeol Yoon","email":"ycy1766@gmail.com","date":"2026-10-08 13:34:06.000000000","tz":540},"subject":"nb: add support for mirror-rules in mirrors","message":"nb: add support for mirror-rules in mirrors\n\nAdd support for the \"lport\" mirror type and the Mirror_Rule table\nintroduced in OVN 25.09 [1]:\n\n* MirrorAddCommand accepts the lport type. With may_exist\u003dTrue an\n  existing mirror keeps its rules: rules are managed only through the\n  mirror rule commands, as ovn-nbctl does.\n* LspAttachMirror / LspDetachMirror: fix adding and removing a mirror\n  on a logical switch port.\n* MirrorRuleAddCommand / MirrorRuleDelCommand create and delete mirror\n  rules (priority, match, action), including priority 0.\n\nThe lport type and the mirror rule commands check at runtime that the\nconnected Northbound schema has Mirror.mirror_rules and raise\nRuntimeError otherwise, so the library keeps working with older OVN\nreleases; the existing mirror types are unaffected. The functional\ntests skip when the schema has no mirror rule support.\n\n[1] https://github.com/ovn-org/ovn/commit/3dd8f36b85b3e648bc506839aa62e81b21c41e30\n\nCloses-Bug: #2111518\nCo-Authored-By: Chanyeol Yoon \u003cycy1766@gmail.com\u003e\nChange-Id: I56439ff1f4c19d5a015ac9d9cbaccf7a7922377a\nSigned-off-by: Gnatyuk Alexander \u003cagnatyuk@k2.cloud\u003e\nSigned-off-by: Chanyeol Yoon \u003cycy1766@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/fbeb0a5431610e5e1953d98442b305ce5c4677ab"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ovsdbapp/commit/fbeb0a5431610e5e1953d98442b305ce5c4677ab"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"}},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review priority","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"-label:Review-Priority\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":[],"failing_atoms":["label:Review-Priority\u003dMIN"],"atom_explanations":{"label:Review-Priority\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
