Skip to content
This repository has been archived by the owner on Feb 25, 2024. It is now read-only.

Commit

Permalink
feat: new functionalities to create and delete repository (#36)
Browse files Browse the repository at this point in the history
  • Loading branch information
jjmachan authored Apr 21, 2022
1 parent 638194b commit aebdbdb
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 9 deletions.
6 changes: 3 additions & 3 deletions bentoctl_lambda/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from .generate import generate
from .create_deployable import create_deployable
from .registry_utils import get_registry_info
from .generate import generate
from .registry_utils import create_repository, delete_repository

__all__ = ["create_deployable", "generate", "get_registry_info"]
__all__ = ["create_deployable", "generate", "create_repository", "delete_repository"]
30 changes: 24 additions & 6 deletions bentoctl_lambda/registry_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,44 @@ def get_ecr_login_info(region, repository_id):
return registry_url, username, password


def get_repository(ecr_client, repository_name):
result = ecr_client.describe_repositories(repositoryNames=[repository_name])
repository_id = result["repositories"][0]["registryId"]
repository_uri = result["repositories"][0]["repositoryUri"]

return repository_id, repository_uri


def create_ecr_repository_if_not_exists(region, repository_name):
ecr_client = boto3.client("ecr", region)
try:
result = ecr_client.describe_repositories(repositoryNames=[repository_name])
repository_id = result["repositories"][0]["registryId"]
repository_uri = result["repositories"][0]["repositoryUri"]
repository_id, repository_uri = get_repository(ecr_client, repository_name)
except ecr_client.exceptions.RepositoryNotFoundException:
result = ecr_client.create_repository(repositoryName=repository_name)
repository_id = result["repository"]["registryId"]
repository_uri = result["repository"]["repositoryUri"]
return repository_id, repository_uri


def get_registry_info(deployment_name, operator_spec):
def create_repository(repository_name, operator_spec):
"""
Return registry info
Create the ECR registry and return the info.
"""
repo_id, _ = create_ecr_repository_if_not_exists(
operator_spec["region"], deployment_name
operator_spec.get("region"), repository_name
)
repo_url, username, password = get_ecr_login_info(operator_spec["region"], repo_id)

return repo_url, username, password


def delete_repository(repository_name, operator_spec):
"""
Destroy the ECR registry created.
"""
ecr_client = boto3.client("ecr", operator_spec.get("region"))
try:
get_repository(ecr_client, repository_name)
ecr_client.delete_repository(repositoryName=repository_name, force=True)
except ecr_client.exceptions.RepositoryNotFoundException:
print(f"Repository {repository_name} not found. Skipping registry cleanup")

0 comments on commit aebdbdb

Please sign in to comment.