)]}'
{"dragonflow/controller/df_bgp_service.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"9588843b1b199a9f82ea222d6f3878b17968fbbe","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def initialize_driver(self):"},{"line_number":48,"context_line":"        try:"},{"line_number":49,"context_line":"            self.bgp_driver \u003d ("},{"line_number":50,"context_line":"                importutils.import_object(cfg.CONF.df_bgp.bgp_speaker_driver,"},{"line_number":51,"context_line":"                                          cfg.CONF.df_bgp))"},{"line_number":52,"context_line":"        except ImportError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_622f703f","line":49,"range":{"start_line":49,"start_character":17,"end_line":49,"end_character":27},"updated":"2017-04-26 06:59:48.000000000","message":"Maybe add an API class with abstract functions:\nadd_bgp_peer, delete_bgp_peer, advertise_route, withdraw_route? This way, changing a driver won\u0027t change the implementation here.","commit_id":"6b2c4bf97e34116da9295f8831d853a9ffe69383"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"3201558a38df47cbc9bc5dd5f20d91eaf9809bb2","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def initialize_driver(self):"},{"line_number":48,"context_line":"        try:"},{"line_number":49,"context_line":"            self.bgp_driver \u003d ("},{"line_number":50,"context_line":"                importutils.import_object(cfg.CONF.df_bgp.bgp_speaker_driver,"},{"line_number":51,"context_line":"                                          cfg.CONF.df_bgp))"},{"line_number":52,"context_line":"        except ImportError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_7855dcc5","line":49,"range":{"start_line":49,"start_character":17,"end_line":49,"end_character":27},"in_reply_to":"5ff73747_02bc2c67","updated":"2017-04-26 10:57:14.000000000","message":"Good enough.","commit_id":"6b2c4bf97e34116da9295f8831d853a9ffe69383"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"f8d441deb96e944c0d50e818a8bf8d69edeb0f6f","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def initialize_driver(self):"},{"line_number":48,"context_line":"        try:"},{"line_number":49,"context_line":"            self.bgp_driver \u003d ("},{"line_number":50,"context_line":"                importutils.import_object(cfg.CONF.df_bgp.bgp_speaker_driver,"},{"line_number":51,"context_line":"                                          cfg.CONF.df_bgp))"},{"line_number":52,"context_line":"        except ImportError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_02bc2c67","line":49,"range":{"start_line":49,"start_character":17,"end_line":49,"end_character":27},"in_reply_to":"5ff73747_622f703f","updated":"2017-04-26 07:20:47.000000000","message":"There is such a base class defined in neutron-dynamic-routing [1]. I think we can use that one.\n\n[1] https://github.com/openstack/neutron-dynamic-routing/blob/master/neutron_dynamic_routing/services/bgp/agent/driver/base.py","commit_id":"6b2c4bf97e34116da9295f8831d853a9ffe69383"}]}
