def run(self): if self.load_exported_image and len( self.workflow.exported_image_sequence) > 0: image_metadata = self.workflow.exported_image_sequence[-1] image = image_metadata.get('path') image_type = image_metadata.get('type') self.log.info('preparing to compress image %s', image) with open(image, 'rb') as image_stream: outfile = self._compress_image_stream(image_stream) else: if self.source_build: self.log.info('skipping, no exported source image to compress') return image = self.workflow.image image_type = IMAGE_TYPE_DOCKER_ARCHIVE self.log.info('fetching image %s from docker', image) with self.tasker.get_image(image) as image_stream: outfile = self._compress_image_stream(image_stream) metadata = get_exported_image_metadata(outfile, image_type) if self.uncompressed_size != 0: metadata['uncompressed_size'] = self.uncompressed_size savings = 1 - metadata['size'] / metadata['uncompressed_size'] self.log.debug( 'uncompressed: %s, compressed: %s, ratio: %.2f %% saved', human_size(metadata['uncompressed_size']), human_size(metadata['size']), 100 * savings) self.workflow.exported_image_sequence.append(metadata) self.log.info('compressed image is available as %s', outfile)
def run(self): if self.load_exported_image and len(self.workflow.exported_image_sequence) > 0: image_metadata = self.workflow.exported_image_sequence[-1] image = image_metadata.get('path') image_type = image_metadata.get('type') self.log.info('preparing to compress image %s', image) with open(image, 'rb') as image_stream: outfile = self._compress_image_stream(image_stream) else: image = self.workflow.image image_type = IMAGE_TYPE_DOCKER_ARCHIVE self.log.info('fetching image %s from docker', image) with self.tasker.d.get_image(image) as image_stream: outfile = self._compress_image_stream(image_stream) metadata = get_exported_image_metadata(outfile, image_type) if self.uncompressed_size != 0: metadata['uncompressed_size'] = self.uncompressed_size savings = 1 - metadata['size'] / metadata['uncompressed_size'] self.log.debug('uncompressed: %s, compressed: %s, ratio: %.2f %% saved', human_size(metadata['uncompressed_size']), human_size(metadata['size']), 100*savings) self.workflow.exported_image_sequence.append(metadata) self.log.info('compressed image is available as %s', outfile)
def run(self): if self.load_exported_image: if len(self.workflow.exported_image_sequence) == 0: raise RuntimeError( 'load_exported_image used, but no exported image') image_metadata = self.workflow.exported_image_sequence[-1] image = image_metadata.get('path') image_type = image_metadata.get('type') self.log.info('preparing to compress image %s', image) with open(image, 'rb') as image_stream: outfile = self._compress_image_stream(image_stream) else: image = self.workflow.image image_type = IMAGE_TYPE_DOCKER_ARCHIVE self.log.info('fetching image %s from docker', image) with self.tasker.d.get_image(image) as image_stream: outfile = self._compress_image_stream(image_stream) metadata = get_exported_image_metadata(outfile, image_type) if self.uncompressed_size != 0: metadata['uncompressed_size'] = self.uncompressed_size savings = 1 - metadata['size'] / float( metadata['uncompressed_size']) self.log.debug( 'uncompressed: %s, compressed: %s, ratio: %.2f %% saved', human_size(metadata['uncompressed_size']), human_size(metadata['size']), 100 * savings) self.workflow.exported_image_sequence.append(metadata) self.log.info('compressed image is available as %s', outfile)
def run(self): if self.load_exported_image: if len(self.workflow.exported_image_sequence) == 0: raise RuntimeError('load_exported_image used, but no exported image') image = self.workflow.exported_image_sequence[-1].get('path') self.log.info('preparing to compress image %s', image) with open(image, 'rb') as image_stream: outfile = self._compress_image_stream(image_stream) else: image = self.workflow.image self.log.info('fetching image %s from docker', image) with self.tasker.d.get_image(image) as image_stream: outfile = self._compress_image_stream(image_stream) metadata = get_exported_image_metadata(outfile) if self.uncompressed_size != 0: metadata['uncompressed_size'] = self.uncompressed_size savings = 1 - metadata['size'] / float(metadata['uncompressed_size']) self.log.debug('uncompressed: %s, compressed: %s, ratio: %.2f %% saved', human_size(metadata['uncompressed_size']), human_size(metadata['size']), 100*savings) self.workflow.exported_image_sequence.append(metadata) self.log.info('compressed image is available as %s', outfile)
def test_human_size(size_input, expected): assert human_size(size_input) == expected