Merge values for same key from multiple services

This should merge multiple and different values for the same key
found in different services.

For example, assuming two services defining a key as follows:

  config_settings:
    mykey:
    - val1

  config_settings:
    mykey:
    - val2
    - val3

the content of the key, as seen by ansible or puppet on the nodes,
will be:

  mykey: ['val1','val2','val3']

Change-Id: I190374e36ad1a2b57611a3a9d0a52ceb1a049aff
This commit is contained in:
Giulio Fidente 2018-04-20 15:28:58 +02:00
parent 1eaa019a1f
commit 8a8ad26435
2 changed files with 25 additions and 1 deletions

View File

@ -365,7 +365,10 @@ outputs:
monitoring_subscriptions: {get_attr: [MonitoringSubscriptionsConfig, value]}
logging_sources: {get_attr: [LoggingSourcesConfig, value]}
logging_groups: {get_attr: [LoggingGroupsConfig, value]}
config_settings: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}}
config_settings:
yaql:
expression: $.data.where($ != null).reduce($1.mergeWith($2), {})
data: {get_attr: [ServiceChain, role_data, config_settings]}
global_config_settings: {get_attr: [GlobalConfigSettings, value]}
service_config_settings: {get_attr: [ServiceConfigSettings, value]}
workflow_tasks: {get_attr: [WorkflowTasks, value]}

View File

@ -0,0 +1,21 @@
---
features:
- |
It is now possible to specify values for any key in `config_settings`
from multiple services; multiple values will be merged using YAQL
mergeWith() function. For example, assuming two services defining
a key as follows:
config_settings:
mykey:
- val1
config_settings:
mykey:
- val2
- val3
the content of the key, as seen by ansible or puppet on the nodes,
will be:
mykey: ['val1','val2','val3']