)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"602f77dcbd0ca7b2f162c2859fb25fb069ee5149","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for the OVN BGP agent to create Kuberentes"},{"line_number":10,"context_line":"resources using the frr-k8s [1]"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"[1] https://github.com/metallb/frr-k8s"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iff5c965b9f67e49dae4dca5f1c590f5784c954ae"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"2775f6b7_c3ec7ae3","line":11,"updated":"2024-12-10 14:10:31.000000000","message":"Can you please file a launchpad bug/rfe and describe what is this patch addressing?","commit_id":"6cee679363169753428513e01a16f86b6237d905"},{"author":{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},"change_message_id":"586045ddc20b6fe2a2d66ec4a8fe68bb2b4e9f95","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for the OVN BGP agent to create Kuberentes"},{"line_number":10,"context_line":"resources using the frr-k8s [1]"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"[1] https://github.com/metallb/frr-k8s"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iff5c965b9f67e49dae4dca5f1c590f5784c954ae"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"331e9437_55095d79","line":11,"in_reply_to":"2775f6b7_c3ec7ae3","updated":"2024-12-10 14:30:43.000000000","message":"Thanks, create a bug for it: https://bugs.launchpad.net/ovn-bgp-agent/+bug/2091374","commit_id":"6cee679363169753428513e01a16f86b6237d905"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"4bb2b402b4aa8eaf4df3203285f1c2b164e51cbd","unresolved":true,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[1] https://github.com/metallb/frr-k8s"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Iff5c965b9f67e49dae4dca5f1c590f5784c954ae"},{"line_number":17,"context_line":"Signed-off-by: Dong Ma \u003cwinterma.dong@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"f9a0300f_637720a7","line":16,"updated":"2024-12-17 04:04:25.000000000","message":"Let\u0027s add the Closes-Bug here.","commit_id":"681b6a03535af9f18d67ff3f50c1cde434ec370c"},{"author":{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},"change_message_id":"81cb326394df8b38bcb8abea6fb0b8d96cadf6e8","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[1] https://github.com/metallb/frr-k8s"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Iff5c965b9f67e49dae4dca5f1c590f5784c954ae"},{"line_number":17,"context_line":"Signed-off-by: Dong Ma \u003cwinterma.dong@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"76d754db_c407d2be","line":16,"in_reply_to":"f9a0300f_637720a7","updated":"2024-12-17 06:54:13.000000000","message":"Done","commit_id":"681b6a03535af9f18d67ff3f50c1cde434ec370c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"602f77dcbd0ca7b2f162c2859fb25fb069ee5149","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"20fa11f5_100c78b0","updated":"2024-12-10 14:10:31.000000000","message":"Thanks for the patch :) I understand this is a WIP but I think it would be good to discuss it, probably on the launchpad. I don\u0027t think it\u0027s a good way forward to add dependency to the agent on kubernetes.","commit_id":"6cee679363169753428513e01a16f86b6237d905"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"31ffb70982cdc6d56b2d9d76bf4930758c465f0a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"22ac65da_b03e85e7","in_reply_to":"20fa11f5_100c78b0","updated":"2024-12-10 14:38:11.000000000","message":"we can probably add it as an extra/optional dependency too so the agent can be installed as such\n\npip install ovn-bgp-agent[frr-k8s]","commit_id":"6cee679363169753428513e01a16f86b6237d905"},{"author":{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},"change_message_id":"af8ed639aab9efed315c9600e346079749d13aa3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"208b1cfb_9dacae45","in_reply_to":"22ac65da_b03e85e7","updated":"2024-12-12 17:29:37.000000000","message":"Done","commit_id":"6cee679363169753428513e01a16f86b6237d905"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"2aca9a2a08bd446d02a65f6be3b1c096418a0226","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"42537194_22d89511","updated":"2024-12-10 15:42:40.000000000","message":"First round of reviews :)","commit_id":"b448c99a3fa3e7411a034cea26383ad3f27eecc8"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"4bb2b402b4aa8eaf4df3203285f1c2b164e51cbd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4a734673_d0754b2b","updated":"2024-12-17 04:04:25.000000000","message":"Small thing that I think we should do would be perhaps to split this into two patches, one that makes the driver composable, and then our FRR-K8s patch, in case upstream doesn\u0027t want to land this (or making it easier to land this).","commit_id":"681b6a03535af9f18d67ff3f50c1cde434ec370c"},{"author":{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},"change_message_id":"fa04cf9d6ddc82ec9836eead42e8bc7fd2993949","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2646d650_3e4d4031","in_reply_to":"4a734673_d0754b2b","updated":"2025-10-17 14:50:05.000000000","message":"Done","commit_id":"681b6a03535af9f18d67ff3f50c1cde434ec370c"}],"ovn_bgp_agent/config.py":[{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"4bb2b402b4aa8eaf4df3203285f1c2b164e51cbd","unresolved":true,"context_lines":[{"line_number":68,"context_line":"               default\u003d\u0027ovn_bgp_driver\u0027),"},{"line_number":69,"context_line":"    cfg.StrOpt(\u0027frr_driver\u0027,"},{"line_number":70,"context_line":"               help\u003d\u0027FRR Driver to be used\u0027,"},{"line_number":71,"context_line":"               choices\u003d(\u0027frr\u0027, \u0027frr_k8s\u0027),"},{"line_number":72,"context_line":"               default\u003d\u0027frr\u0027),"},{"line_number":73,"context_line":"    cfg.StrOpt(\u0027ovsdb_connection\u0027,"},{"line_number":74,"context_line":"               default\u003d\u0027unix:/usr/local/var/run/openvswitch/db.sock\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5ab8a799_3c02e993","line":71,"updated":"2024-12-17 04:04:25.000000000","message":"Do we need to make this an explicit choice here?  Can we make it sorta generic to point to a driver so it can be loaded via stevedore for any out-of-tree thing (assuming upstream doesn\u0027t accept this).","commit_id":"681b6a03535af9f18d67ff3f50c1cde434ec370c"},{"author":{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},"change_message_id":"fa04cf9d6ddc82ec9836eead42e8bc7fd2993949","unresolved":false,"context_lines":[{"line_number":68,"context_line":"               default\u003d\u0027ovn_bgp_driver\u0027),"},{"line_number":69,"context_line":"    cfg.StrOpt(\u0027frr_driver\u0027,"},{"line_number":70,"context_line":"               help\u003d\u0027FRR Driver to be used\u0027,"},{"line_number":71,"context_line":"               choices\u003d(\u0027frr\u0027, \u0027frr_k8s\u0027),"},{"line_number":72,"context_line":"               default\u003d\u0027frr\u0027),"},{"line_number":73,"context_line":"    cfg.StrOpt(\u0027ovsdb_connection\u0027,"},{"line_number":74,"context_line":"               default\u003d\u0027unix:/usr/local/var/run/openvswitch/db.sock\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"214152b0_a9117465","line":71,"in_reply_to":"5ab8a799_3c02e993","updated":"2025-10-17 14:50:05.000000000","message":"Done","commit_id":"681b6a03535af9f18d67ff3f50c1cde434ec370c"}],"ovn_bgp_agent/drivers/frr_driver_api.py":[{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"2aca9a2a08bd446d02a65f6be3b1c096418a0226","unresolved":true,"context_lines":[{"line_number":16,"context_line":"from stevedore import driver as stevedore_driver"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class FRRDriverBase(object, metaclass\u003dabc.ABCMeta):"},{"line_number":20,"context_line":"    \"\"\"Base class for FRR drivers."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"c3d69840_2bfe79fc","line":19,"updated":"2024-12-10 15:42:40.000000000","message":"I like this approach here of creating a base driver.","commit_id":"b448c99a3fa3e7411a034cea26383ad3f27eecc8"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"4bb2b402b4aa8eaf4df3203285f1c2b164e51cbd","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from stevedore import driver as stevedore_driver"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class FRRDriverBase(object, metaclass\u003dabc.ABCMeta):"},{"line_number":20,"context_line":"    \"\"\"Base class for FRR drivers."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"bc184049_1e71f8df","line":19,"in_reply_to":"c3d69840_2bfe79fc","updated":"2024-12-17 04:04:25.000000000","message":"Done","commit_id":"b448c99a3fa3e7411a034cea26383ad3f27eecc8"},{"author":{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},"change_message_id":"af8ed639aab9efed315c9600e346079749d13aa3","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @abc.abstractmethod"},{"line_number":43,"context_line":"    def vrf_reconfigure(self, evpn_info, action):"},{"line_number":44,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":2,"id":"de98a9f6_2b98009d","line":44,"in_reply_to":"65490762_81f9c18f","updated":"2024-12-12 17:29:37.000000000","message":"Done","commit_id":"b448c99a3fa3e7411a034cea26383ad3f27eecc8"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"2aca9a2a08bd446d02a65f6be3b1c096418a0226","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @abc.abstractmethod"},{"line_number":43,"context_line":"    def vrf_reconfigure(self, evpn_info, action):"},{"line_number":44,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":2,"id":"65490762_81f9c18f","line":44,"in_reply_to":"873fe67d_6642b6f2","updated":"2024-12-10 15:42:40.000000000","message":"\u003e pep8: W292 no newline at end of file\n\nPlease fix.","commit_id":"b448c99a3fa3e7411a034cea26383ad3f27eecc8"}],"ovn_bgp_agent/drivers/openstack/utils/bgp.py":[{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"2aca9a2a08bd446d02a65f6be3b1c096418a0226","unresolved":true,"context_lines":[{"line_number":82,"context_line":"        frr.set_default_redistribute([\u0027connected\u0027, \u0027kernel\u0027])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    # Ensure FRR is configure to leak the routes"},{"line_number":85,"context_line":"    if CONF.frr_driver \u003d\u003d \u0027frr_k8s\u0027:"},{"line_number":86,"context_line":"        sessions \u003d []"},{"line_number":87,"context_line":"        session \u003d BGPSession("},{"line_number":88,"context_line":"            peer_address \u003d CONF.bgp.peer_address,"}],"source_content_type":"text/x-python","patch_set":2,"id":"2ec32a29_01055b32","line":85,"updated":"2024-12-10 15:42:40.000000000","message":"I think we should use stevedore to load the driver, and then call the same functions from the loaded driver.\n\nThis would mean to refactor the existing driver to use the implementation/base you created.","commit_id":"b448c99a3fa3e7411a034cea26383ad3f27eecc8"},{"author":{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},"change_message_id":"af8ed639aab9efed315c9600e346079749d13aa3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        frr.set_default_redistribute([\u0027connected\u0027, \u0027kernel\u0027])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    # Ensure FRR is configure to leak the routes"},{"line_number":85,"context_line":"    if CONF.frr_driver \u003d\u003d \u0027frr_k8s\u0027:"},{"line_number":86,"context_line":"        sessions \u003d []"},{"line_number":87,"context_line":"        session \u003d BGPSession("},{"line_number":88,"context_line":"            peer_address \u003d CONF.bgp.peer_address,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ab0b0b45_9fa4ab13","line":85,"in_reply_to":"2ec32a29_01055b32","updated":"2024-12-12 17:29:37.000000000","message":"Done","commit_id":"b448c99a3fa3e7411a034cea26383ad3f27eecc8"}],"setup.cfg":[{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"4bb2b402b4aa8eaf4df3203285f1c2b164e51cbd","unresolved":true,"context_lines":[{"line_number":43,"context_line":"oslo.config.opts \u003d"},{"line_number":44,"context_line":"    ovnbgpagent \u003d ovn_bgp_agent.config:list_opts"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"ovn_bgp_agent.frr_drivers \u003d"},{"line_number":47,"context_line":"    frr \u003d ovn_bgp_agent.drivers.openstack.utils.frr:FRRDriver"},{"line_number":48,"context_line":"    frr_k8s \u003d ovn_bgp_agent.drivers.openstack.utils.frr_k8s:FRRK8sDriver"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"2b273062_013750b2","line":46,"updated":"2024-12-17 04:04:25.000000000","message":"Maybe this could be ovn_bgp_agent.drivers and the drivers can be frr and frr_k8s ?","commit_id":"681b6a03535af9f18d67ff3f50c1cde434ec370c"},{"author":{"_account_id":9725,"name":"Dong Ma","email":"winterma.dong@gmail.com","username":"larainema"},"change_message_id":"fa04cf9d6ddc82ec9836eead42e8bc7fd2993949","unresolved":false,"context_lines":[{"line_number":43,"context_line":"oslo.config.opts \u003d"},{"line_number":44,"context_line":"    ovnbgpagent \u003d ovn_bgp_agent.config:list_opts"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"ovn_bgp_agent.frr_drivers \u003d"},{"line_number":47,"context_line":"    frr \u003d ovn_bgp_agent.drivers.openstack.utils.frr:FRRDriver"},{"line_number":48,"context_line":"    frr_k8s \u003d ovn_bgp_agent.drivers.openstack.utils.frr_k8s:FRRK8sDriver"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"b52e3908_f2dc48b2","line":46,"in_reply_to":"2b273062_013750b2","updated":"2025-10-17 14:50:05.000000000","message":"Done","commit_id":"681b6a03535af9f18d67ff3f50c1cde434ec370c"}]}
