Default bootstrap_server_id

When blacklisting all servers from the primary role, the yaql expression
to get the bootstrap_server_id value fails as it tries to index the list
at the 0'th element. In this case, default the bootstrap_server_id value
to a constant string which won't match any actual server id's.

Change-Id: Ibb26245156675f64709bab075875ce4b498b4db6
Closes-Bug: #1785665
(cherry picked from commit d4d15d0407)
This commit is contained in:
James Slagle 2018-08-06 12:23:28 -04:00 committed by Bogdan Dobrelya
parent 9cfc081e94
commit 87178906ec
2 changed files with 10 additions and 1 deletions

View File

@ -231,7 +231,11 @@ resources:
properties:
value:
yaql:
expression: $.data.items().orderBy($[0]).first()[1]
# Use a constant string of "bootstrap_server_id" when there are no
# servers in the primary role, such as in the case when all
# Controllers are blacklisted. No server id's will match the string
# which is what we want when all are blacklisted.
expression: switch($.data = {} => "no_bootstrap_server", $.data != {} => $.data.items().orderBy($[0]).first()[1])
data: {get_param: [servers, {{primary_role_name}}]}
# Artifacts config and HostPrepConfig is done on all roles, not only

View File

@ -0,0 +1,5 @@
---
fixes:
- Previously, when blacklisting all servers of the primary role, the stack
would fail since the bootstrap server id was empty. The value is now
defaulted in case all primary role servers are blacklisted.