예제 #1
0
파일: main.py 프로젝트: szaher/freezer
def storage_from_dict(backup_args, max_segment_size):
    storage_name = backup_args['storage']
    container = backup_args['container']

    if storage_name == "swift":
        client_manager = backup_args['client_manager']

        storage = swift.SwiftStorage(client_manager, container,
                                     max_segment_size)
    elif storage_name == "s3":
        storage = s3.S3Storage(backup_args['access_key'],
                               backup_args['secret_key'],
                               backup_args['endpoint'], container,
                               max_segment_size)
    elif storage_name == "local":
        storage = local.LocalStorage(storage_path=container,
                                     max_segment_size=max_segment_size)
    elif storage_name == "ssh":
        storage = ssh.SshStorage(
            container,
            backup_args['ssh_key'],
            backup_args['ssh_username'],
            backup_args['ssh_host'],
            int(backup_args.get('ssh_port', freezer_config.DEFAULT_SSH_PORT)),
            max_segment_size=max_segment_size)
    else:
        raise Exception("No storage found for name {0}".format(
            backup_args['storage']))

    return storage
예제 #2
0
def storage_from_dict(backup_args, max_segment_size):
    storage_name = backup_args['storage']
    container = backup_args['container']

    if storage_name == "swift":
        client_manager = backup_args['client_manager']

        storage = swift.SwiftStorage(client_manager, container,
                                     max_segment_size)
    elif storage_name == "s3":
        storage = s3.S3Storage(backup_args['access_key'],
                               backup_args['secret_key'],
                               backup_args['endpoint'], container,
                               max_segment_size)
    elif storage_name == "local":
        storage = local.LocalStorage(storage_path=container,
                                     max_segment_size=max_segment_size)
    elif storage_name == "ssh":
        if backup_args['ssh_password']:
            storage = ssh.SshStorage(container,
                                     backup_args['ssh_username'],
                                     backup_args['ssh_host'],
                                     int(backup_args['ssh_port']),
                                     max_segment_size=max_segment_size,
                                     remote_pwd=backup_args['ssh_password'])
        else:
            storage = ssh.SshStorage(container,
                                     backup_args['ssh_username'],
                                     backup_args['ssh_host'],
                                     int(backup_args['ssh_port']),
                                     max_segment_size=max_segment_size,
                                     ssh_key_path=backup_args['ssh_key'])
    elif storage_name in ["ftp", "ftps"]:
        args = [
            container, backup_args['ftp_password'],
            backup_args['ftp_username'], backup_args['ftp_host'],
            int(backup_args['ftp_port']), max_segment_size
        ]
        if storage_name == 'ftps':
            args.append(backup_args['ftp_keyfile'])
            args.append(backup_args['ftp_certfile'])
        LOG.info('args=%s' % args)
        storage = importutils.import_object(
            "freezer.storage.ftp.{0}Storage".format(storage_name.capitalize()),
            *args)
    else:
        raise Exception("No storage found for name {0}".format(
            backup_args['storage']))

    return storage