Change manifest creation to take in the map of blobs that form the manifest
We need to lookup the blobs *specific to the images in that manifest*, so we now pass them in from the locations in which we know that information
This commit is contained in:
parent
e3da522d26
commit
56222f95dc
8 changed files with 89 additions and 43 deletions
|
@ -93,8 +93,15 @@ class PreOCIModel(DockerRegistryV2DataInterface):
|
|||
|
||||
def create_manifest_and_update_tag(self, namespace_name, repo_name, tag_name, manifest):
|
||||
assert isinstance(manifest, ManifestInterface)
|
||||
repo = model.repository.get_repository(namespace_name, repo_name)
|
||||
if repo is None:
|
||||
return
|
||||
|
||||
blob_map = self.lookup_blobs_by_digest(repo, manifest.checksums)
|
||||
storage_map = {blob.digest: blob.id for blob_digest, blob in blob_map.iteritems()}
|
||||
try:
|
||||
model.tag.associate_generated_tag_manifest(namespace_name, repo_name, tag_name, manifest)
|
||||
model.tag.associate_generated_tag_manifest(namespace_name, repo_name, tag_name, manifest,
|
||||
storage_map)
|
||||
except IntegrityError:
|
||||
# It's already there!
|
||||
pass
|
||||
|
@ -112,10 +119,11 @@ class PreOCIModel(DockerRegistryV2DataInterface):
|
|||
parent_image)
|
||||
return _docker_v1_metadata(repository.namespace_name, repository.name, repo_image)
|
||||
|
||||
def save_manifest(self, repository, tag_name, manifest, leaf_layer_id=None):
|
||||
def save_manifest(self, repository, tag_name, manifest, leaf_layer_id, blob_map):
|
||||
assert isinstance(manifest, ManifestInterface)
|
||||
storage_map = {blob.digest: blob.id for blob_digest, blob in blob_map.iteritems()}
|
||||
(_, newly_created) = model.tag.store_tag_manifest_for_repo(repository.id, tag_name, manifest,
|
||||
leaf_layer_id=leaf_layer_id)
|
||||
leaf_layer_id, storage_map)
|
||||
return newly_created
|
||||
|
||||
def repository_tags(self, namespace_name, repo_name, start_id, limit):
|
||||
|
|
Reference in a new issue