Mercurial > repos > shellac > sam_consensus_v3
diff env/lib/python3.9/site-packages/bioblend/galaxy/quotas/__init__.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/env/lib/python3.9/site-packages/bioblend/galaxy/quotas/__init__.py Mon Mar 22 18:12:50 2021 +0000 @@ -0,0 +1,211 @@ +""" +Contains possible interactions with the Galaxy Quota +""" +from bioblend.galaxy.client import Client + + +class QuotaClient(Client): + + def __init__(self, galaxy_instance): + self.module = 'quotas' + super().__init__(galaxy_instance) + + def get_quotas(self, deleted=False): + """ + Get a list of quotas + + :type deleted: bool + :param deleted: Only return quota(s) that have been deleted + + :rtype: list + :return: A list of dicts with details on individual quotas. + For example:: + + [{'id': '0604c8a56abe9a50', + 'model_class': 'Quota', + 'name': 'test ', + 'url': '/api/quotas/0604c8a56abe9a50'}, + {'id': '1ee267091d0190af', + 'model_class': 'Quota', + 'name': 'workshop', + 'url': '/api/quotas/1ee267091d0190af'}] + """ + return self._get(deleted=deleted) + + def show_quota(self, quota_id, deleted=False): + """ + Display information on a quota + + :type quota_id: str + :param quota_id: Encoded quota ID + + :type deleted: bool + :param deleted: Search for quota in list of ones already marked as deleted + + :rtype: dict + :return: A description of quota. + For example:: + + {'bytes': 107374182400, + 'default': [], + 'description': 'just testing', + 'display_amount': '100.0 GB', + 'groups': [], + 'id': '0604c8a56abe9a50', + 'model_class': 'Quota', + 'name': 'test ', + 'operation': '=', + 'users': []} + """ + return self._get(id=quota_id, deleted=deleted) + + def create_quota(self, name, description, amount, operation, + default='no', in_users=None, in_groups=None): + """ + Create a new quota + + :type name: str + :param name: Name for the new quota. This must be unique within a Galaxy instance. + + :type description: str + :param description: Quota description + + :type amount: str + :param amount: Quota size (E.g. ``10000MB``, ``99 gb``, ``0.2T``, ``unlimited``) + + :type operation: str + :param operation: One of (``+``, ``-``, ``=``) + + :type default: str + :param default: Whether or not this is a default quota. Valid values + are ``no``, ``unregistered``, ``registered``. None is + equivalent to ``no``. + + :type in_users: list of str + :param in_users: A list of user IDs or user emails. + + :type in_groups: list of str + :param in_groups: A list of group IDs or names. + + :rtype: dict + :return: A description of quota. + For example:: + + {'url': '/galaxy/api/quotas/386f14984287a0f7', + 'model_class': 'Quota', + 'message': "Quota 'Testing' has been created with 1 associated users and 0 associated groups.", + 'id': '386f14984287a0f7', + 'name': 'Testing'} + """ + payload = { + 'name': name, + 'description': description, + 'amount': amount, + 'operation': operation, + 'default': default + } + if in_users: + payload['in_users'] = in_users + + if in_groups: + payload['in_groups'] = in_groups + + return self._post(payload) + + def update_quota(self, quota_id, name=None, description=None, amount=None, operation=None, + default='no', in_users=None, in_groups=None): + """ + Update an existing quota + + :type quota_id: str + :param quota_id: Encoded quota ID + + :type name: str + :param name: Name for the new quota. This must be unique within a Galaxy instance. + + :type description: str + :param description: Quota description. If you supply this parameter, + but not the name, an error will be thrown. + + :type amount: str + :param amount: Quota size (E.g. ``10000MB``, ``99 gb``, ``0.2T``, ``unlimited``) + + :type operation: str + :param operation: One of (``+``, ``-``, ``=``). If you wish to change this + value, you must also provide the ``amount``, + otherwise it will not take effect. + + :type default: str + :param default: Whether or not this is a default quota. Valid values + are ``no``, ``unregistered``, ``registered``. + Calling this method with ``default="no"`` on a + non-default quota will throw an error. Not + passing this parameter is equivalent to passing ``no``. + + :type in_users: list of str + :param in_users: A list of user IDs or user emails. + + :type in_groups: list of str + :param in_groups: A list of group IDs or names. + + :rtype: str + :return: A semicolon separated list of changes to the quota. + For example:: + + "Quota 'Testing-A' has been renamed to 'Testing-B'; Quota 'Testing-e' is now '-100.0 GB'; Quota 'Testing-B' is now the default for unregistered users" + """ + payload = { + 'default': default + } + if name: + payload['name'] = name + + if description: + payload['description'] = description + + if amount: + payload['amount'] = amount + + if operation: + payload['operation'] = operation + + if in_users: + payload['in_users'] = in_users + + if in_groups: + payload['in_groups'] = in_groups + + return self._put(id=quota_id, payload=payload) + + def delete_quota(self, quota_id): + """ + Delete a quota + + Before a quota can be deleted, the quota must not be a default quota. + + :type quota_id: str + :param quota_id: Encoded quota ID. + + :rtype: str + :return: A description of the changes, mentioning the deleted quota. + For example:: + + "Deleted 1 quotas: Testing-B" + """ + return self._delete(id=quota_id) + + def undelete_quota(self, quota_id): + """ + Undelete a quota + + :type quota_id: str + :param quota_id: Encoded quota ID. + + :rtype: str + :return: A description of the changes, mentioning the undeleted quota. + For example:: + + "Undeleted 1 quotas: Testing-B" + """ + url = self._make_url(quota_id, deleted=True) + '/undelete' + return self._post(url=url, payload={'id': quota_id})