)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"04eddc384634b57d75f53fd242a38615b7663b4b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Tang Chen \u003cchen.tang@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-04 13:19:01 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Router: Add --route and --clear-routes options to \"router"},{"line_number":8,"context_line":" set\" command"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"--route option is used to set routes to the router."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a5ae5dd_1f48b12c","line":7,"updated":"2016-02-04 18:08:00.000000000","message":"This should be a single line.","commit_id":"4ae9b704b3c9af5987a7ebeade90027c87ab8d74"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"ac32b49b4ab4b4dd57fbaeebce12d6097697a1b7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Tang Chen \u003cchen.tang@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-04 13:19:01 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Router: Add --route and --clear-routes options to \"router"},{"line_number":8,"context_line":" set\" command"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"--route option is used to set routes to the router."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a5ae5dd_6586f414","line":7,"in_reply_to":"5a5ae5dd_1f48b12c","updated":"2016-02-04 18:55:28.000000000","message":"Done","commit_id":"4ae9b704b3c9af5987a7ebeade90027c87ab8d74"}],"doc/source/command-objects/router.rst":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"04eddc384634b57d75f53fd242a38615b7663b4b","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    Set router to centralized mode (disabled router only)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":".. option:: --route destination\u003dCIDR,nexthop\u003dIP_ADDR"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    Routes associated with the router."},{"line_number":122,"context_line":"    Repeat this option to set multiple routes."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a5ae5dd_ff73557e","line":119,"updated":"2016-02-04 18:08:00.000000000","message":"John Kasperski suggested changing nexthop to gateway.","commit_id":"4ae9b704b3c9af5987a7ebeade90027c87ab8d74"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"ac32b49b4ab4b4dd57fbaeebce12d6097697a1b7","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    Set router to centralized mode (disabled router only)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":".. option:: --route destination\u003dCIDR,nexthop\u003dIP_ADDR"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    Routes associated with the router."},{"line_number":122,"context_line":"    Repeat this option to set multiple routes."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a5ae5dd_e5a9847c","line":119,"in_reply_to":"5a5ae5dd_ff73557e","updated":"2016-02-04 18:55:28.000000000","message":"But I don\u0027t quite understand why gateway is better.","commit_id":"4ae9b704b3c9af5987a7ebeade90027c87ab8d74"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"e5139338449c0601aa10908d1c0bea2e0deebb47","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    Routes associated with the router."},{"line_number":122,"context_line":"    Repeat this option to set multiple routes."},{"line_number":123,"context_line":"    destination: destination subnet CIDR."},{"line_number":124,"context_line":"    gateway: nexthop IP address."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":".. option:: --clear-routes"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dae33548_82ace68c","line":123,"updated":"2016-02-18 18:48:34.000000000","message":"destination subnet (in CIDR notation)","commit_id":"2f1187f869a3025acc5c0076504decae87ca566c"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"ade1b210894d8f7018096ce1376e4dce6826f8a8","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    Routes associated with the router."},{"line_number":122,"context_line":"    Repeat this option to set multiple routes."},{"line_number":123,"context_line":"    destination: destination subnet CIDR."},{"line_number":124,"context_line":"    gateway: nexthop IP address."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":".. option:: --clear-routes"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bae84128_6ef4bf85","line":123,"in_reply_to":"dae33548_82ace68c","updated":"2016-02-22 10:51:06.000000000","message":"Done","commit_id":"2f1187f869a3025acc5c0076504decae87ca566c"},{"author":{"_account_id":18658,"name":"Jas Singh","email":"singhj@us.ibm.com","username":"singhj"},"change_message_id":"1ad73b2eec86bd090227f992c19f9e22bd359614","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        [--name \u003cname\u003e]"},{"line_number":94,"context_line":"        [--enable | --disable]"},{"line_number":95,"context_line":"        [--distributed | --centralized]"},{"line_number":96,"context_line":"        [--route destination\u003dsubnet,gateway\u003dip-address | --clear-routes]"},{"line_number":97,"context_line":"        \u003crouter\u003e"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":".. option:: --name \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aed3d3a_6c222703","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":72},"updated":"2016-02-26 16:18:44.000000000","message":"For consistency, maybe use angle brackets e.g. destination\u003d\u003csubnet\u003e and gateway\u003d\u003cip-address\u003e. The port create patch has a similar use-case and uses those.","commit_id":"aff1678953f23db31952c48843fa7bd6b168380d"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"1224af760e34d18e19da5c45fb9ae012354e3cf5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        [--name \u003cname\u003e]"},{"line_number":94,"context_line":"        [--enable | --disable]"},{"line_number":95,"context_line":"        [--distributed | --centralized]"},{"line_number":96,"context_line":"        [--route destination\u003dsubnet,gateway\u003dip-address | --clear-routes]"},{"line_number":97,"context_line":"        \u003crouter\u003e"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":".. option:: --name \u003cname\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aed3d3a_b8261bb8","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":72},"in_reply_to":"9aed3d3a_6c222703","updated":"2016-02-26 20:03:20.000000000","message":"Done","commit_id":"aff1678953f23db31952c48843fa7bd6b168380d"}],"openstackclient/network/v2/router.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"dcebb16b23b2b1db2e51b74b229e790b0fab4525","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        routes_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":260,"context_line":"        routes_group.add_argument("},{"line_number":261,"context_line":"            \u0027--route\u0027,"},{"line_number":262,"context_line":"            metavar\u003d\u0027destination\u003dCIDR,gateway\u003dIP_ADDR\u0027,"},{"line_number":263,"context_line":"            action\u003dparseractions.KeyValueListAction,"},{"line_number":264,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":265,"context_line":"            help\u003d\"Routes associated with the router. \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_bed402bd","line":262,"range":{"start_line":262,"start_character":21,"end_line":262,"end_character":53},"updated":"2016-02-17 12:45:05.000000000","message":"I have renamed \"nexthop\" to \"gateway\", but I don\u0027t know how to say \"cidr\" in another word.","commit_id":"72d01b5a315a59aa7e64a47ab51bb73192b1d705"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"12cca2d266fab2a626cf88a23fbdef3ec6bcfb1e","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        routes_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":260,"context_line":"        routes_group.add_argument("},{"line_number":261,"context_line":"            \u0027--route\u0027,"},{"line_number":262,"context_line":"            metavar\u003d\u0027destination\u003dCIDR,gateway\u003dIP_ADDR\u0027,"},{"line_number":263,"context_line":"            action\u003dparseractions.KeyValueListAction,"},{"line_number":264,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":265,"context_line":"            help\u003d\"Routes associated with the router. \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_ac3af3e4","line":262,"range":{"start_line":262,"start_character":21,"end_line":262,"end_character":53},"in_reply_to":"dae33548_2f5d4379","updated":"2016-02-18 01:12:34.000000000","message":"Done","commit_id":"72d01b5a315a59aa7e64a47ab51bb73192b1d705"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"aae8a77efef59f38e810c4ebbdeebe5d03fee096","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        routes_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":260,"context_line":"        routes_group.add_argument("},{"line_number":261,"context_line":"            \u0027--route\u0027,"},{"line_number":262,"context_line":"            metavar\u003d\u0027destination\u003dCIDR,gateway\u003dIP_ADDR\u0027,"},{"line_number":263,"context_line":"            action\u003dparseractions.KeyValueListAction,"},{"line_number":264,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":265,"context_line":"            help\u003d\"Routes associated with the router. \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dae33548_2f5d4379","line":262,"range":{"start_line":262,"start_character":21,"end_line":262,"end_character":53},"in_reply_to":"dae33548_bed402bd","updated":"2016-02-17 20:06:35.000000000","message":"How about \"subnet\" instead of \"cidr\"?\n\nIn neutron, the following is used to validate the hostroutes so I think subnet and ip address would be appropriate.\n\n        msg \u003d _validate_subnet(hostroute[\u0027destination\u0027])\n        msg \u003d _validate_ip_address(hostroute[\u0027nexthop\u0027])","commit_id":"72d01b5a315a59aa7e64a47ab51bb73192b1d705"}],"openstackclient/tests/network/v2/test_router.py":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"04eddc384634b57d75f53fd242a38615b7663b4b","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        self.network.update_router.assert_called_with(self._router, **attrs)"},{"line_number":346,"context_line":"        self.assertIsNone(result)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def test_set_route_no_routes(self):"},{"line_number":349,"context_line":"        arglist \u003d ["},{"line_number":350,"context_line":"            self._router.name,"},{"line_number":351,"context_line":"            \u0027--route\u0027, \u0027destination\u003d10.20.30.40/24,nexthop\u003d10.20.30.40\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_ffe835e4","line":348,"updated":"2016-02-04 18:08:00.000000000","message":"suggest changing name to \"test_set_route_clear_routes\"","commit_id":"4ae9b704b3c9af5987a7ebeade90027c87ab8d74"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"ac32b49b4ab4b4dd57fbaeebce12d6097697a1b7","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        self.network.update_router.assert_called_with(self._router, **attrs)"},{"line_number":346,"context_line":"        self.assertIsNone(result)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def test_set_route_no_routes(self):"},{"line_number":349,"context_line":"        arglist \u003d ["},{"line_number":350,"context_line":"            self._router.name,"},{"line_number":351,"context_line":"            \u0027--route\u0027, \u0027destination\u003d10.20.30.40/24,nexthop\u003d10.20.30.40\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_a5baacbe","line":348,"in_reply_to":"5a5ae5dd_ffe835e4","updated":"2016-02-04 18:55:28.000000000","message":"Done","commit_id":"4ae9b704b3c9af5987a7ebeade90027c87ab8d74"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"e5139338449c0601aa10908d1c0bea2e0deebb47","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    def test_set_route(self):"},{"line_number":310,"context_line":"        arglist \u003d ["},{"line_number":311,"context_line":"            self._router.name,"},{"line_number":312,"context_line":"            \u0027--route\u0027, \u0027destination\u003d10.20.30.40/24,gateway\u003d10.20.30.40\u0027,"},{"line_number":313,"context_line":"        ]"},{"line_number":314,"context_line":"        verifylist \u003d ["},{"line_number":315,"context_line":"            (\u0027router\u0027, self._router.name),"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_4de04f29","line":312,"updated":"2016-02-18 18:48:34.000000000","message":"John mentioned a concern with the 10.20.30.40/24 notation here.  This is a valid subnet as the mask is applied and 10.20.30.0 will be correctly determined, but it does confuse people.  These tests are just matching strings so it probably doesn\u0027t matter, but in docs we should be careful there.","commit_id":"2f1187f869a3025acc5c0076504decae87ca566c"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"ade1b210894d8f7018096ce1376e4dce6826f8a8","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    def test_set_route(self):"},{"line_number":310,"context_line":"        arglist \u003d ["},{"line_number":311,"context_line":"            self._router.name,"},{"line_number":312,"context_line":"            \u0027--route\u0027, \u0027destination\u003d10.20.30.40/24,gateway\u003d10.20.30.40\u0027,"},{"line_number":313,"context_line":"        ]"},{"line_number":314,"context_line":"        verifylist \u003d ["},{"line_number":315,"context_line":"            (\u0027router\u0027, self._router.name),"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_892add7c","line":312,"in_reply_to":"dae33548_4de04f29","updated":"2016-02-22 10:51:06.000000000","message":"Done","commit_id":"2f1187f869a3025acc5c0076504decae87ca566c"}]}
