#!/bin/bash

if [[ -z $OS_AUTH_URL ]]; then
  echo "This script must have proper environment variables exported."
  echo "Please check if you have sourced senlinrc file or openrc file if "
  echo "you are using devstack."
  exit -1
fi

if [ $OS_USERNAME != 'admin' ]; then
  echo "This script has to be executed as an 'admin' user."
  echo "Please set environment variable OS_USERNAME to 'admin'."
  exit -1
fi

if [ $# -ne 2 ]; then
  echo "Usage: `basename $0` <HOST_IP> <SERVICE_PASSWORD>"
  exit -1
fi

PORT=8778
HOST=$1 # Put your host IP here
SVC_PASSWD=$2
OS_REGION_NAME=${OS_REGION_NAME:-RegionOne}
OS_IDENTITY_API_VERSION=${OS_IDENTITY_API_VERSION:-3}

SERVICE_ID=$(openstack service show senlin -f value -cid 2>/dev/null)
if [[ -z $SERVICE_ID ]]; then
  SERVICE_ID=$(openstack service create \
    --name senlin \
    --description 'Senlin Clustering Service V1' \
    -f value -cid \
    clustering)
fi

if [[ -z $SERVICE_ID ]]; then
  exit
fi

if [ "$OS_IDENTITY_API_VERSION" = "3" ]; then
    openstack endpoint create senlin admin "http://$HOST:$PORT" \
      --region $OS_REGION_NAME
    openstack endpoint create senlin public "http://$HOST:$PORT" \
      --region $OS_REGION_NAME
    openstack endpoint create senlin internal "http://$HOST:$PORT" \
      --region $OS_REGION_NAME
else
    openstack endpoint create \
      --adminurl "http://$HOST:$PORT" \
      --publicurl "http://$HOST:$PORT" \
      --internalurl "http://$HOST:$PORT" \
      --region $OS_REGION_NAME \
      senlin
fi

openstack user create \
  --password "$SVC_PASSWD" \
  --project service \
  --email senlin@localhost \
  senlin

openstack role add \
  admin \
  --user senlin \
  --project service

# make sure 'senlin' has 'service' role in 'demo' project
openstack role add \
  service \
  --user senlin \
  --project demo
