)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"2577e1f9793dcb9d0aeb4ecbf1bcbf4935383fe6","unresolved":false,"context_lines":[{"line_number":12,"context_line":"be deleted (--compute, --volume, and --network). If no flags specified then all"},{"line_number":13,"context_line":"quotas will be deleted."},{"line_number":14,"context_line":"Also changed documentation and added some unit tests."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I2348270fbbe26ec2970e1374c250f84d4340238e"},{"line_number":17,"context_line":"Partially-implements: blueprint neutron-client-quota"},{"line_number":18,"context_line":"Co-Authored-By: Reedip \u003creedip14@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"da36d5c6_2cec40f2","line":15,"updated":"2017-02-24 23:22:23.000000000","message":"This commit msg is little confusing. From the code and the doc, looks like project id/name is a required field. What is the --project that is being referenced here? Since the command is `quota unset`, we can use \"unset\" the resource quota than delete","commit_id":"d723d2974d5153561c6bedfe852b3a257f3b39fa"}],"doc/source/command-objects/quota.rst":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"03882db0619af52583a51d6c5d43566063d3f39d","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    Show quotas for this class (name or ID)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"quota delete"},{"line_number":249,"context_line":"----------"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Delete defined quotas of a given project"},{"line_number":252,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a8bc5a2_be9a3e6c","line":249,"range":{"start_line":249,"start_character":0,"end_line":249,"end_character":10},"updated":"2016-09-26 17:32:33.000000000","message":"you need to add a few more --\u0027s here to line up with the title","commit_id":"4e487bc208f691d77c6c00c08f882def89a5125c"},{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"39f0373d26611f032d50bac8fa16676be382dac5","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    Show quotas for this class (name or ID)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"quota delete"},{"line_number":249,"context_line":"----------"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Delete defined quotas of a given project"},{"line_number":252,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a8bc5a2_650ade8b","line":249,"range":{"start_line":249,"start_character":0,"end_line":249,"end_character":10},"in_reply_to":"5a8bc5a2_be9a3e6c","updated":"2016-09-26 18:49:24.000000000","message":"Oops. Yep. Will do it in next PS. Thank.","commit_id":"4e487bc208f691d77c6c00c08f882def89a5125c"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a8dc8ae8215e3bb64d9ac2445bcde1eb0d438c62","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        [\u003cproject\u003e]"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. _quota_delete-project:"},{"line_number":260,"context_line":".. describe:: \u003cproject\u003e"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    Delete quotas for this project (name or ID)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_c33196ee","line":260,"updated":"2016-09-28 17:35:58.000000000","message":"Do we need to support quota classes too?","commit_id":"4e487bc208f691d77c6c00c08f882def89a5125c"},{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"5c1dc65276d55a22283d7d617da963b389820981","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        [\u003cproject\u003e]"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. _quota_delete-project:"},{"line_number":260,"context_line":".. describe:: \u003cproject\u003e"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    Delete quotas for this project (name or ID)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_26aeac2e","line":260,"in_reply_to":"3a98d1f4_c33196ee","updated":"2016-09-29 08:23:14.000000000","message":"Hmm, actually, there are no any classes support in neutron that\u0027s why I don\u0027t exactly know how it works, but I will look into it (for cinder and nova).","commit_id":"4e487bc208f691d77c6c00c08f882def89a5125c"},{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"7154c019d57816da90b4518bd9edad28face90f1","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        [\u003cproject\u003e]"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. _quota_delete-project:"},{"line_number":260,"context_line":".. describe:: \u003cproject\u003e"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    Delete quotas for this project (name or ID)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a98d1f4_47019d04","line":260,"in_reply_to":"3a98d1f4_c33196ee","updated":"2016-09-30 13:24:45.000000000","message":"Richard, I checked nova and cinder-clients and as I see, there is no support of delete command for QuotaClasses. As I understand, at first, it should be implemented here [1][2] and after that we can add quota classes support in OSC.\n\n[1] https://github.com/openstack/python-novaclient/blob/master/novaclient/v2/quota_classes.py\n[2] https://github.com/openstack/python-cinderclient/blob/master/cinderclient/v3/quota_classes.py","commit_id":"4e487bc208f691d77c6c00c08f882def89a5125c"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"1f8321072048bc645548bfccdec0347f3caaf88d","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    os quota delete"},{"line_number":257,"context_line":"        [\u003cproject\u003e]"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. _quota_delete-project:"},{"line_number":260,"context_line":".. describe:: \u003cproject\u003e"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a95cdbc_aa5f0f74","line":258,"updated":"2016-10-04 15:30:05.000000000","message":"The options (--network, --compute, --volume) should be added here as well","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"73f86e43997866210899d4e28125f3eb9e53891e","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    os quota delete"},{"line_number":257,"context_line":"        [\u003cproject\u003e]"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. _quota_delete-project:"},{"line_number":260,"context_line":".. describe:: \u003cproject\u003e"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a95cdbc_04355745","line":258,"in_reply_to":"1a95cdbc_aa5f0f74","updated":"2016-10-04 16:00:20.000000000","message":"++","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"faa079cd88457e200b9493dceb2a5d7bdf488f64","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    os quota delete"},{"line_number":257,"context_line":"        [\u003cproject\u003e]"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. _quota_delete-project:"},{"line_number":260,"context_line":".. describe:: \u003cproject\u003e"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a95cdbc_5279b992","line":258,"in_reply_to":"1a95cdbc_aa5f0f74","updated":"2016-10-05 12:17:46.000000000","message":"Done","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"48b0ee19aaf95de7f59a0a465b28d00c6fe0af90","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    Show quotas for this class (name or ID)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"quota reset"},{"line_number":249,"context_line":"------------"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Reset to default defined quotas of a given project"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da4df55a_40e8e5e2","line":248,"updated":"2016-12-23 14:11:55.000000000","message":"In alphabetical order, reset command should before set and show command","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"51bdd3dea00f709c8106c02d2ad4d031310d4854","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    Show quotas for this class (name or ID)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"quota reset"},{"line_number":249,"context_line":"------------"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Reset to default defined quotas of a given project"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da4df55a_d5c9cc5a","line":248,"in_reply_to":"da4df55a_40e8e5e2","updated":"2016-12-26 12:31:56.000000000","message":"Ideally reset action is not in [1], so I would not favor it, unless dtroyer and other core members of OSC state otherwise.\n\nI would , on the contrary , suggest that you can just make another CLI\n\n    quotas unset\n\nwith the same options as set.\nThe Unset Action will basically reset the values to default values for individual objects.\nThis would allow the users to micromanage the quotas, instead of a global overhaul.\nWhat do you think?\nAlso, instead of reset action, you can use the Unset action with the same values ( --network, --computev1/v2 ) to perform the similar actions which you would like to do here.\n[1]: http://docs.openstack.org/developer/python-openstackclient/commands.html#actions","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"48b0ee19aaf95de7f59a0a465b28d00c6fe0af90","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    Show quotas for this class (name or ID)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"quota reset"},{"line_number":249,"context_line":"------------"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Reset to default defined quotas of a given project"},{"line_number":252,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"da4df55a_606ec997","line":249,"range":{"start_line":249,"start_character":11,"end_line":249,"end_character":12},"updated":"2016-12-23 14:11:55.000000000","message":"remove this one \"-\"","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"48b0ee19aaf95de7f59a0a465b28d00c6fe0af90","unresolved":false,"context_lines":[{"line_number":253,"context_line":".. program:: quota reset"},{"line_number":254,"context_line":".. code:: bash"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    os quota reset"},{"line_number":257,"context_line":"        [\u003cproject\u003e]"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. option:: --network"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da4df55a_e050f90c","line":256,"range":{"start_line":256,"start_character":4,"end_line":256,"end_character":6},"updated":"2016-12-23 14:11:55.000000000","message":"openstack","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"0b537781d4d29bf2ed1eb3d40f12ff8e03de85a3","unresolved":false,"context_lines":[{"line_number":253,"context_line":".. program:: quota unset"},{"line_number":254,"context_line":".. code:: bash"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    os quota unset"},{"line_number":257,"context_line":"        [\u003cproject\u003e]"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. option:: --network"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da36d5c6_18899f75","line":256,"updated":"2017-02-23 22:01:09.000000000","message":"openstack","commit_id":"ac6e3a787944636659387a306cb422327a7e64c8"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"c0fedb1c0267c01038fa8274d9ee9f6f33c18503","unresolved":false,"context_lines":[{"line_number":253,"context_line":".. program:: quota unset"},{"line_number":254,"context_line":".. code:: bash"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    openstack quota unset"},{"line_number":257,"context_line":"        [\u003cproject\u003e]"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. option:: --network"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba2be162_e3b922ee","line":256,"updated":"2017-02-28 20:29:28.000000000","message":"add options for network compute volume","commit_id":"1c561a12e7aaee595e539fe881612aa197f2500a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"137cbdbd23ca2c475584521071109c9947af456b","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    openstack quota unset"},{"line_number":257,"context_line":"        [--network][--volume]"},{"line_number":258,"context_line":"        [--compute][\u003cproject\u003e]"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":".. option:: --network"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba2be162_5ac3c437","line":258,"updated":"2017-03-06 16:13:12.000000000","message":"List these one per line\n\n\u003cproject\u003e should not be optional.  We do not allow that on set, unset should be the same.\n\nThese are admin only; cloud admin or customer admin, either way, wanting to set/unset the auth\u0027ed project is not an assumption.","commit_id":"4e2f745c32e1ff93de015a21a04c301683072b81"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"5a40e2e6da712caabd1238b89202f8638dd25f38","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    openstack quota unset"},{"line_number":257,"context_line":"        [--network][--volume]"},{"line_number":258,"context_line":"        [--compute][\u003cproject\u003e]"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":".. option:: --network"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"9a30ddce_db70b742","line":258,"in_reply_to":"ba2be162_5ac3c437","updated":"2017-03-13 03:05:55.000000000","message":"Done","commit_id":"4e2f745c32e1ff93de015a21a04c301683072b81"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"f574d5b28fbf48c83ee8c526aa803e4e4510d5a5","unresolved":false,"context_lines":[{"line_number":246,"context_line":"    Show quotas for this class (name or ID)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"quota unset"},{"line_number":249,"context_line":"------------"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Reset to default defined quotas of a given project"},{"line_number":252,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3a1ff146_54ac1f35","line":249,"range":{"start_line":249,"start_character":11,"end_line":249,"end_character":12},"updated":"2017-03-16 11:26:12.000000000","message":"need to removed :)","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"f574d5b28fbf48c83ee8c526aa803e4e4510d5a5","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        [--network]"},{"line_number":258,"context_line":"        [--volume]"},{"line_number":259,"context_line":"        [--compute]"},{"line_number":260,"context_line":"        \u003cproject\u003e"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":".. option:: --network"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3a1ff146_148707d8","line":260,"range":{"start_line":260,"start_character":8,"end_line":260,"end_character":17},"updated":"2017-03-16 11:26:12.000000000","message":"project is optional so we can add \"[]\" for it:\n[\u003cproject\u003e]","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"40721163e6a5c5fefca2cae63218feeb3dc35111","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        [--network]"},{"line_number":258,"context_line":"        [--volume]"},{"line_number":259,"context_line":"        [--compute]"},{"line_number":260,"context_line":"        \u003cproject\u003e"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":".. option:: --network"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"1a1ced50_c9fe0305","line":260,"range":{"start_line":260,"start_character":8,"end_line":260,"end_character":17},"in_reply_to":"3a1ff146_148707d8","updated":"2017-03-17 03:24:19.000000000","message":"Project isnt optional ( see Dean\u0027s comment in previous patch )","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"f574d5b28fbf48c83ee8c526aa803e4e4510d5a5","unresolved":false,"context_lines":[{"line_number":274,"context_line":".. _quota_unset-project:"},{"line_number":275,"context_line":".. describe:: \u003cproject\u003e"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    Reset quotas for this project (name or ID)"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3a1ff146_34032344","line":277,"updated":"2017-03-16 11:26:12.000000000","message":"Should we tell users what is default if project is not specified?","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"40721163e6a5c5fefca2cae63218feeb3dc35111","unresolved":false,"context_lines":[{"line_number":274,"context_line":".. _quota_unset-project:"},{"line_number":275,"context_line":".. describe:: \u003cproject\u003e"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    Reset quotas for this project (name or ID)"}],"source_content_type":"text/x-rst","patch_set":19,"id":"1a1ced50_891deb68","line":277,"in_reply_to":"3a1ff146_34032344","updated":"2017-03-17 03:24:19.000000000","message":"User Must specify Project","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"}],"openstackclient/common/quota.py":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a8dc8ae8215e3bb64d9ac2445bcde1eb0d438c62","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        )"},{"line_number":312,"context_line":"        return parser"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def _get_project(self, parsed_args):"},{"line_number":315,"context_line":"        if parsed_args.project is not None:"},{"line_number":316,"context_line":"            identity_client \u003d self.app.client_manager.identity"},{"line_number":317,"context_line":"            project \u003d utils.find_resource("},{"line_number":318,"context_line":"                identity_client.projects,"},{"line_number":319,"context_line":"                parsed_args.project,"},{"line_number":320,"context_line":"            ).id"},{"line_number":321,"context_line":"        elif self.app.client_manager.auth_ref:"},{"line_number":322,"context_line":"            # Get the project from the current auth"},{"line_number":323,"context_line":"            project \u003d self.app.client_manager.auth_ref.project_id"},{"line_number":324,"context_line":"        else:"},{"line_number":325,"context_line":"            project \u003d None"},{"line_number":326,"context_line":"        return project"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def take_action(self, parsed_args):"},{"line_number":329,"context_line":"        network_client \u003d self.app.client_manager.network"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_a806291e","line":326,"range":{"start_line":314,"start_character":0,"end_line":326,"end_character":22},"updated":"2016-09-28 17:35:58.000000000","message":"How about a local method to avoid duplicating this code?","commit_id":"4e487bc208f691d77c6c00c08f882def89a5125c"},{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"5c1dc65276d55a22283d7d617da963b389820981","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        )"},{"line_number":312,"context_line":"        return parser"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def _get_project(self, parsed_args):"},{"line_number":315,"context_line":"        if parsed_args.project is not None:"},{"line_number":316,"context_line":"            identity_client \u003d self.app.client_manager.identity"},{"line_number":317,"context_line":"            project \u003d utils.find_resource("},{"line_number":318,"context_line":"                identity_client.projects,"},{"line_number":319,"context_line":"                parsed_args.project,"},{"line_number":320,"context_line":"            ).id"},{"line_number":321,"context_line":"        elif self.app.client_manager.auth_ref:"},{"line_number":322,"context_line":"            # Get the project from the current auth"},{"line_number":323,"context_line":"            project \u003d self.app.client_manager.auth_ref.project_id"},{"line_number":324,"context_line":"        else:"},{"line_number":325,"context_line":"            project \u003d None"},{"line_number":326,"context_line":"        return project"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def take_action(self, parsed_args):"},{"line_number":329,"context_line":"        network_client \u003d self.app.client_manager.network"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_26d94cf4","line":326,"range":{"start_line":314,"start_character":0,"end_line":326,"end_character":22},"in_reply_to":"3a98d1f4_a806291e","updated":"2016-09-29 08:23:14.000000000","message":"Thanks for review, Richard. Yep, this is a good idea. Will do it in next PS.","commit_id":"4e487bc208f691d77c6c00c08f882def89a5125c"},{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"a0a7f6b0e65abb25aaa8efa37e99f7e52c116f97","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        compute_client \u003d self.app.client_manager.compute"},{"line_number":331,"context_line":"        volume_client \u003d self.app.client_manager.volume"},{"line_number":332,"context_line":"        if self.app.client_manager.is_network_endpoint_enabled():"},{"line_number":333,"context_line":"            project \u003d self._get_project(parsed_args)"},{"line_number":334,"context_line":"            network_client.delete_quota(project)"},{"line_number":335,"context_line":"        compute_client.quotas.delete(tenant_id\u003dproject)"},{"line_number":336,"context_line":"        volume_client.quotas.delete(tenant_id\u003dproject)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_e6e392a2","line":333,"range":{"start_line":333,"start_character":12,"end_line":333,"end_character":52},"updated":"2016-09-30 12:22:02.000000000","message":"This line should be before if-statement.","commit_id":"4e487bc208f691d77c6c00c08f882def89a5125c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"73f86e43997866210899d4e28125f3eb9e53891e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def get_project(app, parsed_args):"},{"line_number":83,"context_line":"    if parsed_args.project is not None:"},{"line_number":84,"context_line":"        identity_client \u003d app.client_manager.identity"},{"line_number":85,"context_line":"        project \u003d utils.find_resource("}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_64da9b7a","line":82,"range":{"start_line":82,"start_character":4,"end_line":82,"end_character":15},"updated":"2016-10-04 16:00:20.000000000","message":"mark this as private with a leading underscore\n\n  _get_project(app, parsed_args)\n\nalso, a suggestion: pass in just the client manager instead of the app itself.\n\n  _get_project(client_manager, parsed_args)","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"faa079cd88457e200b9493dceb2a5d7bdf488f64","unresolved":false,"context_lines":[{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def get_project(app, parsed_args):"},{"line_number":83,"context_line":"    if parsed_args.project is not None:"},{"line_number":84,"context_line":"        identity_client \u003d app.client_manager.identity"},{"line_number":85,"context_line":"        project \u003d utils.find_resource("}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_b2af5de2","line":82,"range":{"start_line":82,"start_character":4,"end_line":82,"end_character":15},"in_reply_to":"1a95cdbc_64da9b7a","updated":"2016-10-05 12:17:46.000000000","message":"Done","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"1f8321072048bc645548bfccdec0347f3caaf88d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        # Get the project from the current auth"},{"line_number":91,"context_line":"        project \u003d app.client_manager.auth_ref.project_id"},{"line_number":92,"context_line":"    else:"},{"line_number":93,"context_line":"        project \u003d None"},{"line_number":94,"context_line":"    return project"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_75e7a840","line":93,"updated":"2016-10-04 15:30:05.000000000","message":"Just curious about what will happen when project is None","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"faa079cd88457e200b9493dceb2a5d7bdf488f64","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        # Get the project from the current auth"},{"line_number":91,"context_line":"        project \u003d app.client_manager.auth_ref.project_id"},{"line_number":92,"context_line":"    else:"},{"line_number":93,"context_line":"        project \u003d None"},{"line_number":94,"context_line":"    return project"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_11a48ea4","line":93,"in_reply_to":"1a95cdbc_75e7a840","updated":"2016-10-05 12:17:46.000000000","message":"Actually, nothing good. In case of quota delete, the response will be \"404 Not Found. The resource could not be found\" and nothing  will be displayed in the cli. In case of quota show resp body will be \u0027{\"quotas\": []}\u0027","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"73f86e43997866210899d4e28125f3eb9e53891e","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        return parser"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def take_action(self, parsed_args):"},{"line_number":337,"context_line":"        project \u003d get_project(self.app, parsed_args)"},{"line_number":338,"context_line":"        check_all \u003d (not parsed_args.network and not parsed_args.compute and"},{"line_number":339,"context_line":"                     not parsed_args.volume)"},{"line_number":340,"context_line":"        if (self.app.client_manager.is_network_endpoint_enabled() and"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_64f53b82","line":337,"range":{"start_line":337,"start_character":18,"end_line":337,"end_character":29},"updated":"2016-10-04 16:00:20.000000000","message":"good use of refactoring the existing code","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"1f8321072048bc645548bfccdec0347f3caaf88d","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def take_action(self, parsed_args):"},{"line_number":337,"context_line":"        project \u003d get_project(self.app, parsed_args)"},{"line_number":338,"context_line":"        check_all \u003d (not parsed_args.network and not parsed_args.compute and"},{"line_number":339,"context_line":"                     not parsed_args.volume)"},{"line_number":340,"context_line":"        if (self.app.client_manager.is_network_endpoint_enabled() and"},{"line_number":341,"context_line":"           (parsed_args.network or check_all)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_d5bebcd3","line":338,"updated":"2016-10-04 15:30:05.000000000","message":"what about \"not (parsed_args.network or parsed_args.compute or parsed_args.volume)\"","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"faa079cd88457e200b9493dceb2a5d7bdf488f64","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def take_action(self, parsed_args):"},{"line_number":337,"context_line":"        project \u003d get_project(self.app, parsed_args)"},{"line_number":338,"context_line":"        check_all \u003d (not parsed_args.network and not parsed_args.compute and"},{"line_number":339,"context_line":"                     not parsed_args.volume)"},{"line_number":340,"context_line":"        if (self.app.client_manager.is_network_endpoint_enabled() and"},{"line_number":341,"context_line":"           (parsed_args.network or check_all)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_b1ccba36","line":338,"in_reply_to":"1a95cdbc_44d11ffb","updated":"2016-10-05 12:17:46.000000000","message":"I rewrote this method a little bit in PS4. But I applied you suggestion in unit tests.","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"73f86e43997866210899d4e28125f3eb9e53891e","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def take_action(self, parsed_args):"},{"line_number":337,"context_line":"        project \u003d get_project(self.app, parsed_args)"},{"line_number":338,"context_line":"        check_all \u003d (not parsed_args.network and not parsed_args.compute and"},{"line_number":339,"context_line":"                     not parsed_args.volume)"},{"line_number":340,"context_line":"        if (self.app.client_manager.is_network_endpoint_enabled() and"},{"line_number":341,"context_line":"           (parsed_args.network or check_all)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_44d11ffb","line":338,"in_reply_to":"1a95cdbc_d5bebcd3","updated":"2016-10-04 16:00:20.000000000","message":"i like this suggestion, it reads a bit easier and is logically equivalent","commit_id":"e64cee25d79e3d917ddc9169c79569d4457c3b83"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"48b0ee19aaf95de7f59a0a465b28d00c6fe0af90","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        return zip(*sorted(six.iteritems(info)))"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class ResetQuota(command.Command):"},{"line_number":303,"context_line":"    \"\"\"Reset to default defined quotas of a given project\"\"\""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da4df55a_e04d599a","line":302,"updated":"2016-12-23 14:11:55.000000000","message":"In this case, all quotas will be reset by default if no option specified, I am worry about that it is a danger behavior, should we add a \"--all\" option to reset all quotas?","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"48b0ee19aaf95de7f59a0a465b28d00c6fe0af90","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            \u0027project\u0027,"},{"line_number":309,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":310,"context_line":"            nargs\u003d\u0027?\u0027,"},{"line_number":311,"context_line":"            help\u003d_(\u0027Reset all quotas for this project (name or ID)\u0027),"},{"line_number":312,"context_line":"        )"},{"line_number":313,"context_line":"        parser.add_argument("},{"line_number":314,"context_line":"            \u0027--network\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da4df55a_407d451b","line":311,"updated":"2016-12-23 14:11:55.000000000","message":"Help message should match the doc","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"51bdd3dea00f709c8106c02d2ad4d031310d4854","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            dest\u003d\u0027actions\u0027,"},{"line_number":316,"context_line":"            action\u003d\u0027append_const\u0027,"},{"line_number":317,"context_line":"            const\u003dself.reset_quota_network,"},{"line_number":318,"context_line":"            help\u003d_(\u0027Reset network quotas\u0027))"},{"line_number":319,"context_line":"        parser.add_argument("},{"line_number":320,"context_line":"            \u0027--compute\u0027,"},{"line_number":321,"context_line":"            dest\u003d\u0027actions\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da4df55a_15c0b429","line":318,"updated":"2016-12-26 12:31:56.000000000","message":"doesnt match the string in the RST file","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"51bdd3dea00f709c8106c02d2ad4d031310d4854","unresolved":false,"context_lines":[{"line_number":321,"context_line":"            dest\u003d\u0027actions\u0027,"},{"line_number":322,"context_line":"            action\u003d\u0027append_const\u0027,"},{"line_number":323,"context_line":"            const\u003dself.reset_quota_compute,"},{"line_number":324,"context_line":"            help\u003d_(\u0027Reset compute quotas\u0027))"},{"line_number":325,"context_line":"        parser.add_argument("},{"line_number":326,"context_line":"            \u0027--volume\u0027,"},{"line_number":327,"context_line":"            dest\u003d\u0027actions\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da4df55a_35df780e","line":324,"updated":"2016-12-26 12:31:56.000000000","message":"ditto","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"51bdd3dea00f709c8106c02d2ad4d031310d4854","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            dest\u003d\u0027actions\u0027,"},{"line_number":328,"context_line":"            action\u003d\u0027append_const\u0027,"},{"line_number":329,"context_line":"            const\u003dself.reset_quota_volume,"},{"line_number":330,"context_line":"            help\u003d_(\u0027Reset volume quotas\u0027))"},{"line_number":331,"context_line":"        return parser"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    def reset_quota_network(self, project):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da4df55a_55e4fcdf","line":330,"updated":"2016-12-26 12:31:56.000000000","message":"ditto","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"578c85a472f09272e4c39b07ad928723f21e2947","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        volume_client.quotas.delete(tenant_id\u003dproject)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"    def take_action(self, parsed_args):"},{"line_number":351,"context_line":"        project \u003d _get_project(self.app.client_manager, parsed_args)"},{"line_number":352,"context_line":"        if not parsed_args.actions:"},{"line_number":353,"context_line":"            actions \u003d ["},{"line_number":354,"context_line":"                self.unset_quota_network,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_780e1b3c","line":351,"range":{"start_line":351,"start_character":56,"end_line":351,"end_character":67},"updated":"2017-02-23 22:23:24.000000000","message":"Why to send the entire parsed_args, only parsed_args.project is required for this function right?","commit_id":"ac6e3a787944636659387a306cb422327a7e64c8"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"2577e1f9793dcb9d0aeb4ecbf1bcbf4935383fe6","unresolved":false,"context_lines":[{"line_number":82,"context_line":"def _get_project(client_manager, parsed_args):"},{"line_number":83,"context_line":"    if parsed_args.project is not None:"},{"line_number":84,"context_line":"        identity_client \u003d client_manager.identity"},{"line_number":85,"context_line":"        project \u003d utils.find_resource("},{"line_number":86,"context_line":"            identity_client.projects,"},{"line_number":87,"context_line":"            parsed_args.project,"},{"line_number":88,"context_line":"        ).id"}],"source_content_type":"text/x-python","patch_set":11,"id":"da36d5c6_51f1116a","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":15},"updated":"2017-02-24 23:22:23.000000000","message":"project_id right? not the entire project object.","commit_id":"d723d2974d5153561c6bedfe852b3a257f3b39fa"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"2577e1f9793dcb9d0aeb4ecbf1bcbf4935383fe6","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            \u0027project\u0027,"},{"line_number":313,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":314,"context_line":"            nargs\u003d\u0027?\u0027,"},{"line_number":315,"context_line":"            help\u003d_(\u0027Unset all quotas for this project (name or ID)\u0027),"},{"line_number":316,"context_line":"        )"},{"line_number":317,"context_line":"        parser.add_argument("},{"line_number":318,"context_line":"            \u0027--network\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da36d5c6_7150d532","line":315,"range":{"start_line":315,"start_character":26,"end_line":315,"end_character":29},"updated":"2017-02-24 23:22:23.000000000","message":"This is only when none of the options are used.","commit_id":"d723d2974d5153561c6bedfe852b3a257f3b39fa"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"f574d5b28fbf48c83ee8c526aa803e4e4510d5a5","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"class UnsetQuota(command.Command):"},{"line_number":307,"context_line":"    \"\"\"Unset to default defined quotas of a given project\"\"\""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def get_parser(self, prog_name):"},{"line_number":310,"context_line":"        parser \u003d super(UnsetQuota, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a1ff146_14a38750","line":307,"updated":"2017-03-16 11:26:12.000000000","message":"use _description \u003d _(\"\")","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"40721163e6a5c5fefca2cae63218feeb3dc35111","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"class UnsetQuota(command.Command):"},{"line_number":307,"context_line":"    \"\"\"Unset to default defined quotas of a given project\"\"\""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    def get_parser(self, prog_name):"},{"line_number":310,"context_line":"        parser \u003d super(UnsetQuota, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a1ced50_6937cfe3","line":307,"in_reply_to":"3a1ff146_14a38750","updated":"2017-03-17 03:24:19.000000000","message":"Done","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"f574d5b28fbf48c83ee8c526aa803e4e4510d5a5","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            dest\u003d\u0027actions\u0027,"},{"line_number":320,"context_line":"            action\u003d\u0027append_const\u0027,"},{"line_number":321,"context_line":"            const\u003dself.unset_quota_network,"},{"line_number":322,"context_line":"            help\u003d_(\u0027Unset network quotas\u0027))"},{"line_number":323,"context_line":"        parser.add_argument("},{"line_number":324,"context_line":"            \u0027--compute\u0027,"},{"line_number":325,"context_line":"            dest\u003d\u0027actions\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a1ff146_744afbc6","line":322,"range":{"start_line":322,"start_character":20,"end_line":322,"end_character":41},"updated":"2017-03-16 11:26:12.000000000","message":"Help message should match the doc","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"40721163e6a5c5fefca2cae63218feeb3dc35111","unresolved":false,"context_lines":[{"line_number":319,"context_line":"            dest\u003d\u0027actions\u0027,"},{"line_number":320,"context_line":"            action\u003d\u0027append_const\u0027,"},{"line_number":321,"context_line":"            const\u003dself.unset_quota_network,"},{"line_number":322,"context_line":"            help\u003d_(\u0027Unset network quotas\u0027))"},{"line_number":323,"context_line":"        parser.add_argument("},{"line_number":324,"context_line":"            \u0027--compute\u0027,"},{"line_number":325,"context_line":"            dest\u003d\u0027actions\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a1ced50_297317b3","line":322,"range":{"start_line":322,"start_character":20,"end_line":322,"end_character":41},"in_reply_to":"3a1ff146_744afbc6","updated":"2017-03-17 03:24:19.000000000","message":"Done","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"f574d5b28fbf48c83ee8c526aa803e4e4510d5a5","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            dest\u003d\u0027actions\u0027,"},{"line_number":326,"context_line":"            action\u003d\u0027append_const\u0027,"},{"line_number":327,"context_line":"            const\u003dself.unset_quota_compute,"},{"line_number":328,"context_line":"            help\u003d_(\u0027Unset compute quotas\u0027))"},{"line_number":329,"context_line":"        parser.add_argument("},{"line_number":330,"context_line":"            \u0027--volume\u0027,"},{"line_number":331,"context_line":"            dest\u003d\u0027actions\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a1ff146_9445b7b4","line":328,"range":{"start_line":328,"start_character":20,"end_line":328,"end_character":40},"updated":"2017-03-16 11:26:12.000000000","message":"ditto","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"40721163e6a5c5fefca2cae63218feeb3dc35111","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            dest\u003d\u0027actions\u0027,"},{"line_number":326,"context_line":"            action\u003d\u0027append_const\u0027,"},{"line_number":327,"context_line":"            const\u003dself.unset_quota_compute,"},{"line_number":328,"context_line":"            help\u003d_(\u0027Unset compute quotas\u0027))"},{"line_number":329,"context_line":"        parser.add_argument("},{"line_number":330,"context_line":"            \u0027--volume\u0027,"},{"line_number":331,"context_line":"            dest\u003d\u0027actions\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a1ced50_496853bb","line":328,"range":{"start_line":328,"start_character":20,"end_line":328,"end_character":40},"in_reply_to":"3a1ff146_9445b7b4","updated":"2017-03-17 03:24:19.000000000","message":"Done","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"f574d5b28fbf48c83ee8c526aa803e4e4510d5a5","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            dest\u003d\u0027actions\u0027,"},{"line_number":332,"context_line":"            action\u003d\u0027append_const\u0027,"},{"line_number":333,"context_line":"            const\u003dself.unset_quota_volume,"},{"line_number":334,"context_line":"            help\u003d_(\u0027Unset volume quotas\u0027))"},{"line_number":335,"context_line":"        return parser"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def unset_quota_network(self, project):"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a1ff146_d4156f9b","line":334,"range":{"start_line":334,"start_character":20,"end_line":334,"end_character":40},"updated":"2017-03-16 11:26:12.000000000","message":"ditto","commit_id":"8aefc7e7da4f7e8a194fddde02095d388318ce55"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"2962a81da196685cf1e6a8690ce6958c3c222372","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        parser.add_argument("},{"line_number":312,"context_line":"            \u0027project\u0027,"},{"line_number":313,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":314,"context_line":"            nargs\u003d\u0027?\u0027,"},{"line_number":315,"context_line":"            help\u003d_(\u0027Reset quotas for this project (name or ID)\u0027),"},{"line_number":316,"context_line":"        )"},{"line_number":317,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":20,"id":"1a1ced50_dea7924d","line":314,"range":{"start_line":314,"start_character":12,"end_line":314,"end_character":22},"updated":"2017-03-17 07:56:57.000000000","message":"This told me it is optional, maybe you need to remove it to address Dean\u0027s previous comment","commit_id":"6f6cf096bcba2cbb1411dba4eddd5d649b651e7f"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"a2a0ec589c42875acb1c66efc7dc3be23c4dde48","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        parser.add_argument("},{"line_number":312,"context_line":"            \u0027project\u0027,"},{"line_number":313,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":314,"context_line":"            nargs\u003d\u0027?\u0027,"},{"line_number":315,"context_line":"            help\u003d_(\u0027Reset quotas for this project (name or ID)\u0027),"},{"line_number":316,"context_line":"        )"},{"line_number":317,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":20,"id":"1a1ced50_8121e8a1","line":314,"in_reply_to":"1a1ced50_dea7924d","updated":"2017-03-20 20:03:28.000000000","message":"nargs\u003d\u0027?\u0027 should rarely be used, remove it altogether","commit_id":"6f6cf096bcba2cbb1411dba4eddd5d649b651e7f"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"3f2b6166b7b27988c82163d210403a7e623d94b8","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"class UnsetQuota(command.Command):"},{"line_number":479,"context_line":"    _description \u003d _(\"Unset to default defined quotas of a given project\")"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def get_parser(self, prog_name):"},{"line_number":482,"context_line":"        parser \u003d super(UnsetQuota, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":23,"id":"dfeb2761_93faa7ba","line":479,"updated":"2017-04-04 16:03:30.000000000","message":"How about: Set quotas to defaults for a project\n\nAlso, the docs should match","commit_id":"117922911f30fea933158a430650e017f6c22f65"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"068b2341233f445f8c87f96d3d3dedc9dca6b65a","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"class UnsetQuota(command.Command):"},{"line_number":479,"context_line":"    _description \u003d _(\"Unset to default defined quotas of a given project\")"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def get_parser(self, prog_name):"},{"line_number":482,"context_line":"        parser \u003d super(UnsetQuota, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":23,"id":"dfeb2761_d356d82a","line":479,"in_reply_to":"dfeb2761_93faa7ba","updated":"2017-04-05 07:24:02.000000000","message":"Done","commit_id":"117922911f30fea933158a430650e017f6c22f65"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a651ff10d0e27d41890d616c54b875f287b335fe","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        return ((), ())"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"def _get_project(client_manager, parsed_args):"},{"line_number":256,"context_line":"    if parsed_args.project is not None:"},{"line_number":257,"context_line":"        identity_client \u003d client_manager.identity"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff0f0b1f_7bd6e9c5","line":254,"updated":"2017-05-22 01:54:09.000000000","message":"Why not mixin class? If so, the logic change would be smaller.","commit_id":"622d6217a510124b6d357f1d0105e2f714a34222"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a651ff10d0e27d41890d616c54b875f287b335fe","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"class UnsetQuota(command.Command):"},{"line_number":479,"context_line":"    _description \u003d _(\"Set to default defined quotas of a given project\")"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def get_parser(self, prog_name):"},{"line_number":482,"context_line":"        parser \u003d super(UnsetQuota, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff0f0b1f_3be07196","line":479,"range":{"start_line":479,"start_character":22,"end_line":479,"end_character":70},"updated":"2017-05-22 01:54:09.000000000","message":"It is not easy to understand.\nHow about the following?\n\n  Reset the quotas of a given project to the default","commit_id":"622d6217a510124b6d357f1d0105e2f714a34222"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"80fc0adc97314e6002a28694a9b60d78a1850aa9","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if parsed_args.compute:"},{"line_number":133,"context_line":"            compute_client \u003d self.app.client_manager.compute"},{"line_number":134,"context_line":"            for p in project_ids:"},{"line_number":135,"context_line":"                try:"},{"line_number":136,"context_line":"                    data \u003d compute_client.quotas.get(p)"},{"line_number":137,"context_line":"                except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_b3ac37ed","side":"PARENT","line":134,"updated":"2017-08-29 22:57:14.000000000","message":"This change looks unrelated to quota unset command.\nCould you do this in a separate patch if needed?","commit_id":"50099d3c725cb26c20dec91442d5b60460de544a"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"464997f4568c8ec49f129e8b46d8bd1e2eef1332","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if parsed_args.compute:"},{"line_number":133,"context_line":"            compute_client \u003d self.app.client_manager.compute"},{"line_number":134,"context_line":"            for p in project_ids:"},{"line_number":135,"context_line":"                try:"},{"line_number":136,"context_line":"                    data \u003d compute_client.quotas.get(p)"},{"line_number":137,"context_line":"                except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_fc5d6e15","side":"PARENT","line":134,"in_reply_to":"7f287b81_b3ac37ed","updated":"2017-09-05 06:09:15.000000000","message":"Done","commit_id":"50099d3c725cb26c20dec91442d5b60460de544a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"80fc0adc97314e6002a28694a9b60d78a1850aa9","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        return ((), ())"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"def _get_project(client_manager, parsed_args):"},{"line_number":256,"context_line":"    if parsed_args.project is not None:"},{"line_number":257,"context_line":"        identity_client \u003d client_manager.identity"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_53799391","line":254,"updated":"2017-08-29 22:57:14.000000000","message":"This is used only in UnsetQuota. Why do you place it here? Why not a method of UnsetQuota class?","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"464997f4568c8ec49f129e8b46d8bd1e2eef1332","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        return ((), ())"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"def _get_project(client_manager, parsed_args):"},{"line_number":256,"context_line":"    if parsed_args.project is not None:"},{"line_number":257,"context_line":"        identity_client \u003d client_manager.identity"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_dc9ab2c3","line":254,"in_reply_to":"7f287b81_53799391","updated":"2017-09-05 06:09:15.000000000","message":"Done","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"80fc0adc97314e6002a28694a9b60d78a1850aa9","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":517,"context_line":"            nargs\u003d\u0027?\u0027,"},{"line_number":518,"context_line":"            help\u003d_(\u0027Reset quotas for this project (name or ID)\u0027),"},{"line_number":519,"context_line":"        )"},{"line_number":520,"context_line":"        parser.add_argument("},{"line_number":521,"context_line":"            \u0027--network\u0027,"},{"line_number":522,"context_line":"            dest\u003d\u0027actions\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_e02783c9","line":519,"updated":"2017-08-29 22:57:14.000000000","message":"Could you sort options alphabetically?\n--compute, --network. --volume","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"464997f4568c8ec49f129e8b46d8bd1e2eef1332","unresolved":false,"context_lines":[{"line_number":516,"context_line":"            metavar\u003d\u0027\u003cproject\u003e\u0027,"},{"line_number":517,"context_line":"            nargs\u003d\u0027?\u0027,"},{"line_number":518,"context_line":"            help\u003d_(\u0027Reset quotas for this project (name or ID)\u0027),"},{"line_number":519,"context_line":"        )"},{"line_number":520,"context_line":"        parser.add_argument("},{"line_number":521,"context_line":"            \u0027--network\u0027,"},{"line_number":522,"context_line":"            dest\u003d\u0027actions\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_bc9da6bc","line":519,"in_reply_to":"7f287b81_e02783c9","updated":"2017-09-05 06:09:15.000000000","message":"Done","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"80fc0adc97314e6002a28694a9b60d78a1850aa9","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        volume_client.quotas.delete(tenant_id\u003dproject)"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def take_action(self, parsed_args):"},{"line_number":554,"context_line":"        print(parsed_args.project)"},{"line_number":555,"context_line":"        project \u003d _get_project(self.app.client_manager, parsed_args)"},{"line_number":556,"context_line":"        if not parsed_args.actions:"},{"line_number":557,"context_line":"            actions \u003d ["}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_f3719fa9","line":554,"range":{"start_line":554,"start_character":7,"end_line":554,"end_character":34},"updated":"2017-08-29 22:57:14.000000000","message":"debug message?","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"464997f4568c8ec49f129e8b46d8bd1e2eef1332","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        volume_client.quotas.delete(tenant_id\u003dproject)"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def take_action(self, parsed_args):"},{"line_number":554,"context_line":"        print(parsed_args.project)"},{"line_number":555,"context_line":"        project \u003d _get_project(self.app.client_manager, parsed_args)"},{"line_number":556,"context_line":"        if not parsed_args.actions:"},{"line_number":557,"context_line":"            actions \u003d ["}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_9ca42a0a","line":554,"range":{"start_line":554,"start_character":7,"end_line":554,"end_character":34},"in_reply_to":"7f287b81_f3719fa9","updated":"2017-09-05 06:09:15.000000000","message":"Done","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4d5207b8589a08ead3522f800788ea784bc6d32e","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default_data \u003d volume_client.quotas.defaults(p)"},{"line_number":201,"context_line":"                result_default \u003d _xform_get_quota(default_data,"},{"line_number":202,"context_line":"                                                  p,"},{"line_number":203,"context_line":"                                                  VOLUME_QUOTAS.keys())"},{"line_number":204,"context_line":"                if result_default !\u003d result_data:"},{"line_number":205,"context_line":"                    result +\u003d result_data"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7f287b81_37cb0ca6","line":203,"updated":"2017-09-05 09:17:09.000000000","message":"This is part of \u0027quota list\u0027 command. How is it related to the unset command?","commit_id":"43bb81b526099d520976f442d3e43d3866eb0ea6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"57e6b82215b89772ca8b961ee5c10e02e79a46cd","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default_data \u003d volume_client.quotas.defaults(p)"},{"line_number":201,"context_line":"                result_default \u003d _xform_get_quota(default_data,"},{"line_number":202,"context_line":"                                                  p,"},{"line_number":203,"context_line":"                                                  VOLUME_QUOTAS.keys())"},{"line_number":204,"context_line":"                if result_default !\u003d result_data:"},{"line_number":205,"context_line":"                    result +\u003d result_data"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"df33271e_9bf4b05d","line":203,"in_reply_to":"7f287b81_37cb0ca6","updated":"2020-03-23 14:33:09.000000000","message":"I suspect this was a bad merge conflict after [1]. Ditto for the rest of these\n\n[1] I71e6bbb5d46fcea4718a5a870f9a66a2c20fff0f","commit_id":"43bb81b526099d520976f442d3e43d3866eb0ea6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4d5207b8589a08ead3522f800788ea784bc6d32e","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                result_data \u003d _xform_get_quota(data, p, NETWORK_KEYS)"},{"line_number":234,"context_line":"                default_data \u003d client.get_quota_default(p)"},{"line_number":235,"context_line":"                result_default \u003d _xform_get_quota(default_data,"},{"line_number":236,"context_line":"                                                  p, NETWORK_KEYS)"},{"line_number":237,"context_line":"                if result_default !\u003d result_data:"},{"line_number":238,"context_line":"                    result +\u003d result_data"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7f287b81_b7bedcfc","line":236,"updated":"2017-09-05 09:17:09.000000000","message":"Same as the above","commit_id":"43bb81b526099d520976f442d3e43d3866eb0ea6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4d5207b8589a08ead3522f800788ea784bc6d32e","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":317,"context_line":"        compute_client \u003d self.app.client_manager.compute"},{"line_number":318,"context_line":"        volume_client \u003d self.app.client_manager.volume"},{"line_number":319,"context_line":"        network_client \u003d self.app.client_manager.network"},{"line_number":320,"context_line":"        compute_kwargs \u003d {}"},{"line_number":321,"context_line":"        for k, v in COMPUTE_QUOTAS.items():"},{"line_number":322,"context_line":"            value \u003d getattr(parsed_args, k, None)"}],"source_content_type":"text/x-python","patch_set":33,"id":"7f287b81_77d19457","line":319,"updated":"2017-09-05 09:17:09.000000000","message":"Same as the below.","commit_id":"43bb81b526099d520976f442d3e43d3866eb0ea6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4d5207b8589a08ead3522f800788ea784bc6d32e","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                volume_client.quotas.update("},{"line_number":370,"context_line":"                    project,"},{"line_number":371,"context_line":"                    **volume_kwargs)"},{"line_number":372,"context_line":"            if network_kwargs:"},{"line_number":373,"context_line":"                network_client.update_quota("},{"line_number":374,"context_line":"                    project,"},{"line_number":375,"context_line":"                    **network_kwargs)"}],"source_content_type":"text/x-python","patch_set":33,"id":"7f287b81_b7e5bc3a","line":372,"updated":"2017-09-05 09:17:09.000000000","message":"This is part of \u0027quota set\u0027 command. How is it related to the unset command?","commit_id":"43bb81b526099d520976f442d3e43d3866eb0ea6"}],"openstackclient/tests/functional/common/test_quota.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"80fc0adc97314e6002a28694a9b60d78a1850aa9","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        self.openstack(\u0027quota set --instances 11 --volumes 11 --class \u0027 +"},{"line_number":141,"context_line":"                       class_name)"},{"line_number":142,"context_line":"        opts \u003d self.get_opts(class_expected_fields)"},{"line_number":143,"context_line":"        raw_output \u003d self.openstack(\u0027quota show --class \u0027 + class_name + opts)"},{"line_number":144,"context_line":"        self.assertEqual(\"11\\n11\\n\", raw_output)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_quota_class_unset(self):"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_338a8769","line":143,"range":{"start_line":143,"start_character":8,"end_line":143,"end_character":78},"updated":"2017-08-29 22:57:14.000000000","message":"Follow JSON-ized way in the functional tests.","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"464997f4568c8ec49f129e8b46d8bd1e2eef1332","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        self.openstack(\u0027quota set --instances 11 --volumes 11 --class \u0027 +"},{"line_number":141,"context_line":"                       class_name)"},{"line_number":142,"context_line":"        opts \u003d self.get_opts(class_expected_fields)"},{"line_number":143,"context_line":"        raw_output \u003d self.openstack(\u0027quota show --class \u0027 + class_name + opts)"},{"line_number":144,"context_line":"        self.assertEqual(\"11\\n11\\n\", raw_output)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_quota_class_unset(self):"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_1c639ade","line":143,"range":{"start_line":143,"start_character":8,"end_line":143,"end_character":78},"in_reply_to":"7f287b81_338a8769","updated":"2017-09-05 06:09:15.000000000","message":"Done","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"80fc0adc97314e6002a28694a9b60d78a1850aa9","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        self.openstack(\u0027quota unset --network \u0027 + self.PROJECT_NAME)"},{"line_number":152,"context_line":"        raw_output \u003d self.openstack("},{"line_number":153,"context_line":"            \u0027quota show -f value -c networks \u0027 + self.PROJECT_NAME)"},{"line_number":154,"context_line":"        self.assertEqual(\"100\\n\", raw_output)"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_93901b97","line":154,"updated":"2017-08-29 22:57:14.000000000","message":"No test for compute and volume?","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"9f18b46c479fc2bf8b7e944a4571321395cca773","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        self.openstack(\u0027quota unset --network \u0027 + self.PROJECT_NAME)"},{"line_number":152,"context_line":"        raw_output \u003d self.openstack("},{"line_number":153,"context_line":"            \u0027quota show -f value -c networks \u0027 + self.PROJECT_NAME)"},{"line_number":154,"context_line":"        self.assertEqual(\"100\\n\", raw_output)"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_b71b7c71","line":154,"in_reply_to":"7f287b81_7c24deaf","updated":"2017-09-05 09:11:24.000000000","message":"DO you implement --compute and --volume options, don\u0027t you? I am confused that there are options but no corresponding func tests....","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"464997f4568c8ec49f129e8b46d8bd1e2eef1332","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        self.openstack(\u0027quota unset --network \u0027 + self.PROJECT_NAME)"},{"line_number":152,"context_line":"        raw_output \u003d self.openstack("},{"line_number":153,"context_line":"            \u0027quota show -f value -c networks \u0027 + self.PROJECT_NAME)"},{"line_number":154,"context_line":"        self.assertEqual(\"100\\n\", raw_output)"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_7c24deaf","line":154,"in_reply_to":"7f287b81_93901b97","updated":"2017-09-05 06:09:15.000000000","message":"only Network can work, isnt it ? When we are just checking the unset functionality","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"}],"openstackclient/tests/unit/common/test_quota.py":[{"author":{"_account_id":14615,"name":"Sergey Belous","email":"belous.py@gmail.com","username":"sbelous"},"change_message_id":"7154c019d57816da90b4518bd9edad28face90f1","unresolved":false,"context_lines":[{"line_number":567,"context_line":"        self.quotas_mock.delete.assert_called_once_with("},{"line_number":568,"context_line":"            tenant_id\u003didentity_fakes.project_id)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def test_quota_delete_colume(self):"},{"line_number":571,"context_line":"        self._run_delete_command(project_name\u003didentity_fakes.project_name)"},{"line_number":572,"context_line":"        self.volume_quotas_mock.delete.assert_called_once_with("},{"line_number":573,"context_line":"            tenant_id\u003didentity_fakes.project_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a98d1f4_a75b41f5","line":570,"range":{"start_line":570,"start_character":26,"end_line":570,"end_character":32},"updated":"2016-09-30 13:24:45.000000000","message":"colume → volume","commit_id":"4e487bc208f691d77c6c00c08f882def89a5125c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"80fc0adc97314e6002a28694a9b60d78a1850aa9","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#   under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import copy"},{"line_number":14,"context_line":"import mock"},{"line_number":15,"context_line":"import testscenarios"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from osc_lib import exceptions"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_d3dfc366","line":15,"range":{"start_line":14,"start_character":0,"end_line":15,"end_character":20},"updated":"2017-08-29 22:57:14.000000000","message":"These are third-party imports. They should be placed in a same group as for L.17-18.","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"464997f4568c8ec49f129e8b46d8bd1e2eef1332","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#   under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import copy"},{"line_number":14,"context_line":"import mock"},{"line_number":15,"context_line":"import testscenarios"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from osc_lib import exceptions"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_3c6416e5","line":15,"range":{"start_line":14,"start_character":0,"end_line":15,"end_character":20},"in_reply_to":"7f287b81_d3dfc366","updated":"2017-09-05 06:09:15.000000000","message":"Done","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"80fc0adc97314e6002a28694a9b60d78a1850aa9","unresolved":false,"context_lines":[{"line_number":969,"context_line":""},{"line_number":970,"context_line":"class TestSpecificQuotaUnset(TestQuota):"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"    scenarios \u003d testscenarios.multiply_scenarios("},{"line_number":973,"context_line":"        [(\u0027--network\u0027, dict(network\u003dTrue)), (\u0027\u0027, dict(network\u003dFalse))],"},{"line_number":974,"context_line":"        [(\u0027--compute\u0027, dict(compute\u003dTrue)), (\u0027\u0027, dict(compute\u003dFalse))],"},{"line_number":975,"context_line":"        [(\u0027--volume\u0027, dict(volume\u003dTrue)), (\u0027\u0027, dict(volume\u003dFalse))],"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_f3107f02","line":972,"range":{"start_line":972,"start_character":4,"end_line":972,"end_character":13},"updated":"2017-08-29 22:57:14.000000000","message":"Looks like testscnenarios is too much....","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"9f18b46c479fc2bf8b7e944a4571321395cca773","unresolved":false,"context_lines":[{"line_number":969,"context_line":""},{"line_number":970,"context_line":"class TestSpecificQuotaUnset(TestQuota):"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"    scenarios \u003d testscenarios.multiply_scenarios("},{"line_number":973,"context_line":"        [(\u0027--network\u0027, dict(network\u003dTrue)), (\u0027\u0027, dict(network\u003dFalse))],"},{"line_number":974,"context_line":"        [(\u0027--compute\u0027, dict(compute\u003dTrue)), (\u0027\u0027, dict(compute\u003dFalse))],"},{"line_number":975,"context_line":"        [(\u0027--volume\u0027, dict(volume\u003dTrue)), (\u0027\u0027, dict(volume\u003dFalse))],"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_d763a8dc","line":972,"range":{"start_line":972,"start_character":4,"end_line":972,"end_character":13},"in_reply_to":"7f287b81_7c729eaf","updated":"2017-09-05 09:11:24.000000000","message":"What I mean is we don\u0027t need to use testscenarios and you can implement tests in a normal way (as the tests would be simple enough).","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"464997f4568c8ec49f129e8b46d8bd1e2eef1332","unresolved":false,"context_lines":[{"line_number":969,"context_line":""},{"line_number":970,"context_line":"class TestSpecificQuotaUnset(TestQuota):"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"    scenarios \u003d testscenarios.multiply_scenarios("},{"line_number":973,"context_line":"        [(\u0027--network\u0027, dict(network\u003dTrue)), (\u0027\u0027, dict(network\u003dFalse))],"},{"line_number":974,"context_line":"        [(\u0027--compute\u0027, dict(compute\u003dTrue)), (\u0027\u0027, dict(compute\u003dFalse))],"},{"line_number":975,"context_line":"        [(\u0027--volume\u0027, dict(volume\u003dTrue)), (\u0027\u0027, dict(volume\u003dFalse))],"}],"source_content_type":"text/x-python","patch_set":32,"id":"7f287b81_7c729eaf","line":972,"range":{"start_line":972,"start_character":4,"end_line":972,"end_character":13},"in_reply_to":"7f287b81_f3107f02","updated":"2017-09-05 06:09:15.000000000","message":"Can you suggest what you want here ?\nI mean , wont this work?","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"}],"setup.cfg":[{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"48b0ee19aaf95de7f59a0a465b28d00c6fe0af90","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    limits_show \u003d openstackclient.common.limits:ShowLimits"},{"line_number":50,"context_line":"    quota_set \u003d openstackclient.common.quota:SetQuota"},{"line_number":51,"context_line":"    quota_show \u003d openstackclient.common.quota:ShowQuota"},{"line_number":52,"context_line":"    quota_reset \u003d openstackclient.common.quota:ResetQuota"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"openstack.compute.v2 \u003d"},{"line_number":55,"context_line":"    compute_agent_create \u003d openstackclient.compute.v2.agent:CreateAgent"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"da4df55a_a0a9917d","line":52,"updated":"2016-12-23 14:11:55.000000000","message":"Should list these command in alphabetical order","commit_id":"8e9fcf56d915a1ad25c991709c4f344fcded5f6b"}],"test-requirements.txt":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"80fc0adc97314e6002a28694a9b60d78a1850aa9","unresolved":false,"context_lines":[{"line_number":20,"context_line":"testtools\u003e\u003d1.4.0 # MIT"},{"line_number":21,"context_line":"tempest\u003e\u003d16.1.0 # Apache-2.0"},{"line_number":22,"context_line":"testscenarios\u003e\u003d0.4 # Apache-2.0/BSD"},{"line_number":23,"context_line":"tempest\u003e\u003d14.0.0 # Apache-2.0"},{"line_number":24,"context_line":"osprofiler\u003e\u003d1.4.0 # Apache-2.0"},{"line_number":25,"context_line":"bandit\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":26,"context_line":"wrapt\u003e\u003d1.7.0 # BSD License"}],"source_content_type":"text/plain","patch_set":32,"id":"7f287b81_13454b70","line":23,"updated":"2017-08-29 22:57:14.000000000","message":"why tempest?","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"464997f4568c8ec49f129e8b46d8bd1e2eef1332","unresolved":false,"context_lines":[{"line_number":20,"context_line":"testtools\u003e\u003d1.4.0 # MIT"},{"line_number":21,"context_line":"tempest\u003e\u003d16.1.0 # Apache-2.0"},{"line_number":22,"context_line":"testscenarios\u003e\u003d0.4 # Apache-2.0/BSD"},{"line_number":23,"context_line":"tempest\u003e\u003d14.0.0 # Apache-2.0"},{"line_number":24,"context_line":"osprofiler\u003e\u003d1.4.0 # Apache-2.0"},{"line_number":25,"context_line":"bandit\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":26,"context_line":"wrapt\u003e\u003d1.7.0 # BSD License"}],"source_content_type":"text/plain","patch_set":32,"id":"7f287b81_5c6922bc","line":23,"in_reply_to":"7f287b81_13454b70","updated":"2017-09-05 06:09:15.000000000","message":"Done","commit_id":"cf416f1f10f7a522594220b31e3644fbc400f73e"}]}
