From 2a9b3b31aa122608972b01d8a2f0c43c3491ce0a Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 13 Feb 2018 15:44:55 +0100 Subject: [PATCH] use more precise method for waiting for swift Signed-off-by: Robin Appelman --- tests/drone-wait-objectstore.sh | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/tests/drone-wait-objectstore.sh b/tests/drone-wait-objectstore.sh index 14d0b6f1f6..f1d9faad7a 100755 --- a/tests/drone-wait-objectstore.sh +++ b/tests/drone-wait-objectstore.sh @@ -1,10 +1,36 @@ #!/bin/bash +function get_swift_token() { + KEYSTONE_OUT=$(curl -s 'http://dockswift:5000/v2.0/tokens' -H 'Content-Type: application/json' -d '{"auth":{"passwordCredentials":{"username":"swift","password":"swift"},"tenantName":"service"}}') + if (echo "$KEYSTONE_OUT" | grep -q 'object-store') + then + SWIFT_ENDPOINT=$(echo "$KEYSTONE_OUT" | php -r "echo array_values(array_filter(json_decode(file_get_contents('php://stdin'),true)['access']['serviceCatalog'], function(\$endpoint){return \$endpoint['type']==='object-store';}))[0]['endpoints'][0]['publicURL'];") + SWIFT_TOKEN=$(echo "$KEYSTONE_OUT" | php -r "echo json_decode(file_get_contents('php://stdin'),true)['access']['token']['id'];") + return 0 + else + return -1 + fi +} + if [ "$OBJECT_STORE" == "swift" ]; then - echo "waiting for swift" - until curl -I http://dockswift:5000/v3 + echo "waiting for keystone" + until get_swift_token do sleep 2 done - sleep 60 + + echo "waiting for object store at $SWIFT_ENDPOINT" + + until curl -s -H "X-Auth-Token: $SWIFT_TOKEN" "$SWIFT_ENDPOINT" + do + sleep 2 + done + + echo "creating container" + + sleep 2 + + curl curl -s -X PUT -H "X-Auth-Token: $SWIFT_TOKEN" "$SWIFT_ENDPOINT/nextcloud" + + sleep 2 fi