diff --git a/data/registry_model/datatypes.py b/data/registry_model/datatypes.py index 7487d1564..66c39c2f4 100644 --- a/data/registry_model/datatypes.py +++ b/data/registry_model/datatypes.py @@ -10,6 +10,16 @@ class RepositoryReference(datatype('Repository', [])): return RepositoryReference(db_id=repo_obj.id) +class Label(datatype('Label', ['key', 'value'])): + """ Label represents a label on a manifest. """ + @classmethod + def for_label(cls, label): + if label is None: + return None + + return Label(db_id=label.id, key=label.key, value=label.value) + + class Tag(datatype('Tag', ['name'])): """ Tag represents a tag in a repository, which points to a manifest or image. """ @classmethod diff --git a/data/registry_model/registry_pre_oci_model.py b/data/registry_model/registry_pre_oci_model.py index 6e37814de..b879f96f0 100644 --- a/data/registry_model/registry_pre_oci_model.py +++ b/data/registry_model/registry_pre_oci_model.py @@ -5,7 +5,7 @@ from collections import defaultdict from data import database from data import model from data.registry_model.interface import RegistryDataInterface -from data.registry_model.datatypes import Tag, RepositoryReference, Manifest, LegacyImage +from data.registry_model.datatypes import Tag, RepositoryReference, Manifest, LegacyImage, Label class PreOCIModel(RegistryDataInterface): @@ -60,9 +60,11 @@ class PreOCIModel(RegistryDataInterface): try: tag_manifest = database.TagManifest.get(id=manifest._db_id) except database.TagManifest.DoesNotExist: - return + return None - model.label.create_manifest_label(tag_manifest, key, value, source_type_name, media_type_name) + label = model.label.create_manifest_label(tag_manifest, key, value, source_type_name, + media_type_name) + return Label.for_label(label) def get_legacy_images(self, repository_ref): """