summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Goddard <mark@stackhpc.com>2019-12-09 11:11:26 +0000
committerMark Goddard <mark@stackhpc.com>2019-12-09 14:21:01 +0000
commit7934cf7d4a18e90be38cb4c40f39b1dfd4f49a54 (patch)
tree44fe65ee7f7acd03c96da7fff018ab39227912a1
parent38191924fe0400415a1d20a17529a9e1003a30de (diff)
downloadkolla-7934cf7d4a18e90be38cb4c40f39b1dfd4f49a54.tar.gz
kolla-7934cf7d4a18e90be38cb4c40f39b1dfd4f49a54.zip
Fix keystone bootstrap error message display
In some situations, Keystone bootstrap can fail, and then unhelpfully fails displaying the error message output by the 'keystone-manage bootstrap' command. This appears to be due to unprintable control characters in the error message which prevent the output of the script from being valid JSON. This change fixes the issue by piping the output through 'cat -v', which replaces unprintable characters with control codes. Change-Id: I82444bc2272311023cc9e92c5a298d1c4c87483b Closes-Bug: #1855701 (cherry picked from commit bcca3fabe305c1e206fdb231c31809ceff2d4774)
-rw-r--r--docker/keystone/keystone/keystone_bootstrap.sh6
-rw-r--r--releasenotes/notes/fix-keystone-bootstrap-unprintable-e01b088ef821fd18.yaml6
2 files changed, 11 insertions, 1 deletions
diff --git a/docker/keystone/keystone/keystone_bootstrap.sh b/docker/keystone/keystone/keystone_bootstrap.sh
index c140e97c7..e37e38352 100644
--- a/docker/keystone/keystone/keystone_bootstrap.sh
+++ b/docker/keystone/keystone/keystone_bootstrap.sh
@@ -1,5 +1,7 @@
#!/bin/bash
+set -o pipefail
+
# NOTE(SamYaple): Kolla needs to wraps `keystone-manage bootstrap` to ensure
# any change is reported correctly for idempotency. This script will exit with
# valid json that can be parsed with information about if the task has failed
@@ -29,7 +31,9 @@ function exit_json {
}
changed="false"
-keystone_bootstrap=$(keystone-manage bootstrap --bootstrap-username "${USERNAME}" --bootstrap-password "${PASSWORD}" --bootstrap-project-name "${PROJECT}" --bootstrap-role-name "${ROLE}" --bootstrap-admin-url "${ADMIN_URL}" --bootstrap-internal-url "${INTERNAL_URL}" --bootstrap-public-url "${PUBLIC_URL}" --bootstrap-service-name "keystone" --bootstrap-region-id "${REGION}" 2>&1)
+# NOTE(mgoddard): pipe through cat -v to remove unprintable control characters
+# which prevent JSON decoding.
+keystone_bootstrap=$(keystone-manage bootstrap --bootstrap-username "${USERNAME}" --bootstrap-password "${PASSWORD}" --bootstrap-project-name "${PROJECT}" --bootstrap-role-name "${ROLE}" --bootstrap-admin-url "${ADMIN_URL}" --bootstrap-internal-url "${INTERNAL_URL}" --bootstrap-public-url "${PUBLIC_URL}" --bootstrap-service-name "keystone" --bootstrap-region-id "${REGION}" 2>&1 | cat -v)
if [[ $? != 0 ]]; then
fail_json "${keystone_bootstrap}"
fi
diff --git a/releasenotes/notes/fix-keystone-bootstrap-unprintable-e01b088ef821fd18.yaml b/releasenotes/notes/fix-keystone-bootstrap-unprintable-e01b088ef821fd18.yaml
new file mode 100644
index 000000000..885e0e760
--- /dev/null
+++ b/releasenotes/notes/fix-keystone-bootstrap-unprintable-e01b088ef821fd18.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Fixes an issue with keystone bootstrap where an error message emitted by
+ the ``keystone-manage bootstrap`` command is hidden. See `bug 1855701
+ <https://bugs.launchpad.net/kolla-ansible/+bug/1855701>`__ for details.