示例#1
0
def _write_derived_image_to_storage(verb, derived_image, queue_file):
    """ Read from the generated stream and write it back to the storage engine. This method runs in a
      separate process.
  """
    def handle_exception(ex):
        logger.debug('Exception when building %s derived image %s: %s', verb,
                     derived_image, ex)

        with database.UseThenDisconnect(app.config):
            registry_model.delete_derived_image(derived_image)

    queue_file.add_exception_handler(handle_exception)

    # Re-Initialize the storage engine because some may not respond well to forking (e.g. S3)
    store = Storage(app,
                    metric_queue,
                    config_provider=config_provider,
                    ip_resolver=ip_resolver)

    try:
        store.stream_write(derived_image.blob.placements,
                           derived_image.blob.storage_path, queue_file)
    except IOError as ex:
        logger.debug('Exception when writing %s derived image %s: %s', verb,
                     derived_image, ex)

        with database.UseThenDisconnect(app.config):
            registry_model.delete_derived_image(derived_image)

    queue_file.close()
示例#2
0
    def handle_exception(ex):
        logger.debug(
            "Exception when building %s derived image %s (%s/%s:%s): %s",
            verb,
            derived_image,
            namespace,
            repository,
            tag_name,
            ex,
        )

        with database.UseThenDisconnect(app.config):
            registry_model.delete_derived_image(derived_image)
示例#3
0
    def handle_exception(ex):
        logger.debug('Exception when building %s derived image %s: %s', verb,
                     derived_image, ex)

        with database.UseThenDisconnect(app.config):
            registry_model.delete_derived_image(derived_image)