)]}'
{"ansible/roles/keystone/tasks/bootstrap_service.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"87eb594e3470c0d1449c6c88ef905932fa2e86bd","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  delegate_to: \"{{ groups[\u0027keystone\u0027][0] }}\""},{"line_number":54,"context_line":"  when:"},{"line_number":55,"context_line":"    - keystone_token_provider \u003d\u003d \u0027fernet\u0027"},{"line_number":56,"context_line":"    - container_facts[\u0027keystone_fernet\u0027] is not defined"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3fa7e38b_358eec79","line":56,"range":{"start_line":56,"start_character":6,"end_line":56,"end_character":55},"updated":"2020-02-14 17:13:12.000000000","message":"This will cause the bootstrap to run if keystone fernet does not exist on this host. What we want is for the bootstrap to run if keystone fernet does not exist on any host.\n\nI\u0027m not sure what the best way is to do that. Maybe check that groups[\u0027keystone_fernet_bootstrap\u0027] is the same size as ansible_play_batch?","commit_id":"abb997c67320c571f643c21f3a38bbe91c5d3d17"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ef7c6952ad2013b7d7ae25576756479806d971dc","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  delegate_to: \"{{ groups[\u0027keystone\u0027][0] }}\""},{"line_number":54,"context_line":"  when:"},{"line_number":55,"context_line":"    - keystone_token_provider \u003d\u003d \u0027fernet\u0027"},{"line_number":56,"context_line":"    - (groups[\u0027keystone_fernet_bootstrap\u0027] | default([]) | length) \u003d\u003d (ansible_play_batch | length)"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"bf51134e_54bb0f0d","line":56,"range":{"start_line":56,"start_character":71,"end_line":56,"end_character":89},"updated":"2020-07-01 10:43:19.000000000","message":"ansible_play_hosts_all?","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"541feeeec36ce235764d77f03dbc1b67f1b39635","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  delegate_to: \"{{ groups[\u0027keystone\u0027][0] }}\""},{"line_number":54,"context_line":"  when:"},{"line_number":55,"context_line":"    - keystone_token_provider \u003d\u003d \u0027fernet\u0027"},{"line_number":56,"context_line":"    - (groups[\u0027keystone_fernet_bootstrap\u0027] | default([]) | length) \u003d\u003d (ansible_play_batch | length)"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"bf51134e_962a997b","line":56,"range":{"start_line":56,"start_character":71,"end_line":56,"end_character":89},"in_reply_to":"bf51134e_54bb0f0d","updated":"2020-07-06 10:26:31.000000000","message":"hmm, group_by isn\u0027t going to play nicely if you use --limit or kolla_serial. I suppose ansible_play_hosts_all might at least prevent it running a second time when used with kolla_serial.","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c45456b63d4e53dcccb5328d508ac57aefc2bb81","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  delegate_to: \"{{ groups[\u0027keystone\u0027][0] }}\""},{"line_number":72,"context_line":"  when:"},{"line_number":73,"context_line":"    - keystone_token_provider \u003d\u003d \u0027fernet\u0027"},{"line_number":74,"context_line":"    - (groups[\u0027keystone_fernet_bootstrap\u0027] | default([]) | length) \u003d\u003d (ansible_play_hosts_all | length)"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"9f560f44_691983d5","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":103},"updated":"2020-08-24 09:41:54.000000000","message":"If we merge https://review.opendev.org/#/c/746148/, then this condition could be reduced to:\n\ngroups[\u0027keystone_fernet_bootstrap\u0027] | default([]) | length \u003e 0.","commit_id":"6d403ba57d3f12ee0d471da189c275cceb29af2d"}],"ansible/roles/keystone/tasks/config.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"541feeeec36ce235764d77f03dbc1b67f1b39635","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    dest: \"{{ node_config_directory }}/keystone/keystone-startup.sh\""},{"line_number":81,"context_line":"    mode: \"0660\""},{"line_number":82,"context_line":"  become: true"},{"line_number":83,"context_line":"  ignore_errors: \"{{ ansible_check_mode }}\""},{"line_number":84,"context_line":"  when:"},{"line_number":85,"context_line":"    - inventory_hostname in groups[keystone.group]"},{"line_number":86,"context_line":"    - keystone.enabled | bool"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"bf51134e_363bcdd1","line":83,"range":{"start_line":83,"start_character":2,"end_line":83,"end_character":15},"updated":"2020-07-06 10:26:31.000000000","message":"Why do we need this?","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"63ec1a1e0a435a850923feae4dec443f6bfcb3b4","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    dest: \"{{ node_config_directory }}/keystone/keystone-startup.sh\""},{"line_number":81,"context_line":"    mode: \"0660\""},{"line_number":82,"context_line":"  become: true"},{"line_number":83,"context_line":"  ignore_errors: \"{{ ansible_check_mode }}\""},{"line_number":84,"context_line":"  when:"},{"line_number":85,"context_line":"    - inventory_hostname in groups[keystone.group]"},{"line_number":86,"context_line":"    - keystone.enabled | bool"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"9f560f44_23195f79","line":83,"range":{"start_line":83,"start_character":2,"end_line":83,"end_character":15},"in_reply_to":"9f560f44_db44da49","updated":"2020-08-24 18:28:38.000000000","message":"DROP IT","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"cb230201b2753fc37a97b4f9afc4134aa78cfeb3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    dest: \"{{ node_config_directory }}/keystone/keystone-startup.sh\""},{"line_number":81,"context_line":"    mode: \"0660\""},{"line_number":82,"context_line":"  become: true"},{"line_number":83,"context_line":"  ignore_errors: \"{{ ansible_check_mode }}\""},{"line_number":84,"context_line":"  when:"},{"line_number":85,"context_line":"    - inventory_hostname in groups[keystone.group]"},{"line_number":86,"context_line":"    - keystone.enabled | bool"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"9f560f44_db44da49","line":83,"range":{"start_line":83,"start_character":2,"end_line":83,"end_character":15},"in_reply_to":"bf51134e_363bcdd1","updated":"2020-08-24 18:26:01.000000000","message":"Have no clue! ;-)","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"}],"ansible/roles/keystone/templates/fernet-node-sync.sh.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"87eb594e3470c0d1449c6c88ef905932fa2e86bd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"set -o errexit"},{"line_number":4,"context_line":"set -o pipefail"},{"line_number":5,"context_line":""}],"source_content_type":"text/x-jinja2","patch_set":1,"id":"3fa7e38b_d5a3d89a","line":2,"updated":"2020-02-14 17:13:12.000000000","message":"This script could use a comment to explain what it does. I think that what it is doing now is blocking startup of the container until tokens are populated. Possibly it should also block until they are not stale.","commit_id":"abb997c67320c571f643c21f3a38bbe91c5d3d17"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"87eb594e3470c0d1449c6c88ef905932fa2e86bd","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Get data on the fernet tokens"},{"line_number":7,"context_line":"# NOTE(mnasiadka): Check for existence of at least two tokens (should exist after bootstrap)"},{"line_number":8,"context_line":"TOKEN_CHECK\u003d$(/usr/bin/python{{ distro_python_version }} /usr/bin/fetch_fernet_tokens.py -t {{ fernet_token_expiry }} -n 2)"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Ensure tokens are populated"},{"line_number":11,"context_line":"n\u003d0"}],"source_content_type":"text/x-jinja2","patch_set":1,"id":"3fa7e38b_d5f998c5","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":123},"updated":"2020-02-14 17:13:12.000000000","message":"Also need to move this after the loop.","commit_id":"abb997c67320c571f643c21f3a38bbe91c5d3d17"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"87eb594e3470c0d1449c6c88ef905932fa2e86bd","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Ensure tokens are populated"},{"line_number":11,"context_line":"n\u003d0"},{"line_number":12,"context_line":"while /usr/bin/python{{ distro_python_version }} /usr/bin/fetch_fernet_tokens.py -t 86400 -n 1 | grep -q \u0027\"populated\": false\u0027; do"},{"line_number":13,"context_line":"    if [ $n -lt 10 ]; then"},{"line_number":14,"context_line":"        n\u003d$(( n + 1 ))"},{"line_number":15,"context_line":"        echo \"ERROR: Fernet tokens have not been populated, rechecking in 1 minute\""}],"source_content_type":"text/x-jinja2","patch_set":1,"id":"3fa7e38b_9529e03a","line":12,"range":{"start_line":12,"start_character":84,"end_line":12,"end_character":89},"updated":"2020-02-14 17:13:12.000000000","message":"fernet_token_expiry","commit_id":"abb997c67320c571f643c21f3a38bbe91c5d3d17"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"87eb594e3470c0d1449c6c88ef905932fa2e86bd","unresolved":false,"context_lines":[{"line_number":25,"context_line":"# Ensure the primary token exists and is not stale"},{"line_number":26,"context_line":"if $(echo \"$TOKEN_CHECK\" | grep -q \u0027\"update_required\": false\u0027); then"},{"line_number":27,"context_line":"    exit 0;"},{"line_number":28,"context_line":"fi"}],"source_content_type":"text/x-jinja2","patch_set":1,"id":"3fa7e38b_7593044e","line":28,"updated":"2020-02-14 17:13:12.000000000","message":"This check is a bit silly. If \u003ccondidition\u003e exit 0 else exit 0.\n\nWhat should we do if an update is required? Should the above loop also wait for that to be false?","commit_id":"abb997c67320c571f643c21f3a38bbe91c5d3d17"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ee150ffb15125a3de26b38abd3e23f884e60b383","unresolved":false,"context_lines":[{"line_number":3,"context_line":"set -o errexit"},{"line_number":4,"context_line":"set -o pipefail"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Ensure tokens are populated, check for 0 key which should always exist"},{"line_number":7,"context_line":"n\u003d0"},{"line_number":8,"context_line":"while [ ! -f /etc/keystone/fernet-keys/0 ]; do"},{"line_number":9,"context_line":"    if [ $n -lt 10 ]; then"}],"source_content_type":"text/x-jinja2","patch_set":14,"id":"bf51134e_b33f28d5","line":6,"updated":"2020-06-15 17:40:28.000000000","message":"where did rsync go?","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"b6ad05377070728e3fa719908c324c04a6ad9d51","unresolved":false,"context_lines":[{"line_number":3,"context_line":"set -o errexit"},{"line_number":4,"context_line":"set -o pipefail"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Ensure tokens are populated, check for 0 key which should always exist"},{"line_number":7,"context_line":"n\u003d0"},{"line_number":8,"context_line":"while [ ! -f /etc/keystone/fernet-keys/0 ]; do"},{"line_number":9,"context_line":"    if [ $n -lt 10 ]; then"}],"source_content_type":"text/x-jinja2","patch_set":14,"id":"bf51134e_27d64429","line":6,"in_reply_to":"bf51134e_4c127fb6","updated":"2020-06-30 10:14:28.000000000","message":"Yup, true. Got confused because this change does not touch it.","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"6cd70639a721183275072355bcc5c2183d2a4fa8","unresolved":false,"context_lines":[{"line_number":3,"context_line":"set -o errexit"},{"line_number":4,"context_line":"set -o pipefail"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Ensure tokens are populated, check for 0 key which should always exist"},{"line_number":7,"context_line":"n\u003d0"},{"line_number":8,"context_line":"while [ ! -f /etc/keystone/fernet-keys/0 ]; do"},{"line_number":9,"context_line":"    if [ $n -lt 10 ]; then"}],"source_content_type":"text/x-jinja2","patch_set":14,"id":"bf51134e_4c127fb6","line":6,"in_reply_to":"bf51134e_b33f28d5","updated":"2020-06-30 09:35:16.000000000","message":"Hmm, it looks like distribute_fernet.yml handles that now","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"6cd70639a721183275072355bcc5c2183d2a4fa8","unresolved":false,"context_lines":[{"line_number":8,"context_line":"while [ ! -f /etc/keystone/fernet-keys/0 ]; do"},{"line_number":9,"context_line":"    if [ $n -lt 10 ]; then"},{"line_number":10,"context_line":"        n\u003d$(( n + 1 ))"},{"line_number":11,"context_line":"        echo \"ERROR: Fernet tokens have not been populated, rechecking in 1 minute\""},{"line_number":12,"context_line":"        echo \"DEBUG: /etc/keystone/fernet-keys contents:\""},{"line_number":13,"context_line":"        ls -l /etc/keystone/fernet-keys/"},{"line_number":14,"context_line":"        sleep 60"}],"source_content_type":"text/x-jinja2","patch_set":14,"id":"bf51134e_0cd9a721","line":11,"range":{"start_line":11,"start_character":12,"end_line":11,"end_character":20},"updated":"2020-06-30 09:35:16.000000000","message":"Should this be a `WARNING` and `CRITICAL` below an `ERROR`?","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"b6ad05377070728e3fa719908c324c04a6ad9d51","unresolved":false,"context_lines":[{"line_number":8,"context_line":"while [ ! -f /etc/keystone/fernet-keys/0 ]; do"},{"line_number":9,"context_line":"    if [ $n -lt 10 ]; then"},{"line_number":10,"context_line":"        n\u003d$(( n + 1 ))"},{"line_number":11,"context_line":"        echo \"ERROR: Fernet tokens have not been populated, rechecking in 1 minute\""},{"line_number":12,"context_line":"        echo \"DEBUG: /etc/keystone/fernet-keys contents:\""},{"line_number":13,"context_line":"        ls -l /etc/keystone/fernet-keys/"},{"line_number":14,"context_line":"        sleep 60"}],"source_content_type":"text/x-jinja2","patch_set":14,"id":"bf51134e_a71c1414","line":11,"range":{"start_line":11,"start_character":12,"end_line":11,"end_character":20},"in_reply_to":"bf51134e_0cd9a721","updated":"2020-06-30 10:14:28.000000000","message":"This could be WARNING, but below is CRITICAL (it exits).","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"}],"ansible/roles/keystone/templates/keystone-startup.sh.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"541feeeec36ce235764d77f03dbc1b67f1b39635","unresolved":false,"context_lines":[{"line_number":14,"context_line":"        echo \"ERROR: Fernet tokens have not been populated, rechecking in 1 minute\""},{"line_number":15,"context_line":"        echo \"DEBUG: ${TOKEN_DIR} contents:\""},{"line_number":16,"context_line":"        ls -l ${TOKEN_DIR}"},{"line_number":17,"context_line":"        sleep 60"},{"line_number":18,"context_line":"    else"},{"line_number":19,"context_line":"        echo \"CRITICAL: Waited for 10 minutes - failing\""},{"line_number":20,"context_line":"        exit 1"}],"source_content_type":"text/x-jinja2","patch_set":14,"id":"bf51134e_56ebe1da","line":17,"range":{"start_line":17,"start_character":14,"end_line":17,"end_character":16},"updated":"2020-07-06 10:26:31.000000000","message":"This seems excessively long. 5 seconds with more attempts?","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"541feeeec36ce235764d77f03dbc1b67f1b39635","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    exit 1"},{"line_number":33,"context_line":"fi"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"/usr/sbin/{{ keystone_cmd }} $@"}],"source_content_type":"text/x-jinja2","patch_set":14,"id":"bf51134e_9678d98f","line":35,"updated":"2020-07-06 10:26:31.000000000","message":"exec?","commit_id":"b5a536ad98154bd11d3b8f1ae631e223f44d1293"}]}
