Merge pull request #66681 from dwoz/merge/3007.x/3006.x

[3007.x] Merge 3006.x into 3007.x
This commit is contained in:
Daniel Wozniak 2024-07-04 21:30:26 -07:00 committed by GitHub
commit bd89384259
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
87 changed files with 523 additions and 312 deletions

View file

@ -437,7 +437,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
build-salt-onedir:
@ -453,7 +453,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
build-pkgs-onedir:
@ -466,7 +466,7 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
source: "onedir"
@ -480,7 +480,7 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
source: "src"
build-ci-deps:

View file

@ -494,7 +494,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
build-salt-onedir:
@ -510,7 +510,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
build-pkgs-onedir:
@ -523,7 +523,7 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
source: "onedir"
environment: nightly
@ -541,7 +541,7 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
source: "src"
environment: nightly

View file

@ -484,7 +484,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
build-salt-onedir:
@ -500,7 +500,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
build-pkgs-onedir:
@ -513,7 +513,7 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
source: "onedir"
@ -527,7 +527,7 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
source: "src"
build-ci-deps:

View file

@ -476,7 +476,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
build-salt-onedir:
@ -492,7 +492,7 @@ jobs:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
self-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['self-hosted'] }}
github-hosted-runners: ${{ fromJSON(needs.prepare-workflow.outputs.runners)['github-hosted'] }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
build-pkgs-onedir:
@ -505,7 +505,7 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
source: "onedir"
environment: staging
@ -523,7 +523,7 @@ jobs:
with:
salt-version: "${{ needs.prepare-workflow.outputs.salt-version }}"
cache-prefix: ${{ needs.prepare-workflow.outputs.cache-seed }}
relenv-version: "0.16.1"
relenv-version: "0.17.0"
python-version: "3.10.14"
source: "src"
environment: staging

1
changelog/50196.fixed.md Normal file
View file

@ -0,0 +1 @@
Made slsutil.renderer work with salt-ssh

1
changelog/51605.fixed.md Normal file
View file

@ -0,0 +1 @@
Fixed defaults.merge is not available when using salt-ssh

1
changelog/56441.fixed.md Normal file
View file

@ -0,0 +1 @@
Fixed config.get does not support merge option with salt-ssh

1
changelog/61100.fixed.md Normal file
View file

@ -0,0 +1 @@
Fixed state.test does not work with salt-ssh

1
changelog/61143.fixed.md Normal file
View file

@ -0,0 +1 @@
Made slsutil.findup work with salt-ssh

1
changelog/64563.fixed.md Normal file
View file

@ -0,0 +1 @@
Fixed incorrect version argument will be ignored for multiple package targets warning when using pkgs argument to yumpkg module.

1
changelog/64728.fixed.md Normal file
View file

@ -0,0 +1 @@
salt-cloud honors root_dir config setting for log_file location and fixes for root_dir locations on windows.

1
changelog/65067.fixed.md Normal file
View file

@ -0,0 +1 @@
Fixed slsutil.update with salt-ssh during template rendering

1
changelog/65630.fixed.md Normal file
View file

@ -0,0 +1 @@
Added SSH wrapper for logmod

1
changelog/66347.fixed.md Normal file
View file

@ -0,0 +1 @@
Fix win_task ExecutionTimeLimit and result/error code interpretation

1
changelog/66441.fixed.md Normal file
View file

@ -0,0 +1 @@
Fix win_task ExecutionTimeLimit and result/error code interpretation

1
changelog/66663.fixed.md Normal file
View file

@ -0,0 +1 @@
Upgrade relenv to 0.17.0 (https://github.com/saltstack/relenv/blob/v0.17.0/CHANGELOG.md)

4
changelog/66666.fixed.md Normal file
View file

@ -0,0 +1,4 @@
Upgrade dependencies due to security issues:
- pymysql>=1.1.1
- requests>=2.32.0
- docker>=7.1.0

1
changelog/66683.fixed.md Normal file
View file

@ -0,0 +1 @@
Corrected missed line in branch 3006.x when backporting from PR 61620 and 65044

View file

@ -1,6 +1,6 @@
nox_version: "2022.8.7"
python_version: "3.10.14"
relenv_version: "0.16.1"
relenv_version: "0.17.0"
release_branches:
- "3006.x"
- "3007.x"

View file

@ -96,6 +96,14 @@ The user to run the Salt processes
user: root
.. note::
Starting with version `3006.0`, Salt's offical packages ship with a default
configuration which runs the Master as a non-priviledged user. The Master's
configuration file has the `user` option set to `user: salt`. Unless you
are absolutly sure want to run salt as some other user, care should be
taken to preserve this setting in your Master configuration file..
.. conf_master:: ret_port
``enable_ssh_minions``

View file

@ -25,6 +25,8 @@ param(
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
$ProgressPreference = "SilentlyContinue"
$ErrorActionPreference = "Stop"
# https://stackoverflow.com/a/67201331/4581998
$env:PSModulePath = [Environment]::GetEnvironmentVariable('PSModulePath', 'Machine')
#-------------------------------------------------------------------------------
# Script Functions
@ -39,6 +41,43 @@ function Write-Result($result, $ForegroundColor="Green") {
}
}
function Add-Certificate {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
# The path in the certstore (CERT:/LocalMachine/Root/<hash>)
[String] $Path,
[Parameter(Mandatory=$true)]
# The path to the cert file for importing
[String] $File,
[Parameter(Mandatory=$true)]
# The name of the cert file for importing
[String] $Name
)
# Validation
if ( ! (Test-Path -Path $File)) {
Write-Host "Invalid path to certificate file"
exit 1
}
if (! (Test-Path -Path $Path) ) {
Write-Host "Installing Certificate $Name`: " -NoNewLine
$output = Import-Certificate -FilePath $File -CertStoreLocation "Cert:\LocalMachine\Root"
if ( Test-Path -Path $Path ) {
Write-Result "Success"
} else {
Write-Result "Failed" -ForegroundColor Yellow
Write-Host $output
}
}
}
#-------------------------------------------------------------------------------
# Start the Script
#-------------------------------------------------------------------------------
@ -53,25 +92,32 @@ Write-Host $("-" * 80)
# Dependency Variables
$VS_BLD_TOOLS = "https://aka.ms/vs/15/release/vs_buildtools.exe"
$VS_CL_BIN = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\VC\bin\cl.exe"
$MSBUILD_BIN = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\msbuild.exe"
$WIN10_SDK_RC = "${env:ProgramFiles(x86)}\Windows Kits\10\bin\10.0.17763.0\x64\rc.exe"
try {
# If VS is installed, you will be able to get the WMI Object MSFT_VSInstance
$VS_INST_LOC = $(Get-CimInstance MSFT_VSInstance -Namespace root/cimv2/vs).InstallLocation
$MSBUILD_BIN = $(Get-ChildItem "$VS_INST_LOC\MSBuild\*\Bin\msbuild.exe").FullName
} catch {
# If VS is not installed, this is the fallback for this installation
$MSBUILD_BIN = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\msbuild.exe"
}
#-------------------------------------------------------------------------------
# Visual Studio
#-------------------------------------------------------------------------------
$install_build_tools = $false
Write-Host "Confirming Presence of Visual Studio Build Tools: " -NoNewline
@($VS_CL_BIN, $MSBUILD_BIN, $WIN10_SDK_RC) | ForEach-Object {
if ( ! (Test-Path -Path $_) ) {
$install_build_tools = $true
}
}
if ( $install_build_tools ) {
# We're only gonna look for msbuild.exe
if ( Test-Path -Path $MSBUILD_BIN ) {
Write-Result "Success" -ForegroundColor Green
} else {
Write-Result "Missing" -ForegroundColor Yellow
try {
# If VS is installed, you will be able to get the WMI Object MSFT_VSInstance
Write-Host "Get VS Instance Information"
Get-CimInstance MSFT_VSInstance -Namespace root/cimv2/vs
} catch {}
Write-Host "Checking available disk space: " -NoNewLine
$available = (Get-PSDrive $env:SystemDrive.Trim(":")).Free
if ( $available -gt (1024 * 1024 * 1024 * 9.1) ) {
@ -101,7 +147,6 @@ if ( $install_build_tools ) {
"--add Microsoft.VisualStudio.Workload.MSBuildTools", `
"--add Microsoft.VisualStudio.Workload.VCTools", `
"--add Microsoft.VisualStudio.Component.Windows81SDK", `
"--add Microsoft.VisualStudio.Component.Windows10SDK.17763", `
"--add Microsoft.VisualStudio.Component.VC.140", `
"--lang en-US", `
"--includeRecommended", `
@ -115,50 +160,35 @@ if ( $install_build_tools ) {
exit 1
}
# Serial: 28cc3a25bfba44ac449a9b586b4339a
# Serial: 28cc3a25bfba44ac449a9b586b4339aa
# Hash: 3b1efd3a66ea28b16697394703a72ca340a05bd5
if (! (Test-Path -Path Cert:\LocalMachine\Root\3b1efd3a66ea28b16697394703a72ca340a05bd5) ) {
Write-Host "Installing Certificate Sign Root Certificate: " -NoNewLine
$proc = Start-Process -FilePath "certutil" `
-ArgumentList "-addstore", `
"Root", `
"$($env:TEMP)\build_tools\certificates\manifestCounterSignRootCertificate.cer" `
-PassThru -Wait -WindowStyle Hidden
if ( $proc.ExitCode -eq 0 ) {
Write-Result "Success" -ForegroundColor Green
} else {
Write-Result "Failed" -ForegroundColor Yellow
}
}
$cert_name = "Sign Root Certificate"
$cert_path = "Cert:\LocalMachine\Root\3b1efd3a66ea28b16697394703a72ca340a05bd5"
$cert_file = "$env:TEMP\build_tools\certificates\manifestCounterSignRootCertificate.cer"
Add-Certificate -Name $cert_name -Path $cert_path -File $cert_file
# Serial: 3f8bc8b5fc9fb29643b569d66c42e144
# Hash: 8f43288ad272f3103b6fb1428485ea3014c0bcfe
if (! (Test-Path -Path Cert:\LocalMachine\Root\8f43288ad272f3103b6fb1428485ea3014c0bcfe) ) {
Write-Host "Installing Certificate Root Certificate: " -NoNewLine
$proc = Start-Process -FilePath "certutil" `
-ArgumentList "-addstore", `
"Root", `
"$($env:TEMP)\build_tools\certificates\manifestRootCertificate.cer" `
-PassThru -Wait -WindowStyle Hidden
if ( $proc.ExitCode -eq 0 ) {
Write-Result "Success" -ForegroundColor Green
} else {
Write-Result "Failed" -ForegroundColor Yellow
}
}
$cert_name = "Root Certificate"
$cert_path = "Cert:\LocalMachine\Root\8f43288ad272f3103b6fb1428485ea3014c0bcfe"
$cert_file = "$env:TEMP\build_tools\certificates\manifestRootCertificate.cer"
Add-Certificate -Name $cert_name -Path $cert_path -File $cert_file
Write-Host "Installing Visual Studio 2017 build tools: " -NoNewline
$proc = Start-Process -FilePath "$env:TEMP\build_tools\vs_setup.exe" `
-ArgumentList "--wait", "--noweb", "--quiet" `
-Wait -PassThru
if ( $proc.ExitCode -eq 0 ) {
Write-Result "Success" -ForegroundColor Green
} else {
Write-Result "Failed" -ForegroundColor Yellow
$proc = Start-Process `
-FilePath "$env:TEMP\build_tools\vs_setup.exe" `
-ArgumentList "--wait", "--noweb", "--quiet" `
-PassThru -Wait `
-RedirectStandardOutput "$env:TEMP\stdout.txt"
if ( Test-Path -Path $MSBUILD_BIN ) {
Write-Result "Failed" -ForegroundColor Red
Write-Host "Missing: $_"
Write-Host "ExitCode: $($proc.ExitCode)"
Write-Host "STDOUT:"
Get-Content "$env:TEMP\stdout.txt"
exit 1
}
Write-Result "Success" -ForegroundColor Green
} else {
Write-Result "Success" -ForegroundColor Green
}
#-------------------------------------------------------------------------------

View file

@ -5,7 +5,8 @@ jmespath
msgpack>=1.0.0
PyYAML
MarkupSafe
requests>=2.25.1
requests>=2.31.0 ; python_version < '3.8'
requests>=2.32.0 ; python_version >= '3.8'
distro>=1.0.1
psutil>=5.0.0
packaging>=21.3

View file

@ -1,6 +1,7 @@
mock >= 3.0.0
# PyTest
docker
docker >= 7.1.0; python_version >= '3.8'
docker < 7.1.0; python_version < '3.8'
pytest >= 7.2.0
pytest-salt-factories >= 1.0.0
pytest-helpers-namespace >= 2019.1.8

View file

@ -2,7 +2,8 @@
--constraint=./py{py_version}/{platform}.txt
docker
docker >= 7.1.0; python_version >= '3.8'
docker < 7.1.0; python_version < '3.8'
pylint~=3.1.0
SaltPyLint>=2024.2.2
toml

View file

@ -3,7 +3,7 @@
pyiface
pygit2>=1.10.1
pymysql>=1.0.2
pymysql>=1.1.1
ansible>=9.1.0; python_version >= '3.10'
twilio
python-telegram-bot>=13.7

View file

@ -51,7 +51,7 @@ pywinrm==0.4.3
# via -r requirements/static/ci/cloud.in
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.10/linux.txt
# apache-libcloud

View file

@ -124,7 +124,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -290,7 +290,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.10/darwin.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0
# via
@ -438,7 +437,7 @@ pyzmq==25.1.2
# -c requirements/static/ci/../pkg/py3.10/darwin.txt
# -r requirements/zeromq.txt
# pytest-salt-factories
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.10/darwin.txt
# -r requirements/base.txt
@ -555,9 +554,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -119,7 +119,7 @@ pyyaml==6.0.1
# via
# -c requirements/static/ci/py3.10/linux.txt
# myst-docutils
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.10/linux.txt
# sphinx

View file

@ -123,7 +123,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -293,7 +293,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.10/freebsd.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -442,7 +441,7 @@ pyzmq==25.1.2
# -c requirements/static/ci/../pkg/py3.10/freebsd.txt
# -r requirements/zeromq.txt
# pytest-salt-factories
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.10/freebsd.txt
# -r requirements/base.txt
@ -560,9 +559,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -16,7 +16,7 @@ charset-normalizer==3.2.0
# requests
dill==0.3.8
# via pylint
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.10/linux.txt
# -r requirements/static/ci/lint.in
@ -28,10 +28,6 @@ isort==4.3.21
# via pylint
mccabe==0.6.1
# via pylint
packaging==23.1
# via
# -c requirements/static/ci/py3.10/linux.txt
# docker
platformdirs==4.0.0
# via
# -c requirements/static/ci/py3.10/linux.txt
@ -40,16 +36,12 @@ pylint==3.1.0
# via
# -r requirements/static/ci/lint.in
# saltpylint
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.10/linux.txt
# docker
saltpylint==2024.2.5
# via -r requirements/static/ci/lint.in
six==1.16.0
# via
# -c requirements/static/ci/py3.10/linux.txt
# websocket-client
toml==0.10.2
# via
# -c requirements/static/ci/py3.10/linux.txt
@ -69,7 +61,3 @@ urllib3==1.26.18
# -c requirements/static/ci/py3.10/linux.txt
# docker
# requests
websocket-client==0.40.0
# via
# -c requirements/static/ci/py3.10/linux.txt
# docker

View file

@ -137,7 +137,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -319,7 +319,6 @@ packaging==23.1
# -c requirements/static/ci/../pkg/py3.10/linux.txt
# -r requirements/base.txt
# ansible-core
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -382,7 +381,7 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat
# via -r requirements/static/ci/common.in
pyjwt==2.7.0
# via twilio
pymysql==1.1.0
pymysql==1.1.1
# via -r requirements/static/ci/linux.in
pynacl==1.5.0
# via
@ -486,7 +485,7 @@ redis-py-cluster==2.1.3
# via -r requirements/static/ci/linux.in
redis==3.5.3
# via redis-py-cluster
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.10/linux.txt
# -r requirements/base.txt
@ -624,9 +623,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -120,7 +120,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -257,7 +257,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.10/windows.txt
# -r requirements/base.txt
# docker
# pytest
passlib==1.7.4
# via -r requirements/static/ci/common.in
@ -408,7 +407,7 @@ pyzmq==25.1.2
# pytest-salt-factories
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.10/windows.txt
# -r requirements/base.txt
@ -505,9 +504,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -51,7 +51,7 @@ pywinrm==0.4.3
# via -r requirements/static/ci/cloud.in
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.11/linux.txt
# apache-libcloud

View file

@ -119,7 +119,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -283,7 +283,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.11/darwin.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0
# via
@ -431,7 +430,7 @@ pyzmq==25.1.2
# -c requirements/static/ci/../pkg/py3.11/darwin.txt
# -r requirements/zeromq.txt
# pytest-salt-factories
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.11/darwin.txt
# -r requirements/base.txt
@ -546,9 +545,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -119,7 +119,7 @@ pyyaml==6.0.1
# via
# -c requirements/static/ci/py3.11/linux.txt
# myst-docutils
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.11/linux.txt
# sphinx

View file

@ -118,7 +118,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -286,7 +286,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.11/freebsd.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -435,7 +434,7 @@ pyzmq==25.1.2
# -c requirements/static/ci/../pkg/py3.11/freebsd.txt
# -r requirements/zeromq.txt
# pytest-salt-factories
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.11/freebsd.txt
# -r requirements/base.txt
@ -552,9 +551,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -16,7 +16,7 @@ charset-normalizer==3.2.0
# requests
dill==0.3.8
# via pylint
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.11/linux.txt
# -r requirements/static/ci/lint.in
@ -28,10 +28,6 @@ isort==4.3.21
# via pylint
mccabe==0.6.1
# via pylint
packaging==23.1
# via
# -c requirements/static/ci/py3.11/linux.txt
# docker
platformdirs==4.0.0
# via
# -c requirements/static/ci/py3.11/linux.txt
@ -40,16 +36,12 @@ pylint==3.1.0
# via
# -r requirements/static/ci/lint.in
# saltpylint
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.11/linux.txt
# docker
saltpylint==2024.2.5
# via -r requirements/static/ci/lint.in
six==1.16.0
# via
# -c requirements/static/ci/py3.11/linux.txt
# websocket-client
toml==0.10.2
# via
# -c requirements/static/ci/py3.11/linux.txt
@ -61,7 +53,3 @@ urllib3==1.26.18
# -c requirements/static/ci/py3.11/linux.txt
# docker
# requests
websocket-client==0.40.0
# via
# -c requirements/static/ci/py3.11/linux.txt
# docker

View file

@ -132,7 +132,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -310,7 +310,6 @@ packaging==23.1
# -c requirements/static/ci/../pkg/py3.11/linux.txt
# -r requirements/base.txt
# ansible-core
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -373,7 +372,7 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat
# via -r requirements/static/ci/common.in
pyjwt==2.4.0
# via twilio
pymysql==1.1.0
pymysql==1.1.1
# via -r requirements/static/ci/linux.in
pynacl==1.5.0
# via
@ -477,7 +476,7 @@ redis-py-cluster==2.1.3
# via -r requirements/static/ci/linux.in
redis==3.5.3
# via redis-py-cluster
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.11/linux.txt
# -r requirements/base.txt
@ -614,9 +613,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -115,7 +115,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -250,7 +250,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.11/windows.txt
# -r requirements/base.txt
# docker
# pytest
passlib==1.7.4
# via -r requirements/static/ci/common.in
@ -401,7 +400,7 @@ pyzmq==25.1.2
# pytest-salt-factories
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.11/windows.txt
# -r requirements/base.txt
@ -496,9 +495,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -159,7 +159,7 @@ dnspython==2.6.1
# -c requirements/static/ci/py3.12/linux.txt
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.12/linux.txt
# -r requirements/pytest.txt
@ -398,7 +398,6 @@ packaging==23.1
# -c requirements/static/ci/../pkg/py3.12/linux.txt
# -c requirements/static/ci/py3.12/linux.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -612,7 +611,7 @@ pyzmq==25.1.2
# pytest-salt-factories
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.12/linux.txt
# -c requirements/static/ci/py3.12/linux.txt
@ -787,7 +786,6 @@ watchdog==3.0.0
websocket-client==0.40.0
# via
# -c requirements/static/ci/py3.12/linux.txt
# docker
# kubernetes
wempy==0.2.1
# via

View file

@ -119,7 +119,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -283,7 +283,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.12/darwin.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0
# via
@ -431,7 +430,7 @@ pyzmq==25.1.2
# -c requirements/static/ci/../pkg/py3.12/darwin.txt
# -r requirements/zeromq.txt
# pytest-salt-factories
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.12/darwin.txt
# -r requirements/base.txt
@ -546,9 +545,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -218,7 +218,7 @@ pyzmq==25.1.2
# via
# -c requirements/static/ci/py3.12/linux.txt
# -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.12/linux.txt
# -r requirements/base.txt

View file

@ -118,7 +118,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -286,7 +286,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.12/freebsd.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -435,7 +434,7 @@ pyzmq==25.1.2
# -c requirements/static/ci/../pkg/py3.12/freebsd.txt
# -r requirements/zeromq.txt
# pytest-salt-factories
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.12/freebsd.txt
# -r requirements/base.txt
@ -552,9 +551,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -175,7 +175,7 @@ dnspython==2.6.1
# -c requirements/static/ci/py3.12/linux.txt
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.12/linux.txt
# -r requirements/static/ci/lint.in
@ -426,7 +426,6 @@ packaging==23.1
# -c requirements/static/ci/py3.12/linux.txt
# -r requirements/base.txt
# ansible-core
# docker
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
# -c requirements/static/ci/py3.12/linux.txt
@ -512,7 +511,7 @@ pylint==3.1.0
# via
# -r requirements/static/ci/lint.in
# saltpylint
pymysql==1.1.0
pymysql==1.1.1
# via
# -c requirements/static/ci/py3.12/linux.txt
# -r requirements/static/ci/linux.in
@ -605,7 +604,7 @@ redis==3.5.3
# via
# -c requirements/static/ci/py3.12/linux.txt
# redis-py-cluster
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.12/linux.txt
# -c requirements/static/ci/py3.12/linux.txt
@ -794,7 +793,6 @@ watchdog==3.0.0
websocket-client==0.40.0
# via
# -c requirements/static/ci/py3.12/linux.txt
# docker
# kubernetes
wempy==0.2.1
# via

View file

@ -132,7 +132,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -310,7 +310,6 @@ packaging==23.1
# -c requirements/static/ci/../pkg/py3.12/linux.txt
# -r requirements/base.txt
# ansible-core
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -373,7 +372,7 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat
# via -r requirements/static/ci/common.in
pyjwt==2.4.0
# via twilio
pymysql==1.1.0
pymysql==1.1.1
# via -r requirements/static/ci/linux.in
pynacl==1.5.0
# via
@ -477,7 +476,7 @@ redis-py-cluster==2.1.3
# via -r requirements/static/ci/linux.in
redis==3.5.3
# via redis-py-cluster
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.12/linux.txt
# -r requirements/base.txt
@ -614,9 +613,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -115,7 +115,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -250,7 +250,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.12/windows.txt
# -r requirements/base.txt
# docker
# pytest
passlib==1.7.4
# via -r requirements/static/ci/common.in
@ -401,7 +400,7 @@ pyzmq==25.1.2
# pytest-salt-factories
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.12/windows.txt
# -r requirements/base.txt
@ -496,9 +495,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -51,7 +51,7 @@ pywinrm==0.4.3
# via -r requirements/static/ci/cloud.in
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.8/linux.txt
# apache-libcloud

View file

@ -128,7 +128,7 @@ pyyaml==6.0.1
# via
# -c requirements/static/ci/py3.8/linux.txt
# myst-docutils
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.8/linux.txt
# sphinx

View file

@ -123,7 +123,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -297,7 +297,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.8/freebsd.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -446,7 +445,7 @@ pyzmq==25.1.2
# -c requirements/static/ci/../pkg/py3.8/freebsd.txt
# -r requirements/zeromq.txt
# pytest-salt-factories
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.8/freebsd.txt
# -r requirements/base.txt
@ -565,9 +564,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -16,7 +16,7 @@ charset-normalizer==3.2.0
# requests
dill==0.3.8
# via pylint
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.8/linux.txt
# -r requirements/static/ci/lint.in
@ -28,10 +28,6 @@ isort==4.3.21
# via pylint
mccabe==0.6.1
# via pylint
packaging==23.1
# via
# -c requirements/static/ci/py3.8/linux.txt
# docker
platformdirs==4.0.0
# via
# -c requirements/static/ci/py3.8/linux.txt
@ -40,16 +36,12 @@ pylint==3.1.0
# via
# -r requirements/static/ci/lint.in
# saltpylint
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.8/linux.txt
# docker
saltpylint==2024.2.5
# via -r requirements/static/ci/lint.in
six==1.16.0
# via
# -c requirements/static/ci/py3.8/linux.txt
# websocket-client
toml==0.10.2
# via
# -c requirements/static/ci/py3.8/linux.txt
@ -70,7 +62,3 @@ urllib3==1.26.18
# -c requirements/static/ci/py3.8/linux.txt
# docker
# requests
websocket-client==0.40.0
# via
# -c requirements/static/ci/py3.8/linux.txt
# docker

View file

@ -132,7 +132,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -316,7 +316,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.8/linux.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -379,7 +378,7 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat
# via -r requirements/static/ci/common.in
pyjwt==2.7.0
# via twilio
pymysql==1.1.0
pymysql==1.1.1
# via -r requirements/static/ci/linux.in
pynacl==1.5.0
# via
@ -482,7 +481,7 @@ redis-py-cluster==2.1.3
# via -r requirements/static/ci/linux.in
redis==3.5.3
# via redis-py-cluster
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.8/linux.txt
# -r requirements/base.txt
@ -617,9 +616,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -120,7 +120,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -261,7 +261,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.8/windows.txt
# -r requirements/base.txt
# docker
# pytest
passlib==1.7.4
# via -r requirements/static/ci/common.in
@ -413,7 +412,7 @@ pyzmq==25.1.2
# pytest-salt-factories
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.8/windows.txt
# -r requirements/base.txt
@ -511,9 +510,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -51,7 +51,7 @@ pywinrm==0.4.3
# via -r requirements/static/ci/cloud.in
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.9/linux.txt
# apache-libcloud

View file

@ -124,7 +124,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -290,7 +290,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.9/darwin.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0
# via
@ -438,7 +437,7 @@ pyzmq==25.1.2
# -c requirements/static/ci/../pkg/py3.9/darwin.txt
# -r requirements/zeromq.txt
# pytest-salt-factories
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.9/darwin.txt
# -r requirements/base.txt
@ -555,9 +554,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -123,7 +123,7 @@ pyyaml==6.0.1
# via
# -c requirements/static/ci/py3.9/linux.txt
# myst-docutils
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.9/linux.txt
# sphinx

View file

@ -123,7 +123,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -293,7 +293,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.9/freebsd.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -442,7 +441,7 @@ pyzmq==25.1.2
# -c requirements/static/ci/../pkg/py3.9/freebsd.txt
# -r requirements/zeromq.txt
# pytest-salt-factories
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.9/freebsd.txt
# -r requirements/base.txt
@ -560,9 +559,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -16,7 +16,7 @@ charset-normalizer==3.2.0
# requests
dill==0.3.8
# via pylint
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.9/linux.txt
# -r requirements/static/ci/lint.in
@ -28,10 +28,6 @@ isort==4.3.21
# via pylint
mccabe==0.6.1
# via pylint
packaging==23.1
# via
# -c requirements/static/ci/py3.9/linux.txt
# docker
platformdirs==4.0.0
# via
# -c requirements/static/ci/py3.9/linux.txt
@ -40,16 +36,12 @@ pylint==3.1.0
# via
# -r requirements/static/ci/lint.in
# saltpylint
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/py3.9/linux.txt
# docker
saltpylint==2024.2.5
# via -r requirements/static/ci/lint.in
six==1.16.0
# via
# -c requirements/static/ci/py3.9/linux.txt
# websocket-client
toml==0.10.2
# via
# -c requirements/static/ci/py3.9/linux.txt
@ -70,7 +62,3 @@ urllib3==1.26.18
# -c requirements/static/ci/py3.9/linux.txt
# docker
# requests
websocket-client==0.40.0
# via
# -c requirements/static/ci/py3.9/linux.txt
# docker

View file

@ -132,7 +132,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -312,7 +312,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.9/linux.txt
# -r requirements/base.txt
# docker
# pytest
paramiko==3.4.0 ; sys_platform != "win32" and sys_platform != "darwin"
# via
@ -375,7 +374,7 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat
# via -r requirements/static/ci/common.in
pyjwt==2.7.0
# via twilio
pymysql==1.1.0
pymysql==1.1.1
# via -r requirements/static/ci/linux.in
pynacl==1.5.0
# via
@ -478,7 +477,7 @@ redis-py-cluster==2.1.3
# via -r requirements/static/ci/linux.in
redis==3.5.3
# via redis-py-cluster
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.9/linux.txt
# -r requirements/base.txt
@ -612,9 +611,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -120,7 +120,7 @@ dnspython==2.6.1
# via
# -r requirements/static/ci/common.in
# python-etcd
docker==6.1.3
docker==7.1.0 ; python_version >= "3.8"
# via -r requirements/pytest.txt
etcd3-py==0.1.6
# via -r requirements/static/ci/common.in
@ -257,7 +257,6 @@ packaging==23.1
# via
# -c requirements/static/ci/../pkg/py3.9/windows.txt
# -r requirements/base.txt
# docker
# pytest
passlib==1.7.4
# via -r requirements/static/ci/common.in
@ -409,7 +408,7 @@ pyzmq==25.1.2
# pytest-salt-factories
requests-ntlm==1.2.0
# via pywinrm
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via
# -c requirements/static/ci/../pkg/py3.9/windows.txt
# -r requirements/base.txt
@ -506,9 +505,7 @@ virtualenv==20.24.7
watchdog==3.0.0
# via -r requirements/static/ci/common.in
websocket-client==0.40.0
# via
# docker
# kubernetes
# via kubernetes
wempy==0.2.1
# via -r requirements/static/ci/common.in
werkzeug==3.0.3

View file

@ -113,7 +113,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -113,7 +113,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -113,7 +113,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
rpm-vercmp==0.1.2 ; sys_platform == "linux"
# via -r requirements/base.txt

View file

@ -127,7 +127,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -111,7 +111,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -111,7 +111,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -111,7 +111,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
rpm-vercmp==0.1.2 ; sys_platform == "linux"
# via -r requirements/base.txt

View file

@ -125,7 +125,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -111,7 +111,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -111,7 +111,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -111,7 +111,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
rpm-vercmp==0.1.2 ; sys_platform == "linux"
# via -r requirements/base.txt

View file

@ -125,7 +125,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -115,7 +115,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -115,7 +115,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
rpm-vercmp==0.1.2 ; sys_platform == "linux"
# via -r requirements/base.txt

View file

@ -130,7 +130,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -113,7 +113,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -113,7 +113,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -113,7 +113,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
rpm-vercmp==0.1.2 ; sys_platform == "linux"
# via -r requirements/base.txt

View file

@ -128,7 +128,7 @@ pyyaml==6.0.1
# via -r requirements/base.txt
pyzmq==25.1.2
# via -r requirements/zeromq.txt
requests==2.31.0
requests==2.32.3 ; python_version >= "3.8"
# via -r requirements/base.txt
setproctitle==1.3.2
# via -r requirements/base.txt

View file

@ -2226,6 +2226,18 @@ def include_config(include, orig_path, verbose, exit_on_config_errors=False):
return configuration
def should_prepend_root_dir(key, opts):
"""
Prepend root dir only when the key exists, has a value, and that value is
not a URI.
"""
return (
key in opts
and opts[key] is not None
and urllib.parse.urlparse(os.path.splitdrive(opts[key])[1]).scheme == ""
)
def prepend_root_dir(opts, path_options):
"""
Prepends the options that represent filesystem paths with value of the
@ -2522,8 +2534,7 @@ def syndic_config(
"autosign_grains_dir",
]
for config_key in ("log_file", "key_logfile", "syndic_log_file"):
# If this is not a URI and instead a local path
if urllib.parse.urlparse(opts.get(config_key, "")).scheme == "":
if should_prepend_root_dir(config_key, opts):
prepend_root_dirs.append(config_key)
prepend_root_dir(opts, prepend_root_dirs)
salt.features.setup_features(opts)
@ -2775,8 +2786,8 @@ def cloud_config(
# prepend root_dir
prepend_root_dirs = ["cachedir"]
if "log_file" in opts and urllib.parse.urlparse(opts["log_file"]).scheme == "":
prepend_root_dirs.append(opts["log_file"])
if should_prepend_root_dir("log_file", opts):
prepend_root_dirs.append("log_file")
prepend_root_dir(opts, prepend_root_dirs)
salt.features.setup_features(opts)
@ -3848,7 +3859,7 @@ def apply_minion_config(
# These can be set to syslog, so, not actual paths on the system
for config_key in ("log_file", "key_logfile"):
if urllib.parse.urlparse(opts.get(config_key, "")).scheme == "":
if should_prepend_root_dir(config_key, opts):
prepend_root_dirs.append(config_key)
prepend_root_dir(opts, prepend_root_dirs)
@ -4086,11 +4097,7 @@ def apply_master_config(overrides=None, defaults=None):
# These can be set to syslog, so, not actual paths on the system
for config_key in ("log_file", "key_logfile", "ssh_log_file"):
log_setting = opts.get(config_key, "")
if log_setting is None:
continue
if urllib.parse.urlparse(log_setting).scheme == "":
if should_prepend_root_dir(config_key, opts):
prepend_root_dirs.append(config_key)
prepend_root_dir(opts, prepend_root_dirs)
@ -4318,11 +4325,7 @@ def apply_spm_config(overrides, defaults):
# These can be set to syslog, so, not actual paths on the system
for config_key in ("spm_logfile",):
log_setting = opts.get(config_key, "")
if log_setting is None:
continue
if urllib.parse.urlparse(log_setting).scheme == "":
if should_prepend_root_dir(config_key, opts):
prepend_root_dirs.append(config_key)
prepend_root_dir(opts, prepend_root_dirs)

View file

@ -182,6 +182,15 @@ def __virtual__():
return False, "Module win_task: module only works on Windows systems"
def _signed_to_unsigned_int32(code):
"""
Convert negative result and error codes from win32com
"""
if code < 0:
code = code + 2**32
return code
def _get_date_time_format(dt_string):
"""
Copied from win_system.py (_get_date_time_format)
@ -253,6 +262,8 @@ def _reverse_lookup(dictionary, value):
value_index = idx
break
if value_index < 0:
return "invalid value"
return list(dictionary)[value_index]
@ -311,19 +322,20 @@ def _save_task_definition(
except pythoncom.com_error as error:
hr, msg, exc, arg = error.args # pylint: disable=W0633
error_code = _signed_to_unsigned_int32(exc[5])
fc = {
-2147024773: (
0x8007007B: (
"The filename, directory name, or volume label syntax is incorrect"
),
-2147024894: "The system cannot find the file specified",
-2147216615: "Required element or attribute missing",
-2147216616: "Value incorrectly formatted or out of range",
-2147352571: "Access denied",
0x80070002: "The system cannot find the file specified",
0x80041319: "Required element or attribute missing",
0x80041318: "Value incorrectly formatted or out of range",
0x80020005: "Access denied",
}
try:
failure_code = fc[exc[5]]
failure_code = fc[error_code]
except KeyError:
failure_code = f"Unknown Failure: {error}"
failure_code = f"Unknown Failure: {hex(error_code)}"
log.debug("Failed to modify task: %s", failure_code)
@ -683,7 +695,7 @@ def create_task_from_xml(
except pythoncom.com_error as error:
hr, msg, exc, arg = error.args # pylint: disable=W0633
error_code = hex(exc[5] + 2**32)
error_code = _signed_to_unsigned_int32(exc[5])
fc = {
0x80041319: "Required element or attribute missing",
0x80041318: "Value incorrectly formatted or out of range",
@ -731,7 +743,7 @@ def create_task_from_xml(
try:
failure_code = fc[error_code]
except KeyError:
failure_code = f"Unknown Failure: {error_code}"
failure_code = f"Unknown Failure: {hex(error_code)}"
finally:
log.debug("Failed to create task: %s", failure_code)
raise CommandExecutionError(failure_code)
@ -1469,10 +1481,16 @@ def info(name, location="\\"):
task_folder = task_service.GetFolder(location)
task = task_folder.GetTask(name)
last_task_result_code = _signed_to_unsigned_int32(task.LastTaskResult)
try:
last_task_result = results[last_task_result_code]
except KeyError:
last_task_result = f"Unknown Task Result: {hex(last_task_result_code)}"
properties = {
"enabled": task.Enabled,
"last_run": _get_date_value(task.LastRunTime),
"last_run_result": results[task.LastTaskResult],
"last_run_result": last_task_result,
"missed_runs": task.NumberOfMissedRuns,
"next_run": _get_date_value(task.NextRunTime),
"status": states[task.State],
@ -1494,7 +1512,7 @@ def info(name, location="\\"):
duration, def_set.DeleteExpiredTaskAfter
)
if def_set.ExecutionTimeLimit == "":
if def_set.ExecutionTimeLimit == "" or def_set.ExecutionTimeLimit == "PT0S":
settings["execution_time_limit"] = False
else:
settings["execution_time_limit"] = _reverse_lookup(

View file

@ -1427,8 +1427,8 @@ def install(
'version': '<new-version>',
'arch': '<new-arch>'}}}
"""
if "version" in kwargs:
kwargs["version"] = str(kwargs["version"])
if (version := kwargs.get("version")) is not None:
kwargs["version"] = str(version)
options = _get_options(**kwargs)
if salt.utils.data.is_true(refresh):

View file

@ -77,7 +77,9 @@ def managed(
Prefer wheel archives (requires pip >= 1.4).
python: None
Python executable used to build the virtualenv
Python executable used to build the virtualenv. When Salt is installed
from a onedir package. You will likely want to specify which python
interperter should be used.
user: None
The user under which to run virtualenv and pip.
@ -131,6 +133,12 @@ def managed(
- requirements: salt://REQUIREMENTS.txt
- env_vars:
PATH_VAR: '/usr/local/bin/'
Current versions of Salt use onedir packages and will use onedir python
interpreter by default. If you've installed Salt via out package
repository. You will likely want to provide the path to the interpreter
with wich you would like to be used to create the virtual envrionment. The
interperter can be specified by providing the `python` option.
"""
ret = {"name": name, "result": True, "comment": "", "changes": {}}

View file

@ -231,7 +231,7 @@ def test_pkg_002_installed_with_version(PKG_TARGETS, states, latest_version):
@pytest.mark.requires_salt_states("pkg.installed", "pkg.removed")
@pytest.mark.slow_test
def test_pkg_003_installed_multipkg(PKG_TARGETS, modules, states):
def test_pkg_003_installed_multipkg(caplog, PKG_TARGETS, modules, states):
"""
This is a destructive test as it installs and then removes two packages
"""
@ -247,6 +247,7 @@ def test_pkg_003_installed_multipkg(PKG_TARGETS, modules, states):
try:
ret = states.pkg.installed(name=None, pkgs=PKG_TARGETS, refresh=False)
assert ret.result is True
assert "WARNING" not in caplog.text
finally:
ret = states.pkg.removed(name=None, pkgs=PKG_TARGETS)
assert ret.result is True

View file

@ -5,6 +5,7 @@ import tempfile
import pytest
import salt.config
import salt.utils.platform
pytestmark = [
pytest.mark.windows_whitelisted,
@ -25,3 +26,128 @@ def test_minion_config_type_check(caplog):
assert msg not in caplog.text
finally:
os.remove(path)
def test_cloud_config_relative_to_root_dir(tmp_path):
root_path = tmp_path
config_path = tmp_path / "conf"
config_path.mkdir()
cloud_config = config_path / "cloud"
cloud_config.write_text("")
master_config = config_path / "master"
master_config.write_text(f"root_dir: {root_path}")
opts = salt.config.cloud_config(cloud_config)
assert opts["log_file"] == str(root_path / "var" / "log" / "salt" / "cloud")
assert opts["cachedir"] == str(root_path / "var" / "cache" / "salt" / "cloud")
def test_master_config_relative_to_root_dir(tmp_path):
root_path = tmp_path
config_path = tmp_path / "conf"
config_path.mkdir()
master_config = config_path / "master"
master_config.write_text(f"root_dir: {root_path}")
opts = salt.config.master_config(master_config)
if salt.utils.platform.is_windows():
assert opts["pki_dir"] == str(root_path / "conf" / "pki" / "master")
else:
assert opts["pki_dir"] == str(root_path / "etc" / "salt" / "pki" / "master")
assert opts["cachedir"] == str(root_path / "var" / "cache" / "salt" / "master")
assert opts["pidfile"] == str(root_path / "var" / "run" / "salt-master.pid")
assert opts["sock_dir"] == str(root_path / "var" / "run" / "salt" / "master")
assert opts["extension_modules"] == str(
root_path / "var" / "cache" / "salt" / "master" / "extmods"
)
assert opts["token_dir"] == str(
root_path / "var" / "cache" / "salt" / "master" / "tokens"
)
assert opts["syndic_dir"] == str(
root_path / "var" / "cache" / "salt" / "master" / "syndics"
)
assert opts["sqlite_queue_dir"] == str(
root_path / "var" / "cache" / "salt" / "master" / "queues"
)
assert opts["log_file"] == str(root_path / "var" / "log" / "salt" / "master")
assert opts["key_logfile"] == str(root_path / "var" / "log" / "salt" / "key")
assert opts["ssh_log_file"] == str(root_path / "var" / "log" / "salt" / "ssh")
# These are not tested because we didn't define them in the master config.
# assert opts["autosign_file"] == str(root_path / "var" / "run" / "salt"/ "master")
# assert opts["autoreject_file"] == str(root_path / "var" / "run" / "salt"/ "master")
# assert opts["autosign_grains_dir"] == str(root_path / "var" / "run" / "salt"/ "master")
def test_minion_config_relative_to_root_dir(tmp_path):
root_path = tmp_path
config_path = tmp_path / "conf"
config_path.mkdir()
minion_config = config_path / "minion"
minion_config.write_text(f"root_dir: {root_path}")
opts = salt.config.minion_config(minion_config)
if salt.utils.platform.is_windows():
assert opts["pki_dir"] == str(root_path / "conf" / "pki" / "minion")
else:
assert opts["pki_dir"] == str(root_path / "etc" / "salt" / "pki" / "minion")
assert opts["cachedir"] == str(root_path / "var" / "cache" / "salt" / "minion")
assert opts["pidfile"] == str(root_path / "var" / "run" / "salt-minion.pid")
assert opts["sock_dir"] == str(root_path / "var" / "run" / "salt" / "minion")
assert opts["extension_modules"] == str(
root_path / "var" / "cache" / "salt" / "minion" / "extmods"
)
assert opts["log_file"] == str(root_path / "var" / "log" / "salt" / "minion")
def test_api_config_relative_to_root_dir(tmp_path):
root_path = tmp_path
config_path = tmp_path / "conf"
config_path.mkdir()
master_config = config_path / "master"
master_config.write_text(f"root_dir: {root_path}")
opts = salt.config.api_config(master_config)
assert opts["pidfile"] == str(root_path / "var" / "run" / "salt-api.pid")
assert opts["log_file"] == str(root_path / "var" / "log" / "salt" / "api")
assert opts["api_pidfile"] == str(root_path / "var" / "run" / "salt-api.pid")
assert opts["api_logfile"] == str(root_path / "var" / "log" / "salt" / "api")
def test_spm_config_relative_to_root_dir(tmp_path):
root_path = tmp_path
config_path = tmp_path / "conf"
config_path.mkdir()
spm_config = config_path / "spm"
spm_config.write_text(f"root_dir: {root_path}")
opts = salt.config.spm_config(spm_config)
assert opts["formula_path"] == str(root_path / "srv" / "spm" / "salt")
assert opts["pillar_path"] == str(root_path / "srv" / "spm" / "pillar")
assert opts["reactor_path"] == str(root_path / "srv" / "spm" / "reactor")
assert opts["spm_cache_dir"] == str(root_path / "var" / "cache" / "salt" / "spm")
assert opts["spm_build_dir"] == str(root_path / "srv" / "spm_build")
assert opts["spm_logfile"] == str(root_path / "var" / "log" / "salt" / "spm")
def test_syndic_config_relative_to_root_dir(tmp_path):
root_path = tmp_path
config_path = tmp_path / "conf"
config_path.mkdir()
master_config = config_path / "master"
master_config.write_text(f"root_dir: {root_path}")
minion_config = config_path / "master"
minion_config.write_text(f"root_dir: {root_path}")
opts = salt.config.syndic_config(master_config, minion_config)
if salt.utils.platform.is_windows():
assert opts["pki_dir"] == str(root_path / "conf" / "pki" / "minion")
else:
assert opts["pki_dir"] == str(root_path / "etc" / "salt" / "pki" / "minion")
assert opts["cachedir"] == str(root_path / "var" / "cache" / "salt" / "master")
assert opts["pidfile"] == str(root_path / "var" / "run" / "salt-syndic.pid")
assert opts["sock_dir"] == str(root_path / "var" / "run" / "salt" / "minion")
assert opts["extension_modules"] == str(
root_path / "var" / "cache" / "salt" / "minion" / "extmods"
)
assert opts["token_dir"] == str(
root_path / "var" / "cache" / "salt" / "master" / "tokens"
)
assert opts["log_file"] == str(root_path / "var" / "log" / "salt" / "syndic")
assert opts["key_logfile"] == str(root_path / "var" / "log" / "salt" / "key")
assert opts["syndic_log_file"] == str(root_path / "var" / "log" / "salt" / "syndic")

View file

@ -48,7 +48,9 @@ def file_add_delete_sls(tmp_path, salt_master):
yield sls_name
@pytest.mark.flaky(max_runs=4)
# This test is fundimentally flawed. Needs to be re-factored to test the memory
# consuption of the minoin process not system wide memory.
@pytest.mark.skip(reason="Flawed test")
def test_memory_leak(salt_cli, salt_minion, file_add_delete_sls):
max_usg = None

View file

@ -7,6 +7,7 @@ from datetime import datetime
import pytest
import salt.modules.win_task as win_task
from salt.exceptions import CommandExecutionError
pytestmark = [
pytest.mark.skip_unless_on_windows,
@ -85,3 +86,93 @@ def test_edit_task_delete_after(base_task):
result = win_task.info(base_task)
assert result["settings"]["delete_after"] is False
def test_execution_time_limit(base_task):
result = win_task.add_trigger(
base_task,
trigger_type="Daily",
trigger_enabled=True,
end_date=datetime.today().strftime("%Y-%m-%d"),
end_time="23:59:59",
)
assert result is True
result = win_task.edit_task(base_task, execution_time_limit="1 hour")
assert result is True
result = win_task.info(base_task)
assert result["settings"]["execution_time_limit"] == "1 hour"
result = win_task.edit_task(base_task, execution_time_limit=False)
assert result is True
result = win_task.info(base_task)
assert result["settings"]["execution_time_limit"] is False
@pytest.mark.parametrize(
"exitcode, expect",
[
(0, "The operation completed successfully"),
(3221225786, "The application terminated as a result of CTRL+C"),
(4289449455, "Unknown Task Result: 0xffabcdef"),
],
)
def test_run_result_code(exitcode, expect):
task_name = "SaltTest"
try:
result = win_task.create_task(
task_name,
user_name="System",
force=True,
action_type="Execute",
cmd="cmd.exe",
arguments=f"/c exit {exitcode}",
)
assert result is True
result = win_task.info(task_name)
assert result["last_run_result"] == "Task has not yet run"
result = win_task.run_wait(task_name)
assert result is True
result = win_task.info(task_name)
assert result["last_run_result"] == expect
finally:
result = win_task.delete_task(task_name)
assert result is True
def test_create_task_from_xml():
task_name = "SaltTest"
task_xml = '<Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"><Actions><Exec><Command>cmd.exe</Command><Arguments>/c exit</Arguments></Exec></Actions></Task>'
try:
result = win_task.create_task_from_xml(
task_name, user_name="System", xml_text=task_xml
)
assert result is True
result = win_task.info(task_name)
assert result["actions"][0]["action_type"] == "Execute"
assert result["actions"][0]["cmd"] == "cmd.exe"
assert result["actions"][0]["arguments"] == "/c exit"
finally:
result = win_task.delete_task(task_name)
assert result is True
def test_create_task_from_xml_error():
task_name = "SaltTest"
try:
with pytest.raises(CommandExecutionError) as excinfo:
result = win_task.create_task_from_xml(
task_name, user_name="System", xml_text="test"
)
assert result is False
assert "The task XML is malformed" in str(excinfo.value)
finally:
result = win_task.delete_task(task_name)
assert result is not True

View file

@ -5,7 +5,10 @@ tests.pytests.unit.test_config
Unit tests for salt's config modulet
"""
import pathlib
import salt.config
import salt.syspaths
def test_call_id_function(tmp_path):
@ -21,3 +24,13 @@ def test_call_id_function(tmp_path):
}
ret = salt.config.call_id_function(opts)
assert ret == "meh"
def test_prepend_root_dir(tmp_path):
root = tmp_path / "root"
opts = {
"root_dir": root,
"foo": str(pathlib.Path(salt.syspaths.ROOT_DIR) / "var" / "foo"),
}
salt.config.prepend_root_dir(opts, ["foo"])
assert opts["foo"] == str(root / "var" / "foo")