Switch content retrieval in manifests to be behind an interface
This allows for easy separation of retrieval of config blobs vs manifests
This commit is contained in:
parent
1eaf5b18dd
commit
cbfb6054e5
7 changed files with 143 additions and 124 deletions
24
image/docker/schemautil.py
Normal file
24
image/docker/schemautil.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
import json
|
||||
|
||||
from image.docker.interfaces import ContentRetriever
|
||||
|
||||
class ContentRetrieverForTesting(ContentRetriever):
|
||||
def __init__(self, digests=None):
|
||||
self.digests = digests or {}
|
||||
|
||||
def add_digest(self, digest, content):
|
||||
self.digests[digest] = content
|
||||
|
||||
def get_manifest_bytes_with_digest(self, digest):
|
||||
return self.digests.get(digest)
|
||||
|
||||
def get_blob_bytes_with_digest(self, digest):
|
||||
return self.digests.get(digest)
|
||||
|
||||
@classmethod
|
||||
def for_config(cls, config_obj, digest, size):
|
||||
config_str = json.dumps(config_obj)
|
||||
padded_string = config_str + ' ' * (size - len(config_str))
|
||||
digests = {}
|
||||
digests[digest] = padded_string
|
||||
return ContentRetrieverForTesting(digests)
|
Reference in a new issue