#!/bin/sh

set -e

if ! [ -r /root/oci-openrc ] ; then
	echo "Cannot read /root/oci-openrc: exiting."
	exit 1
fi

. /root/oci-openrc

SERVICE_PROJECT_ID=$(openstack project show services --format value -c id)

echo "-> Raising nova quota (amphora capacity) of the services project"
INSTANCES_NBR=$(openstack quota show ${SERVICE_PROJECT_ID} -c instances --format value 2>/dev/null)
if [ "${INSTANCES_NBR}" -lt 400 ] ; then
	openstack quota set --instances 400 --cores 800 --ram 1024000 ${SERVICE_PROJECT_ID}
else
	echo "Nova quota of the services project already raised"
fi

echo "-> Raising neutron ports quota of the services project"
PORTS_NBR=$(openstack quota show ${SERVICE_PROJECT_ID} -c ports --format value)
if [ "${PORTS_NBR}" -lt 1000 ] ; then
	openstack quota set --ports 1000 ${SERVICE_PROJECT_ID}
else
	echo "Ports quota of the services project already raised"
fi

echo "-> Raising neutron floating IPs and routers quota of the services project"
if openstack quota show ${SERVICE_PROJECT_ID} | grep -q floating_ips ; then
	FLOATINGIPS_NBR=$(openstack quota show ${SERVICE_PROJECT_ID} -c floating_ips --format value)
else
	FLOATINGIPS_NBR=$(openstack quota show ${SERVICE_PROJECT_ID} -c floating-ips --format value)
fi
# Surprisingly, --floating-ips works on all versions of openstackclient.
if [ "${FLOATINGIPS_NBR}" -lt 5000 ] ; then
	openstack quota set --floating-ips 5000 --routers 1000 ${SERVICE_PROJECT_ID}
else
	echo "Floating IPs and routers quota of the services project already raised"
fi

echo "-> Raising the neutron security group quota of the services project"
SECGROUPS_NBR=$(openstack quota show ${SERVICE_PROJECT_ID} -c secgroups --format value)
if [ "${SECGROUPS_NBR}" -lt 100 ] ; then
	openstack quota set --secgroups 100 --secgroup-rules 1000 ${SERVICE_PROJECT_ID}
else
	echo "Security group quota of the services project already raised"
fi
