This repository has been archived on 2020-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
quay/endpoints/api/repotoken_models_interface.py

61 lines
1.8 KiB
Python
Raw Normal View History

from abc import ABCMeta, abstractmethod
from collections import namedtuple
from six import add_metaclass
class RepositoryToken(namedtuple('RepositoryToken', ['friendly_name', 'code', 'role'])):
"""
RepositoryToken represents a (deprecated) repository access token.
:type friendly_name: string
:type code: string
:type role: string
"""
def to_dict(self):
return {
'friendlyName': self.friendly_name,
'code': self.code,
'role': self.role.name,
}
@add_metaclass(ABCMeta)
class RepoTokenDataInterface(object):
"""
Interface that represents all data store interactions required by the repository tokens API.
Note that this API is *deprecated*.
"""
@abstractmethod
def get_repository_tokens(self, namespace_name, repository_name):
"""
Returns an iterator of all the RepositoryToken's found for the repository with the given
namespace and name. If the repository doesn't exist, an empty iterator is returned.
"""
@abstractmethod
def create_repository_token(self, namespace_name, repository_name, friendly_name):
"""
Creates and returns a new RepositoryToken under the matching repository.
"""
@abstractmethod
def get_repository_token(self, namespace_name, repository_name, code):
"""
Returns the repository access token with the given code under the matching repository or None
if none.
"""
@abstractmethod
def delete_repository_token(self, namespace_name, repository_name, code):
"""
Deletes the repository access token with the given code under the matching repository, if any.
Returns the token deleted or None if none.
"""
@abstractmethod
def set_repository_token_role(self, namespace_name, repository_name, code, role_name):
"""
Sets the role of the repository token with the given code under the matching repository, to the
role given.
"""