diff --git a/endpoints/registry.py b/endpoints/registry.py index 5d71a1f81..d4fadce53 100644 --- a/endpoints/registry.py +++ b/endpoints/registry.py @@ -114,7 +114,7 @@ def put_image_layer(namespace, repository, image_id): # compute checksums csums = [] sr = SocketReader(input_stream) - tmp, store_hndlr = storage.temp_store_handler() + tmp, store_hndlr = store.temp_store_handler() sr.add_handler(store_hndlr) h, sum_hndlr = checksums.simple_checksum_handler(json_data) sr.add_handler(sum_hndlr) diff --git a/storage/basestorage.py b/storage/basestorage.py index 283fde227..f38b39790 100644 --- a/storage/basestorage.py +++ b/storage/basestorage.py @@ -1,3 +1,6 @@ +import tempfile + + class Storage(object): """Storage is organized as follow: @@ -13,6 +16,18 @@ class Storage(object): # Set the IO buffer to 64kB buffer_size = 64 * 1024 + @staticmethod + def temp_store_handler(): + tmpf = tempfile.TemporaryFile() + + def fn(buf): + try: + tmpf.write(buf) + except IOError: + pass + + return tmpf, fn + #FIXME(samalba): Move all path resolver in each module (out of the base) def images_list_path(self, namespace, repository): return '{0}/{1}/{2}/_images_list'.format(self.repositories,