Fix manifest UI display for manifests with empty layers
Also fixes the command for schema 2 manifests
This commit is contained in:
parent
4106f5ce51
commit
7fa60d5802
2 changed files with 22 additions and 4 deletions
|
@ -12,6 +12,7 @@ from data.registry_model.datatype import FromDictionaryException
|
|||
from data.registry_model.datatypes import (RepositoryReference, Blob, TorrentInfo, BlobUpload,
|
||||
LegacyImage, ManifestLayer, DerivedImage)
|
||||
from image.docker.schema1 import ManifestException, DockerSchema1ManifestBuilder
|
||||
from image.docker.schema2 import EMPTY_LAYER_BLOB_DIGEST
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -344,14 +345,21 @@ class SharedModel:
|
|||
working towards the leaf, including the associated Blob and its placements (if specified).
|
||||
Returns None if the manifest could not be parsed and validated.
|
||||
"""
|
||||
retriever = RepositoryContentRetriever(repo_id, storage)
|
||||
requires_empty_blob = parsed.get_requires_empty_layer_blob(retriever)
|
||||
|
||||
storage_map = {}
|
||||
if parsed.local_blob_digests:
|
||||
blob_digests = list(parsed.local_blob_digests)
|
||||
if requires_empty_blob:
|
||||
blob_digests.append(EMPTY_LAYER_BLOB_DIGEST)
|
||||
|
||||
if blob_digests:
|
||||
blob_query = model.storage.lookup_repo_storages_by_content_checksum(repo_id,
|
||||
parsed.local_blob_digests,
|
||||
blob_digests,
|
||||
by_manifest=by_manifest)
|
||||
storage_map = {blob.content_checksum: blob for blob in blob_query}
|
||||
|
||||
retriever = RepositoryContentRetriever(repo_id, storage)
|
||||
|
||||
layers = parsed.get_layers(retriever)
|
||||
if layers is None:
|
||||
logger.error('Could not load layers for manifest `%s`', parsed.digest)
|
||||
|
|
Reference in a new issue