Skip to content

Commit

Permalink
refactor(tofs): avoid using “salt['config.get']” for formula writers
Browse files Browse the repository at this point in the history
We can hide the call to “salt['config.get']” in the macro by only
asking for a “lookup key” where to lookup the list of “source_files”.

* docs/TOFS_pattern.rst (Example): document the use of the new
  optional “lookup” parameter.

* template/macros.jinja: add a new optional “lookup” parameter.
  Lookup “files override” under the
  “<tplroot>:tofs:sources_files:<lookup key>” and fallback to
  “source_files” parameter.

* template/config/file.sls (template-config-file-file-managed): use
  the new “lookup” parameter.
  • Loading branch information
baby-gnu committed Mar 14, 2019
1 parent 193bba8 commit 60d43e7
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 19 deletions.
10 changes: 4 additions & 6 deletions docs/TOFS_pattern.rst
Original file line number Diff line number Diff line change
Expand Up @@ -314,12 +314,10 @@ We can simplify the ``conf.sls`` with the new ``files_switch`` macro to use in t
file.managed:
- name: {{ ntp.config }}
- template: jinja
- source: {{ files_switch(
salt['config.get'](
tplroot ~ ':tofs:source_files:Configure NTP',
['/etc/ntp.conf.jinja']
)
) }}
- source: {{ files_switch(['/etc/ntp.conf.jinja'],
lookup='Configure NTP'
)
}}
- watch_in:
- service: Enable and start NTP service
- require:
Expand Down
10 changes: 4 additions & 6 deletions template/config/file.sls
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,10 @@ include:
template-config-file-file-managed:
file.managed:
- name: {{ template.config }}
- source: {{ files_switch(
salt['config.get'](
tplroot ~ ':tofs:source_files:template-config-file-file-managed',
['example.tmpl', 'example.tmpl.jinja']
)
) }}
- source: {{ files_switch(['example.tmpl', 'example.tmpl.jinja'],
lookup='template-config-file-file-managed'
)
}}
- mode: 644
- user: root
- group: root
Expand Down
19 changes: 12 additions & 7 deletions template/macros.jinja
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{%- macro files_switch(source_files,
lookup=None,
default_files_switch=['id', 'os_family'],
indent_width=6) %}
{#-
Expand All @@ -8,6 +9,8 @@
Params:
* source_files: ordered list of files to look for
* lookup: key under '<tplroot>:tofs:source_files' to override
list of source files
* default_files_switch: if there's no pillar
'<tplroot>:tofs:files_switch' this is the ordered list of grains to
use as selector switch of the directories under
Expand All @@ -21,11 +24,8 @@
Deploy configuration:
file.managed:
- name: /etc/yyy/zzz.conf
- source: {{ files_switch(
salt['config.get'](
tplroot ~ ':tofs:source_files:Deploy configuration',
['/etc/yyy/zzz.conf', '/etc/yyy/zzz.conf.jinja']
)
- source: {{ files_switch(['/etc/yyy/zzz.conf', '/etc/yyy/zzz.conf.jinja'],
lookup='Deploy configuration'
) }}
- template: jinja
Expand All @@ -52,6 +52,11 @@
tplroot ~ ':tofs:files_switch',
default_files_switch
) %}
{#- Lookup files or fallback to source_files parameter #}
{%- set src_files = salt['config.get'](
tplroot ~ ':tofs:source_files:' ~ lookup,
source_files
) %}
{#- Only add to [''] when supporting older TOFS implementations #}
{%- for path_prefix_ext in [''] %}
{%- set path_prefix_inc_ext = path_prefix ~ path_prefix_ext %}
Expand All @@ -66,7 +71,7 @@
{%- do fsl.append('') %}
{%- endif %}
{%- for fs in fsl %}
{%- for source_file in source_files %}
{%- for src_file in src_files %}
{%- if fs %}
{%- set fs_dir = salt['config.get'](fs, fs) %}
{%- else %}
Expand All @@ -76,7 +81,7 @@
path_prefix_inc_ext,
files_dir,
fs_dir,
source_file.lstrip('/')
src_file.lstrip('/')
]) %}
{{ url | indent(indent_width, true) }}
{%- endfor %}
Expand Down

0 comments on commit 60d43e7

Please sign in to comment.