)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"ab879c946d93795a85fee21b24d791fb25fe4f6b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Functional tests for BGPVPN V2 Driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I79355460426f80697d0839307a527f6ae5c74b6e"},{"line_number":10,"context_line":"Signed-off-by: Deepthi V V \u003cdeepthi.v.v@ericsson.com\u003e"},{"line_number":11,"context_line":"Closes-Bug: #1656903"},{"line_number":12,"context_line":"Implements: blueprint bgpvpn-v2-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9a30ddce_633b2b39","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":53},"updated":"2017-03-08 15:12:37.000000000","message":"Please drop s-o-b because opensetack doesn\u0027t adopt it.","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"ede6f706c20ddfda29d75f4fca0481eab53cfefe","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Functional tests for BGPVPN V2 Driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I79355460426f80697d0839307a527f6ae5c74b6e"},{"line_number":10,"context_line":"Signed-off-by: Deepthi V V \u003cdeepthi.v.v@ericsson.com\u003e"},{"line_number":11,"context_line":"Closes-Bug: #1656903"},{"line_number":12,"context_line":"Implements: blueprint bgpvpn-v2-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9a30ddce_d1ce58b3","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":53},"in_reply_to":"9a30ddce_633b2b39","updated":"2017-03-08 17:39:29.000000000","message":"Done","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"}],"networking_odl/tests/functional/test_bgpvpn.py":[{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"bf06c2011614f6d9757ab4efc1d8ea92b882e412","unresolved":false,"context_lines":[{"line_number":26,"context_line":"# BGPVPN Table metadata should be imported before"},{"line_number":27,"context_line":"# sqlalchemy metadata.create_all call else tables"},{"line_number":28,"context_line":"# will not be created."},{"line_number":29,"context_line":"from networking_bgpvpn.neutron.db import bgpvpn_db  # noqa"},{"line_number":30,"context_line":"from networking_bgpvpn.neutron.extensions import bgpvpn"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from networking_odl.common import constants as odl_const"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_12cf6db1","line":29,"updated":"2017-02-18 03:12:50.000000000","message":"good catch.","commit_id":"03a348da971f92d50d7a1d41807fd02ec6c172d2"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"bf06c2011614f6d9757ab4efc1d8ea92b882e412","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        tenant_id \u003d tenant_id or _uuid()"},{"line_number":44,"context_line":"        data \u003d {\u0027bgpvpn\u0027: {\u0027tenant_id\u0027: tenant_id}}"},{"line_number":45,"context_line":"        data[\u0027bgpvpn\u0027][\u0027type\u0027] \u003d \u0027l3\u0027"},{"line_number":46,"context_line":"        data[\u0027bgpvpn\u0027][\u0027route_targets\u0027] \u003d [\"64512:1444\"]"},{"line_number":47,"context_line":"        if name:"},{"line_number":48,"context_line":"            data[\u0027bgpvpn\u0027][\u0027name\u0027] \u003d name"},{"line_number":49,"context_line":"        for arg in (arg_list or ()):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_92699d8e","line":46,"updated":"2017-02-18 03:12:50.000000000","message":"Take type as an input the method.\n\nAlso drive a standard rd from kwargs. \n\nThe default for route_targets can be here, but use a constant instead of inline setting.","commit_id":"03a348da971f92d50d7a1d41807fd02ec6c172d2"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"ad4df7c94665a5ae139e91035bf9de3bbdea25f4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        tenant_id \u003d tenant_id or _uuid()"},{"line_number":44,"context_line":"        data \u003d {\u0027bgpvpn\u0027: {\u0027tenant_id\u0027: tenant_id}}"},{"line_number":45,"context_line":"        data[\u0027bgpvpn\u0027][\u0027type\u0027] \u003d \u0027l3\u0027"},{"line_number":46,"context_line":"        data[\u0027bgpvpn\u0027][\u0027route_targets\u0027] \u003d [\"64512:1444\"]"},{"line_number":47,"context_line":"        if name:"},{"line_number":48,"context_line":"            data[\u0027bgpvpn\u0027][\u0027name\u0027] \u003d name"},{"line_number":49,"context_line":"        for arg in (arg_list or ()):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_27688df5","line":46,"in_reply_to":"da36d5c6_92699d8e","updated":"2017-02-20 16:46:31.000000000","message":"Modified code for creating data for bgpvpn.","commit_id":"03a348da971f92d50d7a1d41807fd02ec6c172d2"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"bf06c2011614f6d9757ab4efc1d8ea92b882e412","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":126,"context_line":"        with self.bgpvpn(name\u003d\u0027mybgpvpn\u0027) as bgpvpn:"},{"line_number":127,"context_line":"            self.resource_delete_test(odl_const.ODL_BGPVPN, bgpvpn,"},{"line_number":128,"context_line":"                                      odl_const.ODL_BGPVPN)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"class TestBGPVPNV2Driver(base.V2DriverAdjustment, _TestBGPVPNBase,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_d23075a1","line":128,"updated":"2017-02-18 03:12:50.000000000","message":"add tests for network association, router association and both network-and-router-assocation to a bgpvpn.","commit_id":"03a348da971f92d50d7a1d41807fd02ec6c172d2"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"ad4df7c94665a5ae139e91035bf9de3bbdea25f4","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":126,"context_line":"        with self.bgpvpn(name\u003d\u0027mybgpvpn\u0027) as bgpvpn:"},{"line_number":127,"context_line":"            self.resource_delete_test(odl_const.ODL_BGPVPN, bgpvpn,"},{"line_number":128,"context_line":"                                      odl_const.ODL_BGPVPN)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"class TestBGPVPNV2Driver(base.V2DriverAdjustment, _TestBGPVPNBase,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_877779d3","line":128,"in_reply_to":"da36d5c6_d23075a1","updated":"2017-02-20 16:46:31.000000000","message":"Will be added in next patchset.","commit_id":"03a348da971f92d50d7a1d41807fd02ec6c172d2"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"c9a51e396fbabebadf886f471c17fdf30c54b288","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"da36d5c6_1d062cce","updated":"2017-02-22 16:26:33.000000000","message":"Many things here look very similar to what is in networking_bgpvpn/tests/unit/services/test_plugin.py [1].\n\nHave you considered inheriting instead of copy pasting, like what the v1 odl driver was doing ? [2]\n\n[1] http://git.openstack.org/cgit/openstack/networking-bgpvpn/tree/networking_bgpvpn/tests/unit/services/test_plugin.py\n[2] http://git.openstack.org/cgit/openstack/networking-bgpvpn/tree/networking_bgpvpn/tests/unit/services/odl/test_odl.py","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"cfd215626fe29d178c741fc04b888b9d650859b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"da36d5c6_aa9e6b04","in_reply_to":"da36d5c6_1d062cce","updated":"2017-02-24 18:36:42.000000000","message":"Done","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"ac4b69598c308d5bba487d89eb8a250b03906c70","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        # This is done here as the setup process won\u0027t"},{"line_number":117,"context_line":"        # initialize the main API router which extends"},{"line_number":118,"context_line":"        # the global attribute map"},{"line_number":119,"context_line":"        l3resources \u003d super(BGPVPNTestExtensionManager, self).get_resources()"},{"line_number":120,"context_line":"        attributes.RESOURCE_ATTRIBUTE_MAP.update("},{"line_number":121,"context_line":"            bgp_ext.bgpvpn.RESOURCE_ATTRIBUTE_MAP)"},{"line_number":122,"context_line":"        return (bgp_ext.bgpvpn.Bgpvpn.get_resources() + l3resources)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_670dd78f","line":119,"updated":"2017-02-22 16:15:37.000000000","message":"is there a reason that we need l3resources also? Is that for the associate router case?","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"cfd215626fe29d178c741fc04b888b9d650859b0","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        # This is done here as the setup process won\u0027t"},{"line_number":117,"context_line":"        # initialize the main API router which extends"},{"line_number":118,"context_line":"        # the global attribute map"},{"line_number":119,"context_line":"        l3resources \u003d super(BGPVPNTestExtensionManager, self).get_resources()"},{"line_number":120,"context_line":"        attributes.RESOURCE_ATTRIBUTE_MAP.update("},{"line_number":121,"context_line":"            bgp_ext.bgpvpn.RESOURCE_ATTRIBUTE_MAP)"},{"line_number":122,"context_line":"        return (bgp_ext.bgpvpn.Bgpvpn.get_resources() + l3resources)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_2afc3b3d","line":119,"in_reply_to":"da36d5c6_670dd78f","updated":"2017-02-24 18:36:42.000000000","message":"Changed code to use networking_bgpvpn.tests.unit.services.test_plugin.BgpvpnTestCaseMixin.","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"ac4b69598c308d5bba487d89eb8a250b03906c70","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            self.assert_resource_created(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":159,"context_line":"        with self.bgpvpn(do_delete\u003dFalse, name\u003d\u0027mybgpvpn\u0027) as bgpvpn:"},{"line_number":160,"context_line":"            self._delete(\u0027bgpvpn/bgpvpns\u0027,"},{"line_number":161,"context_line":"                         bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027])"},{"line_number":162,"context_line":"            self.assertIsNone("}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_9a7dc21e","line":159,"updated":"2017-02-22 16:15:37.000000000","message":"you can use self.resource_delete_test() here directly too.","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"cfd215626fe29d178c741fc04b888b9d650859b0","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            self.assert_resource_created(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":159,"context_line":"        with self.bgpvpn(do_delete\u003dFalse, name\u003d\u0027mybgpvpn\u0027) as bgpvpn:"},{"line_number":160,"context_line":"            self._delete(\u0027bgpvpn/bgpvpns\u0027,"},{"line_number":161,"context_line":"                         bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027])"},{"line_number":162,"context_line":"            self.assertIsNone("}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_156cfc33","line":159,"in_reply_to":"da36d5c6_9a7dc21e","updated":"2017-02-24 18:36:42.000000000","message":"self.resource_delete_test() expects resource_type. For Opendaylight resource_type \u003d /bgpvns and for Openstack resource_type \u003d /bgpvpn/bgpvpns. Hence used _delete.","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"ac4b69598c308d5bba487d89eb8a250b03906c70","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_associate_net(self):"},{"line_number":166,"context_line":"        with self.port() as port1:"},{"line_number":167,"context_line":"            net_id \u003d port1[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":168,"context_line":"            with self.bgpvpn() as bgpvpn:"},{"line_number":169,"context_line":"                id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":170,"context_line":"                with self.assoc_net(id, net_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_bacd265f","line":167,"updated":"2017-02-22 16:15:37.000000000","message":"is there a reason a port need to be present.  Can\u0027t we directly use self.network()","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"cfd215626fe29d178c741fc04b888b9d650859b0","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_associate_net(self):"},{"line_number":166,"context_line":"        with self.port() as port1:"},{"line_number":167,"context_line":"            net_id \u003d port1[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":168,"context_line":"            with self.bgpvpn() as bgpvpn:"},{"line_number":169,"context_line":"                id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":170,"context_line":"                with self.assoc_net(id, net_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_5572f411","line":167,"in_reply_to":"da36d5c6_bacd265f","updated":"2017-02-24 18:36:42.000000000","message":"Done","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"ac4b69598c308d5bba487d89eb8a250b03906c70","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                    response \u003d self.get_odl_resource("},{"line_number":172,"context_line":"                        odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":173,"context_line":"                    self.assertEqual("},{"line_number":174,"context_line":"                        response[odl_const.ODL_BGPVPN][\u0027networks\u0027][0],"},{"line_number":175,"context_line":"                        net_id)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_associate_router(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_2732ff10","line":174,"updated":"2017-02-22 16:15:37.000000000","message":"please add the following too:\n\na. one tc for associate_multiple_networks \nb. one tc for associate_a_network_and_a_router.\nc. one tc for disassociation one network alone from multiple networks already associated to a bgpvpn.","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"cfd215626fe29d178c741fc04b888b9d650859b0","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                    response \u003d self.get_odl_resource("},{"line_number":172,"context_line":"                        odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":173,"context_line":"                    self.assertEqual("},{"line_number":174,"context_line":"                        response[odl_const.ODL_BGPVPN][\u0027networks\u0027][0],"},{"line_number":175,"context_line":"                        net_id)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_associate_router(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_d55c247f","line":174,"in_reply_to":"da36d5c6_2732ff10","updated":"2017-02-24 18:36:42.000000000","message":"Done","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"ac4b69598c308d5bba487d89eb8a250b03906c70","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def test_disassociate_net(self):"},{"line_number":190,"context_line":"        with self.port() as port1:"},{"line_number":191,"context_line":"            net_id \u003d port1[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":192,"context_line":"            with self.bgpvpn() as bgpvpn:"},{"line_number":193,"context_line":"                id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":194,"context_line":"                with self.assoc_net(id, net_id, do_disassociate\u003dFalse) \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_dafd7a3b","line":191,"updated":"2017-02-22 16:15:37.000000000","message":"ditto comment on associaate net applies here.","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"cfd215626fe29d178c741fc04b888b9d650859b0","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def test_disassociate_net(self):"},{"line_number":190,"context_line":"        with self.port() as port1:"},{"line_number":191,"context_line":"            net_id \u003d port1[\u0027port\u0027][\u0027network_id\u0027]"},{"line_number":192,"context_line":"            with self.bgpvpn() as bgpvpn:"},{"line_number":193,"context_line":"                id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":194,"context_line":"                with self.assoc_net(id, net_id, do_disassociate\u003dFalse) \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_15531c6c","line":191,"in_reply_to":"da36d5c6_dafd7a3b","updated":"2017-02-24 18:36:42.000000000","message":"Done","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"ac4b69598c308d5bba487d89eb8a250b03906c70","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        self.bgpvpn_data \u003d {\u0027bgpvpn\u0027: {\u0027name\u0027: \u0027bgpvpn1\u0027,"},{"line_number":240,"context_line":"                                       \u0027type\u0027: \u0027l3\u0027,"},{"line_number":241,"context_line":"                                       \u0027route_targets\u0027: [\u00271234:56\u0027],"},{"line_number":242,"context_line":"                                       \u0027tenant_id\u0027: self._tenant_id}}"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_1a00f200","line":242,"updated":"2017-02-22 16:15:37.000000000","message":"Since we use RD of a bgpvpn widely inside ODL, can our example here have an RD list also here?","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"cfd215626fe29d178c741fc04b888b9d650859b0","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        self.bgpvpn_data \u003d {\u0027bgpvpn\u0027: {\u0027name\u0027: \u0027bgpvpn1\u0027,"},{"line_number":240,"context_line":"                                       \u0027type\u0027: \u0027l3\u0027,"},{"line_number":241,"context_line":"                                       \u0027route_targets\u0027: [\u00271234:56\u0027],"},{"line_number":242,"context_line":"                                       \u0027tenant_id\u0027: self._tenant_id}}"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_554914b6","line":242,"in_reply_to":"da36d5c6_1a00f200","updated":"2017-02-24 18:36:42.000000000","message":"Done","commit_id":"4cb4769696eea5ec42b9364f739afee2817969dc"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"2a642695c6397194deb5755439df1e8703fef4be","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class NeutronDbPluginV2TestCase(test_db_base_plugin_v2."},{"line_number":32,"context_line":"                                NeutronDbPluginV2TestCase):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def setUp(self, plugin\u003dNone, service_plugins\u003dNone,"},{"line_number":35,"context_line":"              ext_mgr\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_6011d803","line":32,"range":{"start_line":32,"start_character":59,"end_line":32,"end_character":59},"updated":"2017-02-25 07:45:16.000000000","message":"is it necessary to override setup() in this most basic class, just to overload the service_providers value?\n\nCan we be able to do this below in TestBGPVPNV2Driver?","commit_id":"ef1a2cae41860e5c1589da1720b0dfb2da046dd6"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"bec759b086050703fad3791c690215d6089968e6","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class NeutronDbPluginV2TestCase(test_db_base_plugin_v2."},{"line_number":32,"context_line":"                                NeutronDbPluginV2TestCase):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def setUp(self, plugin\u003dNone, service_plugins\u003dNone,"},{"line_number":35,"context_line":"              ext_mgr\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_626d13cc","line":32,"range":{"start_line":32,"start_character":59,"end_line":32,"end_character":59},"in_reply_to":"da36d5c6_6011d803","updated":"2017-02-28 11:59:24.000000000","message":"Handled using setUp and setup_parent methods in _TestBGPVPNBase.","commit_id":"ef1a2cae41860e5c1589da1720b0dfb2da046dd6"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"2a642695c6397194deb5755439df1e8703fef4be","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def test_bgpvpn_create(self):"},{"line_number":59,"context_line":"        with self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":60,"context_line":"            self.assert_resource_created(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":63,"context_line":"        with self.bgpvpn(do_delete\u003dFalse,"},{"line_number":64,"context_line":"                         route_distinguishers\u003dself.rds) as bgpvpn:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_e0ece8bc","line":61,"updated":"2017-02-25 07:45:16.000000000","message":"have one more create bgpvpn test here that creates plain way (i.e, without rds).","commit_id":"ef1a2cae41860e5c1589da1720b0dfb2da046dd6"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"bec759b086050703fad3791c690215d6089968e6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def test_bgpvpn_create(self):"},{"line_number":59,"context_line":"        with self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":60,"context_line":"            self.assert_resource_created(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":63,"context_line":"        with self.bgpvpn(do_delete\u003dFalse,"},{"line_number":64,"context_line":"                         route_distinguishers\u003dself.rds) as bgpvpn:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_209b6019","line":61,"in_reply_to":"da36d5c6_e0ece8bc","updated":"2017-02-28 11:59:24.000000000","message":"Done","commit_id":"ef1a2cae41860e5c1589da1720b0dfb2da046dd6"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"2a642695c6397194deb5755439df1e8703fef4be","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            net_id \u003d net1[\u0027network\u0027][\u0027id\u0027]"},{"line_number":83,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":84,"context_line":"            with self.assoc_net(id, net_id, do_disassociate\u003dFalse) \\"},{"line_number":85,"context_line":"                    as assoc_net:"},{"line_number":86,"context_line":"                del_req \u003d self.new_delete_request("},{"line_number":87,"context_line":"                    \u0027bgpvpn/bgpvpns\u0027,"},{"line_number":88,"context_line":"                    id, fmt\u003dself.fmt,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_600e388d","line":85,"updated":"2017-02-25 07:45:16.000000000","message":"do an assertEqual here to check if networks[0] is available.","commit_id":"ef1a2cae41860e5c1589da1720b0dfb2da046dd6"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"bec759b086050703fad3791c690215d6089968e6","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            net_id \u003d net1[\u0027network\u0027][\u0027id\u0027]"},{"line_number":83,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":84,"context_line":"            with self.assoc_net(id, net_id, do_disassociate\u003dFalse) \\"},{"line_number":85,"context_line":"                    as assoc_net:"},{"line_number":86,"context_line":"                del_req \u003d self.new_delete_request("},{"line_number":87,"context_line":"                    \u0027bgpvpn/bgpvpns\u0027,"},{"line_number":88,"context_line":"                    id, fmt\u003dself.fmt,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_406cd407","line":85,"in_reply_to":"da36d5c6_600e388d","updated":"2017-02-28 11:59:24.000000000","message":"Combined associate and dissociate networks to single test case: test_associate_dissociate_net","commit_id":"ef1a2cae41860e5c1589da1720b0dfb2da046dd6"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"2a642695c6397194deb5755439df1e8703fef4be","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            router_id \u003d router[\u0027router\u0027][\u0027id\u0027]"},{"line_number":141,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":142,"context_line":"            with self.assoc_router(id, router_id, do_disassociate\u003dFalse) \\"},{"line_number":143,"context_line":"                    as assoc_router:"},{"line_number":144,"context_line":"                del_req \u003d self.new_delete_request("},{"line_number":145,"context_line":"                    \u0027bgpvpn/bgpvpns\u0027,"},{"line_number":146,"context_line":"                    id, fmt\u003dself.fmt,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_400bf47c","line":143,"updated":"2017-02-25 07:45:16.000000000","message":"do an assertEqual here to check router[0] is available.","commit_id":"ef1a2cae41860e5c1589da1720b0dfb2da046dd6"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"bec759b086050703fad3791c690215d6089968e6","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            router_id \u003d router[\u0027router\u0027][\u0027id\u0027]"},{"line_number":141,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":142,"context_line":"            with self.assoc_router(id, router_id, do_disassociate\u003dFalse) \\"},{"line_number":143,"context_line":"                    as assoc_router:"},{"line_number":144,"context_line":"                del_req \u003d self.new_delete_request("},{"line_number":145,"context_line":"                    \u0027bgpvpn/bgpvpns\u0027,"},{"line_number":146,"context_line":"                    id, fmt\u003dself.fmt,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_a07590cb","line":143,"in_reply_to":"da36d5c6_400bf47c","updated":"2017-02-28 11:59:24.000000000","message":"Combined associate and dissociate routers to single test case: test_associate_dissociate_router","commit_id":"ef1a2cae41860e5c1589da1720b0dfb2da046dd6"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"724a7e8fa3e819809e8ff05f8f9150f42ea30ae2","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.tests.unit.plugins.ml2 import test_plugin"},{"line_number":21,"context_line":"from neutron.tests.unit import testlib_api"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# BGPVPN Table metadata should be imported before"},{"line_number":24,"context_line":"# sqlalchemy metadata.create_all call else tables"},{"line_number":25,"context_line":"# will not be created."},{"line_number":26,"context_line":"from networking_bgpvpn.neutron.db import bgpvpn_db  # noqa"},{"line_number":27,"context_line":"from networking_bgpvpn.tests.unit.services.test_plugin \\"},{"line_number":28,"context_line":"    import BgpvpnTestCaseMixin"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_51ba7424","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":22},"updated":"2017-03-02 02:38:58.000000000","message":"OdlTestsBase doesn\u0027t setup db. the following test class needs to inherit appropriate class.\nBaseSqlTestCase?","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"0ca987d2ad1815dcf671e3ffaaeba98f68827c16","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.tests.unit.plugins.ml2 import test_plugin"},{"line_number":21,"context_line":"from neutron.tests.unit import testlib_api"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# BGPVPN Table metadata should be imported before"},{"line_number":24,"context_line":"# sqlalchemy metadata.create_all call else tables"},{"line_number":25,"context_line":"# will not be created."},{"line_number":26,"context_line":"from networking_bgpvpn.neutron.db import bgpvpn_db  # noqa"},{"line_number":27,"context_line":"from networking_bgpvpn.tests.unit.services.test_plugin \\"},{"line_number":28,"context_line":"    import BgpvpnTestCaseMixin"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_3d5f8e42","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":22},"in_reply_to":"ba2be162_51ba7424","updated":"2017-03-02 06:39:37.000000000","message":"We do have the following hierarchy, TestBGPVPNV2Driver \u003c- base.V2DriverAdjustment \u003c- test_base_db.ODLBaseDbTestCase \u003c- SqlTestCaseLight \u003c- BaseSqlTestCase","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"724a7e8fa3e819809e8ff05f8f9150f42ea30ae2","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class _TestBGPVPNBase(base.OdlTestsBase):"},{"line_number":35,"context_line":"    rds \u003d [\u0027100:1\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def setUp(self, plugin\u003dNone, service_plugins\u003dNone,"},{"line_number":38,"context_line":"              ext_mgr\u003dNone):"},{"line_number":39,"context_line":"        provider \u003d {"},{"line_number":40,"context_line":"            \u0027service_type\u0027: \u0027BGPVPN\u0027,"},{"line_number":41,"context_line":"            \u0027name\u0027: \u0027OpenDaylight\u0027,"},{"line_number":42,"context_line":"            \u0027driver\u0027: \u0027networking_odl.bgpvpn.odl_v2.OpenDaylightBgpvpnDriver\u0027,"},{"line_number":43,"context_line":"            \u0027default\u0027: True"},{"line_number":44,"context_line":"        }"},{"line_number":45,"context_line":"        self.service_providers.return_value \u003d [provider]"},{"line_number":46,"context_line":"        self.plugin_arg \u003d plugin"},{"line_number":47,"context_line":"        self.service_plugin_arg \u003d service_plugins"},{"line_number":48,"context_line":"        self.ext_mgr_arg \u003d ext_mgr"},{"line_number":49,"context_line":"        super(_TestBGPVPNBase, self).setUp()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def setup_parent(self):"},{"line_number":52,"context_line":"        \"\"\"Perform parent setup with the common plugin configuration class.\"\"\""},{"line_number":53,"context_line":"        # Ensure that the parent setup can be called without arguments"},{"line_number":54,"context_line":"        # by the common configuration setUp."},{"line_number":55,"context_line":"        parent_setup \u003d functools.partial("},{"line_number":56,"context_line":"            super(test_plugin.Ml2PluginV2TestCase, self).setUp,"},{"line_number":57,"context_line":"            plugin\u003dself.plugin_arg,"},{"line_number":58,"context_line":"            ext_mgr\u003dself.ext_mgr_arg,"},{"line_number":59,"context_line":"            service_plugins\u003dself.service_plugin_arg"},{"line_number":60,"context_line":"        )"},{"line_number":61,"context_line":"        self.useFixture(test_plugin.Ml2ConfFixture(parent_setup))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def test_bgpvpn_create(self):"},{"line_number":64,"context_line":"        with self.bgpvpn() as bgpvpn:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_510434bf","line":61,"range":{"start_line":37,"start_character":0,"end_line":61,"end_character":65},"updated":"2017-03-02 02:38:58.000000000","message":"this would be common among other drivers.\nLater we can refactor it after merges.","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"ed49107dcacc7eedf4dc1c8fe720a9a3ab1b9c2f","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def test_bgpvpn_create_with_rds(self):"},{"line_number":68,"context_line":"        with self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":69,"context_line":"            self.assert_resource_created(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":72,"context_line":"        with self.bgpvpn(do_delete\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_d962783d","line":69,"range":{"start_line":69,"start_character":17,"end_line":69,"end_character":40},"updated":"2017-03-06 09:53:06.000000000","message":"You should probably use something more concrete to test that the RDS value was passed to ODL, this method only checks that the resource exists.","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"a94307fc14d94634045b053551997b8f2bc48453","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def test_bgpvpn_create_with_rds(self):"},{"line_number":68,"context_line":"        with self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":69,"context_line":"            self.assert_resource_created(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":72,"context_line":"        with self.bgpvpn(do_delete\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_dd7ed9e2","line":69,"range":{"start_line":69,"start_character":17,"end_line":69,"end_character":40},"in_reply_to":"ba2be162_d962783d","updated":"2017-03-06 12:42:21.000000000","message":"Done","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"ed49107dcacc7eedf4dc1c8fe720a9a3ab1b9c2f","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":72,"context_line":"        with self.bgpvpn(do_delete\u003dFalse,"},{"line_number":73,"context_line":"                         route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":74,"context_line":"            self._delete(\u0027bgpvpn/bgpvpns\u0027, bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027])"},{"line_number":75,"context_line":"            self.assertIsNone("},{"line_number":76,"context_line":"                self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn))"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_32af297e","line":73,"range":{"start_line":73,"start_character":25,"end_line":73,"end_character":54},"updated":"2017-03-06 09:53:06.000000000","message":"Is this relevant for deletion?","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"a94307fc14d94634045b053551997b8f2bc48453","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":72,"context_line":"        with self.bgpvpn(do_delete\u003dFalse,"},{"line_number":73,"context_line":"                         route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":74,"context_line":"            self._delete(\u0027bgpvpn/bgpvpns\u0027, bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027])"},{"line_number":75,"context_line":"            self.assertIsNone("},{"line_number":76,"context_line":"                self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn))"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_5d24a90b","line":73,"range":{"start_line":73,"start_character":25,"end_line":73,"end_character":54},"in_reply_to":"ba2be162_32af297e","updated":"2017-03-06 12:42:21.000000000","message":"No. Hence removed.","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"ed49107dcacc7eedf4dc1c8fe720a9a3ab1b9c2f","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":96,"context_line":"            with self.assoc_net(id, net_id1), self.assoc_net(id, net_id2):"},{"line_number":97,"context_line":"                response \u003d self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":98,"context_line":"                self.assertItemsEqual("},{"line_number":99,"context_line":"                    response[odl_const.ODL_BGPVPN][\u0027networks\u0027],"},{"line_number":100,"context_line":"                    [net_id1, net_id2])"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_assoc_multiple_networks_dissoc_one(self):"},{"line_number":103,"context_line":"        with self.network() as net1, self.network() as net2, \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_126945f9","line":100,"range":{"start_line":98,"start_character":16,"end_line":100,"end_character":39},"updated":"2017-03-06 09:53:06.000000000","message":"This checks seems to repeat a lot, I would extract this to a method such as _assert_networks_associated(net_list)","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"a94307fc14d94634045b053551997b8f2bc48453","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":96,"context_line":"            with self.assoc_net(id, net_id1), self.assoc_net(id, net_id2):"},{"line_number":97,"context_line":"                response \u003d self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":98,"context_line":"                self.assertItemsEqual("},{"line_number":99,"context_line":"                    response[odl_const.ODL_BGPVPN][\u0027networks\u0027],"},{"line_number":100,"context_line":"                    [net_id1, net_id2])"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_assoc_multiple_networks_dissoc_one(self):"},{"line_number":103,"context_line":"        with self.network() as net1, self.network() as net2, \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_3d70d50a","line":100,"range":{"start_line":98,"start_character":16,"end_line":100,"end_character":39},"in_reply_to":"ba2be162_126945f9","updated":"2017-03-06 12:42:21.000000000","message":"Done","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":7921,"name":"Mike Kolesnik","email":"mkolesni@redhat.com","username":"mkolesni"},"change_message_id":"ed49107dcacc7eedf4dc1c8fe720a9a3ab1b9c2f","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            router_id2 \u003d router2[\u0027router\u0027][\u0027id\u0027]"},{"line_number":139,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":140,"context_line":"            with self.assoc_router(id, router_id1):"},{"line_number":141,"context_line":"                response \u003d self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":142,"context_line":"                self.assertItemsEqual("},{"line_number":143,"context_line":"                    response[odl_const.ODL_BGPVPN][\u0027routers\u0027], [router_id1])"},{"line_number":144,"context_line":"                with testlib_api.ExpectedException("},{"line_number":145,"context_line":"                        webob.exc.HTTPClientError) as ctx_manager:"},{"line_number":146,"context_line":"                    with self.assoc_router(id, router_id2):"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_32d009c9","line":143,"range":{"start_line":141,"start_character":16,"end_line":143,"end_character":76},"updated":"2017-03-06 09:53:06.000000000","message":"This check seems to repeat a lot, perhaps its better to extract this to a method i.e. _assert_router_associated","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"a94307fc14d94634045b053551997b8f2bc48453","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            router_id2 \u003d router2[\u0027router\u0027][\u0027id\u0027]"},{"line_number":139,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"},{"line_number":140,"context_line":"            with self.assoc_router(id, router_id1):"},{"line_number":141,"context_line":"                response \u003d self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":142,"context_line":"                self.assertItemsEqual("},{"line_number":143,"context_line":"                    response[odl_const.ODL_BGPVPN][\u0027routers\u0027], [router_id1])"},{"line_number":144,"context_line":"                with testlib_api.ExpectedException("},{"line_number":145,"context_line":"                        webob.exc.HTTPClientError) as ctx_manager:"},{"line_number":146,"context_line":"                    with self.assoc_router(id, router_id2):"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba2be162_9d71c10e","line":143,"range":{"start_line":141,"start_character":16,"end_line":143,"end_character":76},"in_reply_to":"ba2be162_32d009c9","updated":"2017-03-06 12:42:21.000000000","message":"Done","commit_id":"76c3a333163060e162fbe5397af57d083cbfec97"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"ca47580784f61bb528da814ca97e1cd06c82f539","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# sqlalchemy metadata.create_all call else tables"},{"line_number":25,"context_line":"# will not be created."},{"line_number":26,"context_line":"from networking_bgpvpn.neutron.db import bgpvpn_db  # noqa"},{"line_number":27,"context_line":"from networking_bgpvpn.tests.unit.services.test_plugin \\"},{"line_number":28,"context_line":"    import BgpvpnTestCaseMixin"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from networking_odl.common import constants as odl_const"},{"line_number":31,"context_line":"from networking_odl.tests.functional import base"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_7e820754","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":30},"updated":"2017-03-07 19:01:10.000000000","message":"openstack convention is, import only module.","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"ede6f706c20ddfda29d75f4fca0481eab53cfefe","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# sqlalchemy metadata.create_all call else tables"},{"line_number":25,"context_line":"# will not be created."},{"line_number":26,"context_line":"from networking_bgpvpn.neutron.db import bgpvpn_db  # noqa"},{"line_number":27,"context_line":"from networking_bgpvpn.tests.unit.services.test_plugin \\"},{"line_number":28,"context_line":"    import BgpvpnTestCaseMixin"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from networking_odl.common import constants as odl_const"},{"line_number":31,"context_line":"from networking_odl.tests.functional import base"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_ddb59e31","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":30},"in_reply_to":"9a30ddce_7e820754","updated":"2017-03-08 17:39:29.000000000","message":"Done","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"ca47580784f61bb528da814ca97e1cd06c82f539","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        with self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":79,"context_line":"            response \u003d self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":80,"context_line":"            self.assertEqual("},{"line_number":81,"context_line":"                response[odl_const.ODL_BGPVPN][\u0027route_distinguishers\u0027],"},{"line_number":82,"context_line":"                self.rds)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":85,"context_line":"        with self.bgpvpn(do_delete\u003dFalse) as bgpvpn:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_1ec82b55","line":82,"range":{"start_line":81,"start_character":0,"end_line":82,"end_character":24},"updated":"2017-03-07 19:01:10.000000000","message":"the order is expected, observed","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"ede6f706c20ddfda29d75f4fca0481eab53cfefe","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        with self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":79,"context_line":"            response \u003d self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":80,"context_line":"            self.assertEqual("},{"line_number":81,"context_line":"                response[odl_const.ODL_BGPVPN][\u0027route_distinguishers\u0027],"},{"line_number":82,"context_line":"                self.rds)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def test_bgpvpn_delete(self):"},{"line_number":85,"context_line":"        with self.bgpvpn(do_delete\u003dFalse) as bgpvpn:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_dd5e7e11","line":82,"range":{"start_line":81,"start_character":0,"end_line":82,"end_character":24},"in_reply_to":"9a30ddce_1ec82b55","updated":"2017-03-08 17:39:29.000000000","message":"Done","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"ca47580784f61bb528da814ca97e1cd06c82f539","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_associate_dissociate_net(self):"},{"line_number":91,"context_line":"        with self.network() as net1, \\"},{"line_number":92,"context_line":"                self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":93,"context_line":"            net_id \u003d net1[\u0027network\u0027][\u0027id\u0027]"},{"line_number":94,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_3e216ffc","line":91,"range":{"start_line":91,"start_character":37,"end_line":91,"end_character":38},"updated":"2017-03-07 19:01:10.000000000","message":"openstack convention is to avoid backslash.\nPlease use parens.","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"ede6f706c20ddfda29d75f4fca0481eab53cfefe","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_associate_dissociate_net(self):"},{"line_number":91,"context_line":"        with self.network() as net1, \\"},{"line_number":92,"context_line":"                self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":93,"context_line":"            net_id \u003d net1[\u0027network\u0027][\u0027id\u0027]"},{"line_number":94,"context_line":"            id \u003d bgpvpn[\u0027bgpvpn\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_fd9b42c7","line":91,"range":{"start_line":91,"start_character":37,"end_line":91,"end_character":38},"in_reply_to":"9a30ddce_3e216ffc","updated":"2017-03-08 17:39:29.000000000","message":"Done","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"ca47580784f61bb528da814ca97e1cd06c82f539","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            self._assert_networks_associated(bgpvpn, [])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_associate_multiple_networks(self):"},{"line_number":100,"context_line":"        with self.network() as net1, self.network() as net2, \\"},{"line_number":101,"context_line":"                self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":102,"context_line":"            net_id1 \u003d net1[\u0027network\u0027][\u0027id\u0027]"},{"line_number":103,"context_line":"            net_id2 \u003d net2[\u0027network\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_5e4c63c7","line":100,"range":{"start_line":100,"start_character":61,"end_line":100,"end_character":62},"updated":"2017-03-07 19:01:10.000000000","message":"ditto","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"ede6f706c20ddfda29d75f4fca0481eab53cfefe","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            self._assert_networks_associated(bgpvpn, [])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_associate_multiple_networks(self):"},{"line_number":100,"context_line":"        with self.network() as net1, self.network() as net2, \\"},{"line_number":101,"context_line":"                self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":102,"context_line":"            net_id1 \u003d net1[\u0027network\u0027][\u0027id\u0027]"},{"line_number":103,"context_line":"            net_id2 \u003d net2[\u0027network\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_1d9f36b5","line":100,"range":{"start_line":100,"start_character":61,"end_line":100,"end_character":62},"in_reply_to":"9a30ddce_5e4c63c7","updated":"2017-03-08 17:39:29.000000000","message":"Done","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"ca47580784f61bb528da814ca97e1cd06c82f539","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            with self.assoc_net(id, net_id1), self.assoc_net(id, net_id2):"},{"line_number":106,"context_line":"                self._assert_networks_associated(bgpvpn, [net_id1, net_id2])"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_assoc_multiple_networks_dissoc_one(self):"},{"line_number":109,"context_line":"        with self.network() as net1, self.network() as net2, \\"},{"line_number":110,"context_line":"                self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":111,"context_line":"            net_id1 \u003d net1[\u0027network\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_7e95a7e2","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":47},"updated":"2017-03-07 19:01:10.000000000","message":"Is this a superset of test_associate_multiple_networks?","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"ede6f706c20ddfda29d75f4fca0481eab53cfefe","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            with self.assoc_net(id, net_id1), self.assoc_net(id, net_id2):"},{"line_number":106,"context_line":"                self._assert_networks_associated(bgpvpn, [net_id1, net_id2])"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_assoc_multiple_networks_dissoc_one(self):"},{"line_number":109,"context_line":"        with self.network() as net1, self.network() as net2, \\"},{"line_number":110,"context_line":"                self.bgpvpn(route_distinguishers\u003dself.rds) as bgpvpn:"},{"line_number":111,"context_line":"            net_id1 \u003d net1[\u0027network\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_7dc5928c","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":47},"in_reply_to":"9a30ddce_7e95a7e2","updated":"2017-03-08 17:39:29.000000000","message":"Yes. This testcase checks that if we have multiple networks associated, it is possible to dissociate one network.","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"ca47580784f61bb528da814ca97e1cd06c82f539","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            with self.assoc_router(id, router_id), self.assoc_net(id, net_id):"},{"line_number":166,"context_line":"                response \u003d self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":167,"context_line":"                self.assertItemsEqual("},{"line_number":168,"context_line":"                    response[odl_const.ODL_BGPVPN][\u0027routers\u0027],"},{"line_number":169,"context_line":"                    [router_id])"},{"line_number":170,"context_line":"                self.assertItemsEqual("},{"line_number":171,"context_line":"                    response[odl_const.ODL_BGPVPN][\u0027networks\u0027],"},{"line_number":172,"context_line":"                    [net_id])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_1e23cbbe","line":169,"range":{"start_line":168,"start_character":20,"end_line":169,"end_character":31},"updated":"2017-03-07 19:01:10.000000000","message":"the order is expected, observed.","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"ede6f706c20ddfda29d75f4fca0481eab53cfefe","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            with self.assoc_router(id, router_id), self.assoc_net(id, net_id):"},{"line_number":166,"context_line":"                response \u003d self.get_odl_resource(odl_const.ODL_BGPVPN, bgpvpn)"},{"line_number":167,"context_line":"                self.assertItemsEqual("},{"line_number":168,"context_line":"                    response[odl_const.ODL_BGPVPN][\u0027routers\u0027],"},{"line_number":169,"context_line":"                    [router_id])"},{"line_number":170,"context_line":"                self.assertItemsEqual("},{"line_number":171,"context_line":"                    response[odl_const.ODL_BGPVPN][\u0027networks\u0027],"},{"line_number":172,"context_line":"                    [net_id])"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_3da6ba10","line":169,"range":{"start_line":168,"start_character":20,"end_line":169,"end_character":31},"in_reply_to":"9a30ddce_1e23cbbe","updated":"2017-03-08 17:39:29.000000000","message":"Done","commit_id":"0e8f8d27148df223b468429b3d07994d91d78ddf"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"ac1f8be6c135a207d7b83aea2cdfef44a5aea35a","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                                      [\u0027networks\u0027])"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"class TestBGPVPNV2Driver(base.V2DriverAdjustment,"},{"line_number":175,"context_line":"                         bgpvpn_plugin.BgpvpnTestCaseMixin,"},{"line_number":176,"context_line":"                         _TestBGPVPNBase, test_plugin.Ml2PluginV2TestCase):"},{"line_number":177,"context_line":"    _mechanism_drivers \u003d [\u0027opendaylight_v2\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a30ddce_b237ddfd","line":177,"range":{"start_line":174,"start_character":0,"end_line":177,"end_character":44},"updated":"2017-03-10 07:09:52.000000000","message":"if there is only one type of driver then what is even need of this class ? mechanism_driver can be just embedded into class above and extra class can be avoided.","commit_id":"c35155d4824908dc1740880f4da5d8e206576d41"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"617fd6da1cc0ca24e6a2b353ca56f46e85be1c14","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                                      [\u0027networks\u0027])"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"class TestBGPVPNV2Driver(base.V2DriverAdjustment,"},{"line_number":175,"context_line":"                         bgpvpn_plugin.BgpvpnTestCaseMixin,"},{"line_number":176,"context_line":"                         _TestBGPVPNBase, test_plugin.Ml2PluginV2TestCase):"},{"line_number":177,"context_line":"    _mechanism_drivers \u003d [\u0027opendaylight_v2\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a22e58a_871dddbf","line":177,"range":{"start_line":174,"start_character":0,"end_line":177,"end_character":44},"in_reply_to":"9a30ddce_a1bb09e4","updated":"2017-03-14 10:37:47.000000000","message":"Manjeet,\nAs Deepthi said we needed this class , as we want the MRO to resolve to BgpvpnTestCaseMixin first followed by _TestBGPVPNBase.\n\nPlesae review your -1.\n\nVivek","commit_id":"c35155d4824908dc1740880f4da5d8e206576d41"},{"author":{"_account_id":25171,"name":"Deepthi V V","email":"deepthi.v.v@ericsson.com","username":"deepthivv88"},"change_message_id":"b632cbe27f0ab7b17896072c2aee983ad816fa48","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                                      [\u0027networks\u0027])"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"class TestBGPVPNV2Driver(base.V2DriverAdjustment,"},{"line_number":175,"context_line":"                         bgpvpn_plugin.BgpvpnTestCaseMixin,"},{"line_number":176,"context_line":"                         _TestBGPVPNBase, test_plugin.Ml2PluginV2TestCase):"},{"line_number":177,"context_line":"    _mechanism_drivers \u003d [\u0027opendaylight_v2\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a30ddce_a1bb09e4","line":177,"range":{"start_line":174,"start_character":0,"end_line":177,"end_character":44},"in_reply_to":"9a30ddce_b237ddfd","updated":"2017-03-10 09:27:19.000000000","message":"Hi Manjeet, this was done to utilise BgpvpnTestCaseMixin.\nWe required \"setUp(self, plugin\u003dNone, service_plugins\u003dNone, ext_mgr\u003dNone)\" method in _TestBGPVPNBase to override the provider initialised in Mixin class setUp method.","commit_id":"c35155d4824908dc1740880f4da5d8e206576d41"}]}
