Add a data interface for manifest labels API
This commit is contained in:
parent
fe6760749a
commit
af27a1b6dc
3 changed files with 128 additions and 56 deletions
50
endpoints/api/manifest_models_pre_oci.py
Normal file
50
endpoints/api/manifest_models_pre_oci.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
from manifest_models_interface import ManifestLabel, ManifestLabelInterface
|
||||
from data import model
|
||||
|
||||
|
||||
class ManifestLabelPreOCI(ManifestLabelInterface):
|
||||
def get_manifest_labels(self, namespace_name, repository_name, manifestref, filter=None):
|
||||
try:
|
||||
tag_manifest = model.tag.load_manifest_by_digest(namespace_name, repository_name, manifestref)
|
||||
except model.DataModelException:
|
||||
return None
|
||||
|
||||
labels = model.label.list_manifest_labels(tag_manifest, prefix_filter=filter)
|
||||
return [self._label(l) for l in labels]
|
||||
|
||||
def create_manifest_label(self, namespace_name, repository_name, manifestref, key, value, source_type_name, media_type_name):
|
||||
try:
|
||||
tag_manifest = model.tag.load_manifest_by_digest(namespace_name, repository_name, manifestref)
|
||||
except model.DataModelException:
|
||||
return None
|
||||
|
||||
return self._label(model.label.create_manifest_label(tag_manifest, key, value, source_type_name, media_type_name))
|
||||
|
||||
def get_manifest_label(self, namespace_name, repository_name, manifestref, label_uuid):
|
||||
try:
|
||||
tag_manifest = model.tag.load_manifest_by_digest(namespace_name, repository_name, manifestref)
|
||||
except model.DataModelException:
|
||||
return None
|
||||
|
||||
return self._label(model.label.get_manifest_label(label_uuid, tag_manifest))
|
||||
|
||||
def delete_manifest_label(self, namespace_name, repository_name, manifestref, label_uuid):
|
||||
try:
|
||||
tag_manifest = model.tag.load_manifest_by_digest(namespace_name, repository_name, manifestref)
|
||||
except model.DataModelException:
|
||||
return None
|
||||
|
||||
return self._label(model.label.delete_manifest_label(label_uuid, tag_manifest))
|
||||
|
||||
def _label(self, label_obj):
|
||||
if not label_obj:
|
||||
return None
|
||||
return ManifestLabel(
|
||||
uuid=label_obj.uuid,
|
||||
key=label_obj.key,
|
||||
value=label_obj.value,
|
||||
source_type_name=label_obj.source_type.name,
|
||||
media_type_name=label_obj.media_type.name,
|
||||
)
|
||||
|
||||
pre_oci_model = ManifestLabelPreOCI()
|
Reference in a new issue