First set of changes toward shared base images.
This commit is contained in:
parent
8794547593
commit
5742e6ea4e
3 changed files with 54 additions and 35 deletions
|
@ -186,7 +186,9 @@ class Image(BaseModel):
|
|||
image_size = BigIntegerField(null=True)
|
||||
|
||||
# '/' separated list of ancestory ids, e.g. /1/2/6/7/10/
|
||||
ancestors = CharField(index=True, default='/', max_length=64535)
|
||||
ancestors = CharField(index=True, default='/', max_length=64535, null=True)
|
||||
|
||||
storage = ForeignKeyField(ImageStorage, index=True, null=True)
|
||||
|
||||
class Meta:
|
||||
database = db
|
||||
|
@ -196,6 +198,18 @@ class Image(BaseModel):
|
|||
)
|
||||
|
||||
|
||||
class ImageStorage(BaseModel):
|
||||
storage_uuid = CharField(default=uuid_generator)
|
||||
checksum = CharField(null=True)
|
||||
created = DateTimeField(null=True)
|
||||
comment = TextField(null=True)
|
||||
command = TextField(null=True)
|
||||
image_size = BigIntegerField(null=True)
|
||||
|
||||
# '/' separated list of ancestory ids, e.g. /1/2/6/7/10/
|
||||
ancestors = CharField(index=True, default='/', max_length=64535)
|
||||
|
||||
|
||||
class RepositoryTag(BaseModel):
|
||||
name = CharField()
|
||||
image = ForeignKeyField(Image)
|
||||
|
|
|
@ -772,10 +772,15 @@ def get_repository(namespace_name, repository_name):
|
|||
|
||||
|
||||
def get_repo_image(namespace_name, repository_name, image_id):
|
||||
joined = Image.select().join(Repository)
|
||||
query = joined.where(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name,
|
||||
Image.docker_image_id == image_id).limit(1)
|
||||
query = (Image
|
||||
.select()
|
||||
.join(Repository)
|
||||
.switch(Image)
|
||||
.join(ImageStorage, JOIN_LEFT_OUTER)
|
||||
.where(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name,
|
||||
Image.docker_image_id == image_id)
|
||||
.limit(1))
|
||||
result = list(query)
|
||||
if not result:
|
||||
return None
|
||||
|
|
Reference in a new issue