tripleo-heat-templates/extraconfig/tasks/swift-ring-update.yaml

43 lines
1.2 KiB
YAML

heat_template_version: ocata
parameters:
servers:
type: json
SwiftRingPutTempurl:
default: ''
description: A temporary Swift URL to upload rings to.
type: string
resources:
SwiftRingUpdateConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
inputs:
- name: swift_ring_put_tempurl
config: |
#!/bin/sh
TMP_DATA=$(mktemp -d)
function cleanup {
rm -Rf "$TMP_DATA"
}
trap cleanup EXIT
# sanity check in case rings are not consistent within cluster
swift-recon --md5 | grep -q "doesn't match" && exit 1
pushd ${TMP_DATA}
tar -cvzf swift-rings.tar.gz /etc/swift/*.builder /etc/swift/*.ring.gz /etc/swift/backups/*
resp=`curl --insecure --silent -X PUT "${swift_ring_put_tempurl}" --write-out "%{http_code}" --data-binary @swift-rings.tar.gz`
popd
if [ "$resp" != "201" ]; then
exit 1
fi
SwiftRingUpdate:
type: OS::Heat::SoftwareDeployments
properties:
name: SwiftRingUpdate
config: {get_resource: SwiftRingUpdateConfig}
servers: {get_param: servers}
input_values:
swift_ring_put_tempurl: {get_param: SwiftRingPutTempurl}