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,
|
||||
region_name,
|
||||
repository_name,
|
||||
registry_id,
|
||||
encryption_config,
|
||||
image_scan_config,
|
||||
image_tag_mutablility,
|
||||
):
|
||||
self.region_name = region_name
|
||||
self.registry_id = DEFAULT_REGISTRY_ID
|
||||
self.registry_id = registry_id or DEFAULT_REGISTRY_ID
|
||||
self.arn = (
|
||||
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
|
||||
# name if necessary
|
||||
repository_name=resource_name,
|
||||
registry_id=None,
|
||||
encryption_config=encryption_config,
|
||||
image_scan_config=image_scan_config,
|
||||
image_tag_mutablility=image_tag_mutablility,
|
||||
@ -406,6 +408,7 @@ class ECRBackend(BaseBackend):
|
||||
def create_repository(
|
||||
self,
|
||||
repository_name,
|
||||
registry_id,
|
||||
encryption_config,
|
||||
image_scan_config,
|
||||
image_tag_mutablility,
|
||||
@ -417,6 +420,7 @@ class ECRBackend(BaseBackend):
|
||||
repository = Repository(
|
||||
region_name=self.region_name,
|
||||
repository_name=repository_name,
|
||||
registry_id=registry_id,
|
||||
encryption_config=encryption_config,
|
||||
image_scan_config=image_scan_config,
|
||||
image_tag_mutablility=image_tag_mutablility,
|
||||
|
@ -24,6 +24,7 @@ class ECRResponse(BaseResponse):
|
||||
|
||||
def create_repository(self):
|
||||
repository_name = self._get_param("repositoryName")
|
||||
registry_id = self._get_param("registryId")
|
||||
encryption_config = self._get_param("encryptionConfiguration")
|
||||
image_scan_config = self._get_param("imageScanningConfiguration")
|
||||
image_tag_mutablility = self._get_param("imageTagMutability")
|
||||
@ -31,6 +32,7 @@ class ECRResponse(BaseResponse):
|
||||
|
||||
repository = self.ecr_backend.create_repository(
|
||||
repository_name=repository_name,
|
||||
registry_id=registry_id,
|
||||
encryption_config=encryption_config,
|
||||
image_scan_config=image_scan_config,
|
||||
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
|
||||
def test_create_repository_with_aws_managed_kms():
|
||||
# given
|
||||
|
Loading…
Reference in New Issue
Block a user