)]}'
{"manilaclient/osc/v2/quotas.py":[{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"62216e5faf4a38be4672a027f42c57c78b789567","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def take_action(self, parsed_args):"},{"line_number":50,"context_line":"        share_client \u003d self.app.client_manager.share"},{"line_number":51,"context_line":"        "},{"line_number":52,"context_line":"        # TODO(maaritamm) how to get tenant/project id if not in args?"},{"line_number":53,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":54,"context_line":"        tenant \u003d parsed_args.tenant_id or identity_client.project_id"},{"line_number":55,"context_line":"        defaults \u003d share_client.quotas.defaults(tenant)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_3965c5e2","line":52,"updated":"2020-01-23 20:18:57.000000000","message":"Good point. We could retrieve the tenant/project id by calling the keystone auth libraries, but I believe it will be more accurate and error prone to make this param mandatory. Would love to hear other people take on this as well.","commit_id":"0ef41a57fc2ff1d906ec8a921bac1b1b7dbe9f71"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"66d11c2126cccd9e0a5b25cf8e909fdd756e4592","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                % (parsed_args.tenant_id, e))"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"class QuotaShow(command.ShowOne):"},{"line_number":178,"context_line":"    \"\"\"List the quotas for a tenant/user.\"\"\""},{"line_number":179,"context_line":"    _description \u003d _(\"Show Quota\")"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_0e21134e","line":177,"updated":"2020-03-16 02:31:18.000000000","message":"I think I catch a small bug in here that has nothing to do with this patch set. If we add the --user-id param with a wrong user-id, it still works for me and returns the same quota. Reproducible with the current client as well.","commit_id":"20f84eedc964a58a3d00fb06d03c16506667a0cb"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"66d11c2126cccd9e0a5b25cf8e909fdd756e4592","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        return self.dict2columns(printable_quotas)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"class QuotaDelete(command.Command):"},{"line_number":244,"context_line":"    \"\"\"Delete quota for a tenant/user or tenant/share-type."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    The quota will revert back to default."}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_6edf673a","line":243,"updated":"2020-03-16 02:31:18.000000000","message":"Here as well, seems there is a bug... when quota delete is called without user-id, the command behaves correctly (set quotas to default). When called with the user-id param, nothing happens.","commit_id":"20f84eedc964a58a3d00fb06d03c16506667a0cb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def get_parser(self, prog_name):"},{"line_number":31,"context_line":"        parser \u003d super(QuotaDefaults, self).get_parser(prog_name)"},{"line_number":32,"context_line":"        parser.add_argument("},{"line_number":33,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":34,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":35,"context_line":"            default\u003dNone,"},{"line_number":36,"context_line":"            help\u003d\u0027ID of tenant to list the default quotas for.\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_5560f1a5","line":33,"range":{"start_line":33,"start_character":13,"end_line":33,"end_character":22},"updated":"2020-03-26 18:56:48.000000000","message":"not sure if you already have this discussion but, shouldn\u0027t be project_id?","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        parser.add_argument("},{"line_number":33,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":34,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":35,"context_line":"            default\u003dNone,"},{"line_number":36,"context_line":"            help\u003d\u0027ID of tenant to list the default quotas for.\u0027"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_d521a14f","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":25},"updated":"2020-03-26 18:56:48.000000000","message":"Which will be the default value for this parameter, since it is not optional [1]? You could use the same from the project that is making the request.\n\n[1] https://docs.openstack.org/api-ref/shared-file-system/?expanded\u003dupdate-quota-set-detail#quota-sets","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class QuotaSet(command.Command):"},{"line_number":48,"context_line":"    \"\"\"Set quotas for a project/user and/or share type.\"\"\""},{"line_number":49,"context_line":"    _description \u003d _(\"Set Quota\")"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    log \u003d logging.getLogger(__name__ + \".QuotaSet\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_f5eb05d9","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":58},"updated":"2020-03-26 18:56:48.000000000","message":"\"\"\"Set quotas for a project or project/user or project/share-type\"\"\"","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    def get_parser(self, prog_name):"},{"line_number":54,"context_line":"        parser \u003d super(QuotaSet, self).get_parser(prog_name)"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":57,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":58,"context_line":"            help\u003d\u0027IUUID of tenant to set the quotas for.\u0027"},{"line_number":59,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_35bf2dd1","line":56,"range":{"start_line":56,"start_character":13,"end_line":56,"end_character":22},"updated":"2020-03-26 18:56:48.000000000","message":"same as L33 reagarding tenant vs project.\n\nI also believe that we should consider having this parameter as optional or mandatory in all quota related commands.","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":63,"context_line":"            default\u003dNone,"},{"line_number":64,"context_line":"            help\u003d\"ID of a user to set the quotas for. Optional. \""},{"line_number":65,"context_line":"                 \"Mutually exclusive with \u0027--share-type\u0027.\""},{"line_number":66,"context_line":"        )"},{"line_number":67,"context_line":"        parser.add_argument("},{"line_number":68,"context_line":"            \u0027--shares\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_15782928","line":65,"range":{"start_line":65,"start_character":17,"end_line":65,"end_character":57},"updated":"2020-03-26 18:56:48.000000000","message":"Is there any validation for that in the client side?","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        )"},{"line_number":134,"context_line":"        return parser"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def take_action(self, parsed_args):"},{"line_number":137,"context_line":"        share_client \u003d self.app.client_manager.share"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_1a08562a","line":136,"range":{"start_line":136,"start_character":8,"end_line":136,"end_character":19},"updated":"2020-03-26 18:56:48.000000000","message":"Let me ask you an enhancement. To raise an error if the admin doesn\u0027t provide any resource to be updated (shares, snapshots, etc).There is a bug report[1] that has details about that. For sure is also an enhancement needed for server side, but could avoid unnecessary request.\n\n[1] https://bugs.launchpad.net/manila/+bug/1778975","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"class QuotaShow(command.ShowOne):"},{"line_number":178,"context_line":"    \"\"\"List the quotas for a tenant/user.\"\"\""},{"line_number":179,"context_line":"    _description \u003d _(\"Show Quota\")"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    log \u003d logging.getLogger(__name__ + \".QuotaShow\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_f5a785a6","line":178,"range":{"start_line":178,"start_character":4,"end_line":178,"end_character":44},"updated":"2020-03-26 18:56:48.000000000","message":"\"\"\" List the quotas for a project or a project/user or a project/share-type.\"\"\"","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    def get_parser(self, prog_name):"},{"line_number":184,"context_line":"        parser \u003d super(QuotaShow, self).get_parser(prog_name)"},{"line_number":185,"context_line":"        parser.add_argument("},{"line_number":186,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":187,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":188,"context_line":"            default\u003dNone,"},{"line_number":189,"context_line":"            help\u003d\u0027ID of tenant to list quotas for.\u0027"},{"line_number":190,"context_line":"        )"},{"line_number":191,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_b5c69d48","line":188,"range":{"start_line":186,"start_character":0,"end_line":188,"end_character":25},"updated":"2020-03-26 18:56:48.000000000","message":"Same points raised on quota-defaults.","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":194,"context_line":"            default\u003dNone,"},{"line_number":195,"context_line":"            help\u003d\"ID of user to list the quotas for. Optional. \""},{"line_number":196,"context_line":"                 \"Mutually exclusive with \u0027--share-type\u0027.\""},{"line_number":197,"context_line":"        )"},{"line_number":198,"context_line":"        parser.add_argument("},{"line_number":199,"context_line":"            \u0027--share-type\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_95e719e5","line":196,"range":{"start_line":196,"start_character":18,"end_line":196,"end_character":56},"updated":"2020-03-26 18:56:48.000000000","message":"Also, is there a client validation for that?","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"22b55024535f59664ece23f42f728e1504018029","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    def get_parser(self, prog_name):"},{"line_number":254,"context_line":"        parser \u003d super(QuotaDelete, self).get_parser(prog_name)"},{"line_number":255,"context_line":"        parser.add_argument("},{"line_number":256,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":257,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":258,"context_line":"            default\u003dNone,"},{"line_number":259,"context_line":"            help\u003d\u0027ID of tenant to delete quotas for.\u0027"},{"line_number":260,"context_line":"        )"},{"line_number":261,"context_line":"        parser.add_argument("},{"line_number":262,"context_line":"            \u0027--user-id\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_9500b969","line":259,"range":{"start_line":256,"start_character":0,"end_line":259,"end_character":53},"updated":"2020-03-26 18:56:48.000000000","message":"Same points raised on quota-defaults.","commit_id":"2a081b9d3245cfd44e82a2ac8f2307d43ee2ef9b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            \"one or both should be unset.\")"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class QuotaDefaults(command.ShowOne):"},{"line_number":32,"context_line":"    \"\"\"List the default quotas for a tenant.\"\"\""},{"line_number":33,"context_line":"    _description \u003d _(\"Quota Defaults\")"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_e5631d19","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":37},"updated":"2020-05-31 21:59:07.000000000","message":"The OpenStack client implementation [1] of this feels a bit more straightforward. Can we just use that?\n\n \"openstack share quota show --defaults \u003cPROJECT_ID\u003e\" would show you the default quotas for a given project.. \n\nThat would avoid the need for a separate command that this currently is:\n\n \"openstack share quota defaults \u003cPROJECT_ID\u003e\"\n\n\nhttps://docs.openstack.org/python-openstackclient/latest/cli/command-objects/quota.html#quota-show","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            \"one or both should be unset.\")"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class QuotaDefaults(command.ShowOne):"},{"line_number":32,"context_line":"    \"\"\"List the default quotas for a tenant.\"\"\""},{"line_number":33,"context_line":"    _description \u003d _(\"Quota Defaults\")"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_25e7d5ae","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":37},"updated":"2020-05-31 21:59:07.000000000","message":"You should have a way to update the defaults as well.\n\nIn manila, \"default\" quotas are implemented as a separate \"quota class\". The values for this default quota class come from configuration to the manila API service. However, we do allow updating the values via API too:\n\nhttps://docs.openstack.org/api-ref/shared-file-system/#update-quota-classes-for-a-project","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":31213,"name":"Maari Tamm","email":"maari.tamm@citynetwork.eu","username":"maaritamm"},"change_message_id":"b04155c534f23fdf9c0ea57b5e3e2cf190692826","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            \"one or both should be unset.\")"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class QuotaDefaults(command.ShowOne):"},{"line_number":32,"context_line":"    \"\"\"List the default quotas for a tenant.\"\"\""},{"line_number":33,"context_line":"    _description \u003d _(\"Quota Defaults\")"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_261b8d73","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":37},"in_reply_to":"ff570b3c_25e7d5ae","updated":"2020-06-12 14:49:10.000000000","message":"Following the spec, I think I was planning on writing a separate patch for that, since it was kind of grouped separately here https://specs.openstack.org/openstack/manila-specs/specs/release_independent/manila-support-openstackclient.html#quota-class-set wdyt?","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":31213,"name":"Maari Tamm","email":"maari.tamm@citynetwork.eu","username":"maaritamm"},"change_message_id":"b04155c534f23fdf9c0ea57b5e3e2cf190692826","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            \"one or both should be unset.\")"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class QuotaDefaults(command.ShowOne):"},{"line_number":32,"context_line":"    \"\"\"List the default quotas for a tenant.\"\"\""},{"line_number":33,"context_line":"    _description \u003d _(\"Quota Defaults\")"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_a6203d9d","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":37},"in_reply_to":"ff570b3c_e5631d19","updated":"2020-06-12 14:49:10.000000000","message":"Yup, that feels better, we need to update this here too https://specs.openstack.org/openstack/manila-specs/specs/release_independent/manila-support-openstackclient.html#quota-sets","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def get_parser(self, prog_name):"},{"line_number":60,"context_line":"        parser \u003d super(QuotaSet, self).get_parser(prog_name)"},{"line_number":61,"context_line":"        parser.add_argument("},{"line_number":62,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":63,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":64,"context_line":"            help\u003d\u0027IUUID of tenant to set the quotas for.\u0027"},{"line_number":65,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_c56899f6","line":62,"range":{"start_line":62,"start_character":13,"end_line":62,"end_character":22},"updated":"2020-05-31 21:59:07.000000000","message":"project","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        parser \u003d super(QuotaSet, self).get_parser(prog_name)"},{"line_number":61,"context_line":"        parser.add_argument("},{"line_number":62,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":63,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":64,"context_line":"            help\u003d\u0027IUUID of tenant to set the quotas for.\u0027"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_256a35ec","line":63,"range":{"start_line":63,"start_character":22,"end_line":63,"end_character":31},"updated":"2020-05-31 21:59:07.000000000","message":"project","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        parser.add_argument("},{"line_number":62,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":63,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":64,"context_line":"            help\u003d\u0027IUUID of tenant to set the quotas for.\u0027"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        parser.add_argument("},{"line_number":67,"context_line":"            \u0027--user-id\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_056f31fc","line":64,"range":{"start_line":64,"start_character":18,"end_line":64,"end_character":33},"updated":"2020-05-31 21:59:07.000000000","message":"Name or ID of the project","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":63,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":64,"context_line":"            help\u003d\u0027IUUID of tenant to set the quotas for.\u0027"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        parser.add_argument("},{"line_number":67,"context_line":"            \u0027--user-id\u0027,"},{"line_number":68,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_a019137b","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":9},"updated":"2020-05-31 21:59:07.000000000","message":"Can you make this optional, and use the project ID from the environment? I\u0027ve added comments below with some more thoughts on this","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            help\u003d\u0027IUUID of tenant to set the quotas for.\u0027"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        parser.add_argument("},{"line_number":67,"context_line":"            \u0027--user-id\u0027,"},{"line_number":68,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":69,"context_line":"            default\u003dNone,"},{"line_number":70,"context_line":"            help\u003d\"ID of a user to set the quotas for. Optional. \""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_457489cf","line":67,"range":{"start_line":67,"start_character":13,"end_line":67,"end_character":22},"updated":"2020-05-31 21:59:07.000000000","message":"--user","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        parser.add_argument("},{"line_number":67,"context_line":"            \u0027--user-id\u0027,"},{"line_number":68,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":69,"context_line":"            default\u003dNone,"},{"line_number":70,"context_line":"            help\u003d\"ID of a user to set the quotas for. Optional. \""},{"line_number":71,"context_line":"                 \"Mutually exclusive with \u0027--share-type\u0027.\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_a57da5b3","line":68,"range":{"start_line":68,"start_character":22,"end_line":68,"end_character":29},"updated":"2020-05-31 21:59:07.000000000","message":"user","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            \u0027--user-id\u0027,"},{"line_number":68,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":69,"context_line":"            default\u003dNone,"},{"line_number":70,"context_line":"            help\u003d\"ID of a user to set the quotas for. Optional. \""},{"line_number":71,"context_line":"                 \"Mutually exclusive with \u0027--share-type\u0027.\""},{"line_number":72,"context_line":"        )"},{"line_number":73,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_857a21b7","line":70,"range":{"start_line":70,"start_character":18,"end_line":70,"end_character":20},"updated":"2020-05-31 21:59:07.000000000","message":"Name or ID","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            type\u003dint,"},{"line_number":120,"context_line":"            default\u003dNone,"},{"line_number":121,"context_line":"            help\u003d\u0027New value for the \"share_group_snapshots\" quota.\u0027"},{"line_number":122,"context_line":"        )"},{"line_number":123,"context_line":"        parser.add_argument("},{"line_number":124,"context_line":"            \u0027--share-type\u0027,"},{"line_number":125,"context_line":"            metavar\u003d\u0027\u003cshare_type\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_0548d184","line":122,"range":{"start_line":122,"start_character":8,"end_line":122,"end_character":9},"updated":"2020-05-31 21:59:07.000000000","message":"There are now two more quotas:\n\n\"share-replicas\" (int, number of share replicas)\n\"replica-gigabytes\" (int, capacity of share replicas in total)\n\nhttps://review.opendev.org/#/c/712677/","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                \"\u0027share_groups\u0027, \u0027share group snapshots\u0027\")"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        kwargs.update({"},{"line_number":184,"context_line":"            \"tenant_id\": parsed_args.tenant_id,"},{"line_number":185,"context_line":"            \"force\": parsed_args.force,"},{"line_number":186,"context_line":"            \"user_id\": parsed_args.user_id"},{"line_number":187,"context_line":"        })"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_450be928","line":184,"range":{"start_line":184,"start_character":25,"end_line":184,"end_character":46},"updated":"2020-05-31 21:59:07.000000000","message":"\"Tenant\" is a deprecated reference to projects... So, since this CLI is brand new, lets not use any \"tenant\" references.. \n\nWe should also allow specifying either project name or project ID - we can perform the required resolution using keystone... Check this helper method in the OpenStack client: https://github.com/openstack/python-openstackclient/blob/4a2aa4acc15ede25c925fa775a3a06dc710de7fd/openstackclient/common/quota.py#L98-L119 \n\nPerhaps we can port it and use that?","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                \"\u0027share_groups\u0027, \u0027share group snapshots\u0027\")"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        kwargs.update({"},{"line_number":184,"context_line":"            \"tenant_id\": parsed_args.tenant_id,"},{"line_number":185,"context_line":"            \"force\": parsed_args.force,"},{"line_number":186,"context_line":"            \"user_id\": parsed_args.user_id"},{"line_number":187,"context_line":"        })"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_c0040718","line":184,"range":{"start_line":184,"start_character":46,"end_line":184,"end_character":47},"updated":"2020-05-31 21:59:07.000000000","message":"Most CLI users would have sourced credentials before executing these commands, so, in case a project is unspecified, we can infer it from the environment variables set... (the helper method in the OSC project does that)..\n\nThe OSC Client makes project an optional variable like this: https://github.com/openstack/python-openstackclient/blob/4a2aa4acc15ede25c925fa775a3a06dc710de7fd/openstackclient/common/quota.py#L596-L601","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":31213,"name":"Maari Tamm","email":"maari.tamm@citynetwork.eu","username":"maaritamm"},"change_message_id":"2f033e13372f4e778a735f67eb913fe6cd3ecdfc","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                \"\u0027share_groups\u0027, \u0027share group snapshots\u0027\")"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        kwargs.update({"},{"line_number":184,"context_line":"            \"tenant_id\": parsed_args.tenant_id,"},{"line_number":185,"context_line":"            \"force\": parsed_args.force,"},{"line_number":186,"context_line":"            \"user_id\": parsed_args.user_id"},{"line_number":187,"context_line":"        })"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf51134e_9b204fb3","line":184,"range":{"start_line":184,"start_character":46,"end_line":184,"end_character":47},"in_reply_to":"ff570b3c_c0040718","updated":"2020-06-13 09:21:46.000000000","message":"I have made the argument optional as \u0027--project\u0027 to keep the consistency that we have so far (mandatory arguments are positional and and optional with the leading --). I was thinking that introducing an optional positional argument might create some confusion here, wdyt?","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        kwargs.update({"},{"line_number":184,"context_line":"            \"tenant_id\": parsed_args.tenant_id,"},{"line_number":185,"context_line":"            \"force\": parsed_args.force,"},{"line_number":186,"context_line":"            \"user_id\": parsed_args.user_id"},{"line_number":187,"context_line":"        })"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_85018109","line":186,"range":{"start_line":186,"start_character":23,"end_line":186,"end_character":42},"updated":"2020-05-31 21:59:07.000000000","message":"Similar concern as above.. \n\nIf a user name is provided instead of an ID, it can be resolved with the help of keystone..","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    def get_parser(self, prog_name):"},{"line_number":204,"context_line":"        parser \u003d super(QuotaShow, self).get_parser(prog_name)"},{"line_number":205,"context_line":"        parser.add_argument("},{"line_number":206,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":207,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":208,"context_line":"            help\u003d\u0027ID of tenant to list quotas for.\u0027"},{"line_number":209,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_2006a31d","line":206,"range":{"start_line":206,"start_character":13,"end_line":206,"end_character":22},"updated":"2020-05-31 21:59:07.000000000","message":"project","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        parser \u003d super(QuotaShow, self).get_parser(prog_name)"},{"line_number":205,"context_line":"        parser.add_argument("},{"line_number":206,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":207,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":208,"context_line":"            help\u003d\u0027ID of tenant to list quotas for.\u0027"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_000b9f23","line":207,"range":{"start_line":207,"start_character":22,"end_line":207,"end_character":31},"updated":"2020-05-31 21:59:07.000000000","message":"project","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        parser.add_argument("},{"line_number":206,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":207,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":208,"context_line":"            help\u003d\u0027ID of tenant to list quotas for.\u0027"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--user-id\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_60137b5d","line":208,"range":{"start_line":208,"start_character":18,"end_line":208,"end_character":20},"updated":"2020-05-31 21:59:07.000000000","message":"Name or ID","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        parser.add_argument("},{"line_number":206,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":207,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":208,"context_line":"            help\u003d\u0027ID of tenant to list quotas for.\u0027"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--user-id\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_4010f74e","line":208,"range":{"start_line":208,"start_character":24,"end_line":208,"end_character":30},"updated":"2020-05-31 21:59:07.000000000","message":"the project","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            \u0027tenant_id\u0027,"},{"line_number":207,"context_line":"            metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":208,"context_line":"            help\u003d\u0027ID of tenant to list quotas for.\u0027"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--user-id\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_e0282b87","line":209,"range":{"start_line":209,"start_character":8,"end_line":209,"end_character":9},"updated":"2020-05-31 21:59:07.000000000","message":"like suggested for the above command, this can be optional..","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0cab81bf78bc7cd4b16583e7c2e9c023ec5ac827","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            help\u003d\u0027ID of tenant to list quotas for.\u0027"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--user-id\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cuser_id\u003e\u0027,"},{"line_number":213,"context_line":"            default\u003dNone,"},{"line_number":214,"context_line":"            help\u003d\"ID of user to list the quotas for. Optional. \""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff570b3c_80168f48","line":211,"range":{"start_line":211,"start_character":15,"end_line":211,"end_character":22},"updated":"2020-05-31 21:59:07.000000000","message":"user","commit_id":"267e343390c91d2f468fbf94fc0b3e66e6ca13aa"},{"author":{"_account_id":31213,"name":"Maari Tamm","email":"maari.tamm@citynetwork.eu","username":"maaritamm"},"change_message_id":"76ffbfe9815cb9af7e5e3e2882b90d05a43dd496","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                   \"Available only for microversion \u003e\u003d 2.39\")"},{"line_number":251,"context_line":"        )"},{"line_number":252,"context_line":"        parser.add_argument("},{"line_number":253,"context_line":"            \u0027--detail\u0027,"},{"line_number":254,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":255,"context_line":"            default\u003dFalse,"},{"line_number":256,"context_line":"            help\u003d_(\u0027Optional flag to indicate whether to show quota in detail.\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_bb0c3343","line":253,"range":{"start_line":253,"start_character":12,"end_line":253,"end_character":22},"updated":"2020-06-13 09:41:05.000000000","message":"when used together with \u0027--defaults\u0027 this will be ignored, since we don\u0027t support detail view for defaults at the moment.","commit_id":"4e9a8ae09f5c9de58e2657eb51b16909b6200c2e"},{"author":{"_account_id":31213,"name":"Maari Tamm","email":"maari.tamm@citynetwork.eu","username":"maaritamm"},"change_message_id":"76ffbfe9815cb9af7e5e3e2882b90d05a43dd496","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                   \u0027 Default false, available only for microversion \u003e\u003d 2.25.\u0027)"},{"line_number":258,"context_line":"        )"},{"line_number":259,"context_line":"        parser.add_argument("},{"line_number":260,"context_line":"            \u0027--defaults\u0027,"},{"line_number":261,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":262,"context_line":"            default\u003dFalse,"},{"line_number":263,"context_line":"            help\u003d_(\u0027Show the default quotas for the project.\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_db03e70e","line":260,"range":{"start_line":260,"start_character":12,"end_line":260,"end_character":24},"updated":"2020-06-13 09:41:05.000000000","message":"creates a little bug here ^, cannot be used simultaneously with \u0027--detail\u0027. Need to look into it more.","commit_id":"4e9a8ae09f5c9de58e2657eb51b16909b6200c2e"}]}
