1
0
mirror of https://github.com/quay/quay.git synced 2026-01-27 18:42:52 +03:00
Files
quay/data/model/proxy_cache.py
Flavian Missi fe4d66b030 feat: pull-thru proxy cache (#1053)
introduces the possibility to pull images from external registries
through Quay, storing them locally for faster subsequent pulls.

Closes PROJQUAY-3030 and PROJQUAY-3033
2022-03-23 17:20:00 +01:00

46 lines
1.4 KiB
Python

from data.database import ProxyCacheConfig, User, DEFAULT_PROXY_CACHE_EXPIRATION
from data.model import InvalidProxyCacheConfigException, InvalidOrganizationException
from data.model.organization import get_organization
def create_proxy_cache_config(
org_name,
upstream_registry,
upstream_registry_username=None,
upstream_registry_password=None,
expiration_s=DEFAULT_PROXY_CACHE_EXPIRATION,
insecure=False,
):
"""
Creates proxy cache configuration for the given organization name
"""
org = get_organization(org_name)
new_entry = ProxyCacheConfig.create(
organization=org,
upstream_registry=upstream_registry,
upstream_registry_username=upstream_registry_username,
upstream_registry_password=upstream_registry_password,
expiration_s=expiration_s,
insecure=insecure,
)
return new_entry
def get_proxy_cache_config_for_org(org_name):
"""
Return the Proxy-Cache-Config associated with the given organization name.
Raises InvalidProxyCacheConfigException if org_name belongs to a user, or
if org_name has no associated config.
"""
try:
return (
ProxyCacheConfig.select()
.join(User)
.where((User.username == org_name) & (User.organization == True))
.get()
)
except ProxyCacheConfig.DoesNotExist as e:
raise InvalidProxyCacheConfigException(str(e))