)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7c218c7ea29c32b3167d6894a2617c93e86b195a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"22381538_3306faff","updated":"2026-05-19 19:48:09.000000000","message":"Thanks for the change David, just had a couple of comments.\n\nWould also be good to add a unit test if possible.","commit_id":"c9fd922e68af4b77ded488280c9640b44d5b9532"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"cb5536e9070887bb7e767e73b4406a8aec783271","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a379e8d9_131a8153","updated":"2026-05-26 09:10:06.000000000","message":"I put it into my devstack, looks ok and works as expected, thanks","commit_id":"67569c7afe9900601fced6f061134baed23d058d"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a6e29bf78fddc6ee07a2737f4cca776543b4ee06","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9ef4099c_f45fd5a2","updated":"2026-05-22 15:01:45.000000000","message":"Thanks, next week (Tuesday I suppose) I drop this one in an env, and come back","commit_id":"67569c7afe9900601fced6f061134baed23d058d"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"772c959eae22b7cd7766870b800c48a5a80f790e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0105078e_e4bfe64a","updated":"2026-06-02 21:34:24.000000000","message":"lgtm. although not big fan of the overall architecture :) . thank you for taking care of it","commit_id":"67569c7afe9900601fced6f061134baed23d058d"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a47606fec88e591a192f3cc052b3b8c586915fe1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"edd5ef10_f472298f","in_reply_to":"0105078e_e4bfe64a","updated":"2026-06-03 07:47:14.000000000","message":":-)","commit_id":"67569c7afe9900601fced6f061134baed23d058d"}],"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":"7c218c7ea29c32b3167d6894a2617c93e86b195a","unresolved":true,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def periodic_tasks(self, context\u003dNone):"},{"line_number":278,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":279,"context_line":"            context\u003dNone,"},{"line_number":280,"context_line":"            args\u003dNone,"},{"line_number":281,"context_line":"            func_name\u003d\u0027periodic_tasks\u0027)"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"35ff1279_6769a144","line":279,"range":{"start_line":279,"start_character":12,"end_line":279,"end_character":24},"updated":"2026-05-19 19:48:09.000000000","message":"I realized _invoke_driver_for_plugin_api() never uses it, but to be correct we should make this context\u003dcontext.\n\nAnd actually looking neutron_taas/services/taas/drivers/linux/ovs_taas.py periodic_tasks() it takes args\u003dNone (and never uses it either) so is context\u003dNone correct here or should this be args\u003dNone ?","commit_id":"c9fd922e68af4b77ded488280c9640b44d5b9532"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6cd4521f6a343d97e2aa80f851d12918541c8b2","unresolved":true,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            driver_func \u003d getattr(self.taas_driver, func_name)"},{"line_number":153,"context_line":"            driver_func(args)"},{"line_number":154,"context_line":"        except Exception:"},{"line_number":155,"context_line":"            LOG.error(\"Failed to invoke the driver\")"},{"line_number":156,"context_line":"            rpc_func \u003d getattr("}],"source_content_type":"text/x-python","patch_set":3,"id":"67265fd5_f4ec42cc","line":153,"range":{"start_line":153,"start_character":12,"end_line":153,"end_character":29},"updated":"2026-05-20 08:08:07.000000000","message":"driver_func(*args)","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"875f3a3cd07beac7cb2cab9b34d98545c90a3d41","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            driver_func \u003d getattr(self.taas_driver, func_name)"},{"line_number":153,"context_line":"            driver_func(args)"},{"line_number":154,"context_line":"        except Exception:"},{"line_number":155,"context_line":"            LOG.error(\"Failed to invoke the driver\")"},{"line_number":156,"context_line":"            rpc_func \u003d getattr("}],"source_content_type":"text/x-python","patch_set":3,"id":"175636a5_642815d5","line":153,"range":{"start_line":153,"start_character":12,"end_line":153,"end_character":29},"in_reply_to":"67265fd5_f4ec42cc","updated":"2026-05-26 09:09:12.000000000","message":"Done","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6cd4521f6a343d97e2aa80f851d12918541c8b2","unresolved":true,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":183,"context_line":"            context,"},{"line_number":184,"context_line":"            tap_service_msg,"},{"line_number":185,"context_line":"            \u0027create_tap_service\u0027)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def create_tap_flow(self, context, tap_flow_msg, host):"}],"source_content_type":"text/x-python","patch_set":3,"id":"abbd2991_c2b3067a","line":184,"range":{"start_line":184,"start_character":12,"end_line":184,"end_character":27},"updated":"2026-05-20 08:08:07.000000000","message":"[tap_service_msg]","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"875f3a3cd07beac7cb2cab9b34d98545c90a3d41","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":183,"context_line":"            context,"},{"line_number":184,"context_line":"            tap_service_msg,"},{"line_number":185,"context_line":"            \u0027create_tap_service\u0027)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def create_tap_flow(self, context, tap_flow_msg, host):"}],"source_content_type":"text/x-python","patch_set":3,"id":"edaff3f2_2839cca2","line":184,"range":{"start_line":184,"start_character":12,"end_line":184,"end_character":27},"in_reply_to":"abbd2991_c2b3067a","updated":"2026-05-26 09:09:12.000000000","message":"Done","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6cd4521f6a343d97e2aa80f851d12918541c8b2","unresolved":true,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":197,"context_line":"            context,"},{"line_number":198,"context_line":"            tap_flow_msg,"},{"line_number":199,"context_line":"            \u0027create_tap_flow\u0027)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def delete_tap_service(self, context, tap_service_msg, host):"}],"source_content_type":"text/x-python","patch_set":3,"id":"921a643c_83466da2","line":198,"range":{"start_line":198,"start_character":12,"end_line":198,"end_character":24},"updated":"2026-05-20 08:08:07.000000000","message":"[tap_flow_msg]","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"875f3a3cd07beac7cb2cab9b34d98545c90a3d41","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":197,"context_line":"            context,"},{"line_number":198,"context_line":"            tap_flow_msg,"},{"line_number":199,"context_line":"            \u0027create_tap_flow\u0027)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def delete_tap_service(self, context, tap_service_msg, host):"}],"source_content_type":"text/x-python","patch_set":3,"id":"f1621fa7_c12a947f","line":198,"range":{"start_line":198,"start_character":12,"end_line":198,"end_character":24},"in_reply_to":"921a643c_83466da2","updated":"2026-05-26 09:09:12.000000000","message":"Done","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6cd4521f6a343d97e2aa80f851d12918541c8b2","unresolved":true,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":215,"context_line":"            context,"},{"line_number":216,"context_line":"            tap_service_msg,"},{"line_number":217,"context_line":"            \u0027delete_tap_service\u0027)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def delete_tap_flow(self, context, tap_flow_msg, host):"}],"source_content_type":"text/x-python","patch_set":3,"id":"a723d65e_fe5c26f5","line":216,"range":{"start_line":216,"start_character":12,"end_line":216,"end_character":27},"updated":"2026-05-20 08:08:07.000000000","message":"[tap_service_msg]","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"875f3a3cd07beac7cb2cab9b34d98545c90a3d41","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":215,"context_line":"            context,"},{"line_number":216,"context_line":"            tap_service_msg,"},{"line_number":217,"context_line":"            \u0027delete_tap_service\u0027)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def delete_tap_flow(self, context, tap_flow_msg, host):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7292f9c9_1de73ce2","line":216,"range":{"start_line":216,"start_character":12,"end_line":216,"end_character":27},"in_reply_to":"a723d65e_fe5c26f5","updated":"2026-05-26 09:09:12.000000000","message":"Done","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6cd4521f6a343d97e2aa80f851d12918541c8b2","unresolved":true,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":229,"context_line":"            context,"},{"line_number":230,"context_line":"            tap_flow_msg,"},{"line_number":231,"context_line":"            \u0027delete_tap_flow\u0027)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @log_helpers.log_method_call"}],"source_content_type":"text/x-python","patch_set":3,"id":"66dd55af_f7bfb16b","line":230,"range":{"start_line":230,"start_character":12,"end_line":230,"end_character":24},"updated":"2026-05-20 08:08:07.000000000","message":"[tap_flow_msg]","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"875f3a3cd07beac7cb2cab9b34d98545c90a3d41","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":229,"context_line":"            context,"},{"line_number":230,"context_line":"            tap_flow_msg,"},{"line_number":231,"context_line":"            \u0027delete_tap_flow\u0027)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @log_helpers.log_method_call"}],"source_content_type":"text/x-python","patch_set":3,"id":"086b01be_b51add8e","line":230,"range":{"start_line":230,"start_character":12,"end_line":230,"end_character":24},"in_reply_to":"66dd55af_f7bfb16b","updated":"2026-05-26 09:09:12.000000000","message":"Done","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6cd4521f6a343d97e2aa80f851d12918541c8b2","unresolved":true,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":246,"context_line":"            context,"},{"line_number":247,"context_line":"            tap_mirror_msg,"},{"line_number":248,"context_line":"            \u0027create_tap_mirror\u0027)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    @log_helpers.log_method_call"}],"source_content_type":"text/x-python","patch_set":3,"id":"cf3f436d_09981a01","line":247,"range":{"start_line":247,"start_character":12,"end_line":247,"end_character":26},"updated":"2026-05-20 08:08:07.000000000","message":"[tap_mirror_msg]","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"875f3a3cd07beac7cb2cab9b34d98545c90a3d41","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":246,"context_line":"            context,"},{"line_number":247,"context_line":"            tap_mirror_msg,"},{"line_number":248,"context_line":"            \u0027create_tap_mirror\u0027)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    @log_helpers.log_method_call"}],"source_content_type":"text/x-python","patch_set":3,"id":"d005f258_cb109253","line":247,"range":{"start_line":247,"start_character":12,"end_line":247,"end_character":26},"in_reply_to":"cf3f436d_09981a01","updated":"2026-05-26 09:09:12.000000000","message":"Done","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6cd4521f6a343d97e2aa80f851d12918541c8b2","unresolved":true,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":263,"context_line":"            context,"},{"line_number":264,"context_line":"            tap_mirror_msg,"},{"line_number":265,"context_line":"            \u0027delete_tap_mirror\u0027)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def _taas_rpc_setup(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"a875dee9_a8500aab","line":264,"range":{"start_line":264,"start_character":12,"end_line":264,"end_character":27},"updated":"2026-05-20 08:08:07.000000000","message":"[tap_mirror_msg]","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"875f3a3cd07beac7cb2cab9b34d98545c90a3d41","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":263,"context_line":"            context,"},{"line_number":264,"context_line":"            tap_mirror_msg,"},{"line_number":265,"context_line":"            \u0027delete_tap_mirror\u0027)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def _taas_rpc_setup(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"698e74f1_27e8dcaa","line":264,"range":{"start_line":264,"start_character":12,"end_line":264,"end_character":27},"in_reply_to":"a875dee9_a8500aab","updated":"2026-05-26 09:09:12.000000000","message":"Done","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6cd4521f6a343d97e2aa80f851d12918541c8b2","unresolved":true,"context_lines":[{"line_number":274,"context_line":"        conn.create_consumer(topics.TAAS_AGENT, endpoints, fanout\u003dFalse)"},{"line_number":275,"context_line":"        conn.consume_in_threads()"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def periodic_tasks(self, context\u003dNone):"},{"line_number":278,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":279,"context_line":"            context\u003dcontext,"},{"line_number":280,"context_line":"            args\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"63a1b878_37afaff1","line":277,"updated":"2026-05-20 08:08:07.000000000","message":"As you reported in the bug, the issue comes from the call in [1], executed every `taas_agent_periodic_interval`.\n\nThis is calling [2], that executes `_invoke_driver_for_plugin_api`. The method call happens in [3].\n\nThe problem I see here: the `periodic_tasks` is called with `args`, that is None. This is wrong: it should be an empty list and we should pass the list expanded.\n\nIMO, we should refactor all calls (see suggested code) and execute the method as I propose (see suggested code).\n\n[1]https://opendev.org/openstack/tap-as-a-service/src/branch/master/neutron_taas/services/taas/agents/common/taas_agent.py#L305-L310\n[2]https://opendev.org/openstack/tap-as-a-service/src/branch/master/neutron_taas/services/taas/agents/common/taas_agent.py#L277-L281\n[3]https://opendev.org/openstack/tap-as-a-service/src/branch/master/neutron_taas/services/taas/agents/common/taas_agent.py#L152-L153","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c6cd4521f6a343d97e2aa80f851d12918541c8b2","unresolved":true,"context_lines":[{"line_number":277,"context_line":"    def periodic_tasks(self, context\u003dNone):"},{"line_number":278,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":279,"context_line":"            context\u003dcontext,"},{"line_number":280,"context_line":"            args\u003dNone,"},{"line_number":281,"context_line":"            func_name\u003d\u0027periodic_tasks\u0027)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def get_driver_type(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9e4cd886_7c1e20d5","line":280,"range":{"start_line":280,"start_character":17,"end_line":280,"end_character":21},"updated":"2026-05-20 08:08:07.000000000","message":"args\u003d[]","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"875f3a3cd07beac7cb2cab9b34d98545c90a3d41","unresolved":false,"context_lines":[{"line_number":277,"context_line":"    def periodic_tasks(self, context\u003dNone):"},{"line_number":278,"context_line":"        return self._invoke_driver_for_plugin_api("},{"line_number":279,"context_line":"            context\u003dcontext,"},{"line_number":280,"context_line":"            args\u003dNone,"},{"line_number":281,"context_line":"            func_name\u003d\u0027periodic_tasks\u0027)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def get_driver_type(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"a43185af_e90e0f2f","line":280,"range":{"start_line":280,"start_character":17,"end_line":280,"end_character":21},"in_reply_to":"9e4cd886_7c1e20d5","updated":"2026-05-26 09:09:12.000000000","message":"Done","commit_id":"1dfd81451da5ecd74e8f8d5fedb2ddd1a211083e"}]}
