Story #3401
Updated by jortel@redhat.com about 6 years ago
*Manifest(Content)* Manifest should contain the following fields: * digest: CharField(255, db_index=True, unique=True) CharField(255) * schema_version: IntegerField() * config_blob: ForeignKey to Blob * media_type: blobs: ManyToManyField('Blob', through='ManifestBlob') * mediaType: ChoiceField() - application/vnd.docker.distribution.manifest.v1+json - application/vnd.docker.distribution.manifest.v2+json (application/vnd.docker.distribution.manifest.v1+json, application/vnd.docker.distribution.manifest.v2+json) *ManifestBlob(Content)* ManifestBlob is used to model the relationship between Manifests and Blobs. Each blob is stored as an _Artifact_ and is related by _ContentArtifact_. Blobs * blob: ForeignKey to Blob * manifest: ForeignKey(Manifest, related_name='blobs', on_delete=CASCADE) ForeignKey to Manifest * media_type: mediaType: ChoiceField() * size: IntegerField() media_type MediaType Choice for the _ManifestBlob_: ManifestBlob: * application/vnd.docker.container.image.v1+json - Container config json represented as a blob * application/vnd.docker.image.rootfs.diff.tar.gzip - Regular blob * application/vnd.docker.image.rootfs.foreign.diff.tar.gzip - Foreign blob ( we do not intend to store foreign blobs. Docker client during pull will fetch it from the remote location) This story will be complete when CRUD is possible for Manifests (for this story, the metadata is not expected to be extracted from the file, but provided by the user in the request body.)