first steps undertaken to fix spulec/moto#1684 and spulec/moto#1685
This commit is contained in:
parent
e118a678a6
commit
3a355f126c
2 changed files with 82 additions and 15 deletions
|
|
@ -4,12 +4,12 @@ import hashlib
|
|||
from copy import copy
|
||||
from random import random
|
||||
|
||||
from botocore.exceptions import ParamValidationError
|
||||
|
||||
from moto.core import BaseBackend, BaseModel
|
||||
from moto.ec2 import ec2_backends
|
||||
from moto.ecr.exceptions import ImageNotFoundException, RepositoryNotFoundException
|
||||
|
||||
from botocore.exceptions import ParamValidationError
|
||||
|
||||
DEFAULT_REGISTRY_ID = '012345678910'
|
||||
|
||||
|
||||
|
|
@ -97,13 +97,13 @@ class Repository(BaseObject):
|
|||
|
||||
class Image(BaseObject):
|
||||
|
||||
def __init__(self, tag, manifest, repository, registry_id=DEFAULT_REGISTRY_ID):
|
||||
def __init__(self, tag, manifest, repository, digest=None, registry_id=DEFAULT_REGISTRY_ID):
|
||||
self.image_tag = tag
|
||||
self.image_manifest = manifest
|
||||
self.image_size_in_bytes = 50 * 1024 * 1024
|
||||
self.repository = repository
|
||||
self.registry_id = registry_id
|
||||
self.image_digest = None
|
||||
self.image_digest = digest
|
||||
self.image_pushed_at = None
|
||||
|
||||
def _create_digest(self):
|
||||
|
|
@ -115,6 +115,9 @@ class Image(BaseObject):
|
|||
self._create_digest()
|
||||
return self.image_digest
|
||||
|
||||
def get_image_manifest(self):
|
||||
return self.image_manifest
|
||||
|
||||
@property
|
||||
def response_object(self):
|
||||
response_object = self.gen_response_object()
|
||||
|
|
@ -124,14 +127,14 @@ class Image(BaseObject):
|
|||
response_object['imageManifest'] = self.image_manifest
|
||||
response_object['repositoryName'] = self.repository
|
||||
response_object['registryId'] = self.registry_id
|
||||
return response_object
|
||||
return {k: v for k, v in response_object.items() if v is not None and v != [None]}
|
||||
|
||||
@property
|
||||
def response_list_object(self):
|
||||
response_object = self.gen_response_object()
|
||||
response_object['imageTag'] = self.image_tag
|
||||
response_object['imageDigest'] = "i don't know"
|
||||
return response_object
|
||||
return {k: v for k, v in response_object.items() if v is not None and v != [None]}
|
||||
|
||||
@property
|
||||
def response_describe_object(self):
|
||||
|
|
@ -143,7 +146,7 @@ class Image(BaseObject):
|
|||
response_object['registryId'] = self.registry_id
|
||||
response_object['imageSizeInBytes'] = self.image_size_in_bytes
|
||||
response_object['imagePushedAt'] = '2017-05-09'
|
||||
return response_object
|
||||
return {k: v for k, v in response_object.items() if v is not None and v != [None]}
|
||||
|
||||
@property
|
||||
def response_batch_get_image(self):
|
||||
|
|
@ -154,7 +157,7 @@ class Image(BaseObject):
|
|||
response_object['imageManifest'] = self.image_manifest
|
||||
response_object['repositoryName'] = self.repository
|
||||
response_object['registryId'] = self.registry_id
|
||||
return response_object
|
||||
return {k: v for k, v in response_object.items() if v is not None and v != [None]}
|
||||
|
||||
|
||||
class ECRBackend(BaseBackend):
|
||||
|
|
@ -252,8 +255,14 @@ class ECRBackend(BaseBackend):
|
|||
else:
|
||||
raise Exception("{0} is not a repository".format(repository_name))
|
||||
|
||||
image = Image(image_tag, image_manifest, repository_name)
|
||||
repository.images.append(image)
|
||||
existing_image = list(filter(lambda x: x.response_object['imageManifest'] == image_manifest, repository.images))
|
||||
if not existing_image:
|
||||
image = Image(image_tag, image_manifest, repository_name)
|
||||
repository.images.append(image)
|
||||
else:
|
||||
image = Image(image_tag, image_manifest, repository_name, existing_image[0].get_image_digest())
|
||||
repository.images.append(image)
|
||||
|
||||
return image
|
||||
|
||||
def batch_get_image(self, repository_name, registry_id=None, image_ids=None, accepted_media_types=None):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue