)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"677b5c1bfe7253f3a37b23cf6e408136f7038d69","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add \"router list\" command. It takes one \"--long\" option."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"By default, the command will print router id, name, status,"},{"line_number":12,"context_line":"admin state up, distributed, ha."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"With \"--long\" option, it will also print project id and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a740942_bebb7e0e","line":11,"updated":"2015-12-11 14:04:20.000000000","message":"Please add routes as well.","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"5ef1d01bc96c14af1144366a8050545b49abfad4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add \"router list\" command. It takes one \"--long\" option."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"By default, the command will print router id, name, status,"},{"line_number":12,"context_line":"admin state up, distributed, ha."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"With \"--long\" option, it will also print project id and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a740942_b931585c","line":11,"in_reply_to":"7a740942_bebb7e0e","updated":"2015-12-11 15:04:57.000000000","message":"Done","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"677b5c1bfe7253f3a37b23cf6e408136f7038d69","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I9d21904c41c11ee1fa107f985744878a1dc2f970"},{"line_number":18,"context_line":"Implements: blueprint neutron-client"},{"line_number":19,"context_line":"Closes-bug: #1523258"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a740942_5eccdaba","line":19,"updated":"2015-12-11 14:04:20.000000000","message":"This is the wrong bug and doesn\u0027t close the bug.","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"5ef1d01bc96c14af1144366a8050545b49abfad4","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I9d21904c41c11ee1fa107f985744878a1dc2f970"},{"line_number":18,"context_line":"Implements: blueprint neutron-client"},{"line_number":19,"context_line":"Closes-bug: #1523258"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a740942_2f5d1647","line":19,"in_reply_to":"7a740942_5eccdaba","updated":"2015-12-11 15:04:57.000000000","message":"Done","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"}],"doc/source/commands.rst":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"664fd1aa46989f751c6eb687bee37a5184679dc1","unresolved":false,"context_lines":[{"line_number":107,"context_line":"* ``request token``: (**Identity**) temporary OAuth-based token"},{"line_number":108,"context_line":"* ``role``: (**Identity**) a policy object used to determine authorization"},{"line_number":109,"context_line":"* ``role assignment``: (**Identity**) a relationship between roles, users or groups, and domains or projects"},{"line_number":110,"context_line":"* ``router``: (**Network**) - a virtual router"},{"line_number":111,"context_line":"* ``security group``: (**Compute**, **Network**) - groups of network access rules"},{"line_number":112,"context_line":"* ``security group rule``: (**Compute**, **Network**) - the individual rules that define protocol/IP/port access"},{"line_number":113,"context_line":"* ``server``: (**Compute**) virtual machine instance"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_d36686ba","line":110,"updated":"2015-12-11 12:56:23.000000000","message":"Also need an entry in https://github.com/openstack/python-openstackclient/blob/master/doc/source/command-objects/network.rst","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"5ef1d01bc96c14af1144366a8050545b49abfad4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"* ``request token``: (**Identity**) temporary OAuth-based token"},{"line_number":108,"context_line":"* ``role``: (**Identity**) a policy object used to determine authorization"},{"line_number":109,"context_line":"* ``role assignment``: (**Identity**) a relationship between roles, users or groups, and domains or projects"},{"line_number":110,"context_line":"* ``router``: (**Network**) - a virtual router"},{"line_number":111,"context_line":"* ``security group``: (**Compute**, **Network**) - groups of network access rules"},{"line_number":112,"context_line":"* ``security group rule``: (**Compute**, **Network**) - the individual rules that define protocol/IP/port access"},{"line_number":113,"context_line":"* ``server``: (**Compute**) virtual machine instance"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_4a06501d","line":110,"in_reply_to":"7a740942_d36686ba","updated":"2015-12-11 15:04:57.000000000","message":"Sorry, what kind of entry do you mean ?  Would you please give me an example ?","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"}],"openstackclient/network/v2/router.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"664fd1aa46989f751c6eb687bee37a5184679dc1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cliff import lister"},{"line_number":19,"context_line":"from oslo_serialization import jsonutils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from openstackclient.common import utils"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_73bb12e6","line":19,"updated":"2015-12-11 12:56:23.000000000","message":"Not sure what the reaction is going to be to this, we aren\u0027t using it anywhere else.  Might be best to just use the standard json.dump","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"5ef1d01bc96c14af1144366a8050545b49abfad4","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cliff import lister"},{"line_number":19,"context_line":"from oslo_serialization import jsonutils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from openstackclient.common import utils"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_fedca6e5","line":19,"in_reply_to":"7a740942_73bb12e6","updated":"2015-12-11 15:04:57.000000000","message":"Done","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"664fd1aa46989f751c6eb687bee37a5184679dc1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    try:"},{"line_number":30,"context_line":"        return jsonutils.dumps(router[\u0027external_gateway_info\u0027])"},{"line_number":31,"context_line":"    except (TypeError, KeyError):"},{"line_number":32,"context_line":"        return \u0027\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"_formatters \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_b3c5fa5c","line":32,"updated":"2015-12-11 12:56:23.000000000","message":"Might be best to repr it if there are *any* exceptions","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"5ef1d01bc96c14af1144366a8050545b49abfad4","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    try:"},{"line_number":30,"context_line":"        return jsonutils.dumps(router[\u0027external_gateway_info\u0027])"},{"line_number":31,"context_line":"    except (TypeError, KeyError):"},{"line_number":32,"context_line":"        return \u0027\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"_formatters \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_be905eee","line":32,"in_reply_to":"7a740942_b3c5fa5c","updated":"2015-12-11 15:04:57.000000000","message":"Actually, I don\u0027t like the output of this formatter. I copied it from neutron client. But I cannot work out a better one since the external gateway info is too much. I\u0027ll try to find another way to format it.","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"664fd1aa46989f751c6eb687bee37a5184679dc1","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            )"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        # Currently, no extra args needed for router."},{"line_number":87,"context_line":"        args \u003d {}"},{"line_number":88,"context_line":"        data \u003d client.routers(**args)"},{"line_number":89,"context_line":"        return (column_headers,"},{"line_number":90,"context_line":"                (utils.get_item_properties("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_f37dc21c","line":87,"updated":"2015-12-11 12:56:23.000000000","message":"I kind of think it unlikely we\u0027ll ever have args here, so might just skip this","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"5ef1d01bc96c14af1144366a8050545b49abfad4","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            )"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        # Currently, no extra args needed for router."},{"line_number":87,"context_line":"        args \u003d {}"},{"line_number":88,"context_line":"        data \u003d client.routers(**args)"},{"line_number":89,"context_line":"        return (column_headers,"},{"line_number":90,"context_line":"                (utils.get_item_properties("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_3e6a2eee","line":87,"in_reply_to":"7a740942_f37dc21c","updated":"2015-12-11 15:04:57.000000000","message":"Done","commit_id":"4b902d992ae91d130b219a1f28c578dbf71ca3aa"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"45e2528247ba0421149ea5ace99133aef8728df5","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from openstackclient.common import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def _format_admin_state(state):"},{"line_number":25,"context_line":"    return \u0027UP\u0027 if state else \u0027DOWN\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_c927a4b4","line":24,"updated":"2015-12-11 18:00:42.000000000","message":"this is copy n paste of https://github.com/openstack/python-openstackclient/blob/master/openstackclient/network/v2/network.py#L27-L28\n\neventually we should make it a common utility function if it happens one more time.\n\nwe could dump all the formatters into the same file.\n\njust a thought, not necessary to fix now.","commit_id":"d3252079aedd651adb4ee6276230f20ec66088b8"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"8c81fa2c7bbeb96a203ae8fd8d970fe8704aabaa","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from openstackclient.common import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def _format_admin_state(state):"},{"line_number":25,"context_line":"    return \u0027UP\u0027 if state else \u0027DOWN\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_c91324b7","line":24,"in_reply_to":"7a740942_c927a4b4","updated":"2015-12-11 18:14:08.000000000","message":"Done","commit_id":"d3252079aedd651adb4ee6276230f20ec66088b8"}]}
