Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
systemd-formula
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
salt
systemd-formula
Commits
d633daff
Commit
d633daff
authored
5 years ago
by
Imran Iqbal
Browse files
Options
Downloads
Patches
Plain Diff
style(libtofs.jinja): use Black-inspired Jinja formatting [skip ci]
* Automated using
https://github.com/myii/ssf-formula/pull/237
parent
41135eaf
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
systemd/libtofs.jinja
+82
-79
82 additions, 79 deletions
systemd/libtofs.jinja
with
82 additions
and
79 deletions
systemd/libtofs.jinja
+
82
−
79
View file @
d633daff
{%- macro files_switch(source_files,
{%- macro files_switch(
source_files,
lookup=None,
lookup=None,
default_files_switch=[
'
id
'
,
'
os_family
'
],
default_files_switch=[
"
id
"
,
"
os_family
"
],
indent_width=6,
indent_width=6,
use_subpath=False) %}
use_subpath=False
) %}
{#-
{#-
Returns a valid value for the "source" parameter of a "file.managed"
Returns a valid value for the "source" parameter of a "file.managed"
state function. This makes easier the usage of the Template Override and
state function. This makes easier the usage of the Template Override and
Files Switch (TOFS) pattern.
Files Switch (TOFS) pattern.
Params:
Params:
* source_files: ordered list of files to look for
* source_files: ordered list of files to look for
* lookup: key under
'
<tplroot>:tofs:source_files
'
to prepend to the
* lookup: key under
"
<tplroot>:tofs:source_files
"
to prepend to the
list of source files
list of source files
* default_files_switch: if there's no config (e.g. pillar)
* default_files_switch: if there's no config (e.g. pillar)
'
<tplroot>:tofs:files_switch
'
this is the ordered list of grains to
"
<tplroot>:tofs:files_switch
"
this is the ordered list of grains to
use as selector switch of the directories under
use as selector switch of the directories under
"<path_prefix>/files"
"<path_prefix>/files"
* indent_width: indentation of the result value to conform to YAML
* indent_width: indentation of the result value to conform to YAML
* use_subpath: defaults to `False` but if set, lookup the source file
* use_subpath: defaults to `False` but if set, lookup the source file
recursively from the current state directory up to `tplroot`
recursively from the current state directory up to `tplroot`
Example (based on a `tplroot` of `xxx`):
Example (based on a `tplroot` of `xxx`):
If we have a state:
If we have a state:
Deploy configuration:
Deploy configuration:
file.managed:
file.managed:
- name: /etc/yyy/zzz.conf
- name: /etc/yyy/zzz.conf
- source: {{ files_switch(['/etc/yyy/zzz.conf', '/etc/yyy/zzz.conf.jinja'],
- source: {{ files_switch(
lookup='Deploy configuration'
["/etc/yyy/zzz.conf", "/etc/yyy/zzz.conf.jinja"],
lookup="Deploy configuration",
) }}
) }}
- template: jinja
- template: jinja
In a minion with id=theminion and os_family=RedHat, it's going to be
In a minion with id=theminion and os_family=RedHat, it's going to be
rendered as:
rendered as:
Deploy configuration:
Deploy configuration:
file.managed:
file.managed:
- name: /etc/yyy/zzz.conf
- name: /etc/yyy/zzz.conf
...
@@ -48,48 +45,49 @@
...
@@ -48,48 +45,49 @@
- template: jinja
- template: jinja
#}
#}
{#- Get the `tplroot` from `tpldir` #}
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set tplroot = tpldir.split("/")[0] %}
{%- set path_prefix = salt['config.get'](tplroot ~ ':tofs:path_prefix', tplroot) %}
{%- set path_prefix = salt["config.get"](tplroot ~ ":tofs:path_prefix", tplroot) %}
{%- set files_dir = salt['config.get'](tplroot ~ ':tofs:dirs:files', 'files') %}
{%- set files_dir = salt["config.get"](tplroot ~ ":tofs:dirs:files", "files") %}
{%- set files_switch_list = salt['config.get'](
{%- set files_switch_list = salt["config.get"](
tplroot ~ ':tofs:files_switch',
tplroot ~ ":tofs:files_switch", default_files_switch
default_files_switch
) %}
) %}
{#- Lookup source_files (v2), files (v1), or fallback to an empty list #}
{#- Lookup source_files (v2), files (v1), or fallback to an empty list #}
{%- set src_files = salt[
'
config.get
'
](
{%-
set src_files = salt[
"
config.get
"
](
tplroot ~
'
:tofs:source_files:
'
~ lookup,
tplroot ~
"
:tofs:source_files:
"
~ lookup,
salt[
'
config.get
'
](tplroot ~
'
:tofs:files:
'
~ lookup, [])
salt[
"
config.get
"
](tplroot ~
"
:tofs:files:
"
~ lookup, [])
,
) %}
) %}
{#- Append the default source_files #}
{#- Append the default source_files #}
{%- set src_files = src_files + source_files %}
{%- set src_files = src_files + source_files %}
{#- Only add to [
''
] when supporting older TOFS implementations #}
{#-
Only add to [
""
] when supporting older TOFS implementations #}
{%- set path_prefix_exts = [
''
] %}
{%-
set path_prefix_exts = [
""
] %}
{%- if use_subpath and tplroot != tpldir %}
{%- if use_subpath and tplroot != tpldir %}
{#- Walk directory tree to find {{ files_dir }} #}
{#- Walk directory tree to find {{ files_dir }} #}
{%-
set subpath_parts = tpldir.lstrip(tplroot).lstrip(
'/'
).split(
'/'
) %}
{%-
set subpath_parts = tpldir.lstrip(tplroot).lstrip(
"/"
).split(
"/"
) %}
{%- for path in subpath_parts %}
{%- for path in subpath_parts %}
{%-
set subpath = subpath_parts[0
:
loop.index] | join(
'/'
) %}
{%-
set subpath = subpath_parts[0
:
loop.index] | join(
"/"
) %}
{%-
do path_prefix_exts.append(
'/'
~ subpath) %}
{%-
do path_prefix_exts.append(
"/"
~ subpath) %}
{%- endfor %}
{%- endfor %}
{%- endif %}
{%- endif %}
{%- for path_prefix_ext in path_prefix_exts | reverse %}
{%- for path_prefix_ext in path_prefix_exts | reverse %}
{%- set path_prefix_inc_ext = path_prefix ~ path_prefix_ext %}
{%- set path_prefix_inc_ext = path_prefix ~ path_prefix_ext %}
{#- For older TOFS implementation, use `files_switch` from the config #}
{#- For older TOFS implementation, use `files_switch` from the config #}
{#- Use the default, new method otherwise #}
{#- Use the default, new method otherwise #}
{%-
set fsl = salt[
'
config.get
'
](
{%-
set fsl = salt[
"
config.get
"
](
tplroot ~ path_prefix_ext
|
replace(
'/', ':'
) ~
'
:files_switch
'
,
tplroot ~ path_prefix_ext
|
replace(
"/", ":"
) ~
"
:files_switch
"
,
files_switch_list
files_switch_list
,
) %}
) %}
{#- Append an empty value to evaluate as `default` in the loop below #}
{#- Append an empty value to evaluate as `default` in the loop below #}
{%-
if
''
not in fsl %}
{%-
if
""
not in fsl %}
{%-
set fsl = fsl + [
''
] %}
{%-
set fsl = fsl + [
""
] %}
{%- endif %}
{%- endif %}
{%- for fs in fsl %}
{%- for fs in fsl %}
{%- for src_file in src_files %}
{%- for src_file in src_files %}
{%- if fs %}
{%- if fs %}
{%-
set fs_dirs = salt[
'
config.get
'
](fs, fs) %}
{%-
set fs_dirs = salt[
"
config.get
"
](fs, fs) %}
{%- else %}
{%- else %}
{%- set fs_dirs = salt['config.get'](tplroot ~ ':tofs:dirs:default', 'default') %}
{%- set fs_dirs = salt["config.get"](
tplroot ~ ":tofs:dirs:default", "default"
) %}
{%- endif %}
{%- endif %}
{#- Force the `config.get` lookup result as a list where necessary #}
{#- Force the `config.get` lookup result as a list where necessary #}
{#- since we need to also handle grains that are lists #}
{#- since we need to also handle grains that are lists #}
...
@@ -97,13 +95,18 @@
...
@@ -97,13 +95,18 @@
{%- set fs_dirs = [fs_dirs] %}
{%- set fs_dirs = [fs_dirs] %}
{%- endif %}
{%- endif %}
{%- for fs_dir in fs_dirs %}
{%- for fs_dir in fs_dirs %}
{%- set url = [
{#- strip empty elements by using a select #}
'- salt:/',
{%- set url = (
path_prefix_inc_ext.strip('/'),
[
files_dir.strip('/'),
"- salt:/",
fs_dir.strip('/'),
path_prefix_inc_ext.strip("/"),
src_file.strip('/'),
files_dir.strip("/"),
] | select | join('/') %}
fs_dir.strip("/"),
src_file.strip("/"),
]
| select
| join("/")
) %}
{{ url | indent(indent_width, true) }}
{{ url | indent(indent_width, true) }}
{%- endfor %}
{%- endfor %}
{%- endfor %}
{%- endfor %}
...
...
This diff is collapsed.
Click to expand it.
Dennis Ahrens
@ahrensde
mentioned in commit
8d8dbf01
·
3 years ago
mentioned in commit
8d8dbf01
mentioned in commit 8d8dbf01db20096dedb1cd6f8cfccf2e635fa970
Toggle commit list
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment