#!/usr/bin/env bash

# **swift.sh**

# Test swift via the ``swift`` command line from ``python-swiftclient`

echo "*********************************************************************"
echo "Begin DevStack Exercise: $0"
echo "*********************************************************************"

# This script exits on an error so that errors don't compound and you see
# only the first error that occurred.
set -o errexit

# Print the commands being run so that we can see the command that triggers
# an error.  It is also useful for following allowing as the install occurs.
set -o xtrace


# Settings
# ========

# Keep track of the current directory
EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)

# Import common functions
source $TOP_DIR/functions

# Import configuration
source $TOP_DIR/openrc

# Import exercise configuration
source $TOP_DIR/exerciserc

# If swift is not enabled we exit with exitcode 55 which mean
# exercise is skipped.
is_service_enabled s-proxy || exit 55

# Container name
CONTAINER=ex-swift


# Testing Swift
# =============

# Check if we have to swift via keystone
swift stat || die $LINENO "Failure geting status"

# We start by creating a test container
swift post $CONTAINER || die $LINENO "Failure creating container $CONTAINER"

# add some files into it.
swift upload $CONTAINER /etc/issue || die $LINENO "Failure uploading file to container $CONTAINER"

# list them
swift list $CONTAINER || die $LINENO "Failure listing contents of container $CONTAINER"

# And we may want to delete them now that we have tested that
# everything works.
swift delete $CONTAINER || die $LINENO "Failure deleting container $CONTAINER"

set +o xtrace
echo "*********************************************************************"
echo "SUCCESS: End DevStack Exercise: $0"
echo "*********************************************************************"
