#!/bin/bash
#
# lib/cinder_backups/swift
# Configure the swift backup driver

# Enable with:
#
#   CINDER_BACKUP_DRIVER=swift

# Dependencies:
#
# - ``functions`` file
# - ``cinder`` configurations

# Save trace setting
_XTRACE_CINDER_SWIFT=$(set +o | grep xtrace)
set +o xtrace


function configure_cinder_backup_swift {
    # NOTE(mriedem): The default backup driver uses swift and if we're
    # on a subnode we might not know if swift is enabled, but chances are
    # good that it is on the controller so configure the backup service
    # to use it.
    iniset $CINDER_CONF DEFAULT backup_driver "cinder.backup.drivers.swift.SwiftBackupDriver"
    iniset $CINDER_CONF DEFAULT backup_swift_url "$SWIFT_SERVICE_PROTOCOL://$SERVICE_HOST:$SWIFT_DEFAULT_BIND_PORT/v1/AUTH_"
    if is_service_enabled tls-proxy; then
        iniset $CINDER_CONF DEFAULT backup_swift_ca_cert_file $SSL_BUNDLE_FILE
    fi
}

# init_cinder_backup_swift: nothing to do
# cleanup_cinder_backup_swift: nothing to do


# Restore xtrace
$_XTRACE_CINDER_SWIFT

# Local variables:
# mode: shell-script
# End:
