mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge 3006.x into 3007.x
This commit is contained in:
commit
44eb14b74c
59 changed files with 20027 additions and 12673 deletions
82
CHANGELOG.md
82
CHANGELOG.md
|
@ -7,6 +7,88 @@ Versions are `MAJOR.PATCH`.
|
|||
|
||||
# Changelog
|
||||
|
||||
|
||||
## 3006.8 (2024-04-29)
|
||||
|
||||
|
||||
### Removed
|
||||
|
||||
- Removed deprecated code scheduled to be removed on 2024-01-01:
|
||||
|
||||
* ``TemporaryLoggingHandler`` and ``QueueHandler`` in ``salt/_logging/handlers.py``
|
||||
* All of the ``salt/log`` package.
|
||||
* The ``salt/modules/cassandra_mod.py`` module.
|
||||
* The ``salt/returners/cassandra_return.py`` returner.
|
||||
* The ``salt/returners/django_return.py`` returner. [#66147](https://github.com/saltstack/salt/issues/66147)
|
||||
|
||||
|
||||
### Deprecated
|
||||
|
||||
- Drop Fedora 37 and Fedora 38 support [#65860](https://github.com/saltstack/salt/issues/65860)
|
||||
- Drop CentOS Stream 8 and 9 from CI/CD [#66104](https://github.com/saltstack/salt/issues/66104)
|
||||
- Drop Photon OS 3 support [#66105](https://github.com/saltstack/salt/issues/66105)
|
||||
- The ``salt.utils.psutil_compat`` module has been deprecated and will be removed in Salt 3008. Please use the ``psutil`` module directly. [#66139](https://github.com/saltstack/salt/issues/66139)
|
||||
|
||||
|
||||
### Fixed
|
||||
|
||||
- ``user.add`` on Windows now allows you to add user names that contain all
|
||||
numeric characters [#53363](https://github.com/saltstack/salt/issues/53363)
|
||||
- Fix an issue with the win_system module detecting established connections on
|
||||
non-Windows systems. Uses psutils instead of parsing the return of netstat [#60508](https://github.com/saltstack/salt/issues/60508)
|
||||
- pkg.refresh_db on Windows now honors saltenv [#61807](https://github.com/saltstack/salt/issues/61807)
|
||||
- Fixed an issue with adding new machine policies and applying those same
|
||||
policies in the same state by adding a ``refresh_cache`` option to the
|
||||
``lgpo.set`` state. [#62734](https://github.com/saltstack/salt/issues/62734)
|
||||
- file.managed correctly handles file path with '#' [#63060](https://github.com/saltstack/salt/issues/63060)
|
||||
- Fix master ip detection when DNS records change [#63654](https://github.com/saltstack/salt/issues/63654)
|
||||
- Fix user and group management on Windows to handle the Everyone group [#63667](https://github.com/saltstack/salt/issues/63667)
|
||||
- Fixes an issue in pkg.refresh_db on Windows where new package definition
|
||||
files were not being picked up on the first run [#63848](https://github.com/saltstack/salt/issues/63848)
|
||||
- Display a proper error when pki commands fail in the win_pki module [#64933](https://github.com/saltstack/salt/issues/64933)
|
||||
- Prevent full system upgrade on single package install for Arch Linux [#65200](https://github.com/saltstack/salt/issues/65200)
|
||||
- When using s3fs, if files are deleted from the bucket, they were not deleted in
|
||||
the master or minion local cache, which could lead to unexpected file copies or
|
||||
even state applications. This change makes the local cache consistent with the
|
||||
remote bucket by deleting files locally that are deleted from the bucket.
|
||||
|
||||
**NOTE** this could lead to **breakage** on your affected systems if it was
|
||||
inadvertently depending on previously deleted files. [#65611](https://github.com/saltstack/salt/issues/65611)
|
||||
- Fixed an issue with file.directory state where paths would be modified in test
|
||||
mode if backupname is used. [#66049](https://github.com/saltstack/salt/issues/66049)
|
||||
- Execution modules have access to regular fileclient durring pillar rendering. [#66124](https://github.com/saltstack/salt/issues/66124)
|
||||
- Fixed a issue with server channel where a minion's public key
|
||||
would be rejected if it contained a final newline character. [#66126](https://github.com/saltstack/salt/issues/66126)
|
||||
- Fix content type backwards compatablity with http proxy post requests in the http utils module. [#66127](https://github.com/saltstack/salt/issues/66127)
|
||||
- Fix systemctl with "try-restart" instead of "retry-restart" within the RPM spec, properly restarting upgraded services [#66143](https://github.com/saltstack/salt/issues/66143)
|
||||
- Auto discovery of ssh, scp and ssh-keygen binaries. [#66205](https://github.com/saltstack/salt/issues/66205)
|
||||
- Add leading slash to salt helper file paths as per dh_links requirement [#66280](https://github.com/saltstack/salt/issues/66280)
|
||||
- Fixed x509.certificate_managed - ca_server did not return a certificate [#66284](https://github.com/saltstack/salt/issues/66284)
|
||||
- removed log line that did nothing. [#66289](https://github.com/saltstack/salt/issues/66289)
|
||||
- Chocolatey: Make sure the return dictionary from ``chocolatey.version``
|
||||
contains lowercase keys [#66290](https://github.com/saltstack/salt/issues/66290)
|
||||
- fix cacheing inline pillar, by not rendering inline pillar during cache save function. [#66292](https://github.com/saltstack/salt/issues/66292)
|
||||
- The file module correctly perserves file permissions on link target. [#66400](https://github.com/saltstack/salt/issues/66400)
|
||||
- Upgrade relenv to 0.16.0 and python to 3.10.14 [#66402](https://github.com/saltstack/salt/issues/66402)
|
||||
- backport the fix from #66164 to fix #65703. use OrderedDict to fix bad indexing. [#66705](https://github.com/saltstack/salt/issues/66705)
|
||||
|
||||
|
||||
### Added
|
||||
|
||||
- Add Fedora 39 support [#65859](https://github.com/saltstack/salt/issues/65859)
|
||||
|
||||
|
||||
### Security
|
||||
|
||||
- Upgrade to `cryptography==42.0.5` due to a few security issues:
|
||||
|
||||
* https://github.com/advisories/GHSA-9v9h-cgj8-h64p
|
||||
* https://github.com/advisories/GHSA-3ww4-gg4f-jr7f
|
||||
* https://github.com/advisories/GHSA-6vqw-3v5j-54x4 [#66141](https://github.com/saltstack/salt/issues/66141)
|
||||
- Bump to `idna==3.7` due to https://github.com/advisories/GHSA-jjg7-2v4v-x38h [#66377](https://github.com/saltstack/salt/issues/66377)
|
||||
- Bump to `aiohttp==3.9.4` due to https://github.com/advisories/GHSA-7gpw-8wmc-pm8g [#66411](https://github.com/saltstack/salt/issues/66411)
|
||||
|
||||
|
||||
## 3007.0 (2024-03-03)
|
||||
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
``user.add`` on Windows now allows you to add user names that contain all
|
||||
numeric characters
|
|
@ -1,2 +0,0 @@
|
|||
Fix an issue with the win_system module detecting established connections on
|
||||
non-Windows systems. Uses psutils instead of parsing the return of netstat
|
|
@ -1 +0,0 @@
|
|||
pkg.refresh_db on Windows now honors saltenv
|
|
@ -1,3 +0,0 @@
|
|||
Fixed an issue with adding new machine policies and applying those same
|
||||
policies in the same state by adding a ``refresh_cache`` option to the
|
||||
``lgpo.set`` state.
|
|
@ -1 +0,0 @@
|
|||
file.managed correctly handles file path with '#'
|
|
@ -1 +0,0 @@
|
|||
Fix user and group management on Windows to handle the Everyone group
|
|
@ -1,2 +0,0 @@
|
|||
Fixes an issue in pkg.refresh_db on Windows where new package definition
|
||||
files were not being picked up on the first run
|
|
@ -1 +0,0 @@
|
|||
Display a proper error when pki commands fail in the win_pki module
|
|
@ -1 +0,0 @@
|
|||
Prevent full system upgrade on single package install for Arch Linux
|
|
@ -1,7 +0,0 @@
|
|||
When using s3fs, if files are deleted from the bucket, they were not deleted in
|
||||
the master or minion local cache, which could lead to unexpected file copies or
|
||||
even state applications. This change makes the local cache consistent with the
|
||||
remote bucket by deleting files locally that are deleted from the bucket.
|
||||
|
||||
**NOTE** this could lead to **breakage** on your affected systems if it was
|
||||
inadvertently depending on previously deleted files.
|
|
@ -1 +0,0 @@
|
|||
Add Fedora 39 support
|
|
@ -1 +0,0 @@
|
|||
Drop Fedora 37 and Fedora 38 support
|
|
@ -1,2 +0,0 @@
|
|||
Fixed an issue with file.directory state where paths would be modified in test
|
||||
mode if backupname is used.
|
|
@ -1 +0,0 @@
|
|||
Drop CentOS Stream 8 and 9 from CI/CD
|
|
@ -1 +0,0 @@
|
|||
Drop Photon OS 3 support
|
|
@ -1 +0,0 @@
|
|||
Fix content type backwards compatablity with http proxy post requests in the http utils module.
|
|
@ -1 +0,0 @@
|
|||
The ``salt.utils.psutil_compat`` module has been deprecated and will be removed in Salt 3008. Please use the ``psutil`` module directly.
|
|
@ -1,5 +0,0 @@
|
|||
Upgrade to `cryptography==42.0.5` due to a few security issues:
|
||||
|
||||
* https://github.com/advisories/GHSA-9v9h-cgj8-h64p
|
||||
* https://github.com/advisories/GHSA-3ww4-gg4f-jr7f
|
||||
* https://github.com/advisories/GHSA-6vqw-3v5j-54x4
|
|
@ -1 +0,0 @@
|
|||
Fix systemctl with "try-restart" instead of "retry-restart" within the RPM spec, properly restarting upgraded services
|
|
@ -1,7 +0,0 @@
|
|||
Removed deprecated code scheduled to be removed on 2024-01-01:
|
||||
|
||||
* ``TemporaryLoggingHandler`` and ``QueueHandler`` in ``salt/_logging/handlers.py``
|
||||
* All of the ``salt/log`` package.
|
||||
* The ``salt/modules/cassandra_mod.py`` module.
|
||||
* The ``salt/returners/cassandra_return.py`` returner.
|
||||
* The ``salt/returners/django_return.py`` returner.
|
|
@ -1 +0,0 @@
|
|||
Auto discovery of ssh, scp and ssh-keygen binaries.
|
|
@ -1 +0,0 @@
|
|||
Add leading slash to salt helper file paths as per dh_links requirement
|
|
@ -1 +0,0 @@
|
|||
Fixed x509.certificate_managed - ca_server did not return a certificate
|
|
@ -1 +0,0 @@
|
|||
removed log line that did nothing.
|
|
@ -1,2 +0,0 @@
|
|||
Chocolatey: Make sure the return dictionary from ``chocolatey.version``
|
||||
contains lowercase keys
|
|
@ -1 +0,0 @@
|
|||
fix cacheing inline pillar, by not rendering inline pillar during cache save function.
|
|
@ -1 +0,0 @@
|
|||
Bump to `idna==3.7` due to https://github.com/advisories/GHSA-jjg7-2v4v-x38h
|
|
@ -1 +0,0 @@
|
|||
The file module correctly perserves file permissions on link target.
|
|
@ -1 +0,0 @@
|
|||
Upgrade relenv to 0.16.0 and python to 3.10.14
|
|
@ -1 +0,0 @@
|
|||
Bump to `aiohttp==3.9.4` due to https://github.com/advisories/GHSA-7gpw-8wmc-pm8g
|
|
@ -1 +0,0 @@
|
|||
backport the fix from #66164 to fix #65703. use OrderedDict to fix bad indexing.
|
|
@ -271,9 +271,8 @@
|
|||
#ping_interval: 0
|
||||
|
||||
# To auto recover minions if master changes IP address (DDNS)
|
||||
# auth_tries: 10
|
||||
# auth_safemode: True
|
||||
# ping_interval: 2
|
||||
# master_alive_interval: 10
|
||||
# master_tries: -1
|
||||
#
|
||||
# Minions won't know master is missing until a ping fails. After the ping fail,
|
||||
# the minion will attempt authentication and likely fails out and cause a restart.
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-API" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-API" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-api \- salt-api Command
|
||||
.sp
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-CALL" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-CALL" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-call \- salt-call Documentation
|
||||
.SH SYNOPSIS
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-CLOUD" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-CLOUD" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-cloud \- Salt Cloud Command
|
||||
.sp
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-CP" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-CP" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-cp \- salt-cp Documentation
|
||||
.sp
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-KEY" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-KEY" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-key \- salt-key Documentation
|
||||
.SH SYNOPSIS
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-MASTER" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-MASTER" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-master \- salt-master Documentation
|
||||
.sp
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-MINION" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-MINION" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-minion \- salt-minion Documentation
|
||||
.sp
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-PROXY" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-PROXY" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-proxy \- salt-proxy Documentation
|
||||
.sp
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-RUN" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-RUN" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-run \- salt-run Documentation
|
||||
.sp
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-SSH" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-SSH" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-ssh \- salt-ssh Documentation
|
||||
.SH SYNOPSIS
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT-SYNDIC" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT-SYNDIC" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt-syndic \- salt-syndic Documentation
|
||||
.sp
|
||||
|
|
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SALT" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SALT" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
salt \- salt
|
||||
.SH SYNOPSIS
|
||||
|
|
31784
doc/man/salt.7
31784
doc/man/salt.7
File diff suppressed because it is too large
Load diff
|
@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "SPM" "1" "Generated on March 03, 2024 at 06:52:04 AM UTC." "3007.0" "Salt"
|
||||
.TH "SPM" "1" "Generated on April 29, 2024 at 03:20:12 AM UTC." "3006.8" "Salt"
|
||||
.SH NAME
|
||||
spm \- Salt Package Manager Command
|
||||
.sp
|
||||
|
|
|
@ -291,7 +291,9 @@ Default: ``0``
|
|||
|
||||
Configures how often, in seconds, the minion will verify that the current
|
||||
master is alive and responding. The minion will try to establish a connection
|
||||
to the next master in the list if it finds the existing one is dead.
|
||||
to the next master in the list if it finds the existing one is dead. This
|
||||
setting can also be used to detect master DNS record changes when a minion has
|
||||
been disconnected.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
|
|
96
doc/topics/releases/3006.8.md
Normal file
96
doc/topics/releases/3006.8.md
Normal file
|
@ -0,0 +1,96 @@
|
|||
(release-3006.8)=
|
||||
# Salt 3006.8 release notes
|
||||
|
||||
<!---
|
||||
Do not edit this file. This is auto generated.
|
||||
Edit the templates in doc/topics/releases/templates/
|
||||
for a given release.
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
Add release specific details below
|
||||
-->
|
||||
|
||||
<!--
|
||||
Do not edit the changelog below.
|
||||
This is auto generated.
|
||||
-->
|
||||
## Changelog
|
||||
|
||||
### Removed
|
||||
|
||||
- Removed deprecated code scheduled to be removed on 2024-01-01:
|
||||
|
||||
* ``TemporaryLoggingHandler`` and ``QueueHandler`` in ``salt/_logging/handlers.py``
|
||||
* All of the ``salt/log`` package.
|
||||
* The ``salt/modules/cassandra_mod.py`` module.
|
||||
* The ``salt/returners/cassandra_return.py`` returner.
|
||||
* The ``salt/returners/django_return.py`` returner. [#66147](https://github.com/saltstack/salt/issues/66147)
|
||||
|
||||
|
||||
### Deprecated
|
||||
|
||||
- Drop Fedora 37 and Fedora 38 support [#65860](https://github.com/saltstack/salt/issues/65860)
|
||||
- Drop CentOS Stream 8 and 9 from CI/CD [#66104](https://github.com/saltstack/salt/issues/66104)
|
||||
- Drop Photon OS 3 support [#66105](https://github.com/saltstack/salt/issues/66105)
|
||||
- The ``salt.utils.psutil_compat`` module has been deprecated and will be removed in Salt 3008. Please use the ``psutil`` module directly. [#66139](https://github.com/saltstack/salt/issues/66139)
|
||||
|
||||
|
||||
### Fixed
|
||||
|
||||
- ``user.add`` on Windows now allows you to add user names that contain all
|
||||
numeric characters [#53363](https://github.com/saltstack/salt/issues/53363)
|
||||
- Fix an issue with the win_system module detecting established connections on
|
||||
non-Windows systems. Uses psutils instead of parsing the return of netstat [#60508](https://github.com/saltstack/salt/issues/60508)
|
||||
- pkg.refresh_db on Windows now honors saltenv [#61807](https://github.com/saltstack/salt/issues/61807)
|
||||
- Fixed an issue with adding new machine policies and applying those same
|
||||
policies in the same state by adding a ``refresh_cache`` option to the
|
||||
``lgpo.set`` state. [#62734](https://github.com/saltstack/salt/issues/62734)
|
||||
- file.managed correctly handles file path with '#' [#63060](https://github.com/saltstack/salt/issues/63060)
|
||||
- Fix master ip detection when DNS records change [#63654](https://github.com/saltstack/salt/issues/63654)
|
||||
- Fix user and group management on Windows to handle the Everyone group [#63667](https://github.com/saltstack/salt/issues/63667)
|
||||
- Fixes an issue in pkg.refresh_db on Windows where new package definition
|
||||
files were not being picked up on the first run [#63848](https://github.com/saltstack/salt/issues/63848)
|
||||
- Display a proper error when pki commands fail in the win_pki module [#64933](https://github.com/saltstack/salt/issues/64933)
|
||||
- Prevent full system upgrade on single package install for Arch Linux [#65200](https://github.com/saltstack/salt/issues/65200)
|
||||
- When using s3fs, if files are deleted from the bucket, they were not deleted in
|
||||
the master or minion local cache, which could lead to unexpected file copies or
|
||||
even state applications. This change makes the local cache consistent with the
|
||||
remote bucket by deleting files locally that are deleted from the bucket.
|
||||
|
||||
**NOTE** this could lead to **breakage** on your affected systems if it was
|
||||
inadvertently depending on previously deleted files. [#65611](https://github.com/saltstack/salt/issues/65611)
|
||||
- Fixed an issue with file.directory state where paths would be modified in test
|
||||
mode if backupname is used. [#66049](https://github.com/saltstack/salt/issues/66049)
|
||||
- Execution modules have access to regular fileclient durring pillar rendering. [#66124](https://github.com/saltstack/salt/issues/66124)
|
||||
- Fixed a issue with server channel where a minion's public key
|
||||
would be rejected if it contained a final newline character. [#66126](https://github.com/saltstack/salt/issues/66126)
|
||||
- Fix content type backwards compatablity with http proxy post requests in the http utils module. [#66127](https://github.com/saltstack/salt/issues/66127)
|
||||
- Fix systemctl with "try-restart" instead of "retry-restart" within the RPM spec, properly restarting upgraded services [#66143](https://github.com/saltstack/salt/issues/66143)
|
||||
- Auto discovery of ssh, scp and ssh-keygen binaries. [#66205](https://github.com/saltstack/salt/issues/66205)
|
||||
- Add leading slash to salt helper file paths as per dh_links requirement [#66280](https://github.com/saltstack/salt/issues/66280)
|
||||
- Fixed x509.certificate_managed - ca_server did not return a certificate [#66284](https://github.com/saltstack/salt/issues/66284)
|
||||
- removed log line that did nothing. [#66289](https://github.com/saltstack/salt/issues/66289)
|
||||
- Chocolatey: Make sure the return dictionary from ``chocolatey.version``
|
||||
contains lowercase keys [#66290](https://github.com/saltstack/salt/issues/66290)
|
||||
- fix cacheing inline pillar, by not rendering inline pillar during cache save function. [#66292](https://github.com/saltstack/salt/issues/66292)
|
||||
- The file module correctly perserves file permissions on link target. [#66400](https://github.com/saltstack/salt/issues/66400)
|
||||
- Upgrade relenv to 0.16.0 and python to 3.10.14 [#66402](https://github.com/saltstack/salt/issues/66402)
|
||||
- backport the fix from #66164 to fix #65703. use OrderedDict to fix bad indexing. [#66705](https://github.com/saltstack/salt/issues/66705)
|
||||
|
||||
|
||||
### Added
|
||||
|
||||
- Add Fedora 39 support [#65859](https://github.com/saltstack/salt/issues/65859)
|
||||
|
||||
|
||||
### Security
|
||||
|
||||
- Upgrade to `cryptography==42.0.5` due to a few security issues:
|
||||
|
||||
* https://github.com/advisories/GHSA-9v9h-cgj8-h64p
|
||||
* https://github.com/advisories/GHSA-3ww4-gg4f-jr7f
|
||||
* https://github.com/advisories/GHSA-6vqw-3v5j-54x4 [#66141](https://github.com/saltstack/salt/issues/66141)
|
||||
- Bump to `idna==3.7` due to https://github.com/advisories/GHSA-jjg7-2v4v-x38h [#66377](https://github.com/saltstack/salt/issues/66377)
|
||||
- Bump to `aiohttp==3.9.4` due to https://github.com/advisories/GHSA-7gpw-8wmc-pm8g [#66411](https://github.com/saltstack/salt/issues/66411)
|
14
doc/topics/releases/templates/3006.8.md.template
Normal file
14
doc/topics/releases/templates/3006.8.md.template
Normal file
|
@ -0,0 +1,14 @@
|
|||
(release-3006.8)=
|
||||
# Salt 3006.8 release notes{{ unreleased }}
|
||||
{{ warning }}
|
||||
|
||||
<!--
|
||||
Add release specific details below
|
||||
-->
|
||||
|
||||
<!--
|
||||
Do not edit the changelog below.
|
||||
This is auto generated.
|
||||
-->
|
||||
## Changelog
|
||||
{{ changelog }}
|
|
@ -1,3 +1,82 @@
|
|||
salt (3006.8) stable; urgency=medium
|
||||
|
||||
|
||||
# Removed
|
||||
|
||||
* Removed deprecated code scheduled to be removed on 2024-01-01:
|
||||
|
||||
* ``TemporaryLoggingHandler`` and ``QueueHandler`` in ``salt/_logging/handlers.py``
|
||||
* All of the ``salt/log`` package.
|
||||
* The ``salt/modules/cassandra_mod.py`` module.
|
||||
* The ``salt/returners/cassandra_return.py`` returner.
|
||||
* The ``salt/returners/django_return.py`` returner. [#66147](https://github.com/saltstack/salt/issues/66147)
|
||||
|
||||
# Deprecated
|
||||
|
||||
* Drop Fedora 37 and Fedora 38 support [#65860](https://github.com/saltstack/salt/issues/65860)
|
||||
* Drop CentOS Stream 8 and 9 from CI/CD [#66104](https://github.com/saltstack/salt/issues/66104)
|
||||
* Drop Photon OS 3 support [#66105](https://github.com/saltstack/salt/issues/66105)
|
||||
* The ``salt.utils.psutil_compat`` module has been deprecated and will be removed in Salt 3008. Please use the ``psutil`` module directly. [#66139](https://github.com/saltstack/salt/issues/66139)
|
||||
|
||||
# Fixed
|
||||
|
||||
* ``user.add`` on Windows now allows you to add user names that contain all
|
||||
numeric characters [#53363](https://github.com/saltstack/salt/issues/53363)
|
||||
* Fix an issue with the win_system module detecting established connections on
|
||||
non*Windows systems. Uses psutils instead of parsing the return of netstat [#60508](https://github.com/saltstack/salt/issues/60508)
|
||||
* pkg.refresh_db on Windows now honors saltenv [#61807](https://github.com/saltstack/salt/issues/61807)
|
||||
* Fixed an issue with adding new machine policies and applying those same
|
||||
policies in the same state by adding a ``refresh_cache`` option to the
|
||||
``lgpo.set`` state. [#62734](https://github.com/saltstack/salt/issues/62734)
|
||||
* file.managed correctly handles file path with '#' [#63060](https://github.com/saltstack/salt/issues/63060)
|
||||
* Fix master ip detection when DNS records change [#63654](https://github.com/saltstack/salt/issues/63654)
|
||||
* Fix user and group management on Windows to handle the Everyone group [#63667](https://github.com/saltstack/salt/issues/63667)
|
||||
* Fixes an issue in pkg.refresh_db on Windows where new package definition
|
||||
files were not being picked up on the first run [#63848](https://github.com/saltstack/salt/issues/63848)
|
||||
* Display a proper error when pki commands fail in the win_pki module [#64933](https://github.com/saltstack/salt/issues/64933)
|
||||
* Prevent full system upgrade on single package install for Arch Linux [#65200](https://github.com/saltstack/salt/issues/65200)
|
||||
* When using s3fs, if files are deleted from the bucket, they were not deleted in
|
||||
the master or minion local cache, which could lead to unexpected file copies or
|
||||
even state applications. This change makes the local cache consistent with the
|
||||
remote bucket by deleting files locally that are deleted from the bucket.
|
||||
|
||||
**NOTE** this could lead to **breakage** on your affected systems if it was
|
||||
inadvertently depending on previously deleted files. [#65611](https://github.com/saltstack/salt/issues/65611)
|
||||
* Fixed an issue with file.directory state where paths would be modified in test
|
||||
mode if backupname is used. [#66049](https://github.com/saltstack/salt/issues/66049)
|
||||
* Execution modules have access to regular fileclient durring pillar rendering. [#66124](https://github.com/saltstack/salt/issues/66124)
|
||||
* Fixed a issue with server channel where a minion's public key
|
||||
would be rejected if it contained a final newline character. [#66126](https://github.com/saltstack/salt/issues/66126)
|
||||
* Fix content type backwards compatablity with http proxy post requests in the http utils module. [#66127](https://github.com/saltstack/salt/issues/66127)
|
||||
* Fix systemctl with "try-restart" instead of "retry-restart" within the RPM spec, properly restarting upgraded services [#66143](https://github.com/saltstack/salt/issues/66143)
|
||||
* Auto discovery of ssh, scp and ssh-keygen binaries. [#66205](https://github.com/saltstack/salt/issues/66205)
|
||||
* Add leading slash to salt helper file paths as per dh_links requirement [#66280](https://github.com/saltstack/salt/issues/66280)
|
||||
* Fixed x509.certificate_managed - ca_server did not return a certificate [#66284](https://github.com/saltstack/salt/issues/66284)
|
||||
* removed log line that did nothing. [#66289](https://github.com/saltstack/salt/issues/66289)
|
||||
* Chocolatey: Make sure the return dictionary from ``chocolatey.version``
|
||||
contains lowercase keys [#66290](https://github.com/saltstack/salt/issues/66290)
|
||||
* fix cacheing inline pillar, by not rendering inline pillar during cache save function. [#66292](https://github.com/saltstack/salt/issues/66292)
|
||||
* The file module correctly perserves file permissions on link target. [#66400](https://github.com/saltstack/salt/issues/66400)
|
||||
* Upgrade relenv to 0.16.0 and python to 3.10.14 [#66402](https://github.com/saltstack/salt/issues/66402)
|
||||
* backport the fix from #66164 to fix #65703. use OrderedDict to fix bad indexing. [#66705](https://github.com/saltstack/salt/issues/66705)
|
||||
|
||||
# Added
|
||||
|
||||
* Add Fedora 39 support [#65859](https://github.com/saltstack/salt/issues/65859)
|
||||
|
||||
# Security
|
||||
|
||||
* Upgrade to `cryptography==42.0.5` due to a few security issues:
|
||||
|
||||
* https://github.com/advisories/GHSA*9v9h-cgj8-h64p
|
||||
* https://github.com/advisories/GHSA*3ww4-gg4f-jr7f
|
||||
* https://github.com/advisories/GHSA*6vqw-3v5j-54x4 [#66141](https://github.com/saltstack/salt/issues/66141)
|
||||
* Bump to `idna==3.7` due to https://github.com/advisories/GHSA-jjg7-2v4v-x38h [#66377](https://github.com/saltstack/salt/issues/66377)
|
||||
* Bump to `aiohttp==3.9.4` due to https://github.com/advisories/GHSA-7gpw-8wmc-pm8g [#66411](https://github.com/saltstack/salt/issues/66411)
|
||||
|
||||
|
||||
-- Salt Project Packaging <saltproject-packaging@vmware.com> Mon, 29 Apr 2024 03:18:46 +0000
|
||||
|
||||
salt (3007.0) stable; urgency=medium
|
||||
|
||||
|
||||
|
|
|
@ -646,6 +646,82 @@ if [ $1 -ge 1 ] ; then
|
|||
fi
|
||||
|
||||
%changelog
|
||||
* Mon Apr 29 2024 Salt Project Packaging <saltproject-packaging@vmware.com> - 3006.8
|
||||
|
||||
# Removed
|
||||
|
||||
- Removed deprecated code scheduled to be removed on 2024-01-01:
|
||||
|
||||
* ``TemporaryLoggingHandler`` and ``QueueHandler`` in ``salt/_logging/handlers.py``
|
||||
* All of the ``salt/log`` package.
|
||||
* The ``salt/modules/cassandra_mod.py`` module.
|
||||
* The ``salt/returners/cassandra_return.py`` returner.
|
||||
* The ``salt/returners/django_return.py`` returner. [#66147](https://github.com/saltstack/salt/issues/66147)
|
||||
|
||||
# Deprecated
|
||||
|
||||
- Drop Fedora 37 and Fedora 38 support [#65860](https://github.com/saltstack/salt/issues/65860)
|
||||
- Drop CentOS Stream 8 and 9 from CI/CD [#66104](https://github.com/saltstack/salt/issues/66104)
|
||||
- Drop Photon OS 3 support [#66105](https://github.com/saltstack/salt/issues/66105)
|
||||
- The ``salt.utils.psutil_compat`` module has been deprecated and will be removed in Salt 3008. Please use the ``psutil`` module directly. [#66139](https://github.com/saltstack/salt/issues/66139)
|
||||
|
||||
# Fixed
|
||||
|
||||
- ``user.add`` on Windows now allows you to add user names that contain all
|
||||
numeric characters [#53363](https://github.com/saltstack/salt/issues/53363)
|
||||
- Fix an issue with the win_system module detecting established connections on
|
||||
non-Windows systems. Uses psutils instead of parsing the return of netstat [#60508](https://github.com/saltstack/salt/issues/60508)
|
||||
- pkg.refresh_db on Windows now honors saltenv [#61807](https://github.com/saltstack/salt/issues/61807)
|
||||
- Fixed an issue with adding new machine policies and applying those same
|
||||
policies in the same state by adding a ``refresh_cache`` option to the
|
||||
``lgpo.set`` state. [#62734](https://github.com/saltstack/salt/issues/62734)
|
||||
- file.managed correctly handles file path with '#' [#63060](https://github.com/saltstack/salt/issues/63060)
|
||||
- Fix master ip detection when DNS records change [#63654](https://github.com/saltstack/salt/issues/63654)
|
||||
- Fix user and group management on Windows to handle the Everyone group [#63667](https://github.com/saltstack/salt/issues/63667)
|
||||
- Fixes an issue in pkg.refresh_db on Windows where new package definition
|
||||
files were not being picked up on the first run [#63848](https://github.com/saltstack/salt/issues/63848)
|
||||
- Display a proper error when pki commands fail in the win_pki module [#64933](https://github.com/saltstack/salt/issues/64933)
|
||||
- Prevent full system upgrade on single package install for Arch Linux [#65200](https://github.com/saltstack/salt/issues/65200)
|
||||
- When using s3fs, if files are deleted from the bucket, they were not deleted in
|
||||
the master or minion local cache, which could lead to unexpected file copies or
|
||||
even state applications. This change makes the local cache consistent with the
|
||||
remote bucket by deleting files locally that are deleted from the bucket.
|
||||
|
||||
**NOTE** this could lead to **breakage** on your affected systems if it was
|
||||
inadvertently depending on previously deleted files. [#65611](https://github.com/saltstack/salt/issues/65611)
|
||||
- Fixed an issue with file.directory state where paths would be modified in test
|
||||
mode if backupname is used. [#66049](https://github.com/saltstack/salt/issues/66049)
|
||||
- Execution modules have access to regular fileclient durring pillar rendering. [#66124](https://github.com/saltstack/salt/issues/66124)
|
||||
- Fixed a issue with server channel where a minion's public key
|
||||
would be rejected if it contained a final newline character. [#66126](https://github.com/saltstack/salt/issues/66126)
|
||||
- Fix content type backwards compatablity with http proxy post requests in the http utils module. [#66127](https://github.com/saltstack/salt/issues/66127)
|
||||
- Fix systemctl with "try-restart" instead of "retry-restart" within the RPM spec, properly restarting upgraded services [#66143](https://github.com/saltstack/salt/issues/66143)
|
||||
- Auto discovery of ssh, scp and ssh-keygen binaries. [#66205](https://github.com/saltstack/salt/issues/66205)
|
||||
- Add leading slash to salt helper file paths as per dh_links requirement [#66280](https://github.com/saltstack/salt/issues/66280)
|
||||
- Fixed x509.certificate_managed - ca_server did not return a certificate [#66284](https://github.com/saltstack/salt/issues/66284)
|
||||
- removed log line that did nothing. [#66289](https://github.com/saltstack/salt/issues/66289)
|
||||
- Chocolatey: Make sure the return dictionary from ``chocolatey.version``
|
||||
contains lowercase keys [#66290](https://github.com/saltstack/salt/issues/66290)
|
||||
- fix cacheing inline pillar, by not rendering inline pillar during cache save function. [#66292](https://github.com/saltstack/salt/issues/66292)
|
||||
- The file module correctly perserves file permissions on link target. [#66400](https://github.com/saltstack/salt/issues/66400)
|
||||
- Upgrade relenv to 0.16.0 and python to 3.10.14 [#66402](https://github.com/saltstack/salt/issues/66402)
|
||||
- backport the fix from #66164 to fix #65703. use OrderedDict to fix bad indexing. [#66705](https://github.com/saltstack/salt/issues/66705)
|
||||
|
||||
# Added
|
||||
|
||||
- Add Fedora 39 support [#65859](https://github.com/saltstack/salt/issues/65859)
|
||||
|
||||
# Security
|
||||
|
||||
- Upgrade to `cryptography==42.0.5` due to a few security issues:
|
||||
|
||||
* https://github.com/advisories/GHSA-9v9h-cgj8-h64p
|
||||
* https://github.com/advisories/GHSA-3ww4-gg4f-jr7f
|
||||
* https://github.com/advisories/GHSA-6vqw-3v5j-54x4 [#66141](https://github.com/saltstack/salt/issues/66141)
|
||||
- Bump to `idna==3.7` due to https://github.com/advisories/GHSA-jjg7-2v4v-x38h [#66377](https://github.com/saltstack/salt/issues/66377)
|
||||
- Bump to `aiohttp==3.9.4` due to https://github.com/advisories/GHSA-7gpw-8wmc-pm8g [#66411](https://github.com/saltstack/salt/issues/66411)
|
||||
|
||||
|
||||
* Sun Mar 03 2024 Salt Project Packaging <saltproject-packaging@vmware.com> - 3007.0
|
||||
|
||||
# Removed
|
||||
|
|
180
salt/minion.py
180
salt/minion.py
|
@ -2828,9 +2828,60 @@ class Minion(MinionBase):
|
|||
# we are not connected anymore
|
||||
self.connected = False
|
||||
log.info("Connection to master %s lost", self.opts["master"])
|
||||
if self.opts["transport"] != "tcp":
|
||||
self.schedule.delete_job(name=master_event(type="alive"))
|
||||
|
||||
if self.opts["master_type"] != "failover":
|
||||
# modify the scheduled job to fire on reconnect
|
||||
log.info("Trying to tune in to next master from master-list")
|
||||
|
||||
if hasattr(self, "pub_channel"):
|
||||
self.pub_channel.on_recv(None)
|
||||
if hasattr(self.pub_channel, "auth"):
|
||||
self.pub_channel.auth.invalidate()
|
||||
if hasattr(self.pub_channel, "close"):
|
||||
self.pub_channel.close()
|
||||
if hasattr(self, "req_channel") and self.req_channel:
|
||||
self.req_channel.close()
|
||||
self.req_channel = None
|
||||
|
||||
# if eval_master finds a new master for us, self.connected
|
||||
# will be True again on successful master authentication
|
||||
try:
|
||||
master, self.pub_channel = yield self.eval_master(
|
||||
opts=self.opts,
|
||||
failed=True,
|
||||
failback=tag.startswith(master_event(type="failback")),
|
||||
)
|
||||
except SaltClientError:
|
||||
pass
|
||||
|
||||
if self.connected:
|
||||
self.opts["master"] = master
|
||||
|
||||
# re-init the subsystems to work with the new master
|
||||
log.info(
|
||||
"Re-initialising subsystems for new master %s",
|
||||
self.opts["master"],
|
||||
)
|
||||
|
||||
self.req_channel = salt.channel.client.AsyncReqChannel.factory(
|
||||
self.opts, io_loop=self.io_loop
|
||||
)
|
||||
|
||||
# put the current schedule into the new loaders
|
||||
self.opts["schedule"] = self.schedule.option("schedule")
|
||||
(
|
||||
self.functions,
|
||||
self.returners,
|
||||
self.function_errors,
|
||||
self.executors,
|
||||
) = self._load_modules()
|
||||
# make the schedule to use the new 'functions' loader
|
||||
self.schedule.functions = self.functions
|
||||
self.pub_channel.on_recv(self._handle_payload)
|
||||
self._fire_master_minion_start()
|
||||
log.info("Minion is ready to receive requests!")
|
||||
|
||||
# update scheduled job to run with the new master addr
|
||||
if self.opts["transport"] != "tcp":
|
||||
schedule = {
|
||||
"function": "status.master",
|
||||
|
@ -2840,116 +2891,35 @@ class Minion(MinionBase):
|
|||
"return_job": False,
|
||||
"kwargs": {
|
||||
"master": self.opts["master"],
|
||||
"connected": False,
|
||||
"connected": True,
|
||||
},
|
||||
}
|
||||
self.schedule.modify_job(
|
||||
name=master_event(type="alive", master=self.opts["master"]),
|
||||
schedule=schedule,
|
||||
)
|
||||
|
||||
if self.opts["master_failback"] and "master_list" in self.opts:
|
||||
if self.opts["master"] != self.opts["master_list"][0]:
|
||||
schedule = {
|
||||
"function": "status.ping_master",
|
||||
"seconds": self.opts["master_failback_interval"],
|
||||
"jid_include": True,
|
||||
"maxrunning": 1,
|
||||
"return_job": False,
|
||||
"kwargs": {"master": self.opts["master_list"][0]},
|
||||
}
|
||||
self.schedule.modify_job(
|
||||
name=master_event(type="failback"),
|
||||
schedule=schedule,
|
||||
)
|
||||
else:
|
||||
self.schedule.delete_job(
|
||||
name=master_event(type="failback"), persist=True
|
||||
)
|
||||
else:
|
||||
# delete the scheduled job to don't interfere with the failover process
|
||||
if self.opts["transport"] != "tcp":
|
||||
self.schedule.delete_job(name=master_event(type="alive"))
|
||||
|
||||
log.info("Trying to tune in to next master from master-list")
|
||||
|
||||
if hasattr(self, "pub_channel"):
|
||||
self.pub_channel.on_recv(None)
|
||||
if hasattr(self.pub_channel, "auth"):
|
||||
self.pub_channel.auth.invalidate()
|
||||
if hasattr(self.pub_channel, "close"):
|
||||
self.pub_channel.close()
|
||||
if hasattr(self, "req_channel") and self.req_channel:
|
||||
self.req_channel.close()
|
||||
self.req_channel = None
|
||||
|
||||
# if eval_master finds a new master for us, self.connected
|
||||
# will be True again on successful master authentication
|
||||
try:
|
||||
master, self.pub_channel = yield self.eval_master(
|
||||
opts=self.opts,
|
||||
failed=True,
|
||||
failback=tag.startswith(master_event(type="failback")),
|
||||
)
|
||||
except SaltClientError:
|
||||
pass
|
||||
|
||||
if self.connected:
|
||||
self.opts["master"] = master
|
||||
|
||||
# re-init the subsystems to work with the new master
|
||||
log.info(
|
||||
"Re-initialising subsystems for new master %s",
|
||||
self.opts["master"],
|
||||
)
|
||||
|
||||
self.req_channel = salt.channel.client.AsyncReqChannel.factory(
|
||||
self.opts, io_loop=self.io_loop
|
||||
)
|
||||
|
||||
# put the current schedule into the new loaders
|
||||
self.opts["schedule"] = self.schedule.option("schedule")
|
||||
(
|
||||
self.functions,
|
||||
self.returners,
|
||||
self.function_errors,
|
||||
self.executors,
|
||||
) = self._load_modules()
|
||||
# make the schedule to use the new 'functions' loader
|
||||
self.schedule.functions = self.functions
|
||||
self.pub_channel.on_recv(self._handle_payload)
|
||||
self._fire_master_minion_start()
|
||||
log.info("Minion is ready to receive requests!")
|
||||
|
||||
# update scheduled job to run with the new master addr
|
||||
if self.opts["transport"] != "tcp":
|
||||
schedule = {
|
||||
"function": "status.master",
|
||||
"seconds": self.opts["master_alive_interval"],
|
||||
"jid_include": True,
|
||||
"maxrunning": 1,
|
||||
"return_job": False,
|
||||
"kwargs": {
|
||||
"master": self.opts["master"],
|
||||
"connected": True,
|
||||
},
|
||||
}
|
||||
self.schedule.modify_job(
|
||||
name=master_event(
|
||||
type="alive", master=self.opts["master"]
|
||||
),
|
||||
schedule=schedule,
|
||||
)
|
||||
|
||||
if (
|
||||
self.opts["master_failback"]
|
||||
and "master_list" in self.opts
|
||||
):
|
||||
if self.opts["master"] != self.opts["master_list"][0]:
|
||||
schedule = {
|
||||
"function": "status.ping_master",
|
||||
"seconds": self.opts[
|
||||
"master_failback_interval"
|
||||
],
|
||||
"jid_include": True,
|
||||
"maxrunning": 1,
|
||||
"return_job": False,
|
||||
"kwargs": {
|
||||
"master": self.opts["master_list"][0]
|
||||
},
|
||||
}
|
||||
self.schedule.modify_job(
|
||||
name=master_event(type="failback"),
|
||||
schedule=schedule,
|
||||
)
|
||||
else:
|
||||
self.schedule.delete_job(
|
||||
name=master_event(type="failback"), persist=True
|
||||
)
|
||||
else:
|
||||
self.restart = True
|
||||
self.io_loop.stop()
|
||||
self.restart = True
|
||||
self.io_loop.stop()
|
||||
|
||||
elif tag.startswith(master_event(type="connected")):
|
||||
# handle this event only once. otherwise it will pollute the log
|
||||
|
|
0
tests/pytests/scenarios/dns/__init__.py
Normal file
0
tests/pytests/scenarios/dns/__init__.py
Normal file
94
tests/pytests/scenarios/dns/conftest.py
Normal file
94
tests/pytests/scenarios/dns/conftest.py
Normal file
|
@ -0,0 +1,94 @@
|
|||
import logging
|
||||
import pathlib
|
||||
import subprocess
|
||||
|
||||
import pytest
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@pytest.fixture(scope="package")
|
||||
def master_alive_interval():
|
||||
return 5
|
||||
|
||||
|
||||
class HostsFile:
|
||||
"""
|
||||
Simple helper class for tests that need to modify /etc/hosts.
|
||||
"""
|
||||
|
||||
def __init__(self, path, orig_text):
|
||||
self._path = path
|
||||
self._orig_text = orig_text
|
||||
|
||||
@property
|
||||
def orig_text(self):
|
||||
return self._orig_text
|
||||
|
||||
def __getattr__(self, key):
|
||||
if key in ["_path", "_orig_text", "orig_text"]:
|
||||
return self.__getattribute__(key)
|
||||
return getattr(self._path, key)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def etc_hosts():
|
||||
hosts = pathlib.Path("/etc/hosts")
|
||||
orig_text = hosts.read_text(encoding="utf-8")
|
||||
hosts = HostsFile(hosts, orig_text)
|
||||
try:
|
||||
yield hosts
|
||||
finally:
|
||||
hosts.write_text(orig_text)
|
||||
|
||||
|
||||
@pytest.fixture(scope="package")
|
||||
def master(request, salt_factories):
|
||||
|
||||
subprocess.check_output(["ip", "addr", "add", "172.16.0.1/32", "dev", "lo"])
|
||||
|
||||
config_defaults = {
|
||||
"open_mode": True,
|
||||
"transport": request.config.getoption("--transport"),
|
||||
}
|
||||
config_overrides = {
|
||||
"interface": "0.0.0.0",
|
||||
}
|
||||
factory = salt_factories.salt_master_daemon(
|
||||
"master",
|
||||
defaults=config_defaults,
|
||||
overrides=config_overrides,
|
||||
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
||||
)
|
||||
with factory.started(start_timeout=180):
|
||||
yield factory
|
||||
|
||||
try:
|
||||
subprocess.check_output(["ip", "addr", "del", "172.16.0.1/32", "dev", "lo"])
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture(scope="package")
|
||||
def salt_cli(master):
|
||||
return master.salt_cli(timeout=180)
|
||||
|
||||
|
||||
@pytest.fixture(scope="package")
|
||||
def minion(master, master_alive_interval):
|
||||
config_defaults = {
|
||||
"transport": master.config["transport"],
|
||||
}
|
||||
port = master.config["ret_port"]
|
||||
config_overrides = {
|
||||
"master": f"master.local:{port}",
|
||||
"publish_port": master.config["publish_port"],
|
||||
"master_alive_interval": master_alive_interval,
|
||||
}
|
||||
factory = master.salt_minion_daemon(
|
||||
"minion",
|
||||
defaults=config_defaults,
|
||||
overrides=config_overrides,
|
||||
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
||||
)
|
||||
return factory
|
119
tests/pytests/scenarios/dns/multimaster/conftest.py
Normal file
119
tests/pytests/scenarios/dns/multimaster/conftest.py
Normal file
|
@ -0,0 +1,119 @@
|
|||
import logging
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
import pytest
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@pytest.fixture(scope="package")
|
||||
def salt_mm_master_1(request, salt_factories):
|
||||
|
||||
subprocess.check_output(["ip", "addr", "add", "172.16.0.1/32", "dev", "lo"])
|
||||
|
||||
config_defaults = {
|
||||
"open_mode": True,
|
||||
"transport": request.config.getoption("--transport"),
|
||||
}
|
||||
config_overrides = {
|
||||
"interface": "0.0.0.0",
|
||||
"master_sign_pubkey": True,
|
||||
}
|
||||
factory = salt_factories.salt_master_daemon(
|
||||
"mm-master-1",
|
||||
defaults=config_defaults,
|
||||
overrides=config_overrides,
|
||||
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
||||
)
|
||||
try:
|
||||
with factory.started(start_timeout=180):
|
||||
yield factory
|
||||
finally:
|
||||
|
||||
try:
|
||||
subprocess.check_output(["ip", "addr", "del", "172.16.0.1/32", "dev", "lo"])
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture(scope="package")
|
||||
def mm_master_1_salt_cli(salt_mm_master_1):
|
||||
return salt_mm_master_1.salt_cli(timeout=180)
|
||||
|
||||
|
||||
@pytest.fixture(scope="package")
|
||||
def salt_mm_master_2(salt_factories, salt_mm_master_1):
|
||||
# if salt.utils.platform.is_darwin() or salt.utils.platform.is_freebsd():
|
||||
# subprocess.check_output(["ifconfig", "lo0", "alias", "127.0.0.2", "up"])
|
||||
|
||||
config_defaults = {
|
||||
"open_mode": True,
|
||||
"transport": salt_mm_master_1.config["transport"],
|
||||
}
|
||||
config_overrides = {
|
||||
"interface": "0.0.0.0",
|
||||
"master_sign_pubkey": True,
|
||||
}
|
||||
|
||||
# Use the same ports for both masters, they are binding to different interfaces
|
||||
for key in (
|
||||
"ret_port",
|
||||
"publish_port",
|
||||
):
|
||||
config_overrides[key] = salt_mm_master_1.config[key] + 1
|
||||
factory = salt_factories.salt_master_daemon(
|
||||
"mm-master-2",
|
||||
defaults=config_defaults,
|
||||
overrides=config_overrides,
|
||||
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
||||
)
|
||||
|
||||
# Both masters will share the same signing key pair
|
||||
for keyfile in ("master_sign.pem", "master_sign.pub"):
|
||||
shutil.copyfile(
|
||||
os.path.join(salt_mm_master_1.config["pki_dir"], keyfile),
|
||||
os.path.join(factory.config["pki_dir"], keyfile),
|
||||
)
|
||||
with factory.started(start_timeout=180):
|
||||
yield factory
|
||||
|
||||
|
||||
@pytest.fixture(scope="package")
|
||||
def mm_master_2_salt_cli(salt_mm_master_2):
|
||||
return salt_mm_master_2.salt_cli(timeout=180)
|
||||
|
||||
|
||||
@pytest.fixture(scope="package")
|
||||
def salt_mm_minion_1(salt_mm_master_1, salt_mm_master_2, master_alive_interval):
|
||||
config_defaults = {
|
||||
"transport": salt_mm_master_1.config["transport"],
|
||||
}
|
||||
|
||||
mm_master_1_port = salt_mm_master_1.config["ret_port"]
|
||||
mm_master_2_port = salt_mm_master_2.config["ret_port"]
|
||||
config_overrides = {
|
||||
"master": [
|
||||
f"master1.local:{mm_master_1_port}",
|
||||
f"master2.local:{mm_master_2_port}",
|
||||
],
|
||||
"publish_port": salt_mm_master_1.config["publish_port"],
|
||||
"master_alive_interval": master_alive_interval,
|
||||
"master_tries": -1,
|
||||
"verify_master_pubkey_sign": True,
|
||||
"retry_dns": True,
|
||||
}
|
||||
factory = salt_mm_master_1.salt_minion_daemon(
|
||||
"mm-minion-1",
|
||||
defaults=config_defaults,
|
||||
overrides=config_overrides,
|
||||
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
||||
)
|
||||
# Need to grab the public signing key from the master, either will do
|
||||
shutil.copyfile(
|
||||
os.path.join(salt_mm_master_1.config["pki_dir"], "master_sign.pub"),
|
||||
os.path.join(factory.config["pki_dir"], "master_sign.pub"),
|
||||
)
|
||||
# with factory.started(start_timeout=180):
|
||||
yield factory
|
50
tests/pytests/scenarios/dns/multimaster/test_dns.py
Normal file
50
tests/pytests/scenarios/dns/multimaster/test_dns.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
import logging
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
import pytest
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@pytest.mark.skip_unless_on_linux
|
||||
def test_multimaster_dns(
|
||||
salt_mm_master_1,
|
||||
salt_mm_minion_1,
|
||||
mm_master_1_salt_cli,
|
||||
etc_hosts,
|
||||
caplog,
|
||||
master_alive_interval,
|
||||
):
|
||||
"""
|
||||
Verify a minion configured with multimaster hot/hot will pick up a master's
|
||||
dns change if it's been disconnected.
|
||||
"""
|
||||
|
||||
etc_hosts.write_text(
|
||||
f"{etc_hosts.orig_text}\n172.16.0.1 master1.local master2.local"
|
||||
)
|
||||
|
||||
log.info("Added hosts record for master1.local and master2.local")
|
||||
|
||||
with salt_mm_minion_1.started(start_timeout=180):
|
||||
with caplog.at_level(logging.INFO):
|
||||
ret = mm_master_1_salt_cli.run("test.ping", minion_tgt="mm-minion-1")
|
||||
assert ret.returncode == 0
|
||||
etc_hosts.write_text(
|
||||
f"{etc_hosts.orig_text}\n127.0.0.1 master1.local master2.local"
|
||||
)
|
||||
log.info("Changed hosts record for master1.local and master2.local")
|
||||
subprocess.check_output(["ip", "addr", "del", "172.16.0.1/32", "dev", "lo"])
|
||||
log.info("Removed secondary master IP address.")
|
||||
# Wait for the minion's master_alive_interval, adding a second for
|
||||
# reliablity.
|
||||
time.sleep(master_alive_interval + 1)
|
||||
assert (
|
||||
"Master ip address changed from 172.16.0.1 to 127.0.0.1" in caplog.text
|
||||
)
|
||||
ret = mm_master_1_salt_cli.run("test.ping", minion_tgt="mm-minion-1")
|
||||
assert ret.returncode == 0
|
||||
assert (
|
||||
"Master ip address changed from 172.16.0.1 to 127.0.0.1" in caplog.text
|
||||
)
|
33
tests/pytests/scenarios/dns/test_dns.py
Normal file
33
tests/pytests/scenarios/dns/test_dns.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
import logging
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
import pytest
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@pytest.mark.skip_unless_on_linux
|
||||
def test_dns_change(master, minion, salt_cli, etc_hosts, caplog, master_alive_interval):
|
||||
"""
|
||||
Verify a minion will pick up a master's dns change if it's been disconnected.
|
||||
"""
|
||||
|
||||
etc_hosts.write_text(f"{etc_hosts.orig_text}\n172.16.0.1 master.local")
|
||||
|
||||
with minion.started(start_timeout=180):
|
||||
with caplog.at_level(logging.INFO):
|
||||
ret = salt_cli.run("test.ping", minion_tgt="minion")
|
||||
assert ret.returncode == 0
|
||||
etc_hosts.write_text(f"{etc_hosts.orig_text}\n127.0.0.1 master.local")
|
||||
log.info("Changed hosts record for master1.local and master2.local")
|
||||
subprocess.check_output(["ip", "addr", "del", "172.16.0.1/32", "dev", "lo"])
|
||||
log.info("Removed secondary master IP address.")
|
||||
# Wait for the minion's master_alive_interval, adding a second for
|
||||
# reliablity.
|
||||
time.sleep(master_alive_interval + 1)
|
||||
assert (
|
||||
"Master ip address changed from 172.16.0.1 to 127.0.0.1" in caplog.text
|
||||
)
|
||||
ret = salt_cli.run("test.ping", minion_tgt="minion")
|
||||
assert ret.returncode == 0
|
|
@ -159,10 +159,6 @@ def test_minions_alive_with_no_master(
|
|||
"""
|
||||
Make sure the minions stay alive after all masters have stopped.
|
||||
"""
|
||||
if grains["os_family"] == "Debian" and grains["osmajorrelease"] == 9:
|
||||
pytest.skip(
|
||||
"Skipping on Debian 9 until flaky issues resolved. See issue #61749"
|
||||
)
|
||||
start_time = time.time()
|
||||
with salt_mm_failover_master_1.stopped():
|
||||
with salt_mm_failover_master_2.stopped():
|
||||
|
|
Loading…
Add table
Reference in a new issue