ECR - Persist RegistryID when creating a repository (#4742)
This commit is contained in:
parent
00b10e33a3
commit
0eb8ec47ad
@ -66,12 +66,13 @@ class Repository(BaseObject, CloudFormationModel):
|
|||||||
self,
|
self,
|
||||||
region_name,
|
region_name,
|
||||||
repository_name,
|
repository_name,
|
||||||
|
registry_id,
|
||||||
encryption_config,
|
encryption_config,
|
||||||
image_scan_config,
|
image_scan_config,
|
||||||
image_tag_mutablility,
|
image_tag_mutablility,
|
||||||
):
|
):
|
||||||
self.region_name = region_name
|
self.region_name = region_name
|
||||||
self.registry_id = DEFAULT_REGISTRY_ID
|
self.registry_id = registry_id or DEFAULT_REGISTRY_ID
|
||||||
self.arn = (
|
self.arn = (
|
||||||
f"arn:aws:ecr:{region_name}:{self.registry_id}:repository/{repository_name}"
|
f"arn:aws:ecr:{region_name}:{self.registry_id}:repository/{repository_name}"
|
||||||
)
|
)
|
||||||
@ -190,6 +191,7 @@ class Repository(BaseObject, CloudFormationModel):
|
|||||||
# RepositoryName is optional in CloudFormation, thus create a random
|
# RepositoryName is optional in CloudFormation, thus create a random
|
||||||
# name if necessary
|
# name if necessary
|
||||||
repository_name=resource_name,
|
repository_name=resource_name,
|
||||||
|
registry_id=None,
|
||||||
encryption_config=encryption_config,
|
encryption_config=encryption_config,
|
||||||
image_scan_config=image_scan_config,
|
image_scan_config=image_scan_config,
|
||||||
image_tag_mutablility=image_tag_mutablility,
|
image_tag_mutablility=image_tag_mutablility,
|
||||||
@ -406,6 +408,7 @@ class ECRBackend(BaseBackend):
|
|||||||
def create_repository(
|
def create_repository(
|
||||||
self,
|
self,
|
||||||
repository_name,
|
repository_name,
|
||||||
|
registry_id,
|
||||||
encryption_config,
|
encryption_config,
|
||||||
image_scan_config,
|
image_scan_config,
|
||||||
image_tag_mutablility,
|
image_tag_mutablility,
|
||||||
@ -417,6 +420,7 @@ class ECRBackend(BaseBackend):
|
|||||||
repository = Repository(
|
repository = Repository(
|
||||||
region_name=self.region_name,
|
region_name=self.region_name,
|
||||||
repository_name=repository_name,
|
repository_name=repository_name,
|
||||||
|
registry_id=registry_id,
|
||||||
encryption_config=encryption_config,
|
encryption_config=encryption_config,
|
||||||
image_scan_config=image_scan_config,
|
image_scan_config=image_scan_config,
|
||||||
image_tag_mutablility=image_tag_mutablility,
|
image_tag_mutablility=image_tag_mutablility,
|
||||||
|
@ -24,6 +24,7 @@ class ECRResponse(BaseResponse):
|
|||||||
|
|
||||||
def create_repository(self):
|
def create_repository(self):
|
||||||
repository_name = self._get_param("repositoryName")
|
repository_name = self._get_param("repositoryName")
|
||||||
|
registry_id = self._get_param("registryId")
|
||||||
encryption_config = self._get_param("encryptionConfiguration")
|
encryption_config = self._get_param("encryptionConfiguration")
|
||||||
image_scan_config = self._get_param("imageScanningConfiguration")
|
image_scan_config = self._get_param("imageScanningConfiguration")
|
||||||
image_tag_mutablility = self._get_param("imageTagMutability")
|
image_tag_mutablility = self._get_param("imageTagMutability")
|
||||||
@ -31,6 +32,7 @@ class ECRResponse(BaseResponse):
|
|||||||
|
|
||||||
repository = self.ecr_backend.create_repository(
|
repository = self.ecr_backend.create_repository(
|
||||||
repository_name=repository_name,
|
repository_name=repository_name,
|
||||||
|
registry_id=registry_id,
|
||||||
encryption_config=encryption_config,
|
encryption_config=encryption_config,
|
||||||
image_scan_config=image_scan_config,
|
image_scan_config=image_scan_config,
|
||||||
image_tag_mutablility=image_tag_mutablility,
|
image_tag_mutablility=image_tag_mutablility,
|
||||||
|
@ -116,6 +116,37 @@ def test_create_repository_with_non_default_config():
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_ecr
|
||||||
|
def test_create_repository_in_different_account():
|
||||||
|
# given
|
||||||
|
client = boto3.client("ecr", region_name="us-east-1")
|
||||||
|
repo_name = "test-repo"
|
||||||
|
|
||||||
|
# when passing in a custom registry ID
|
||||||
|
response = client.create_repository(
|
||||||
|
registryId="222222222222", repositoryName=repo_name
|
||||||
|
)
|
||||||
|
|
||||||
|
# then we should persist this ID
|
||||||
|
repo = response["repository"]
|
||||||
|
repo.should.have.key("registryId").equals("222222222222")
|
||||||
|
repo.should.have.key("repositoryArn").equals(
|
||||||
|
"arn:aws:ecr:us-east-1:222222222222:repository/test-repo"
|
||||||
|
)
|
||||||
|
|
||||||
|
# then this repo should be returned with the correct ID
|
||||||
|
repo = client.describe_repositories()["repositories"][0]
|
||||||
|
repo.should.have.key("registryId").equals("222222222222")
|
||||||
|
|
||||||
|
# then we can search for repos with this ID
|
||||||
|
response = client.describe_repositories(registryId="222222222222")
|
||||||
|
response.should.have.key("repositories").length_of(1)
|
||||||
|
|
||||||
|
# then this repo is not found when searching for a different ID
|
||||||
|
response = client.describe_repositories(registryId=ACCOUNT_ID)
|
||||||
|
response.should.have.key("repositories").length_of(0)
|
||||||
|
|
||||||
|
|
||||||
@mock_ecr
|
@mock_ecr
|
||||||
def test_create_repository_with_aws_managed_kms():
|
def test_create_repository_with_aws_managed_kms():
|
||||||
# given
|
# given
|
||||||
|
Loading…
Reference in New Issue
Block a user