)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8d216b40d8fbc4dcfbcdf2f08d85a7a466c3b2c6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"            ......."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The OpenStack contributor guide has instructions. The guide has a"},{"line_number":30,"context_line":"chapter on how to use the duto-generate docs tools"},{"line_number":31,"context_line":"- https://docs.openstack.org/contributor-guide/doc-tools.html"},{"line_number":32,"context_line":"Specifically, the chapter on the command line reference explains"},{"line_number":33,"context_line":"how the tool works -"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7f231b9d_d45ece74","line":30,"range":{"start_line":30,"start_character":26,"end_line":30,"end_character":30},"updated":"2017-06-14 21:58:41.000000000","message":"auto","commit_id":"b2f930348867e7689570c03ef7d6258a2836e56e"}],"cinderclient/v2/contrib/list_extensions.py":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"f39d2b4dbb4e016a8263f8ae3ebd3168f2ee8e7b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    utils.print_list(extensions, fields)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def do_list_extensions(client, _args):"},{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    Lists all available os-api extensions."},{"line_number":52,"context_line":"    \"\"\""},{"line_number":53,"context_line":"    return list_extensions(client, _args)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_efd4f1ec","line":53,"range":{"start_line":49,"start_character":0,"end_line":53,"end_character":41},"updated":"2017-03-22 13:39:11.000000000","message":"actually, why do we need this function if it\u0027s only purpose is to call another function? And you add the same doc string to it.\n\nMaybe we can left it like here [0] ?\n\n[0] https://github.com/openstack/python-cinderclient/blob/204b15ab13004e3d5ac1ec4d0dbd3fe94bb2a8fd/cinderclient/v1/contrib/list_extensions.py#L40","commit_id":"43810bbeda3cf7373a5ba7a94e038a131be990f1"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"zhangdaolong@fiberhome.com","username":"zhangdaolong"},"change_message_id":"8d58ddc542ad5ac68f46196122e2f2dc76b108c3","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    utils.print_list(extensions, fields)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def do_list_extensions(client, _args):"},{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    Lists all available os-api extensions."},{"line_number":52,"context_line":"    \"\"\""},{"line_number":53,"context_line":"    return list_extensions(client, _args)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_bf2e8ba2","line":53,"range":{"start_line":49,"start_character":0,"end_line":53,"end_character":41},"in_reply_to":"1a1ced50_efd4f1ec","updated":"2017-03-23 00:50:49.000000000","message":"Now the current cinderclient version default use v3 interface. And the do_list_extensions of V3 inherited V2.\nThe do_list_extensions of V2 does not have __doc__.For the cli-reference, there is a specific docs tool used \nto auto-generate the cli-reference files.The docs tool find the function __doc__ that starts with \u0027do_\u0027,as The do_list_extensions\u0027s __doc__ is none,so the subcommand \u0027list-extensions\u0027 no desc.\n\npython-cinderclient/cinderclient/shell.py\n---------------------------------\ndef _find_actions(self, subparsers, actions_module, version,\n                      do_help, input_args):\n        for attr in (a for a in dir(actions_module) if a.startswith(\u0027do_\u0027)):\n            # I prefer to be hyphen-separated instead of underscores.\n            command \u003d attr[3:].replace(\u0027_\u0027, \u0027-\u0027)\n            callback \u003d getattr(actions_module, attr)\n            desc \u003d callback.__doc__ or \u0027\u0027\n            .......\n\nThe OpenStack contributor guide has instructions. The guide has a chapter on how to use the docs \ntools - https://docs.openstack.org/contributor-guide/doc-tools.html\nSpecifically, the chapter on the command line reference explains how the tool works - https://docs.openstack.org/contributor-guide/doc-tools/cli-reference.html","commit_id":"43810bbeda3cf7373a5ba7a94e038a131be990f1"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"d795909e4d6259b8e10cc29d2953dbdf55f7a581","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        return self._list(\"/extensions\", \u0027extensions\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def list_extensions(client, _args):"},{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":"    Lists all available os-api extensions."},{"line_number":43,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_27377cb3","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":19},"updated":"2017-03-24 13:40:53.000000000","message":"rename it to do_list_extensions","commit_id":"eb403aea1e8c6e42d4849873041703b4875d0839"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"zhangdaolong@fiberhome.com","username":"zhangdaolong"},"change_message_id":"cc383273717052ab96486c94b2c29c5a02c1abae","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        return self._list(\"/extensions\", \u0027extensions\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def list_extensions(client, _args):"},{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":"    Lists all available os-api extensions."},{"line_number":43,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_07e7bfe6","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":19},"in_reply_to":"ffe62b97_27377cb3","updated":"2017-03-25 01:48:19.000000000","message":"ok\nthand you!","commit_id":"eb403aea1e8c6e42d4849873041703b4875d0839"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"d795909e4d6259b8e10cc29d2953dbdf55f7a581","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    fields \u003d [\"Name\", \"Summary\", \"Alias\", \"Updated\"]"},{"line_number":46,"context_line":"    utils.print_list(extensions, fields)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def do_list_extensions(client, _args):"},{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    Lists all available os-api extensions."},{"line_number":52,"context_line":"    \"\"\""},{"line_number":53,"context_line":"    return list_extensions(client, _args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_e740740a","line":53,"range":{"start_line":48,"start_character":0,"end_line":53,"end_character":41},"updated":"2017-03-24 13:40:53.000000000","message":"remove it","commit_id":"eb403aea1e8c6e42d4849873041703b4875d0839"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"zhangdaolong@fiberhome.com","username":"zhangdaolong"},"change_message_id":"cc383273717052ab96486c94b2c29c5a02c1abae","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    fields \u003d [\"Name\", \"Summary\", \"Alias\", \"Updated\"]"},{"line_number":46,"context_line":"    utils.print_list(extensions, fields)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def do_list_extensions(client, _args):"},{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    Lists all available os-api extensions."},{"line_number":52,"context_line":"    \"\"\""},{"line_number":53,"context_line":"    return list_extensions(client, _args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_e7ebbbad","line":53,"range":{"start_line":48,"start_character":0,"end_line":53,"end_character":41},"in_reply_to":"ffe62b97_e740740a","updated":"2017-03-25 01:48:19.000000000","message":"ok\n\nthand you!","commit_id":"eb403aea1e8c6e42d4849873041703b4875d0839"}]}
