# ceph.sh - DevStack extras script to install Ceph

if is_service_enabled ceph; then
    if [[ "$1" == "source" ]]; then
        # Initial source
        source $TOP_DIR/lib/ceph
    elif [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
        echo_summary "Installing Ceph"
        check_os_support_ceph
        if [ "$REMOTE_CEPH" = "False" ]; then
            install_ceph
            echo_summary "Configuring Ceph"
            configure_ceph
            # NOTE (leseb): Do everything here because we need to have Ceph started before the main
            # OpenStack components. Ceph OSD must start here otherwise we can't upload any images.
            echo_summary "Initializing Ceph"
            init_ceph
            start_ceph
        else
            install_ceph_remote
        fi
    elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
        if is_service_enabled glance; then
            echo_summary "Configuring Glance for Ceph"
            configure_ceph_glance
        fi
        if is_service_enabled nova; then
            echo_summary "Configuring Nova for Ceph"
            configure_ceph_nova
        fi
        if is_service_enabled cinder; then
            echo_summary "Configuring Cinder for Ceph"
            configure_ceph_cinder
        fi
        if is_service_enabled cinder || is_service_enabled nova; then
            # NOTE (leseb): the part below is a requirement to attach Ceph block devices
            echo_summary "Configuring libvirt secret"
            import_libvirt_secret_ceph
        fi

        if [ "$REMOTE_CEPH" = "False" ]; then
            if is_service_enabled glance; then
                echo_summary "Configuring Glance for Ceph"
                configure_ceph_embedded_glance
            fi
            if is_service_enabled nova; then
                echo_summary "Configuring Nova for Ceph"
                configure_ceph_embedded_nova
            fi
            if is_service_enabled cinder; then
                echo_summary "Configuring Cinder for Ceph"
                configure_ceph_embedded_cinder
            fi
        fi
    fi

    if [[ "$1" == "unstack" ]]; then
        if [ "$REMOTE_CEPH" = "True" ]; then
            cleanup_ceph_remote
        else
            cleanup_ceph_embedded
            stop_ceph
        fi
        cleanup_ceph_general
    fi

    if [[ "$1" == "clean" ]]; then
        if [ "$REMOTE_CEPH" = "True" ]; then
            cleanup_ceph_remote
        else
            cleanup_ceph_embedded
        fi
        cleanup_ceph_general
    fi
fi