)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"743c13e0cde17e26759fefc7c0200a4e62576eac","unresolved":true,"context_lines":[{"line_number":10,"context_line":"The RPC and other plugin parts will be in the next patch"},{"line_number":11,"context_line":"for the OVS driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"TODO:"},{"line_number":14,"context_line":"* Documentation"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Related-Bug: #2015471"},{"line_number":17,"context_line":"Change-Id: I9a38d9aedbfcec13636420de0b739277a1a8f691"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"0c1ffdb8_dc61cc4f","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":15},"updated":"2023-09-19 07:46:30.000000000","message":"I will push a patch on top of this series with the docs","commit_id":"6f1845b1c818a2ff3806ec65b33bf4e33bb35671"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"7778275d_1897ba94","updated":"2024-11-21 17:14:39.000000000","message":"Sorry it took so long to review this","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"edab09713242bae0e0ebf8fedef33b35a564e7de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"ae9cb3a3_0a37c3f0","updated":"2024-11-22 16:40:19.000000000","message":"I have to retest the whole thing but I have some issues with my local env so have to use parallely zuul as well (suppose it\u0027s just Friday anyway....)","commit_id":"07a3a18bce79197dae66914c4d2ff842e7690a57"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"aaa87c47474bede23a63c31fefe1565a038ece5f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"302a492a_46627906","updated":"2024-11-22 16:39:01.000000000","message":"thanks for the review","commit_id":"07a3a18bce79197dae66914c4d2ff842e7690a57"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1a9408bf5fa7b06e009863ea66a55c6a75d99cdc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"e898ad93_82b802dd","updated":"2024-12-02 16:01:21.000000000","message":"Thanks for the updates, just had one question otherwise looks good.","commit_id":"52f1ccabb573881046c09b246297f55a5cfdd16c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5fc43a4c1483c5877c19616d7919cb839a95226c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"d55cdc52_e3016c32","updated":"2024-12-04 09:44:36.000000000","message":"recheck\npylint \u0026 astroid issue?","commit_id":"9b1112116d37bbd3bb88dfccecf0e931e253532a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1d2d66d2ed2e407053df8c283142a17ac12d8397","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"24d93b17_a4dae651","updated":"2024-12-06 21:32:45.000000000","message":"I think you addressed all my comments, can mark them resolved","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"1876fb8dfe70e9de41787f08bf0060130564104f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"354566dc_c7a33947","updated":"2025-02-05 10:09:10.000000000","message":"looking forward for merge :)","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"e63c66da08b7fff2ed0c3639c0e34a71eee6a290","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"54b166b2_04eae18e","updated":"2025-02-05 10:10:16.000000000","message":"tested","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3921f20ba9e717a2a24ffe4f49bdde4d90f5c5db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"253a5344_f92341c9","updated":"2025-02-13 09:00:23.000000000","message":"Please check the comment about the context","commit_id":"9640102fe97bf162b60ed307abf555b32325bcb2"}],"neutron_taas/db/migration/alembic_migration/versions/2023.2/expand/f8f1f10ebaf9_mirroring_for_taas.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d37461fed36bd3f3edd275bafc4335b4a3a1a0dc","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":15,"id":"75688507_126f992a","line":1,"updated":"2024-07-02 17:15:38.000000000","message":"Is this the correct path for this expansion? Should it be in a 2024.2 directory now?","commit_id":"0224de5122d5dd56d601406d4383b143a9e66010"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bf0dc51b9425581a4e3b7ace0e53e6cd18398cf0","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":15,"id":"62a24a58_8315ffa9","line":1,"in_reply_to":"0b3cc5d5_048602a8","updated":"2024-10-01 20:41:38.000000000","message":"And now it\u0027s 2025.1 😞","commit_id":"0224de5122d5dd56d601406d4383b143a9e66010"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f94923673441dbb677cdb9dc4910cf8c669adb59","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":15,"id":"0fb3fa5b_7c07f089","line":1,"in_reply_to":"62a24a58_8315ffa9","updated":"2024-10-03 13:08:32.000000000","message":":-)","commit_id":"0224de5122d5dd56d601406d4383b143a9e66010"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"bf435c84678e347c01a82582f0a30459cc4220ff","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":15,"id":"0b3cc5d5_048602a8","line":1,"in_reply_to":"75688507_126f992a","updated":"2024-07-03 07:32:46.000000000","message":"Thanks, I always forget to move these thing to the correct folder","commit_id":"0224de5122d5dd56d601406d4383b143a9e66010"}],"neutron_taas/db/migration/alembic_migration/versions/2025.1/expand/f8f1f10ebaf9_mirroring_for_taas.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3921f20ba9e717a2a24ffe4f49bdde4d90f5c5db","unresolved":true,"context_lines":[{"line_number":34,"context_line":"    op.create_table("},{"line_number":35,"context_line":"        \u0027tap_mirrors\u0027,"},{"line_number":36,"context_line":"        sa.Column(\u0027id\u0027, sa.String(length\u003ddb_const.UUID_FIELD_SIZE),"},{"line_number":37,"context_line":"                  primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":38,"context_line":"        sa.Column(\u0027project_id\u0027, sa.String("},{"line_number":39,"context_line":"            length\u003ddb_const.PROJECT_ID_FIELD_SIZE), nullable\u003dTrue),"},{"line_number":40,"context_line":"        sa.Column(\u0027name\u0027, sa.String(length\u003ddb_const.NAME_FIELD_SIZE),"}],"source_content_type":"text/x-python","patch_set":25,"id":"55fa7ca4_395993e7","line":37,"range":{"start_line":37,"start_character":36,"end_line":37,"end_character":50},"updated":"2025-02-13 09:00:23.000000000","message":"nit: this is false by default if primary key","commit_id":"9640102fe97bf162b60ed307abf555b32325bcb2"}],"neutron_taas/db/tap_mirror_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":36,"context_line":"#  https://review.opendev.org/c/openstack/neutron-lib/+/895603 is"},{"line_number":37,"context_line":"# released."},{"line_number":38,"context_line":"class TapMirrorNotFound(n_lib_exception.NotFound):"},{"line_number":39,"context_line":"    message \u003d _(\"Tap Mirror  %(mirror_id)s does not exist\")"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class TapMirrorTunnelConflict(n_lib_exception.Conflict):"}],"source_content_type":"text/x-python","patch_set":19,"id":"19b31260_2d2056b8","line":39,"range":{"start_line":39,"start_character":27,"end_line":39,"end_character":29},"updated":"2024-11-21 17:14:39.000000000","message":"super nit: two spaces","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"aaa87c47474bede23a63c31fefe1565a038ece5f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"#  https://review.opendev.org/c/openstack/neutron-lib/+/895603 is"},{"line_number":37,"context_line":"# released."},{"line_number":38,"context_line":"class TapMirrorNotFound(n_lib_exception.NotFound):"},{"line_number":39,"context_line":"    message \u003d _(\"Tap Mirror  %(mirror_id)s does not exist\")"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class TapMirrorTunnelConflict(n_lib_exception.Conflict):"}],"source_content_type":"text/x-python","patch_set":19,"id":"e9490ff5_9618d1b2","line":39,"range":{"start_line":39,"start_character":27,"end_line":39,"end_character":29},"in_reply_to":"19b31260_2d2056b8","updated":"2024-11-22 16:39:01.000000000","message":"Done","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class TapMirrorTunnelConflict(n_lib_exception.Conflict):"},{"line_number":43,"context_line":"    message \u003d _(\"Tap Mirror with tunnel_id %(tunnel_id)s already used\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class TapMirror(model_base.BASEV2, model_base.HasId,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f64ebbc_9a8220a8","line":43,"range":{"start_line":43,"start_character":65,"end_line":43,"end_character":69},"updated":"2024-11-21 17:14:39.000000000","message":"nit: s/in use","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"aaa87c47474bede23a63c31fefe1565a038ece5f","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class TapMirrorTunnelConflict(n_lib_exception.Conflict):"},{"line_number":43,"context_line":"    message \u003d _(\"Tap Mirror with tunnel_id %(tunnel_id)s already used\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class TapMirror(model_base.BASEV2, model_base.HasId,"}],"source_content_type":"text/x-python","patch_set":19,"id":"17a75bba_3ce4da51","line":43,"range":{"start_line":43,"start_character":65,"end_line":43,"end_character":69},"in_reply_to":"7f64ebbc_9a8220a8","updated":"2024-11-22 16:39:01.000000000","message":"Done","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":88,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":89,"context_line":"    def get_port_details(self, context, port_id):"},{"line_number":90,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":91,"context_line":"            port \u003d self._core_plugin().get_port(context, port_id)"},{"line_number":92,"context_line":"            return port"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @db_api.retry_if_session_inactive()"}],"source_content_type":"text/x-python","patch_set":19,"id":"5900e43f_aa9e15d1","line":91,"updated":"2024-11-21 17:14:39.000000000","message":"nit: could just return this call as \u0027port\u0027 is never used","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"aaa87c47474bede23a63c31fefe1565a038ece5f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":89,"context_line":"    def get_port_details(self, context, port_id):"},{"line_number":90,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":91,"context_line":"            port \u003d self._core_plugin().get_port(context, port_id)"},{"line_number":92,"context_line":"            return port"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @db_api.retry_if_session_inactive()"}],"source_content_type":"text/x-python","patch_set":19,"id":"12d2e93e_c55cc487","line":91,"in_reply_to":"5900e43f_aa9e15d1","updated":"2024-11-22 16:39:01.000000000","message":"Done","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":141,"context_line":"            count \u003d context.session.query(TapMirror).filter_by(id\u003did).delete()"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if not count:"},{"line_number":144,"context_line":"                raise TapMirrorNotFound(mirror_id\u003did)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":147,"context_line":"    @log_helpers.log_method_call"}],"source_content_type":"text/x-python","patch_set":19,"id":"1234e99a_70792403","line":144,"updated":"2024-11-21 17:14:39.000000000","message":"super nit: Just mentioning a meta-comment, don\u0027t feel you have to change anything, but technically the check of \u0027count\u0027 doesn\u0027t need to be inside the context. Neutron has no standard for this either, I just notice these things with the nit-picking side of my brain 😊","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"aaa87c47474bede23a63c31fefe1565a038ece5f","unresolved":true,"context_lines":[{"line_number":141,"context_line":"            count \u003d context.session.query(TapMirror).filter_by(id\u003did).delete()"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if not count:"},{"line_number":144,"context_line":"                raise TapMirrorNotFound(mirror_id\u003did)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":147,"context_line":"    @log_helpers.log_method_call"}],"source_content_type":"text/x-python","patch_set":19,"id":"fbc7268a_f286640a","line":144,"in_reply_to":"1234e99a_70792403","updated":"2024-11-22 16:39:01.000000000","message":"thanks for them","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a9d467a336eef066f46ec0f0716a804e39345138","unresolved":true,"context_lines":[{"line_number":56,"context_line":"        mirror_extension.COLLECTION_NAME: mirror_extension.RESOURCE_NAME}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class Taas_mirror_db_Mixin(tap_m_extension.TapMirrorBase):"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _core_plugin(self):"},{"line_number":62,"context_line":"        return directory.get_plugin()"}],"source_content_type":"text/x-python","patch_set":23,"id":"5dbf3bb3_04139dfd","line":59,"range":{"start_line":59,"start_character":21,"end_line":59,"end_character":22},"updated":"2025-02-05 15:33:27.000000000","message":"nitty nit: this should be \"mixin\" with lowercase, no?","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"03f4e89865dd0f69241f09f97f99eb17c3ca1e31","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        mirror_extension.COLLECTION_NAME: mirror_extension.RESOURCE_NAME}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class Taas_mirror_db_Mixin(tap_m_extension.TapMirrorBase):"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _core_plugin(self):"},{"line_number":62,"context_line":"        return directory.get_plugin()"}],"source_content_type":"text/x-python","patch_set":23,"id":"eec51b7a_4f0a0d9a","line":59,"range":{"start_line":59,"start_character":21,"end_line":59,"end_character":22},"in_reply_to":"5dbf3bb3_04139dfd","updated":"2025-02-07 15:30:33.000000000","message":"Done","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a9d467a336eef066f46ec0f0716a804e39345138","unresolved":true,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class Taas_mirror_db_Mixin(tap_m_extension.TapMirrorBase):"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _core_plugin(self):"},{"line_number":62,"context_line":"        return directory.get_plugin()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _make_tap_mirror_dict(self, tap_mirror, fields\u003dNone):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f08a5ba_40e625f6","line":61,"updated":"2025-02-05 15:33:27.000000000","message":"nit: do you need method for that?","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"705d1aa06d1445830e1c8ea6c37fe2722f29b633","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class Taas_mirror_db_Mixin(tap_m_extension.TapMirrorBase):"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _core_plugin(self):"},{"line_number":62,"context_line":"        return directory.get_plugin()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _make_tap_mirror_dict(self, tap_mirror, fields\u003dNone):"}],"source_content_type":"text/x-python","patch_set":23,"id":"c6b99550_18a90092","line":61,"in_reply_to":"523c2f3d_cb8d97d5","updated":"2025-02-07 15:31:06.000000000","message":"Done","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"03f4e89865dd0f69241f09f97f99eb17c3ca1e31","unresolved":true,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"class Taas_mirror_db_Mixin(tap_m_extension.TapMirrorBase):"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _core_plugin(self):"},{"line_number":62,"context_line":"        return directory.get_plugin()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _make_tap_mirror_dict(self, tap_mirror, fields\u003dNone):"}],"source_content_type":"text/x-python","patch_set":23,"id":"523c2f3d_cb8d97d5","line":61,"in_reply_to":"9f08a5ba_40e625f6","updated":"2025-02-07 15:30:33.000000000","message":"no, as I remember I added to keep in the line length restriction, but can be dropped now","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"}],"neutron_taas/extensions/_tap_mirror.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# TODO(lajoskatona): Remove this file, when patch"},{"line_number":14,"context_line":"# https://review.opendev.org/c/openstack/neutron-lib/+/885354 is released"},{"line_number":15,"context_line":"from neutron_lib.db import constants as db_const"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"6a908fdb_d48f6488","line":14,"updated":"2024-11-21 17:14:39.000000000","message":"This file merged in January, so I\u0027m guessing this whole file can go?","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"}],"neutron_taas/extensions/tap_mirror.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# TODO(lajoskatona): use the api definition from neutron-lib when"},{"line_number":21,"context_line":"# https://review.opendev.org/c/openstack/neutron-lib/+/885354 released"},{"line_number":22,"context_line":"from neutron_taas.extensions import _tap_mirror as tap_mirror_api_def"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class Tap_mirror(api_extensions.APIExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":19,"id":"a7d1a342_17e4aefa","line":22,"updated":"2024-11-21 17:14:39.000000000","message":"Related to the other file, this patch merged so this can be updated","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"aaa87c47474bede23a63c31fefe1565a038ece5f","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# TODO(lajoskatona): use the api definition from neutron-lib when"},{"line_number":21,"context_line":"# https://review.opendev.org/c/openstack/neutron-lib/+/885354 released"},{"line_number":22,"context_line":"from neutron_taas.extensions import _tap_mirror as tap_mirror_api_def"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class Tap_mirror(api_extensions.APIExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":19,"id":"a20422e0_2f2c7634","line":22,"in_reply_to":"a7d1a342_17e4aefa","updated":"2024-11-22 16:39:01.000000000","message":"thanks, I really forgot that in the storm of times and downstream things :-)","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"}],"neutron_taas/policies/tap_mirror.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a9d467a336eef066f46ec0f0716a804e39345138","unresolved":true,"context_lines":[{"line_number":59,"context_line":"            }"},{"line_number":60,"context_line":"        ]"},{"line_number":61,"context_line":"    ),"},{"line_number":62,"context_line":"]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def list_rules():"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa492503_b51be52a","line":62,"updated":"2025-02-05 15:33:27.000000000","message":"please define those rules in the \"new\" way, like we have them in Neutron, eg.: https://github.com/openstack/neutron/blob/master/neutron/conf/policies/network.py - with defined scope and using MEMBER/READER roles","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"705d1aa06d1445830e1c8ea6c37fe2722f29b633","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            }"},{"line_number":60,"context_line":"        ]"},{"line_number":61,"context_line":"    ),"},{"line_number":62,"context_line":"]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def list_rules():"}],"source_content_type":"text/x-python","patch_set":23,"id":"8371c968_86d2fe67","line":62,"in_reply_to":"2bde7b9b_bfb5c225","updated":"2025-02-07 15:31:06.000000000","message":"Done","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"03f4e89865dd0f69241f09f97f99eb17c3ca1e31","unresolved":true,"context_lines":[{"line_number":59,"context_line":"            }"},{"line_number":60,"context_line":"        ]"},{"line_number":61,"context_line":"    ),"},{"line_number":62,"context_line":"]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def list_rules():"}],"source_content_type":"text/x-python","patch_set":23,"id":"2bde7b9b_bfb5c225","line":62,"in_reply_to":"fa492503_b51be52a","updated":"2025-02-07 15:30:33.000000000","message":"Done, I have to check the tempest tests, and I will push a patch for the old APIs also","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"}],"neutron_taas/services/taas/tap_mirror_plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    path_prefix \u003d \"/taas\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self):"},{"line_number":41,"context_line":"        LOG.debug(\"TAP Mirror PLUGIN INITIALIZED\")"},{"line_number":42,"context_line":"        super().__init__()"},{"line_number":43,"context_line":"        self.service_type_manager \u003d st_db.ServiceTypeManager.get_instance()"},{"line_number":44,"context_line":"        self.service_type_manager.add_provider_configuration("}],"source_content_type":"text/x-python","patch_set":19,"id":"5dfd4455_5ac41d23","line":41,"updated":"2024-11-21 17:14:39.000000000","message":"nit: all caps?","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a0a230a0c4849250d2a3340dda05f5ea84b57352","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    path_prefix \u003d \"/taas\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self):"},{"line_number":41,"context_line":"        LOG.debug(\"TAP Mirror PLUGIN INITIALIZED\")"},{"line_number":42,"context_line":"        super().__init__()"},{"line_number":43,"context_line":"        self.service_type_manager \u003d st_db.ServiceTypeManager.get_instance()"},{"line_number":44,"context_line":"        self.service_type_manager.add_provider_configuration("}],"source_content_type":"text/x-python","patch_set":19,"id":"804a4ca2_1de4b2a1","line":41,"in_reply_to":"5dfd4455_5ac41d23","updated":"2024-11-22 17:24:22.000000000","message":"Oh, I meant \"why all caps?\" seems it should be \"Tap Mirror plugin initialized\"","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"da13d8d239f906cc445bebaec1f2e864d6064a7e","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    path_prefix \u003d \"/taas\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self):"},{"line_number":41,"context_line":"        LOG.debug(\"TAP Mirror PLUGIN INITIALIZED\")"},{"line_number":42,"context_line":"        super().__init__()"},{"line_number":43,"context_line":"        self.service_type_manager \u003d st_db.ServiceTypeManager.get_instance()"},{"line_number":44,"context_line":"        self.service_type_manager.add_provider_configuration("}],"source_content_type":"text/x-python","patch_set":19,"id":"141413d1_24db9b0c","line":41,"in_reply_to":"804a4ca2_1de4b2a1","updated":"2024-11-27 15:12:27.000000000","message":"Yeah, I followed the startup log message format of other places in taas, but it is really ugly this way :)","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":81,"context_line":"            if host is not None:"},{"line_number":82,"context_line":"                LOG.debug(\"Host on which the port is created \u003d %s\", host)"},{"line_number":83,"context_line":"            else:"},{"line_number":84,"context_line":"                LOG.debug(\"Host could not be found, Port Binding disbaled!\")"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        with db_api.CONTEXT_WRITER.using(context):"},{"line_number":87,"context_line":"            self._validate_tap_tunnel_id(context, t_m[\u0027directions\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"eabf4b39_f55ed691","line":84,"range":{"start_line":84,"start_character":65,"end_line":84,"end_character":73},"updated":"2024-11-21 17:14:39.000000000","message":"s/disabled\n\nAlso, this section doesn\u0027t seem to affect operation, i.e. the tap mirror will still be created regardless, which I guess is Ok?","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":129,"context_line":"                self.delete_tap_mirror(context, t_m[\u0027id\u0027])"},{"line_number":130,"context_line":"            except tap_mirror_db.TapMirrorNotFound:"},{"line_number":131,"context_line":"                # TODO(lajoskaton): change this to use exception from n-lib,"},{"line_number":132,"context_line":"                # when it will be released"},{"line_number":133,"context_line":"                LOG.debug(\"Not found tap_mirror: %s\", t_m[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"ab7f5fea_9ecc9075","line":132,"updated":"2024-11-21 17:14:39.000000000","message":"The neutron-lib change has merged.","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":130,"context_line":"            except tap_mirror_db.TapMirrorNotFound:"},{"line_number":131,"context_line":"                # TODO(lajoskaton): change this to use exception from n-lib,"},{"line_number":132,"context_line":"                # when it will be released"},{"line_number":133,"context_line":"                LOG.debug(\"Not found tap_mirror: %s\", t_m[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"292ded05_bae3cf18","line":133,"range":{"start_line":133,"start_character":27,"end_line":133,"end_character":47},"updated":"2024-11-21 17:14:39.000000000","message":"nit: \"Tap mirror not found\"","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1a9408bf5fa7b06e009863ea66a55c6a75d99cdc","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    path_prefix \u003d \"/taas\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self):"},{"line_number":41,"context_line":"        LOG.debug(\"Tap Mirror Plugin Initialized\")"},{"line_number":42,"context_line":"        super().__init__()"},{"line_number":43,"context_line":"        self.service_type_manager \u003d st_db.ServiceTypeManager.get_instance()"},{"line_number":44,"context_line":"        self.service_type_manager.add_provider_configuration("}],"source_content_type":"text/x-python","patch_set":21,"id":"5781c4c5_b8265e07","line":41,"updated":"2024-12-02 16:01:21.000000000","message":"Looking at this again, is this log really useful? The one on L57 seems to have more info and is done after initialization is complete.","commit_id":"52f1ccabb573881046c09b246297f55a5cfdd16c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"39530f7fd1c2edec8cd4bfd8ceedae4bb1b3a3c3","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    path_prefix \u003d \"/taas\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self):"},{"line_number":41,"context_line":"        LOG.debug(\"Tap Mirror Plugin Initialized\")"},{"line_number":42,"context_line":"        super().__init__()"},{"line_number":43,"context_line":"        self.service_type_manager \u003d st_db.ServiceTypeManager.get_instance()"},{"line_number":44,"context_line":"        self.service_type_manager.add_provider_configuration("}],"source_content_type":"text/x-python","patch_set":21,"id":"56573cc9_cd403432","line":41,"in_reply_to":"5781c4c5_b8265e07","updated":"2024-12-03 19:53:07.000000000","message":"True, I just followed how other plugins in taas start initialization:-)","commit_id":"52f1ccabb573881046c09b246297f55a5cfdd16c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a9d467a336eef066f46ec0f0716a804e39345138","unresolved":true,"context_lines":[{"line_number":25,"context_line":"from neutron_taas.db import tap_mirror_db"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from oslo_log import helpers as log_helpers"},{"line_number":28,"context_line":"from oslo_log import log as logging"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3ce0d511_92238028","line":28,"updated":"2025-02-05 15:33:27.000000000","message":"nit: those imports should be in the section from L13 to L22","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"03f4e89865dd0f69241f09f97f99eb17c3ca1e31","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron_taas.db import tap_mirror_db"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from oslo_log import helpers as log_helpers"},{"line_number":28,"context_line":"from oslo_log import log as logging"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7b842228_7bc94856","line":28,"in_reply_to":"3ce0d511_92238028","updated":"2025-02-07 15:30:33.000000000","message":"Done","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a9d467a336eef066f46ec0f0716a804e39345138","unresolved":true,"context_lines":[{"line_number":76,"context_line":"            if port[\u0027tenant_id\u0027] !\u003d project_id:"},{"line_number":77,"context_line":"                raise taas_exc.PortDoesNotBelongToTenant()"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            host \u003d port[\u0027binding:host_id\u0027]"},{"line_number":80,"context_line":"            if host is not None:"},{"line_number":81,"context_line":"                LOG.debug(\"Host on which the port is created \u003d %s\", host)"},{"line_number":82,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":23,"id":"3c92abeb_75eaa6ad","line":79,"range":{"start_line":79,"start_character":25,"end_line":79,"end_character":40},"updated":"2025-02-05 15:33:27.000000000","message":"this is defined as constant in https://github.com/openstack/neutron-lib/blob/e2d68e39f5e62be9ca8a247b3f957e5e2d4ec3a3/neutron_lib/api/definitions/portbindings.py#L30 - you should probably use it here","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"03f4e89865dd0f69241f09f97f99eb17c3ca1e31","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if port[\u0027tenant_id\u0027] !\u003d project_id:"},{"line_number":77,"context_line":"                raise taas_exc.PortDoesNotBelongToTenant()"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            host \u003d port[\u0027binding:host_id\u0027]"},{"line_number":80,"context_line":"            if host is not None:"},{"line_number":81,"context_line":"                LOG.debug(\"Host on which the port is created \u003d %s\", host)"},{"line_number":82,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":23,"id":"2565957a_14a2aff4","line":79,"range":{"start_line":79,"start_character":25,"end_line":79,"end_character":40},"in_reply_to":"3c92abeb_75eaa6ad","updated":"2025-02-07 15:30:33.000000000","message":"Done","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3921f20ba9e717a2a24ffe4f49bdde4d90f5c5db","unresolved":true,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @log_helpers.log_method_call"},{"line_number":100,"context_line":"    def delete_tap_mirror(self, context, id):"},{"line_number":101,"context_line":"        with db_api.CONTEXT_READER.using(context):"},{"line_number":102,"context_line":"            tm \u003d self.get_tap_mirror(context, id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        if tm:"},{"line_number":105,"context_line":"            with db_api.CONTEXT_WRITER.using(context):"},{"line_number":106,"context_line":"                # check if tunnel id was really deleted"},{"line_number":107,"context_line":"                super().delete_tap_mirror(context, id)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    @registry.receives(resources.PORT, [events.PRECOMMIT_DELETE])"},{"line_number":110,"context_line":"    @log_helpers.log_method_call"}],"source_content_type":"text/x-python","patch_set":25,"id":"50f9838e_9630fca3","line":107,"range":{"start_line":101,"start_character":8,"end_line":107,"end_character":54},"updated":"2025-02-13 09:00:23.000000000","message":"This should be inside the same writer context","commit_id":"9640102fe97bf162b60ed307abf555b32325bcb2"}],"neutron_taas/tests/unit/db/test_tap_mirror_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    \"\"\"Unit test for Tap Mirror DB support.\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def setUp(self):"},{"line_number":32,"context_line":"        super(TapMirrorDbTestCase, self).setUp()"},{"line_number":33,"context_line":"        self.ctx \u003d context.get_admin_context()"},{"line_number":34,"context_line":"        self.db_mixin \u003d tap_mirror_db.Taas_mirror_db_Mixin()"},{"line_number":35,"context_line":"        self.plugin \u003d importutils.import_object(DB_PLUGIN_KLAAS)"}],"source_content_type":"text/x-python","patch_set":19,"id":"da4f4812_a7e79b8c","line":32,"updated":"2024-11-21 17:14:39.000000000","message":"s/super().setUp()","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":33,"context_line":"        self.ctx \u003d context.get_admin_context()"},{"line_number":34,"context_line":"        self.db_mixin \u003d tap_mirror_db.Taas_mirror_db_Mixin()"},{"line_number":35,"context_line":"        self.plugin \u003d importutils.import_object(DB_PLUGIN_KLAAS)"},{"line_number":36,"context_line":"        self.project_id \u003d \u0027fake-tenant-id\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _get_tap_mirror_data(self, name\u003d\u0027tm-1\u0027, port_id\u003dNone,"},{"line_number":39,"context_line":"                             directions\u003d\u0027{\"IN\": \"99\"}\u0027, remote_ip\u003d\u002710.99.8.3\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ee4f5de0_aaf2d2ad","line":36,"range":{"start_line":36,"start_character":27,"end_line":36,"end_character":41},"updated":"2024-11-21 17:14:39.000000000","message":"s/fake-project-id 😊","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"}],"neutron_taas/tests/unit/extensions/test_tap_mirror.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":22,"context_line":"from neutron.tests.unit.extensions import base as test_extensions_base"},{"line_number":23,"context_line":"# Uncomment this line when"},{"line_number":24,"context_line":"# https://review.opendev.org/c/openstack/neutron-lib/+/885354 is released"},{"line_number":25,"context_line":"# from neutron_lib.api.definitions import tap_mirror as tap_mirror_api"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from neutron_taas import extensions as taas_extensions"},{"line_number":28,"context_line":"# Remove this line when the above api-def is released"}],"source_content_type":"text/x-python","patch_set":19,"id":"fc5d3cfd_8ba9d476","line":25,"updated":"2024-11-21 17:14:39.000000000","message":"Merged 😊","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":37,"context_line":"    def setUp(self):"},{"line_number":38,"context_line":"        conf_common.register_core_common_config_opts()"},{"line_number":39,"context_line":"        extensions.append_api_extensions_path(taas_extensions.__path__)"},{"line_number":40,"context_line":"        super(TapMirrorExtensionTestCase, self).setUp()"},{"line_number":41,"context_line":"        plural_mappings \u003d {\u0027tap_mirror\u0027: \u0027tap_mirrors\u0027}"},{"line_number":42,"context_line":"        self.setup_extension("},{"line_number":43,"context_line":"            \u0027%s.%s\u0027 % (taas_extensions.tap_mirror.TapMirrorBase.__module__,"}],"source_content_type":"text/x-python","patch_set":19,"id":"e14dfd21_34aa92b1","line":40,"updated":"2024-11-21 17:14:39.000000000","message":"s/super().setUp()","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"}],"neutron_taas/tests/unit/services/taas/test_tap_mirror_plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestTapMirrorPlugin(testlib_api.SqlTestCase):"},{"line_number":31,"context_line":"    def setUp(self):"},{"line_number":32,"context_line":"        super(TestTapMirrorPlugin, self).setUp()"},{"line_number":33,"context_line":"        mock.patch.object(n_rpc, \u0027Connection\u0027, spec\u003dobject).start()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self.driver \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":19,"id":"3ca385cf_594ceb6e","line":32,"updated":"2024-11-21 17:14:39.000000000","message":"s/super().setUp()","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":46,"context_line":"        self._host_id \u003d \u0027host-A\u0027"},{"line_number":47,"context_line":"        self._port_id \u003d uuidutils.generate_uuid()"},{"line_number":48,"context_line":"        self._port_details \u003d {"},{"line_number":49,"context_line":"            \u0027tenant_id\u0027: self._tenant_id,"},{"line_number":50,"context_line":"            \u0027binding:host_id\u0027: self._host_id,"},{"line_number":51,"context_line":"            \u0027mac_address\u0027: n_utils.get_random_mac("},{"line_number":52,"context_line":"                \u0027fa:16:3e:00:00:00\u0027.split(\u0027:\u0027)),"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f44cbc1_a712be7a","line":49,"updated":"2024-11-21 17:14:39.000000000","message":"tenant_id will eventually go away","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":53,"context_line":"        }"},{"line_number":54,"context_line":"        self._tap_mirror \u003d {"},{"line_number":55,"context_line":"            \u0027project_id\u0027: self._project_id,"},{"line_number":56,"context_line":"            \u0027,tenant_id\u0027: self._tenant_id,"},{"line_number":57,"context_line":"            \u0027name\u0027: \u0027MyMirror\u0027,"},{"line_number":58,"context_line":"            \u0027description\u0027: \u0027This is my Tap Mirror\u0027,"},{"line_number":59,"context_line":"            \u0027port_id\u0027: self._port_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"8e5481c7_ce1a674c","line":56,"range":{"start_line":56,"start_character":13,"end_line":56,"end_character":23},"updated":"2024-11-21 17:14:39.000000000","message":"extra comma here","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"afc2f2ff229fb5ab817b11b6c614bb169abb3cad","unresolved":true,"context_lines":[{"line_number":98,"context_line":"    def test_delete_tap_mirror_non_existent(self):"},{"line_number":99,"context_line":"        # TODO(lajoskatona): change this to an import to neutron-lib when"},{"line_number":100,"context_line":"        # https://review.opendev.org/c/openstack/neutron-lib/+/895603 is"},{"line_number":101,"context_line":"        # released."},{"line_number":102,"context_line":"        with testtools.ExpectedException(tm_db.TapMirrorNotFound):"},{"line_number":103,"context_line":"            self._plugin.delete_tap_mirror(self._context, \u0027non-existent\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"9cbeb91f_d1dd8e62","line":101,"updated":"2024-11-21 17:14:39.000000000","message":"Released","commit_id":"c0d592eca5bffb4131cf0f6d15d9007bf1eb10e1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a9d467a336eef066f46ec0f0716a804e39345138","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from neutron_lib import rpc as n_rpc"},{"line_number":21,"context_line":"from neutron_lib.utils import net as n_utils"},{"line_number":22,"context_line":"from oslo_utils import uuidutils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.tests.unit import testlib_api"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron_taas.services.taas import tap_mirror_plugin"}],"source_content_type":"text/x-python","patch_set":23,"id":"20baf09b_a437e355","line":23,"updated":"2025-02-05 15:33:27.000000000","message":"remove this empty line","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"03f4e89865dd0f69241f09f97f99eb17c3ca1e31","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron_lib import rpc as n_rpc"},{"line_number":21,"context_line":"from neutron_lib.utils import net as n_utils"},{"line_number":22,"context_line":"from oslo_utils import uuidutils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron.tests.unit import testlib_api"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron_taas.services.taas import tap_mirror_plugin"}],"source_content_type":"text/x-python","patch_set":23,"id":"f4d3d950_1fe8c97f","line":23,"in_reply_to":"20baf09b_a437e355","updated":"2025-02-07 15:30:33.000000000","message":"Done","commit_id":"e4969be5a8c4a69e9380fac0d11bc52a38b1d23e"}]}
