Fix manifest UI page to properly show the layers of manifests and show manifest lists
This commit is contained in:
parent
8cd3740c69
commit
4106f5ce51
13 changed files with 162 additions and 89 deletions
|
@ -1,14 +1,16 @@
|
|||
""" Manage the manifests of a repository. """
|
||||
import json
|
||||
|
||||
from flask import request
|
||||
|
||||
from app import label_validator
|
||||
from app import label_validator, storage
|
||||
from data.model import InvalidLabelKeyException, InvalidMediaTypeException
|
||||
from data.registry_model import registry_model
|
||||
from digest import digest_tools
|
||||
from endpoints.api import (resource, nickname, require_repo_read, require_repo_write,
|
||||
RepositoryParamResource, log_action, validate_json_request,
|
||||
path_param, parse_args, query_param, abort, api,
|
||||
disallow_for_app_repositories)
|
||||
disallow_for_app_repositories, format_date)
|
||||
from endpoints.api.image import image_dict
|
||||
from endpoints.exception import NotFound
|
||||
from util.validation import VALID_LABEL_KEY_REGEX
|
||||
|
@ -27,15 +29,37 @@ def _label_dict(label):
|
|||
'media_type': label.media_type_name,
|
||||
}
|
||||
|
||||
def _manifest_dict(manifest):
|
||||
image = None
|
||||
if manifest.legacy_image is not None:
|
||||
image = image_dict(manifest.legacy_image, with_history=True)
|
||||
|
||||
def _layer_dict(manifest_layer, index):
|
||||
try:
|
||||
command = json.loads(manifest_layer.command)
|
||||
except (TypeError, ValueError):
|
||||
command = []
|
||||
|
||||
return {
|
||||
'index': index,
|
||||
'compressed_size': manifest_layer.compressed_size,
|
||||
'is_remote': manifest_layer.is_remote,
|
||||
'urls': manifest_layer.urls,
|
||||
'command': command,
|
||||
'blob_digest': str(manifest_layer.blob_digest),
|
||||
'created_datetime': format_date(manifest_layer.created_datetime),
|
||||
}
|
||||
|
||||
|
||||
def _manifest_dict(manifest):
|
||||
image = None
|
||||
if manifest.legacy_image_if_present is not None:
|
||||
image = image_dict(manifest.legacy_image, with_history=True)
|
||||
|
||||
layers = registry_model.list_manifest_layers(manifest, storage)
|
||||
return {
|
||||
'digest': manifest.digest,
|
||||
'is_manifest_list': manifest.is_manifest_list,
|
||||
'manifest_data': manifest.manifest_bytes,
|
||||
'image': image,
|
||||
'layers': ([_layer_dict(lyr.layer_info, idx) for idx, lyr in enumerate(layers)]
|
||||
if layers else None),
|
||||
}
|
||||
|
||||
|
||||
|
|
Reference in a new issue