Fix HostnameMap lookup - replace str_replace with yaql
Using str_replace when looking up hostnames in HostnameMap may return unpredictable results. For example if the map contain: HostnameMap: overcloud-compute-12: cmp-12-london overcloud-compute-123: cmp-123-berlin When we do string replace for a hostname that is not in the map (example: 'overcloud-compute-124') it will match on the substring. The result would be 'cmp-12-london4'. This change replaces the str_replace with a yaql expression that will return the value of they key matching the hostname provided. If the key is not in the map, the hostname is returned. Closes-Bug: #1781560 Change-Id: Ia3a6a3539cd566131cd81b4d755190aa5b61a573
This commit is contained in:
parent
445d45384e
commit
aeb783fdcf
@ -360,9 +360,11 @@ resources:
|
||||
user_data_format: SOFTWARE_CONFIG
|
||||
user_data: {get_resource: UserData}
|
||||
name:
|
||||
str_replace:
|
||||
template: {get_param: Hostname}
|
||||
params: {get_param: HostnameMap}
|
||||
yaql:
|
||||
expression: $.data.hostname_map.get($.data.hostname, $.data.hostname)
|
||||
data:
|
||||
hostname: {get_param: Hostname}
|
||||
hostname_map: {get_param: HostnameMap}
|
||||
software_config_transport: {get_param: SoftwareConfigTransport}
|
||||
metadata:
|
||||
map_merge:
|
||||
|
@ -0,0 +1,10 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixes an issue where Custom Hostnames is in use. Previously it was possible
|
||||
that the ``HostnameMap`` lookup lookup would return unexpected and
|
||||
incorrect results if the hostname (the key) is not in the map. The string
|
||||
replacement mechanism used previously was replaced by a yaql expression
|
||||
that will do exact matching only. If no matching key is in the
|
||||
HostnameMap, the default hostname is returned.
|
||||
`bug 1781560 <https://review.openstack.org/#/c/582475/>`_.
|
Loading…
Reference in New Issue
Block a user