Skip to content

Commit

Permalink
fix(tofs): prepend the config-based source_files to the default
Browse files Browse the repository at this point in the history
* saltstack-formulas/nginx-formula#247 (comment)
  - The main issue is that the `nginx-formula` has dynamic values being
    used as the default `source_files` -- there is no way to provide
    this from the pillar/config in a sensible fashion
  - Prepending to this default (rather than overriding it) resolves this
    problem entirely, without adding excessive entries to the `source`
* Closes #151
  • Loading branch information
myii committed Jul 25, 2019
1 parent d05d444 commit 3483e76
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 11 deletions.
11 changes: 7 additions & 4 deletions docs/TOFS_pattern.rst
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,7 @@ We can simplify the ``conf.sls`` with the new ``files_switch`` macro to use in t
* This uses ``config.get``, searching for ``ntp:tofs:source_files:Configure NTP`` to determine the list of template files to use.
* If this returns a result, the default of ``['/etc/ntp.conf.jinja']`` will be appended to it.
* If this does not yield any results, the default of ``['/etc/ntp.conf.jinja']`` will be used.

In ``libtofs.jinja``, we define this new macro ``files_switch``.
Expand Down Expand Up @@ -426,18 +427,20 @@ The list of ``source_files`` can be given:
tofs:
source_files:
Configure NTP:
- '/etc/ntp.conf.jinja'
- '/etc/ntp.conf_alt.jinja'
Resulting in:

.. code-block:: sls
- source:
- salt://ntp/files/theminion/etc/ntp.conf.jinja
- salt://ntp/files/theminion/etc/ntp.conf_alt.jinja
- salt://ntp/files/Debian/etc/ntp.conf.jinja
- salt://ntp/files/theminion/etc/ntp.conf.jinja
- salt://ntp/files/Debian/etc/ntp.conf_alt.jinja
- salt://ntp/files/default/etc/ntp.conf.jinja
- salt://ntp/files/Debian/etc/ntp.conf.jinja
- salt://ntp/files/default/etc/ntp.conf_alt.jinja
- salt://ntp/files/default/etc/ntp.conf.jinja
Note: This does *not* override the default value.
Rather, the value from the pillar/config is prepended to the default.

2 changes: 2 additions & 0 deletions pillar.example
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ template:
# dirs:
# files: files_alt
# default: default_alt
# The entries under `source_files` are prepended to the default source files
# given for the state
# source_files:
# template-config-file-file-managed:
# - 'example_alt.tmpl'
Expand Down
2 changes: 1 addition & 1 deletion template/config/file.sls
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ include:
template-config-file-file-managed:
file.managed:
- name: {{ template.config }}
- source: {{ files_switch(['example.tmpl', 'example.tmpl.jinja'],
- source: {{ files_switch(['example.tmpl'],
lookup='template-config-file-file-managed'
)
}}
Expand Down
11 changes: 5 additions & 6 deletions template/libtofs.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Params:
* source_files: ordered list of files to look for
* lookup: key under '<tplroot>:tofs:source_files' to override
* lookup: key under '<tplroot>:tofs:source_files' to prepend to the
list of source files
* default_files_switch: if there's no config (e.g. pillar)
'<tplroot>:tofs:files_switch' this is the ordered list of grains to
Expand Down Expand Up @@ -55,14 +55,13 @@
tplroot ~ ':tofs:files_switch',
default_files_switch
) %}
{#- Lookup source_files (v2), files (v1), or fallback to source_files parameter #}
{#- Lookup source_files (v2), files (v1), or fallback to an empty list #}
{%- set src_files = salt['config.get'](
tplroot ~ ':tofs:source_files:' ~ lookup,
salt['config.get'](
tplroot ~ ':tofs:files:' ~ lookup,
source_files
)
salt['config.get'](tplroot ~ ':tofs:files:' ~ lookup, [])
) %}
{#- Append the default source_files #}
{%- set src_files = src_files + source_files %}
{#- Only add to [''] when supporting older TOFS implementations #}
{%- set path_prefix_exts = [''] %}
{%- if v1_path_prefix != '' %}
Expand Down

0 comments on commit 3483e76

Please sign in to comment.