)]}'
{"openstack/network/v2/_proxy.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"c4189ba8a8c2952265cc584b85bf9913472683a0","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"            body \u003d {\u0027subnet_id\u0027: subnet_id}"},{"line_number":1414,"context_line":"        return router.remove_interface(self.session, **body)"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"    def router_add_gateway(self, router, **body):"},{"line_number":1417,"context_line":"        \"\"\"Add Gateway to a router"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"        :param router: Either the router ID or an instance of"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_0b2e8a42","line":1416,"range":{"start_line":1416,"start_character":8,"end_line":1416,"end_character":26},"updated":"2016-08-23 14:28:00.000000000","message":"These should be worded more like add_gateway_to_router and remove_gateway_from_router. We recently redid the compute proxy and went with this name format, e.g., https://github.com/openstack/python-openstacksdk/blob/master/openstack/compute/v2/_proxy.py#L528","commit_id":"83708eb27f7ff6ed024dcb2cb4cf140faff9b438"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"138f504b3001f6837667793e14e3118c96ef7b8a","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"            body \u003d {\u0027subnet_id\u0027: subnet_id}"},{"line_number":1414,"context_line":"        return router.remove_interface(self.session, **body)"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"    def router_add_gateway(self, router, **body):"},{"line_number":1417,"context_line":"        \"\"\"Add Gateway to a router"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"        :param router: Either the router ID or an instance of"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_0a715b0f","line":1416,"range":{"start_line":1416,"start_character":8,"end_line":1416,"end_character":26},"in_reply_to":"1ac06dbe_0b2e8a42","updated":"2016-08-23 15:47:54.000000000","message":"Done","commit_id":"83708eb27f7ff6ed024dcb2cb4cf140faff9b438"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"5b168aa64f8f50578a58f8da093f4a6cabe7930f","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"            body \u003d {\u0027subnet_id\u0027: subnet_id}"},{"line_number":1414,"context_line":"        return router.remove_interface(self.session, **body)"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"    def add_gateway_to_router(self, router, **body):"},{"line_number":1417,"context_line":"        \"\"\"Add Gateway to a router"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"        :param router: Either the router ID or an instance of"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_2be52208","line":1416,"updated":"2016-09-02 11:01:56.000000000","message":"How about unit or functional tests for these new methods?","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"5ab1be598011a6bba65f3ae07921b076b5197da7","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"            body \u003d {\u0027subnet_id\u0027: subnet_id}"},{"line_number":1414,"context_line":"        return router.remove_interface(self.session, **body)"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"    def add_gateway_to_router(self, router, **body):"},{"line_number":1417,"context_line":"        \"\"\"Add Gateway to a router"},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"        :param router: Either the router ID or an instance of"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_84bfdf5f","line":1416,"in_reply_to":"fa7ab95a_2be52208","updated":"2016-09-08 04:59:21.000000000","message":"Add_router_to_gateway UT was added, will add a test case for Remove as well","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"5b168aa64f8f50578a58f8da093f4a6cabe7930f","unresolved":false,"context_lines":[{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"        :param router: Either the router ID or an instance of"},{"line_number":1420,"context_line":"                       :class:`~openstack.network.v2.router.Router`"},{"line_number":1421,"context_line":"        :param body: Body with the updated dict"},{"line_number":1422,"context_line":"        :returns: Router with updated interface"},{"line_number":1423,"context_line":"        :rtype: :class: `~openstack.network.v2.router.Router`"},{"line_number":1424,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_0be85ee1","line":1421,"range":{"start_line":1421,"start_character":21,"end_line":1421,"end_character":47},"updated":"2016-09-02 11:01:56.000000000","message":"This is rather vague.  More details would be nice.","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"5ab1be598011a6bba65f3ae07921b076b5197da7","unresolved":false,"context_lines":[{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"        :param router: Either the router ID or an instance of"},{"line_number":1420,"context_line":"                       :class:`~openstack.network.v2.router.Router`"},{"line_number":1421,"context_line":"        :param body: Body with the updated dict"},{"line_number":1422,"context_line":"        :returns: Router with updated interface"},{"line_number":1423,"context_line":"        :rtype: :class: `~openstack.network.v2.router.Router`"},{"line_number":1424,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_a4c223e7","line":1421,"range":{"start_line":1421,"start_character":21,"end_line":1421,"end_character":47},"in_reply_to":"fa7ab95a_0be85ee1","updated":"2016-09-08 04:59:21.000000000","message":"Done","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"5b168aa64f8f50578a58f8da093f4a6cabe7930f","unresolved":false,"context_lines":[{"line_number":1422,"context_line":"        :returns: Router with updated interface"},{"line_number":1423,"context_line":"        :rtype: :class: `~openstack.network.v2.router.Router`"},{"line_number":1424,"context_line":"        \"\"\""},{"line_number":1425,"context_line":"        return router.add_interface(self.session, **body)"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"    def remove_gateway_from_router(self, router, **body):"},{"line_number":1428,"context_line":"        \"\"\"Remove Gateway from a router"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_0bde9e6c","line":1425,"range":{"start_line":1425,"start_character":22,"end_line":1425,"end_character":35},"updated":"2016-09-02 11:01:56.000000000","message":"Shouldn\u0027t this be add_gateway()?","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"5ab1be598011a6bba65f3ae07921b076b5197da7","unresolved":false,"context_lines":[{"line_number":1422,"context_line":"        :returns: Router with updated interface"},{"line_number":1423,"context_line":"        :rtype: :class: `~openstack.network.v2.router.Router`"},{"line_number":1424,"context_line":"        \"\"\""},{"line_number":1425,"context_line":"        return router.add_interface(self.session, **body)"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"    def remove_gateway_from_router(self, router, **body):"},{"line_number":1428,"context_line":"        \"\"\"Remove Gateway from a router"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_e4b8ab77","line":1425,"range":{"start_line":1425,"start_character":22,"end_line":1425,"end_character":35},"in_reply_to":"fa7ab95a_0bde9e6c","updated":"2016-09-08 04:59:21.000000000","message":"the add_interface of neutronclient will be called from here","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"5b168aa64f8f50578a58f8da093f4a6cabe7930f","unresolved":false,"context_lines":[{"line_number":1429,"context_line":""},{"line_number":1430,"context_line":"        :param router: Either the router ID or an instance of"},{"line_number":1431,"context_line":"                       :class:`~openstack.network.v2.router.Router`"},{"line_number":1432,"context_line":"        :param body: Body with the updated dict"},{"line_number":1433,"context_line":"        :returns: Router with updated interface"},{"line_number":1434,"context_line":"        :rtype: :class: `~openstack.network.v2.router.Router`"},{"line_number":1435,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_ebdeda3c","line":1432,"range":{"start_line":1432,"start_character":21,"end_line":1432,"end_character":47},"updated":"2016-09-02 11:01:56.000000000","message":"This is rather vague.  More details would be nice.","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"5ab1be598011a6bba65f3ae07921b076b5197da7","unresolved":false,"context_lines":[{"line_number":1429,"context_line":""},{"line_number":1430,"context_line":"        :param router: Either the router ID or an instance of"},{"line_number":1431,"context_line":"                       :class:`~openstack.network.v2.router.Router`"},{"line_number":1432,"context_line":"        :param body: Body with the updated dict"},{"line_number":1433,"context_line":"        :returns: Router with updated interface"},{"line_number":1434,"context_line":"        :rtype: :class: `~openstack.network.v2.router.Router`"},{"line_number":1435,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_04b4af7d","line":1432,"range":{"start_line":1432,"start_character":21,"end_line":1432,"end_character":47},"in_reply_to":"fa7ab95a_ebdeda3c","updated":"2016-09-08 04:59:21.000000000","message":"Done","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"5b168aa64f8f50578a58f8da093f4a6cabe7930f","unresolved":false,"context_lines":[{"line_number":1433,"context_line":"        :returns: Router with updated interface"},{"line_number":1434,"context_line":"        :rtype: :class: `~openstack.network.v2.router.Router`"},{"line_number":1435,"context_line":"        \"\"\""},{"line_number":1436,"context_line":"        return router.remove_interface(self.session, **body)"},{"line_number":1437,"context_line":""},{"line_number":1438,"context_line":"    def create_security_group(self, **attrs):"},{"line_number":1439,"context_line":"        \"\"\"Create a new security group from attributes"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_8be9ce1c","line":1436,"range":{"start_line":1436,"start_character":22,"end_line":1436,"end_character":38},"updated":"2016-09-02 11:01:56.000000000","message":"Shouldn\u0027t this be remove_gateway()?","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"5ab1be598011a6bba65f3ae07921b076b5197da7","unresolved":false,"context_lines":[{"line_number":1433,"context_line":"        :returns: Router with updated interface"},{"line_number":1434,"context_line":"        :rtype: :class: `~openstack.network.v2.router.Router`"},{"line_number":1435,"context_line":"        \"\"\""},{"line_number":1436,"context_line":"        return router.remove_interface(self.session, **body)"},{"line_number":1437,"context_line":""},{"line_number":1438,"context_line":"    def create_security_group(self, **attrs):"},{"line_number":1439,"context_line":"        \"\"\"Create a new security group from attributes"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_24aff32a","line":1436,"range":{"start_line":1436,"start_character":22,"end_line":1436,"end_character":38},"in_reply_to":"fa7ab95a_8be9ce1c","updated":"2016-09-08 04:59:21.000000000","message":"same","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"}],"openstack/network/v2/router.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"a1d733aa4233a5a341d2fcdd8ccc574c0557f841","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        :returns: The body of the response as a dictionary."},{"line_number":94,"context_line":"        \"\"\""},{"line_number":95,"context_line":"        url \u003d utils.urljoin(self.base_path, self.id,"},{"line_number":96,"context_line":"                            \u0027add_gateway_to_router\u0027)"},{"line_number":97,"context_line":"        resp \u003d session.put(url, endpoint_filter\u003dself.service, json\u003dbody)"},{"line_number":98,"context_line":"        return resp.json()"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_8af1cb6d","line":96,"range":{"start_line":96,"start_character":29,"end_line":96,"end_character":50},"updated":"2016-08-23 15:49:16.000000000","message":"Is this the actual URL that gets called? I only meant to change the method name on the proxy so that it matches.","commit_id":"dbea3d4b5b0122e9d1f5c08b849968f52a2bd72c"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"467fbeeb5d9a81b765951d34db9a8b7a394f0f4e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        :returns: The body of the response as a dictionary."},{"line_number":94,"context_line":"        \"\"\""},{"line_number":95,"context_line":"        url \u003d utils.urljoin(self.base_path, self.id,"},{"line_number":96,"context_line":"                            \u0027add_gateway_to_router\u0027)"},{"line_number":97,"context_line":"        resp \u003d session.put(url, endpoint_filter\u003dself.service, json\u003dbody)"},{"line_number":98,"context_line":"        return resp.json()"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_4bd054c9","line":96,"range":{"start_line":96,"start_character":29,"end_line":96,"end_character":50},"in_reply_to":"1ac06dbe_8af1cb6d","updated":"2016-08-24 04:06:30.000000000","message":"Shouldnt it match with the proxy?","commit_id":"dbea3d4b5b0122e9d1f5c08b849968f52a2bd72c"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3f58c8d3150735ecc647d13ec2c8f6806635d951","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        :returns: The body of the response as a dictionary."},{"line_number":94,"context_line":"        \"\"\""},{"line_number":95,"context_line":"        url \u003d utils.urljoin(self.base_path, self.id,"},{"line_number":96,"context_line":"                            \u0027add_gateway_router\u0027)"},{"line_number":97,"context_line":"        resp \u003d session.put(url, endpoint_filter\u003dself.service, json\u003dbody)"},{"line_number":98,"context_line":"        return resp.json()"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_75bd23d7","line":96,"range":{"start_line":96,"start_character":29,"end_line":96,"end_character":47},"updated":"2016-09-08 06:18:21.000000000","message":"add_gateway_to_router","commit_id":"ca910e412e838e171dfec3a604b3705007df9e01"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3f58c8d3150735ecc647d13ec2c8f6806635d951","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        :returns: The body of the response as a dictionary."},{"line_number":108,"context_line":"        \"\"\""},{"line_number":109,"context_line":"        url \u003d utils.urljoin(self.base_path, self.id,"},{"line_number":110,"context_line":"                            \u0027remove_gateway_router\u0027)"},{"line_number":111,"context_line":"        resp \u003d session.put(url, endpoint_filter\u003dself.service, json\u003dbody)"},{"line_number":112,"context_line":"        return resp.json()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_15cdb784","line":110,"range":{"start_line":110,"start_character":29,"end_line":110,"end_character":50},"updated":"2016-09-08 06:18:21.000000000","message":"remove_gateway_from_router","commit_id":"ca910e412e838e171dfec3a604b3705007df9e01"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"3100c5ee55c0228f70176141ed4d837a7d35141b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        resp \u003d session.put(url, endpoint_filter\u003dself.service, json\u003dbody)"},{"line_number":84,"context_line":"        return resp.json()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def add_gateway(self, session, **body):"},{"line_number":87,"context_line":"        \"\"\"Add an external gateway to a logical router."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        :param session: The session to communicate through."}],"source_content_type":"text/x-python","patch_set":8,"id":"9a89bdaa_fd010306","line":86,"updated":"2016-09-08 12:50:28.000000000","message":"Where is this method used?","commit_id":"876e38639abd789df64ba6f3b6e2deb83ee6300c"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"3100c5ee55c0228f70176141ed4d837a7d35141b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        resp \u003d session.put(url, endpoint_filter\u003dself.service, json\u003dbody)"},{"line_number":98,"context_line":"        return resp.json()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def remove_gateway(self, session, **body):"},{"line_number":101,"context_line":"        \"\"\"Remove an external gateway from a logical router."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        :param session: The session to communicate through."}],"source_content_type":"text/x-python","patch_set":8,"id":"9a89bdaa_1d05c70f","line":100,"updated":"2016-09-08 12:50:28.000000000","message":"Where is this method used?","commit_id":"876e38639abd789df64ba6f3b6e2deb83ee6300c"}],"openstack/tests/unit/network/v2/test_router.py":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"5b168aa64f8f50578a58f8da093f4a6cabe7930f","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        sess.put.assert_called_with(url, endpoint_filter\u003dsot.service,"},{"line_number":160,"context_line":"                                    json\u003dbody)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def test_add_router_gateway(self):"},{"line_number":163,"context_line":"        # Add gateway to a router"},{"line_number":164,"context_line":"        sot \u003d router.Router(EXAMPLE_WITH_OPTIONAL)"},{"line_number":165,"context_line":"        response \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa7ab95a_2bc28285","line":162,"updated":"2016-09-02 11:01:56.000000000","message":"Please add a remove test as well.","commit_id":"a6ab6ac9557958dd3e690b0c7e947cc95ab44fe5"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3f58c8d3150735ecc647d13ec2c8f6806635d951","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        body \u003d {\"network_id\": 3, \"enable_snat\": True}"},{"line_number":171,"context_line":"        self.assertEqual(response.body, sot.add_gateway(sess, **body))"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        url \u003d \u0027routers/IDENTIFIER/add_gateway_router\u0027"},{"line_number":174,"context_line":"        sess.put.assert_called_with(url, endpoint_filter\u003dsot.service,"},{"line_number":175,"context_line":"                                    json\u003dbody)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_95a707bc","line":173,"range":{"start_line":173,"start_character":34,"end_line":173,"end_character":52},"updated":"2016-09-08 06:18:21.000000000","message":"add_gateway_to_router ?","commit_id":"ca910e412e838e171dfec3a604b3705007df9e01"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3f58c8d3150735ecc647d13ec2c8f6806635d951","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        body \u003d {\"network_id\": 3, \"enable_snat\": True}"},{"line_number":186,"context_line":"        self.assertEqual(response.body, sot.remove_gateway(sess, **body))"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        url \u003d \u0027routers/IDENTIFIER/remove_gateway_router\u0027"},{"line_number":189,"context_line":"        sess.put.assert_called_with(url, endpoint_filter\u003dsot.service,"},{"line_number":190,"context_line":"                                    json\u003dbody)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_d5ad0f9c","line":188,"range":{"start_line":188,"start_character":34,"end_line":188,"end_character":55},"updated":"2016-09-08 06:18:21.000000000","message":"remove_gateway_from_router ?","commit_id":"ca910e412e838e171dfec3a604b3705007df9e01"}]}
