#!/bin/bash
#---------------------------
# Testing designate daemons
#--------------------------
set -e

DAEMONS=(
	'designate-central'
	'designate-api'
	'designate-mdns'
	'designate-producer'
	'designate-sink'
	'designate-worker'
)

# Set up MySQL database
mysql -u root << EOF
DROP DATABASE IF EXISTS designate;
DROP USER IF EXISTS 'designate'@'localhost';
DROP USER IF EXISTS 'designate'@'%';
CREATE DATABASE designate;
CREATE USER 'designate'@'localhost' IDENTIFIED BY 'changeme';
CREATE USER 'designate'@'%'         IDENTIFIED BY 'changeme';
GRANT ALL PRIVILEGES ON designate.* TO 'designate'@'localhost';
GRANT ALL PRIVILEGES ON designate.* TO 'designate'@'%';
EOF

# Configure database and RabbitMQ connections
crudini --set /etc/designate/designate.conf storage:sqlalchemy connection "mysql+pymysql://designate:changeme@localhost/designate"
crudini --set /etc/designate/designate.conf DEFAULT transport_url "rabbit://guest:guest@localhost/"

# Sync database schema (direct DB, no daemon needed)
designate-manage database sync

# Start daemons and verify they are running
ret=0

for daemon in "${DAEMONS[@]}"; do
	# Reset any failed units from package install before config was ready
	systemctl reset-failed "$daemon" 2>/dev/null || true
	systemctl start "$daemon" || true

	TIMEOUT=30
	while [ "$TIMEOUT" -gt 0 ]; do
		if systemctl is-active --quiet "$daemon"; then
			echo "OK: ${daemon} IS RUNNING"
			break
		fi
		TIMEOUT=$((TIMEOUT - 1))
		sleep 1
	done

	if [ "$TIMEOUT" -le 0 ]; then
		echo "ERROR: ${daemon} IS NOT RUNNING"
		systemctl status --no-pager "$daemon" || true
		ret=1
	fi
done

exit $ret
