43 lines
1.2 KiB
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}
|