[salt.sh] Armband extra repo for forked reclass
[fuel.git] / mcp / patches / 0014-reclass.storage.node-Merge-duplicate-nodes.patch
1 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2 : Copyright (c) 2018 Mirantis Inc., Enea AB and others.
3 :
4 : All rights reserved. This program and the accompanying materials
5 : are made available under the terms of the Apache License, Version 2.0
6 : which accompanies this distribution, and is available at
7 : http://www.apache.org/licenses/LICENSE-2.0
8 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
9 From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
10 Date: Sun, 03 Dec 2017 22:03:01 +0200
11 Subject: [PATCH] reclass.storage.node: Merge duplicate nodes
12
13 Reclass does not support duplicate nodes in top pillar, so merge all
14 nodes with the same name into a single node, inheriting classes from
15 all instances.
16
17 This allows using multiple "system.reclass.storage.system.*_cluster"
18 classes for the same node, based on re-using the name (hostname).
19
20 NOTE: defaults.merge module does not merge lists (e.g. for classes),
21 so handle that case separately.
22
23 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
24 ---
25
26 diff --git a/reclass/storage/node.sls b/reclass/storage/node.sls
27 --- a/reclass/storage/node.sls
28 +++ b/reclass/storage/node.sls
29 @@ -1,7 +1,15 @@
30  {%- from "reclass/map.jinja" import storage with context %}
31  {%- if storage.enabled %}
32
33 +{%- set storage_by_name = {} %}
34  {%- for node_name, node in storage.get('node', {}).iteritems() %}
35 +{%- set new_node_name = node.get('name', node_name) %}
36 +{%- set new_node = storage_by_name.get(new_node_name, {'classes': []}) %}
37 +{%- do salt['defaults.merge'](node, {'classes': new_node.classes + node.classes}) %}
38 +{%- do salt['defaults.merge'](storage_by_name, {new_node_name: node}) %}
39 +{%- endfor %}
40 +
41 +{%- for node_name, node in storage_by_name.iteritems() %}
42
43  {%- if node.repeat is defined %}
44