diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml
new file mode 100644
index 0000000..42a5375
--- /dev/null
+++ b/.github/workflows/commitlint.yml
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# vim: ft=yaml
+---
+name: Commitlint
+'on': [pull_request]
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - uses: wagoid/commitlint-github-action@v1
diff --git a/.travis.yml b/.travis.yml
index 0037c28..4087dd6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -60,22 +60,24 @@ jobs:
# the `platforms` defined in `kitchen.yml`
- env: INSTANCE=default-debian-10-master-py3
- env: INSTANCE=clean-debian-10-master-py3
+ - env: INSTANCE=default-ubuntu-2004-master-py3
# - env: INSTANCE=default-ubuntu-1804-master-py3
# - env: INSTANCE=default-centos-8-master-py3
+ # - env: INSTANCE=default-fedora-32-master-py3
# - env: INSTANCE=default-fedora-31-master-py3
- # - env: INSTANCE=default-opensuse-leap-151-master-py3
+ # - env: INSTANCE=default-opensuse-leap-152-master-py3
# - env: INSTANCE=default-amazonlinux-2-master-py3
- # - env: INSTANCE=default-debian-10-3000-2-py3
- # - env: INSTANCE=default-debian-9-3000-2-py3
- - env: INSTANCE=default-ubuntu-1804-3000-2-py3
- - env: INSTANCE=default-centos-8-3000-2-py3
- # - env: INSTANCE=default-centos-7-3000-2-py3
- # - env: INSTANCE=default-fedora-31-3000-2-py3
- - env: INSTANCE=default-opensuse-leap-151-3000-2-py3
- # - env: INSTANCE=default-amazonlinux-2-3000-2-py3
- # - env: INSTANCE=default-ubuntu-1804-3000-2-py2
- # - env: INSTANCE=default-ubuntu-1604-3000-2-py2
- # - env: INSTANCE=default-arch-base-latest-3000-2-py2
+ # - env: INSTANCE=default-debian-10-3000-3-py3
+ # - env: INSTANCE=default-debian-9-3000-3-py3
+ # - env: INSTANCE=default-ubuntu-1804-3000-3-py3
+ - env: INSTANCE=default-centos-8-3000-3-py3
+ # - env: INSTANCE=default-centos-7-3000-3-py3
+ # - env: INSTANCE=default-fedora-31-3000-3-py3
+ - env: INSTANCE=default-opensuse-leap-152-3000-3-py3
+ # - env: INSTANCE=default-amazonlinux-2-3000-3-py3
+ # - env: INSTANCE=default-ubuntu-1804-3000-3-py2
+ # - env: INSTANCE=default-ubuntu-1604-3000-3-py2
+ # - env: INSTANCE=default-arch-base-latest-3000-3-py2
# - env: INSTANCE=default-debian-10-2019-2-py3
# - env: INSTANCE=default-debian-9-2019-2-py3
# - env: INSTANCE=default-ubuntu-1804-2019-2-py3
@@ -83,7 +85,7 @@ jobs:
# - env: INSTANCE=default-centos-8-2019-2-py3
# - env: INSTANCE=default-centos-7-2019-2-py3
- env: INSTANCE=default-fedora-31-2019-2-py3
- # - env: INSTANCE=default-opensuse-leap-151-2019-2-py3
+ # - env: INSTANCE=default-opensuse-leap-152-2019-2-py3
# - env: INSTANCE=default-amazonlinux-2-2019-2-py3
# - env: INSTANCE=default-centos-6-2019-2-py2
# - env: INSTANCE=default-amazonlinux-1-2019-2-py2
@@ -114,3 +116,15 @@ jobs:
edge: true
# Run `semantic-release`
script: 'npx semantic-release@15.14'
+
+# Notification options: `always`, `never` or `change`
+notifications:
+ webhooks:
+ if: 'repo = saltstack-formulas/libvirt-formula'
+ urls:
+ - https://saltstack-formulas.zulipchat.com/api/v1/external/travis?api_key=HsIq3o5QmLxdnVCKF9is0FUIpkpAY79P&stream=CI&topic=saltstack-formulas%2Flibvirt-formula&ignore_pull_requests=true
+ on_success: always # default: always
+ on_failure: always # default: always
+ on_start: always # default: never
+ on_cancel: always # default: always
+ on_error: always # default: always
diff --git a/AUTHORS.md b/AUTHORS.md
index 4dc1f97..fe8cc9b 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -4,8 +4,8 @@ This list is sorted by the number of commits per contributor in _descending_ ord
Avatar|Contributor|Contributions
:-:|---|:-:
-
|[@myii](https://github.com/myii)|61
-
|[@baby-gnu](https://github.com/baby-gnu)|31
+
|[@myii](https://github.com/myii)|76
+
|[@baby-gnu](https://github.com/baby-gnu)|35
|[@aboe76](https://github.com/aboe76)|18
|[@gravyboat](https://github.com/gravyboat)|6
|[@whiteinge](https://github.com/whiteinge)|4
@@ -28,4 +28,4 @@ Avatar|Contributor|Contributions
---
-Auto-generated by a [forked version](https://github.com/myii/maintainer) of [gaocegege/maintainer](https://github.com/gaocegege/maintainer) on 2020-05-03.
+Auto-generated by a [forked version](https://github.com/myii/maintainer) of [gaocegege/maintainer](https://github.com/gaocegege/maintainer) on 2020-07-10.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 682377e..1875c9c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,29 @@
# Changelog
+## [3.7.6](https://github.com/saltstack-formulas/libvirt-formula/compare/v3.7.5...v3.7.6) (2020-07-10)
+
+
+### Bug Fixes
+
+* **libtofs:** remove trailing coma on macro parameters list ([36589e4](https://github.com/saltstack-formulas/libvirt-formula/commit/36589e466d48ba28eb96627a88d0c5a53c7f6351))
+
+
+### Continuous Integration
+
+* **kitchen:** use `saltimages` Docker Hub where available [skip ci] ([086ea4c](https://github.com/saltstack-formulas/libvirt-formula/commit/086ea4c404280cbb0124253f775e786ae95b2d66))
+* **kitchen+travis:** add new platforms [skip ci] ([f2ccc51](https://github.com/saltstack-formulas/libvirt-formula/commit/f2ccc5136a543003719831f38574b9d43ab95da3))
+* **kitchen+travis:** adjust matrix to add `3000.3` [skip ci] ([95562e3](https://github.com/saltstack-formulas/libvirt-formula/commit/95562e3258c03a61a0ef77704d2b93ab1fc5b4b0))
+* **travis:** add notifications => zulip [skip ci] ([88b4bee](https://github.com/saltstack-formulas/libvirt-formula/commit/88b4beef40438d875d12ef69d69c4833908e6887))
+* **workflows/commitlint:** add to repo [skip ci] ([7a19e61](https://github.com/saltstack-formulas/libvirt-formula/commit/7a19e61bcced035520b14ef5c9a7445f9d026048))
+
+
+### Styles
+
+* **libtofs:** it's prettier with the Jinja open mark not indented ([7411517](https://github.com/saltstack-formulas/libvirt-formula/commit/741151734dbc77fdff9fc20cab3c5fdbeac7e28c))
+* **libtofs:** use Black-inspired Jinja formatting ([5f27ff8](https://github.com/saltstack-formulas/libvirt-formula/commit/5f27ff87a057acc8bad579ee89947e1604db5a6f)), closes [/github.com/saltstack-formulas/libvirt-formula/pull/77#issuecomment-637838178](https://github.com//github.com/saltstack-formulas/libvirt-formula/pull/77/issues/issuecomment-637838178)
+* **map:** use Black-inspired Jinja formatting ([d05e403](https://github.com/saltstack-formulas/libvirt-formula/commit/d05e4039091b7e021c29cc201296ac57f5f10515)), closes [/github.com/saltstack-formulas/libvirt-formula/pull/77#issuecomment-652476823](https://github.com//github.com/saltstack-formulas/libvirt-formula/pull/77/issues/issuecomment-652476823)
+* **map.jinja:** it's prettier with the Jinja open mark not indented ([c81943b](https://github.com/saltstack-formulas/libvirt-formula/commit/c81943bb0c5c4f419923c360954acfb94c653194))
+
## [3.7.5](https://github.com/saltstack-formulas/libvirt-formula/compare/v3.7.4...v3.7.5) (2020-05-03)
diff --git a/CODEOWNERS b/CODEOWNERS
index 382b2b4..8a469e4 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -4,9 +4,15 @@
# FILE PATTERN OWNER(S)
* @baby-gnu
-# SECTION: Owner(s) for files related to `semantic-release`
+# SECTION: Owner(s) for specific directories
# FILE PATTERN OWNER(S)
+
+# SECTION: Owner(s) for files/directories related to `semantic-release`
+# FILE PATTERN OWNER(S)
+/.github/workflows/ @saltstack-formulas/ssf
/bin/kitchen @saltstack-formulas/ssf
+/docs/AUTHORS.rst @saltstack-formulas/ssf
+/docs/CHANGELOG.rst @saltstack-formulas/ssf
/docs/TOFS_pattern.rst @saltstack-formulas/ssf
/libvirt/libsaltcli.jinja @saltstack-formulas/ssf
/libvirt/libtofs.jinja @saltstack-formulas/ssf
@@ -18,8 +24,11 @@
/.salt-lint @saltstack-formulas/ssf
/.travis.yml @saltstack-formulas/ssf
/.yamllint @saltstack-formulas/ssf
-/commitlint.config.js @saltstack-formulas/ssf
+/AUTHORS.md @saltstack-formulas/ssf
+/CHANGELOG.md @saltstack-formulas/ssf
/CODEOWNERS @saltstack-formulas/ssf
+/commitlint.config.js @saltstack-formulas/ssf
+/FORMULA @saltstack-formulas/ssf
/Gemfile @saltstack-formulas/ssf
/Gemfile.lock @saltstack-formulas/ssf
/kitchen.yml @saltstack-formulas/ssf
@@ -27,5 +36,5 @@
/release-rules.js @saltstack-formulas/ssf
/release.config.js @saltstack-formulas/ssf
-# SECTION: Owner(s) for specific files/directories
+# SECTION: Owner(s) for specific files
# FILE PATTERN OWNER(S)
diff --git a/FORMULA b/FORMULA
index e8a5c32..9d43304 100644
--- a/FORMULA
+++ b/FORMULA
@@ -1,7 +1,7 @@
name: libvirt
os: Debian, CentOS, openSUSE, Suse
os_family: Debian, RedHat, Suse
-version: 3.7.5
+version: 3.7.6
release: 1
minimum_version: 2018.3
summary: libvirt formula
diff --git a/Gemfile.lock b/Gemfile.lock
index 81169cb..38dca3a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,7 +1,7 @@
GEM
remote: https://rubygems.org/
specs:
- activesupport (5.2.4.2)
+ activesupport (5.2.4.3)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
@@ -9,180 +9,185 @@ GEM
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
aws-eventstream (1.1.0)
- aws-partitions (1.299.0)
- aws-sdk-apigateway (1.38.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-partitions (1.338.0)
+ aws-sdk-apigateway (1.48.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-apigatewayv2 (1.19.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-apigatewayv2 (1.23.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-athena (1.24.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-athena (1.30.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
aws-sdk-autoscaling (1.22.0)
aws-sdk-core (~> 3, >= 3.52.1)
aws-sigv4 (~> 1.1)
- aws-sdk-budgets (1.28.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-budgets (1.32.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-cloudformation (1.33.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-cloudformation (1.41.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-cloudhsm (1.20.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-cloudfront (1.33.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-cloudhsmv2 (1.21.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-cloudhsm (1.24.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-cloudtrail (1.21.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-cloudhsmv2 (1.26.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-cloudwatch (1.36.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-cloudtrail (1.26.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-cloudwatchlogs (1.29.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-cloudwatch (1.41.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-codecommit (1.31.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-cloudwatchlogs (1.34.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-codedeploy (1.28.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-codecommit (1.37.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-codepipeline (1.29.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-codedeploy (1.34.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-configservice (1.43.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-codepipeline (1.34.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-core (3.94.0)
+ aws-sdk-configservice (1.48.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
+ aws-sigv4 (~> 1.1)
+ aws-sdk-core (3.103.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
- aws-sdk-costandusagereportservice (1.19.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-costandusagereportservice (1.24.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
+ aws-sigv4 (~> 1.1)
+ aws-sdk-dynamodb (1.51.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-dynamodb (1.45.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-ec2 (1.174.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-ec2 (1.154.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-ecr (1.34.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-ecr (1.26.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-ecs (1.67.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-ecs (1.60.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-efs (1.32.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-eks (1.35.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-eks (1.39.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-elasticache (1.31.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-elasticache (1.40.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-elasticbeanstalk (1.28.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-elasticbeanstalk (1.34.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-elasticloadbalancing (1.20.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-elasticloadbalancing (1.25.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-elasticloadbalancingv2 (1.41.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-elasticloadbalancingv2 (1.47.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-elasticsearchservice (1.32.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-elasticsearchservice (1.39.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-firehose (1.25.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-firehose (1.31.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-iam (1.36.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-iam (1.43.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-kafka (1.19.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-kafka (1.23.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-kinesis (1.21.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-kinesis (1.26.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-kms (1.30.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-kms (1.36.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-lambda (1.39.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-lambda (1.46.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
aws-sdk-organizations (1.17.0)
aws-sdk-core (~> 3, >= 3.39.0)
aws-sigv4 (~> 1.0)
- aws-sdk-rds (1.82.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-rds (1.92.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-redshift (1.40.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-redshift (1.46.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-route53 (1.32.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-route53 (1.40.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-route53domains (1.19.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-route53domains (1.25.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-route53resolver (1.12.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-route53resolver (1.17.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-s3 (1.62.0)
- aws-sdk-core (~> 3, >= 3.83.0)
+ aws-sdk-s3 (1.73.0)
+ aws-sdk-core (~> 3, >= 3.102.1)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1)
- aws-sdk-securityhub (1.23.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-securityhub (1.29.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-ses (1.28.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-ses (1.33.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-sms (1.18.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-sms (1.23.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-sns (1.22.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-sns (1.27.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-sqs (1.24.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-sqs (1.30.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sdk-ssm (1.73.0)
- aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sdk-ssm (1.84.0)
+ aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
- aws-sigv4 (1.1.2)
- aws-eventstream (~> 1.0, >= 1.0.2)
- azure_graph_rbac (0.17.1)
- ms_rest_azure (~> 0.11.0)
- azure_mgmt_key_vault (0.17.5)
- ms_rest_azure (~> 0.11.1)
- azure_mgmt_resources (0.17.8)
- ms_rest_azure (~> 0.11.1)
- azure_mgmt_security (0.18.0)
- ms_rest_azure (~> 0.11.1)
- azure_mgmt_storage (0.20.0)
- ms_rest_azure (~> 0.11.1)
+ aws-sigv4 (1.2.1)
+ aws-eventstream (~> 1, >= 1.0.2)
+ azure_graph_rbac (0.17.2)
+ ms_rest_azure (~> 0.12.0)
+ azure_mgmt_key_vault (0.17.6)
+ ms_rest_azure (~> 0.12.0)
+ azure_mgmt_resources (0.17.9)
+ ms_rest_azure (~> 0.12.0)
+ azure_mgmt_security (0.18.2)
+ ms_rest_azure (~> 0.12.0)
+ azure_mgmt_storage (0.21.2)
+ ms_rest_azure (~> 0.12.0)
bcrypt_pbkdf (1.0.1)
builder (3.2.4)
- chef-config (15.9.17)
+ chef-config (16.2.73)
addressable
- chef-utils (= 15.9.17)
+ chef-utils (= 16.2.73)
fuzzyurl
mixlib-config (>= 2.2.12, < 4.0)
mixlib-shellout (>= 2.0, < 4.0)
tomlrb (~> 1.2)
- chef-telemetry (1.0.3)
+ chef-telemetry (1.0.8)
chef-config
concurrent-ruby (~> 1.0)
ffi-yajl (~> 2.2)
- http (~> 2.2)
- chef-utils (15.9.17)
- coderay (1.1.2)
+ chef-utils (16.2.73)
+ coderay (1.1.3)
concurrent-ruby (1.1.6)
- declarative (0.0.10)
+ declarative (0.0.20)
declarative-option (0.1.0)
- diff-lcs (1.3)
+ diff-lcs (1.4.4)
docker-api (1.34.2)
excon (>= 0.47.0)
multi_json
@@ -193,7 +198,7 @@ GEM
ed25519 (1.2.4)
equatable (0.6.1)
erubi (1.9.0)
- excon (0.73.0)
+ excon (0.75.0)
faraday (0.17.3)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
@@ -201,7 +206,7 @@ GEM
http-cookie (~> 1.0.0)
faraday_middleware (0.12.2)
faraday (>= 0.7.4, < 1.0)
- ffi (1.12.2)
+ ffi (1.13.1)
ffi-yajl (2.3.3)
libyajl2 (~> 1.2)
fuzzyurl (0.9.0)
@@ -224,30 +229,23 @@ GEM
ffi (>= 1.0.1)
gyoku (1.3.1)
builder (>= 2.1.2)
- hana (1.3.5)
+ hana (1.3.6)
hashie (3.6.0)
htmlentities (4.3.4)
- http (2.2.2)
- addressable (~> 2.3)
- http-cookie (~> 1.0)
- http-form_data (~> 1.0.1)
- http_parser.rb (~> 0.6.0)
http-cookie (1.0.3)
domain_name (~> 0.5)
- http-form_data (1.0.3)
- http_parser.rb (0.6.0)
httpclient (2.8.3)
- i18n (1.8.2)
+ i18n (1.8.3)
concurrent-ruby (~> 1.0)
inifile (3.0.0)
- inspec (4.18.104)
+ inspec (4.21.3)
faraday_middleware (~> 0.12.2)
- inspec-core (= 4.18.104)
+ inspec-core (= 4.21.3)
train (~> 3.0)
train-aws (~> 0.1)
train-habitat (~> 0.1)
train-winrm (~> 0.2)
- inspec-core (4.18.104)
+ inspec-core (4.21.3)
addressable (~> 2.4)
chef-telemetry (~> 1.0)
faraday (>= 0.9.0)
@@ -255,12 +253,12 @@ GEM
htmlentities (~> 4.3)
json_schemer (~> 0.2.1)
license-acceptance (>= 0.2.13, < 2.0)
- method_source (~> 0.8)
+ method_source (>= 0.8, < 2.0)
mixlib-log (~> 3.0)
multipart-post (~> 2.0)
parallel (~> 1.9)
parslet (~> 1.5)
- pry (~> 0)
+ pry (~> 0.13)
rspec (~> 3.9)
rspec-its (~> 1.2)
rubyzip (~> 1.2, >= 1.2.2)
@@ -268,12 +266,12 @@ GEM
sslshake (~> 1.2)
term-ansicolor (~> 1.7)
thor (>= 0.20, < 2.0)
- tomlrb (~> 1.2)
+ tomlrb (~> 1.2.0)
train-core (~> 3.0)
tty-prompt (~> 0.17)
tty-table (~> 0.10)
jmespath (1.4.0)
- json (2.3.0)
+ json (2.3.1)
json_schemer (0.2.11)
ecma-re-validator (~> 0.2)
hana (~> 1.3)
@@ -282,9 +280,9 @@ GEM
jwt (2.2.1)
kitchen-docker (2.10.0)
test-kitchen (>= 1.0.0)
- kitchen-inspec (1.3.2)
+ kitchen-inspec (2.0.0)
hashie (~> 3.4)
- inspec (>= 1.47, < 5.0)
+ inspec (>= 2.2.64, < 5.0)
test-kitchen (>= 1.6, < 3)
kitchen-salt (0.6.3)
hashie (>= 3.5)
@@ -296,13 +294,13 @@ GEM
tty-box (~> 0.3)
tty-prompt (~> 0.18)
little-plugger (1.1.4)
- logging (2.2.2)
+ logging (2.3.0)
little-plugger (~> 1.1)
- multi_json (~> 1.10)
+ multi_json (~> 1.14)
memoist (0.16.2)
- method_source (0.9.2)
+ method_source (1.0.0)
mini_mime (1.0.2)
- minitest (5.14.0)
+ minitest (5.14.1)
mixlib-config (3.0.6)
tomlrb
mixlib-install (3.12.1)
@@ -316,32 +314,31 @@ GEM
concurrent-ruby (~> 1.0)
faraday (>= 0.9, < 2.0.0)
timeliness (~> 0.3.10)
- ms_rest_azure (0.11.2)
+ ms_rest_azure (0.12.0)
concurrent-ruby (~> 1.0)
faraday (>= 0.9, < 2.0.0)
faraday-cookie_jar (~> 0.0.6)
ms_rest (~> 0.7.6)
- unf_ext (= 0.0.7.2)
multi_json (1.14.1)
multipart-post (2.1.1)
necromancer (0.5.1)
- net-scp (2.0.0)
- net-ssh (>= 2.6.5, < 6.0.0)
- net-ssh (5.2.0)
+ net-scp (3.0.0)
+ net-ssh (>= 2.6.5, < 7.0.0)
+ net-ssh (6.1.0)
net-ssh-gateway (2.0.0)
net-ssh (>= 4.0.0)
nori (2.6.0)
os (1.1.0)
- parallel (1.19.1)
+ parallel (1.19.2)
parslet (1.8.2)
- pastel (0.7.3)
+ pastel (0.7.4)
equatable (~> 0.6)
tty-color (~> 0.5)
- pry (0.12.2)
- coderay (~> 1.1.0)
- method_source (~> 0.9.0)
- public_suffix (4.0.4)
- regexp_parser (1.7.0)
+ pry (0.13.1)
+ coderay (~> 1.1)
+ method_source (~> 1.0)
+ public_suffix (4.0.5)
+ regexp_parser (1.7.1)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
@@ -351,9 +348,9 @@ GEM
rspec-core (~> 3.9.0)
rspec-expectations (~> 3.9.0)
rspec-mocks (~> 3.9.0)
- rspec-core (3.9.1)
- rspec-support (~> 3.9.1)
- rspec-expectations (3.9.1)
+ rspec-core (3.9.2)
+ rspec-support (~> 3.9.3)
+ rspec-expectations (3.9.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0)
rspec-its (1.3.0)
@@ -362,7 +359,7 @@ GEM
rspec-mocks (3.9.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0)
- rspec-support (3.9.2)
+ rspec-support (3.9.3)
rubyntlm (0.6.2)
rubyzip (1.3.0)
semverse (3.0.0)
@@ -371,7 +368,7 @@ GEM
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
- sslshake (1.3.0)
+ sslshake (1.3.1)
strings (0.1.8)
strings-ansi (~> 0.1)
unicode-display_width (~> 1.5)
@@ -380,27 +377,27 @@ GEM
sync (0.5.0)
term-ansicolor (1.7.1)
tins (~> 1.0)
- test-kitchen (2.4.0)
+ test-kitchen (2.5.2)
bcrypt_pbkdf (~> 1.0)
ed25519 (~> 1.2)
license-acceptance (~> 1.0, >= 1.0.11)
mixlib-install (~> 3.6)
mixlib-shellout (>= 1.2, < 4.0)
- net-scp (>= 1.1, < 3.0)
- net-ssh (>= 2.9, < 6.0)
+ net-scp (>= 1.1, < 4.0)
+ net-ssh (>= 2.9, < 7.0)
net-ssh-gateway (>= 1.2, < 3.0)
- thor (~> 0.19)
+ thor (>= 0.19, < 2.0)
winrm (~> 2.0)
winrm-elevated (~> 1.0)
winrm-fs (~> 1.1)
- thor (0.20.3)
+ thor (1.0.1)
thread_safe (0.3.6)
timeliness (0.3.10)
- tins (1.24.1)
+ tins (1.25.0)
sync
- tomlrb (1.3.0)
- train (3.2.28)
- activesupport (~> 5.2.3)
+ tomlrb (1.2.9)
+ train (3.3.6)
+ activesupport (>= 5.2.4.3, < 6.0.0)
azure_graph_rbac (~> 0.16)
azure_mgmt_key_vault (~> 0.17)
azure_mgmt_resources (~> 0.15)
@@ -410,15 +407,16 @@ GEM
google-api-client (>= 0.23.9, < 0.35.0)
googleauth (>= 0.6.6, < 0.11.0)
inifile (~> 3.0)
- train-core (= 3.2.28)
+ train-core (= 3.3.6)
train-winrm (~> 0.2)
- train-aws (0.1.15)
+ train-aws (0.1.17)
aws-sdk-apigateway (~> 1.0)
aws-sdk-apigatewayv2 (~> 1.0)
aws-sdk-athena (~> 1.0)
aws-sdk-autoscaling (~> 1.22.0)
aws-sdk-budgets (~> 1.0)
aws-sdk-cloudformation (~> 1.0)
+ aws-sdk-cloudfront (~> 1.0)
aws-sdk-cloudhsm (~> 1.0)
aws-sdk-cloudhsmv2 (~> 1.0)
aws-sdk-cloudtrail (~> 1.8)
@@ -434,6 +432,7 @@ GEM
aws-sdk-ec2 (~> 1.70)
aws-sdk-ecr (~> 1.18)
aws-sdk-ecs (~> 1.30)
+ aws-sdk-efs (~> 1.0)
aws-sdk-eks (~> 1.9)
aws-sdk-elasticache (~> 1.0)
aws-sdk-elasticbeanstalk (~> 1.0)
@@ -459,12 +458,13 @@ GEM
aws-sdk-sns (~> 1.9)
aws-sdk-sqs (~> 1.10)
aws-sdk-ssm (~> 1.0)
- train-core (3.2.28)
+ train-core (3.3.6)
addressable (~> 2.5)
+ ffi (!= 1.13.0)
json (>= 1.8, < 3.0)
mixlib-shellout (>= 2.0, < 4.0)
- net-scp (>= 1.2, < 3.0)
- net-ssh (>= 2.9, < 6.0)
+ net-scp (>= 1.2, < 4.0)
+ net-ssh (>= 2.9, < 7.0)
train-habitat (0.2.13)
train-winrm (0.2.6)
winrm (~> 2.0)
@@ -483,7 +483,7 @@ GEM
tty-cursor (~> 0.7)
tty-screen (~> 0.7)
wisper (~> 2.0.0)
- tty-screen (0.7.1)
+ tty-screen (0.8.0)
tty-table (0.11.0)
equatable (~> 0.6)
necromancer (~> 0.5)
@@ -495,7 +495,7 @@ GEM
uber (0.1.0)
unf (0.1.4)
unf_ext
- unf_ext (0.0.7.2)
+ unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
unicode_utils (1.4.0)
uri_template (0.7.0)
diff --git a/docs/AUTHORS.rst b/docs/AUTHORS.rst
index b9a26f2..1891a42 100644
--- a/docs/AUTHORS.rst
+++ b/docs/AUTHORS.rst
@@ -15,10 +15,10 @@ This list is sorted by the number of commits per contributor in *descending* ord
- Contributions
* - :raw-html-m2r:`
`
- `@myii `_
- - 61
+ - 76
* - :raw-html-m2r:`
`
- `@baby-gnu `_
- - 31
+ - 35
* - :raw-html-m2r:`
`
- `@aboe76 `_
- 18
@@ -80,4 +80,4 @@ This list is sorted by the number of commits per contributor in *descending* ord
----
-Auto-generated by a `forked version `_ of `gaocegege/maintainer `_ on 2020-05-03.
+Auto-generated by a `forked version `_ of `gaocegege/maintainer `_ on 2020-07-10.
diff --git a/docs/CHANGELOG.rst b/docs/CHANGELOG.rst
index 1c6d9ad..eb424bb 100644
--- a/docs/CHANGELOG.rst
+++ b/docs/CHANGELOG.rst
@@ -2,6 +2,34 @@
Changelog
=========
+`3.7.6 `_ (2020-07-10)
+---------------------------------------------------------------------------------------------------------
+
+Bug Fixes
+^^^^^^^^^
+
+
+* **libtofs:** remove trailing coma on macro parameters list (\ `36589e4 `_\ )
+
+Continuous Integration
+^^^^^^^^^^^^^^^^^^^^^^
+
+
+* **kitchen:** use ``saltimages`` Docker Hub where available [skip ci] (\ `086ea4c `_\ )
+* **kitchen+travis:** add new platforms [skip ci] (\ `f2ccc51 `_\ )
+* **kitchen+travis:** adjust matrix to add ``3000.3`` [skip ci] (\ `95562e3 `_\ )
+* **travis:** add notifications => zulip [skip ci] (\ `88b4bee `_\ )
+* **workflows/commitlint:** add to repo [skip ci] (\ `7a19e61 `_\ )
+
+Styles
+^^^^^^
+
+
+* **libtofs:** it's prettier with the Jinja open mark not indented (\ `7411517 `_\ )
+* **libtofs:** use Black-inspired Jinja formatting (\ `5f27ff8 `_\ ), closes `/github.com/saltstack-formulas/libvirt-formula/pull/77#issuecomment-637838178 `_
+* **map:** use Black-inspired Jinja formatting (\ `d05e403 `_\ ), closes `/github.com/saltstack-formulas/libvirt-formula/pull/77#issuecomment-652476823 `_
+* **map.jinja:** it's prettier with the Jinja open mark not indented (\ `c81943b `_\ )
+
`3.7.5 `_ (2020-05-03)
---------------------------------------------------------------------------------------------------------
diff --git a/kitchen.yml b/kitchen.yml
index 1acef02..c62cf5b 100644
--- a/kitchen.yml
+++ b/kitchen.yml
@@ -14,102 +14,108 @@ platforms:
## SALT `master`
- name: debian-10-master-py3
driver:
- image: netmanagers/salt-master-py3:debian-10
+ image: saltimages/salt-master-py3:debian-10
+ - name: ubuntu-2004-master-py3
+ driver:
+ image: saltimages/salt-master-py3:ubuntu-20.04
- name: ubuntu-1804-master-py3
driver:
- image: netmanagers/salt-master-py3:ubuntu-18.04
+ image: saltimages/salt-master-py3:ubuntu-18.04
- name: centos-8-master-py3
driver:
- image: netmanagers/salt-master-py3:centos-8
+ image: saltimages/salt-master-py3:centos-8
+ - name: fedora-32-master-py3
+ driver:
+ image: saltimages/salt-master-py3:fedora-32
- name: fedora-31-master-py3
driver:
- image: netmanagers/salt-master-py3:fedora-31
- - name: opensuse-leap-151-master-py3
+ image: saltimages/salt-master-py3:fedora-31
+ - name: opensuse-leap-152-master-py3
driver:
- image: netmanagers/salt-master-py3:opensuse-leap-15.1
+ image: saltimages/salt-master-py3:opensuse-leap-15.2
run_command: /usr/lib/systemd/systemd
- # Workaround to avoid intermittent failures on `opensuse-leap-15.1`:
+ # Workaround to avoid intermittent failures on `opensuse-leap-15.2`:
# => SCP did not finish successfully (255): (Net::SCP::Error)
transport:
max_ssh_sessions: 1
- name: amazonlinux-2-master-py3
driver:
- image: netmanagers/salt-master-py3:amazonlinux-2
+ image: saltimages/salt-master-py3:amazonlinux-2
- ## SALT `3000.2`
- - name: debian-10-3000-2-py3
+ ## SALT `3000.3`
+ - name: debian-10-3000-3-py3
driver:
- image: netmanagers/salt-3000.2-py3:debian-10
- - name: debian-9-3000-2-py3
+ image: saltimages/salt-3000.3-py3:debian-10
+ - name: debian-9-3000-3-py3
driver:
- image: netmanagers/salt-3000.2-py3:debian-9
- - name: ubuntu-1804-3000-2-py3
+ image: saltimages/salt-3000.3-py3:debian-9
+ - name: ubuntu-1804-3000-3-py3
driver:
- image: netmanagers/salt-3000.2-py3:ubuntu-18.04
- - name: centos-8-3000-2-py3
+ image: saltimages/salt-3000.3-py3:ubuntu-18.04
+ - name: centos-8-3000-3-py3
driver:
- image: netmanagers/salt-3000.2-py3:centos-8
- - name: centos-7-3000-2-py3
+ image: saltimages/salt-3000.3-py3:centos-8
+ - name: centos-7-3000-3-py3
driver:
- image: netmanagers/salt-3000.2-py3:centos-7
- - name: fedora-31-3000-2-py3
+ image: saltimages/salt-3000.3-py3:centos-7
+ - name: fedora-31-3000-3-py3
driver:
- image: netmanagers/salt-3000.2-py3:fedora-31
- - name: opensuse-leap-151-3000-2-py3
+ image: saltimages/salt-3000.3-py3:fedora-31
+ - name: opensuse-leap-152-3000-3-py3
driver:
- image: netmanagers/salt-3000.2-py3:opensuse-leap-15.1
+ image: saltimages/salt-3000.3-py3:opensuse-leap-15.2
run_command: /usr/lib/systemd/systemd
- # Workaround to avoid intermittent failures on `opensuse-leap-15.1`:
+ # Workaround to avoid intermittent failures on `opensuse-leap-15.2`:
# => SCP did not finish successfully (255): (Net::SCP::Error)
transport:
max_ssh_sessions: 1
- - name: amazonlinux-2-3000-2-py3
+ - name: amazonlinux-2-3000-3-py3
driver:
- image: netmanagers/salt-3000.2-py3:amazonlinux-2
- - name: ubuntu-1804-3000-2-py2
+ image: saltimages/salt-3000.3-py3:amazonlinux-2
+ - name: ubuntu-1804-3000-3-py2
driver:
- image: netmanagers/salt-3000.2-py2:ubuntu-18.04
- - name: ubuntu-1604-3000-2-py2
+ image: saltimages/salt-3000.3-py2:ubuntu-18.04
+ - name: ubuntu-1604-3000-3-py2
driver:
- image: netmanagers/salt-3000.2-py2:ubuntu-16.04
- - name: arch-base-latest-3000-2-py2
+ image: saltimages/salt-3000.3-py2:ubuntu-16.04
+ - name: arch-base-latest-3000-3-py2
driver:
- image: netmanagers/salt-3000.2-py2:arch-base-latest
+ image: saltimages/salt-3000.3-py2:arch-base-latest
run_command: /usr/lib/systemd/systemd
## SALT `2019.2`
- name: debian-10-2019-2-py3
driver:
- image: netmanagers/salt-2019.2-py3:debian-10
+ image: saltimages/salt-2019.2-py3:debian-10
- name: debian-9-2019-2-py3
driver:
- image: netmanagers/salt-2019.2-py3:debian-9
+ image: saltimages/salt-2019.2-py3:debian-9
- name: ubuntu-1804-2019-2-py3
driver:
- image: netmanagers/salt-2019.2-py3:ubuntu-18.04
+ image: saltimages/salt-2019.2-py3:ubuntu-18.04
- name: ubuntu-1604-2019-2-py3
driver:
- image: netmanagers/salt-2019.2-py3:ubuntu-16.04
+ image: saltimages/salt-2019.2-py3:ubuntu-16.04
- name: centos-8-2019-2-py3
driver:
- image: netmanagers/salt-2019.2-py3:centos-8
+ image: saltimages/salt-2019.2-py3:centos-8
- name: centos-7-2019-2-py3
driver:
- image: netmanagers/salt-2019.2-py3:centos-7
+ image: saltimages/salt-2019.2-py3:centos-7
- name: fedora-31-2019-2-py3
driver:
- image: netmanagers/salt-2019.2-py3:fedora-31
- - name: opensuse-leap-151-2019-2-py3
+ image: saltimages/salt-2019.2-py3:fedora-31
+ - name: opensuse-leap-152-2019-2-py3
driver:
- image: netmanagers/salt-2019.2-py3:opensuse-leap-15.1
+ image: saltimages/salt-2019.2-py3:opensuse-leap-15.2
run_command: /usr/lib/systemd/systemd
- # Workaround to avoid intermittent failures on `opensuse-leap-15.1`:
+ # Workaround to avoid intermittent failures on `opensuse-leap-15.2`:
# => SCP did not finish successfully (255): (Net::SCP::Error)
transport:
max_ssh_sessions: 1
- name: amazonlinux-2-2019-2-py3
driver:
- image: netmanagers/salt-2019.2-py3:amazonlinux-2
+ image: saltimages/salt-2019.2-py3:amazonlinux-2
# Python2 version problem
# SaltStack runs under python 2.7 but system is python 2.6
# The python libvirt library can't be used
@@ -119,11 +125,11 @@ platforms:
# run_command: /sbin/init
- name: amazonlinux-1-2019-2-py2
driver:
- image: netmanagers/salt-2019.2-py2:amazonlinux-1
+ image: saltimages/salt-2019.2-py2:amazonlinux-1
run_command: /sbin/init
- name: arch-base-latest-2019-2-py2
driver:
- image: netmanagers/salt-2019.2-py2:arch-base-latest
+ image: saltimages/salt-2019.2-py2:arch-base-latest
run_command: /usr/lib/systemd/systemd
provisioner:
diff --git a/libvirt/libtofs.jinja b/libvirt/libtofs.jinja
index 0668925..f39fd42 100644
--- a/libvirt/libtofs.jinja
+++ b/libvirt/libtofs.jinja
@@ -1,40 +1,37 @@
-{%- 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"
state function. This makes easier the usage of the Template Override and
Files Switch (TOFS) pattern.
-
Params:
* source_files: ordered list of files to look for
- * lookup: key under ':tofs:source_files' to prepend to the
+ * lookup: key under ":tofs:source_files" to prepend to the
list of source files
* default_files_switch: if there's no config (e.g. pillar)
- ':tofs:files_switch' this is the ordered list of grains to
+ ":tofs:files_switch" this is the ordered list of grains to
use as selector switch of the directories under
"/files"
* indent_width: indentation of the result value to conform to YAML
* use_subpath: defaults to `False` but if set, lookup the source file
recursively from the current state directory up to `tplroot`
-
Example (based on a `tplroot` of `xxx`):
-
If we have a state:
-
Deploy configuration:
file.managed:
- 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
-
In a minion with id=theminion and os_family=RedHat, it's going to be
rendered as:
-
Deploy configuration:
file.managed:
- name: /etc/yyy/zzz.conf
@@ -46,67 +43,73 @@
- salt://xxx/files/default/etc/yyy/zzz.conf
- salt://xxx/files/default/etc/yyy/zzz.conf.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) }}
- {%- endfor %}
- {%- endfor %}
- {%- endfor %}
- {%- endfor %}
+{%- endfor %}
+{%- endfor %}
+{%- endfor %}
+{%- endfor %}
{%- endmacro %}
diff --git a/libvirt/map.jinja b/libvirt/map.jinja
index a4ad60a..81be69f 100644
--- a/libvirt/map.jinja
+++ b/libvirt/map.jinja
@@ -2,115 +2,175 @@
# vim: ft=jinja
{#- Get the `tplroot` from `tpldir` #}
-{%- set tplroot = tpldir.split('/')[0] %}
+{%- set tplroot = tpldir.split("/")[0] %}
{%- from tplroot ~ "/libsaltcli.jinja" import cli with context %}
{#- Where to lookup parameters source files #}
-{%- set map_sources_dir = tplroot | path_join('parameters') %}
+{%- set map_sources_dir = tplroot | path_join("parameters") %}
{#- Load defaults first to allow per formula default map.jinja configuration #}
-{%- set _defaults_filename = map_sources_dir | path_join('defaults.yaml') %}
-{%- do salt['log.debug']('map.jinja: initialise parameters from ' ~ _defaults_filename ) %}
+{%- set _defaults_filename = map_sources_dir | path_join("defaults.yaml") %}
+{%- do salt["log.debug"](
+ "map.jinja: initialise parameters from "
+ ~ _defaults_filename
+ ) %}
{%- import_yaml _defaults_filename as default_settings %}
{#- List of sources to lookup for parameters #}
-{%- do salt['log.debug']("map.jinja: lookup 'map_jinja' configuration sources") %}
+{%- do salt["log.debug"]("map.jinja: lookup 'map_jinja' configuration sources") %}
{#- Fallback to previously used grains plus minion `id` #}
-{%- set map_sources = ['osarch', 'os_family', 'os', 'osfinger', 'config_get_lookup', 'config_get', 'id'] %}
+{%- set map_sources = [
+ "osarch",
+ "os_family",
+ "os",
+ "osfinger",
+ "config_get_lookup",
+ "config_get",
+ "id",
+ ] %}
{#- Configure map.jinja from defaults.yaml #}
-{%- set map_sources = default_settings | traverse('values:map_jinja:sources', map_sources) %}
+{%- set map_sources = default_settings | traverse(
+ "values:map_jinja:sources",
+ map_sources,
+ ) %}
{#- Lookup global sources #}
-{%- set map_sources = salt['config.get']('map_jinja:sources', map_sources) %}
+{%- set map_sources = salt["config.get"]("map_jinja:sources", map_sources) %}
{#- Lookup per formula sources #}
-{%- set map_sources = salt['config.get'](tplroot ~ ':map_jinja:sources', map_sources) %}
+{%- set map_sources = salt["config.get"](
+ tplroot ~ ":map_jinja:sources",
+ map_sources,
+ ) %}
-{%- do salt['log.debug']('map.jinja: load parameters with sources from ' ~ map_sources) %}
+{%- do salt["log.debug"](
+ "map.jinja: load parameters with sources from "
+ ~ map_sources
+ ) %}
{#- Work around assignment inside for loop #}
{#- load configuration values used in `config.get` merging strategies #}
-{%- set _config = {'stack': default_settings.get('values', {}),
- 'merge_strategy': salt['config.get'](tplroot ~ ':strategy', None),
- 'merge_lists': salt['config.get'](tplroot ~ ':merge_lists', False)
- } %}
+{%- set _config = {
+ "stack": default_settings.get("values", {}),
+ "merge_strategy": salt["config.get"](tplroot ~ ":strategy", None),
+ "merge_lists": salt["config.get"](tplroot ~ ":merge_lists", False),
+ } %}
{#- the `config.get` merge option only works for `minion` or `local` salt command types #}
-{%- if cli in ['minion', 'local'] %}
- {%- do _config.update({'merge_opt': {'merge': _config['merge_strategy']},
- 'merge_msg': ", merge: strategy='" ~ _config['merge_strategy'] ~ "'"}) %}
+{%- if cli in ["minion", "local"] %}
+{%- do _config.update(
+ {
+ "merge_opt": {"merge": _config["merge_strategy"]},
+ "merge_msg": ", merge: strategy='" ~ _config["merge_strategy"] ~ "'",
+ }
+ ) %}
{#- the `config.get` merge option is not available for `ssh` or `unknown` salt command types #}
{%- else %}
- {%- if _config['merge_strategy'] %}
- {%- do salt['log.error']("map.jinja: the 'merge' option of 'config.get' is skipped when the salt command type is '" ~ cli ~ "'") %}
- {%- endif %}
- {%- do _config.update({'merge_opt': {},
- 'merge_msg': ''}) %}
+{%- if _config["merge_strategy"] %}
+{%- do salt["log.error"](
+ "map.jinja: the 'merge' option of 'config.get' is skipped when the salt command type is '"
+ ~ cli
+ ~ "'"
+ ) %}
+{%- endif %}
+{%- do _config.update(
+ {
+ "merge_opt": {},
+ "merge_msg": "",
+ }
+ ) %}
{%- endif %}
{#- process each `map.jinja` source #}
{%- for map_source in map_sources %}
- {%- if map_source in ['config_get', 'config_get_lookup'] %}
- {%- set _config_key = {'config_get': tplroot,
- 'config_get_lookup': tplroot ~ ':lookup'}.get(map_source) %}
- {%- set _config_type = {'config_get': 'configuration',
- 'config_get_lookup': 'lookup'}.get(map_source) %}
-
- {%- do salt['log.debug']("map.jinja: retrieve formula " ~ _config_type
- ~ " with 'config.get'"
- ~ _config['merge_msg']
- ) %}
- {%- set _config_get = salt['config.get'](_config_key, default={}, **_config['merge_opt']) %}
-
- {#- `slsutil.merge` defaults to `smart` instead of `None` for `config.get` #}
- {%- set _strategy = _config['merge_strategy'] | default('smart', boolean=True) %}
- {%- do salt['log.debug']("map.jinja: merge formula " ~ _config_type
- ~ " retrieved with 'config.get'"
- ~ ", merge: strategy='" ~ _strategy
- ~ "', lists='" ~ _config['merge_lists'] ~ "'"
- ) %}
- {%- do _config.update({'stack': salt['slsutil.merge'](_config['stack'],
- _config_get,
- strategy=_strategy,
- merge_lists=_config['merge_lists'])})
- %}
- {%- else %}
- {#- Lookup the grain/pillar/... #}
- {#- Fallback to use the source name as a direct filename #}
- {%- set map_values = salt['config.get'](map_source, []) %}
-
- {#- Mangle `map_source` to use it as literal path #}
- {%- if map_values|length == 0 %}
- {%- set map_source_parts = map_source.split('/') %}
- {%- set map_source = map_source_parts[0:-1] | join('/') %}
- {%- set map_values = map_source_parts[-1].rstrip('.yaml') %}
- {%- endif %}
-
- {#- Some configuration return list #}
- {%- if map_values is string %}
- {%- set map_values = [map_values] %}
- {%- endif %}
-
- {%- for map_value in map_values %}
- {%- set yamlfile = map_sources_dir | path_join(map_source, map_value ~ '.yaml') %}
- {%- do salt['log.debug']('map.jinja: load parameters from file ' ~ yamlfile) %}
- {%- load_yaml as loaded_values %}
- {%- include yamlfile ignore missing %}
- {%- endload %}
-
- {%- if loaded_values %}
- {#- Merge loaded values on the stack #}
- {%- do salt['log.debug']('map.jinja: merge parameters from ' ~ yamlfile) %}
- {%- do _config.update({'stack': salt['slsutil.merge'](_config['stack'],
- loaded_values.get('values', {}),
- strategy=loaded_values.get('strategy', 'smart'),
- merge_lists=loaded_values.get('merge_lists', False) | to_bool)})
- %}
- {%- endif %}
- {%- endfor %}
- {%- endif %}
+{%- if map_source in ["config_get", "config_get_lookup"] %}
+{%- set _config_key = {
+ "config_get": tplroot,
+ "config_get_lookup": tplroot ~ ":lookup",
+ }.get(map_source) %}
+{%- set _config_type = {
+ "config_get": "configuration",
+ "config_get_lookup": "lookup",
+ }.get(map_source) %}
+
+{%- do salt["log.debug"](
+ "map.jinja: retrieve formula "
+ ~ _config_type
+ ~ " with 'config.get'"
+ ~ _config["merge_msg"]
+ ) %}
+{%- set _config_get = salt["config.get"](
+ _config_key, default={}, **_config["merge_opt"]
+ ) %}
+
+{#- `slsutil.merge` defaults to `smart` instead of `None` for `config.get` #}
+{%- set _strategy = _config["merge_strategy"] | default("smart", boolean=True) %}
+{%- do salt["log.debug"](
+ "map.jinja: merge formula "
+ ~ _config_type
+ ~ " retrieved with 'config.get'"
+ ~ ", merge: strategy='"
+ ~ _strategy
+ ~ "', lists='"
+ ~ _config["merge_lists"]
+ ~ "'"
+ ) %}
+{%- do _config.update(
+ {
+ "stack": salt["slsutil.merge"](
+ _config["stack"],
+ _config_get,
+ strategy=_strategy,
+ merge_lists=_config["merge_lists"],
+ )
+ }
+ ) %}
+{%- else %}
+{#- Lookup the grain/pillar/... #}
+{#- Fallback to use the source name as a direct filename #}
+{%- set map_values = salt["config.get"](map_source, []) %}
+
+{#- Mangle `map_source` to use it as literal path #}
+{%- if map_values | length == 0 %}
+{%- set map_source_parts = map_source.split("/") %}
+{%- set map_source = map_source_parts[0:-1] | join("/") %}
+{%- set map_values = map_source_parts[-1].rstrip(".yaml") %}
+{%- endif %}
+
+{#- Some configuration return list #}
+{%- if map_values is string %}
+{%- set map_values = [map_values] %}
+{%- endif %}
+
+{%- for map_value in map_values %}
+{%- set yamlfile = map_sources_dir | path_join(
+ map_source,
+ map_value ~ ".yaml",
+ ) %}
+{%- do salt["log.debug"]("map.jinja: load parameters from file " ~ yamlfile) %}
+{%- load_yaml as loaded_values %}
+{%- include yamlfile ignore missing %}
+{%- endload %}
+
+{%- if loaded_values %}
+{#- Merge loaded values on the stack #}
+{%- do salt["log.debug"]("map.jinja: merge parameters from " ~ yamlfile) %}
+{%- do _config.update(
+ {
+ "stack": salt["slsutil.merge"](
+ _config["stack"],
+ loaded_values.get("values", {}),
+ strategy=loaded_values.get("strategy", "smart"),
+ merge_lists=loaded_values.get("merge_lists", False)
+ | to_bool,
+ )
+ }
+ ) %}
+{%- endif %}
+{%- endfor %}
+{%- endif %}
{%- endfor %}
-{%- do salt['log.debug']("map.jinja: save parameters in variable 'libvirt_settings'") %}
-{%- set libvirt_settings = _config['stack'] %}
+{%- do salt["log.debug"]("map.jinja: save parameters in variable 'libvirt_settings'") %}
+{%- set libvirt_settings = _config["stack"] %}