diff --git a/.codecov.yml b/.codecov.yml index 2af1c2c240cd..a5a5c8533688 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,6 +1,6 @@ codecov: ci: - - jenkinsci.saltstack.com + - jenkins.saltproject.io - github.com max_report_age: 24 # The age you want coverage reports to expire at, or if you diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 14b6bfef056c..96ad7632af3a 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -45,7 +45,9 @@ jobs: shell: bash run: | set -o pipefail - pre-commit run -v --hook-stage manual check-known-missing-docstrings --show-diff-on-failure --color=never --files ${{ join(fromJSON(steps.changed-files.outputs.salt_files), ' ') }} | tee output.txt + pre-commit run --hook-stage manual check-known-missing-docstrings \ + --show-diff-on-failure --color=never \ + --files ${{ join(fromJSON(steps.changed-files.outputs.salt_files), ' ') }} | tee output.txt - name: Comment on PR # Comment on PRs if pre-commit triggered a failure diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml new file mode 100644 index 000000000000..b70ec576e758 --- /dev/null +++ b/.github/workflows/release-tag.yml @@ -0,0 +1,71 @@ +name: Generate Tag and Github Release + +on: + workflow_dispatch: + inputs: + saltVersion: + description: 'Salt Version' + required: true + saltRepo: + description: 'Salt Repo' + default: saltstack/salt + saltBranch: + description: 'Salt Branch' + default: freeze + reTag: + description: 'Re Tag (Deletes tag and release)' + default: false + +jobs: + GenerateTagRelease: + name: Generate Tag and Github Release + runs-on: ubuntu-latest + steps: + - uses: dev-drprasad/delete-tag-and-release@v0.2.0 + if: github.event.inputs.reTag == 'true' + with: + delete_release: true # default: false + tag_name: v${{ github.event.inputs.saltVersion }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/checkout@v2 + with: + repository: ${{ github.event.inputs.saltRepo }} + ref: ${{ github.event.inputs.saltBranch }} + - name: Bump version and push tag + id: tag_version + uses: mathieudutour/github-tag-action@v5.6 + with: + create_annotated_tag: True + github_token: ${{ secrets.GITHUB_TOKEN }} + custom_tag: ${{ github.event.inputs.saltVersion }} + + - name: Set up Python 3.8 + uses: actions/setup-python@v1 + with: + python-version: 3.8 + + - uses: actions/checkout@v2 + - name: Install pypa/build + run: | + python -m pip install build --user + - name: Build a binary wheel and a source tarball + run: | + git fetch --tags origin + git checkout v${{ github.event.inputs.saltVersion }} + chmod 700 conf/cloud.*.d + chmod 600 conf/cloud + chmod 600 conf/cloud.profiles + chmod 600 conf/cloud.providers + python3 setup.py --ssh-packaging sdist + python -m build --sdist --outdir dist/ . + - name: Create a GitHub release + uses: ncipollo/release-action@v1 + with: + tag: ${{ steps.tag_version.outputs.new_tag }} + name: Release ${{ steps.tag_version.outputs.new_tag }} + body: | + WARNING: The tarball generated by GitHub will not have the correct version information when using a version not ending in .0 . Please use the tarball generated by SaltStack instead. See issue #41847 for more information. + Official Salt packages can be found at https://repo.saltproject.io/ + artifacts: dist/salt*.tar.gz diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000000..e6d4e214d40a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,196 @@ +name: Generate Release Docs + +on: + workflow_dispatch: + inputs: + saltVersion: + description: 'Salt Version' + required: true + manPages: + description: "Build Man Pages" + default: true + required: false + branch: + description: "Branch to build/push PR" + default: "master" + required: false + +jobs: + SaltChangelog: + name: Build Salt Changelog + runs-on: ubuntu-latest + + container: + image: python:3.8.6-slim-buster + + steps: + + - name: Install System Deps + run: | + echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list + apt-get update + apt-get install -y enchant git gcc imagemagick make zlib1g-dev libc-dev libffi-dev g++ libxml2 libxml2-dev libxslt-dev libcurl4-openssl-dev libssl-dev libgnutls28-dev xz-utils + apt-get install -y git/buster-backports + + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.inputs.branch }} + fetch-depth: 0 + + - name: Install Nox + env: + PIP_EXTRA_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ + run: | + python -m pip install --upgrade pip + pip install nox + + - id: changed-files + name: Get Changed Files + uses: dorny/paths-filter@v2 + with: + token: ${{ github.token }} + list-files: json + filters: | + docs: + - doc/** + + - name: Install Python Requirements + env: + PIP_EXTRA_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ + run: | + nox --install-only --forcecolor -e 'changelog(force=True, draft=False)' -- ${{ github.event.inputs.saltVersion }} + nox --install-only --forcecolor -e 'changelog(force=False, draft=True)' -- ${{ github.event.inputs.saltVersion }} + + - name: Build Changelog + env: + SKIP_REQUIREMENTS_INSTALL: YES + run: | + nox --forcecolor -e 'changelog(force=False, draft=True)' -- ${{ github.event.inputs.saltVersion }} > rn_changelog + nox --forcecolor -e 'changelog(force=True, draft=False)' -- ${{ github.event.inputs.saltVersion }} + git restore --staged changelog/ + git diff --no-color > rm_changelog_patch.txt + + - name: Store Generated Changelog + uses: actions/upload-artifact@v2 + with: + name: salt-changelog + path: | + CHANGELOG.md + rm_changelog_patch.txt + rn_changelog + + Manpages: + name: Build Salt man Pages + runs-on: ubuntu-latest + + container: + image: python:3.8.6-slim-buster + + steps: + + - name: Install System Deps + if: github.event.inputs.manPages == 'true' + run: | + echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list + apt-get update + apt-get install -y enchant git gcc imagemagick make zlib1g-dev libc-dev libffi-dev g++ libxml2 libxml2-dev libxslt-dev libcurl4-openssl-dev libssl-dev libgnutls28-dev + apt-get install -y git/buster-backports + + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.inputs.branch }} + + + - id: changed-files + if: github.event.inputs.manPages == 'true' + name: Get Changed Files + uses: dorny/paths-filter@v2 + with: + token: ${{ github.token }} + list-files: json + filters: | + docs: + - doc/** + + - name: Install Nox + if: github.event.inputs.manPages == 'true' + env: + PIP_EXTRA_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ + run: | + python -m pip install --upgrade pip + pip install nox + + - name: Install Python Requirements + if: github.event.inputs.manPages == 'true' + env: + PIP_EXTRA_INDEX_URL: https://pypi-proxy.saltstack.net/root/local/+simple/ + run: + nox --install-only --forcecolor -e 'docs-man(compress=False, update=True, clean=True)' + + - name: Build Manpages + if: github.event.inputs.manPages == 'true' + env: + SKIP_REQUIREMENTS_INSTALL: YES + run: | + nox --forcecolor -e 'docs-man(compress=False, update=True, clean=True)' + + - name: Store Generated Documentation + if: github.event.inputs.manPages == 'true' + uses: actions/upload-artifact@v2 + with: + name: salt-man-pages + path: doc/_build/man + + PullRequest: + needs: [SaltChangelog, Manpages] + name: Create Pull Request + runs-on: ubuntu-latest + + container: + image: python:3.8.6-slim-buster + + steps: + - name: Install System Deps + run: | + echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list + apt-get update + apt-get install -y enchant git gcc imagemagick make zlib1g-dev libc-dev libffi-dev g++ libxml2 libxml2-dev libxslt-dev libcurl4-openssl-dev libssl-dev libgnutls28-dev xz-utils + apt-get install -y git/buster-backports + + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.inputs.branch }} + fetch-depth: 0 + + - name: Download salt-man-pages + if: github.event.inputs.manPages == 'true' + uses: actions/download-artifact@v2 + with: + name: salt-man-pages + path: doc/man/ + + - name: Download salt changelog + uses: actions/download-artifact@v2 + with: + name: salt-changelog + + - name: Generate Release Notes and changelog + run: | + git apply rm_changelog_patch.txt + rm rm_changelog_patch.txt + sed -i '0,/^======/d' rn_changelog + cat rn_changelog + cat rn_changelog >> doc/topics/releases/${{ github.event.inputs.saltVersion }}.rst + rm rn_changelog + + - name: Create Pull Request for Release + uses: peter-evans/create-pull-request@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: Add changelog and docs for ${{ github.event.inputs.saltVersion }} release + title: 'Generate Salt Man Page and Changelog' + body: > + This PR is auto-generated by + [create-pull-request](https://github.com/peter-evans/create-pull-request). + branch: docs_${{ github.event.inputs.saltVersion }} + base: ${{ github.event.inputs.branch }} diff --git a/.github/workflows/scripts/pr-docstring-comments.py b/.github/workflows/scripts/pr-docstring-comments.py index efe099e8d0d3..6fdbc7dd113d 100644 --- a/.github/workflows/scripts/pr-docstring-comments.py +++ b/.github/workflows/scripts/pr-docstring-comments.py @@ -58,20 +58,15 @@ """ -def delete_previous_comments(pr, created_comment_id): +def get_previous_comments(pr): for comment in pr.get_issue_comments(): if comment.user.login != "github-actions[bot]": # Not a comment made by this bot continue - if comment.id == created_comment_id: - # This is the comment we have just created - continue if not comment.body.startswith(COMMENT_HEADER): # This comment does not start with our header continue - # We have a match, delete it - print(f"Deleting previous comment {comment}") - comment.delete() + yield comment def comment_on_pr(options, issues_output): @@ -87,8 +82,17 @@ def comment_on_pr(options, issues_output): comment_header=COMMENT_HEADER, issues_output=issues_output ) ) + new_comment_content = COMMENT_TEMPLATE.format( + comment_header=COMMENT_HEADER, issues_output=issues_output + ) + for comment in get_previous_comments(pr): + if comment.body.strip() != new_comment_content.strip(): + # The content has changed. + print(f"Deleting previous comment {comment}") + comment.delete() + + comment = pr.create_issue_comment(new_comment_content) print(f"Created Comment: {comment}") - delete_previous_comments(pr, comment.id) def main(): diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 14650c79a329..6831d62ad386 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -139,60 +139,28 @@ repos: - --include=requirements/zeromq.txt - requirements/static/pkg/freebsd.in - - id: pip-tools-compile - alias: compile-pkg-darwin-3.7-zmq-requirements - name: Darwin Packaging Py3.7 ZeroMQ Requirements - files: ^(requirements/((base|zeromq|crypto|darwin|pyobjc)\.txt|static/pkg/(darwin\.in|py3\.7/darwin\.txt)))$ - pass_filenames: false - args: - - -v - - --py-version=3.7 - - --platform=darwin - - --include=requirements/darwin.txt - - --include=requirements/pyobjc.txt - - --passthrough-line-from-input=^pyobjc(.*)$ - - requirements/static/pkg/darwin.in - - - id: pip-tools-compile - alias: compile-pkg-darwin-3.8-zmq-requirements - name: Darwin Packaging Py3.8 ZeroMQ Requirements - files: ^(requirements/((base|zeromq|crypto|darwin|pyobjc)\.txt|static/pkg/(darwin\.in|py3\.8/darwin\.txt)))$ - pass_filenames: false - args: - - -v - - --py-version=3.8 - - --platform=darwin - - --include=requirements/darwin.txt - - --include=requirements/pyobjc.txt - - --passthrough-line-from-input=^pyobjc(.*)$ - - requirements/static/pkg/darwin.in - - id: pip-tools-compile alias: compile-pkg-darwin-3.9-zmq-requirements name: Darwin Packaging Py3.9 ZeroMQ Requirements - files: ^(requirements/((base|zeromq|crypto|darwin|pyobjc)\.txt|static/pkg/(darwin\.in|py3\.9/darwin\.txt)))$ + files: ^(requirements/((base|zeromq|crypto|darwin)\.txt|static/pkg/(darwin\.in|py3\.9/darwin\.txt)))$ pass_filenames: false args: - -v - --py-version=3.9 - --platform=darwin - --include=requirements/darwin.txt - - --include=requirements/pyobjc.txt - - --passthrough-line-from-input=^pyobjc(.*)$ - requirements/static/pkg/darwin.in - id: pip-tools-compile alias: compile-pkg-darwin-3.10-zmq-requirements name: Darwin Packaging Py3.10 ZeroMQ Requirements - files: ^(requirements/((base|zeromq|crypto|darwin|pyobjc)\.txt|static/pkg/(darwin\.in|py3\.10/darwin\.txt)))$ + files: ^(requirements/((base|zeromq|crypto|darwin)\.txt|static/pkg/(darwin\.in|py3\.10/darwin\.txt)))$ pass_filenames: false args: - -v - --py-version=3.10 - --platform=darwin - --include=requirements/darwin.txt - - --include=requirements/pyobjc.txt - - --passthrough-line-from-input=^pyobjc(.*)$ - requirements/static/pkg/darwin.in - id: pip-tools-compile @@ -550,105 +518,38 @@ repos: - --pip-args=--constraint=requirements/static/ci/py{py_version}/freebsd.txt - requirements/static/ci/crypto.in - - - id: pip-tools-compile - alias: compile-ci-darwin-py3.7-zmq-requirements - name: Darwin CI Py3.7 ZeroMQ Requirements - files: ^(pkg/osx/(req|req_pyobjc)\.txt|requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(darwin|common)\.in|pkg/py3\.7/darwin\.txt)))$ - pass_filenames: false - args: - - -v - - --py-version=3.7 - - --platform=darwin - - --include=requirements/darwin.txt - - --include=requirements/pyobjc.txt - - --include=requirements/pytest.txt - - --include=requirements/static/pkg/darwin.in - - --include=requirements/static/ci/common.in - - --passthrough-line-from-input=^pyobjc(.*)$ - - --pip-args=--constraint=requirements/static/pkg/py{py_version}/darwin.txt - - requirements/static/ci/darwin.in - - - id: pip-tools-compile - alias: compile-ci-darwin-py3.8-zmq-requirements - name: Darwin CI Py3.8 ZeroMQ Requirements - files: ^(pkg/osx/(req|req_pyobjc)\.txt|requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(darwin|common)\.in|pkg/py3\.8/darwin\.txt)))$ - pass_filenames: false - args: - - -v - - --py-version=3.8 - - --platform=darwin - - --include=requirements/darwin.txt - - --include=requirements/pyobjc.txt - - --include=requirements/pytest.txt - - --include=requirements/static/pkg/darwin.in - - --include=requirements/static/ci/common.in - - --passthrough-line-from-input=^pyobjc(.*)$ - - --pip-args=--constraint=requirements/static/pkg/py{py_version}/darwin.txt - - requirements/static/ci/darwin.in - - id: pip-tools-compile alias: compile-ci-darwin-py3.9-zmq-requirements name: Darwin CI Py3.9 ZeroMQ Requirements - files: ^(pkg/osx/(req|req_pyobjc)\.txt|requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(darwin|common)\.in|pkg/py3\.9/darwin\.txt)))$ + files: ^(requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(darwin|common)\.in|pkg/py3\.9/darwin\.txt)))$ pass_filenames: false args: - -v - --py-version=3.9 - --platform=darwin - --include=requirements/darwin.txt - - --include=requirements/pyobjc.txt - --include=requirements/pytest.txt - --include=requirements/static/pkg/darwin.in - --include=requirements/static/ci/common.in - - --passthrough-line-from-input=^pyobjc(.*)$ - --pip-args=--constraint=requirements/static/pkg/py{py_version}/darwin.txt - requirements/static/ci/darwin.in - id: pip-tools-compile alias: compile-ci-darwin-py3.10-zmq-requirements name: Darwin CI Py3.10 ZeroMQ Requirements - files: ^(pkg/osx/(req|req_pyobjc)\.txt|requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(darwin|common)\.in|pkg/py3\.10/darwin\.txt)))$ + files: ^(requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(darwin|common)\.in|pkg/py3\.10/darwin\.txt)))$ pass_filenames: false args: - -v - --py-version=3.10 - --platform=darwin - --include=requirements/darwin.txt - - --include=requirements/pyobjc.txt - --include=requirements/pytest.txt - --include=requirements/static/pkg/darwin.in - --include=requirements/static/ci/common.in - - --passthrough-line-from-input=^pyobjc(.*)$ - --pip-args=--constraint=requirements/static/pkg/py{py_version}/darwin.txt - requirements/static/ci/darwin.in - - id: pip-tools-compile - alias: compile-ci-darwin-crypto-py3.7-requirements - name: Darwin CI Py3.7 Crypto Requirements - files: ^requirements/(crypto\.txt|static/ci/(crypto\.in|py3\.7/darwin-crypto\.txt))$ - pass_filenames: false - args: - - -v - - --py-version=3.7 - - --platform=darwin - - --out-prefix=darwin - - --pip-args=--constraint=requirements/static/ci/py{py_version}/darwin.txt - - requirements/static/ci/crypto.in - - - id: pip-tools-compile - alias: compile-ci-darwin-crypto-py3.8-requirements - name: Darwin CI Py3.8 Crypto Requirements - files: ^requirements/(crypto\.txt|static/ci/(crypto\.in|py3\.8/darwin-crypto\.txt))$ - pass_filenames: false - args: - - -v - - --py-version=3.8 - - --platform=darwin - - --out-prefix=darwin - - --pip-args=--constraint=requirements/static/ci/py{py_version}/darwin.txt - - requirements/static/ci/crypto.in - - id: pip-tools-compile alias: compile-ci-darwin-crypto-py3.9-requirements name: Darwin CI Py3.9 Crypto Requirements diff --git a/.pylintrc b/.pylintrc index 6a2d28103f93..fe9357cdb201 100644 --- a/.pylintrc +++ b/.pylintrc @@ -680,11 +680,13 @@ allowed-3rd-party-modules=msgpack, libcloud, zmq, pytest, + _pytest, attr, setuptools, pytestsalt, saltfactories, psutil, + pytestshellutils, distro, os, re, diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f5faf9ffc8b..0f4fc1e6e667 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,378 @@ Versions are `MAJOR.PATCH`. # Changelog +Salt 3005.1 (2022-09-26) +======================== + +Fixed +----- + +- Fix arch parsing issue in apt source files (#62247) +- Fixed parsing CDROM apt sources (#62474) +- Use str() method instead of repo_line for when python3-apt is installed or not in aptpkg.py. (#62546) +- Remove the connection_timeout from netmiko_connection_args before netmiko_connection_args is added to __context__["netmiko_device"]["args"] which is passed along to the Netmiko library. (#62547) +- fixes #62553 by checking for disabled master_type before starting master connection and skipping it if set. (#62553) +- Fix runas with cmd module when using the onedir bundled packages (#62565) +- Fix the Pyinstaller hooks to preserve the environment if None is passed. (#62567, #62628) +- pkgrepo.managed sets wrong permissions on keys installed to /etc/apt/keyring (#62569) +- pkgrepo.managed creates zero byte gpg files when dearmoring contents to the same filename (#62570) +- Ensure default values for IPC Buffers are correct type (#62591) +- Fix a hang on salt-ssh when using sudo. (#62603) +- Renderers now have access to the correct set of salt functions. (#62610, #62620) +- Fix including Jinja template from absolute path (#62611) +- include jmespath in package requirements (#62613) +- Fix pkgrepo.managed signed-by in test=true mode (#62662) +- Ensure the status of the service is captured when the beacon function is called, even when the event is not being emitted. (#62675) +- The sub proxies controlled by Deltaproxy need to have their own req_channel otherwise there are timeout exceptions when the __master_req_channel_payload is fired and reacted on. (#62708) + + +Salt 3005 (2022-08-22) +====================== + +Removed +------- + +- Deprecating and removing salt-unity. (#56055) +- Removed support for macos mojave (#61130) +- Removed `salt.utils.MultiprocessingProcess` and `salt.utils.SignalHandlingMultiprocessingProcess`. Please use `salt.utils.Process` and `salt.utils.SignalHandlingProcess` instead. (#61573) +- Remove the grains.get_or_set_hash function. Please reference pillar and SDB documentation for secure ways to manage sensitive information. Grains are an insecure way to store secrets. (#61691) +- Removed the `telnet_port`, `serial_type` and `console` parameters in salt/modules/virt.py. Use the `serials` and `consoles` parameters instead. Use the `serials` parameter with a value like ``{{{{'type': 'tcp', 'protocol': 'telnet', 'port': {}}}}}`` instead and a similar `consoles` parameter. (#61693) +- Remove remove_lock in zypperpkg.py in favor of unhold. + Remove add_lock in zypperpkg.py in favor of hold. (#61694) +- Removed support for old-style Windows Group Policy names + Recommended policy names will be displayed in comments (#61696) +- Remove the feature flag feature.enable_slsvars_fixes and enable the fixes for `sls_path`, `tpl_file`, and `tpldir` by default. + Enabling this behavior by default will fix the following: + - tpldir: If your directory name and your SLS file name are the same tpldir used to return a ., now it returns the correct directory name. + - slspath,slsdotpath,slscolonpath,sls_path: If an init.sls file is accessed by its explicit name path.to.init instead of path.to, init shows up as a directory for in various sls context parameters, now it will only show as a file. + - tplfile: When using tplfile in a SLS file in the root directory of file roots it returns empty. Now it returns the filename. (#61697) +- Remove SaltMessageServer.shutdown in favor of close. + Remove LoadBalancerWorker.stop in favor of close. (#61698) +- Removed the PyObjC dependency. + + This addresses problems with building a one dir build for macOS. + It became problematic because depending on the macOS version, it pulls different dependencies, and we would either have to build a macos onedir for each macOS supported release, or ship a crippled onedir(because it would be tied to the macOS version where the onedir was built). + Since it's currently not being used, it's removed. (#62432) + + +Deprecated +---------- + +- In etcd_util, the recursive kwarg in the read and delete methods has been deprecated in favor of recurse for both client versions. + In etcd_util, the index kwarg in the watch method has been deprecated in favor of start_revision for both client versions. + In etcd_util, the waitIndex kwarg in the read method has been deprecated in favor of start_revision for both client versions. + The etcd API v2 implementation has been deprecated in favor of etcd API v3. (#60325) +- Deprecated transport kwarg inside salt.utils.event.get_event (#61275) +- Deprecated netmiko_conn and pyeapi_conn in napalm_mod.py as these function should not be called from the CLI (#61566) +- Deprecate all Azure cloud modules (#62183) +- Deprecated ``defaults`` and ``preserve_context`` for ``salt.utils.functools.namespaced_function``. + Additionally, the behavior when ``preserve_namespace=True`` was passed is now the default in order not to require duplicating imports on the modules that are namespacing functions. (#62272) +- Deprecated the cassandra module in favor of the cassandra_cql module/returner. (#62327) + + +Changed +------- + +- alternatives: Do not access /var/lib/dpkg/alternatives directly (#58745) +- Enhance logging when there are errors at loading beacons (#60402) +- Updated mysql cache module to also store updated timestamp, making it consistent with default cache module. Users of mysql cache should ensure database size before updating, as ALTER TABLE will add the timestamp column. (#61081) +- Changed linux_shadow to test success of commands using cmd.retcode instead of cmd.run (#61932) +- `zabbix.user_get` returns full user info with groups and medias + `zabbix.user_addmedia` returns error for Zabbix 4.0+ due to `user.addmedia` method removal + `zabbix.user_deletemedia` returns error for Zabbix 4.0+ due to `user.deletemedia` method removal (#62012) +- "Sign before ending the testrun in x509.create_certificate" (#62100) + + +Fixed +----- + +- Fix salt-ssh using sudo with a password (#8882) +- Fix SSH password regex to not search for content after password:. (#25721) +- Addressing a few issues when having keep_symlinks set to True with file.recurse. Also allow symlinks that are outside the salt fileserver root to be discoverable as symlinks when fileserver_followsymlinks is set to False. (#29562) +- serialize to JSON only non string objects. (#35215) +- Fix archive.extracted doesn't set user/group ownership correctly (#38605) +- Make sys.argspec work on functions with annotations (#48735) +- Fixed pdbedit.list_users with Samba 4.8 (#49648) +- Fixes a scenario where ipv6 is enabled but the master is configured as an ipv4 IP address. (#49835) +- Ensure that NOTIFY_SOCKET is not passed to child processes created with cmdmod unless it's set explicitly for such call. (#50851) +- remove escaping of dbname in mysql.alter_db function. (#51559) +- Fix runit module failing to find service if it is not symlinked. (#52759) +- Changed manage.versions to report minions offline if minion call fails. (#53513) +- Fixed events stream from /events endpoint not halting when auth token has expired. (#53742) +- Fixed user.present which was breaking when updating workphone,homephone, fullname and "other" fields in case int was passed instead of string (#53961) +- Fix error in webutil state module when attempting to grep a file that does not exist. (#53977) +- Fixed ability to modify the "Audit: Force audit policy subcategory settings..." policy (#54301) +- Fix timeout handling in netapi/saltnado. (#55394) +- Fixing REST auth so that we actually support using ACLs from the REST server like we said in the documentation. (#55654) +- Salt now correctly handles macOS after Py3.8 where python defaults to spawn instead of fork. (#55847) +- Factor out sum and sorting of permissions into separate functions. + Additionally, the same logic was applied to the rest_cherrypy netapi (#56495) +- Display packages that are marked NoRemove in pkg.list_pkgs for Windows platforms (#56864) +- Attempt to fix 56957 by detecting the broken recusion and stopping it. (#56957) +- Fixed bytes vs. text issue when using sqlite for sdb backend. (#57133) +- Ensure test is added to opts when using the state module with salt-ssh. (#57144) +- Fixed RuntimeError OrderedDict mutated in network.managed for Debian systems. (#57721) +- Improved the multiprocessing classes to better handle spawning platforms (#57742) +- Config options are enforced according to config type (#57873) +- fixed 57992 fix multi item kv v2 items read. (#57992) +- Fixed thread leak during FQDN lookup when DNS entries had malformed PTR records, or other similar issues. (#58141) +- Remove unnecessary dot in template that cause the bridge interface to fail on debian. Fixes #58195 (#58195) +- update salt.module.schedule to check the job_args and job_kwargs for valid formatting. (#58329) +- Allowe use of `roster` in salt.function state when using the SSH client. (#58662) +- Detect new and legacy styles of calling module.run and support them both. (#58763) +- Clean repo uri before checking if it's present, avoiding ghost change. (#58807) +- Fix error "'__opts__' is not defined" when using the boto v2 modules (#58934) +- hgfs: fix bytes vs str issues within hgfs. (#58963) +- Fixes salt-ssh error when targetting IPs or hostnames directly. (#59033) +- Allow for multiple configuration entries with keyword strict_config=False on yum-based systems (#59090) +- Fixed error when running legacy code in winrepo.update_git_repos (#59101) +- Clarify the persist argument in the scheduler module. Adding code in the list function to indicate if the schedule job is saved or not. (#59102) +- Swap ret["retcode"] for ret.get("retcode") in the event that there is no retcode, eg. when a function is not passed with a module. (#59331) +- Fix race condition when caching vault tokens (#59361) +- The ssh module now accepts all ssh public key types as of openssh server version 8.7. (#59429) +- Set default transport and port settings for Napalm NXOS, if not set. (#59448) +- Use __salt_system_encoding__ when retrieving keystore certificate SHA1 str (#59503) +- Fix error being thrown on empty flags list given to file.replace (#59554) +- Update url for ez_setup.py script in virtualenv_mod.py (#59604) +- Changed yumpkg module to normalize versions to strings when they were ambiguously floats (example version=3005.0). (#59705) +- Fix pillar_roots.write on subdirectories broken after CVE-2021-25282 patch. (#59935) +- Improved performance of zfs.filesystem_present and zfs.volume_present. When + applying these states, only query specified ZFS properties rather than all + properties. (#59970) +- Fixed highstate outputter not displaying with salt.function in orchestration when module returns a dictionary. (#60029) +- Update docs where python-dateutil is required for schedule. (#60070) +- Send un-parsed username to LookupAccountName function (#60076) +- Fix ability to set propagation on a folder to "this_folder_only" (#60103) +- Fix name attribute access error in spm. (#60106) +- Fix zeromq stream.send exception message (#60228) +- Exit gracefully on ctrl+c. (#60242) +- Corrected import statement for redis_cache in cluster mode. (#60272) +- loader: Fix loading grains with annotations (#60285) +- fix docker_network.present when com.docker.network.bridge.name is being used as the unixes can not have a bridge of the same name (#60316) +- Fix exception in yumpkg.remove for not installed package on calling pkg.remove or pkg.removed (#60356) +- Batch runs now return proper retcodes in a tuple of the form (result, retcode) (#60361) +- Fixed issue with ansible roster __virtual__ when ansible is not installed. (#60370) +- Fixed error being thrown when None was passed as src/defaults or dest to defaults.update and defaults.merge (#60431) +- Allow for additional options for xmit hash policy in mode 4 NIC bonding on Redhat (#60583) +- Properly detect VMware grains on Windows Server 2019+ (#60593) +- Allow for minion failure to respond to job sent in batch mode (#60724) +- The mac assistive execution module no longer shells out to change the database. (#60819) +- Fix regression in win_timezone.get_zone which failed to resolve specific timezones that begin or end with d/s/t/o/f/_ characters (#60829) +- The TCP transport resets it's unpacker on stream disconnects (#60831) +- Moving the call to the validate function earlier to ensure that beacons are in the right format before we attempt to do anything to the configuration. Adding a generic validation to ensure the beacon configuration is in the wrong format when a validation function does not exist. (#60838) +- Update the mac installer welcome and conclusion page, add docs for the salt-config tool (#60858) +- Fixed external node classifier not callable due to wrong parameter (#60872) +- Adjust Debian/Ubuntu package use of name 'ifenslave-2.6' to 'ifenslave' (#60876) +- Clear and update the Pillar Cache when running saltutil.refresh_pillar. This only affects users + that have `pillar_cache` set to True. If you do not want to clear the cache you can pass the kwarg + `clean_cache=False` to `saltutil.refresh_pillar`. (#60897) +- Handle the situation when apt repo lines have or do not have trailing slashes properly. (#60907) +- Fixed Python 2 syntax for Python 3, allow for view objects returned by dictionary keys() function (#60909) +- Fix REST CherryPY append the default permissions every request (#60955) +- Do not consider "skipped" targets as failed for "ansible.playbooks" states (#60983) +- Fix behavior for internal "_netlink_tool_remote_on" to filter results based on requested end (#61017) +- schedule.job_status module: Convert datetime objects into formatted strings (#61043) +- virt: don't crash if console doesn't have service or type attribute (#61054) +- Fixed conflict between importlib_metada from Salt and importlib.metadata from Python 3.10 (#61062) +- sys.argspec now works with pillar.get, vault.read_secret, and vault.list_secrets (#61084) +- Set virtual grain on FreeBSD EC2 instances (#61094) +- Fixed v3004 windows minion failing to open log file at C:\ProgramData\Salt Project\Salt\var\log\salt\minion (#61113) +- Correct returned result to False when an error exception occurs for pip.installed (#61117) +- fixed extend being too strict and wanting the system_type to exist when it is only needed for requisites. (#61121) +- Fixed bug where deserialization in script engine would throw an error after all output was read. (#61124) +- Adding missing import for salt.utils.beacons into beacons that were updated to use it. (#61135) +- added exception catch to salt.utils.vt.terminal.isalive(). (#61160) +- Re-factor transport to make them more plug-able (#61161) +- Remove max zeromq pinned version due to issues on FreeBSD (#61163) +- Fixing deltaproxy code to handle the situation where the control proxy is configured to control a proxy minion whose pillar data could not be loaded. (#61172) +- Prevent get_tops from performing a Set operation on a List (#61176) +- Make "state.highstate" to acts on concurrent flag. + Simplify "transactional_update" module to not use SSH wrapper and allow more flexible execution (#61188) +- Fix a failure with salt.utils.vault.make_request when namespace is not defined in the connection. (#61191) +- Fix race condition in `salt.utils.verify.verify_env` and ignore directories starting with dot (#61192) +- LGPO: Search for policies in a case-sensitive manner first, then fall back to non case-sensitive names (#61198) +- Fixed state includes in dynamic environments (#61200) +- Minimize the number of network connections minions to the master (#61247) +- Fix salt-call event.event with pillar or grains (#61252) +- Fixed failing dcs.compile_config where a successful compile errored with `AttributeError: 'list' object has no attribute 'get'`. (#61261) +- Make the salt.utils.win_dacl.get_name() function include the "NT Security" prefix for Virtual Accounts. Virtual Accounts can only be added with the fully qualified name. (#61271) +- Fixed tracebacks and print helpful error message when proxy_return = True but no platform or primary_ip set in NetBox pillar. (#61277) +- Ensure opts is included in pack for minion_mods and config loads opts from the named_context. (#61297) +- Added prefix length info for IPv6 addresses in Windows (#61316) +- Handle MariaDB 10.5+ SLAVE MONITOR grant (#61331) +- Fix secondary ip addresses being added to ip4_interfaces and ip6_interfaces at the same time (#61370) +- Do not block the deltaproxy startup. Wrap the call to the individual proxy initialization functions in a try...except, catching the exception, logging an error and moving onto the next proxy minion. (#61377) +- show_instance of hetzner cloud provider should enforce an action like the other ones (#61392) +- Fix Hetzner Cloud config loading mechanism (#61399) +- Sets correctly the lvm grain even when lvm's command execution outputs a WARNING (#61412) +- Use net instead of sc in salt cloud when restarting the salt service (#61413) +- Fix use_etag support in fileclient by removing case sensitivity of expected header (#61440) +- Expand environment variables in the root_dir registry key (#61445) +- Use salt.utils.path.readlink everywhere instead of os.readlink (#61458) +- Fix state_aggregate minion option not respected (#61478) +- Fixed wua.installed and wua.uptodate to return all changes, failures, and supersedences (#61479) +- When running with test=True and there are no changes, don't show that there are changes. (#61483) +- Fix issue with certutil when there's a space in the path to the certificate (#61494) +- Fix cmdmod not respecting config for saltenv (#61507) +- Convert Py 2'isms to Python 3, and add tests for set_filesystems on AIX (#61509) +- Fix tracebacks caused by missing block device type and wrong mode used for gzip.open while calling inspector.export (#61530) +- win_wua: Titles no longer limited to 40 characters (#61533) +- Fixed error when using network module on RHEL 8 due to the name of the service changing from "network" to "NetworkManager". (#61538) +- Allow symlink to be created even if source is missing on Windows (#61544) +- Print jinja error context on `UndefinedError`. Previously `jinja2.exceptions.UndefinedError` resulted in a `SaltRenderError` without source file context, unlike all of the other Jinja exceptions handled in `salt/utils/templates.py`. (#61553) +- Fix uptime on AIX systems when less than 24 hours (#61557) +- Fix issue with state.show_state_usage when a saltenv is not referenced in any topfile (#61614) +- Making the retry state system feature available when parallel is set to True. (#61630) +- modules/aptpkg.SourceEntry: fix parsing lines with arbitrary comments in case HAS_APT=False (#61632) +- Fix file.comment incorrectly reports changes in test mode (#61662) +- Fix improper master caching of file listing in multiple dynamic environments (#61738) +- When configured beacons are empty write an empty beacon configuration file. (#61741) +- Fix file.replace updating mtime with no changes (#61743) +- Fixed etcd_return being out of sync with the underlying etcd_util. (#61756) +- Fixing items, values, and keys functions in the data module. (#61812) +- Ensure that `salt://` URIs never contain backslashes, converting them to forward slashes instead. A specific situation to handle is caching files on Windows minions, where Jinja relative imports introduce a backslash into the path. (#61829) +- Do not raise a UnicodeDecodeError when pillar cache cannot decode binary data. (#61836) +- Don't rely on ``importlib.metadata``, even on Py3.10, use ``importlib_metadata`` instead. (#61839) +- Fix the reporting of errors for file.directory in test mode (#61846) +- Update Markup and contextfunction imports for jinja versions >=3.1. (#61848) +- Update states.chef for version 16.x and 17.x Chef Infra Client output. (#61891) +- Fixed some whitespace and ``pathlib.Path`` issues when not using the sytem ``aptsources`` package. (#61936) +- fixed error when using backslash literal in file.replace (#61944) +- Fix an issue where under spawning platforms, one could exhaust the available multiprocessing semaphores. (#61945) +- Fix salt-cloud sync_after_install functionality (#61946) +- Ensure that `common_prefix` matching only occurs if a directory name is identified (in the `archive.list` execution module function, which affects the `archive.extracted` state). (#61968) +- When states are running in parallel, ensure that the total run time produced by the highstate outputter takes that into account. (#61999) +- Temporary logging is now shutdown when logging has been configured. (#62005) +- modules/lxd.FilesManager: fix memory leak through pylxd.modules.container.Container.FilesManager (#62006) +- utils/jinja.SaltCacheLoader: fix leaking SaltCacheLoader through atexit.register (#62007) +- Fixed errors on calling `zabbix_user.admin_password_present` state, due to changed error message in Zabbix 6.0 + Fixed `zabbix.host_update` not mapping group ids list to list of dicts in format `[{"groupid": groupid}, ...]` + Fixed `zabbix.user_update` not mapping usergroup id list to list of dicts in format `[{"usrgrpid": usrgrpid}, ...]` (#62012) +- utils/yamlloader and yamlloader_old: fix leaking DuplicateKeyWarning through a warnings module (#62021) +- Fix cache checking for Jinja templates (#62042) +- Fixed salt.states.file.managed() for follow_symlinks=True and test=True (#62066) +- Stop trigering the `GLIBC race condition `_ when parallelizing the resolution of the fqnds. (#62071) +- Fix useradd functions hard-coded relative command name (#62087) +- Fix #62092: Catch zmq.error.ZMQError to set HWM for zmq >= 3. + + Run ``git show 0be0941`` for more info. (#62092) +- Allow emitatstartup to work when delay option is setup. (#62095) +- Fix broken relative jinja includes in local mode bug introduced in #62043 (#62117) +- Fix broken file.comment functionality introduced in #62045 (#62121) +- Fixed an incompatibility preventing salt-cloud from deploying VMs on Proxmox VE 7 (#62154) +- Fix sysctl functions hard-coded relative command name (#62164) +- All of Salt's loaders now accept ``loaded_base_name`` as a keyword argument, allowing different namespacing the loaded modules. (#62186) +- Only functions defined on the modules being loaded will be added to the lazy loader, functions imported from other modules, unless they are properly namespaced, are not included. (#62190) +- Fixes issue in postgresql privileges detection: privileges on views were never retrieved and always recreated. (#57690) +- Fix service.enabled error for unavailable service in test mode (#62258) +- Fix variable reuse causing requisite_in problems (#62264) +- Adding -G option to pkgdd cmd_prefix list when current_zone_only is True. (#62206) +- Don't expect ``lsof`` to be installed when trying check which minions are connected. (#62303) +- Added a pyinstaller hook that traverses the python used on the tiamat package to add all possible modules as hidden imports. (#62362) +- Fix use of random shuffle and sample functions as Jinja filters (#62372) +- All of the requirements provided in the requirements files are now included. The job of evaluating platform markers is not Salt's it's pip's. (#62392) +- Update all platforms to use pycparser 2.21 or greater for Py 3.9 or higher, fixes fips fault with openssl v3.x (#62400) +- Due to changes in the Netmiko library for the exception paths, need to check the version of Netmiko python library and then import the exceptions from different locations depending on the result. (#62405) +- Fixed urlparse typo in rpmbuild_pkgbuild.py (#62442) +- Fixing changes dict in pkg state to be consistent when installing and test=True. (#60995) +- Use fire_event_async when expecting a coroutine (#62453) +- Fixes import error under windows. (#62459) +- account for revision number in formulas to account for difference between bottle and formula (#62466) +- Fixed stacktrace on Windows when running pkg.list_pkgs (#62479) +- Update sanitizing masking for Salt SSH to include additional password like strings. (#62483) +- Fixes an issue where the minion could not connect to a master after 2 failed attempts (#62489) + + +Added +----- + +- Added ability to request VPC peering connections in different AWS regions (boto_vpc). (#50394) +- Added event return capability to Splunk returner (#50815) +- Added allow downgrades support to apt upgrade (#52977) +- added new grain for metadata to handle googles metadata differences (#53223) +- Added win_shortcut execution and state module that does not prepend the current working directory to paths. Use shortcut.create and shortcut.present instead of file.shortcut. (#53706) +- Add __env__ substitution inside file and pillar root paths (#55747) +- Added support cpu hot add/remove, memory hot add, and nested virtualization to VMware salt-cloud driver. (#56144) +- Add a consul state module with acl_present and acl_absent functions. (#58101) +- Added restconf module/states/proxy code for network device automation (#59006) +- Adds the ability to get version information from a file on Windows systems (#59702) +- Add aptkey=False kwarg option to the aptpkg.py module and pkgrepo state. Apt-key is on the path to be deprecated. This will allow users to not use apt-key to manage the repo keys. It will set aptkey=False automatically if it does not detect apt-key exists on the machine. (#59785) +- Added "Instant Clone" feature in the existing VMware Cloud module (#60004) +- Added support for etcd API v3 (#60325) +- Added `pkg.held` and `pkg.unheld` state functions for Zypper, YUM/DNF and APT. Improved `zypperpkg.hold` and `zypperpkg.unhold` functions. (#60432) +- Added suse_ip module allowing to manage network interfaces on SUSE based Linux systems (#60702) +- Support querying for JSON data in SQL external pillar (#60905) +- Added support for yum and dnf on AIX (#60912) +- Added percent success/failure of state runs in highstate summary output via new state_output_pct option (#60990) +- Add support for retrieve IP-address from qemu agent by Salt-cloud on Proxmox (#61146) +- Added new shortcut execution and state module to better handle UNC shortcuts and to test more thoroughly (#61170) +- added yamllint utils module and yaml execution modules (#61182) +- Add "--no-return-event" option to salt-call to prevent sending return event back to master. (#61188) +- Add Etag support for file.managed web sources (#61270) +- Adding the ability to add, delete, purge, and modify Salt scheduler jobs when the Salt minion is not running. (#61324) +- Added a force option to file.symlink to overwrite an existing symlink with the same name (#61326) +- `gpg_decrypt_must_succeed` config to prevent gpg renderer from failing silently (#61418) +- Do not load a private copy of `__grains__` and `__salt__` for the sentry log handler if it is disabled. (#61484) +- Add Jinja filters for itertools functions, flatten, and a state template workflow (#61502) +- Add feature to allow roll-up of duplicate IDs with different names in highstate output (#61549) +- Allow cp functions to derive saltenv from config if not explicitly set (#61562) +- Multiprocessing logging no longer uses multiprocessing queues which penalized performance. + + Instead, each new process configures the terminal and file logging, and also any external logging handlers configured. (#61629) +- Add a function to the freezer module for comparison of packages and repos in two frozen states (#61682) +- Add grains_refresh_pre_exec option to allow grains to be refreshed before any operation (#61708) +- Add possibility to pass extra parameters to salt-ssh pre flight script with `ssh_pre_flight_args` (#61715) +- Add Etag support for archive.extracted web sources (#61763) +- Add regex exclusions, full path matching, symlink following, and mtime/ctime comparison to file.tidied (#61823) +- Add better handling for unit abbreviations and large values to salt.utils.stringutils.human_to_bytes (#61831) +- Provide PyInstaller hooks that provide some runtime adjustments when Salt is running from a Tiamat(PyInstaller) bundled package. (#61864) +- Add configurable tiamat pip pypath location (#61937) +- Add CNAME record support to the dig exec module (#61991) +- Added support for changed user object in Zabbix 5.4+ + Added compatibility with Zabbix 4.0+ for `zabbix.user_getmedia` method + Added support for setting medias in `zabbix.user_update` for Zabbix 3.4+ (#62012) +- Add ignore_missing parameter to file.comment state (#62044) +- General improvements on the "ansiblegate" module: + * Add "ansible.targets" method to gather Ansible inventory + * Add "ansible.discover_playbooks" method to help collecting playbooks + * Fix crash when running Ansible playbooks if ansible-playbook CLI output is not the expected JSON. + * Fix issues when processing inventory and there are groups with no members. + * Allow new types of targets for Ansible roster (#60056) +- Add sample and shuffle functions from random (#62225) +- Add " python" subcommand to allow execution or arbitrary scripts via bundled Python runtime (#62381) + + +Salt 3004.2 (2022-05-12) +======================== + +Fixed +----- + +- Expand environment variables in the root_dir registry key (#61445) +- Update Markup and contextfunction imports for jinja versions >=3.1. (#61848) +- Fix bug in tcp transport (#61865) +- Make sure the correct key is being used when verifying or validating communication, eg. when a Salt syndic is involved use syndic_master.pub and when a Salt minion is involved use minion_master.pub. (#61868) + + +Security +-------- + +- Fixed PAM auth to reject auth attempt if user account is locked. (cve-2022-22967) + + +Salt 3004.1 (2022-02-16) +======================== + +Security +-------- + +- Sign authentication replies to prevent MiTM (cve-2022-22935) +- Prevent job and fileserver replays (cve-2022-22936) +- Sign pillar data to prevent MiTM attacks. (cve-2202-22934) +- Fixed targeting bug, especially visible when using syndic and user auth. (CVE-2022-22941) (#60413) +- Fix denial of service in junos ifconfig output parsing. + + Salt 3004 (2021-10-11) ====================== @@ -194,6 +566,36 @@ Added - Allow a user to use the aptpkg.py module without installing python-apt. (#60818) +Salt 3003.5 (2022-07-05) +======================== + +Fixed +----- + +- Update Markup and contextfunction imports for jinja versions >=3.1. (#61848) +- Fix bug in tcp transport (#61865) +- Make sure the correct key is being used when verifying or validating communication, eg. when a Salt syndic is involved use syndic_master.pub and when a Salt minion is involved use minion_master.pub. (#61868) + + +Security +-------- + +- Fixed PAM auth to reject auth attempt if user account is locked. (cve-2022-22967) + + +Salt 3003.4 (2022-02-25) +======================== + +Security +-------- + +- Sign authentication replies to prevent MiTM (cve-2022-22935) +- Prevent job and fileserver replays (cve-2022-22936) +- Sign pillar data to prevent MiTM attacks. (cve-2202-22934) +- Fixed targeting bug, especially visible when using syndic and user auth. (CVE-2022-22941) (#60413) +- Fix denial of service in junos ifconfig output parsing. + + Salt 3003.3 (2021-08-20) ======================== @@ -414,6 +816,37 @@ Added metadata for a package by extracting library requirement information from the binary ELF files in the package. (#59569) + +Salt 3002.9 (2022-05-25) +======================== + +Fixed +----- + +- Fixed an error when running on CentOS Stream 8. (#59161) +- Fix bug in tcp transport (#61865) +- Make sure the correct key is being used when verifying or validating communication, eg. when a Salt syndic is involved use syndic_master.pub and when a Salt minion is involved use minion_master.pub. (#61868) + + +Security +-------- + +- Fixed PAM auth to reject auth attempt if user account is locked. (cve-2022-22967) + + +Salt 3002.8 (2022-02-25) +======================== + +Security +-------- + +- Sign authentication replies to prevent MiTM (cve-2020-22935) +- Sign pillar data to prevent MiTM attacks. (cve-2022-22934) +- Prevent job and fileserver replays (cve-2022-22936) +- Fixed targeting bug, especially visible when using syndic and user auth. (CVE-2022-22941) (#60413) + + + Salt 3002.7 (2021-08-20) ======================== @@ -430,6 +863,7 @@ Security Additionally, an audit and a tool was put in place, ``bandit``, to address similar issues througout the code base, and prevent them. (CVE-2021-31607) - Ensure that sourced file is cached using its hash name (cve-2021-21996) + Salt 3002.6 (2021-03-10) ======================== @@ -438,6 +872,7 @@ Changed - Store git sha in salt/_version.py when installing from a tag so it can be found if needed later. (#59137) + Fixed ----- diff --git a/LICENSE b/LICENSE index c803cb278d5a..4da91d70a97a 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} {name of copyright owner} + Copyright (c) 2011-2022 VMware, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/MANIFEST.in b/MANIFEST.in index 239c8c32ee84..c845ca82e29e 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -20,3 +20,4 @@ recursive-include salt *.jinja recursive-include templates * include salt/templates/git/* include salt/templates/lxc/* +include salt/utils/pyinstaller/rthooks.dat diff --git a/changelog/25721.fixed b/changelog/25721.fixed deleted file mode 100644 index bc070c8ce3cf..000000000000 --- a/changelog/25721.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix SSH password regex to not search for content after password:. diff --git a/changelog/29562.fixed b/changelog/29562.fixed deleted file mode 100644 index e918c872c08a..000000000000 --- a/changelog/29562.fixed +++ /dev/null @@ -1 +0,0 @@ -Addressing a few issues when having keep_symlinks set to True with file.recurse. Also allow symlinks that are outside the salt fileserver root to be discoverable as symlinks when fileserver_followsymlinks is set to False. diff --git a/changelog/35215.fixed b/changelog/35215.fixed deleted file mode 100644 index 7c08b3d63546..000000000000 --- a/changelog/35215.fixed +++ /dev/null @@ -1 +0,0 @@ -serialize to JSON only non string objects. diff --git a/changelog/48735.fixed b/changelog/48735.fixed deleted file mode 100644 index 44b785eec9b2..000000000000 --- a/changelog/48735.fixed +++ /dev/null @@ -1 +0,0 @@ -Make sys.argspec work on functions with annotations diff --git a/changelog/49648.fixed b/changelog/49648.fixed deleted file mode 100644 index d8a62176c67b..000000000000 --- a/changelog/49648.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed pdbedit.list_users with Samba 4.8 diff --git a/changelog/49835.fixed b/changelog/49835.fixed deleted file mode 100644 index e69cae73c519..000000000000 --- a/changelog/49835.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixes a scenario where ipv6 is enabled but the master is configured as an ipv4 IP address. diff --git a/changelog/50394.added b/changelog/50394.added deleted file mode 100644 index 8b4a4eedae9e..000000000000 --- a/changelog/50394.added +++ /dev/null @@ -1 +0,0 @@ -Added ability to request VPC peering connections in different AWS regions (boto_vpc). \ No newline at end of file diff --git a/changelog/50815.added b/changelog/50815.added deleted file mode 100644 index 15fc647b28e6..000000000000 --- a/changelog/50815.added +++ /dev/null @@ -1 +0,0 @@ -Added event return capability to Splunk returner diff --git a/changelog/50851.fixed b/changelog/50851.fixed deleted file mode 100644 index 37163c2626e6..000000000000 --- a/changelog/50851.fixed +++ /dev/null @@ -1 +0,0 @@ -Ensure that NOTIFY_SOCKET is not passed to child processes created with cmdmod unless it's set explicitly for such call. diff --git a/changelog/51559.fixed b/changelog/51559.fixed deleted file mode 100644 index 0df32ca2888c..000000000000 --- a/changelog/51559.fixed +++ /dev/null @@ -1 +0,0 @@ -remove escaping of dbname in mysql.alter_db function. diff --git a/changelog/52759.fixed b/changelog/52759.fixed deleted file mode 100644 index 819094ef6970..000000000000 --- a/changelog/52759.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix runit module failing to find service if it is not symlinked. \ No newline at end of file diff --git a/changelog/52977.added b/changelog/52977.added deleted file mode 100644 index 95fb475def31..000000000000 --- a/changelog/52977.added +++ /dev/null @@ -1 +0,0 @@ -Added allow downgrades support to apt upgrade diff --git a/changelog/53223.added b/changelog/53223.added deleted file mode 100644 index 878fb5039db0..000000000000 --- a/changelog/53223.added +++ /dev/null @@ -1 +0,0 @@ -added new grain for metadata to handle googles metadata differences diff --git a/changelog/53742.fixed b/changelog/53742.fixed deleted file mode 100644 index b66c121a4c1d..000000000000 --- a/changelog/53742.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed events stream from /events endpoint not halting when auth token has expired. \ No newline at end of file diff --git a/changelog/53961.fixed b/changelog/53961.fixed deleted file mode 100644 index a5235eada7f0..000000000000 --- a/changelog/53961.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed user.present which was breaking when updating workphone,homephone, fullname and "other" fields in case int was passed instead of string \ No newline at end of file diff --git a/changelog/53977.fixed b/changelog/53977.fixed deleted file mode 100644 index c6123f2ebd99..000000000000 --- a/changelog/53977.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix error in webutil state module when attempting to grep a file that does not exist. diff --git a/changelog/54301.fixed b/changelog/54301.fixed deleted file mode 100644 index daeee6e1fcb0..000000000000 --- a/changelog/54301.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed ability to modify the "Audit: Force audit policy subcategory settings..." policy diff --git a/changelog/55394.fixed b/changelog/55394.fixed deleted file mode 100644 index 745d9cd85892..000000000000 --- a/changelog/55394.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix timeout handling in netapi/saltnado. diff --git a/changelog/55654.fixed b/changelog/55654.fixed deleted file mode 100644 index 748ab1727cf0..000000000000 --- a/changelog/55654.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixing REST auth so that we actually support using ACLs from the REST server like we said in the documentation. diff --git a/changelog/55747.added b/changelog/55747.added deleted file mode 100644 index 390455eb3615..000000000000 --- a/changelog/55747.added +++ /dev/null @@ -1 +0,0 @@ -Add __env__ substitution inside file and pillar root paths diff --git a/changelog/56055.removed b/changelog/56055.removed deleted file mode 100644 index d9d88db46970..000000000000 --- a/changelog/56055.removed +++ /dev/null @@ -1 +0,0 @@ -Deprecating and removing salt-unity. diff --git a/changelog/56144.added b/changelog/56144.added deleted file mode 100644 index ee11caee581b..000000000000 --- a/changelog/56144.added +++ /dev/null @@ -1 +0,0 @@ -Added support cpu hot add/remove, memory hot add, and nested virtualization to VMware salt-cloud driver. diff --git a/changelog/57721.fixed b/changelog/57721.fixed deleted file mode 100644 index 9542e48e9044..000000000000 --- a/changelog/57721.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed RuntimeError OrderedDict mutated in network.managed for Debian systems. diff --git a/changelog/57992.fixed b/changelog/57992.fixed deleted file mode 100644 index 88c86b964e2f..000000000000 --- a/changelog/57992.fixed +++ /dev/null @@ -1 +0,0 @@ -fixed 57992 fix multi item kv v2 items read. diff --git a/changelog/58101.added b/changelog/58101.added deleted file mode 100644 index 2cb120710b16..000000000000 --- a/changelog/58101.added +++ /dev/null @@ -1 +0,0 @@ -Add a consul state module with acl_present and acl_absent functions. diff --git a/changelog/58195.fixed b/changelog/58195.fixed deleted file mode 100644 index d41c9391eafd..000000000000 --- a/changelog/58195.fixed +++ /dev/null @@ -1 +0,0 @@ -Remove unnecessary dot in template that cause the bridge interface to fail on debian. Fixes #58195 diff --git a/changelog/58329.fixed b/changelog/58329.fixed deleted file mode 100644 index 7250c516245a..000000000000 --- a/changelog/58329.fixed +++ /dev/null @@ -1 +0,0 @@ -update salt.module.schedule to check the job_args and job_kwargs for valid formatting. diff --git a/changelog/58662.fixed b/changelog/58662.fixed deleted file mode 100644 index 5d225f59c880..000000000000 --- a/changelog/58662.fixed +++ /dev/null @@ -1 +0,0 @@ -Allowe use of `roster` in salt.function state when using the SSH client. diff --git a/changelog/58745.changed b/changelog/58745.changed deleted file mode 100644 index 969628d09ddb..000000000000 --- a/changelog/58745.changed +++ /dev/null @@ -1 +0,0 @@ -alternatives: Do not access /var/lib/dpkg/alternatives directly diff --git a/changelog/58763.fixed b/changelog/58763.fixed deleted file mode 100644 index 53ee8304c08a..000000000000 --- a/changelog/58763.fixed +++ /dev/null @@ -1 +0,0 @@ -Detect new and legacy styles of calling module.run and support them both. diff --git a/changelog/58963.fixed b/changelog/58963.fixed deleted file mode 100644 index a6e134b845c7..000000000000 --- a/changelog/58963.fixed +++ /dev/null @@ -1 +0,0 @@ -hgfs: fix bytes vs str issues within hgfs. diff --git a/changelog/59033.fixed b/changelog/59033.fixed deleted file mode 100644 index 5d8d649091e5..000000000000 --- a/changelog/59033.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixes salt-ssh error when targetting IPs or hostnames directly. diff --git a/changelog/59101.fixed b/changelog/59101.fixed deleted file mode 100644 index 01959a594912..000000000000 --- a/changelog/59101.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed error when running legacy code in winrepo.update_git_repos \ No newline at end of file diff --git a/changelog/59102.fixed b/changelog/59102.fixed deleted file mode 100644 index d248d0f1db75..000000000000 --- a/changelog/59102.fixed +++ /dev/null @@ -1 +0,0 @@ -Clarify the persist argument in the scheduler module. Adding code in the list function to indicate if the schedule job is saved or not. diff --git a/changelog/59331.fixed b/changelog/59331.fixed deleted file mode 100644 index 88ed01ff6f07..000000000000 --- a/changelog/59331.fixed +++ /dev/null @@ -1 +0,0 @@ -Swap ret["retcode"] for ret.get("retcode") in the event that there is no retcode, eg. when a function is not passed with a module. diff --git a/changelog/59429.fixed b/changelog/59429.fixed deleted file mode 100644 index 979a3d47172b..000000000000 --- a/changelog/59429.fixed +++ /dev/null @@ -1 +0,0 @@ -The ssh module now accepts all ssh public key types as of openssh server version 8.7. diff --git a/changelog/59448.fixed b/changelog/59448.fixed deleted file mode 100644 index 18820046cf2d..000000000000 --- a/changelog/59448.fixed +++ /dev/null @@ -1 +0,0 @@ -Set default transport and port settings for Napalm NXOS, if not set. diff --git a/changelog/59503.fixed b/changelog/59503.fixed deleted file mode 100644 index b39daf7de4f1..000000000000 --- a/changelog/59503.fixed +++ /dev/null @@ -1 +0,0 @@ -Use __salt_system_encoding__ when retrieving keystore certificate SHA1 str diff --git a/changelog/59554.fixed b/changelog/59554.fixed deleted file mode 100644 index 6e0fb07631a7..000000000000 --- a/changelog/59554.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix error being thrown on empty flags list given to file.replace diff --git a/changelog/59604.fixed b/changelog/59604.fixed deleted file mode 100644 index c7c44896655c..000000000000 --- a/changelog/59604.fixed +++ /dev/null @@ -1 +0,0 @@ -Update url for ez_setup.py script in virtualenv_mod.py diff --git a/changelog/59935.fixed b/changelog/59935.fixed deleted file mode 100644 index 6eea3cc5ed6e..000000000000 --- a/changelog/59935.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix pillar_roots.write on subdirectories broken after CVE-2021-25282 patch. diff --git a/changelog/59970.fixed b/changelog/59970.fixed deleted file mode 100644 index 4cdeaf682e63..000000000000 --- a/changelog/59970.fixed +++ /dev/null @@ -1,3 +0,0 @@ -Improved performance of zfs.filesystem_present and zfs.volume_present. When -applying these states, only query specified ZFS properties rather than all -properties. diff --git a/changelog/60004.added b/changelog/60004.added deleted file mode 100644 index f02f39e6ce9f..000000000000 --- a/changelog/60004.added +++ /dev/null @@ -1 +0,0 @@ -Added "Instant Clone" feature in the existing VMware Cloud module diff --git a/changelog/60029.fixed b/changelog/60029.fixed deleted file mode 100644 index c8f56c4d475d..000000000000 --- a/changelog/60029.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed highstate outputter not displaying with salt.function in orchestration when module returns a dictionary. \ No newline at end of file diff --git a/changelog/60103.fixed b/changelog/60103.fixed deleted file mode 100644 index 28d13d13020c..000000000000 --- a/changelog/60103.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix ability to set propagation on a folder to "this_folder_only" diff --git a/changelog/60106.fixed b/changelog/60106.fixed deleted file mode 100644 index 70c45e776970..000000000000 --- a/changelog/60106.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix name attribute access error in spm. diff --git a/changelog/60242.fixed b/changelog/60242.fixed deleted file mode 100644 index 3eb6f9ded766..000000000000 --- a/changelog/60242.fixed +++ /dev/null @@ -1 +0,0 @@ -Exit gracefully on ctrl+c. \ No newline at end of file diff --git a/changelog/60285.fixed b/changelog/60285.fixed deleted file mode 100644 index 2f84ec922079..000000000000 --- a/changelog/60285.fixed +++ /dev/null @@ -1 +0,0 @@ -loader: Fix loading grains with annotations diff --git a/changelog/60356.fixed b/changelog/60356.fixed deleted file mode 100644 index b8990dd98e88..000000000000 --- a/changelog/60356.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix exception in yumpkg.remove for not installed package on calling pkg.remove or pkg.removed diff --git a/changelog/60361.fixed b/changelog/60361.fixed deleted file mode 100644 index fad476428a77..000000000000 --- a/changelog/60361.fixed +++ /dev/null @@ -1 +0,0 @@ -Batch runs now return proper retcodes in a tuple of the form (result, retcode) diff --git a/changelog/60370.fixed b/changelog/60370.fixed deleted file mode 100644 index e60aaab3ccaa..000000000000 --- a/changelog/60370.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed issue with ansible roster __virtual__ when ansible is not installed. diff --git a/changelog/60402.changed b/changelog/60402.changed deleted file mode 100644 index 6772c875ddd2..000000000000 --- a/changelog/60402.changed +++ /dev/null @@ -1 +0,0 @@ -Enhance logging when there are errors at loading beacons diff --git a/changelog/60431.fixed b/changelog/60431.fixed deleted file mode 100644 index 731e7e7fb481..000000000000 --- a/changelog/60431.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed error being thrown when None was passed as src/defaults or dest to defaults.update and defaults.merge \ No newline at end of file diff --git a/changelog/60583.fixed b/changelog/60583.fixed deleted file mode 100644 index 8a6a5f94bf62..000000000000 --- a/changelog/60583.fixed +++ /dev/null @@ -1 +0,0 @@ -Allow for additional options for xmit hash policy in mode 4 NIC bonding on Redhat diff --git a/changelog/60724.fixed b/changelog/60724.fixed deleted file mode 100644 index 30c1fefdecf5..000000000000 --- a/changelog/60724.fixed +++ /dev/null @@ -1 +0,0 @@ -Allow for minion failure to respond to job sent in batch mode diff --git a/changelog/60829.fixed b/changelog/60829.fixed deleted file mode 100644 index 743111082bdc..000000000000 --- a/changelog/60829.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix regression in win_timezone.get_zone which failed to resolve specific timezones that begin or end with d/s/t/o/f/_ characters diff --git a/changelog/60838.fixed b/changelog/60838.fixed deleted file mode 100644 index 83c0ffedce63..000000000000 --- a/changelog/60838.fixed +++ /dev/null @@ -1 +0,0 @@ -Moving the call to the validate function earlier to ensure that beacons are in the right format before we attempt to do anything to the configuration. Adding a generic validation to ensure the beacon configuration is in the wrong format when a validation function does not exist. diff --git a/changelog/60858.fixed b/changelog/60858.fixed deleted file mode 100644 index 180e38314133..000000000000 --- a/changelog/60858.fixed +++ /dev/null @@ -1 +0,0 @@ -Update the mac installer welcome and conclusion page, add docs for the salt-config tool diff --git a/changelog/60876.fixed b/changelog/60876.fixed deleted file mode 100644 index 6fdee02521de..000000000000 --- a/changelog/60876.fixed +++ /dev/null @@ -1 +0,0 @@ -Adjust Debian/Ubuntu package use of name 'ifenslave-2.6' to 'ifenslave' diff --git a/changelog/60897.fixed b/changelog/60897.fixed deleted file mode 100644 index b8d5fba2ad56..000000000000 --- a/changelog/60897.fixed +++ /dev/null @@ -1,3 +0,0 @@ -Clear and update the Pillar Cache when running saltutil.refresh_pillar. This only affects users -that have `pillar_cache` set to True. If you do not want to clear the cache you can pass the kwarg -`clean_cache=False` to `saltutil.refresh_pillar`. diff --git a/changelog/60905.added b/changelog/60905.added deleted file mode 100644 index 3fe39286a84c..000000000000 --- a/changelog/60905.added +++ /dev/null @@ -1 +0,0 @@ -Support querying for JSON data in SQL external pillar diff --git a/changelog/60909.fixed b/changelog/60909.fixed deleted file mode 100644 index c3e86b78560c..000000000000 --- a/changelog/60909.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed Python 2 syntax for Python 3, allow for view objects returned by dictionary keys() function diff --git a/changelog/60912.added b/changelog/60912.added deleted file mode 100644 index 907790605c42..000000000000 --- a/changelog/60912.added +++ /dev/null @@ -1 +0,0 @@ -Added support for yum and dnf on AIX diff --git a/changelog/60955.fixed b/changelog/60955.fixed deleted file mode 100644 index 86ca8295a425..000000000000 --- a/changelog/60955.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix REST CherryPY append the default permissions every request \ No newline at end of file diff --git a/changelog/60990.added b/changelog/60990.added deleted file mode 100644 index f70dbd54b272..000000000000 --- a/changelog/60990.added +++ /dev/null @@ -1 +0,0 @@ -Added percent success/failure of state runs in highstate summary output via new state_output_pct option diff --git a/changelog/61043.fixed b/changelog/61043.fixed deleted file mode 100644 index 79cd46db67a5..000000000000 --- a/changelog/61043.fixed +++ /dev/null @@ -1 +0,0 @@ -schedule.job_status module: Convert datetime objects into formatted strings diff --git a/changelog/61054.fixed b/changelog/61054.fixed deleted file mode 100644 index 988d683dfc89..000000000000 --- a/changelog/61054.fixed +++ /dev/null @@ -1 +0,0 @@ -virt: don't crash if console doesn't have service or type attribute diff --git a/changelog/61062.fixed b/changelog/61062.fixed deleted file mode 100644 index 2e55a51ea91b..000000000000 --- a/changelog/61062.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed conflict between importlib_metada from Salt and importlib.metadata from Python 3.10 diff --git a/changelog/61084.fixed b/changelog/61084.fixed deleted file mode 100644 index 0beb24581d66..000000000000 --- a/changelog/61084.fixed +++ /dev/null @@ -1 +0,0 @@ -sys.argspec now works with pillar.get, vault.read_secret, and vault.list_secrets diff --git a/changelog/61094.fixed b/changelog/61094.fixed deleted file mode 100644 index a190b7c8e2ba..000000000000 --- a/changelog/61094.fixed +++ /dev/null @@ -1 +0,0 @@ -Set virtual grain on FreeBSD EC2 instances diff --git a/changelog/61113.fixed b/changelog/61113.fixed deleted file mode 100644 index f2e8a6dc204f..000000000000 --- a/changelog/61113.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed v3004 windows minion failing to open log file at C:\ProgramData\Salt Project\Salt\var\log\salt\minion diff --git a/changelog/61117.fixed b/changelog/61117.fixed deleted file mode 100644 index 2353c2379999..000000000000 --- a/changelog/61117.fixed +++ /dev/null @@ -1 +0,0 @@ -Correct returned result to False when an error exception occurs for pip.installed diff --git a/changelog/61121.fixed b/changelog/61121.fixed deleted file mode 100644 index 034bcd2ea28e..000000000000 --- a/changelog/61121.fixed +++ /dev/null @@ -1 +0,0 @@ -fixed extend being too strict and wanting the system_type to exist when it is only needed for requisites. diff --git a/changelog/61124.fixed b/changelog/61124.fixed deleted file mode 100644 index a965ed977f67..000000000000 --- a/changelog/61124.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed bug where deserialization in script engine would throw an error after all output was read. \ No newline at end of file diff --git a/changelog/61130.removed b/changelog/61130.removed deleted file mode 100644 index c385a43b9158..000000000000 --- a/changelog/61130.removed +++ /dev/null @@ -1 +0,0 @@ -Removed support for macos mojave diff --git a/changelog/61135.fixed b/changelog/61135.fixed deleted file mode 100644 index 5ab99d0d4eb3..000000000000 --- a/changelog/61135.fixed +++ /dev/null @@ -1 +0,0 @@ -Adding missing import for salt.utils.beacons into beacons that were updated to use it. diff --git a/changelog/61146.added b/changelog/61146.added deleted file mode 100644 index ef979b800f6e..000000000000 --- a/changelog/61146.added +++ /dev/null @@ -1 +0,0 @@ -Add support for retrieve IP-address from qemu agent by Salt-cloud on Proxmox \ No newline at end of file diff --git a/changelog/61160.fixed b/changelog/61160.fixed deleted file mode 100644 index 2454db8ae4fd..000000000000 --- a/changelog/61160.fixed +++ /dev/null @@ -1 +0,0 @@ -added exception catch to salt.utils.vt.terminal.isalive(). diff --git a/changelog/61161.fixed b/changelog/61161.fixed deleted file mode 100644 index 742d06fef7bd..000000000000 --- a/changelog/61161.fixed +++ /dev/null @@ -1 +0,0 @@ -Re-factor transport to make them more plug-able diff --git a/changelog/61163.fixed b/changelog/61163.fixed deleted file mode 100644 index 239e7f1cf1d2..000000000000 --- a/changelog/61163.fixed +++ /dev/null @@ -1 +0,0 @@ -Remove max zeromq pinned version due to issues on FreeBSD diff --git a/changelog/61172.fixed b/changelog/61172.fixed deleted file mode 100644 index d1c25cc87624..000000000000 --- a/changelog/61172.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixing deltaproxy code to handle the situation where the control proxy is configured to control a proxy minion whose pillar data could not be loaded. diff --git a/changelog/61176.fixed b/changelog/61176.fixed deleted file mode 100644 index 2916b945390e..000000000000 --- a/changelog/61176.fixed +++ /dev/null @@ -1 +0,0 @@ -Prevent get_tops from performing a Set operation on a List diff --git a/changelog/61191.fixed b/changelog/61191.fixed deleted file mode 100644 index 1fcd5dd1a213..000000000000 --- a/changelog/61191.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix a failure with salt.utils.vault.make_request when namespace is not defined in the connection. diff --git a/changelog/61192.fixed b/changelog/61192.fixed deleted file mode 100644 index b9f0009d7358..000000000000 --- a/changelog/61192.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix race condition in `salt.utils.verify.verify_env` and ignore directories starting with dot diff --git a/changelog/61198.fixed b/changelog/61198.fixed deleted file mode 100644 index de88aa9f34a9..000000000000 --- a/changelog/61198.fixed +++ /dev/null @@ -1 +0,0 @@ -LGPO: Search for policies in a case-sensitive manner first, then fall back to non case-sensitive names diff --git a/changelog/61200.fixed b/changelog/61200.fixed deleted file mode 100644 index fc7c3c5b8f36..000000000000 --- a/changelog/61200.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed state includes in dynamic environments diff --git a/changelog/61247.fixed b/changelog/61247.fixed deleted file mode 100644 index c8737356ae15..000000000000 --- a/changelog/61247.fixed +++ /dev/null @@ -1 +0,0 @@ -Minimize the number of network connections minions to the master diff --git a/changelog/61252.fixed b/changelog/61252.fixed deleted file mode 100644 index 2692f9b7b755..000000000000 --- a/changelog/61252.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix salt-call event.event with pillar or grains diff --git a/changelog/61270.added b/changelog/61270.added deleted file mode 100644 index 883f991011e2..000000000000 --- a/changelog/61270.added +++ /dev/null @@ -1 +0,0 @@ -Add Etag support for file.managed web sources diff --git a/changelog/61271.fixed b/changelog/61271.fixed deleted file mode 100644 index 0fbad1c78246..000000000000 --- a/changelog/61271.fixed +++ /dev/null @@ -1 +0,0 @@ -Make the salt.utils.win_dacl.get_name() function include the "NT Security" prefix for Virtual Accounts. Virtual Accounts can only be added with the fully qualified name. \ No newline at end of file diff --git a/changelog/61275.deprecated b/changelog/61275.deprecated deleted file mode 100644 index 1f9c54ae0361..000000000000 --- a/changelog/61275.deprecated +++ /dev/null @@ -1 +0,0 @@ -Deprecated transport kwarg inside salt.utils.event.get_event diff --git a/changelog/61277.fixed b/changelog/61277.fixed deleted file mode 100644 index 5de4971e20a7..000000000000 --- a/changelog/61277.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed tracebacks and print helpful error message when proxy_return = True but no platform or primary_ip set in NetBox pillar. diff --git a/changelog/61297.fixed b/changelog/61297.fixed deleted file mode 100644 index 1c64eb26602c..000000000000 --- a/changelog/61297.fixed +++ /dev/null @@ -1 +0,0 @@ -Ensure opts is included in pack for minion_mods and config loads opts from the named_context. diff --git a/changelog/61316.fixed b/changelog/61316.fixed deleted file mode 100644 index 1344bf87c49f..000000000000 --- a/changelog/61316.fixed +++ /dev/null @@ -1 +0,0 @@ -Added prefix length info for IPv6 addresses in Windows diff --git a/changelog/61324.added b/changelog/61324.added deleted file mode 100644 index d67051a8da4d..000000000000 --- a/changelog/61324.added +++ /dev/null @@ -1 +0,0 @@ -Adding the ability to add, delete, purge, and modify Salt scheduler jobs when the Salt minion is not running. diff --git a/changelog/61326.added b/changelog/61326.added deleted file mode 100644 index be765c43eaf1..000000000000 --- a/changelog/61326.added +++ /dev/null @@ -1 +0,0 @@ -Added a force option to file.symlink to overwrite an existing symlink with the same name diff --git a/changelog/61331.fixed b/changelog/61331.fixed deleted file mode 100644 index dee523158495..000000000000 --- a/changelog/61331.fixed +++ /dev/null @@ -1 +0,0 @@ -Handle MariaDB 10.5+ SLAVE MONITOR grant diff --git a/changelog/61370.fixed b/changelog/61370.fixed deleted file mode 100644 index 4aee782298e9..000000000000 --- a/changelog/61370.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix secondary ip addresses being added to ip4_interfaces and ip6_interfaces at the same time diff --git a/changelog/61377.fixed b/changelog/61377.fixed deleted file mode 100644 index 6c10147038a6..000000000000 --- a/changelog/61377.fixed +++ /dev/null @@ -1 +0,0 @@ -Do not block the deltaproxy startup. Wrap the call to the individual proxy initialization functions in a try...except, catching the exception, logging an error and moving onto the next proxy minion. diff --git a/changelog/61392.fixed b/changelog/61392.fixed deleted file mode 100644 index a837322d3513..000000000000 --- a/changelog/61392.fixed +++ /dev/null @@ -1 +0,0 @@ -show_instance of hetzner cloud provider should enforce an action like the other ones \ No newline at end of file diff --git a/changelog/61399.fixed b/changelog/61399.fixed deleted file mode 100644 index 3422a5b81a8e..000000000000 --- a/changelog/61399.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix Hetzner Cloud config loading mechanism \ No newline at end of file diff --git a/changelog/61412.fixed b/changelog/61412.fixed deleted file mode 100644 index 7acc99d3bf41..000000000000 --- a/changelog/61412.fixed +++ /dev/null @@ -1 +0,0 @@ -Sets correctly the lvm grain even when lvm's command execution outputs a WARNING diff --git a/changelog/61413.fixed b/changelog/61413.fixed deleted file mode 100644 index 08abe92c5d8f..000000000000 --- a/changelog/61413.fixed +++ /dev/null @@ -1 +0,0 @@ -Use net instead of sc in salt cloud when restarting the salt service diff --git a/changelog/61418.added b/changelog/61418.added deleted file mode 100644 index 457dda7b7ec1..000000000000 --- a/changelog/61418.added +++ /dev/null @@ -1 +0,0 @@ -`gpg_decrypt_must_succeed` config to prevent gpg renderer from failing silently diff --git a/changelog/61440.fixed b/changelog/61440.fixed deleted file mode 100644 index 7babbc69dc3a..000000000000 --- a/changelog/61440.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix use_etag support in fileclient by removing case sensitivity of expected header diff --git a/changelog/61445.fixed b/changelog/61445.fixed deleted file mode 100644 index 5500608aef0e..000000000000 --- a/changelog/61445.fixed +++ /dev/null @@ -1 +0,0 @@ -Expand environment variables in the root_dir registry key diff --git a/changelog/61458.fixed b/changelog/61458.fixed deleted file mode 100644 index 0125322fecf1..000000000000 --- a/changelog/61458.fixed +++ /dev/null @@ -1 +0,0 @@ -Use salt.utils.path.readlink everywhere instead of os.readlink diff --git a/changelog/61478.fixed b/changelog/61478.fixed deleted file mode 100644 index 0002b2b076c3..000000000000 --- a/changelog/61478.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix state_aggregate minion option not respected diff --git a/changelog/61479.fixed b/changelog/61479.fixed deleted file mode 100644 index f037f9c4ae5a..000000000000 --- a/changelog/61479.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed wua.installed and wua.uptodate to return all changes, failures, and supersedences diff --git a/changelog/61484.added b/changelog/61484.added deleted file mode 100644 index c77a2ee14407..000000000000 --- a/changelog/61484.added +++ /dev/null @@ -1 +0,0 @@ -Do not load a private copy of `__grains__` and `__salt__` for the sentry log handler if it is disabled. diff --git a/changelog/61494.fixed b/changelog/61494.fixed deleted file mode 100644 index 2167a32d853b..000000000000 --- a/changelog/61494.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix issue with certutil when there's a space in the path to the certificate diff --git a/changelog/61502.added b/changelog/61502.added deleted file mode 100644 index 56fffae9459e..000000000000 --- a/changelog/61502.added +++ /dev/null @@ -1 +0,0 @@ -Add Jinja filters for itertools functions, flatten, and a state template workflow diff --git a/changelog/61507.fixed b/changelog/61507.fixed deleted file mode 100644 index ec016af7f1f6..000000000000 --- a/changelog/61507.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix cmdmod not respecting config for saltenv diff --git a/changelog/61509.fixed b/changelog/61509.fixed deleted file mode 100644 index 084d8706b330..000000000000 --- a/changelog/61509.fixed +++ /dev/null @@ -1 +0,0 @@ -Convert Py 2'isms to Python 3, and add tests for set_filesystems on AIX diff --git a/changelog/61533.fixed b/changelog/61533.fixed deleted file mode 100644 index 2afde4452ea8..000000000000 --- a/changelog/61533.fixed +++ /dev/null @@ -1 +0,0 @@ -win_wua: Titles no longer limited to 40 characters diff --git a/changelog/61538.fixed b/changelog/61538.fixed deleted file mode 100644 index 682f8d67e52b..000000000000 --- a/changelog/61538.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed error when using network module on RHEL 8 due to the name of the service changing from "network" to "NetworkManager". diff --git a/changelog/61544.fixed b/changelog/61544.fixed deleted file mode 100644 index c3b6a1661a8d..000000000000 --- a/changelog/61544.fixed +++ /dev/null @@ -1 +0,0 @@ -Allow symlink to be created even if source is missing on Windows diff --git a/changelog/61549.added b/changelog/61549.added deleted file mode 100644 index aa0a35bd8489..000000000000 --- a/changelog/61549.added +++ /dev/null @@ -1 +0,0 @@ -Add feature to allow roll-up of duplicate IDs with different names in highstate output diff --git a/changelog/61553.fixed b/changelog/61553.fixed deleted file mode 100644 index 3b2141ab3b3d..000000000000 --- a/changelog/61553.fixed +++ /dev/null @@ -1 +0,0 @@ -Print jinja error context on `UndefinedError`. Previously `jinja2.exceptions.UndefinedError` resulted in a `SaltRenderError` without source file context, unlike all of the other Jinja exceptions handled in `salt/utils/templates.py`. diff --git a/changelog/61557.fixed b/changelog/61557.fixed deleted file mode 100644 index 5604a5c3e389..000000000000 --- a/changelog/61557.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix uptime on AIX systems when less than 24 hours diff --git a/changelog/61562.added b/changelog/61562.added deleted file mode 100644 index f4f4fea8dc05..000000000000 --- a/changelog/61562.added +++ /dev/null @@ -1 +0,0 @@ -Allow cp functions to derive saltenv from config if not explicitly set diff --git a/changelog/61566.deprecated b/changelog/61566.deprecated deleted file mode 100644 index 884d50d9c968..000000000000 --- a/changelog/61566.deprecated +++ /dev/null @@ -1 +0,0 @@ -Deprecated netmiko_conn and pyeapi_conn in napalm_mod.py as these function should not be called from the CLI diff --git a/changelog/61614.fixed b/changelog/61614.fixed deleted file mode 100644 index 744b05a6bc80..000000000000 --- a/changelog/61614.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix issue with state.show_state_usage when a saltenv is not referenced in any topfile diff --git a/changelog/61682.added b/changelog/61682.added deleted file mode 100644 index 6f5b75a28831..000000000000 --- a/changelog/61682.added +++ /dev/null @@ -1 +0,0 @@ -Add a function to the freezer module for comparison of packages and repos in two frozen states diff --git a/changelog/61691.removed b/changelog/61691.removed deleted file mode 100644 index 39df03d700b2..000000000000 --- a/changelog/61691.removed +++ /dev/null @@ -1 +0,0 @@ -Remove the grains.get_or_set_hash function. Please reference pillar and SDB documentation for secure ways to manage sensitive information. Grains are an insecure way to store secrets. diff --git a/changelog/61693.removed b/changelog/61693.removed deleted file mode 100644 index 3dc04689b9f9..000000000000 --- a/changelog/61693.removed +++ /dev/null @@ -1 +0,0 @@ -Removed the `telnet_port`, `serial_type` and `console` parameters in salt/modules/virt.py. Use the `serials` and `consoles` parameters instead. Use the `serials` parameter with a value like ``{{{{'type': 'tcp', 'protocol': 'telnet', 'port': {}}}}}`` instead and a similar `consoles` parameter. diff --git a/changelog/61694.removed b/changelog/61694.removed deleted file mode 100644 index 42dc18264c1c..000000000000 --- a/changelog/61694.removed +++ /dev/null @@ -1,2 +0,0 @@ -Remove remove_lock in zypperpkg.py in favor of unhold. -Remove add_lock in zypperpkg.py in favor of hold. diff --git a/changelog/61696.removed b/changelog/61696.removed deleted file mode 100644 index 11b2d0dafc0a..000000000000 --- a/changelog/61696.removed +++ /dev/null @@ -1,2 +0,0 @@ -Removed support for old-style Windows Group Policy names -Recommended policy names will be displayed in comments diff --git a/changelog/61698.removed b/changelog/61698.removed deleted file mode 100644 index f528ae9ce355..000000000000 --- a/changelog/61698.removed +++ /dev/null @@ -1,2 +0,0 @@ -Remove SaltMessageServer.shutdown in favor of close. -Remove LoadBalancerWorker.stop in favor of close. diff --git a/changelog/61708.added b/changelog/61708.added deleted file mode 100644 index 1653ca12119f..000000000000 --- a/changelog/61708.added +++ /dev/null @@ -1 +0,0 @@ -Add grains_refresh_pre_exec option to allow grains to be refreshed before any operation diff --git a/changelog/61738.fixed b/changelog/61738.fixed deleted file mode 100644 index a37de9ea3a8a..000000000000 --- a/changelog/61738.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix improper master caching of file listing in multiple dynamic environments diff --git a/changelog/61741.fixed b/changelog/61741.fixed deleted file mode 100644 index 1f6ab69ee789..000000000000 --- a/changelog/61741.fixed +++ /dev/null @@ -1 +0,0 @@ -When configured beacons are empty write an empty beacon configuration file. diff --git a/changelog/61743.fixed b/changelog/61743.fixed deleted file mode 100644 index 0a80deb97ab8..000000000000 --- a/changelog/61743.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix file.replace updating mtime with no changes diff --git a/changelog/61763.added b/changelog/61763.added deleted file mode 100644 index 720a948d0163..000000000000 --- a/changelog/61763.added +++ /dev/null @@ -1 +0,0 @@ -Add Etag support for archive.extracted web sources diff --git a/changelog/61848.fixed b/changelog/61848.fixed deleted file mode 100644 index e8e6fd34262c..000000000000 --- a/changelog/61848.fixed +++ /dev/null @@ -1 +0,0 @@ -Update Markup and contextfunction imports for jinja versions >=3.1. diff --git a/cicd/amis.yml b/cicd/amis.yml index 99c2e211b411..968a16c80742 100644 --- a/cicd/amis.yml +++ b/cicd/amis.yml @@ -3,16 +3,18 @@ amazon-2-x86_64: ami-01226819a514516fe arch-lts-x86_64: ami-018a6b479dcb87969 centos-7-x86_64: ami-05764f27cdf8f99e0 centosstream-8-x86_64: ami-02fc0a57f9b1fa4ed +centosstream-9-x86_64: ami-09c9a8cff0874c232 debian-10-amd64: ami-0eb32b3297dc438d0 debian-11-amd64: ami-08bf6df84b4488e8a debian-11-arm64: ami-085ff5dc42735c52e debian-9-amd64: ami-033ed8f0f55cad1e0 -fedora-34-x86_64: ami-0eb0a8e46caef07e8 -freebsd-130-amd64: ami-0b48fe6a03c29b2d9 +fedora-35-x86_64: ami-05dbe9d0b98ca2f9c +freebsd-131-amd64: ami-0ef1a75f9b997e572 opensuse-15-x86_64: ami-0b57dabce687992c3 photon-3-x86_64: ami-080bc696fab4f5840 ubuntu-1804-amd64: ami-0decb138fa5e24979 ubuntu-2004-amd64: ami-0468248e8ecfacd5c ubuntu-2004-arm64: ami-07dcde5a6a61ce72a +ubuntu-2204-amd64: ami-0b039e5f5e96232f6 windows-2016-x64: ami-03dce76a35067f8fd windows-2019-x64: ami-08fe22a79bd743e34 diff --git a/cicd/jenkins/pr-centosstream-9-x86_64-py3-pytest b/cicd/jenkins/pr-centosstream-9-x86_64-py3-pytest new file mode 100644 index 000000000000..34c0c6165cc6 --- /dev/null +++ b/cicd/jenkins/pr-centosstream-9-x86_64-py3-pytest @@ -0,0 +1,17 @@ +@Library('salt@master-1.11') _ + +runTestSuite( + concurrent_builds: 1, + distro_name: 'centosstream', + distro_version: '9', + distro_arch: 'x86-64', + env: env, + jenkins_slave_label: 'kitchen-slave', + nox_env_name: 'pytest-zeromq', + nox_passthrough_opts: '--ssh-tests', + python_version: 'py3', + testrun_timeout: 6, + use_spot_instances: true, +) + +// vim: ft=groovy diff --git a/cicd/jenkins/pr-fedora-34-x86_64-py3-pytest b/cicd/jenkins/pr-fedora-35-x86_64-py3-pytest similarity index 93% rename from cicd/jenkins/pr-fedora-34-x86_64-py3-pytest rename to cicd/jenkins/pr-fedora-35-x86_64-py3-pytest index be89718c9f41..ab39bec3cc97 100644 --- a/cicd/jenkins/pr-fedora-34-x86_64-py3-pytest +++ b/cicd/jenkins/pr-fedora-35-x86_64-py3-pytest @@ -3,7 +3,7 @@ runTestSuite( concurrent_builds: 1, distro_name: 'fedora', - distro_version: '34', + distro_version: '35', distro_arch: 'x86-64', env: env, jenkins_slave_label: 'kitchen-slave', diff --git a/cicd/jenkins/pr-freebsd-130-amd64-py3-pytest b/cicd/jenkins/pr-freebsd-131-amd64-py3-pytest similarity index 93% rename from cicd/jenkins/pr-freebsd-130-amd64-py3-pytest rename to cicd/jenkins/pr-freebsd-131-amd64-py3-pytest index 8cef7e907bd0..b25ffa302afe 100644 --- a/cicd/jenkins/pr-freebsd-130-amd64-py3-pytest +++ b/cicd/jenkins/pr-freebsd-131-amd64-py3-pytest @@ -3,7 +3,7 @@ runTestSuite( concurrent_builds: 1, distro_name: 'freebsd', - distro_version: '130', + distro_version: '131', distro_arch: 'amd64', env: env, jenkins_slave_label: 'kitchen-slave', diff --git a/cicd/jenkins/pr-macosx-catalina-x86_64-py3-pytest b/cicd/jenkins/pr-macosx-catalina-x86_64-py3-pytest index df640d30a94f..d998e3bd3ca5 100644 --- a/cicd/jenkins/pr-macosx-catalina-x86_64-py3-pytest +++ b/cicd/jenkins/pr-macosx-catalina-x86_64-py3-pytest @@ -8,12 +8,13 @@ runTestSuite( distro_arch: 'x86-64', env: env, jenkins_slave_label: 'kitchen-slave-mac', - kitchen_platforms_file: '/var/jenkins/workspace/pre-golden-platforms-new.yml', + kitchen_platforms_file: '/var/jenkins/workspace/pre-golden-platforms-new.3.9.yml', nox_env_name: 'pytest-zeromq', nox_passthrough_opts: '--ssh-tests', python_version: 'py3', - testrun_timeout: 6, + testrun_timeout: 10, use_spot_instances: false, + macos_python_version: '3.9', ) // vim: ft=groovy diff --git a/cicd/jenkins/pr-pre-commit b/cicd/jenkins/pr-pre-commit index 72daae225d30..17befb47d29f 100644 --- a/cicd/jenkins/pr-pre-commit +++ b/cicd/jenkins/pr-pre-commit @@ -5,7 +5,7 @@ if (env.CHANGE_ID) { pre_commit_skips = '' } else { // This is a branch build - pre_commit_skips = 'pyupgrade,remove-import-headers,rstcheck' + pre_commit_skips = '' } runPreCommit( diff --git a/cicd/jenkins/pr-ubuntu-2204-amd64-py3-m2crypto-pytest b/cicd/jenkins/pr-ubuntu-2204-amd64-py3-m2crypto-pytest new file mode 100644 index 000000000000..79182e006843 --- /dev/null +++ b/cicd/jenkins/pr-ubuntu-2204-amd64-py3-m2crypto-pytest @@ -0,0 +1,17 @@ +@Library('salt@master-1.11') _ + +runTestSuite( + concurrent_builds: 1, + distro_name: 'ubuntu', + distro_version: '2204', + distro_arch: 'amd64', + env: env, + jenkins_slave_label: 'kitchen-slave', + nox_env_name: 'pytest-zeromq-m2crypto', + nox_passthrough_opts: '--ssh-tests', + python_version: 'py3', + testrun_timeout: 6, + use_spot_instances: true, +) + +// vim: ft=groovy diff --git a/cicd/jenkins/pr-ubuntu-2204-amd64-py3-pycryptodome-pytest b/cicd/jenkins/pr-ubuntu-2204-amd64-py3-pycryptodome-pytest new file mode 100644 index 000000000000..8deec9b7fcc6 --- /dev/null +++ b/cicd/jenkins/pr-ubuntu-2204-amd64-py3-pycryptodome-pytest @@ -0,0 +1,16 @@ +@Library('salt@master-1.11') _ + +runTestSuite( + concurrent_builds: 1, + distro_name: 'ubuntu', + distro_version: '2204', + distro_arch: 'amd64', + env: env, + jenkins_slave_label: 'kitchen-slave', + nox_env_name: 'pytest-zeromq-pycryptodome', + nox_passthrough_opts: '--ssh-tests', + python_version: 'py3', + testrun_timeout: 6, + use_spot_instances: true) + +// vim: ft=groovy diff --git a/cicd/jenkins/pr-ubuntu-2204-amd64-py3-pytest b/cicd/jenkins/pr-ubuntu-2204-amd64-py3-pytest new file mode 100644 index 000000000000..632aa528730a --- /dev/null +++ b/cicd/jenkins/pr-ubuntu-2204-amd64-py3-pytest @@ -0,0 +1,17 @@ +@Library('salt@master-1.11') _ + +runTestSuite( + concurrent_builds: 1, + distro_name: 'ubuntu', + distro_version: '2204', + distro_arch: 'amd64', + env: env, + jenkins_slave_label: 'kitchen-slave', + nox_env_name: 'pytest-zeromq', + nox_passthrough_opts: '--ssh-tests', + python_version: 'py3', + testrun_timeout: 6, + use_spot_instances: true, +) + +// vim: ft=groovy diff --git a/cicd/jenkins/pr-ubuntu-2204-amd64-py3-tcp-pytest b/cicd/jenkins/pr-ubuntu-2204-amd64-py3-tcp-pytest new file mode 100644 index 000000000000..50cfa9ce859f --- /dev/null +++ b/cicd/jenkins/pr-ubuntu-2204-amd64-py3-tcp-pytest @@ -0,0 +1,17 @@ +@Library('salt@master-1.11') _ + +runTestSuite( + concurrent_builds: 1, + distro_name: 'ubuntu', + distro_version: '2204', + distro_arch: 'amd64', + env: env, + jenkins_slave_label: 'kitchen-slave', + nox_env_name: 'pytest-tcp', + nox_passthrough_opts: '--ssh-tests', + python_version: 'py3', + testrun_timeout: 6, + use_spot_instances: true, +) + +// vim: ft=groovy diff --git a/doc/_themes/saltstack2/layout.html b/doc/_themes/saltstack2/layout.html index fad70e008e6f..04bff89e1fb7 100644 --- a/doc/_themes/saltstack2/layout.html +++ b/doc/_themes/saltstack2/layout.html @@ -158,7 +158,7 @@