heat-agents/heat-config/bin/heat-config-rebuild-deployed

42 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# This script will create the needed files under /var/run/heat-config so that
# any deployments that have already been queried from the Heat api via
# os-collect-config are not executed.
#
# This is a workaround for:
# https://bugs.launchpad.net/heat-templates/+bug/1513220
# where /var/run/heat-config has already been lost due to system reboot.
set -eu
deployments=$(mktemp)
echo "Reading deployments via os-apply-config to $deployments"
os-apply-config --key deployments --type raw | jq . > $deployments
num_deployments=$(jq length $deployments)
echo "Found $num_deployments deployments."
let "num_deployments -= 1"
if [ -e /var/lib/heat-config/deployed ]; then
deployed_dir=/var/lib/heat-config/deployed
else
deployed_dir=/var/run/heat-config/deployed
fi
mkdir -p $deployed_dir
for idx in $(seq 0 $num_deployments); do
deployment=$(jq .[$idx] $deployments)
deployment_id=$(jq -r .id <<<$deployment)
deployment_group=$(jq -r .group <<<$deployment)
if [ "$deployment_group" = "os-apply-config" -o \
"$deployment_group" = "Heat::Ungrouped" ]; then
echo "Skipping creating deployed file for deployment $deployment_id as it is group:$deployment_group"
continue
else
echo "Creating $deployed_dir/${deployment_id}.json so that deployment will not be re-run"
touch $deployed_dir/${deployment_id}.json
fi
done