)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1694012323661a029165e1e4f0699ce7b818e2d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"65e41750_8435cf87","updated":"2023-11-16 09:21:47.000000000","message":"strange unit tests are passing for me locally...","commit_id":"d36187a53d5ba4d0b563cafdab8b3aad663a5a12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2b005b44e39b6906f569aef7c1546f28b0dc4137","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"25481cee_e1a139a7","updated":"2025-02-05 14:42:43.000000000","message":"-1 just to get questions answered, things might be fine","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"fccb760a47e6c91c49be78ecdcc47e85cdc9f6ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"ab1fa50f_e25c6388","updated":"2024-12-05 12:14:37.000000000","message":"Hi Lajos, we are interested in this, do you know when it can be merged ? Thank you very much.","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e3a067ae4efc944a2c7983afc944d507e416102c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"0b7c99dc_16b4cc4f","in_reply_to":"ab1fa50f_e25c6388","updated":"2024-12-12 16:24:51.000000000","message":"Hi, I got some reviews but I fear due to the X-Mas season I have to push it in January. Really happy to see that it can be useful","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"}],"neutron_taas/services/taas/agents/common/taas_agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6102a3de3cc90e722ec5d3e24a788aab18d00832","unresolved":true,"context_lines":[{"line_number":255,"context_line":"                      \"stored in agent [%s], or incompatible driver type. \""},{"line_number":256,"context_line":"                      \"Ignoring the message.\", host, self.conf.host)"},{"line_number":257,"context_line":"            return"},{"line_number":258,"context_line":"        LOG.debug(\"In RPC Call for Delete Tap Mirror: MSG\u003d%s\", tap_mirror_msg)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":261,"context_line":"            context,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fe427ae_5b970312","line":258,"updated":"2025-02-04 16:33:35.000000000","message":"nit: did not see this in create_tap_mirror() above, is it required here or there?","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b3ec6d083a3489ec42454309247b5041f6f003c5","unresolved":true,"context_lines":[{"line_number":255,"context_line":"                      \"stored in agent [%s], or incompatible driver type. \""},{"line_number":256,"context_line":"                      \"Ignoring the message.\", host, self.conf.host)"},{"line_number":257,"context_line":"            return"},{"line_number":258,"context_line":"        LOG.debug(\"In RPC Call for Delete Tap Mirror: MSG\u003d%s\", tap_mirror_msg)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":261,"context_line":"            context,"}],"source_content_type":"text/x-python","patch_set":20,"id":"51e8f083_d2e5147f","line":258,"in_reply_to":"5fe427ae_5b970312","updated":"2025-02-07 15:41:44.000000000","message":"thanks, I missed that. To be consistent from tap-as-a-service logging perspective, I added the log line for create method also","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1f8e65f654e8e1b5113955efc54e80ee26e73955","unresolved":true,"context_lines":[{"line_number":240,"context_line":"                      \"stored in agent [%s], or incompatible driver type. \""},{"line_number":241,"context_line":"                      \"Ignoring the message.\", host, self.conf.host)"},{"line_number":242,"context_line":"            return"},{"line_number":243,"context_line":"        LOG.debug(\"In RPC Call for Creae Tap Mirror: MSG\u003d%s\", tap_mirror_msg)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":246,"context_line":"            context,"}],"source_content_type":"text/x-python","patch_set":22,"id":"618a5141_4218252c","line":243,"range":{"start_line":243,"start_character":35,"end_line":243,"end_character":40},"updated":"2025-02-07 21:52:05.000000000","message":"s/Create","commit_id":"d17cd03fc42ecef36cbbc6fc846a4c095e54c18c"}],"neutron_taas/services/taas/drivers/linux/ovs_taas.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6102a3de3cc90e722ec5d3e24a788aab18d00832","unresolved":true,"context_lines":[{"line_number":600,"context_line":"            type \u003d \u0027erspan\u0027"},{"line_number":601,"context_line":"            options[\u0027erspan_ver\u0027] \u003d \"1\""},{"line_number":602,"context_line":"            options[\u0027erspan_idx\u0027] \u003d \"\""},{"line_number":603,"context_line":"            options[\u0027key\u0027] \u003d \"\""},{"line_number":604,"context_line":"        else:"},{"line_number":605,"context_line":"            type \u003d \u0027gre\u0027"},{"line_number":606,"context_line":"        directions \u003d tap_mirror[\u0027directions\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"52575c62_d551982b","line":603,"updated":"2025-02-04 16:33:35.000000000","message":"These last two are always over-written in the loop below, are they necessary here?","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b3ec6d083a3489ec42454309247b5041f6f003c5","unresolved":true,"context_lines":[{"line_number":600,"context_line":"            type \u003d \u0027erspan\u0027"},{"line_number":601,"context_line":"            options[\u0027erspan_ver\u0027] \u003d \"1\""},{"line_number":602,"context_line":"            options[\u0027erspan_idx\u0027] \u003d \"\""},{"line_number":603,"context_line":"            options[\u0027key\u0027] \u003d \"\""},{"line_number":604,"context_line":"        else:"},{"line_number":605,"context_line":"            type \u003d \u0027gre\u0027"},{"line_number":606,"context_line":"        directions \u003d tap_mirror[\u0027directions\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"11f264c7_06feb585","line":603,"in_reply_to":"52575c62_d551982b","updated":"2025-02-07 15:41:44.000000000","message":"true, I removed these useless initializations","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6102a3de3cc90e722ec5d3e24a788aab18d00832","unresolved":true,"context_lines":[{"line_number":602,"context_line":"            options[\u0027erspan_idx\u0027] \u003d \"\""},{"line_number":603,"context_line":"            options[\u0027key\u0027] \u003d \"\""},{"line_number":604,"context_line":"        else:"},{"line_number":605,"context_line":"            type \u003d \u0027gre\u0027"},{"line_number":606,"context_line":"        directions \u003d tap_mirror[\u0027directions\u0027]"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        for direction, tunnel_id in directions.items():"}],"source_content_type":"text/x-python","patch_set":20,"id":"a73c290d_a1ece463","line":605,"updated":"2025-02-04 16:33:35.000000000","message":"So this shows my (un) knowledge of Taas. This value will be used below, but the options will also contain a key for \u0027erspan_idx\u0027 - is that valid?","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b3ec6d083a3489ec42454309247b5041f6f003c5","unresolved":true,"context_lines":[{"line_number":602,"context_line":"            options[\u0027erspan_idx\u0027] \u003d \"\""},{"line_number":603,"context_line":"            options[\u0027key\u0027] \u003d \"\""},{"line_number":604,"context_line":"        else:"},{"line_number":605,"context_line":"            type \u003d \u0027gre\u0027"},{"line_number":606,"context_line":"        directions \u003d tap_mirror[\u0027directions\u0027]"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        for direction, tunnel_id in directions.items():"}],"source_content_type":"text/x-python","patch_set":20,"id":"fc955257_060a2ddd","line":605,"in_reply_to":"a73c290d_a1ece463","updated":"2025-02-07 15:41:44.000000000","message":"it is more how ERSPAN was designed by Cisco originally and implemented for OVS, not taas. Yes, the type will be gre, but key will be the tunnel_id, I think the erspan_idx field should be safely omitted in case of gre, but have to read again the ovs manpages for that. In ovs it will look like this:\n    Bridge br-tap\n        datapath_type: system\n        Port tm_out_cfc398\n            Interface tm_out_cfc398\n                type: gre\n                options: {erspan_idx\u003d\"102\", key\u003d\"102\", remote_ip\u003d\"192.168.222.252\"}","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1f8e65f654e8e1b5113955efc54e80ee26e73955","unresolved":true,"context_lines":[{"line_number":602,"context_line":"            options[\u0027erspan_idx\u0027] \u003d \"\""},{"line_number":603,"context_line":"            options[\u0027key\u0027] \u003d \"\""},{"line_number":604,"context_line":"        else:"},{"line_number":605,"context_line":"            type \u003d \u0027gre\u0027"},{"line_number":606,"context_line":"        directions \u003d tap_mirror[\u0027directions\u0027]"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        for direction, tunnel_id in directions.items():"}],"source_content_type":"text/x-python","patch_set":20,"id":"b325d8b2_a3c6d923","line":605,"in_reply_to":"fc955257_060a2ddd","updated":"2025-02-07 21:52:05.000000000","message":"The ovs code is a little fuzzy to me, but it seems to only look at erspan_idx when erspan_ver \u003d\u003d 1. So it probably can be omitted for gre I think.","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6102a3de3cc90e722ec5d3e24a788aab18d00832","unresolved":true,"context_lines":[{"line_number":606,"context_line":"        directions \u003d tap_mirror[\u0027directions\u0027]"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        for direction, tunnel_id in directions.items():"},{"line_number":609,"context_line":"            options[\u0027erspan_idx\u0027] \u003d str(tunnel_id)"},{"line_number":610,"context_line":"            # Note(lajoskatona): this is treated as hexa, so"},{"line_number":611,"context_line":"            # spanId will be d102, and Index will be d258 in the packet."},{"line_number":612,"context_line":"            # As OVN doesn\u0027t care about this let\u0027s have OVS driver the same"}],"source_content_type":"text/x-python","patch_set":20,"id":"2996b7a1_937c6176","line":609,"updated":"2025-02-04 16:33:35.000000000","message":"We could get here with type\u003d\u0027gre\u0027, but in that case options[\u0027erspan_ver\u0027] will not be set, is that valid?","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b3ec6d083a3489ec42454309247b5041f6f003c5","unresolved":true,"context_lines":[{"line_number":606,"context_line":"        directions \u003d tap_mirror[\u0027directions\u0027]"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        for direction, tunnel_id in directions.items():"},{"line_number":609,"context_line":"            options[\u0027erspan_idx\u0027] \u003d str(tunnel_id)"},{"line_number":610,"context_line":"            # Note(lajoskatona): this is treated as hexa, so"},{"line_number":611,"context_line":"            # spanId will be d102, and Index will be d258 in the packet."},{"line_number":612,"context_line":"            # As OVN doesn\u0027t care about this let\u0027s have OVS driver the same"}],"source_content_type":"text/x-python","patch_set":20,"id":"43b244c5_e72f1c93","line":609,"in_reply_to":"2996b7a1_937c6176","updated":"2025-02-07 15:41:44.000000000","message":"yes exactly, the erspan version is only important in-case of erspan to be sure to use the correct header format supported by OVS","commit_id":"8c773c14952f8d1960fa554f0bc40f85306b65d8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1ae74011ce765ac5676195c4477d1d07ff6a5c1e","unresolved":true,"context_lines":[{"line_number":617,"context_line":"                     (\u0027options\u0027, options)]"},{"line_number":618,"context_line":"            mirror_of_port \u003d self.tap_br.add_port(port_name, *attrs)"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            if direction \u003d\u003d \u0027IN\u0027:"},{"line_number":621,"context_line":"                self.tap_br.add_flow(table\u003dtaas_ovs_consts.TAAS_RECV_LOC,"},{"line_number":622,"context_line":"                                     priority\u003d20,"},{"line_number":623,"context_line":"                                     dl_dst\u003dsource_port[\u0027mac_address\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"22692187_0d0c5725","line":620,"range":{"start_line":620,"start_character":29,"end_line":620,"end_character":31},"updated":"2025-02-13 09:02:15.000000000","message":"nit: don\u0027t we have constants for this?","commit_id":"d17cd03fc42ecef36cbbc6fc846a4c095e54c18c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e622a1f4033b3548e320c7f2ec2b45fc0dad3f08","unresolved":true,"context_lines":[{"line_number":617,"context_line":"                     (\u0027options\u0027, options)]"},{"line_number":618,"context_line":"            mirror_of_port \u003d self.tap_br.add_port(port_name, *attrs)"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"            if direction \u003d\u003d \u0027IN\u0027:"},{"line_number":621,"context_line":"                self.tap_br.add_flow(table\u003dtaas_ovs_consts.TAAS_RECV_LOC,"},{"line_number":622,"context_line":"                                     priority\u003d20,"},{"line_number":623,"context_line":"                                     dl_dst\u003dsource_port[\u0027mac_address\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"bea113b9_39840d78","line":620,"range":{"start_line":620,"start_character":29,"end_line":620,"end_character":31},"in_reply_to":"22692187_0d0c5725","updated":"2025-02-14 17:52:10.000000000","message":"No :-(\nThe best should be to split the enum in api-definition to be usable as constant:\nhttps://opendev.org/openstack/neutron-lib/src/branch/master/neutron_lib/api/definitions/taas.py#L17","commit_id":"d17cd03fc42ecef36cbbc6fc846a4c095e54c18c"}],"neutron_taas/services/taas/tap_mirror_plugin.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1ae74011ce765ac5676195c4477d1d07ff6a5c1e","unresolved":true,"context_lines":[{"line_number":94,"context_line":"            driver_context \u003d sd_context.TapMirrorContext(self, context, tm)"},{"line_number":95,"context_line":"            self.driver.create_tap_mirror_precommit(driver_context)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"            # Postcommit phase, do the backend stuff, or revert."},{"line_number":98,"context_line":"            try:"},{"line_number":99,"context_line":"                self.driver.create_tap_mirror_postcommit(driver_context)"},{"line_number":100,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":22,"id":"ffcb6820_ff3868e5","line":97,"range":{"start_line":97,"start_character":54,"end_line":97,"end_character":64},"updated":"2025-02-13 09:02:15.000000000","message":"Are we reverting the action? I think we are just dismissing the exception.","commit_id":"d17cd03fc42ecef36cbbc6fc846a4c095e54c18c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4d78a704a025cc22b1dceda8fab8651561b47863","unresolved":true,"context_lines":[{"line_number":94,"context_line":"            driver_context \u003d sd_context.TapMirrorContext(self, context, tm)"},{"line_number":95,"context_line":"            self.driver.create_tap_mirror_precommit(driver_context)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"            # Postcommit phase, do the backend stuff, or revert."},{"line_number":98,"context_line":"            try:"},{"line_number":99,"context_line":"                self.driver.create_tap_mirror_postcommit(driver_context)"},{"line_number":100,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":22,"id":"ada23418_e36960ed","line":97,"range":{"start_line":97,"start_character":54,"end_line":97,"end_character":64},"in_reply_to":"ffcb6820_ff3868e5","updated":"2025-02-17 09:35:22.000000000","message":"no, you are right , I remembered that I changed this comment, but seems only for the delete method....","commit_id":"d17cd03fc42ecef36cbbc6fc846a4c095e54c18c"}]}
