)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"9aadd457ce7c610b67086c64c5b46f5a7962d4e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"68a61a9e_7b0929e9","updated":"2021-12-15 20:59:19.000000000","message":"recheck\n\n\nFelipe, pinging back on this; the changes required seem minor; do you want to roll them in and push another patch?","commit_id":"0704f9c803f19309289534a32ce182803fab3f4f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b4da199bbf66224f2e8366ea54a993ec9697b67d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"80b38063_eb51a7ed","updated":"2022-01-11 19:23:52.000000000","message":"Great! Thanks Felipe!","commit_id":"624ae05f7178461b07dae21c3adf7a20e131a4b2"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"6ee26a062a47112dda47e90c8d4e1f6f9cb726e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1266476e_0ff0cde8","updated":"2022-01-17 12:48:51.000000000","message":"Tested in my env and is working as expected, thanks Felipe!","commit_id":"624ae05f7178461b07dae21c3adf7a20e131a4b2"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"84e24596f9f8fd02aae564f9821a9707ab466b65","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"219f4a85_8fde9364","updated":"2022-01-13 20:05:59.000000000","message":"Thanks Felipe! I left a few comments inline. I haven\u0027t run the code, I\u0027m intending to do so in the next pass, but I think there are a few use cases missing\n\nI\u0027m taking that we are using the \"openstack share quota\" command for both the quota set and quota class sets APIs, is that correct?\n\nIf that is the case, we should add a few more checks.\n\nFor quota class sets, we need to pass a quota class set (a name), and it\u0027s optional to pass a project and a user\n\nFor quota sets, we need to pass the project (in that way, getting the quota for that project), and you can either pass a user (therefore setting the quota for that user in that specific project) or a share type (therefore setting the quota for a specific share type in that project).\n\nAm I understanding this right?\n\nMaybe we would need to create two different commands for quota set and quota class sets","commit_id":"624ae05f7178461b07dae21c3adf7a20e131a4b2"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"5daf0d7e9ee7305727faa3efce5751785bb6ec76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9c17efa0_05754697","updated":"2022-01-11 13:26:59.000000000","message":"thks goutham for the catch!","commit_id":"624ae05f7178461b07dae21c3adf7a20e131a4b2"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d5d361c677ebe8b5e364a425865e60e43be25f61","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"76bf7bbf_4a2b367e","in_reply_to":"219f4a85_8fde9364","updated":"2022-01-14 01:12:45.000000000","message":"Having two commands would be inconsistent with the implementation in OSC that we want to eventually chase:\n\n $ openstack help quota set\nusage: openstack quota set [-h] [--class] [--cores \u003ccores\u003e] [--fixed-ips \u003cfixed-ips\u003e]\n                           [--injected-file-size \u003cinjected-file-size\u003e] [--injected-path-size \u003cinjected-path-size\u003e]\n                           [--injected-files \u003cinjected-files\u003e] [--instances \u003cinstances\u003e] [--key-pairs \u003ckey-pairs\u003e]\n                           [--properties \u003cproperties\u003e] [--ram \u003cram\u003e] [--server-groups \u003cserver-groups\u003e]\n                           [--server-group-members \u003cserver-group-members\u003e] [--backups \u003cbackups\u003e]\n                           [--backup-gigabytes \u003cbackup-gigabytes\u003e] [--gigabytes \u003cgigabytes\u003e]\n                           [--per-volume-gigabytes \u003cper-volume-gigabytes\u003e] [--snapshots \u003csnapshots\u003e] [--volumes \u003cvolumes\u003e]\n                           [--floating-ips \u003cfloating-ips\u003e] [--secgroup-rules \u003csecgroup-rules\u003e] [--secgroups \u003csecgroups\u003e]\n                           [--networks \u003cnetworks\u003e] [--subnets \u003csubnets\u003e] [--ports \u003cports\u003e] [--routers \u003crouters\u003e]\n                           [--rbac-policies \u003crbac-policies\u003e] [--subnetpools \u003csubnetpools\u003e] [--volume-type \u003cvolume-type\u003e]\n                           [--force]\n                           \u003cproject/class\u003e\n\nSet quotas for project or class\n\npositional arguments:\n  \u003cproject/class\u003e\n                        Set quotas for this project or class (name/ID)\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --class               Set quotas for \u003cclass\u003e\n  --cores \u003ccores\u003e\n                        New value for the cores quota\n  --fixed-ips \u003cfixed-ips\u003e\n                        New value for the fixed-ips quota\n  --injected-file-size \u003cinjected-file-size\u003e\n                        New value for the injected-file-size quota\n  \u003csnip\u003e\u003c/snap\u003e\n  --volume-type \u003cvolume-type\u003e\n                        Set quotas for a specific \u003cvolume-type\u003e\n  --force               Force quota update (only supported by compute)","commit_id":"624ae05f7178461b07dae21c3adf7a20e131a4b2"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"1ac182a9657664f8dc3e8fe63f499cdfc09c03d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e9bf586c_31a9b38d","in_reply_to":"76bf7bbf_4a2b367e","updated":"2022-01-17 12:27:35.000000000","message":"Got it, thanks for clarifying","commit_id":"624ae05f7178461b07dae21c3adf7a20e131a4b2"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"6e832bc28a9d1b3719473d7675cddaf5c2a8898b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f251fbb2_066bc702","updated":"2022-01-17 15:15:15.000000000","message":"Let\u0027s get this one in!","commit_id":"f9aee522ef2452f0e9d17e620b701bfc7aee6dae"}],"manilaclient/osc/v2/quotas.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f0cdc05990e8bc2692d99b6efa19410c8437caec","unresolved":true,"context_lines":[{"line_number":33,"context_line":"class QuotaSet(command.Command):"},{"line_number":34,"context_line":"    \"\"\"Set quotas for a project or project/user or project/share-type."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    It can be used to set te default class for all projects."},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    _description \u003d _(\"Set Quota\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"c55add7f_3d727265","line":36,"range":{"start_line":36,"start_character":26,"end_line":36,"end_character":28},"updated":"2021-08-23 23:50:32.000000000","message":"the","commit_id":"3555a1bb99ab02d94e0ac73b2f459101bf8b4701"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"d6b3aa70c92924fdf40cdb0029fa7f66e5f06cd7","unresolved":true,"context_lines":[{"line_number":33,"context_line":"class QuotaSet(command.Command):"},{"line_number":34,"context_line":"    \"\"\"Set quotas for a project or project/user or project/share-type."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    It can be used to set te default class for all projects."},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    _description \u003d _(\"Set Quota\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"1115c48b_e8d21625","line":36,"range":{"start_line":36,"start_character":26,"end_line":36,"end_character":28},"in_reply_to":"c55add7f_3d727265","updated":"2021-09-03 04:08:59.000000000","message":"done","commit_id":"3555a1bb99ab02d94e0ac73b2f459101bf8b4701"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"29ddfcd8f306a737e7156fad1552d938254b32d9","unresolved":true,"context_lines":[{"line_number":169,"context_line":"                identity_client.users,"},{"line_number":170,"context_line":"                parsed_args.user).id"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        _check_mutually_exclusive("},{"line_number":173,"context_line":"            user_id, parsed_args.share_type, \u0027user\u0027, \u0027share-type\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        set_default \u003d parsed_args.default_class"},{"line_number":176,"context_line":"        _check_mutually_exclusive("},{"line_number":177,"context_line":"            set_default, parsed_args.project, \u0027default-class\u0027, \u0027project\u0027)"},{"line_number":178,"context_line":"        _check_mutually_exclusive("},{"line_number":179,"context_line":"            set_default, user_id, \u0027default-class\u0027, \u0027user\u0027)"},{"line_number":180,"context_line":"        _check_mutually_exclusive("},{"line_number":181,"context_line":"            set_default, parsed_args.share_type, \u0027default-class\u0027, \u0027share-type\u0027)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        kwargs \u003d {"},{"line_number":184,"context_line":"            \"shares\": parsed_args.shares,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2fe12b3b_cc24d5ec","line":181,"range":{"start_line":172,"start_character":8,"end_line":181,"end_character":79},"updated":"2021-08-23 23:53:51.000000000","message":"If you make project/class a positional option parameter, \n\nyou can use argparse\u0027s Mutual Exclusion logic https://docs.python.org/3/library/argparse.html#mutual-exclusion and delete the custom code we have. We can throw \"user\", \"share_type\" and \"class\" into a mutually exclusive group so no two of those options can be specified together","commit_id":"3555a1bb99ab02d94e0ac73b2f459101bf8b4701"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"d6b3aa70c92924fdf40cdb0029fa7f66e5f06cd7","unresolved":true,"context_lines":[{"line_number":169,"context_line":"                identity_client.users,"},{"line_number":170,"context_line":"                parsed_args.user).id"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        _check_mutually_exclusive("},{"line_number":173,"context_line":"            user_id, parsed_args.share_type, \u0027user\u0027, \u0027share-type\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        set_default \u003d parsed_args.default_class"},{"line_number":176,"context_line":"        _check_mutually_exclusive("},{"line_number":177,"context_line":"            set_default, parsed_args.project, \u0027default-class\u0027, \u0027project\u0027)"},{"line_number":178,"context_line":"        _check_mutually_exclusive("},{"line_number":179,"context_line":"            set_default, user_id, \u0027default-class\u0027, \u0027user\u0027)"},{"line_number":180,"context_line":"        _check_mutually_exclusive("},{"line_number":181,"context_line":"            set_default, parsed_args.share_type, \u0027default-class\u0027, \u0027share-type\u0027)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        kwargs \u003d {"},{"line_number":184,"context_line":"            \"shares\": parsed_args.shares,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a8f8829_06bc5591","line":181,"range":{"start_line":172,"start_character":8,"end_line":181,"end_character":79},"in_reply_to":"2fe12b3b_cc24d5ec","updated":"2021-09-03 04:08:59.000000000","message":"you\u0027re right. I was just following what the code has already been doing. I\u0027ll fix it.","commit_id":"3555a1bb99ab02d94e0ac73b2f459101bf8b4701"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"162450bff7369342865ca83a2cbd331789c77e47","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    It can be used to set the default class for all projects."},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _description \u003d _(\"Set Quota\")"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    log \u003d logging.getLogger(__name__ + \".QuotaSet\")"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"de63a414_0c5c32bb","line":31,"range":{"start_line":31,"start_character":31,"end_line":31,"end_character":32},"updated":"2021-09-03 06:32:39.000000000","message":"nit: makes sense to add the extended description here.. \n\n Set Quota for a project, or project/user or project/share-type or a class","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"aea653ad6c22a15d1a0eea4fda728a06b4cb61e2","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    It can be used to set the default class for all projects."},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _description \u003d _(\"Set Quota\")"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    log \u003d logging.getLogger(__name__ + \".QuotaSet\")"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f923f66_50127f83","line":31,"range":{"start_line":31,"start_character":31,"end_line":31,"end_character":32},"in_reply_to":"de63a414_0c5c32bb","updated":"2021-09-03 15:40:31.000000000","message":"done","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"162450bff7369342865ca83a2cbd331789c77e47","unresolved":true,"context_lines":[{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027project\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003cproject/class\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d_(\"Set quotas for this project or class (name/ID).\")"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        quota_type.add_argument("},{"line_number":44,"context_line":"            \u0027--class\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"8551212a_bd090e08","line":41,"range":{"start_line":41,"start_character":20,"end_line":41,"end_character":66},"updated":"2021-09-03 06:32:39.000000000","message":"A class (e.g.: default) or a project (name/ID)","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"aea653ad6c22a15d1a0eea4fda728a06b4cb61e2","unresolved":true,"context_lines":[{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027project\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003cproject/class\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d_(\"Set quotas for this project or class (name/ID).\")"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        quota_type.add_argument("},{"line_number":44,"context_line":"            \u0027--class\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"79513305_7d46dffa","line":41,"range":{"start_line":41,"start_character":20,"end_line":41,"end_character":66},"in_reply_to":"8551212a_bd090e08","updated":"2021-09-03 15:40:31.000000000","message":"done","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"162450bff7369342865ca83a2cbd331789c77e47","unresolved":true,"context_lines":[{"line_number":146,"context_line":"            action\u003d\"store_true\","},{"line_number":147,"context_line":"            default\u003dNone,"},{"line_number":148,"context_line":"            help\u003d_(\u0027Force update the quota. \u0027"},{"line_number":149,"context_line":"                   \u0027Not applied for class update.\u0027)"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":"        return parser"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ac41f565_2fb667f2","line":149,"range":{"start_line":149,"start_character":24,"end_line":149,"end_character":31},"updated":"2021-09-03 06:32:39.000000000","message":"applicable","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"aea653ad6c22a15d1a0eea4fda728a06b4cb61e2","unresolved":true,"context_lines":[{"line_number":146,"context_line":"            action\u003d\"store_true\","},{"line_number":147,"context_line":"            default\u003dNone,"},{"line_number":148,"context_line":"            help\u003d_(\u0027Force update the quota. \u0027"},{"line_number":149,"context_line":"                   \u0027Not applied for class update.\u0027)"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":"        return parser"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8d81ecee_5750f471","line":149,"range":{"start_line":149,"start_character":24,"end_line":149,"end_character":31},"in_reply_to":"ac41f565_2fb667f2","updated":"2021-09-03 15:40:31.000000000","message":"done","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"162450bff7369342865ca83a2cbd331789c77e47","unresolved":true,"context_lines":[{"line_number":175,"context_line":"                    \"\u0027share type\u0027 quotas are available only starting with \""},{"line_number":176,"context_line":"                    \"\u00272.39\u0027 API microversion.\"))"},{"line_number":177,"context_line":"            kwargs[\"share_type\"] \u003d parsed_args.share_type"},{"line_number":178,"context_line":"        if (not parsed_args.quota_class and"},{"line_number":179,"context_line":"                parsed_args.share_groups is not None):"},{"line_number":180,"context_line":"            if share_client.api_version \u003c api_versions.APIVersion(\u00272.40\u0027):"},{"line_number":181,"context_line":"                raise exceptions.CommandError(_("},{"line_number":182,"context_line":"                    \"\u0027share group\u0027 quotas are available only starting with \""},{"line_number":183,"context_line":"                    \"\u00272.40\u0027 API microversion.\"))"},{"line_number":184,"context_line":"            kwargs[\"share_groups\"] \u003d parsed_args.share_groups"},{"line_number":185,"context_line":"        if (not parsed_args.quota_class and"},{"line_number":186,"context_line":"                parsed_args.share_group_snapshots is not None):"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9ee533c_32a60159","line":183,"range":{"start_line":178,"start_character":8,"end_line":183,"end_character":48},"updated":"2021-09-03 06:32:39.000000000","message":"I think the test here will do the incorrect thing.. \n\n if parsed_args.share_groups is not None:\n    if share_client.api_version \u003c api_versions.APIVersion(\u00272.40\u0027):\n        raise exceptions.CommandError(_(\n            \"\u0027share group\u0027 quotas are available only starting with \"\n            \"\u00272.40\u0027 API microversion.\"))\n    elif parsed_args.quota_class:\n        raise exceptions.CommandError(_(\n            \"\u0027share group\u0027 quotas cannot be set for classes.\"))\n\n    kwargs[\"share_groups\"] \u003d parsed_args.share_groups","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"aea653ad6c22a15d1a0eea4fda728a06b4cb61e2","unresolved":true,"context_lines":[{"line_number":175,"context_line":"                    \"\u0027share type\u0027 quotas are available only starting with \""},{"line_number":176,"context_line":"                    \"\u00272.39\u0027 API microversion.\"))"},{"line_number":177,"context_line":"            kwargs[\"share_type\"] \u003d parsed_args.share_type"},{"line_number":178,"context_line":"        if (not parsed_args.quota_class and"},{"line_number":179,"context_line":"                parsed_args.share_groups is not None):"},{"line_number":180,"context_line":"            if share_client.api_version \u003c api_versions.APIVersion(\u00272.40\u0027):"},{"line_number":181,"context_line":"                raise exceptions.CommandError(_("},{"line_number":182,"context_line":"                    \"\u0027share group\u0027 quotas are available only starting with \""},{"line_number":183,"context_line":"                    \"\u00272.40\u0027 API microversion.\"))"},{"line_number":184,"context_line":"            kwargs[\"share_groups\"] \u003d parsed_args.share_groups"},{"line_number":185,"context_line":"        if (not parsed_args.quota_class and"},{"line_number":186,"context_line":"                parsed_args.share_group_snapshots is not None):"}],"source_content_type":"text/x-python","patch_set":2,"id":"341a41ab_a9f0d0e9","line":183,"range":{"start_line":178,"start_character":8,"end_line":183,"end_character":48},"in_reply_to":"b9ee533c_32a60159","updated":"2021-09-03 15:40:31.000000000","message":"you\u0027re right. nice catch. done.","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"162450bff7369342865ca83a2cbd331789c77e47","unresolved":true,"context_lines":[{"line_number":182,"context_line":"                    \"\u0027share group\u0027 quotas are available only starting with \""},{"line_number":183,"context_line":"                    \"\u00272.40\u0027 API microversion.\"))"},{"line_number":184,"context_line":"            kwargs[\"share_groups\"] \u003d parsed_args.share_groups"},{"line_number":185,"context_line":"        if (not parsed_args.quota_class and"},{"line_number":186,"context_line":"                parsed_args.share_group_snapshots is not None):"},{"line_number":187,"context_line":"            if share_client.api_version \u003c api_versions.APIVersion(\u00272.40\u0027):"},{"line_number":188,"context_line":"                raise exceptions.CommandError(_("},{"line_number":189,"context_line":"                    \"\u0027share group snapshots\u0027 quotas are available only \""},{"line_number":190,"context_line":"                    \"starting with \u00272.40\u0027 API microversion.\"))"},{"line_number":191,"context_line":"            kwargs[\"share_group_snapshots\"] \u003d parsed_args.share_group_snapshots"},{"line_number":192,"context_line":"        if parsed_args.share_replicas is not None:"},{"line_number":193,"context_line":"            if share_client.api_version \u003c api_versions.APIVersion(\u00272.53\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"f4a8ca22_84cc2b2b","line":190,"range":{"start_line":185,"start_character":8,"end_line":190,"end_character":62},"updated":"2021-09-03 06:32:39.000000000","message":"same","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"aea653ad6c22a15d1a0eea4fda728a06b4cb61e2","unresolved":true,"context_lines":[{"line_number":182,"context_line":"                    \"\u0027share group\u0027 quotas are available only starting with \""},{"line_number":183,"context_line":"                    \"\u00272.40\u0027 API microversion.\"))"},{"line_number":184,"context_line":"            kwargs[\"share_groups\"] \u003d parsed_args.share_groups"},{"line_number":185,"context_line":"        if (not parsed_args.quota_class and"},{"line_number":186,"context_line":"                parsed_args.share_group_snapshots is not None):"},{"line_number":187,"context_line":"            if share_client.api_version \u003c api_versions.APIVersion(\u00272.40\u0027):"},{"line_number":188,"context_line":"                raise exceptions.CommandError(_("},{"line_number":189,"context_line":"                    \"\u0027share group snapshots\u0027 quotas are available only \""},{"line_number":190,"context_line":"                    \"starting with \u00272.40\u0027 API microversion.\"))"},{"line_number":191,"context_line":"            kwargs[\"share_group_snapshots\"] \u003d parsed_args.share_group_snapshots"},{"line_number":192,"context_line":"        if parsed_args.share_replicas is not None:"},{"line_number":193,"context_line":"            if share_client.api_version \u003c api_versions.APIVersion(\u00272.53\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"02e7541b_92072ecb","line":190,"range":{"start_line":185,"start_character":8,"end_line":190,"end_character":62},"in_reply_to":"f4a8ca22_84cc2b2b","updated":"2021-09-03 15:40:31.000000000","message":"done","commit_id":"f90771481dc99f90c864cd96ad26c832b43024de"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"40b5c7c1003b50b18ee9b831756b18ebff5b4e26","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    It can be used to set the default class for all projects."},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _description \u003d _(\" Set Quota for a project, or project/user or \""},{"line_number":32,"context_line":"                     \"project/share-type or a class.\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    log \u003d logging.getLogger(__name__ + \".QuotaSet\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"d84914a1_a548f1f0","line":31,"range":{"start_line":31,"start_character":22,"end_line":31,"end_character":23},"updated":"2021-09-03 17:49:23.000000000","message":"nit: preceding space","commit_id":"d015ba5ffcb4b4fe21010d1cb308094a260dea85"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"97099c82bdda7b62a45cea8f294639b02dc0d648","unresolved":true,"context_lines":[{"line_number":28,"context_line":"    It can be used to set the default class for all projects."},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    _description \u003d _(\" Set Quota for a project, or project/user or \""},{"line_number":32,"context_line":"                     \"project/share-type or a class.\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    log \u003d logging.getLogger(__name__ + \".QuotaSet\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"41d409e9_9bd71d41","line":31,"range":{"start_line":31,"start_character":22,"end_line":31,"end_character":23},"in_reply_to":"d84914a1_a548f1f0","updated":"2021-09-03 19:57:34.000000000","message":"done","commit_id":"d015ba5ffcb4b4fe21010d1cb308094a260dea85"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a7bd33cbb23bd966316c547c384a3e139ba99d85","unresolved":true,"context_lines":[{"line_number":106,"context_line":"            type\u003dint,"},{"line_number":107,"context_line":"            default\u003dNone,"},{"line_number":108,"context_line":"            help\u003d_(\u0027New value for the \"share-groups\" quota. \u0027"},{"line_number":109,"context_line":"                   \u0027Not applicable for class update. \u0027"},{"line_number":110,"context_line":"                   \u0027Available only for microversion \u003e\u003d 2.40\u0027)"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":4,"id":"73af3217_54e2de55","line":109,"range":{"start_line":109,"start_character":20,"end_line":109,"end_character":54},"updated":"2021-09-15 00:03:02.000000000","message":"When reviewing https://review.opendev.org/c/openstack/python-manilaclient/+/805067 we found out that share group and share group snapshot quotas are indeed settable - \n\nCan you please review and revise this patch?","commit_id":"0704f9c803f19309289534a32ce182803fab3f4f"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"9fa92b6f6f9d03dd05fcbdac37c3bb772f52f64d","unresolved":true,"context_lines":[{"line_number":106,"context_line":"            type\u003dint,"},{"line_number":107,"context_line":"            default\u003dNone,"},{"line_number":108,"context_line":"            help\u003d_(\u0027New value for the \"share-groups\" quota. \u0027"},{"line_number":109,"context_line":"                   \u0027Not applicable for class update. \u0027"},{"line_number":110,"context_line":"                   \u0027Available only for microversion \u003e\u003d 2.40\u0027)"},{"line_number":111,"context_line":"        )"},{"line_number":112,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":4,"id":"82715d1c_660608c1","line":109,"range":{"start_line":109,"start_character":20,"end_line":109,"end_character":54},"in_reply_to":"73af3217_54e2de55","updated":"2022-01-10 02:53:31.000000000","message":"done, see new patch","commit_id":"0704f9c803f19309289534a32ce182803fab3f4f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6d0caadb783f5e3a1a8aef1651e217c297a7dbe6","unresolved":true,"context_lines":[{"line_number":217,"context_line":"                \"\u0027share-groups\u0027, \u0027share-group-snapshots\u0027, \u0027share-replicas\u0027, \""},{"line_number":218,"context_line":"                \"\u0027replica-gigabytes\u0027, \u0027per-share-gigabytes\u0027\"))"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        if parsed_args.quota_class:"},{"line_number":221,"context_line":"            kwargs.update({"},{"line_number":222,"context_line":"                \"class_name\": parsed_args.project,"},{"line_number":223,"context_line":"            })"},{"line_number":224,"context_line":"            try:"},{"line_number":225,"context_line":"                share_client.quota_classes.update(**kwargs)"},{"line_number":226,"context_line":"            except Exception as e:"},{"line_number":227,"context_line":"                raise exceptions.CommandError(_("},{"line_number":228,"context_line":"                    \"Failed to set quotas for %s class: \u0027%s\u0027\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"21e1ba20_4f644ac5","line":225,"range":{"start_line":220,"start_character":8,"end_line":225,"end_character":59},"updated":"2022-01-11 00:57:41.000000000","message":"fails:\n\n$ openstack share quota set --class default --share-groups 51\nFailed to set quotas for default class: \u0027update() got an unexpected keyword argument \u0027share_groups\u0027\u0027","commit_id":"817ba05539e438825d133012d5b01778cf24119c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"5daf0d7e9ee7305727faa3efce5751785bb6ec76","unresolved":true,"context_lines":[{"line_number":217,"context_line":"                \"\u0027share-groups\u0027, \u0027share-group-snapshots\u0027, \u0027share-replicas\u0027, \""},{"line_number":218,"context_line":"                \"\u0027replica-gigabytes\u0027, \u0027per-share-gigabytes\u0027\"))"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        if parsed_args.quota_class:"},{"line_number":221,"context_line":"            kwargs.update({"},{"line_number":222,"context_line":"                \"class_name\": parsed_args.project,"},{"line_number":223,"context_line":"            })"},{"line_number":224,"context_line":"            try:"},{"line_number":225,"context_line":"                share_client.quota_classes.update(**kwargs)"},{"line_number":226,"context_line":"            except Exception as e:"},{"line_number":227,"context_line":"                raise exceptions.CommandError(_("},{"line_number":228,"context_line":"                    \"Failed to set quotas for %s class: \u0027%s\u0027\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"f3d0c4d5_2ed72092","line":225,"range":{"start_line":220,"start_character":8,"end_line":225,"end_character":59},"in_reply_to":"21e1ba20_4f644ac5","updated":"2022-01-11 13:26:59.000000000","message":"ops, in my test env it was rebased, but this upstream patch isn\u0027t. Sorry. I updated rebasing on the master.","commit_id":"817ba05539e438825d133012d5b01778cf24119c"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"84e24596f9f8fd02aae564f9821a9707ab466b65","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class QuotaSet(command.Command):"},{"line_number":22,"context_line":"    \"\"\"Set quotas for a project or project/user or project/share-type."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    It can be used to set the default class for all projects."},{"line_number":25,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"6bda74c1_b57575a8","line":22,"updated":"2022-01-13 20:05:59.000000000","message":"NIT. Set quotas for a project, a user in a project, or a share type in a project.\n\nCan be also used to set the default quota class for all projects","commit_id":"624ae05f7178461b07dae21c3adf7a20e131a4b2"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"84e24596f9f8fd02aae564f9821a9707ab466b65","unresolved":true,"context_lines":[{"line_number":33,"context_line":"        parser.add_argument("},{"line_number":34,"context_line":"            \u0027project\u0027,"},{"line_number":35,"context_line":"            metavar\u003d\u0027\u003cproject/class\u003e\u0027,"},{"line_number":36,"context_line":"            help\u003d_(\"A project (name/ID) or a class (e.g.: default).\")"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        quota_type.add_argument("},{"line_number":39,"context_line":"            \u0027--class\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"819d0133_e7ef1323","line":36,"updated":"2022-01-13 20:05:59.000000000","message":"NIT. Name or ID of the project to set the quotas for","commit_id":"624ae05f7178461b07dae21c3adf7a20e131a4b2"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"84e24596f9f8fd02aae564f9821a9707ab466b65","unresolved":true,"context_lines":[{"line_number":229,"context_line":"            kwargs.update({"},{"line_number":230,"context_line":"                \"tenant_id\": project_id,"},{"line_number":231,"context_line":"                \"force\": parsed_args.force,"},{"line_number":232,"context_line":"                \"user_id\": user_id"},{"line_number":233,"context_line":"            })"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"39160e0c_c487f6eb","line":232,"updated":"2022-01-13 20:05:59.000000000","message":"We might not have a user_id here since user is mutually exclusive with share type and class. Seems we would need to change this args dict with those values depending if the user specified them or not.","commit_id":"624ae05f7178461b07dae21c3adf7a20e131a4b2"}]}
