Browse Source

chore: standardise structure [skip ci]

* Automated using https://github.com/myii/ssf-formula/pull/264
tags/v1.0.1
Imran Iqbal 4 years ago
parent
commit
7dc0ece4f5
No account linked to committer's email address
6 changed files with 124 additions and 108 deletions
  1. +37
    -7
      .travis.yml
  2. +0
    -1
      .yamllint
  3. +1
    -5
      CODEOWNERS
  4. +0
    -16
      apache/libsaltcli.jinja
  5. +82
    -79
      apache/libtofs.jinja
  6. +4
    -0
      kitchen.yml

+ 37
- 7
.travis.yml View File

## Define the rest of the matrix based on Kitchen testing ## Define the rest of the matrix based on Kitchen testing
# Make sure the instances listed below match up with # Make sure the instances listed below match up with
# the `platforms` defined in `kitchen.yml` # the `platforms` defined in `kitchen.yml`
# - env: INSTANCE=default-debian-10-master-py3
- env: INSTANCE=modules-debian-10-master-py3 - env: INSTANCE=modules-debian-10-master-py3
# env: INSTANCE=modules-ubuntu-1804-master-py3
# - env: INSTANCE=default-ubuntu-1804-master-py3
# - env: INSTANCE=modules-ubuntu-1804-master-py3
# - env: INSTANCE=default-centos-8-master-py3
- env: INSTANCE=modules-centos-8-master-py3 - env: INSTANCE=modules-centos-8-master-py3
# - env: INSTANCE=default-fedora-31-master-py3
- env: INSTANCE=modules-fedora-31-master-py3 - env: INSTANCE=modules-fedora-31-master-py3
# - env: INSTANCE=default-opensuse-leap-151-master-py3
- env: INSTANCE=modules-opensuse-leap-151-master-py3 - env: INSTANCE=modules-opensuse-leap-151-master-py3

# https://community.letsencrypt.org/t/localhost-crt-does-not-exist-or-is-empty/103979 # https://community.letsencrypt.org/t/localhost-crt-does-not-exist-or-is-empty/103979
- env: INSTANCE=default-amazonlinux-2-master-py3 - env: INSTANCE=default-amazonlinux-2-master-py3

# - env: INSTANCE=modules-amazonlinux-2-master-py3
# - env: INSTANCE=default-debian-10-2019-2-py3
# - env: INSTANCE=modules-debian-10-2019-2-py3 # - env: INSTANCE=modules-debian-10-2019-2-py3
# - env: INSTANCE=default-debian-9-2019-2-py3
# - env: INSTANCE=modules-debian-9-2019-2-py3 # - env: INSTANCE=modules-debian-9-2019-2-py3
# - env: INSTANCE=default-ubuntu-1804-2019-2-py3
- env: INSTANCE=modules-ubuntu-1804-2019-2-py3 - env: INSTANCE=modules-ubuntu-1804-2019-2-py3
# - env: INSTANCE=default-centos-8-2019-2-py3
# - env: INSTANCE=modules-centos-8-2019-2-py3 # - env: INSTANCE=modules-centos-8-2019-2-py3
# - env: INSTANCE=default-fedora-31-2019-2-py3
# - env: INSTANCE=modules-fedora-31-2019-2-py3 # - env: INSTANCE=modules-fedora-31-2019-2-py3
# - env: INSTANCE=suse-opensuse-leap-151-2019-2-py3
# - env: INSTANCE=default-opensuse-leap-151-2019-2-py3
# - env: INSTANCE=modules-opensuse-leap-151-2019-2-py3
# - env: INSTANCE=default-centos-7-2019-2-py2
- env: INSTANCE=modules-centos-7-2019-2-py2 - env: INSTANCE=modules-centos-7-2019-2-py2
# env: INSTANCE=default-amazonlinux-2-2019-2-py3
# - env: INSTANCE=default-amazonlinux-2-2019-2-py3
# - env: INSTANCE=modules-amazonlinux-2-2019-2-py3
# - env: INSTANCE=default-arch-base-latest-2019-2-py2
# - env: INSTANCE=modules-arch-base-latest-2019-2-py2 # - env: INSTANCE=modules-arch-base-latest-2019-2-py2
# env: INSTANCE=modules-fedora-30-2018-3-py3
# - env: INSTANCE=arch-arch-base-latest-2019-2-py2
# - env: INSTANCE=default-fedora-30-2018-3-py3
# - env: INSTANCE=modules-fedora-30-2018-3-py3
# - env: INSTANCE=default-debian-9-2018-3-py2
# - env: INSTANCE=modules-debian-9-2018-3-py2 # - env: INSTANCE=modules-debian-9-2018-3-py2
# - env: INSTANCE=default-ubuntu-1604-2018-3-py2
# - env: INSTANCE=modules-ubuntu-1604-2018-3-py2 # - env: INSTANCE=modules-ubuntu-1604-2018-3-py2
# - env: INSTANCE=default-centos-7-2018-3-py2
# - env: INSTANCE=modules-centos-7-2018-3-py2 # - env: INSTANCE=modules-centos-7-2018-3-py2
# - env: INSTANCE=default-opensuse-leap-151-2018-3-py2
# - env: INSTANCE=modules-opensuse-leap-151-2018-3-py2 # - env: INSTANCE=modules-opensuse-leap-151-2018-3-py2
# - env: INSTANCE=default-amazonlinux-1-2018-3-py2
# - env: INSTANCE=modules-amazonlinux-1-2018-3-py2 # - env: INSTANCE=modules-amazonlinux-1-2018-3-py2
# - env: INSTANCE=default-arch-base-latest-2018-3-py2
# - env: INSTANCE=modules-arch-base-latest-2018-3-py2 # - env: INSTANCE=modules-arch-base-latest-2018-3-py2
# - env: INSTANCE=arch-arch-base-latest-2018-3-py2
# - env: INSTANCE=default-debian-8-2017-7-py2
# - env: INSTANCE=modules-debian-8-2017-7-py2 # - env: INSTANCE=modules-debian-8-2017-7-py2
# - env: INSTANCE=default-ubuntu-1604-2017-7-py2
# - env: INSTANCE=modules-ubuntu-1604-2017-7-py2 # - env: INSTANCE=modules-ubuntu-1604-2017-7-py2
# env: INSTANCE=default-centos-6-2017-7-py2
# - env: INSTANCE=default-centos-6-2017-7-py2
# - env: INSTANCE=modules-centos-6-2017-7-py2
# - env: INSTANCE=default-fedora-30-2017-7-py2
# - env: INSTANCE=modules-fedora-30-2017-7-py2 # - env: INSTANCE=modules-fedora-30-2017-7-py2
# - env: INSTANCE=default-opensuse-leap-151-2017-7-py2
# - env: INSTANCE=modules-opensuse-leap-151-2017-7-py2 # - env: INSTANCE=modules-opensuse-leap-151-2017-7-py2
# - env: INSTANCE=default-amazonlinux-1-2017-7-py2
# - env: INSTANCE=modules-amazonlinux-1-2017-7-py2 # - env: INSTANCE=modules-amazonlinux-1-2017-7-py2
# - env: INSTANCE=default-arch-base-latest-2017-7-py2
# - env: INSTANCE=modules-arch-base-latest-2017-7-py2
- env: INSTANCE=arch-arch-base-latest-2017-7-py2 - env: INSTANCE=arch-arch-base-latest-2017-7-py2


## Define the release stage that runs `semantic-release` ## Define the release stage that runs `semantic-release`

+ 0
- 1
.yamllint View File

test/**/states/**/*.sls test/**/states/**/*.sls
.kitchen/ .kitchen/
test/salt/pillar/modules.sls test/salt/pillar/modules.sls
test/salt/pillar/default.sls
pillar.example pillar.example


yaml-files: yaml-files:

+ 1
- 5
CODEOWNERS View File

# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners # https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners


# SECTION: Owner(s) for everything in the repo, unless a later match takes precedence # SECTION: Owner(s) for everything in the repo, unless a later match takes precedence
# **************************************************************************
# *** NO GLOBAL OWNER(S) SPECIFIED ***
# *** Ideally this will be defined for a healthy, well-maintained repo ***
# **************************************************************************
# FILE PATTERN OWNER(S) # FILE PATTERN OWNER(S)
* @NONE
* @noelmcloughlin


# SECTION: Owner(s) for specific directories # SECTION: Owner(s) for specific directories
# FILE PATTERN OWNER(S) # FILE PATTERN OWNER(S)

+ 0
- 16
apache/libsaltcli.jinja View File

# -*- coding: utf-8 -*-
# vim: ft=jinja

{#- Get the relevant values from the `opts` dict #}
{%- set opts_cli = opts.get('__cli', '') %}
{%- set opts_masteropts_cli = opts | traverse('__master_opts__:__cli', '') %}

{#- Determine the type of salt command being run #}
{%- if opts_cli == 'salt-minion' %}
{%- set cli = 'minion' %}
{%- elif opts_cli == 'salt-call' %}
{%- set cli = 'ssh' if opts_masteropts_cli in ('salt-ssh', 'salt-master') else 'local' %}
{%- else %}
{%- set cli = 'unknown' %}
{%- endif %}
{%- do salt['log.debug']('[libsaltcli] the salt command type has been identified to be: ' ~ cli) %}

+ 82
- 79
apache/libtofs.jinja View File

{%- macro files_switch(source_files,
lookup=None,
default_files_switch=['id', 'os_family'],
indent_width=6,
use_subpath=False) %}
{#-
{%- macro files_switch(
source_files,
lookup=None,
default_files_switch=["id", "os_family"],
indent_width=6,
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'],
lookup='Deploy configuration'
) }}
- source: {{ files_switch(
["/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
- salt://xxx/files/default/etc/yyy/zzz.conf - salt://xxx/files/default/etc/yyy/zzz.conf
- salt://xxx/files/default/etc/yyy/zzz.conf.jinja - salt://xxx/files/default/etc/yyy/zzz.conf.jinja
- template: jinja - template: jinja
#}
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set path_prefix = salt['config.get'](tplroot ~ ':tofs:path_prefix', tplroot) %}
{%- set files_dir = salt['config.get'](tplroot ~ ':tofs:dirs:files', 'files') %}
{%- set files_switch_list = salt['config.get'](
tplroot ~ ':tofs:files_switch',
default_files_switch
) %}
{#- 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, [])
) %}
{#- 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 use_subpath and tplroot != tpldir %}
{#- Walk directory tree to find {{ files_dir }} #}
{%- set subpath_parts = tpldir.lstrip(tplroot).lstrip('/').split('/') %}
{%- for path in subpath_parts %}
{%- set subpath = subpath_parts[0:loop.index] | join('/') %}
{%- do path_prefix_exts.append('/' ~ subpath) %}
{%- endfor %}
{%- endif %}
{%- for path_prefix_ext in path_prefix_exts|reverse %}
{%- set path_prefix_inc_ext = path_prefix ~ path_prefix_ext %}
{#- For older TOFS implementation, use `files_switch` from the config #}
{#- Use the default, new method otherwise #}
{%- set fsl = salt['config.get'](
tplroot ~ path_prefix_ext|replace('/', ':') ~ ':files_switch',
files_switch_list
) %}
{#- Append an empty value to evaluate as `default` in the loop below #}
{%- if '' not in fsl %}
{%- set fsl = fsl + [''] %}
{%- endif %}
{%- for fs in fsl %}
{%- for src_file in src_files %}
{%- if fs %}
{%- set fs_dirs = salt['config.get'](fs, fs) %}
{%- else %}
{%- set fs_dirs = salt['config.get'](tplroot ~ ':tofs:dirs:default', 'default') %}
{%- endif %}
{#- Force the `config.get` lookup result as a list where necessary #}
{#- since we need to also handle grains that are lists #}
{%- if fs_dirs is string %}
{%- set fs_dirs = [fs_dirs] %}
{%- endif %}
{%- for fs_dir in fs_dirs %}
{%- set url = [
'- salt:/',
path_prefix_inc_ext.strip('/'),
files_dir.strip('/'),
fs_dir.strip('/'),
src_file.strip('/'),
] | select | join('/') %}
#}
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split("/")[0] %}
{%- set path_prefix = salt["config.get"](tplroot ~ ":tofs:path_prefix", tplroot) %}
{%- set files_dir = salt["config.get"](tplroot ~ ":tofs:dirs:files", "files") %}
{%- set files_switch_list = salt["config.get"](
tplroot ~ ":tofs:files_switch", default_files_switch
) %}
{#- 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, []),
) %}
{#- 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 use_subpath and tplroot != tpldir %}
{#- Walk directory tree to find {{ files_dir }} #}
{%- set subpath_parts = tpldir.lstrip(tplroot).lstrip("/").split("/") %}
{%- for path in subpath_parts %}
{%- set subpath = subpath_parts[0 : loop.index] | join("/") %}
{%- do path_prefix_exts.append("/" ~ subpath) %}
{%- endfor %}
{%- endif %}
{%- for path_prefix_ext in path_prefix_exts | reverse %}
{%- set path_prefix_inc_ext = path_prefix ~ path_prefix_ext %}
{#- For older TOFS implementation, use `files_switch` from the config #}
{#- Use the default, new method otherwise #}
{%- set fsl = salt["config.get"](
tplroot ~ path_prefix_ext | replace("/", ":") ~ ":files_switch",
files_switch_list,
) %}
{#- Append an empty value to evaluate as `default` in the loop below #}
{%- if "" not in fsl %}
{%- set fsl = fsl + [""] %}
{%- endif %}
{%- for fs in fsl %}
{%- for src_file in src_files %}
{%- if fs %}
{%- set fs_dirs = salt["config.get"](fs, fs) %}
{%- else %}
{%- set fs_dirs = salt["config.get"](
tplroot ~ ":tofs:dirs:default", "default"
) %}
{%- endif %}
{#- Force the `config.get` lookup result as a list where necessary #}
{#- since we need to also handle grains that are lists #}
{%- if fs_dirs is string %}
{%- set fs_dirs = [fs_dirs] %}
{%- endif %}
{%- for fs_dir in fs_dirs %}
{#- strip empty elements by using a select #}
{%- set url = (
[
"- salt:/",
path_prefix_inc_ext.strip("/"),
files_dir.strip("/"),
fs_dir.strip("/"),
src_file.strip("/"),
]
| select
| join("/")
) %}
{{ url | indent(indent_width, true) }} {{ url | indent(indent_width, true) }}
{%- endfor %}
{%- endfor %}
{%- endfor %}
{%- endfor %}
{%- endfor %}
{%- endfor %}
{%- endfor %}
{%- endfor %}
{%- endmacro %} {%- endmacro %}

+ 4
- 0
kitchen.yml View File

inspec_tests: inspec_tests:
- path: test/integration/modules - path: test/integration/modules
- name: arch - name: arch
includes:
- arch-base-latest-2019-2-py2
- arch-base-latest-2018-3-py2
- arch-base-latest-2017-7-py2
provisioner: provisioner:
state_top: state_top:
base: base:

Loading…
Cancel
Save