)]}'
{"neutron_dynamic_routing/tests/contrib/gate_hook.sh":[{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8a6bd7ef375f2a2c212aa177aca6ec4b5d2c2f04","unresolved":false,"context_lines":[{"line_number":31,"context_line":"then"},{"line_number":32,"context_line":"    if ! pip freeze | grep ryu \u003e /dev/null"},{"line_number":33,"context_line":"    then"},{"line_number":34,"context_line":"        sudo pip install ryu"},{"line_number":35,"context_line":"    fi"},{"line_number":36,"context_line":"    RYU_PATH\u003d`pip show ryu | grep Location | cut -d\u0027 \u0027 -f2`/ryu"},{"line_number":37,"context_line":"    source $DEVSTACK_PATH/functions"}],"source_content_type":"text/x-sh","patch_set":3,"id":"3a71b18c_5146ec21","line":34,"range":{"start_line":34,"start_character":25,"end_line":34,"end_character":28},"updated":"2016-12-08 21:35:41.000000000","message":"Should we also do a pip install of docker as well? Maybe adding this to the test-requirements.txt makes more sense. We already bring in ryu, so this seems unnecessary.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"fa2859dd30b36dffc94e0801112cbe1a98bc1f9e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"then"},{"line_number":32,"context_line":"    if ! pip freeze | grep ryu \u003e /dev/null"},{"line_number":33,"context_line":"    then"},{"line_number":34,"context_line":"        sudo pip install ryu"},{"line_number":35,"context_line":"    fi"},{"line_number":36,"context_line":"    RYU_PATH\u003d`pip show ryu | grep Location | cut -d\u0027 \u0027 -f2`/ryu"},{"line_number":37,"context_line":"    source $DEVSTACK_PATH/functions"}],"source_content_type":"text/x-sh","patch_set":3,"id":"3a71b18c_6baa10d4","line":34,"range":{"start_line":34,"start_character":25,"end_line":34,"end_character":28},"in_reply_to":"3a71b18c_5146ec21","updated":"2016-12-09 03:05:41.000000000","message":"configure_for_func_testing.sh also installs pipework. So this is necessary.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"}],"neutron_dynamic_routing/tests/tempest/bgp_client.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e735dbba63ff63282af65bf052861d6e4d1aac66","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":119,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def add_bgp_speaker_to_dragent(self, agent_id, bgp_speaker_id):"},{"line_number":122,"context_line":"        uri \u003d \u0027v2.0/agents/%s/bgp-drinstances\u0027 % agent_id"},{"line_number":123,"context_line":"        update_body \u003d {\"bgp_speaker_id\": bgp_speaker_id}"},{"line_number":124,"context_line":"        update_body \u003d jsonutils.dumps(update_body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_3d243a0b","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":34},"updated":"2016-12-07 10:42:35.000000000","message":"I would suggest to more test-cases like adding/removing single/multiple bgpSpeakers to/from single/multiple dragents.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"5d6689ac18ac14f90bbee8aadf9d259b1fdd2059","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":119,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def add_bgp_speaker_to_dragent(self, agent_id, bgp_speaker_id):"},{"line_number":122,"context_line":"        uri \u003d \u0027v2.0/agents/%s/bgp-drinstances\u0027 % agent_id"},{"line_number":123,"context_line":"        update_body \u003d {\"bgp_speaker_id\": bgp_speaker_id}"},{"line_number":124,"context_line":"        update_body \u003d jsonutils.dumps(update_body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_bef81dc6","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":34},"in_reply_to":"3a71b18c_3d243a0b","updated":"2016-12-08 01:00:16.000000000","message":"Firstly I thought that I provide an environment to run scenario test.\nAfter it was merged, I thought that we can add various tests.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8a6bd7ef375f2a2c212aa177aca6ec4b5d2c2f04","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":119,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def add_bgp_speaker_to_dragent(self, agent_id, bgp_speaker_id):"},{"line_number":122,"context_line":"        uri \u003d \u0027v2.0/agents/%s/bgp-drinstances\u0027 % agent_id"},{"line_number":123,"context_line":"        update_body \u003d {\"bgp_speaker_id\": bgp_speaker_id}"},{"line_number":124,"context_line":"        update_body \u003d jsonutils.dumps(update_body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_f1b37808","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":34},"in_reply_to":"3a71b18c_62c983ac","updated":"2016-12-08 21:35:41.000000000","message":"I think this is ok, we\u0027re just adding a helper method to the client here. This isn\u0027t a test in and of itself.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"de703845a43b9812fdadad55cca91bd875372977","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":119,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def add_bgp_speaker_to_dragent(self, agent_id, bgp_speaker_id):"},{"line_number":122,"context_line":"        uri \u003d \u0027v2.0/agents/%s/bgp-drinstances\u0027 % agent_id"},{"line_number":123,"context_line":"        update_body \u003d {\"bgp_speaker_id\": bgp_speaker_id}"},{"line_number":124,"context_line":"        update_body \u003d jsonutils.dumps(update_body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_62c983ac","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":34},"in_reply_to":"3a71b18c_bef81dc6","updated":"2016-12-08 06:34:28.000000000","message":"Anyways we got to finish all the tests before ocata-1 ;-)","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"2336f73b6e7a04f4689147d58cf904166d1d2d1f","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":119,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def add_bgp_speaker_to_dragent(self, agent_id, bgp_speaker_id):"},{"line_number":122,"context_line":"        uri \u003d \u0027v2.0/agents/%s/bgp-drinstances\u0027 % agent_id"},{"line_number":123,"context_line":"        update_body \u003d {\"bgp_speaker_id\": bgp_speaker_id}"},{"line_number":124,"context_line":"        update_body \u003d jsonutils.dumps(update_body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_33509b0a","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":34},"in_reply_to":"3a71b18c_f1b37808","updated":"2016-12-20 10:06:20.000000000","message":"I explain some about test environment.\nThis scenario test uses all in one node environment provided by devstack-gate and it is not on a container. But it is possible to add multiple remote as.\nSo tests for multiple dragents will need multiple node environment. That should be done in the future.\nCan I do tests for multiple bgpSpeakers on the one node?","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"}],"neutron_dynamic_routing/tests/tempest/scenario/base.py":[{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"c0d5d486a59dfd6b3951097bd7667aa0f1c373eb","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"class BgpSpeakerScenarioTestJSONBase(base.BaseAdminNetworkTest):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    checktime \u003d 120"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def setUp(self):"},{"line_number":95,"context_line":"        self.addCleanup(self.net_resource_cleanup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_9bfbec7a","line":92,"range":{"start_line":92,"start_character":4,"end_line":92,"end_character":13},"updated":"2017-01-11 17:46:15.000000000","message":"Is there any harm in bumping this up a little bit? I\u0027m thinking that bumping this up may help stabilize the jobs that are failing because the the BGP FSM isn\u0027t progressing to ESTABLISHED quickly enough.","commit_id":"65818cb79679dca5da831f830e9e17a50d6a2d20"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"6ee048a35274ffe1c9ba96f7fdffac11de121a28","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"class BgpSpeakerScenarioTestJSONBase(base.BaseAdminNetworkTest):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    checktime \u003d 120"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def setUp(self):"},{"line_number":95,"context_line":"        self.addCleanup(self.net_resource_cleanup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a3c09a3_26231cbf","line":92,"range":{"start_line":92,"start_character":4,"end_line":92,"end_character":13},"in_reply_to":"7a3c09a3_832cc24b","updated":"2017-01-13 18:52:16.000000000","message":"Sorry, I misunderstood it. I will.","commit_id":"65818cb79679dca5da831f830e9e17a50d6a2d20"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"059d0984a7c93a5277233c2fe56683c884a90390","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"class BgpSpeakerScenarioTestJSONBase(base.BaseAdminNetworkTest):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    checktime \u003d 120"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def setUp(self):"},{"line_number":95,"context_line":"        self.addCleanup(self.net_resource_cleanup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a3c09a3_832cc24b","line":92,"range":{"start_line":92,"start_character":4,"end_line":92,"end_character":13},"in_reply_to":"ba5201f7_0753166c","updated":"2017-01-13 18:18:10.000000000","message":"I think the issue is that checktime isn\u0027t a large enough value to allow the peering session to progress all the way to ESTABLISHED, which is how I\u0027m interpreting the persistent test failure. I\u0027m thinking dialing this back won\u0027t help, I wonder if we want a larger value like 180.","commit_id":"65818cb79679dca5da831f830e9e17a50d6a2d20"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"ec6c500b38bb2f5d8423778004e80b0765365875","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"class BgpSpeakerScenarioTestJSONBase(base.BaseAdminNetworkTest):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    checktime \u003d 120"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def setUp(self):"},{"line_number":95,"context_line":"        self.addCleanup(self.net_resource_cleanup)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_0753166c","line":92,"range":{"start_line":92,"start_character":4,"end_line":92,"end_character":13},"in_reply_to":"ba5201f7_9bfbec7a","updated":"2017-01-11 22:19:31.000000000","message":"gate looks fast enough. How about 30?","commit_id":"65818cb79679dca5da831f830e9e17a50d6a2d20"}],"neutron_dynamic_routing/tests/tempest/scenario/basic/test_basic.py":[{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"c0d5d486a59dfd6b3951097bd7667aa0f1c373eb","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(neighbor_state, ctn_base.BGP_FSM_ESTABLISHED)"},{"line_number":71,"context_line":"        self.delete_bgp_speaker(speaker_id)"},{"line_number":72,"context_line":"        neighbor_state \u003d ctn_base.BGP_FSM_ESTABLISHED"},{"line_number":73,"context_line":"        for i in range(0, self.checktime):"},{"line_number":74,"context_line":"            neighbor_state \u003d self.r_ass[0].get_neighbor_state(self.dr)"},{"line_number":75,"context_line":"            if neighbor_state \u003d\u003d ctn_base.BGP_FSM_ACTIVE:"},{"line_number":76,"context_line":"                break"},{"line_number":77,"context_line":"            time.sleep(1)"},{"line_number":78,"context_line":"        self.assertEqual(neighbor_state, ctn_base.BGP_FSM_ACTIVE)"},{"line_number":79,"context_line":"        self.delete_bgp_peer(peers_ids[0])"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_1b7ffcab","line":77,"range":{"start_line":73,"start_character":0,"end_line":77,"end_character":25},"updated":"2017-01-11 17:46:15.000000000","message":"I see this block repeated in a number of places. I\u0027m thinking we can refactor this out into a method so we can be DRY :)","commit_id":"65818cb79679dca5da831f830e9e17a50d6a2d20"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"ec6c500b38bb2f5d8423778004e80b0765365875","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(neighbor_state, ctn_base.BGP_FSM_ESTABLISHED)"},{"line_number":71,"context_line":"        self.delete_bgp_speaker(speaker_id)"},{"line_number":72,"context_line":"        neighbor_state \u003d ctn_base.BGP_FSM_ESTABLISHED"},{"line_number":73,"context_line":"        for i in range(0, self.checktime):"},{"line_number":74,"context_line":"            neighbor_state \u003d self.r_ass[0].get_neighbor_state(self.dr)"},{"line_number":75,"context_line":"            if neighbor_state \u003d\u003d ctn_base.BGP_FSM_ACTIVE:"},{"line_number":76,"context_line":"                break"},{"line_number":77,"context_line":"            time.sleep(1)"},{"line_number":78,"context_line":"        self.assertEqual(neighbor_state, ctn_base.BGP_FSM_ACTIVE)"},{"line_number":79,"context_line":"        self.delete_bgp_peer(peers_ids[0])"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_992daa48","line":77,"range":{"start_line":73,"start_character":0,"end_line":77,"end_character":25},"in_reply_to":"ba5201f7_1b7ffcab","updated":"2017-01-11 22:19:31.000000000","message":"Ah right. I will.","commit_id":"65818cb79679dca5da831f830e9e17a50d6a2d20"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"af905cfcc10340cf8cd4b1840527f97811adf76b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario import base as s_base"},{"line_number":21,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario.basic import base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ryu.tests.integrated.common import docker_base as ctn_base"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_9d0fa62d","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":69},"updated":"2017-01-20 06:43:06.000000000","message":"I believe this should be ..\nfrom neutron_dynamic_routing.tests.tempest.scenario import base\n\nPlz check error @ http://logs.openstack.org/79/407779/13/check/gate-neutron-dynamic-routing-dsvm-tempest-scenario-basic-nv/b4d7bd0/console.html\n\n2017-01-20 02:31:36.363916 | Captured traceback:\n2017-01-20 02:31:36.363925 | ~~~~~~~~~~~~~~~~~~~\n2017-01-20 02:31:36.363937 |     Traceback (most recent call last):\n2017-01-20 02:31:36.363974 |       File \"/opt/stack/new/neutron-dynamic-routing/neutron_dynamic_routing/tests/tempest/scenario/basic/test_basic.py\", line 58, in test_unschedule_deleted_speaker\n2017-01-20 02:31:36.363995 |         MyRouter \u003d base.Router(name\u003d\u0027my-router\u0027 + str(num), gw\u003d\u0027\u0027, dist\u003dFalse)\n2017-01-20 02:31:36.364012 |     AttributeError: \u0027module\u0027 object has no attribute \u0027Router\u0027","commit_id":"8b202796877f8e7900e06997733e3456a51b53ad"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"7e9c7fd0959522cf811c3d8abf1fd67fd0473092","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario import base as s_base"},{"line_number":21,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario.basic import base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ryu.tests.integrated.common import docker_base as ctn_base"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_4d7b7028","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":69},"in_reply_to":"5a3905b3_1f3f20d7","updated":"2017-01-23 10:02:33.000000000","message":"It looks good.. Just one suggestion .. We don\u0027t need a config section called \u0027[bgp]\u0027 as you have redefined a section called \u0027[BGP]\u0027 going down.","commit_id":"8b202796877f8e7900e06997733e3456a51b53ad"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"d5eb6786e9c7702459dc0f27f7e723dbf57576c7","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario import base as s_base"},{"line_number":21,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario.basic import base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ryu.tests.integrated.common import docker_base as ctn_base"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_ad05b47a","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":69},"in_reply_to":"5a3905b3_4d7b7028","updated":"2017-01-23 10:03:48.000000000","message":"BTW, I missed the import @L20, so you need to use s_base instead of base all across. Thanks for correcting.","commit_id":"8b202796877f8e7900e06997733e3456a51b53ad"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"04256dd5a2579501c6191458dace566ea0b0aefa","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario import base as s_base"},{"line_number":21,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario.basic import base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ryu.tests.integrated.common import docker_base as ctn_base"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_cc3819d6","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":69},"in_reply_to":"5a3905b3_4d7b7028","updated":"2017-01-24 00:36:38.000000000","message":"Thanks for your check.\n\nIt will be a problem of config-generator. I don\u0027t know any details about that.\n\nhttp://logs.openstack.org/79/407779/15/check/gate-neutron-dynamic-routing-dsvm-tempest-scenario-ipv4-nv/8ee4688/logs/devstacklog.txt.gz#_2017-01-20_13_36_39_606\n\n\nstack@slave3:~/neutron-dynamic-routing$ oslo-config-generator --config-file etc/oslo-config-generator/bgp_dragent.ini\nWARNING:oslo_config.generator:normalizing group name \u0027BGP\u0027 to \u0027bgp\u0027\nstack@slave3:~/neutron-dynamic-routing$ cat etc/oslo-config-generator/bgp_dragent.ini\n[DEFAULT]\noutput_file \u003d etc/bgp_dragent.ini.sample\nwrap_width \u003d 79\n\nnamespace \u003d bgp.agent\nstack@slave3:~/neutron-dynamic-routing$ cat etc/bgp_dragent.ini.sample\n[DEFAULT]\n\n\n[bgp]\n\n#\n# From bgp.agent\n#\n\n# BGP speaker driver class to be instantiated. (string value)\n#bgp_speaker_driver \u003d \u003cNone\u003e\n\n# 32-bit BGP identifier, typically an IPv4 address owned by the system running\n# the BGP DrAgent. (string value)\n#bgp_router_id \u003d \u003cNone\u003e\nstack@slave3:~/neutron-dynamic-routing$","commit_id":"8b202796877f8e7900e06997733e3456a51b53ad"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"88253bf37b2d70c2daa8fd1008687eefe9277293","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario import base as s_base"},{"line_number":21,"context_line":"from neutron_dynamic_routing.tests.tempest.scenario.basic import base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ryu.tests.integrated.common import docker_base as ctn_base"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_1f3f20d7","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":69},"in_reply_to":"5a3905b3_9d0fa62d","updated":"2017-01-20 11:33:28.000000000","message":"I overlooked it. Thanks.\nBy the way, I configure the following for scheduler. Is it right?\n\nhttp://logs.openstack.org/79/407779/13/check/gate-neutron-dynamic-routing-dsvm-tempest-scenario-basic-nv/b4d7bd0/logs/etc/neutron/bgp_dragent.ini.txt.gz","commit_id":"8b202796877f8e7900e06997733e3456a51b53ad"}],"neutron_dynamic_routing/tests/tempest/scenario/ipv4/base.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e735dbba63ff63282af65bf052861d6e4d1aac66","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_5d1f36b6","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2016-12-07 10:42:35.000000000","message":"nit: 2016","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"5d6689ac18ac14f90bbee8aadf9d259b1fdd2059","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_1e1af16e","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"3a71b18c_5d1f36b6","updated":"2016-12-08 01:00:16.000000000","message":"Thanks!","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e735dbba63ff63282af65bf052861d6e4d1aac66","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_9d7b8ef4","line":2,"updated":"2016-12-07 10:42:35.000000000","message":"ditto","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"5d6689ac18ac14f90bbee8aadf9d259b1fdd2059","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_5e2aa97f","line":2,"in_reply_to":"3a71b18c_9d7b8ef4","updated":"2016-12-08 01:00:16.000000000","message":"Thanks!","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"68ce81de273c2c7fa70417040aefbd71c9efdbe0","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    @classmethod"},{"line_number":95,"context_line":"    def resource_setup(cls):"},{"line_number":96,"context_line":"        super(BgpSpeakerTestJSONBase, cls).resource_setup()"},{"line_number":97,"context_line":"        if not test.is_extension_enabled(\u0027bgp_speaker\u0027, \u0027network\u0027):"},{"line_number":98,"context_line":"            msg \u003d \"BGP Speaker extension is not enabled.\""},{"line_number":99,"context_line":"            raise cls.skipException(msg)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_2791e7f1","line":97,"range":{"start_line":97,"start_character":42,"end_line":97,"end_character":53},"updated":"2016-12-12 00:25:18.000000000","message":"you mean \"bgp\"?","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"2336f73b6e7a04f4689147d58cf904166d1d2d1f","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    @classmethod"},{"line_number":95,"context_line":"    def resource_setup(cls):"},{"line_number":96,"context_line":"        super(BgpSpeakerTestJSONBase, cls).resource_setup()"},{"line_number":97,"context_line":"        if not test.is_extension_enabled(\u0027bgp_speaker\u0027, \u0027network\u0027):"},{"line_number":98,"context_line":"            msg \u003d \"BGP Speaker extension is not enabled.\""},{"line_number":99,"context_line":"            raise cls.skipException(msg)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_c72089fa","line":97,"range":{"start_line":97,"start_character":42,"end_line":97,"end_character":53},"in_reply_to":"1a6eadb0_8af18d97","updated":"2016-12-20 10:06:20.000000000","message":"OK, I will use \u0027bgp\u0027.\n\u0027network\u0027 will be service.\n\ndef is_extension_enabled(extension_name, service):","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"e337f92a076433854a4d8903977f6d529ca19875","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    @classmethod"},{"line_number":95,"context_line":"    def resource_setup(cls):"},{"line_number":96,"context_line":"        super(BgpSpeakerTestJSONBase, cls).resource_setup()"},{"line_number":97,"context_line":"        if not test.is_extension_enabled(\u0027bgp_speaker\u0027, \u0027network\u0027):"},{"line_number":98,"context_line":"            msg \u003d \"BGP Speaker extension is not enabled.\""},{"line_number":99,"context_line":"            raise cls.skipException(msg)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_c1bcdb6e","line":97,"range":{"start_line":97,"start_character":42,"end_line":97,"end_character":53},"in_reply_to":"1a6eadb0_c72089fa","updated":"2017-01-03 22:21:32.000000000","message":"Oh, right. Nix \"bgp\" but you\u0027re right that \"network\" stays.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"6590c71479c296f4b466398536cd8bef5e6f13d9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    @classmethod"},{"line_number":95,"context_line":"    def resource_setup(cls):"},{"line_number":96,"context_line":"        super(BgpSpeakerTestJSONBase, cls).resource_setup()"},{"line_number":97,"context_line":"        if not test.is_extension_enabled(\u0027bgp_speaker\u0027, \u0027network\u0027):"},{"line_number":98,"context_line":"            msg \u003d \"BGP Speaker extension is not enabled.\""},{"line_number":99,"context_line":"            raise cls.skipException(msg)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_8af18d97","line":97,"range":{"start_line":97,"start_character":42,"end_line":97,"end_character":53},"in_reply_to":"3a71b18c_2791e7f1","updated":"2016-12-16 21:59:30.000000000","message":"+1, this should be \"bgp\". I also am questioning whether \"network\" is even a valid extension alias, so nix that as well.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"68ce81de273c2c7fa70417040aefbd71c9efdbe0","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        cls.images \u003d []"},{"line_number":102,"context_line":"        cls.containers \u003d []"},{"line_number":103,"context_line":"        cls.bridges \u003d []"},{"line_number":104,"context_line":"        cls.brex \u003d ctn_base.Bridge(name\u003d\u0027br-ex\u0027,"},{"line_number":105,"context_line":"                                   subnet\u003dcls.PNet.cidr,"},{"line_number":106,"context_line":"                                   start_ip\u003d\u0027172.24.6.128\u0027,"},{"line_number":107,"context_line":"                                   end_ip\u003d\u0027172.24.6.254\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_822c699a","line":104,"range":{"start_line":104,"start_character":41,"end_line":104,"end_character":46},"updated":"2016-12-12 00:25:18.000000000","message":"is this L3 agent\u0027s external_network_bridge?\n\ncan you consider to add a diagram to explain the logical and physical topology?","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"2336f73b6e7a04f4689147d58cf904166d1d2d1f","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        cls.images \u003d []"},{"line_number":102,"context_line":"        cls.containers \u003d []"},{"line_number":103,"context_line":"        cls.bridges \u003d []"},{"line_number":104,"context_line":"        cls.brex \u003d ctn_base.Bridge(name\u003d\u0027br-ex\u0027,"},{"line_number":105,"context_line":"                                   subnet\u003dcls.PNet.cidr,"},{"line_number":106,"context_line":"                                   start_ip\u003d\u0027172.24.6.128\u0027,"},{"line_number":107,"context_line":"                                   end_ip\u003d\u0027172.24.6.254\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_27ca1d1b","line":104,"range":{"start_line":104,"start_character":41,"end_line":104,"end_character":46},"in_reply_to":"3a71b18c_822c699a","updated":"2016-12-20 10:06:20.000000000","message":"Yes, it shows external_network_bridge. I will add explanations.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e735dbba63ff63282af65bf052861d6e4d1aac66","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.addCleanup(self.bgp_adm_client.delete_bgp_peer, bgp_peer_id)"},{"line_number":174,"context_line":"        return bgp_peer[\u0027bgp_peer\u0027]"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def get_dr_agent_id(self):"},{"line_number":177,"context_line":"        agents \u003d self.admin_client.list_agents("},{"line_number":178,"context_line":"            agent_type\u003d\"BGP dynamic routing agent\")"},{"line_number":179,"context_line":"        self.assertTrue(agents[\u0027agents\u0027][0][\u0027alive\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_5d4d76c2","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":23},"updated":"2016-12-07 10:42:35.000000000","message":"How about \"get_dragent_id\" for uniform naming convention for dragent instead of dr_agent?","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"5d6689ac18ac14f90bbee8aadf9d259b1fdd2059","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.addCleanup(self.bgp_adm_client.delete_bgp_peer, bgp_peer_id)"},{"line_number":174,"context_line":"        return bgp_peer[\u0027bgp_peer\u0027]"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def get_dr_agent_id(self):"},{"line_number":177,"context_line":"        agents \u003d self.admin_client.list_agents("},{"line_number":178,"context_line":"            agent_type\u003d\"BGP dynamic routing agent\")"},{"line_number":179,"context_line":"        self.assertTrue(agents[\u0027agents\u0027][0][\u0027alive\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_5eed4924","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":23},"in_reply_to":"3a71b18c_5d4d76c2","updated":"2016-12-08 01:00:16.000000000","message":"OK. I will use get_dragent_id instead of get_dr_agent_id.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"}],"neutron_dynamic_routing/tests/tempest/scenario/ipv4/test_scenario.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"de703845a43b9812fdadad55cca91bd875372977","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_c2c0977f","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2016-12-08 06:34:28.000000000","message":"2016","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"fa2859dd30b36dffc94e0801112cbe1a98bc1f9e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_0b7c3c71","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"3a71b18c_c2c0977f","updated":"2016-12-09 03:05:41.000000000","message":"Thanks!","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"de703845a43b9812fdadad55cca91bd875372977","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_02bb6f0f","line":2,"range":{"start_line":2,"start_character":16,"end_line":2,"end_character":20},"updated":"2016-12-08 06:34:28.000000000","message":"2016","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"fa2859dd30b36dffc94e0801112cbe1a98bc1f9e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_eb84605e","line":2,"range":{"start_line":2,"start_character":16,"end_line":2,"end_character":20},"in_reply_to":"3a71b18c_02bb6f0f","updated":"2016-12-09 03:05:41.000000000","message":"Thanks!","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"68ce81de273c2c7fa70417040aefbd71c9efdbe0","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def test_check_neighbor_established(self):"},{"line_number":33,"context_line":"        speaker, peer \u003d self.create_bgp_network()"},{"line_number":34,"context_line":"        dr_agent_id \u003d self.get_dr_agent_id()"},{"line_number":35,"context_line":"        self.add_bgp_speaker_to_dragent(dr_agent_id, speaker)"},{"line_number":36,"context_line":"        neighbor_state \u003d ctn_base.BGP_FSM_IDLE"},{"line_number":37,"context_line":"        for i in range(0, self.checktime):"},{"line_number":38,"context_line":"            neighbor_state \u003d self.q1.get_neighbor_state(self.dr)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_c746737a","line":35,"range":{"start_line":35,"start_character":13,"end_line":35,"end_character":39},"updated":"2016-12-12 00:25:18.000000000","message":"require bgp_dragent_scheduler?","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"2336f73b6e7a04f4689147d58cf904166d1d2d1f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def test_check_neighbor_established(self):"},{"line_number":33,"context_line":"        speaker, peer \u003d self.create_bgp_network()"},{"line_number":34,"context_line":"        dr_agent_id \u003d self.get_dr_agent_id()"},{"line_number":35,"context_line":"        self.add_bgp_speaker_to_dragent(dr_agent_id, speaker)"},{"line_number":36,"context_line":"        neighbor_state \u003d ctn_base.BGP_FSM_IDLE"},{"line_number":37,"context_line":"        for i in range(0, self.checktime):"},{"line_number":38,"context_line":"            neighbor_state \u003d self.q1.get_neighbor_state(self.dr)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_e72ae58f","line":35,"range":{"start_line":35,"start_character":13,"end_line":35,"end_character":39},"in_reply_to":"3a71b18c_c746737a","updated":"2016-12-20 10:06:20.000000000","message":"I will add an another scenario test for scheduler like\n \u0027neutron_dynamic_routing/tests/tempest/scenario/scheduler/test_scenario.py\u0027. But in current scenario test, there is only one node.\nBy the way it seems that some way to configure scheduler are not. I should add function for that to devstack/lib/dr.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"68ce81de273c2c7fa70417040aefbd71c9efdbe0","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def test_check_advertised_tenant_network(self):"},{"line_number":46,"context_line":"        speaker, peer \u003d self.create_bgp_network()"},{"line_number":47,"context_line":"        dr_agent_id \u003d self.get_dr_agent_id()"},{"line_number":48,"context_line":"        self.add_bgp_speaker_to_dragent(dr_agent_id, speaker)"},{"line_number":49,"context_line":"        neighbor_state \u003d ctn_base.BGP_FSM_IDLE"},{"line_number":50,"context_line":"        for i in range(0, self.checktime):"},{"line_number":51,"context_line":"            neighbor_state \u003d self.q1.get_neighbor_state(self.dr)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_e75fef3e","line":48,"range":{"start_line":48,"start_character":13,"end_line":48,"end_character":39},"updated":"2016-12-12 00:25:18.000000000","message":"ditto","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"}],"neutron_dynamic_routing/tests/tempest/scenario/ipv6/base.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"de703845a43b9812fdadad55cca91bd875372977","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_423ba79c","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2016-12-08 06:34:28.000000000","message":"2016","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"fa2859dd30b36dffc94e0801112cbe1a98bc1f9e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_2b7f3867","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"3a71b18c_423ba79c","updated":"2016-12-09 03:05:41.000000000","message":"Thanks!","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"de703845a43b9812fdadad55cca91bd875372977","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_6240a308","line":2,"range":{"start_line":2,"start_character":16,"end_line":2,"end_character":20},"updated":"2016-12-08 06:34:28.000000000","message":"2016","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"fa2859dd30b36dffc94e0801112cbe1a98bc1f9e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2015 VA Linux Systems Japan K.K."},{"line_number":2,"context_line":"# Copyright (C) 2015 Fumihiko Kakuma \u003ckakuma at valinux co jp\u003e"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_6b91309a","line":2,"range":{"start_line":2,"start_character":16,"end_line":2,"end_character":20},"in_reply_to":"3a71b18c_6240a308","updated":"2016-12-09 03:05:41.000000000","message":"Thanks!","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8a6bd7ef375f2a2c212aa177aca6ec4b5d2c2f04","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            trace_requests]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class BgpSpeakerTestJSONBase(base.BaseAdminNetworkTest):"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    checktime \u003d 120"},{"line_number":57,"context_line":"    public_gw \u003d \u00272001:db8::1\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_1412a209","line":54,"range":{"start_line":54,"start_character":6,"end_line":54,"end_character":28},"updated":"2016-12-08 21:35:41.000000000","message":"I see a similar base class under tempest/scenario/ipv4/base.by. I wonder if we can abstract this a bit so it works as a base class for both IPv4 and IPv6 tests.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"fa2859dd30b36dffc94e0801112cbe1a98bc1f9e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            trace_requests]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class BgpSpeakerTestJSONBase(base.BaseAdminNetworkTest):"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    checktime \u003d 120"},{"line_number":57,"context_line":"    public_gw \u003d \u00272001:db8::1\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_eba380af","line":54,"range":{"start_line":54,"start_character":6,"end_line":54,"end_character":28},"in_reply_to":"3a71b18c_1412a209","updated":"2016-12-09 03:05:41.000000000","message":"I will consider whether this class can be used as common class.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"8a6bd7ef375f2a2c212aa177aca6ec4b5d2c2f04","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                \u0027advertise_tenant_networks\u0027: True}"},{"line_number":73,"context_line":"    default_bgp_peer_args \u003d {\u0027remote_as\u0027: R_AS.asn,"},{"line_number":74,"context_line":"                             \u0027name\u0027: \u0027my-bgp-peer\u0027,"},{"line_number":75,"context_line":"                             \u0027peer_ip\u0027: None,"},{"line_number":76,"context_line":"                             \u0027auth_type\u0027: \u0027none\u0027}"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_945072d6","line":75,"range":{"start_line":75,"start_character":40,"end_line":75,"end_character":44},"updated":"2016-12-08 21:35:41.000000000","message":"I don\u0027t see any tests that assert a peering session over IPv6. We do support peering over IPv6 and I\u0027ve tested that it works. I\u0027d like to see us test that.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"fa2859dd30b36dffc94e0801112cbe1a98bc1f9e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                \u0027advertise_tenant_networks\u0027: True}"},{"line_number":73,"context_line":"    default_bgp_peer_args \u003d {\u0027remote_as\u0027: R_AS.asn,"},{"line_number":74,"context_line":"                             \u0027name\u0027: \u0027my-bgp-peer\u0027,"},{"line_number":75,"context_line":"                             \u0027peer_ip\u0027: None,"},{"line_number":76,"context_line":"                             \u0027auth_type\u0027: \u0027none\u0027}"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_abec28f4","line":75,"range":{"start_line":75,"start_character":40,"end_line":75,"end_character":44},"in_reply_to":"3a71b18c_945072d6","updated":"2016-12-09 03:05:41.000000000","message":"peer_ip will be set to ipv6 address assigned automatically in L237.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e735dbba63ff63282af65bf052861d6e4d1aac66","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        self.bgp_adm_client.add_bgp_speaker_to_dragent(agent_id, speaker_id)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def create_bgp_network(self):"},{"line_number":188,"context_line":"        addr_scope \u003d self.create_address_scope(\u0027my-scope\u0027, ip_version\u003d6)"},{"line_number":189,"context_line":"        # external network"},{"line_number":190,"context_line":"        ext_net \u003d self.create_shared_network(**{\u0027router:external\u0027: True})"},{"line_number":191,"context_line":"        ext_subnetpool \u003d self.create_subnetpool("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_1db3fe98","line":188,"range":{"start_line":188,"start_character":70,"end_line":188,"end_character":71},"updated":"2016-12-07 10:42:35.000000000","message":"Why we can\u0027t have a common class for both IPv4/IPv6 versions? We can pass just have the common class passing the required variables like version/address/subnet etc?\n\nI always feel less code is better..","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":8344,"name":"fumihiko kakuma","email":"kakuma@valinux.co.jp","username":"kakuma"},"change_message_id":"5d6689ac18ac14f90bbee8aadf9d259b1fdd2059","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        self.bgp_adm_client.add_bgp_speaker_to_dragent(agent_id, speaker_id)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def create_bgp_network(self):"},{"line_number":188,"context_line":"        addr_scope \u003d self.create_address_scope(\u0027my-scope\u0027, ip_version\u003d6)"},{"line_number":189,"context_line":"        # external network"},{"line_number":190,"context_line":"        ext_net \u003d self.create_shared_network(**{\u0027router:external\u0027: True})"},{"line_number":191,"context_line":"        ext_subnetpool \u003d self.create_subnetpool("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_fe4a9554","line":188,"range":{"start_line":188,"start_character":70,"end_line":188,"end_character":71},"in_reply_to":"3a71b18c_1db3fe98","updated":"2016-12-08 01:00:16.000000000","message":"I thought that there may be special codes for each protocol.\nI will think to add the common class.","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"de703845a43b9812fdadad55cca91bd875372977","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        self.bgp_adm_client.add_bgp_speaker_to_dragent(agent_id, speaker_id)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def create_bgp_network(self):"},{"line_number":188,"context_line":"        addr_scope \u003d self.create_address_scope(\u0027my-scope\u0027, ip_version\u003d6)"},{"line_number":189,"context_line":"        # external network"},{"line_number":190,"context_line":"        ext_net \u003d self.create_shared_network(**{\u0027router:external\u0027: True})"},{"line_number":191,"context_line":"        ext_subnetpool \u003d self.create_subnetpool("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_e254b3cb","line":188,"range":{"start_line":188,"start_character":70,"end_line":188,"end_character":71},"in_reply_to":"3a71b18c_fe4a9554","updated":"2016-12-08 06:34:28.000000000","message":"Thanks","commit_id":"20078fde34a0482c5db14fbf37162bc3dc6650e7"}]}
