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
This commit is contained in:
James Slagle 2018-08-06 12:23:28 -04:00
parent 5789a9694a
commit d4d15d0407
2 changed files with 10 additions and 1 deletions

View File

@ -269,7 +269,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.