From 4cc13e2a0c3ce4ee846cbbeac598761c5f274681 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Tue, 30 May 2023 22:27:29 -0700 Subject: [PATCH 01/57] Replace libnacl with PyNaCl --- changelog/64372.fixed.md | 1 + salt/cloud/deploy/bootstrap-salt.sh | 2 +- salt/modules/nacl.py | 8 +++--- salt/renderers/nacl.py | 3 +- salt/runners/nacl.py | 2 +- salt/utils/nacl.py | 43 ++++++++++++++++------------- tests/unit/utils/test_nacl.py | 11 ++------ 7 files changed, 35 insertions(+), 35 deletions(-) create mode 100644 changelog/64372.fixed.md diff --git a/changelog/64372.fixed.md b/changelog/64372.fixed.md new file mode 100644 index 00000000000..c821da578dc --- /dev/null +++ b/changelog/64372.fixed.md @@ -0,0 +1 @@ +Replace libnacl with PyNaCl diff --git a/salt/cloud/deploy/bootstrap-salt.sh b/salt/cloud/deploy/bootstrap-salt.sh index 1cf46c774df..022f1b09849 100644 --- a/salt/cloud/deploy/bootstrap-salt.sh +++ b/salt/cloud/deploy/bootstrap-salt.sh @@ -8614,7 +8614,7 @@ install_gentoo_git_deps() { sys-apps/pciutils dev-python/pyyaml dev-python/pyzmq - dev-python/libnacl + dev-python/pynacl dev-python/pycryptodome dev-python/py dev-python/requests diff --git a/salt/modules/nacl.py b/salt/modules/nacl.py index d62d389718c..ef0e1774548 100644 --- a/salt/modules/nacl.py +++ b/salt/modules/nacl.py @@ -1,7 +1,7 @@ """ This module helps include encrypted passwords in pillars, grains and salt state files. -:depends: libnacl, https://github.com/saltstack/libnacl +:depends: PyNaCl, https://github.com/pyca/pynacl This is often useful if you wish to store your pillars in source control or share your pillar data with others that you trust. I don't advise making your pillars public @@ -137,9 +137,9 @@ Optional small program to encrypt data without needing salt modules. .. code-block:: python #!/bin/python3 - import sys, base64, libnacl.sealed + import sys, base64, nacl.public pk = base64.b64decode('YOURPUBKEY') - b = libnacl.sealed.SealedBox(pk) + b = nacl.public.SealedBox(pk) data = sys.stdin.buffer.read() print(base64.b64encode(b.encrypt(data)).decode()) @@ -163,7 +163,7 @@ def __virtual__(): def keygen(sk_file=None, pk_file=None, **kwargs): """ - Use libnacl to generate a keypair. + Use PyNaCl to generate a keypair. If no `sk_file` is defined return a keypair. diff --git a/salt/renderers/nacl.py b/salt/renderers/nacl.py index 156913150e2..9cd2ba0f46b 100644 --- a/salt/renderers/nacl.py +++ b/salt/renderers/nacl.py @@ -10,8 +10,7 @@ The typical use-case would be to use ciphers in your pillar data, and keep a secret key on your master. You can put the public key in source control so that developers can add new secrets quickly and easily. -This renderer requires the libsodium library binary and libnacl >= 1.5.1 -python package (support for sealed boxes came in 1.5.1 version). +This renderer requires the libsodium library binary and PyNacl >= 1.0 Setup diff --git a/salt/runners/nacl.py b/salt/runners/nacl.py index d0291871f8d..24ce5f4918c 100644 --- a/salt/runners/nacl.py +++ b/salt/runners/nacl.py @@ -1,7 +1,7 @@ """ This module helps include encrypted passwords in pillars, grains and salt state files. -:depends: libnacl, https://github.com/saltstack/libnacl +:depends: PyNaCl, https://github.com/pyca/pynacl This is often useful if you wish to store your pillars in source control or share your pillar data with others that you trust. I don't advise making your pillars public diff --git a/salt/utils/nacl.py b/salt/utils/nacl.py index d86292a2c41..20239ff35f7 100644 --- a/salt/utils/nacl.py +++ b/salt/utils/nacl.py @@ -17,13 +17,14 @@ import salt.utils.win_functions log = logging.getLogger(__name__) + REQ_ERROR = None try: - import libnacl.sealed - import libnacl.secret + import nacl.public + import nacl.secret except (ImportError, OSError) as e: REQ_ERROR = ( - "libnacl import error, perhaps missing python libnacl package or should update." + "PyNaCl import error, perhaps missing python PyNaCl package or should update." ) __virtualname__ = "nacl" @@ -113,7 +114,7 @@ def _get_pk(**kwargs): def keygen(sk_file=None, pk_file=None, **kwargs): """ - Use libnacl to generate a keypair. + Use PyNaCl to generate a keypair. If no `sk_file` is defined return a keypair. @@ -143,17 +144,20 @@ def keygen(sk_file=None, pk_file=None, **kwargs): sk_file = kwargs["keyfile"] if sk_file is None: - kp = libnacl.public.SecretKey() - return {"sk": base64.b64encode(kp.sk), "pk": base64.b64encode(kp.pk)} + kp = nacl.public.PrivateKey.generate() + return { + "sk": base64.b64encode(kp.encode()), + "pk": base64.b64encode(kp.public_key.encode()), + } if pk_file is None: pk_file = "{}.pub".format(sk_file) if sk_file and pk_file is None: if not os.path.isfile(sk_file): - kp = libnacl.public.SecretKey() + kp = nacl.public.PrivateKey.generate() with salt.utils.files.fopen(sk_file, "wb") as keyf: - keyf.write(base64.b64encode(kp.sk)) + keyf.write(base64.b64encode(kp.encode())) if salt.utils.platform.is_windows(): cur_user = salt.utils.win_functions.get_current_user() salt.utils.win_dacl.set_owner(sk_file, cur_user) @@ -185,14 +189,14 @@ def keygen(sk_file=None, pk_file=None, **kwargs): with salt.utils.files.fopen(sk_file, "rb") as keyf: sk = salt.utils.stringutils.to_unicode(keyf.read()).rstrip("\n") sk = base64.b64decode(sk) - kp = libnacl.public.SecretKey(sk) + kp = nacl.public.PublicKey(sk) with salt.utils.files.fopen(pk_file, "wb") as keyf: - keyf.write(base64.b64encode(kp.pk)) + keyf.write(base64.b64encode(kp.encode())) return "saved pk_file: {}".format(pk_file) - kp = libnacl.public.SecretKey() + kp = nacl.public.PublicKey.generate() with salt.utils.files.fopen(sk_file, "wb") as keyf: - keyf.write(base64.b64encode(kp.sk)) + keyf.write(base64.b64encode(kp.encode())) if salt.utils.platform.is_windows(): cur_user = salt.utils.win_functions.get_current_user() salt.utils.win_dacl.set_owner(sk_file, cur_user) @@ -203,7 +207,7 @@ def keygen(sk_file=None, pk_file=None, **kwargs): # chmod 0600 file os.chmod(sk_file, 1536) with salt.utils.files.fopen(pk_file, "wb") as keyf: - keyf.write(base64.b64encode(kp.pk)) + keyf.write(base64.b64encode(kp.encode())) return "saved sk_file:{} pk_file: {}".format(sk_file, pk_file) @@ -313,6 +317,7 @@ def dec(data, **kwargs): box_type = _get_config(**kwargs)["box_type"] if box_type == "secretbox": return secretbox_decrypt(data, **kwargs) + return sealedbox_decrypt(data, **kwargs) @@ -366,7 +371,8 @@ def sealedbox_encrypt(data, **kwargs): data = salt.utils.stringutils.to_bytes(data) pk = _get_pk(**kwargs) - b = libnacl.sealed.SealedBox(pk) + keypair = nacl.public.PublicKey(pk) + b = nacl.public.SealedBox(keypair) return base64.b64encode(b.encrypt(data)) @@ -389,8 +395,8 @@ def sealedbox_decrypt(data, **kwargs): data = salt.utils.stringutils.to_bytes(data) sk = _get_sk(**kwargs) - keypair = libnacl.public.SecretKey(sk) - b = libnacl.sealed.SealedBox(keypair) + keypair = nacl.public.PrivateKey(sk) + b = nacl.public.SealedBox(keypair) return b.decrypt(base64.b64decode(data)) @@ -411,7 +417,7 @@ def secretbox_encrypt(data, **kwargs): data = salt.utils.stringutils.to_bytes(data) sk = _get_sk(**kwargs) - b = libnacl.secret.SecretBox(sk) + b = nacl.secret.SecretBox(sk) return base64.b64encode(b.encrypt(data)) @@ -435,6 +441,5 @@ def secretbox_decrypt(data, **kwargs): data = salt.utils.stringutils.to_bytes(data) key = _get_sk(**kwargs) - b = libnacl.secret.SecretBox(key=key) - + b = nacl.secret.SecretBox(key=key) return b.decrypt(base64.b64decode(data)) diff --git a/tests/unit/utils/test_nacl.py b/tests/unit/utils/test_nacl.py index 0501c1fa4f5..d26682dfd4f 100644 --- a/tests/unit/utils/test_nacl.py +++ b/tests/unit/utils/test_nacl.py @@ -10,19 +10,14 @@ from tests.support.mixins import LoaderModuleMockMixin from tests.support.unit import TestCase try: - import libnacl.sealed # pylint: disable=unused-import - import libnacl.secret # pylint: disable=unused-import - import salt.utils.nacl as nacl - - HAS_LIBNACL = True + HAS_PYNACL = nacl.check_requirements() except (ImportError, OSError, AttributeError): - HAS_LIBNACL = False + HAS_PYNACL = False -@pytest.mark.skipif(sys.version_info >= (3, 10), reason="Segfaults with python 3.10") @pytest.mark.skipif( - not HAS_LIBNACL, reason="skipping test_nacl, reason=libnacl is unavailable" + not HAS_PYNACL, reason="skipping test_nacl, reason=libnacl is unavailable" ) class NaclUtilsTests(TestCase, LoaderModuleMockMixin): def setup_loader_modules(self): From 2824bb9263ee72edf75e3a08325c51c916dd5d01 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Thu, 13 Jul 2023 11:26:36 -0600 Subject: [PATCH 02/57] Updates due to rebase --- requirements/static/ci/common.in | 1 + requirements/static/ci/py3.10/cloud.txt | 4 +++- requirements/static/ci/py3.10/darwin.txt | 4 +++- requirements/static/ci/py3.10/freebsd.txt | 4 +++- requirements/static/ci/py3.10/lint.txt | 4 +++- requirements/static/ci/py3.10/linux.txt | 4 +++- requirements/static/ci/py3.10/windows.txt | 3 +++ requirements/static/ci/py3.7/cloud.txt | 4 +++- requirements/static/ci/py3.7/freebsd.txt | 4 +++- requirements/static/ci/py3.7/lint.txt | 4 +++- requirements/static/ci/py3.7/linux.txt | 4 +++- requirements/static/ci/py3.7/windows.txt | 3 +++ requirements/static/ci/py3.8/cloud.txt | 4 +++- requirements/static/ci/py3.8/freebsd.txt | 4 +++- requirements/static/ci/py3.8/lint.txt | 4 +++- requirements/static/ci/py3.8/linux.txt | 4 +++- requirements/static/ci/py3.8/windows.txt | 3 +++ requirements/static/ci/py3.9/cloud.txt | 4 +++- requirements/static/ci/py3.9/darwin.txt | 4 +++- requirements/static/ci/py3.9/freebsd.txt | 4 +++- requirements/static/ci/py3.9/lint.txt | 4 +++- requirements/static/ci/py3.9/linux.txt | 4 +++- requirements/static/ci/py3.9/windows.txt | 3 +++ 23 files changed, 67 insertions(+), 18 deletions(-) diff --git a/requirements/static/ci/common.in b/requirements/static/ci/common.in index 0740a5af592..7ca2cebe159 100644 --- a/requirements/static/ci/common.in +++ b/requirements/static/ci/common.in @@ -30,6 +30,7 @@ moto>=2.0.0 ; python_version >= '3.6' napalm; sys_platform != 'win32' and python_version > '3.6' and python_version < '3.10' paramiko>=2.10.1; sys_platform != 'win32' and sys_platform != 'darwin' passlib[bcrypt]>=1.7.4 +pynacl pycparser>=2.21; python_version >= '3.9' pyinotify>=0.9.6; sys_platform != 'win32' and sys_platform != 'darwin' and platform_system != "openbsd" python-etcd>0.4.2 diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index 1862a07681f..dcaf3b9fa9c 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -668,7 +668,9 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat pyjwt==2.4.0 # via adal pynacl==1.4.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index 8a284e31b47..fd12cc561a2 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -669,7 +669,9 @@ pygit2==1.9.1 ; python_version >= "3.7" pyjwt==2.4.0 # via adal pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/darwin.txt diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 69dc466b7a4..497a0f21d81 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -668,7 +668,9 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat pyjwt==2.4.0 # via adal pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/freebsd.in diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index 4d56f17f2bc..3df8b098ce3 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -674,7 +674,9 @@ pylint==2.4.4 pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in pynacl==1.4.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index 950e88180a5..477989641b1 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -688,7 +688,9 @@ pyjwt==2.4.0 pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index b345f558795..3ee2dfb867d 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -49,6 +49,7 @@ cffi==1.14.6 # clr-loader # cryptography # pygit2 + # pynacl charset-normalizer==2.1.1 # via # aiohttp @@ -237,6 +238,8 @@ pymssql==2.2.7 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt +pynacl==1.5.0 + # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via # -r requirements/windows.txt diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt index 0823fc8ff75..5523fbd69db 100644 --- a/requirements/static/ci/py3.7/cloud.txt +++ b/requirements/static/ci/py3.7/cloud.txt @@ -710,7 +710,9 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat pyjwt==2.4.0 # via adal pynacl==1.4.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 25fb5d4857e..0b11878d2d4 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -704,7 +704,9 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat pyjwt==2.4.0 # via adal pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/freebsd.in diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index b7f48d8b01a..b1b66604b6c 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -717,7 +717,9 @@ pylint==2.4.4 pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in pynacl==1.4.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index b06cf80b7b6..72aaa919785 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -724,7 +724,9 @@ pyjwt==2.4.0 pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index 548a60f8f9d..e5fc3ed81f5 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -55,6 +55,7 @@ cffi==1.14.6 # clr-loader # cryptography # pygit2 + # pynacl charset-normalizer==2.0.12 # via # aiohttp @@ -250,6 +251,8 @@ pymssql==2.2.1 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt +pynacl==1.5.0 + # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via # -r requirements/windows.txt diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index 7393b82c4c8..a58dec920dd 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -699,7 +699,9 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat pyjwt==2.4.0 # via adal pynacl==1.4.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index c6b357d4173..14b9b3204d6 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -694,7 +694,9 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat pyjwt==2.4.0 # via adal pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/freebsd.in diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index 85cd7200930..36ced882863 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -708,7 +708,9 @@ pylint==2.4.4 pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in pynacl==1.4.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index 7aeac2980c8..089df020e05 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -714,7 +714,9 @@ pyjwt==2.4.0 pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index e5bdaa0a625..ce6b8142a7d 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -51,6 +51,7 @@ cffi==1.14.6 # clr-loader # cryptography # pygit2 + # pynacl charset-normalizer==2.0.12 # via # aiohttp @@ -238,6 +239,8 @@ pymssql==2.2.1 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt +pynacl==1.5.0 + # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via # -r requirements/windows.txt diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index dd9b361d956..e64010d73fc 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -702,7 +702,9 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat pyjwt==2.4.0 # via adal pynacl==1.4.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index 3b2a0993068..b8e6f50b115 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -698,7 +698,9 @@ pygit2==1.9.1 ; python_version >= "3.7" pyjwt==2.4.0 # via adal pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/darwin.txt diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index 0937c4827bf..944885c2216 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -697,7 +697,9 @@ pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and plat pyjwt==2.4.0 # via adal pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/freebsd.in diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 7fdb2b8b3fe..2fd1f2527c2 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -709,7 +709,9 @@ pylint==2.4.4 pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in pynacl==1.4.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index d2720993b2e..cf198dcff83 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -719,7 +719,9 @@ pyjwt==2.4.0 pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in pynacl==1.3.0 - # via paramiko + # via + # -r requirements/static/ci/common.in + # paramiko pyopenssl==23.2.0 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index cd5f59e18de..5533dae6d5c 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -51,6 +51,7 @@ cffi==1.14.6 # clr-loader # cryptography # pygit2 + # pynacl charset-normalizer==2.0.12 # via # aiohttp @@ -239,6 +240,8 @@ pymssql==2.2.1 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt +pynacl==1.5.0 + # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via # -r requirements/windows.txt From ec5b05cb86521d6536e2f20fb207e90d6c626993 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Fri, 2 Jun 2023 15:05:00 -0600 Subject: [PATCH 03/57] Migrate nacl unittests to pytests, and update for PyNaCl --- salt/cloud/deploy/bootstrap-salt.sh | 2 +- salt/runners/nacl.py | 2 +- tests/integration/runners/test_nacl.py | 200 ------------------ .../pytests/integration/runners/test_nacl.py | 170 +++++++++++++++ tests/pytests/unit/modules/test_nacl.py | 91 +++++++- tests/pytests/unit/utils/test_nacl.py | 162 +++++++++++++- tests/unit/modules/test_nacl.py | 91 -------- tests/unit/utils/test_nacl.py | 144 ------------- 8 files changed, 423 insertions(+), 439 deletions(-) delete mode 100644 tests/integration/runners/test_nacl.py create mode 100644 tests/pytests/integration/runners/test_nacl.py delete mode 100644 tests/unit/modules/test_nacl.py delete mode 100644 tests/unit/utils/test_nacl.py diff --git a/salt/cloud/deploy/bootstrap-salt.sh b/salt/cloud/deploy/bootstrap-salt.sh index 022f1b09849..1cf46c774df 100644 --- a/salt/cloud/deploy/bootstrap-salt.sh +++ b/salt/cloud/deploy/bootstrap-salt.sh @@ -8614,7 +8614,7 @@ install_gentoo_git_deps() { sys-apps/pciutils dev-python/pyyaml dev-python/pyzmq - dev-python/pynacl + dev-python/libnacl dev-python/pycryptodome dev-python/py dev-python/requests diff --git a/salt/runners/nacl.py b/salt/runners/nacl.py index 24ce5f4918c..3c097604bad 100644 --- a/salt/runners/nacl.py +++ b/salt/runners/nacl.py @@ -125,7 +125,7 @@ def __virtual__(): def keygen(sk_file=None, pk_file=None, **kwargs): """ - Use libnacl to generate a keypair. + Use PyNaCL to generate a keypair. If no `sk_file` is defined return a keypair. diff --git a/tests/integration/runners/test_nacl.py b/tests/integration/runners/test_nacl.py deleted file mode 100644 index 0be360b893d..00000000000 --- a/tests/integration/runners/test_nacl.py +++ /dev/null @@ -1,200 +0,0 @@ -""" -Tests for the salt-run command -""" - -import logging -import sys - -import pytest - -from tests.support.case import ShellCase - -try: - import libnacl.sealed # pylint: disable=unused-import - import libnacl.secret # pylint: disable=unused-import - - HAS_LIBNACL = True -except (ImportError, OSError, AttributeError): - HAS_LIBNACL = False - -log = logging.getLogger(__name__) - - -@pytest.mark.skipif( - not HAS_LIBNACL, reason="skipping test_nacl, reason=libnacl is unavailable" -) -@pytest.mark.skipif(sys.version_info >= (3, 10), reason="Segfaults with python 3") -@pytest.mark.windows_whitelisted -class NaclTest(ShellCase): - """ - Test the nacl runner - """ - - @pytest.mark.slow_test - def test_keygen(self): - """ - Test keygen - """ - # Store the data - ret = self.run_run_plus( - "nacl.keygen", - ) - self.assertIn("pk", ret["return"]) - self.assertIn("sk", ret["return"]) - - @pytest.mark.slow_test - def test_enc(self): - """ - Test keygen - """ - # Store the data - ret = self.run_run_plus( - "nacl.keygen", - ) - self.assertIn("pk", ret["return"]) - self.assertIn("sk", ret["return"]) - pk = ret["return"]["pk"] - sk = ret["return"]["sk"] - - unencrypted_data = "hello" - - # Encrypt with pk - ret = self.run_run_plus( - "nacl.enc", - data=unencrypted_data, - pk=pk, - ) - self.assertIn("return", ret) - - @pytest.mark.slow_test - def test_enc_dec(self): - """ - Store, list, fetch, then flush data - """ - # Store the data - ret = self.run_run_plus( - "nacl.keygen", - ) - self.assertIn("pk", ret["return"]) - self.assertIn("sk", ret["return"]) - pk = ret["return"]["pk"] - sk = ret["return"]["sk"] - - unencrypted_data = b"hello" - - # Encrypt with pk - ret = self.run_run_plus( - "nacl.enc", - data=unencrypted_data, - pk=pk, - ) - self.assertIn("return", ret) - encrypted_data = ret["return"] - - # Decrypt with sk - ret = self.run_run_plus( - "nacl.dec", - data=encrypted_data, - sk=sk, - ) - self.assertIn("return", ret) - self.assertEqual(unencrypted_data, ret["return"]) - - @pytest.mark.slow_test - def test_sealedbox_enc_dec(self): - """ - Generate keys, encrypt, then decrypt. - """ - # Store the data - ret = self.run_run_plus( - "nacl.keygen", - ) - self.assertIn("pk", ret["return"]) - self.assertIn("sk", ret["return"]) - pk = ret["return"]["pk"] - sk = ret["return"]["sk"] - - unencrypted_data = b"hello" - - # Encrypt with pk - ret = self.run_run_plus( - "nacl.sealedbox_encrypt", - data=unencrypted_data, - pk=pk, - ) - encrypted_data = ret["return"] - - # Decrypt with sk - ret = self.run_run_plus( - "nacl.sealedbox_decrypt", - data=encrypted_data, - sk=sk, - ) - self.assertEqual(unencrypted_data, ret["return"]) - - @pytest.mark.slow_test - def test_secretbox_enc_dec(self): - """ - Generate keys, encrypt, then decrypt. - """ - # Store the data - ret = self.run_run_plus( - "nacl.keygen", - ) - self.assertIn("pk", ret["return"]) - self.assertIn("sk", ret["return"]) - pk = ret["return"]["pk"] - sk = ret["return"]["sk"] - - unencrypted_data = b"hello" - - # Encrypt with pk - ret = self.run_run_plus( - "nacl.secretbox_encrypt", - data=unencrypted_data, - sk=sk, - ) - encrypted_data = ret["return"] - - # Decrypt with sk - ret = self.run_run_plus( - "nacl.secretbox_decrypt", - data=encrypted_data, - sk=sk, - ) - self.assertEqual(unencrypted_data, ret["return"]) - - @pytest.mark.slow_test - def test_enc_dec_no_pk_no_sk(self): - """ - Store, list, fetch, then flush data - """ - # Store the data - ret = self.run_run_plus( - "nacl.keygen", - ) - self.assertIn("pk", ret["return"]) - self.assertIn("sk", ret["return"]) - pk = ret["return"]["pk"] - sk = ret["return"]["sk"] - - unencrypted_data = b"hello" - - # Encrypt with pk - ret = self.run_run_plus( - "nacl.enc", - data=unencrypted_data, - pk=None, - ) - self.assertIn("Exception: no pubkey or pk_file found", ret["return"]) - - self.assertIn("return", ret) - encrypted_data = ret["return"] - - # Decrypt with sk - ret = self.run_run_plus( - "nacl.dec", - data=encrypted_data, - sk=None, - ) - self.assertIn("Exception: no key or sk_file found", ret["return"]) diff --git a/tests/pytests/integration/runners/test_nacl.py b/tests/pytests/integration/runners/test_nacl.py new file mode 100644 index 00000000000..ff2880bc7e6 --- /dev/null +++ b/tests/pytests/integration/runners/test_nacl.py @@ -0,0 +1,170 @@ +""" +Tests for the nacl runner +""" + +import pytest + +import salt.config +import salt.utils.stringutils +from tests.support.mock import patch + +try: + import salt.runners.nacl as nacl + + HAS_PYNACL = True +except (ImportError, OSError, AttributeError): + HAS_PYNACL = False + +pytestmark = [ + pytest.mark.windows_whitelisted, +] + + +@pytest.mark.skipif( + not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" +) +@pytest.fixture(scope="module") +def minion_opts(): + return salt.config.minion_config(None) + + +@pytest.fixture +def test_data(): + unencrypted_data = salt.utils.stringutils.to_bytes("hello") + return unencrypted_data + + +def test_keygen(minion_opts): + """ + Test keygen + """ + # Store the data + with patch("salt.runners.nacl.__opts__", minion_opts, create=True): + ret = nacl.keygen() + assert "pk" in ret + assert "sk" in ret + + +def test_enc(test_data, minion_opts): + """ + Test keygen + """ + # Store the data + with patch("salt.runners.nacl.__opts__", minion_opts, create=True): + ret = nacl.keygen() + assert "pk" in ret + assert "sk" in ret + pk = ret["pk"] + sk = ret["sk"] + + # Encrypt with pk + ret = nacl.enc( + data=test_data, + pk=pk, + ) + + +def test_enc_dec(test_data, minion_opts): + """ + Store, list, fetch, then flush data + """ + # Store the data + with patch("salt.runners.nacl.__opts__", minion_opts, create=True): + ret = nacl.keygen() + assert "pk" in ret + assert "sk" in ret + pk = ret["pk"] + sk = ret["sk"] + + # Encrypt with pk + encrypted_data = nacl.enc( + data=test_data, + pk=pk, + ) + + # Decrypt with sk + ret = nacl.dec( + data=encrypted_data, + sk=sk, + ) + assert test_data == ret + + +def test_sealedbox_enc_dec(test_data, minion_opts): + """ + Generate keys, encrypt, then decrypt. + """ + # Store the data + with patch("salt.runners.nacl.__opts__", minion_opts, create=True): + ret = nacl.keygen() + assert "pk" in ret + assert "sk" in ret + pk = ret["pk"] + sk = ret["sk"] + + # Encrypt with pk + encrypted_data = nacl.sealedbox_encrypt( + data=test_data, + pk=pk, + ) + + # Decrypt with sk + ret = nacl.sealedbox_decrypt( + data=encrypted_data, + sk=sk, + ) + assert test_data == ret + + +def test_secretbox_enc_dec(test_data, minion_opts): + """ + Generate keys, encrypt, then decrypt. + """ + # Store the data + with patch("salt.runners.nacl.__opts__", minion_opts, create=True): + ret = nacl.keygen() + assert "pk" in ret + assert "sk" in ret + pk = ret["pk"] + sk = ret["sk"] + + # Encrypt with pk + encrypted_data = nacl.secretbox_encrypt( + data=test_data, + sk=sk, + ) + + # Decrypt with sk + ret = nacl.secretbox_decrypt( + data=encrypted_data, + sk=sk, + ) + assert test_data == ret + + +def test_enc_dec_no_pk_no_sk(test_data, minion_opts): + """ + Store, list, fetch, then flush data + """ + # Store the data + with patch("salt.runners.nacl.__opts__", minion_opts, create=True): + ret = nacl.keygen() + assert "pk" in ret + assert "sk" in ret + pk = ret["pk"] + sk = ret["sk"] + + # Encrypt with pk + with pytest.raises(Exception, match="no pubkey or pk_file found"): + ret = nacl.enc( + data=test_data, + pk=None, + ) + + encrypted_data = test_data # dummy data, should get exception + # Decrypt with sk + with pytest.raises(Exception, match="no key or sk_file found"): + ret = nacl.dec( + data=encrypted_data, + sk=None, + ) diff --git a/tests/pytests/unit/modules/test_nacl.py b/tests/pytests/unit/modules/test_nacl.py index b60dabb3018..9e4e4796842 100644 --- a/tests/pytests/unit/modules/test_nacl.py +++ b/tests/pytests/unit/modules/test_nacl.py @@ -1,10 +1,49 @@ """ Unit tests for the salt.modules.nacl module """ +import pytest -import salt.modules.nacl +import salt.utils.stringutils from tests.support.mock import patch +try: + import salt.modules.nacl as nacl + + HAS_PYNACL = True +except (ImportError, OSError, AttributeError): + HAS_PYNACL = False + + +@pytest.mark.skipif( + not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" +) +@pytest.fixture +def configure_loader_modules(minion_opts): + utils = salt.loader.utils(minion_opts) + funcs = salt.loader.minion_mods(minion_opts, utils=utils) + return { + nacl: { + "__opts__": minion_opts, + "__utils__": utils, + "__salt__": funcs, + }, + } + + +@pytest.fixture +def test_keys(): + # Generate the keys + ret = nacl.keygen() + assert "pk" in ret + assert "sk" in ret + return ret["pk"], ret["sk"] + + +@pytest.fixture +def test_data(): + unencrypted_data = salt.utils.stringutils.to_bytes("hello") + return unencrypted_data + def test_fips_mode(): """ @@ -14,3 +53,53 @@ def test_fips_mode(): with patch("salt.modules.nacl.__opts__", opts, create=True): ret = salt.modules.nacl.__virtual__() assert ret == (False, "nacl module not available in FIPS mode") + + +def test_keygen(test_keys): + """ + Test keygen + """ + test_pk, test_sk = test_keys + assert len(test_pk) == 44 + assert len(test_sk) == 44 + + +def test_enc_dec(test_data, test_keys): + """ + Generate keys, encrypt, then decrypt. + """ + # Encrypt with pk + test_pk, test_sk = test_keys + encrypted_data = nacl.enc(data=test_data, pk=test_pk) + + # Decrypt with sk + decrypted_data = nacl.dec(data=encrypted_data, sk=test_sk) + assert test_data == decrypted_data + + +def test_sealedbox_enc_dec(test_data, test_keys): + """ + Generate keys, encrypt, then decrypt. + """ + # Encrypt with pk + test_pk, test_sk = test_keys + encrypted_data = nacl.sealedbox_encrypt(data=test_data, pk=test_pk) + + # Decrypt with sk + decrypted_data = nacl.sealedbox_decrypt(data=encrypted_data, sk=test_sk) + + assert test_data == decrypted_data + + +def test_secretbox_enc_dec(test_data, test_keys): + """ + Generate keys, encrypt, then decrypt. + """ + # Encrypt with sk + test_pk, test_sk = test_keys + encrypted_data = nacl.secretbox_encrypt(data=test_data, sk=test_sk) + + # Decrypt with sk + decrypted_data = nacl.secretbox_decrypt(data=encrypted_data, sk=test_sk) + + assert test_data == decrypted_data diff --git a/tests/pytests/unit/utils/test_nacl.py b/tests/pytests/unit/utils/test_nacl.py index baf4024b819..2fdec9b8d52 100644 --- a/tests/pytests/unit/utils/test_nacl.py +++ b/tests/pytests/unit/utils/test_nacl.py @@ -1,10 +1,43 @@ """ Unit tests for the salt.utils.nacl module """ +import os -import salt.utils.nacl +import pytest +from saltfactories.utils.tempfiles import temp_file + +import salt.modules.config as config +import salt.utils.files from tests.support.mock import patch +try: + import salt.utils.nacl as nacl + + HAS_PYNACL = nacl.check_requirements +except (ImportError, OSError, AttributeError): + HAS_PYNACL = False + + +@pytest.mark.skipif( + not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" +) +@pytest.fixture +def configure_loader_modules(): + return { + nacl: {"__salt__": {"config.get": config.get}}, + config: {"__opts__": {}}, + } + + +@pytest.fixture(scope="module") +def test_key(): + return "C16NxgBhw8cqbhvPCDAn2pirwW1A1WEVLUexCsoUD2Y=" + + +@pytest.fixture(scope="module") +def test_pub(): + return "+XWFfZXnfItS++a4gQf8Adu1aUlTgHWyTfsglbTdXyg=" + def test_fips_mode(): """ @@ -14,3 +47,130 @@ def test_fips_mode(): with patch("salt.utils.nacl.__opts__", opts, create=True): ret = salt.utils.nacl.__virtual__() assert ret == (False, "nacl utils not available in FIPS mode") + + +def test_keygen(): + """ + test nacl.keygen function + """ + ret = nacl.keygen() + assert all(key in ret for key in ret.keys()) + + +def test_keygen_sk_file(test_key): + """ + test nacl.keygen function + with sk_file set + """ + with temp_file("test_keygen_sk_file") as fpath: + with salt.utils.files.fopen(fpath, "w") as wfh: + wfh.write(test_key) + + # test sk_file + ret = nacl.keygen(sk_file=fpath) + assert "saved pk_file: {}.pub".format(fpath) == ret + salt.utils.files.remove(str(fpath) + ".pub") + + +def test_keygen_keyfile(test_key): + """ + test nacl.keygen function + with keyfile set + """ + with temp_file("test_keygen_keyfile") as fpath: + with salt.utils.files.fopen(fpath, "w") as wfh: + wfh.write(test_key) + + ret = nacl.keygen(keyfile=fpath) + assert "saved pk_file: {}.pub".format(fpath) == ret + salt.utils.files.remove(str(fpath) + ".pub") + + +def test_enc_keyfile(test_key, test_pub): + """ + test nacl.enc function + with keyfile and pk_file set + """ + with temp_file("test_enc_keyfile") as fpath: + with salt.utils.files.fopen(fpath, "w") as wfh: + wfh.write(test_key) + with salt.utils.files.fopen(str(fpath) + ".pub", "w") as wfhpub: + wfhpub.write(test_pub) + + kwargs = { + "opts": {"pki_dir": os.path.dirname(fpath)}, + "keyfile": str(fpath), + "pk_file": str(fpath) + ".pub", + } + ret = nacl.enc("blah", **kwargs) + assert isinstance(ret, bytes) + salt.utils.files.remove(str(fpath) + ".pub") + + +def test_enc_sk_file(test_key, test_pub): + """ + test nacl.enc function + with sk_file and pk_file set + """ + with temp_file("test_enc_sk_file") as fpath: + with salt.utils.files.fopen(fpath, "w") as wfh: + wfh.write(test_key) + with salt.utils.files.fopen(str(fpath) + ".pub", "w") as wfhpub: + wfhpub.write(test_pub) + + kwargs = { + "opts": {"pki_dir": os.path.dirname(fpath)}, + "sk_file": str(fpath), + "pk_file": str(fpath) + ".pub", + } + ret = nacl.enc("blah", **kwargs) + assert isinstance(ret, bytes) + salt.utils.files.remove(str(fpath) + ".pub") + + +def test_dec_keyfile(test_key, test_pub): + """ + test nacl.dec function + with keyfile and pk_file set + """ + with temp_file("test_dec_keyfile") as fpath: + with salt.utils.files.fopen(fpath, "w") as wfh: + wfh.write(test_key) + with salt.utils.files.fopen(str(fpath) + ".pub", "w") as wfhpub: + wfhpub.write(test_pub) + + kwargs = { + "opts": {"pki_dir": os.path.dirname(fpath)}, + "keyfile": str(fpath), + "pk_file": str(fpath) + ".pub", + } + + enc_data = nacl.enc("blah", **kwargs) + ret = nacl.dec(enc_data, **kwargs) + assert isinstance(ret, bytes) + assert ret == b"blah" + salt.utils.files.remove(str(fpath) + ".pub") + + +def test_dec_sk_file(test_key, test_pub): + """ + test nacl.dec function + with sk_file and pk_file set + """ + with temp_file("test_dec_sk_file") as fpath: + with salt.utils.files.fopen(fpath, "w") as wfh: + wfh.write(test_key) + with salt.utils.files.fopen(str(fpath) + ".pub", "w") as wfhpub: + wfhpub.write(test_pub) + + kwargs = { + "opts": {"pki_dir": os.path.dirname(fpath)}, + "sk_file": str(fpath), + "pk_file": str(fpath) + ".pub", + } + + enc_data = nacl.enc("blah", **kwargs) + ret = nacl.dec(enc_data, **kwargs) + assert isinstance(ret, bytes) + assert ret == b"blah" + salt.utils.files.remove(str(fpath) + ".pub") diff --git a/tests/unit/modules/test_nacl.py b/tests/unit/modules/test_nacl.py deleted file mode 100644 index c283f264e56..00000000000 --- a/tests/unit/modules/test_nacl.py +++ /dev/null @@ -1,91 +0,0 @@ -""" -Tests for the nacl execution module -""" - -import sys - -import pytest - -import salt.utils.stringutils -from tests.support.mixins import LoaderModuleMockMixin -from tests.support.unit import TestCase - -try: - import libnacl.sealed # pylint: disable=unused-import - import libnacl.secret # pylint: disable=unused-import - - import salt.modules.nacl as nacl - - HAS_LIBNACL = True -except (ImportError, OSError, AttributeError): - HAS_LIBNACL = False - - -@pytest.mark.skipif(sys.version_info >= (3, 10), reason="Segfaults with python 3.10") -@pytest.mark.skipif( - not HAS_LIBNACL, reason="skipping test_nacl, reason=libnacl is unavailable" -) -class NaclTest(TestCase, LoaderModuleMockMixin): - """ - Test the nacl runner - """ - - def setup_loader_modules(self): - self.unencrypted_data = salt.utils.stringutils.to_bytes("hello") - self.opts = salt.config.DEFAULT_MINION_OPTS.copy() - utils = salt.loader.utils(self.opts) - funcs = salt.loader.minion_mods(self.opts, utils=utils, whitelist=["nacl"]) - - return { - nacl: {"__opts__": self.opts, "__utils__": utils, "__salt__": funcs}, - } - - def setUp(self): - # Generate the keys - ret = nacl.keygen() - self.assertIn("pk", ret) - self.assertIn("sk", ret) - self.pk = ret["pk"] - self.sk = ret["sk"] - - def test_keygen(self): - """ - Test keygen - """ - self.assertEqual(len(self.pk), 44) - self.assertEqual(len(self.sk), 44) - - def test_enc_dec(self): - """ - Generate keys, encrypt, then decrypt. - """ - # Encrypt with pk - encrypted_data = nacl.enc(data=self.unencrypted_data, pk=self.pk) - - # Decrypt with sk - decrypted_data = nacl.dec(data=encrypted_data, sk=self.sk) - self.assertEqual(self.unencrypted_data, decrypted_data) - - def test_sealedbox_enc_dec(self): - """ - Generate keys, encrypt, then decrypt. - """ - # Encrypt with pk - encrypted_data = nacl.sealedbox_encrypt(data=self.unencrypted_data, pk=self.pk) - - # Decrypt with sk - decrypted_data = nacl.sealedbox_decrypt(data=encrypted_data, sk=self.sk) - - self.assertEqual(self.unencrypted_data, decrypted_data) - - def test_secretbox_enc_dec(self): - """ - Generate keys, encrypt, then decrypt. - """ - # Encrypt with sk - encrypted_data = nacl.secretbox_encrypt(data=self.unencrypted_data, sk=self.sk) - - # Decrypt with sk - decrypted_data = nacl.secretbox_decrypt(data=encrypted_data, sk=self.sk) - - self.assertEqual(self.unencrypted_data, decrypted_data) diff --git a/tests/unit/utils/test_nacl.py b/tests/unit/utils/test_nacl.py deleted file mode 100644 index d26682dfd4f..00000000000 --- a/tests/unit/utils/test_nacl.py +++ /dev/null @@ -1,144 +0,0 @@ -import os -import sys - -import pytest - -import salt.modules.config as config -import salt.utils.files -from tests.support.helpers import with_tempfile -from tests.support.mixins import LoaderModuleMockMixin -from tests.support.unit import TestCase - -try: - import salt.utils.nacl as nacl - HAS_PYNACL = nacl.check_requirements() -except (ImportError, OSError, AttributeError): - HAS_PYNACL = False - - -@pytest.mark.skipif( - not HAS_PYNACL, reason="skipping test_nacl, reason=libnacl is unavailable" -) -class NaclUtilsTests(TestCase, LoaderModuleMockMixin): - def setup_loader_modules(self): - return { - nacl: {"__salt__": {"config.get": config.get}}, - config: {"__opts__": {}}, - } - - def setUp(self): - self.key = "C16NxgBhw8cqbhvPCDAn2pirwW1A1WEVLUexCsoUD2Y=" - self.pub = "+XWFfZXnfItS++a4gQf8Adu1aUlTgHWyTfsglbTdXyg=" - - def test_keygen(self): - """ - test nacl.keygen function - """ - ret = nacl.keygen() - assert all(key in ret for key in ret.keys()) - - @with_tempfile() - def test_keygen_sk_file(self, fpath): - """ - test nacl.keygen function - with sk_file set - """ - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(self.key) - # test sk_file - ret = nacl.keygen(sk_file=fpath) - assert "saved pk_file: {}.pub".format(fpath) == ret - - @with_tempfile() - def test_keygen_keyfile(self, fpath): - """ - test nacl.keygen function - with keyfile set - """ - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(self.key) - - ret = nacl.keygen(keyfile=fpath) - assert "saved pk_file: {}.pub".format(fpath) == ret - - @with_tempfile() - def test_enc_keyfile(self, fpath): - """ - test nacl.enc function - with keyfile and pk_file set - """ - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(self.key) - with salt.utils.files.fopen(fpath + ".pub", "w") as wfh: - wfh.write(self.pub) - - kwargs = { - "opts": {"pki_dir": os.path.dirname(fpath)}, - "keyfile": fpath, - "pk_file": fpath + ".pub", - } - ret = nacl.enc("blah", **kwargs) - assert isinstance(ret, bytes) - - @with_tempfile() - def test_enc_sk_file(self, fpath): - """ - test nacl.enc function - with sk_file and pk_file set - """ - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(self.key) - with salt.utils.files.fopen(fpath + ".pub", "w") as wfh: - wfh.write(self.pub) - - kwargs = { - "opts": {"pki_dir": os.path.dirname(fpath)}, - "sk_file": fpath, - "pk_file": fpath + ".pub", - } - ret = nacl.enc("blah", **kwargs) - assert isinstance(ret, bytes) - - @with_tempfile() - def test_dec_keyfile(self, fpath): - """ - test nacl.dec function - with keyfile and pk_file set - """ - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(self.key) - with salt.utils.files.fopen(fpath + ".pub", "w") as wfh: - wfh.write(self.pub) - - kwargs = { - "opts": {"pki_dir": os.path.dirname(fpath)}, - "keyfile": fpath, - "pk_file": fpath + ".pub", - } - - enc_data = nacl.enc("blah", **kwargs) - ret = nacl.dec(enc_data, **kwargs) - assert isinstance(ret, bytes) - assert ret == b"blah" - - @with_tempfile() - def test_dec_sk_file(self, fpath): - """ - test nacl.dec function - with sk_file and pk_file set - """ - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(self.key) - with salt.utils.files.fopen(fpath + ".pub", "w") as wfh: - wfh.write(self.pub) - - kwargs = { - "opts": {"pki_dir": os.path.dirname(fpath)}, - "sk_file": fpath, - "pk_file": fpath + ".pub", - } - - enc_data = nacl.enc("blah", **kwargs) - ret = nacl.dec(enc_data, **kwargs) - assert isinstance(ret, bytes) - assert ret == b"blah" From 36563723f14529aa9608dda69bd5af1b661dd6d6 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Fri, 9 Jun 2023 16:33:37 -0600 Subject: [PATCH 04/57] Adjusted test_nacl.py for utils --- tests/pytests/unit/utils/test_nacl.py | 83 ++++++++++++++------------- 1 file changed, 43 insertions(+), 40 deletions(-) diff --git a/tests/pytests/unit/utils/test_nacl.py b/tests/pytests/unit/utils/test_nacl.py index 2fdec9b8d52..2413116c4df 100644 --- a/tests/pytests/unit/utils/test_nacl.py +++ b/tests/pytests/unit/utils/test_nacl.py @@ -1,6 +1,7 @@ """ Unit tests for the salt.utils.nacl module """ +import logging import os import pytest @@ -17,6 +18,8 @@ try: except (ImportError, OSError, AttributeError): HAS_PYNACL = False +log = logging.getLogger(__name__) + @pytest.mark.skipif( not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" @@ -30,13 +33,17 @@ def configure_loader_modules(): @pytest.fixture(scope="module") -def test_key(): - return "C16NxgBhw8cqbhvPCDAn2pirwW1A1WEVLUexCsoUD2Y=" +def test_keygen(): + """ + test nacl.keygen function - -@pytest.fixture(scope="module") -def test_pub(): - return "+XWFfZXnfItS++a4gQf8Adu1aUlTgHWyTfsglbTdXyg=" + Note: nacl.keygen returns base64 encoded values + """ + ret = nacl.keygen() + log.warning(f"DGM test_keygen ret '{ret}'") + assert "sk" in ret + assert "pk" in ret + return ret def test_fips_mode(): @@ -49,22 +56,14 @@ def test_fips_mode(): assert ret == (False, "nacl utils not available in FIPS mode") -def test_keygen(): - """ - test nacl.keygen function - """ - ret = nacl.keygen() - assert all(key in ret for key in ret.keys()) - - -def test_keygen_sk_file(test_key): +def test_keygen_sk_file(test_keygen): """ test nacl.keygen function with sk_file set """ with temp_file("test_keygen_sk_file") as fpath: - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(test_key) + with salt.utils.files.fopen(fpath, "wb") as wfh: + wfh.write(test_keygen["sk"]) # test sk_file ret = nacl.keygen(sk_file=fpath) @@ -72,72 +71,76 @@ def test_keygen_sk_file(test_key): salt.utils.files.remove(str(fpath) + ".pub") -def test_keygen_keyfile(test_key): +def test_keygen_keyfile(test_keygen): """ test nacl.keygen function with keyfile set """ with temp_file("test_keygen_keyfile") as fpath: - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(test_key) + with salt.utils.files.fopen(fpath, "wb") as wfh: + wfh.write(test_keygen["sk"]) ret = nacl.keygen(keyfile=fpath) assert "saved pk_file: {}.pub".format(fpath) == ret salt.utils.files.remove(str(fpath) + ".pub") -def test_enc_keyfile(test_key, test_pub): +def test_enc_keyfile(test_keygen): """ test nacl.enc function with keyfile and pk_file set """ + log.warning(f"DGM test_enc_keyfile test_keygen '{test_keygen}'") with temp_file("test_enc_keyfile") as fpath: - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(test_key) - with salt.utils.files.fopen(str(fpath) + ".pub", "w") as wfhpub: - wfhpub.write(test_pub) + with salt.utils.files.fopen(fpath, "wb") as wfh: + wfh.write(test_keygen["sk"]) + with salt.utils.files.fopen(str(fpath) + ".pub", "wb") as wfhpub: + wfhpub.write(test_keygen["pk"]) kwargs = { "opts": {"pki_dir": os.path.dirname(fpath)}, "keyfile": str(fpath), "pk_file": str(fpath) + ".pub", } + log.warning(f"DGM test_enc_keyfile nacl enc with kwargs '{kwargs}'") ret = nacl.enc("blah", **kwargs) assert isinstance(ret, bytes) salt.utils.files.remove(str(fpath) + ".pub") -def test_enc_sk_file(test_key, test_pub): +def test_enc_sk_file(test_keygen): """ test nacl.enc function with sk_file and pk_file set """ + log.warning(f"DGM test_enc_sk_file test_keygen '{test_keygen}'") with temp_file("test_enc_sk_file") as fpath: - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(test_key) - with salt.utils.files.fopen(str(fpath) + ".pub", "w") as wfhpub: - wfhpub.write(test_pub) + with salt.utils.files.fopen(fpath, "wb") as wfh: + wfh.write(test_keygen["sk"]) + with salt.utils.files.fopen(str(fpath) + ".pub", "wb") as wfhpub: + wfhpub.write(test_keygen["pk"]) kwargs = { "opts": {"pki_dir": os.path.dirname(fpath)}, "sk_file": str(fpath), "pk_file": str(fpath) + ".pub", } + log.warning(f"DGM test_enc_sk_file nacl enc with kwargs '{kwargs}'") ret = nacl.enc("blah", **kwargs) assert isinstance(ret, bytes) salt.utils.files.remove(str(fpath) + ".pub") -def test_dec_keyfile(test_key, test_pub): +def test_dec_keyfile(test_keygen): """ test nacl.dec function with keyfile and pk_file set """ with temp_file("test_dec_keyfile") as fpath: - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(test_key) - with salt.utils.files.fopen(str(fpath) + ".pub", "w") as wfhpub: - wfhpub.write(test_pub) + with salt.utils.files.fopen(fpath, "wb") as wfh: + wfh.write(test_keygen["sk"]) + with salt.utils.files.fopen(str(fpath) + ".pub", "wb") as wfhpub: + wfhpub.write(test_keygen["pk"]) kwargs = { "opts": {"pki_dir": os.path.dirname(fpath)}, @@ -152,16 +155,16 @@ def test_dec_keyfile(test_key, test_pub): salt.utils.files.remove(str(fpath) + ".pub") -def test_dec_sk_file(test_key, test_pub): +def test_dec_sk_file(test_keygen): """ test nacl.dec function with sk_file and pk_file set """ with temp_file("test_dec_sk_file") as fpath: - with salt.utils.files.fopen(fpath, "w") as wfh: - wfh.write(test_key) - with salt.utils.files.fopen(str(fpath) + ".pub", "w") as wfhpub: - wfhpub.write(test_pub) + with salt.utils.files.fopen(fpath, "wb") as wfh: + wfh.write(test_keygen["sk"]) + with salt.utils.files.fopen(str(fpath) + ".pub", "wb") as wfhpub: + wfhpub.write(test_keygen["pk"]) kwargs = { "opts": {"pki_dir": os.path.dirname(fpath)}, From d2f1900bd944c3ab61ba9b33f39ed2eda583c631 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Tue, 13 Jun 2023 14:41:12 -0600 Subject: [PATCH 05/57] Adjusted pynacl version per python version --- requirements/static/ci/common.in | 4 +++- requirements/static/ci/py3.10/cloud.txt | 3 +-- requirements/static/ci/py3.10/darwin.txt | 3 +-- requirements/static/ci/py3.10/freebsd.txt | 3 +-- requirements/static/ci/py3.10/lint.txt | 3 +-- requirements/static/ci/py3.10/linux.txt | 3 +-- requirements/static/ci/py3.10/windows.txt | 2 +- requirements/static/ci/py3.7/cloud.txt | 2 +- requirements/static/ci/py3.7/freebsd.txt | 2 +- requirements/static/ci/py3.7/lint.txt | 2 +- requirements/static/ci/py3.7/linux.txt | 2 +- requirements/static/ci/py3.7/windows.txt | 3 ++- requirements/static/ci/py3.8/cloud.txt | 2 +- requirements/static/ci/py3.8/freebsd.txt | 2 +- requirements/static/ci/py3.8/lint.txt | 2 +- requirements/static/ci/py3.8/linux.txt | 2 +- requirements/static/ci/py3.8/windows.txt | 3 ++- requirements/static/ci/py3.9/cloud.txt | 3 +-- requirements/static/ci/py3.9/darwin.txt | 3 +-- requirements/static/ci/py3.9/freebsd.txt | 3 +-- requirements/static/ci/py3.9/lint.txt | 3 +-- requirements/static/ci/py3.9/linux.txt | 3 +-- requirements/static/ci/py3.9/windows.txt | 2 +- 23 files changed, 27 insertions(+), 33 deletions(-) diff --git a/requirements/static/ci/common.in b/requirements/static/ci/common.in index 7ca2cebe159..d9ac10b2892 100644 --- a/requirements/static/ci/common.in +++ b/requirements/static/ci/common.in @@ -30,7 +30,9 @@ moto>=2.0.0 ; python_version >= '3.6' napalm; sys_platform != 'win32' and python_version > '3.6' and python_version < '3.10' paramiko>=2.10.1; sys_platform != 'win32' and sys_platform != 'darwin' passlib[bcrypt]>=1.7.4 -pynacl +pynacl==1.3.0; python_version <= '3.7' +pynacl==1.4.0; python_version == '3.8' +pynacl>=1.5.0; python_version >= '3.9' pycparser>=2.21; python_version >= '3.9' pyinotify>=0.9.6; sys_platform != 'win32' and sys_platform != 'darwin' and platform_system != "openbsd" python-etcd>0.4.2 diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index dcaf3b9fa9c..c58e6cef54e 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -667,7 +667,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 adal -pynacl==1.4.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -824,7 +824,6 @@ six==1.16.0 # ncclient # paramiko # profitbricks - # pynacl # pypsexec # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index fd12cc561a2..4f4890e6ad3 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -668,7 +668,7 @@ pygit2==1.9.1 ; python_version >= "3.7" # via -r requirements/static/ci/darwin.in pyjwt==2.4.0 # via adal -pynacl==1.3.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -812,7 +812,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-dateutil # pyvmomi # responses diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 497a0f21d81..ca69951e1f6 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -667,7 +667,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 adal -pynacl==1.3.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -812,7 +812,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-dateutil # pyvmomi # responses diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index 3df8b098ce3..d73906f8398 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -673,7 +673,7 @@ pylint==2.4.4 # saltpylint pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.4.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -795,7 +795,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-consul # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index 477989641b1..29d53ec9dfa 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -687,7 +687,7 @@ pyjwt==2.4.0 # twilio pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.3.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -849,7 +849,6 @@ six==1.16.0 # more-itertools # ncclient # paramiko - # pynacl # python-consul # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index 3ee2dfb867d..5e6092a6866 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -238,7 +238,7 @@ pymssql==2.2.7 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt -pynacl==1.5.0 +pynacl==1.5.0 ; python_version >= "3.9" # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt index 5523fbd69db..4ddd3d95604 100644 --- a/requirements/static/ci/py3.7/cloud.txt +++ b/requirements/static/ci/py3.7/cloud.txt @@ -709,7 +709,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 adal -pynacl==1.4.0 +pynacl==1.3.0 ; python_version <= "3.7" # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 0b11878d2d4..23838ea0e5d 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -703,7 +703,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 adal -pynacl==1.3.0 +pynacl==1.3.0 ; python_version <= "3.7" # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index b1b66604b6c..7f03c376f20 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -716,7 +716,7 @@ pylint==2.4.4 # saltpylint pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.4.0 +pynacl==1.3.0 ; python_version <= "3.7" # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index 72aaa919785..f5a3826ec4d 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -723,7 +723,7 @@ pyjwt==2.4.0 # twilio pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.3.0 +pynacl==1.3.0 ; python_version <= "3.7" # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index e5fc3ed81f5..e5deabea3ab 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -251,7 +251,7 @@ pymssql==2.2.1 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt -pynacl==1.5.0 +pynacl==1.3.0 ; python_version <= "3.7" # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via @@ -379,6 +379,7 @@ six==1.15.0 # jsonschema # kubernetes # mock + # pynacl # python-dateutil # pyvmomi # pywinrm diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index a58dec920dd..7236c768c55 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -698,7 +698,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 adal -pynacl==1.4.0 +pynacl==1.4.0 ; python_version == "3.8" # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index 14b9b3204d6..009fefb10a8 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -693,7 +693,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 adal -pynacl==1.3.0 +pynacl==1.4.0 ; python_version == "3.8" # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index 36ced882863..44c86d542fd 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -707,7 +707,7 @@ pylint==2.4.4 # saltpylint pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.4.0 +pynacl==1.4.0 ; python_version == "3.8" # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index 089df020e05..59ec8dacb1a 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -713,7 +713,7 @@ pyjwt==2.4.0 # twilio pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.3.0 +pynacl==1.4.0 ; python_version == "3.8" # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index ce6b8142a7d..92c4152005a 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -239,7 +239,7 @@ pymssql==2.2.1 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt -pynacl==1.5.0 +pynacl==1.4.0 ; python_version == "3.8" # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via @@ -367,6 +367,7 @@ six==1.15.0 # jsonschema # kubernetes # mock + # pynacl # python-dateutil # pyvmomi # pywinrm diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index e64010d73fc..d7422a67ab4 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -701,7 +701,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 adal -pynacl==1.4.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -865,7 +865,6 @@ six==1.16.0 # ncclient # paramiko # profitbricks - # pynacl # pypsexec # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index b8e6f50b115..93eada5d3e4 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -697,7 +697,7 @@ pygit2==1.9.1 ; python_version >= "3.7" # via -r requirements/static/ci/darwin.in pyjwt==2.4.0 # via adal -pynacl==1.3.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -848,7 +848,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-dateutil # pyvmomi # responses diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index 944885c2216..311b4555ddb 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -696,7 +696,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 adal -pynacl==1.3.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -848,7 +848,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-dateutil # pyvmomi # responses diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 2fd1f2527c2..9b327b776de 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -708,7 +708,7 @@ pylint==2.4.4 # saltpylint pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.4.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -837,7 +837,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-consul # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index cf198dcff83..ead0f1242d7 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -718,7 +718,7 @@ pyjwt==2.4.0 # twilio pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.3.0 +pynacl==1.5.0 ; python_version >= "3.9" # via # -r requirements/static/ci/common.in # paramiko @@ -887,7 +887,6 @@ six==1.16.0 # more-itertools # ncclient # paramiko - # pynacl # python-consul # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index 5533dae6d5c..d081309887f 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -240,7 +240,7 @@ pymssql==2.2.1 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt -pynacl==1.5.0 +pynacl==1.5.0 ; python_version >= "3.9" # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via From c6b4671b86b9061269dee7993ebe1d06f23553cc Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Thu, 15 Jun 2023 09:59:47 -0600 Subject: [PATCH 06/57] Updated versions of cffi used --- requirements/static/ci/common.in | 3 ++- requirements/static/ci/py3.10/cloud.txt | 2 +- requirements/static/ci/py3.10/darwin.txt | 2 +- requirements/static/ci/py3.10/freebsd.txt | 2 +- requirements/static/ci/py3.10/lint.txt | 2 +- requirements/static/ci/py3.10/linux.txt | 2 +- requirements/static/ci/py3.10/windows.txt | 2 +- requirements/static/ci/py3.7/cloud.txt | 1 - requirements/static/ci/py3.7/freebsd.txt | 1 - requirements/static/ci/py3.7/lint.txt | 1 - requirements/static/ci/py3.7/linux.txt | 1 - requirements/static/ci/py3.7/windows.txt | 1 - requirements/static/ci/py3.8/cloud.txt | 2 +- requirements/static/ci/py3.8/freebsd.txt | 2 +- requirements/static/ci/py3.8/lint.txt | 2 +- requirements/static/ci/py3.8/linux.txt | 2 +- requirements/static/ci/py3.8/windows.txt | 2 +- requirements/static/ci/py3.9/cloud.txt | 2 +- requirements/static/ci/py3.9/darwin.txt | 2 +- requirements/static/ci/py3.9/freebsd.txt | 2 +- requirements/static/ci/py3.9/lint.txt | 2 +- requirements/static/ci/py3.9/linux.txt | 2 +- requirements/static/ci/py3.9/windows.txt | 2 +- 23 files changed, 19 insertions(+), 23 deletions(-) diff --git a/requirements/static/ci/common.in b/requirements/static/ci/common.in index d9ac10b2892..ba08f698854 100644 --- a/requirements/static/ci/common.in +++ b/requirements/static/ci/common.in @@ -8,7 +8,8 @@ boto3>=1.17.67; python_version >= '3.6' boto>=2.46.0 cassandra-driver>=2.0 certifi>=2022.12.07 -cffi>=1.12.2 +cffi>=1.12.2, <= 1.14.6; python_version < '3.7' +cffi>=1.15.1; python_version > '3.7' cherrypy>=17.4.1 clustershell croniter>=0.3.0,!=0.3.22"; sys_platform != 'win32' diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index c58e6cef54e..1fee2a7de6a 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index 4f4890e6ad3..034d8bcdd4d 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index ca69951e1f6..600c4657380 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -356,7 +356,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index d73906f8398..2f0f5367e7e 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -362,7 +362,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index 29d53ec9dfa..42b2e9ed7bb 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -370,7 +370,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index 5e6092a6866..654f358af88 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -42,7 +42,7 @@ certifi==2023.07.22 # -r requirements/windows.txt # kubernetes # requests -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # -r requirements/windows.txt diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt index 4ddd3d95604..33547d20175 100644 --- a/requirements/static/ci/py3.7/cloud.txt +++ b/requirements/static/ci/py3.7/cloud.txt @@ -362,7 +362,6 @@ certvalidator==0.11.1 # via vcert cffi==1.14.6 # via - # -r requirements/static/ci/common.in # azure-datalake-store # bcrypt # cryptography diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 23838ea0e5d..8b0fa6828af 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -360,7 +360,6 @@ certvalidator==0.11.1 # via vcert cffi==1.14.6 # via - # -r requirements/static/ci/common.in # azure-datalake-store # bcrypt # cryptography diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 7f03c376f20..c66d61860e0 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -368,7 +368,6 @@ certvalidator==0.11.1 # via vcert cffi==1.14.6 # via - # -r requirements/static/ci/common.in # azure-datalake-store # bcrypt # cryptography diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index f5a3826ec4d..ec04e48a41a 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -374,7 +374,6 @@ certvalidator==0.11.1 # via vcert cffi==1.14.6 # via - # -r requirements/static/ci/common.in # azure-datalake-store # bcrypt # cryptography diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index e5deabea3ab..f0fae401318 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -50,7 +50,6 @@ certifi==2023.07.22 # requests cffi==1.14.6 # via - # -r requirements/static/ci/common.in # -r requirements/windows.txt # clr-loader # cryptography diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index 7236c768c55..83db00c3dc0 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index 009fefb10a8..e0c84876c57 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -356,7 +356,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index 44c86d542fd..cb505238dd9 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -364,7 +364,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index 59ec8dacb1a..8c068b8ee1e 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -370,7 +370,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index 92c4152005a..8206b905138 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -44,7 +44,7 @@ certifi==2023.07.22 # -r requirements/windows.txt # kubernetes # requests -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # -r requirements/windows.txt diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index d7422a67ab4..89c23c15d59 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index 93eada5d3e4..609e1623e07 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index 311b4555ddb..6c7c62d8a65 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -356,7 +356,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 9b327b776de..6b0791b6efc 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -362,7 +362,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index ead0f1242d7..f46c58999e3 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -372,7 +372,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # azure-datalake-store diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index d081309887f..38cfc73db51 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -44,7 +44,7 @@ certifi==2023.07.22 # -r requirements/windows.txt # kubernetes # requests -cffi==1.14.6 +cffi==1.15.1 ; python_version > "3.7" # via # -r requirements/static/ci/common.in # -r requirements/windows.txt From 1153e4d349469ce2dc1cb08df23a8e471ceb7ed6 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Sat, 17 Jun 2023 02:33:46 -0700 Subject: [PATCH 07/57] Import nacl with dlopen RTLD_DEEPBIND flag --- salt/utils/nacl.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/salt/utils/nacl.py b/salt/utils/nacl.py index 20239ff35f7..52e92180b2c 100644 --- a/salt/utils/nacl.py +++ b/salt/utils/nacl.py @@ -6,6 +6,7 @@ Common code shared between the nacl module and runner. import base64 import logging import os +import sys import salt.syspaths import salt.utils.files @@ -19,6 +20,16 @@ log = logging.getLogger(__name__) REQ_ERROR = None +dlopen = hasattr(sys, "getdlopenflags") +if dlopen: + dlflags = sys.getdlopenflags() + # Use RTDL_DEEPBIND in case pyzmq was compiled with ZMQ_USE_TWEETNACL. This is + # needed because pyzmq imports libzmq with RTLD_GLOBAL. + if hasattr(os, "RTLD_DEEPBIND"): + flags = os.RTLD_DEEPBIND | dlflags + else: + flags = dlflags + sys.setdlopenflags(dlflags) try: import nacl.public import nacl.secret @@ -26,6 +37,9 @@ except (ImportError, OSError) as e: REQ_ERROR = ( "PyNaCl import error, perhaps missing python PyNaCl package or should update." ) +finally: + if dlopen: + sys.setdlopenflags(dlflags) __virtualname__ = "nacl" From 8d8834428af9f56afd480366baef1c6075836d7c Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Mon, 19 Jun 2023 16:14:11 -0700 Subject: [PATCH 08/57] Add import hook for nacl --- salt/__init__.py | 56 ++++++++++++++++++++++++++++++++++++++++------ salt/utils/nacl.py | 13 ----------- 2 files changed, 49 insertions(+), 20 deletions(-) diff --git a/salt/__init__.py b/salt/__init__.py index 30880b10acc..d843a5cc5f7 100644 --- a/salt/__init__.py +++ b/salt/__init__.py @@ -5,6 +5,8 @@ Salt package import importlib import sys import warnings +import logging +log = logging.getLogger() if sys.version_info < (3,): sys.stderr.write( @@ -16,6 +18,7 @@ USE_VENDORED_TORNADO = True class TornadoImporter: + def find_module(self, module_name, package_path=None): if USE_VENDORED_TORNADO: if module_name.startswith("tornado"): @@ -25,24 +28,63 @@ class TornadoImporter: return self return None - def load_module(self, name): + def create_module(self, spec): if USE_VENDORED_TORNADO: - mod = importlib.import_module("salt.ext.{}".format(name)) + mod = importlib.import_module("salt.ext.{}".format(sepc.name)) else: # Remove 'salt.ext.' from the module - mod = importlib.import_module(name[9:]) + mod = importlib.import_module(sepc.name[9:]) sys.modules[name] = mod return mod - def create_module(self, spec): - return self.load_module(spec.name) - def exec_module(self, module): + log.error("exec_module %r", module) return None +class NaclImporter: + """ + Import hook to force PyNaCl to perform dlopen on libsodium with the + RTLD_DEEPBIND flag. This is to work around an issue where pyzmq does a dlopen + with RTLD_GLOBAL which the causes calls to libsodium to resolve to + tweetnacl when it's been bundled with pyzmq. + + See: https://github.com/zeromq/pyzmq/issues/1878 + """ + loading = False + + def find_module(self, module_name, package_path=None): + if not NaclImporter.loading and module_name == "nacl": + NaclImporter.loading = True + return self + return None + + def create_module(self, spec): + dlopen = hasattr(sys, "getdlopenflags") + if dlopen: + dlflags = sys.getdlopenflags() + # Use RTDL_DEEPBIND in case pyzmq was compiled with ZMQ_USE_TWEETNACL. This is + # needed because pyzmq imports libzmq with RTLD_GLOBAL. + if hasattr(os, "RTLD_DEEPBIND"): + flags = os.RTLD_DEEPBIND | dlflags + else: + flags = dlflags + sys.setdlopenflags(dlflags) + try: + mod = importlib.import_module(spec.name) + finally: + if dlopen: + sys.setdlopenflags(dlflags) + NaclImporter.loading = False + sys.modules[name] = mod + return mod + + def exec_module(self, module): + log.error("exec_module %r", module) + return None + # Try our importer first -sys.meta_path = [TornadoImporter()] + sys.meta_path +sys.meta_path = [TornadoImporter(), NaclImporter] + sys.meta_path # All salt related deprecation warnings should be shown once each! diff --git a/salt/utils/nacl.py b/salt/utils/nacl.py index 52e92180b2c..7ab66d09ad4 100644 --- a/salt/utils/nacl.py +++ b/salt/utils/nacl.py @@ -20,16 +20,6 @@ log = logging.getLogger(__name__) REQ_ERROR = None -dlopen = hasattr(sys, "getdlopenflags") -if dlopen: - dlflags = sys.getdlopenflags() - # Use RTDL_DEEPBIND in case pyzmq was compiled with ZMQ_USE_TWEETNACL. This is - # needed because pyzmq imports libzmq with RTLD_GLOBAL. - if hasattr(os, "RTLD_DEEPBIND"): - flags = os.RTLD_DEEPBIND | dlflags - else: - flags = dlflags - sys.setdlopenflags(dlflags) try: import nacl.public import nacl.secret @@ -37,9 +27,6 @@ except (ImportError, OSError) as e: REQ_ERROR = ( "PyNaCl import error, perhaps missing python PyNaCl package or should update." ) -finally: - if dlopen: - sys.setdlopenflags(dlflags) __virtualname__ = "nacl" From 678ff5a2c372a72ef634ee046ac76b24b88f811c Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Tue, 20 Jun 2023 08:42:39 -0700 Subject: [PATCH 09/57] Add import hook for nacl --- salt/__init__.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/salt/__init__.py b/salt/__init__.py index d843a5cc5f7..8968a70da98 100644 --- a/salt/__init__.py +++ b/salt/__init__.py @@ -3,9 +3,11 @@ Salt package """ import importlib +import logging +import os import sys import warnings -import logging + log = logging.getLogger() if sys.version_info < (3,): @@ -18,7 +20,6 @@ USE_VENDORED_TORNADO = True class TornadoImporter: - def find_module(self, module_name, package_path=None): if USE_VENDORED_TORNADO: if module_name.startswith("tornado"): @@ -30,11 +31,11 @@ class TornadoImporter: def create_module(self, spec): if USE_VENDORED_TORNADO: - mod = importlib.import_module("salt.ext.{}".format(sepc.name)) + mod = importlib.import_module("salt.ext.{}".format(spec.name)) else: # Remove 'salt.ext.' from the module - mod = importlib.import_module(sepc.name[9:]) - sys.modules[name] = mod + mod = importlib.import_module(spec.name[9:]) + sys.modules[spec.name] = mod return mod def exec_module(self, module): @@ -51,6 +52,7 @@ class NaclImporter: See: https://github.com/zeromq/pyzmq/issues/1878 """ + loading = False def find_module(self, module_name, package_path=None): @@ -76,13 +78,14 @@ class NaclImporter: if dlopen: sys.setdlopenflags(dlflags) NaclImporter.loading = False - sys.modules[name] = mod + sys.modules[spec.name] = mod return mod def exec_module(self, module): log.error("exec_module %r", module) return None + # Try our importer first sys.meta_path = [TornadoImporter(), NaclImporter] + sys.meta_path From ae65e160ba8e7d2cb0277935bae7df910d23ad12 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Tue, 20 Jun 2023 08:53:34 -0700 Subject: [PATCH 10/57] Fix typo --- salt/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/__init__.py b/salt/__init__.py index 8968a70da98..651145d02e7 100644 --- a/salt/__init__.py +++ b/salt/__init__.py @@ -71,7 +71,7 @@ class NaclImporter: flags = os.RTLD_DEEPBIND | dlflags else: flags = dlflags - sys.setdlopenflags(dlflags) + sys.setdlopenflags(flags) try: mod = importlib.import_module(spec.name) finally: From 48359504f4c87ecf1ce8150d30dfab4fedca1798 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Tue, 20 Jun 2023 13:55:59 -0700 Subject: [PATCH 11/57] Fix warts in patch and linter errors --- salt/__init__.py | 5 +++-- salt/utils/nacl.py | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/salt/__init__.py b/salt/__init__.py index 651145d02e7..29b290d1512 100644 --- a/salt/__init__.py +++ b/salt/__init__.py @@ -56,7 +56,8 @@ class NaclImporter: loading = False def find_module(self, module_name, package_path=None): - if not NaclImporter.loading and module_name == "nacl": + print(f"{self} {module_name}") + if not NaclImporter.loading and module_name.startswith("nacl"): NaclImporter.loading = True return self return None @@ -87,7 +88,7 @@ class NaclImporter: # Try our importer first -sys.meta_path = [TornadoImporter(), NaclImporter] + sys.meta_path +sys.meta_path = [TornadoImporter(), NaclImporter()] + sys.meta_path # All salt related deprecation warnings should be shown once each! diff --git a/salt/utils/nacl.py b/salt/utils/nacl.py index 7ab66d09ad4..20239ff35f7 100644 --- a/salt/utils/nacl.py +++ b/salt/utils/nacl.py @@ -6,7 +6,6 @@ Common code shared between the nacl module and runner. import base64 import logging import os -import sys import salt.syspaths import salt.utils.files From 28e2ac4e601c2037d552944dfeec013192f04020 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Wed, 21 Jun 2023 09:10:12 -0700 Subject: [PATCH 12/57] Remove debug print --- salt/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/salt/__init__.py b/salt/__init__.py index 29b290d1512..14c7235268f 100644 --- a/salt/__init__.py +++ b/salt/__init__.py @@ -56,7 +56,6 @@ class NaclImporter: loading = False def find_module(self, module_name, package_path=None): - print(f"{self} {module_name}") if not NaclImporter.loading and module_name.startswith("nacl"): NaclImporter.loading = True return self From 497b9b117d720b4e9e5a2892d7107ca4180bb286 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Wed, 21 Jun 2023 13:24:52 -0600 Subject: [PATCH 13/57] Remove debig log statements and update immutables version used --- requirements/static/ci/common.in | 1 + requirements/static/ci/py3.10/cloud.txt | 4 +++- requirements/static/ci/py3.10/darwin.txt | 6 ++++-- requirements/static/ci/py3.10/docs.txt | 2 +- requirements/static/ci/py3.10/freebsd.txt | 6 ++++-- requirements/static/ci/py3.10/lint.txt | 4 +++- requirements/static/ci/py3.10/linux.txt | 6 ++++-- requirements/static/ci/py3.10/windows.txt | 6 ++++-- requirements/static/ci/py3.7/cloud.txt | 4 +++- requirements/static/ci/py3.7/docs.txt | 3 ++- requirements/static/ci/py3.7/freebsd.txt | 7 +++++-- requirements/static/ci/py3.7/lint.txt | 4 +++- requirements/static/ci/py3.7/linux.txt | 7 +++++-- requirements/static/ci/py3.7/windows.txt | 7 +++++-- requirements/static/ci/py3.8/cloud.txt | 4 +++- requirements/static/ci/py3.8/docs.txt | 2 +- requirements/static/ci/py3.8/freebsd.txt | 6 ++++-- requirements/static/ci/py3.8/lint.txt | 4 +++- requirements/static/ci/py3.8/linux.txt | 6 ++++-- requirements/static/ci/py3.8/windows.txt | 6 ++++-- requirements/static/ci/py3.9/cloud.txt | 4 +++- requirements/static/ci/py3.9/darwin.txt | 6 ++++-- requirements/static/ci/py3.9/docs.txt | 2 +- requirements/static/ci/py3.9/freebsd.txt | 6 ++++-- requirements/static/ci/py3.9/lint.txt | 4 +++- requirements/static/ci/py3.9/linux.txt | 6 ++++-- requirements/static/ci/py3.9/windows.txt | 6 ++++-- tests/pytests/unit/utils/test_nacl.py | 8 -------- 28 files changed, 89 insertions(+), 48 deletions(-) diff --git a/requirements/static/ci/common.in b/requirements/static/ci/common.in index ba08f698854..eb4a6cfb615 100644 --- a/requirements/static/ci/common.in +++ b/requirements/static/ci/common.in @@ -17,6 +17,7 @@ dnspython docker etcd3-py==0.1.6 ; python_version >= '3.6' gitpython>=3.1.30; python_version >= '3.7' +immutables>=0.19 jmespath jsonschema junos-eznc; sys_platform != 'win32' and python_version <= '3.10' diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index 1fee2a7de6a..a64c17d4c04 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -442,7 +442,9 @@ idna==2.8 # requests # yarl immutables==0.19 - # via contextvars + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in iniconfig==1.1.1 diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index 034d8bcdd4d..bfa407c3547 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -444,8 +444,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/darwin.txt iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.10/docs.txt b/requirements/static/ci/py3.10/docs.txt index 588b8682f56..f7e45290bec 100644 --- a/requirements/static/ci/py3.10/docs.txt +++ b/requirements/static/ci/py3.10/docs.txt @@ -40,7 +40,7 @@ idna==2.8 # requests imagesize==1.4.1 # via sphinx -immutables==0.15 +immutables==0.19 # via # -c requirements/static/ci/py3.10/linux.txt # contextvars diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 600c4657380..6fc2305b345 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -439,8 +439,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/freebsd.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index 2f0f5367e7e..fa3c194494b 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -439,7 +439,9 @@ idna==3.2 # requests # yarl immutables==0.19 - # via contextvars + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in ipaddress==1.0.23 diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index 42b2e9ed7bb..0210afbab54 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -454,8 +454,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index 654f358af88..e08e1f5a113 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -124,8 +124,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/windows.txt iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt index 33547d20175..94d849e0427 100644 --- a/requirements/static/ci/py3.7/cloud.txt +++ b/requirements/static/ci/py3.7/cloud.txt @@ -453,7 +453,9 @@ idna==2.8 # requests # yarl immutables==0.19 - # via contextvars + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.8.1 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.7/docs.txt b/requirements/static/ci/py3.7/docs.txt index 31209a994b2..c623580e104 100644 --- a/requirements/static/ci/py3.7/docs.txt +++ b/requirements/static/ci/py3.7/docs.txt @@ -40,7 +40,7 @@ idna==2.8 # requests imagesize==1.2.0 # via sphinx -immutables==0.15 +immutables==0.19 # via # -c requirements/static/ci/py3.7/linux.txt # contextvars @@ -188,6 +188,7 @@ tempora==4.1.1 typing-extensions==3.10.0.0 # via # -c requirements/static/ci/py3.7/linux.txt + # immutables # importlib-metadata # markdown-it-py # myst-docutils diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 8b0fa6828af..2e017a96077 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -450,8 +450,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.6.4 # via # -r requirements/static/pkg/freebsd.in @@ -891,6 +893,7 @@ typing-extensions==3.10.0.0 # aiohttp # async-timeout # gitpython + # immutables # importlib-metadata # pytest-shell-utilities # pytest-system-statistics diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index c66d61860e0..71ecaa8fd9c 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -452,7 +452,9 @@ idna==3.2 # requests # yarl immutables==0.19 - # via contextvars + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.6.4 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index ec04e48a41a..f61f282aec7 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -465,8 +465,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.6.4 # via # -r requirements/static/pkg/linux.in @@ -939,6 +941,7 @@ typing-extensions==3.10.0.0 # aiohttp # async-timeout # gitpython + # immutables # importlib-metadata # pytest-shell-utilities # pytest-system-statistics diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index f0fae401318..adc89147097 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -129,8 +129,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.6.4 # via # -r requirements/windows.txt @@ -404,6 +406,7 @@ typing-extensions==4.2.0 # aiohttp # async-timeout # gitpython + # immutables # importlib-metadata # pytest-shell-utilities # pytest-system-statistics diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index 83db00c3dc0..91fe5a6c732 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -452,7 +452,9 @@ idna==2.8 # requests # yarl immutables==0.19 - # via contextvars + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.8.1 # via -r requirements/static/pkg/linux.in iniconfig==1.1.1 diff --git a/requirements/static/ci/py3.8/docs.txt b/requirements/static/ci/py3.8/docs.txt index da96a0c3bfb..5f7b7d17d02 100644 --- a/requirements/static/ci/py3.8/docs.txt +++ b/requirements/static/ci/py3.8/docs.txt @@ -40,7 +40,7 @@ idna==2.8 # requests imagesize==1.2.0 # via sphinx -immutables==0.15 +immutables==0.19 # via # -c requirements/static/ci/py3.8/linux.txt # contextvars diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index e0c84876c57..f918c019285 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -449,8 +449,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.6.4 # via -r requirements/static/pkg/freebsd.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index cb505238dd9..485371d0803 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -451,7 +451,9 @@ idna==3.2 # requests # yarl immutables==0.19 - # via contextvars + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.6.4 # via -r requirements/static/pkg/linux.in ipaddress==1.0.23 diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index 8c068b8ee1e..e20e8814c6b 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -464,8 +464,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.6.4 # via -r requirements/static/pkg/linux.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index 8206b905138..30cbe6e463b 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -126,8 +126,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==4.6.4 # via -r requirements/windows.txt iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index 89c23c15d59..33bb5204b5d 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -452,7 +452,9 @@ idna==2.8 # requests # yarl immutables==0.19 - # via contextvars + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in iniconfig==1.1.1 diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index 609e1623e07..d9f41bfa599 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -454,8 +454,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/darwin.txt iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.9/docs.txt b/requirements/static/ci/py3.9/docs.txt index 772a37c357a..ff85f0537d8 100644 --- a/requirements/static/ci/py3.9/docs.txt +++ b/requirements/static/ci/py3.9/docs.txt @@ -40,7 +40,7 @@ idna==2.8 # requests imagesize==1.4.1 # via sphinx -immutables==0.15 +immutables==0.19 # via # -c requirements/static/ci/py3.9/linux.txt # contextvars diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index 6c7c62d8a65..d10713b1f08 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -449,8 +449,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/freebsd.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 6b0791b6efc..06b369a679b 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -449,7 +449,9 @@ idna==3.2 # requests # yarl immutables==0.19 - # via contextvars + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in ipaddress==1.0.23 diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index f46c58999e3..e62627f4f80 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -466,8 +466,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index 38cfc73db51..b166cb729aa 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -126,8 +126,10 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.15 - # via contextvars +immutables==0.19 + # via + # -r requirements/static/ci/common.in + # contextvars importlib-metadata==6.0.0 # via -r requirements/windows.txt iniconfig==1.0.1 diff --git a/tests/pytests/unit/utils/test_nacl.py b/tests/pytests/unit/utils/test_nacl.py index 2413116c4df..78b77e0f1f1 100644 --- a/tests/pytests/unit/utils/test_nacl.py +++ b/tests/pytests/unit/utils/test_nacl.py @@ -1,7 +1,6 @@ """ Unit tests for the salt.utils.nacl module """ -import logging import os import pytest @@ -18,8 +17,6 @@ try: except (ImportError, OSError, AttributeError): HAS_PYNACL = False -log = logging.getLogger(__name__) - @pytest.mark.skipif( not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" @@ -40,7 +37,6 @@ def test_keygen(): Note: nacl.keygen returns base64 encoded values """ ret = nacl.keygen() - log.warning(f"DGM test_keygen ret '{ret}'") assert "sk" in ret assert "pk" in ret return ret @@ -90,7 +86,6 @@ def test_enc_keyfile(test_keygen): test nacl.enc function with keyfile and pk_file set """ - log.warning(f"DGM test_enc_keyfile test_keygen '{test_keygen}'") with temp_file("test_enc_keyfile") as fpath: with salt.utils.files.fopen(fpath, "wb") as wfh: wfh.write(test_keygen["sk"]) @@ -102,7 +97,6 @@ def test_enc_keyfile(test_keygen): "keyfile": str(fpath), "pk_file": str(fpath) + ".pub", } - log.warning(f"DGM test_enc_keyfile nacl enc with kwargs '{kwargs}'") ret = nacl.enc("blah", **kwargs) assert isinstance(ret, bytes) salt.utils.files.remove(str(fpath) + ".pub") @@ -113,7 +107,6 @@ def test_enc_sk_file(test_keygen): test nacl.enc function with sk_file and pk_file set """ - log.warning(f"DGM test_enc_sk_file test_keygen '{test_keygen}'") with temp_file("test_enc_sk_file") as fpath: with salt.utils.files.fopen(fpath, "wb") as wfh: wfh.write(test_keygen["sk"]) @@ -125,7 +118,6 @@ def test_enc_sk_file(test_keygen): "sk_file": str(fpath), "pk_file": str(fpath) + ".pub", } - log.warning(f"DGM test_enc_sk_file nacl enc with kwargs '{kwargs}'") ret = nacl.enc("blah", **kwargs) assert isinstance(ret, bytes) salt.utils.files.remove(str(fpath) + ".pub") From 4f868389ae8d36fcf36ea88877b8c7ec18908307 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Thu, 22 Jun 2023 14:27:59 -0600 Subject: [PATCH 14/57] Updated pylint to 2.17.4 from 2.4.4, needs support for later versions of Python 3 --- requirements/static/ci/lint.in | 2 +- requirements/static/ci/py3.10/lint.txt | 17 +++++++++++++---- requirements/static/ci/py3.7/lint.txt | 19 ++++++++++++++----- requirements/static/ci/py3.8/lint.txt | 19 +++++++++++++++---- requirements/static/ci/py3.9/lint.txt | 19 +++++++++++++++---- 5 files changed, 58 insertions(+), 18 deletions(-) diff --git a/requirements/static/ci/lint.in b/requirements/static/ci/lint.in index 7b568d61d38..1727d54d952 100644 --- a/requirements/static/ci/lint.in +++ b/requirements/static/ci/lint.in @@ -1,4 +1,4 @@ # Lint requirements -pylint==2.4.4 +pylint==2.17.4 SaltPyLint>=v2020.9.28 toml diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index fa3c194494b..25f94d0941d 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.3.3 +astroid==2.15.5 # via pylint async-timeout==4.0.2 # via aiohttp @@ -403,6 +403,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +dill==0.3.6 + # via pylint distlib==0.3.2 # via virtualenv distro==1.6.0 @@ -639,7 +641,9 @@ passlib[bcrypt]==1.7.4 pathspec==0.9.0 # via yamllint platformdirs==2.2.0 - # via virtualenv + # via + # pylint + # virtualenv portend==2.7.1 # via cherrypy psutil==5.8.0 @@ -669,7 +673,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.4.4 +pylint==2.17.4 # via # -r requirements/static/ci/lint.in # saltpylint @@ -782,7 +786,6 @@ setproctitle==1.3.2 six==1.16.0 # via # apscheduler - # astroid # bcrypt # cassandra-driver # cheroot @@ -823,12 +826,18 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in +tomli==2.0.1 + # via pylint +tomlkit==0.11.8 + # via pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 # via junos-eznc twilio==7.9.2 # via -r requirements/static/ci/linux.in +typing-extensions==4.6.3 + # via astroid tzlocal==3.0 # via apscheduler urllib3==1.26.6 diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 71ecaa8fd9c..9549b66f203 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.3.3 +astroid==2.15.5 # via pylint async-timeout==4.0.2 # via aiohttp @@ -411,6 +411,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +dill==0.3.6 + # via pylint distlib==0.3.2 # via virtualenv distro==1.6.0 @@ -682,7 +684,9 @@ passlib[bcrypt]==1.7.4 pathspec==0.9.0 # via yamllint platformdirs==2.2.0 - # via virtualenv + # via + # pylint + # virtualenv portend==2.7.1 # via cherrypy psutil==5.8.0 @@ -711,7 +715,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.4.4 +pylint==2.17.4 # via # -r requirements/static/ci/lint.in # saltpylint @@ -831,7 +835,6 @@ setproctitle==1.3.2 six==1.16.0 # via # apscheduler - # astroid # bcrypt # cassandra-driver # cheroot @@ -880,6 +883,10 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in +tomli==2.0.1 + # via pylint +tomlkit==0.11.8 + # via pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 @@ -888,13 +895,15 @@ twilio==7.9.2 # via -r requirements/static/ci/linux.in typed-ast==1.4.1 # via astroid -typing-extensions==3.10.0.0 +typing-extensions==4.6.3 # via # aiohttp + # astroid # async-timeout # gitpython # immutables # importlib-metadata + # pylint # yarl tzlocal==3.0 # via apscheduler diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index 485371d0803..ee5748273ab 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.3.3 +astroid==2.15.5 # via pylint async-timeout==4.0.2 # via aiohttp @@ -410,6 +410,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +dill==0.3.6 + # via pylint distlib==0.3.2 # via virtualenv distro==1.6.0 @@ -674,7 +676,9 @@ passlib[bcrypt]==1.7.4 pathspec==0.9.0 # via yamllint platformdirs==2.2.0 - # via virtualenv + # via + # pylint + # virtualenv portend==2.7.1 # via cherrypy psutil==5.8.0 @@ -703,7 +707,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.4.4 +pylint==2.17.4 # via # -r requirements/static/ci/lint.in # saltpylint @@ -823,7 +827,6 @@ setproctitle==1.3.2 six==1.16.0 # via # apscheduler - # astroid # bcrypt # cassandra-driver # cheroot @@ -872,12 +875,20 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in +tomli==2.0.1 + # via pylint +tomlkit==0.11.8 + # via pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 # via junos-eznc twilio==7.9.2 # via -r requirements/static/ci/linux.in +typing-extensions==4.6.3 + # via + # astroid + # pylint tzlocal==3.0 # via apscheduler urllib3==1.26.6 diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 06b369a679b..d2785193076 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.3.3 +astroid==2.15.5 # via pylint async-timeout==4.0.2 # via aiohttp @@ -408,6 +408,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +dill==0.3.6 + # via pylint distlib==0.3.2 # via virtualenv distro==1.6.0 @@ -672,7 +674,9 @@ passlib[bcrypt]==1.7.4 pathspec==0.9.0 # via yamllint platformdirs==2.2.0 - # via virtualenv + # via + # pylint + # virtualenv portend==2.7.1 # via cherrypy psutil==5.8.0 @@ -704,7 +708,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.4.4 +pylint==2.17.4 # via # -r requirements/static/ci/lint.in # saltpylint @@ -824,7 +828,6 @@ setproctitle==1.3.2 six==1.16.0 # via # apscheduler - # astroid # bcrypt # cassandra-driver # cheroot @@ -872,12 +875,20 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in +tomli==2.0.1 + # via pylint +tomlkit==0.11.8 + # via pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 # via junos-eznc twilio==7.9.2 # via -r requirements/static/ci/linux.in +typing-extensions==4.6.3 + # via + # astroid + # pylint tzlocal==3.0 # via apscheduler urllib3==1.26.6 From 664bce9d0177af2863f692103279bb399192f9c2 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Thu, 22 Jun 2023 14:47:33 -0600 Subject: [PATCH 15/57] Trying different versions of pylint to get past py3.8 issue --- requirements/static/ci/lint.in | 2 +- requirements/static/ci/py3.10/lint.txt | 17 ++++------------- requirements/static/ci/py3.7/lint.txt | 17 ++++------------- requirements/static/ci/py3.8/lint.txt | 19 ++++--------------- requirements/static/ci/py3.9/lint.txt | 19 ++++--------------- 5 files changed, 17 insertions(+), 57 deletions(-) diff --git a/requirements/static/ci/lint.in b/requirements/static/ci/lint.in index 1727d54d952..9c5a2fbce20 100644 --- a/requirements/static/ci/lint.in +++ b/requirements/static/ci/lint.in @@ -1,4 +1,4 @@ # Lint requirements -pylint==2.17.4 +pylint==2.5.3 SaltPyLint>=v2020.9.28 toml diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index 25f94d0941d..6237bcdbd29 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.15.5 +astroid==2.5 # via pylint async-timeout==4.0.2 # via aiohttp @@ -403,8 +403,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -dill==0.3.6 - # via pylint distlib==0.3.2 # via virtualenv distro==1.6.0 @@ -641,9 +639,7 @@ passlib[bcrypt]==1.7.4 pathspec==0.9.0 # via yamllint platformdirs==2.2.0 - # via - # pylint - # virtualenv + # via virtualenv portend==2.7.1 # via cherrypy psutil==5.8.0 @@ -673,7 +669,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.17.4 +pylint==2.5.3 # via # -r requirements/static/ci/lint.in # saltpylint @@ -826,18 +822,13 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in -tomli==2.0.1 - # via pylint -tomlkit==0.11.8 - # via pylint + # pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 # via junos-eznc twilio==7.9.2 # via -r requirements/static/ci/linux.in -typing-extensions==4.6.3 - # via astroid tzlocal==3.0 # via apscheduler urllib3==1.26.6 diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 9549b66f203..6fffbe6aca9 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.15.5 +astroid==2.5 # via pylint async-timeout==4.0.2 # via aiohttp @@ -411,8 +411,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -dill==0.3.6 - # via pylint distlib==0.3.2 # via virtualenv distro==1.6.0 @@ -684,9 +682,7 @@ passlib[bcrypt]==1.7.4 pathspec==0.9.0 # via yamllint platformdirs==2.2.0 - # via - # pylint - # virtualenv + # via virtualenv portend==2.7.1 # via cherrypy psutil==5.8.0 @@ -715,7 +711,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.17.4 +pylint==2.5.3 # via # -r requirements/static/ci/lint.in # saltpylint @@ -883,10 +879,7 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in -tomli==2.0.1 - # via pylint -tomlkit==0.11.8 - # via pylint + # pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 @@ -898,12 +891,10 @@ typed-ast==1.4.1 typing-extensions==4.6.3 # via # aiohttp - # astroid # async-timeout # gitpython # immutables # importlib-metadata - # pylint # yarl tzlocal==3.0 # via apscheduler diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index ee5748273ab..23e5157087b 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.15.5 +astroid==2.5 # via pylint async-timeout==4.0.2 # via aiohttp @@ -410,8 +410,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -dill==0.3.6 - # via pylint distlib==0.3.2 # via virtualenv distro==1.6.0 @@ -676,9 +674,7 @@ passlib[bcrypt]==1.7.4 pathspec==0.9.0 # via yamllint platformdirs==2.2.0 - # via - # pylint - # virtualenv + # via virtualenv portend==2.7.1 # via cherrypy psutil==5.8.0 @@ -707,7 +703,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.17.4 +pylint==2.5.3 # via # -r requirements/static/ci/lint.in # saltpylint @@ -875,20 +871,13 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in -tomli==2.0.1 - # via pylint -tomlkit==0.11.8 - # via pylint + # pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 # via junos-eznc twilio==7.9.2 # via -r requirements/static/ci/linux.in -typing-extensions==4.6.3 - # via - # astroid - # pylint tzlocal==3.0 # via apscheduler urllib3==1.26.6 diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index d2785193076..f0dd1a6036a 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.15.5 +astroid==2.5 # via pylint async-timeout==4.0.2 # via aiohttp @@ -408,8 +408,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -dill==0.3.6 - # via pylint distlib==0.3.2 # via virtualenv distro==1.6.0 @@ -674,9 +672,7 @@ passlib[bcrypt]==1.7.4 pathspec==0.9.0 # via yamllint platformdirs==2.2.0 - # via - # pylint - # virtualenv + # via virtualenv portend==2.7.1 # via cherrypy psutil==5.8.0 @@ -708,7 +704,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.17.4 +pylint==2.5.3 # via # -r requirements/static/ci/lint.in # saltpylint @@ -875,20 +871,13 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in -tomli==2.0.1 - # via pylint -tomlkit==0.11.8 - # via pylint + # pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 # via junos-eznc twilio==7.9.2 # via -r requirements/static/ci/linux.in -typing-extensions==4.6.3 - # via - # astroid - # pylint tzlocal==3.0 # via apscheduler urllib3==1.26.6 From 016861ddaae9c89f60d67532f94b364440bee6c5 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Thu, 22 Jun 2023 15:04:22 -0600 Subject: [PATCH 16/57] Revert pylint to version 2.4.4 --- requirements/static/ci/lint.in | 2 +- requirements/static/ci/py3.10/lint.txt | 6 +++--- requirements/static/ci/py3.7/lint.txt | 6 +++--- requirements/static/ci/py3.8/lint.txt | 6 +++--- requirements/static/ci/py3.9/lint.txt | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/requirements/static/ci/lint.in b/requirements/static/ci/lint.in index 9c5a2fbce20..7b568d61d38 100644 --- a/requirements/static/ci/lint.in +++ b/requirements/static/ci/lint.in @@ -1,4 +1,4 @@ # Lint requirements -pylint==2.5.3 +pylint==2.4.4 SaltPyLint>=v2020.9.28 toml diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index 6237bcdbd29..fa3c194494b 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.5 +astroid==2.3.3 # via pylint async-timeout==4.0.2 # via aiohttp @@ -669,7 +669,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.5.3 +pylint==2.4.4 # via # -r requirements/static/ci/lint.in # saltpylint @@ -782,6 +782,7 @@ setproctitle==1.3.2 six==1.16.0 # via # apscheduler + # astroid # bcrypt # cassandra-driver # cheroot @@ -822,7 +823,6 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in - # pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 6fffbe6aca9..746ef57bfd5 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.5 +astroid==2.3.3 # via pylint async-timeout==4.0.2 # via aiohttp @@ -711,7 +711,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.5.3 +pylint==2.4.4 # via # -r requirements/static/ci/lint.in # saltpylint @@ -831,6 +831,7 @@ setproctitle==1.3.2 six==1.16.0 # via # apscheduler + # astroid # bcrypt # cassandra-driver # cheroot @@ -879,7 +880,6 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in - # pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index 23e5157087b..485371d0803 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.5 +astroid==2.3.3 # via pylint async-timeout==4.0.2 # via aiohttp @@ -703,7 +703,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.5.3 +pylint==2.4.4 # via # -r requirements/static/ci/lint.in # saltpylint @@ -823,6 +823,7 @@ setproctitle==1.3.2 six==1.16.0 # via # apscheduler + # astroid # bcrypt # cassandra-driver # cheroot @@ -871,7 +872,6 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in - # pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index f0dd1a6036a..06b369a679b 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -24,7 +24,7 @@ asn1crypto==1.4.0 # via # certvalidator # oscrypto -astroid==2.5 +astroid==2.3.3 # via pylint async-timeout==4.0.2 # via aiohttp @@ -704,7 +704,7 @@ pyjwt==2.4.0 # via # adal # twilio -pylint==2.5.3 +pylint==2.4.4 # via # -r requirements/static/ci/lint.in # saltpylint @@ -824,6 +824,7 @@ setproctitle==1.3.2 six==1.16.0 # via # apscheduler + # astroid # bcrypt # cassandra-driver # cheroot @@ -871,7 +872,6 @@ toml==0.10.2 # via # -r requirements/static/ci/common.in # -r requirements/static/ci/lint.in - # pylint tornado==6.1 # via python-telegram-bot transitions==0.8.8 From 101f30741049313cbd917f25acc4a678a438e95c Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Mon, 26 Jun 2023 10:10:01 -0600 Subject: [PATCH 17/57] Disabling lint message --- salt/log/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/salt/log/__init__.py b/salt/log/__init__.py index 3458474f2ca..45202cffb0f 100644 --- a/salt/log/__init__.py +++ b/salt/log/__init__.py @@ -9,6 +9,8 @@ are made to assure backwards compatibility. """ +# pylint: disable = no-name-in-module + # Import several classes/functions from salt.log.setup for backwards compatibility from salt._logging import LOG_LEVELS, SORTED_LEVEL_NAMES from salt.log.setup import ( From aee097ce8c4d370d47cda386c103c87deba14642 Mon Sep 17 00:00:00 2001 From: David Murphy Date: Wed, 28 Jun 2023 10:32:28 -0600 Subject: [PATCH 18/57] Update salt/__init__.py Co-authored-by: Pedro Algarvio --- salt/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/__init__.py b/salt/__init__.py index 14c7235268f..f8b426a7f84 100644 --- a/salt/__init__.py +++ b/salt/__init__.py @@ -47,7 +47,7 @@ class NaclImporter: """ Import hook to force PyNaCl to perform dlopen on libsodium with the RTLD_DEEPBIND flag. This is to work around an issue where pyzmq does a dlopen - with RTLD_GLOBAL which the causes calls to libsodium to resolve to + with RTLD_GLOBAL which then causes calls to libsodium to resolve to tweetnacl when it's been bundled with pyzmq. See: https://github.com/zeromq/pyzmq/issues/1878 From 897c56034c33ef4ae453005223310bc34dc73a4d Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Wed, 28 Jun 2023 11:14:14 -0600 Subject: [PATCH 19/57] Updated for review comments --- tests/pytests/unit/utils/test_nacl.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tests/pytests/unit/utils/test_nacl.py b/tests/pytests/unit/utils/test_nacl.py index 78b77e0f1f1..c23f6bc0846 100644 --- a/tests/pytests/unit/utils/test_nacl.py +++ b/tests/pytests/unit/utils/test_nacl.py @@ -4,7 +4,6 @@ import os import pytest -from saltfactories.utils.tempfiles import temp_file import salt.modules.config as config import salt.utils.files @@ -57,7 +56,7 @@ def test_keygen_sk_file(test_keygen): test nacl.keygen function with sk_file set """ - with temp_file("test_keygen_sk_file") as fpath: + with pytest.helpers.temp_file("test_keygen_sk_file") as fpath: with salt.utils.files.fopen(fpath, "wb") as wfh: wfh.write(test_keygen["sk"]) @@ -72,7 +71,7 @@ def test_keygen_keyfile(test_keygen): test nacl.keygen function with keyfile set """ - with temp_file("test_keygen_keyfile") as fpath: + with pytest.helpers.temp_file("test_keygen_keyfile") as fpath: with salt.utils.files.fopen(fpath, "wb") as wfh: wfh.write(test_keygen["sk"]) @@ -86,7 +85,7 @@ def test_enc_keyfile(test_keygen): test nacl.enc function with keyfile and pk_file set """ - with temp_file("test_enc_keyfile") as fpath: + with pytest.helpers.temp_file("test_enc_keyfile") as fpath: with salt.utils.files.fopen(fpath, "wb") as wfh: wfh.write(test_keygen["sk"]) with salt.utils.files.fopen(str(fpath) + ".pub", "wb") as wfhpub: @@ -107,7 +106,7 @@ def test_enc_sk_file(test_keygen): test nacl.enc function with sk_file and pk_file set """ - with temp_file("test_enc_sk_file") as fpath: + with pytest.helpers.temp_file("test_enc_sk_file") as fpath: with salt.utils.files.fopen(fpath, "wb") as wfh: wfh.write(test_keygen["sk"]) with salt.utils.files.fopen(str(fpath) + ".pub", "wb") as wfhpub: @@ -128,7 +127,7 @@ def test_dec_keyfile(test_keygen): test nacl.dec function with keyfile and pk_file set """ - with temp_file("test_dec_keyfile") as fpath: + with pytest.helpers.temp_file("test_dec_keyfile") as fpath: with salt.utils.files.fopen(fpath, "wb") as wfh: wfh.write(test_keygen["sk"]) with salt.utils.files.fopen(str(fpath) + ".pub", "wb") as wfhpub: @@ -152,7 +151,7 @@ def test_dec_sk_file(test_keygen): test nacl.dec function with sk_file and pk_file set """ - with temp_file("test_dec_sk_file") as fpath: + with pytest.helpers.temp_file("test_dec_sk_file") as fpath: with salt.utils.files.fopen(fpath, "wb") as wfh: wfh.write(test_keygen["sk"]) with salt.utils.files.fopen(str(fpath) + ".pub", "wb") as wfhpub: From d65aed8ced6b6a390f952b466ef13af0ef06a73b Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Wed, 28 Jun 2023 16:07:51 -0600 Subject: [PATCH 20/57] Updated immutables as per reviewer comments --- requirements/static/ci/common.in | 1 - requirements/static/ci/py3.10/cloud.txt | 4 +--- requirements/static/ci/py3.10/darwin.txt | 4 +--- requirements/static/ci/py3.10/freebsd.txt | 4 +--- requirements/static/ci/py3.10/lint.txt | 4 +--- requirements/static/ci/py3.10/linux.txt | 4 +--- requirements/static/ci/py3.10/windows.txt | 4 +--- requirements/static/ci/py3.7/cloud.txt | 4 +--- requirements/static/ci/py3.7/freebsd.txt | 4 +--- requirements/static/ci/py3.7/lint.txt | 4 +--- requirements/static/ci/py3.7/linux.txt | 4 +--- requirements/static/ci/py3.7/windows.txt | 4 +--- requirements/static/ci/py3.8/cloud.txt | 4 +--- requirements/static/ci/py3.8/freebsd.txt | 4 +--- requirements/static/ci/py3.8/lint.txt | 4 +--- requirements/static/ci/py3.8/linux.txt | 4 +--- requirements/static/ci/py3.8/windows.txt | 4 +--- requirements/static/ci/py3.9/cloud.txt | 4 +--- requirements/static/ci/py3.9/darwin.txt | 4 +--- requirements/static/ci/py3.9/freebsd.txt | 4 +--- requirements/static/ci/py3.9/lint.txt | 4 +--- requirements/static/ci/py3.9/linux.txt | 4 +--- requirements/static/ci/py3.9/windows.txt | 4 +--- 23 files changed, 22 insertions(+), 67 deletions(-) diff --git a/requirements/static/ci/common.in b/requirements/static/ci/common.in index eb4a6cfb615..ba08f698854 100644 --- a/requirements/static/ci/common.in +++ b/requirements/static/ci/common.in @@ -17,7 +17,6 @@ dnspython docker etcd3-py==0.1.6 ; python_version >= '3.6' gitpython>=3.1.30; python_version >= '3.7' -immutables>=0.19 jmespath jsonschema junos-eznc; sys_platform != 'win32' and python_version <= '3.10' diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index a64c17d4c04..1fee2a7de6a 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -442,9 +442,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in iniconfig==1.1.1 diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index bfa407c3547..46a8830972c 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -445,9 +445,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/darwin.txt iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 6fc2305b345..3074d91a918 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -440,9 +440,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/freebsd.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index fa3c194494b..2f0f5367e7e 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -439,9 +439,7 @@ idna==3.2 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in ipaddress==1.0.23 diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index 0210afbab54..f180d84037f 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -455,9 +455,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index e08e1f5a113..f866bed87c5 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -125,9 +125,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/windows.txt iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt index 94d849e0427..33547d20175 100644 --- a/requirements/static/ci/py3.7/cloud.txt +++ b/requirements/static/ci/py3.7/cloud.txt @@ -453,9 +453,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.8.1 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 2e017a96077..8e711d00e86 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -451,9 +451,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.6.4 # via # -r requirements/static/pkg/freebsd.in diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 746ef57bfd5..838d6592ae5 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -452,9 +452,7 @@ idna==3.2 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.6.4 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index f61f282aec7..a806aa4ef28 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -466,9 +466,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.6.4 # via # -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index adc89147097..7930a486ae1 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -130,9 +130,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.6.4 # via # -r requirements/windows.txt diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index 91fe5a6c732..83db00c3dc0 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -452,9 +452,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.8.1 # via -r requirements/static/pkg/linux.in iniconfig==1.1.1 diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index f918c019285..063f78b12d7 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -450,9 +450,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.6.4 # via -r requirements/static/pkg/freebsd.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index 485371d0803..cb505238dd9 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -451,9 +451,7 @@ idna==3.2 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.6.4 # via -r requirements/static/pkg/linux.in ipaddress==1.0.23 diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index e20e8814c6b..2131fbb5a30 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -465,9 +465,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.6.4 # via -r requirements/static/pkg/linux.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index 30cbe6e463b..407b4dbbf33 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -127,9 +127,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==4.6.4 # via -r requirements/windows.txt iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index 33bb5204b5d..89c23c15d59 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -452,9 +452,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in iniconfig==1.1.1 diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index d9f41bfa599..c52738dee7b 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -455,9 +455,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/darwin.txt iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index d10713b1f08..7ab31e5bdb8 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -450,9 +450,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/freebsd.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 06b369a679b..6b0791b6efc 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -449,9 +449,7 @@ idna==3.2 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in ipaddress==1.0.23 diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index e62627f4f80..ae9266dbac0 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -467,9 +467,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in iniconfig==1.0.1 diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index b166cb729aa..0723baf2bec 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -127,9 +127,7 @@ idna==2.8 # requests # yarl immutables==0.19 - # via - # -r requirements/static/ci/common.in - # contextvars + # via contextvars importlib-metadata==6.0.0 # via -r requirements/windows.txt iniconfig==1.0.1 From 244f4a7dada5a317e341a1a005b1d4bf5e4d6b85 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Wed, 28 Jun 2023 16:35:19 -0600 Subject: [PATCH 21/57] Updat4ed immutables==0.15 where applicable as per reviewer comments --- requirements/static/ci/py3.10/darwin.txt | 2 +- requirements/static/ci/py3.10/docs.txt | 2 +- requirements/static/ci/py3.10/freebsd.txt | 2 +- requirements/static/ci/py3.10/linux.txt | 2 +- requirements/static/ci/py3.10/windows.txt | 2 +- requirements/static/ci/py3.7/docs.txt | 2 +- requirements/static/ci/py3.7/freebsd.txt | 2 +- requirements/static/ci/py3.7/linux.txt | 2 +- requirements/static/ci/py3.7/windows.txt | 2 +- requirements/static/ci/py3.8/docs.txt | 2 +- requirements/static/ci/py3.8/freebsd.txt | 2 +- requirements/static/ci/py3.8/linux.txt | 2 +- requirements/static/ci/py3.8/windows.txt | 2 +- requirements/static/ci/py3.9/darwin.txt | 2 +- requirements/static/ci/py3.9/docs.txt | 2 +- requirements/static/ci/py3.9/freebsd.txt | 2 +- requirements/static/ci/py3.9/linux.txt | 2 +- requirements/static/ci/py3.9/windows.txt | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index 46a8830972c..034d8bcdd4d 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -444,7 +444,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==6.0.0 # via -r requirements/darwin.txt diff --git a/requirements/static/ci/py3.10/docs.txt b/requirements/static/ci/py3.10/docs.txt index f7e45290bec..588b8682f56 100644 --- a/requirements/static/ci/py3.10/docs.txt +++ b/requirements/static/ci/py3.10/docs.txt @@ -40,7 +40,7 @@ idna==2.8 # requests imagesize==1.4.1 # via sphinx -immutables==0.19 +immutables==0.15 # via # -c requirements/static/ci/py3.10/linux.txt # contextvars diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 3074d91a918..600c4657380 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -439,7 +439,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/freebsd.in diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index f180d84037f..42b2e9ed7bb 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -454,7 +454,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index f866bed87c5..654f358af88 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -124,7 +124,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==6.0.0 # via -r requirements/windows.txt diff --git a/requirements/static/ci/py3.7/docs.txt b/requirements/static/ci/py3.7/docs.txt index c623580e104..99ef5e95227 100644 --- a/requirements/static/ci/py3.7/docs.txt +++ b/requirements/static/ci/py3.7/docs.txt @@ -40,7 +40,7 @@ idna==2.8 # requests imagesize==1.2.0 # via sphinx -immutables==0.19 +immutables==0.15 # via # -c requirements/static/ci/py3.7/linux.txt # contextvars diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 8e711d00e86..65b1b2eebc1 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -450,7 +450,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==4.6.4 # via diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index a806aa4ef28..324aa1d0532 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -465,7 +465,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==4.6.4 # via diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index 7930a486ae1..9aca3cef7db 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -129,7 +129,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==4.6.4 # via diff --git a/requirements/static/ci/py3.8/docs.txt b/requirements/static/ci/py3.8/docs.txt index 5f7b7d17d02..da96a0c3bfb 100644 --- a/requirements/static/ci/py3.8/docs.txt +++ b/requirements/static/ci/py3.8/docs.txt @@ -40,7 +40,7 @@ idna==2.8 # requests imagesize==1.2.0 # via sphinx -immutables==0.19 +immutables==0.15 # via # -c requirements/static/ci/py3.8/linux.txt # contextvars diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index 063f78b12d7..e0c84876c57 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -449,7 +449,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==4.6.4 # via -r requirements/static/pkg/freebsd.in diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index 2131fbb5a30..8c068b8ee1e 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -464,7 +464,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==4.6.4 # via -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index 407b4dbbf33..8206b905138 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -126,7 +126,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==4.6.4 # via -r requirements/windows.txt diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index c52738dee7b..609e1623e07 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -454,7 +454,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==6.0.0 # via -r requirements/darwin.txt diff --git a/requirements/static/ci/py3.9/docs.txt b/requirements/static/ci/py3.9/docs.txt index ff85f0537d8..772a37c357a 100644 --- a/requirements/static/ci/py3.9/docs.txt +++ b/requirements/static/ci/py3.9/docs.txt @@ -40,7 +40,7 @@ idna==2.8 # requests imagesize==1.4.1 # via sphinx -immutables==0.19 +immutables==0.15 # via # -c requirements/static/ci/py3.9/linux.txt # contextvars diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index 7ab31e5bdb8..6c7c62d8a65 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -449,7 +449,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/freebsd.in diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index ae9266dbac0..f46c58999e3 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -466,7 +466,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==6.0.0 # via -r requirements/static/pkg/linux.in diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index 0723baf2bec..38cfc73db51 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -126,7 +126,7 @@ idna==2.8 # etcd3-py # requests # yarl -immutables==0.19 +immutables==0.15 # via contextvars importlib-metadata==6.0.0 # via -r requirements/windows.txt From 726e6d351a3c74fea8f8a2bda7320b200d24c129 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Wed, 28 Jun 2023 18:17:32 -0600 Subject: [PATCH 22/57] Cleaned up py3.7 use of immutables in requirements --- requirements/static/ci/py3.7/docs.txt | 1 - requirements/static/ci/py3.7/freebsd.txt | 1 - requirements/static/ci/py3.7/linux.txt | 1 - requirements/static/ci/py3.7/windows.txt | 1 - 4 files changed, 4 deletions(-) diff --git a/requirements/static/ci/py3.7/docs.txt b/requirements/static/ci/py3.7/docs.txt index 99ef5e95227..31209a994b2 100644 --- a/requirements/static/ci/py3.7/docs.txt +++ b/requirements/static/ci/py3.7/docs.txt @@ -188,7 +188,6 @@ tempora==4.1.1 typing-extensions==3.10.0.0 # via # -c requirements/static/ci/py3.7/linux.txt - # immutables # importlib-metadata # markdown-it-py # myst-docutils diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 65b1b2eebc1..8b0fa6828af 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -891,7 +891,6 @@ typing-extensions==3.10.0.0 # aiohttp # async-timeout # gitpython - # immutables # importlib-metadata # pytest-shell-utilities # pytest-system-statistics diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index 324aa1d0532..ec04e48a41a 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -939,7 +939,6 @@ typing-extensions==3.10.0.0 # aiohttp # async-timeout # gitpython - # immutables # importlib-metadata # pytest-shell-utilities # pytest-system-statistics diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index 9aca3cef7db..f0fae401318 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -404,7 +404,6 @@ typing-extensions==4.2.0 # aiohttp # async-timeout # gitpython - # immutables # importlib-metadata # pytest-shell-utilities # pytest-system-statistics From 09f4cea37b9b59897b3577b0cbd76a665ad78b1d Mon Sep 17 00:00:00 2001 From: David Murphy Date: Fri, 30 Jun 2023 16:37:11 -0600 Subject: [PATCH 23/57] Update tests/pytests/integration/runners/test_nacl.py Co-authored-by: Pedro Algarvio --- tests/pytests/integration/runners/test_nacl.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/tests/pytests/integration/runners/test_nacl.py b/tests/pytests/integration/runners/test_nacl.py index ff2880bc7e6..3dc9266f0bb 100644 --- a/tests/pytests/integration/runners/test_nacl.py +++ b/tests/pytests/integration/runners/test_nacl.py @@ -8,21 +8,13 @@ import salt.config import salt.utils.stringutils from tests.support.mock import patch -try: - import salt.runners.nacl as nacl - - HAS_PYNACL = True -except (ImportError, OSError, AttributeError): - HAS_PYNACL = False +pytest.importorskip("libnacl") pytestmark = [ pytest.mark.windows_whitelisted, ] -@pytest.mark.skipif( - not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" -) @pytest.fixture(scope="module") def minion_opts(): return salt.config.minion_config(None) From 990c95c48e73ee8018dca9de095286e8a9fa34d1 Mon Sep 17 00:00:00 2001 From: David Murphy Date: Fri, 30 Jun 2023 16:37:43 -0600 Subject: [PATCH 24/57] Update tests/pytests/unit/utils/test_nacl.py Co-authored-by: Pedro Algarvio --- tests/pytests/unit/utils/test_nacl.py | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/tests/pytests/unit/utils/test_nacl.py b/tests/pytests/unit/utils/test_nacl.py index c23f6bc0846..8e48a8a1316 100644 --- a/tests/pytests/unit/utils/test_nacl.py +++ b/tests/pytests/unit/utils/test_nacl.py @@ -9,17 +9,7 @@ import salt.modules.config as config import salt.utils.files from tests.support.mock import patch -try: - import salt.utils.nacl as nacl - - HAS_PYNACL = nacl.check_requirements -except (ImportError, OSError, AttributeError): - HAS_PYNACL = False - - -@pytest.mark.skipif( - not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" -) +pytest.importorskip("libnacl") @pytest.fixture def configure_loader_modules(): return { From 924885d4c2a2be4c64eb6102ce42934b34d63556 Mon Sep 17 00:00:00 2001 From: MKLeb Date: Thu, 15 Jun 2023 17:43:16 -0400 Subject: [PATCH 25/57] Add `get-latest-release` command so we can dynamically get the previous versions to test upgrades and downgrades for --- tools/ci.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/ci.py b/tools/ci.py index 08264bb4e50..1dfb586b238 100644 --- a/tools/ci.py +++ b/tools/ci.py @@ -13,6 +13,7 @@ import sys import time from typing import TYPE_CHECKING, Any +import requests from ptscripts import Context, command_group import tools.utils From d4f8bc1cbb867f1cb2a4c2d11ac0632328ece6a5 Mon Sep 17 00:00:00 2001 From: MKLeb Date: Fri, 16 Jun 2023 09:50:44 -0400 Subject: [PATCH 26/57] Use `ctx.web` for requests and require the `--salt-version` kwarg --- tools/ci.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/ci.py b/tools/ci.py index 1dfb586b238..08264bb4e50 100644 --- a/tools/ci.py +++ b/tools/ci.py @@ -13,7 +13,6 @@ import sys import time from typing import TYPE_CHECKING, Any -import requests from ptscripts import Context, command_group import tools.utils From b92c87130749dd0e6c484ccf894dc5ef9ccab1b4 Mon Sep 17 00:00:00 2001 From: cmcmarrow Date: Thu, 29 Jun 2023 18:38:01 -0500 Subject: [PATCH 27/57] unflip no-fast --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 361076e0e17..0dc0f119e31 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -605,7 +605,7 @@ def pytest_runtest_setup(item): "Slow tests are disabled, pass '--run-slow' to enable them.", _use_item_location=True, ) - if test_group_count == 0 and item.config.getoption("--no-fast-tests"): + if test_group_count == 0 and not item.config.getoption("--no-fast-tests"): raise pytest.skip.Exception( "Fast tests have been disabled by '--no-fast-tests'.", _use_item_location=True, From f47f8c8c4e7ba75ff022ec13a0ed70ccbafc3bcd Mon Sep 17 00:00:00 2001 From: cmcmarrow Date: Thu, 29 Jun 2023 18:56:31 -0500 Subject: [PATCH 28/57] flip default on --no-fast --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 0dc0f119e31..361076e0e17 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -605,7 +605,7 @@ def pytest_runtest_setup(item): "Slow tests are disabled, pass '--run-slow' to enable them.", _use_item_location=True, ) - if test_group_count == 0 and not item.config.getoption("--no-fast-tests"): + if test_group_count == 0 and item.config.getoption("--no-fast-tests"): raise pytest.skip.Exception( "Fast tests have been disabled by '--no-fast-tests'.", _use_item_location=True, From d4113e2031d957b576ad23a539c5df03ef334fea Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Fri, 30 Jun 2023 16:42:48 -0600 Subject: [PATCH 29/57] Updated per reviewer comments --- salt/__init__.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/salt/__init__.py b/salt/__init__.py index f8b426a7f84..7542ef8e263 100644 --- a/salt/__init__.py +++ b/salt/__init__.py @@ -38,10 +38,6 @@ class TornadoImporter: sys.modules[spec.name] = mod return mod - def exec_module(self, module): - log.error("exec_module %r", module) - return None - class NaclImporter: """ @@ -81,10 +77,6 @@ class NaclImporter: sys.modules[spec.name] = mod return mod - def exec_module(self, module): - log.error("exec_module %r", module) - return None - # Try our importer first sys.meta_path = [TornadoImporter(), NaclImporter()] + sys.meta_path From e092637f1aaeff76004924493382715e1a605684 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Wed, 5 Jul 2023 09:51:24 -0600 Subject: [PATCH 30/57] Reverted reviewers suggestion, caused issues with missing variables in tests --- tests/pytests/unit/utils/test_nacl.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/pytests/unit/utils/test_nacl.py b/tests/pytests/unit/utils/test_nacl.py index 8e48a8a1316..c23f6bc0846 100644 --- a/tests/pytests/unit/utils/test_nacl.py +++ b/tests/pytests/unit/utils/test_nacl.py @@ -9,7 +9,17 @@ import salt.modules.config as config import salt.utils.files from tests.support.mock import patch -pytest.importorskip("libnacl") +try: + import salt.utils.nacl as nacl + + HAS_PYNACL = nacl.check_requirements +except (ImportError, OSError, AttributeError): + HAS_PYNACL = False + + +@pytest.mark.skipif( + not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" +) @pytest.fixture def configure_loader_modules(): return { From ca16a86e9573a36077927862115903a1548583be Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Fri, 14 Jul 2023 08:55:00 -0600 Subject: [PATCH 31/57] Reverting review suggestions --- tests/pytests/integration/runners/test_nacl.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/pytests/integration/runners/test_nacl.py b/tests/pytests/integration/runners/test_nacl.py index 3dc9266f0bb..5e4688a79c8 100644 --- a/tests/pytests/integration/runners/test_nacl.py +++ b/tests/pytests/integration/runners/test_nacl.py @@ -8,13 +8,21 @@ import salt.config import salt.utils.stringutils from tests.support.mock import patch -pytest.importorskip("libnacl") - pytestmark = [ pytest.mark.windows_whitelisted, ] +try: + import salt.runners.nacl as nacl + HAS_PYNACL = True +except (ImportError, OSError, AttributeError): + HAS_PYNACL = False + + +@pytest.mark.skipif( + not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" +) @pytest.fixture(scope="module") def minion_opts(): return salt.config.minion_config(None) From f97d354185c4afc6501e02831b94bf3889dec711 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Fri, 14 Jul 2023 16:44:06 -0600 Subject: [PATCH 32/57] Restore exec_module to TornadoImporter and NaclImporter --- salt/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/salt/__init__.py b/salt/__init__.py index 7542ef8e263..edf7ff172f7 100644 --- a/salt/__init__.py +++ b/salt/__init__.py @@ -38,6 +38,9 @@ class TornadoImporter: sys.modules[spec.name] = mod return mod + def exec_module(self, module): + return None + class NaclImporter: """ @@ -77,6 +80,9 @@ class NaclImporter: sys.modules[spec.name] = mod return mod + def exec_module(self, module): + return None + # Try our importer first sys.meta_path = [TornadoImporter(), NaclImporter()] + sys.meta_path From 2d2b7208711c2dff53231eb3615d46e77bd037df Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Mon, 17 Jul 2023 11:03:59 -0600 Subject: [PATCH 33/57] Removed debug logging and updated requirements per reviewer suggestions --- requirements/static/ci/common.in | 7 ++----- requirements/static/ci/py3.10/cloud.txt | 4 ++-- requirements/static/ci/py3.10/darwin.txt | 4 ++-- requirements/static/ci/py3.10/freebsd.txt | 4 ++-- requirements/static/ci/py3.10/lint.txt | 4 ++-- requirements/static/ci/py3.10/linux.txt | 4 ++-- requirements/static/ci/py3.10/windows.txt | 4 ++-- requirements/static/ci/py3.7/cloud.txt | 6 +++--- requirements/static/ci/py3.7/freebsd.txt | 6 +++--- requirements/static/ci/py3.7/lint.txt | 6 +++--- requirements/static/ci/py3.7/linux.txt | 6 +++--- requirements/static/ci/py3.7/windows.txt | 6 +++--- requirements/static/ci/py3.8/cloud.txt | 5 ++--- requirements/static/ci/py3.8/freebsd.txt | 5 ++--- requirements/static/ci/py3.8/lint.txt | 5 ++--- requirements/static/ci/py3.8/linux.txt | 5 ++--- requirements/static/ci/py3.8/windows.txt | 5 ++--- requirements/static/ci/py3.9/cloud.txt | 4 ++-- requirements/static/ci/py3.9/darwin.txt | 4 ++-- requirements/static/ci/py3.9/freebsd.txt | 4 ++-- requirements/static/ci/py3.9/lint.txt | 4 ++-- requirements/static/ci/py3.9/linux.txt | 4 ++-- requirements/static/ci/py3.9/windows.txt | 4 ++-- salt/__init__.py | 3 --- 24 files changed, 51 insertions(+), 62 deletions(-) diff --git a/requirements/static/ci/common.in b/requirements/static/ci/common.in index ba08f698854..4e55fb95f10 100644 --- a/requirements/static/ci/common.in +++ b/requirements/static/ci/common.in @@ -8,8 +8,7 @@ boto3>=1.17.67; python_version >= '3.6' boto>=2.46.0 cassandra-driver>=2.0 certifi>=2022.12.07 -cffi>=1.12.2, <= 1.14.6; python_version < '3.7' -cffi>=1.15.1; python_version > '3.7' +cffi>=1.15.1 cherrypy>=17.4.1 clustershell croniter>=0.3.0,!=0.3.22"; sys_platform != 'win32' @@ -31,9 +30,7 @@ moto>=2.0.0 ; python_version >= '3.6' napalm; sys_platform != 'win32' and python_version > '3.6' and python_version < '3.10' paramiko>=2.10.1; sys_platform != 'win32' and sys_platform != 'darwin' passlib[bcrypt]>=1.7.4 -pynacl==1.3.0; python_version <= '3.7' -pynacl==1.4.0; python_version == '3.8' -pynacl>=1.5.0; python_version >= '3.9' +pynacl>=1.5.0 pycparser>=2.21; python_version >= '3.9' pyinotify>=0.9.6; sys_platform != 'win32' and sys_platform != 'darwin' and platform_system != "openbsd" python-etcd>0.4.2 diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index 1fee2a7de6a..797e0030942 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -667,7 +667,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 adal -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index 034d8bcdd4d..5bf23112ab6 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -668,7 +668,7 @@ pygit2==1.9.1 ; python_version >= "3.7" # via -r requirements/static/ci/darwin.in pyjwt==2.4.0 # via adal -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 600c4657380..009befe86ff 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -356,7 +356,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -667,7 +667,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 adal -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index 2f0f5367e7e..a724c32d3c9 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -362,7 +362,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -673,7 +673,7 @@ pylint==2.4.4 # saltpylint pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index 42b2e9ed7bb..15892aa82db 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -370,7 +370,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -687,7 +687,7 @@ pyjwt==2.4.0 # twilio pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index 654f358af88..15fd9ed41b1 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -42,7 +42,7 @@ certifi==2023.07.22 # -r requirements/windows.txt # kubernetes # requests -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # -r requirements/windows.txt @@ -238,7 +238,7 @@ pymssql==2.2.7 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt index 33547d20175..600b0bd5392 100644 --- a/requirements/static/ci/py3.7/cloud.txt +++ b/requirements/static/ci/py3.7/cloud.txt @@ -360,8 +360,9 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 # via + # -r requirements/static/ci/common.in # azure-datalake-store # bcrypt # cryptography @@ -708,7 +709,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 adal -pynacl==1.3.0 ; python_version <= "3.7" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko @@ -872,7 +873,6 @@ six==1.16.0 # ncclient # paramiko # profitbricks - # pynacl # pypsexec # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 8b0fa6828af..5cbcb1ec49b 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -358,8 +358,9 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 # via + # -r requirements/static/ci/common.in # azure-datalake-store # bcrypt # cryptography @@ -702,7 +703,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 adal -pynacl==1.3.0 ; python_version <= "3.7" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko @@ -854,7 +855,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-dateutil # pyvmomi # responses diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 838d6592ae5..2c1d983fa11 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -366,8 +366,9 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 # via + # -r requirements/static/ci/common.in # azure-datalake-store # bcrypt # cryptography @@ -715,7 +716,7 @@ pylint==2.4.4 # saltpylint pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.3.0 ; python_version <= "3.7" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko @@ -844,7 +845,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-consul # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index ec04e48a41a..1211423a9e8 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -372,8 +372,9 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.14.6 +cffi==1.15.1 # via + # -r requirements/static/ci/common.in # azure-datalake-store # bcrypt # cryptography @@ -722,7 +723,7 @@ pyjwt==2.4.0 # twilio pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.3.0 ; python_version <= "3.7" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko @@ -893,7 +894,6 @@ six==1.16.0 # more-itertools # ncclient # paramiko - # pynacl # python-consul # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index f0fae401318..98dee3392b9 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -48,8 +48,9 @@ certifi==2023.07.22 # -r requirements/windows.txt # kubernetes # requests -cffi==1.14.6 +cffi==1.15.1 # via + # -r requirements/static/ci/common.in # -r requirements/windows.txt # clr-loader # cryptography @@ -250,7 +251,7 @@ pymssql==2.2.1 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt -pynacl==1.3.0 ; python_version <= "3.7" +pynacl==1.5.0 # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via @@ -378,7 +379,6 @@ six==1.15.0 # jsonschema # kubernetes # mock - # pynacl # python-dateutil # pyvmomi # pywinrm diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index 83db00c3dc0..9a9be0b4f18 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -698,7 +698,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 adal -pynacl==1.4.0 ; python_version == "3.8" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko @@ -862,7 +862,6 @@ six==1.16.0 # ncclient # paramiko # profitbricks - # pynacl # pypsexec # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index e0c84876c57..4af8390b311 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -356,7 +356,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -693,7 +693,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 adal -pynacl==1.4.0 ; python_version == "3.8" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko @@ -845,7 +845,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-dateutil # pyvmomi # responses diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index cb505238dd9..7f356487283 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -364,7 +364,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -707,7 +707,7 @@ pylint==2.4.4 # saltpylint pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.4.0 ; python_version == "3.8" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko @@ -836,7 +836,6 @@ six==1.16.0 # msrestazure # ncclient # paramiko - # pynacl # python-consul # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index 8c068b8ee1e..981576f2e0e 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -370,7 +370,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -713,7 +713,7 @@ pyjwt==2.4.0 # twilio pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.4.0 ; python_version == "3.8" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko @@ -882,7 +882,6 @@ six==1.16.0 # more-itertools # ncclient # paramiko - # pynacl # python-consul # python-dateutil # pyvmomi diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index 8206b905138..4bc662a75af 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -44,7 +44,7 @@ certifi==2023.07.22 # -r requirements/windows.txt # kubernetes # requests -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # -r requirements/windows.txt @@ -239,7 +239,7 @@ pymssql==2.2.1 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt -pynacl==1.4.0 ; python_version == "3.8" +pynacl==1.5.0 # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via @@ -367,7 +367,6 @@ six==1.15.0 # jsonschema # kubernetes # mock - # pynacl # python-dateutil # pyvmomi # pywinrm diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index 89c23c15d59..c5ea66d3980 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -701,7 +701,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 adal -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index 609e1623e07..c088cf25eb0 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -358,7 +358,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -697,7 +697,7 @@ pygit2==1.9.1 ; python_version >= "3.7" # via -r requirements/static/ci/darwin.in pyjwt==2.4.0 # via adal -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index 6c7c62d8a65..f10ea6a528d 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -356,7 +356,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -696,7 +696,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 adal -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 6b0791b6efc..26e10d45694 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -362,7 +362,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -708,7 +708,7 @@ pylint==2.4.4 # saltpylint pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index f46c58999e3..8373105cef7 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -372,7 +372,7 @@ certifi==2023.07.22 # requests certvalidator==0.11.1 # via vcert -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # azure-datalake-store @@ -718,7 +718,7 @@ pyjwt==2.4.0 # twilio pymysql==1.0.2 ; python_version > "3.5" # via -r requirements/static/ci/linux.in -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via # -r requirements/static/ci/common.in # paramiko diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index 38cfc73db51..7874d241d12 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -44,7 +44,7 @@ certifi==2023.07.22 # -r requirements/windows.txt # kubernetes # requests -cffi==1.15.1 ; python_version > "3.7" +cffi==1.15.1 # via # -r requirements/static/ci/common.in # -r requirements/windows.txt @@ -240,7 +240,7 @@ pymssql==2.2.1 # via -r requirements/windows.txt pymysql==1.0.2 # via -r requirements/windows.txt -pynacl==1.5.0 ; python_version >= "3.9" +pynacl==1.5.0 # via -r requirements/static/ci/common.in pyopenssl==23.2.0 # via diff --git a/salt/__init__.py b/salt/__init__.py index edf7ff172f7..f75da5eb607 100644 --- a/salt/__init__.py +++ b/salt/__init__.py @@ -3,13 +3,10 @@ Salt package """ import importlib -import logging import os import sys import warnings -log = logging.getLogger() - if sys.version_info < (3,): sys.stderr.write( "\n\nAfter the Sodium release, 3001, Salt no longer supports Python 2. Exiting.\n\n" From af8d19061afb19da2f3e889e1278a7ee63035f0d Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Mon, 17 Jul 2023 17:50:55 -0600 Subject: [PATCH 34/57] Updated test to use importorskip, downgrade pyyaml to 5.3.1 to work around cython 3.0 issues --- changelog/{64372.fixed.md => 64372.changed.md} | 0 requirements/base.txt | 1 + requirements/static/ci/py3.10/cloud.txt | 2 ++ requirements/static/ci/py3.10/darwin.txt | 2 ++ requirements/static/ci/py3.10/docs.txt | 4 ++++ requirements/static/ci/py3.10/freebsd.txt | 2 ++ requirements/static/ci/py3.10/lint.txt | 2 ++ requirements/static/ci/py3.10/linux.txt | 2 ++ .../static/ci/py3.10/pkgtests-windows.txt | 2 ++ requirements/static/ci/py3.10/pkgtests.txt | 2 ++ requirements/static/ci/py3.10/windows.txt | 2 ++ requirements/static/ci/py3.7/cloud.txt | 2 ++ requirements/static/ci/py3.7/docs.txt | 4 ++++ requirements/static/ci/py3.7/freebsd.txt | 2 ++ requirements/static/ci/py3.7/lint.txt | 2 ++ requirements/static/ci/py3.7/linux.txt | 2 ++ requirements/static/ci/py3.7/windows.txt | 2 ++ requirements/static/ci/py3.8/cloud.txt | 2 ++ requirements/static/ci/py3.8/docs.txt | 4 ++++ requirements/static/ci/py3.8/freebsd.txt | 2 ++ requirements/static/ci/py3.8/lint.txt | 2 ++ requirements/static/ci/py3.8/linux.txt | 2 ++ requirements/static/ci/py3.8/windows.txt | 2 ++ requirements/static/ci/py3.9/cloud.txt | 2 ++ requirements/static/ci/py3.9/darwin.txt | 2 ++ requirements/static/ci/py3.9/docs.txt | 4 ++++ requirements/static/ci/py3.9/freebsd.txt | 2 ++ requirements/static/ci/py3.9/lint.txt | 2 ++ requirements/static/ci/py3.9/linux.txt | 2 ++ requirements/static/ci/py3.9/windows.txt | 2 ++ requirements/static/pkg/py3.10/darwin.txt | 2 ++ requirements/static/pkg/py3.10/freebsd.txt | 2 ++ requirements/static/pkg/py3.10/linux.txt | 2 ++ requirements/static/pkg/py3.10/windows.txt | 2 ++ requirements/static/pkg/py3.7/freebsd.txt | 2 ++ requirements/static/pkg/py3.7/linux.txt | 2 ++ requirements/static/pkg/py3.7/windows.txt | 2 ++ requirements/static/pkg/py3.8/freebsd.txt | 2 ++ requirements/static/pkg/py3.8/linux.txt | 2 ++ requirements/static/pkg/py3.8/windows.txt | 2 ++ requirements/static/pkg/py3.9/darwin.txt | 2 ++ requirements/static/pkg/py3.9/freebsd.txt | 2 ++ requirements/static/pkg/py3.9/linux.txt | 2 ++ requirements/static/pkg/py3.9/windows.txt | 2 ++ salt/utils/nacl.py | 5 ----- tests/pytests/integration/runners/test_nacl.py | 15 +++++---------- tests/pytests/unit/modules/test_nacl.py | 11 +++-------- tests/pytests/unit/utils/test_nacl.py | 11 +++-------- 48 files changed, 104 insertions(+), 31 deletions(-) rename changelog/{64372.fixed.md => 64372.changed.md} (100%) diff --git a/changelog/64372.fixed.md b/changelog/64372.changed.md similarity index 100% rename from changelog/64372.fixed.md rename to changelog/64372.changed.md diff --git a/requirements/base.txt b/requirements/base.txt index c19d8804a2b..b3a8e7947ca 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,3 +1,4 @@ +cython Jinja2 jmespath msgpack>=0.5,!=0.5.5 diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index 797e0030942..67741070f20 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -400,6 +400,8 @@ cryptography==41.0.2 # requests-ntlm # smbprotocol # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index 5bf23112ab6..d902501a9b4 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -398,6 +398,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.10/docs.txt b/requirements/static/ci/py3.10/docs.txt index 588b8682f56..c360b5bd2f9 100644 --- a/requirements/static/ci/py3.10/docs.txt +++ b/requirements/static/ci/py3.10/docs.txt @@ -28,6 +28,10 @@ contextvars==2.4 # via # -c requirements/static/ci/py3.10/linux.txt # -r requirements/base.txt +cython==0.29.36 + # via + # -c requirements/static/ci/py3.10/linux.txt + # -r requirements/base.txt distro==1.5.0 # via # -c requirements/static/ci/py3.10/linux.txt diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 009befe86ff..7d2e2a17ecc 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -395,6 +395,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index a724c32d3c9..f51f38b26dc 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -403,6 +403,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index 15892aa82db..89f8d79aa9a 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -411,6 +411,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.10/pkgtests-windows.txt b/requirements/static/ci/py3.10/pkgtests-windows.txt index de7ee93e182..541057a6988 100644 --- a/requirements/static/ci/py3.10/pkgtests-windows.txt +++ b/requirements/static/ci/py3.10/pkgtests-windows.txt @@ -29,6 +29,8 @@ colorama==0.4.6 # via pytest contextvars==2.4 # via -r requirements/base.txt +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.6 # via virtualenv distro==1.8.0 diff --git a/requirements/static/ci/py3.10/pkgtests.txt b/requirements/static/ci/py3.10/pkgtests.txt index 127e64a8857..13ea9ee51eb 100644 --- a/requirements/static/ci/py3.10/pkgtests.txt +++ b/requirements/static/ci/py3.10/pkgtests.txt @@ -23,6 +23,8 @@ cherrypy==18.8.0 # via -r requirements/static/ci/pkgtests.in contextvars==2.4 # via -r requirements/base.txt +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.6 # via virtualenv distro==1.8.0 diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index 15fd9ed41b1..ddaec5d1b98 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -79,6 +79,8 @@ cryptography==41.0.2 # moto # pyopenssl # requests-ntlm +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.6 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt index 600b0bd5392..d1eea4d5b77 100644 --- a/requirements/static/ci/py3.7/cloud.txt +++ b/requirements/static/ci/py3.7/cloud.txt @@ -407,6 +407,8 @@ cryptography==41.0.2 # requests-ntlm # smbprotocol # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.3 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.7/docs.txt b/requirements/static/ci/py3.7/docs.txt index 31209a994b2..32a688bfd1f 100644 --- a/requirements/static/ci/py3.7/docs.txt +++ b/requirements/static/ci/py3.7/docs.txt @@ -28,6 +28,10 @@ contextvars==2.4 # via # -c requirements/static/ci/py3.7/linux.txt # -r requirements/base.txt +cython==0.29.36 + # via + # -c requirements/static/ci/py3.7/linux.txt + # -r requirements/base.txt distro==1.5.0 # via # -c requirements/static/ci/py3.7/linux.txt diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 5cbcb1ec49b..9f451efe86e 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -402,6 +402,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 2c1d983fa11..63bbc5f0d39 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -412,6 +412,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index 1211423a9e8..8157c49929b 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -418,6 +418,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index 98dee3392b9..a9dde8fb4d9 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -85,6 +85,8 @@ cryptography==41.0.2 # moto # pyopenssl # requests-ntlm +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index 9a9be0b4f18..8c2b8bee980 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -405,6 +405,8 @@ cryptography==41.0.2 # requests-ntlm # smbprotocol # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.3 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.8/docs.txt b/requirements/static/ci/py3.8/docs.txt index da96a0c3bfb..f0a237306e7 100644 --- a/requirements/static/ci/py3.8/docs.txt +++ b/requirements/static/ci/py3.8/docs.txt @@ -28,6 +28,10 @@ contextvars==2.4 # via # -c requirements/static/ci/py3.8/linux.txt # -r requirements/base.txt +cython==0.29.36 + # via + # -c requirements/static/ci/py3.8/linux.txt + # -r requirements/base.txt distro==1.5.0 # via # -c requirements/static/ci/py3.8/linux.txt diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index 4af8390b311..595091dc02f 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -400,6 +400,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index 7f356487283..9467bc6c7e3 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -410,6 +410,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index 981576f2e0e..e1b6fba1e7b 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -416,6 +416,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index 4bc662a75af..33c410621c0 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -81,6 +81,8 @@ cryptography==41.0.2 # moto # pyopenssl # requests-ntlm +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index c5ea66d3980..6e40a4f59e0 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -405,6 +405,8 @@ cryptography==41.0.2 # requests-ntlm # smbprotocol # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.3 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index c088cf25eb0..51ade7faa5a 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -403,6 +403,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.9/docs.txt b/requirements/static/ci/py3.9/docs.txt index 772a37c357a..2fe7dc49d12 100644 --- a/requirements/static/ci/py3.9/docs.txt +++ b/requirements/static/ci/py3.9/docs.txt @@ -28,6 +28,10 @@ contextvars==2.4 # via # -c requirements/static/ci/py3.9/linux.txt # -r requirements/base.txt +cython==0.29.36 + # via + # -c requirements/static/ci/py3.9/linux.txt + # -r requirements/base.txt distro==1.5.0 # via # -c requirements/static/ci/py3.9/linux.txt diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index f10ea6a528d..f60d47923a9 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -400,6 +400,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 26e10d45694..c2fb489ded4 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -408,6 +408,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index 8373105cef7..b3d7afda296 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -418,6 +418,8 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index 7874d241d12..989001c9b85 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -81,6 +81,8 @@ cryptography==41.0.2 # moto # pyopenssl # requests-ntlm +cython==0.29.36 + # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/pkg/py3.10/darwin.txt b/requirements/static/pkg/py3.10/darwin.txt index e2667937927..6608855910e 100644 --- a/requirements/static/pkg/py3.10/darwin.txt +++ b/requirements/static/pkg/py3.10/darwin.txt @@ -22,6 +22,8 @@ cryptography==41.0.2 # via # -r requirements/darwin.txt # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.5 diff --git a/requirements/static/pkg/py3.10/freebsd.txt b/requirements/static/pkg/py3.10/freebsd.txt index 8d2fe56ad5a..f1e1b2379f4 100644 --- a/requirements/static/pkg/py3.10/freebsd.txt +++ b/requirements/static/pkg/py3.10/freebsd.txt @@ -18,6 +18,8 @@ contextvars==2.4 # via -r requirements/base.txt cryptography==41.0.2 # via pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.10/linux.txt b/requirements/static/pkg/py3.10/linux.txt index 2219e99e56a..8d5e005eadb 100644 --- a/requirements/static/pkg/py3.10/linux.txt +++ b/requirements/static/pkg/py3.10/linux.txt @@ -20,6 +20,8 @@ cryptography==41.0.2 # via # -r requirements/static/pkg/linux.in # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt idna==2.8 diff --git a/requirements/static/pkg/py3.10/windows.txt b/requirements/static/pkg/py3.10/windows.txt index 889f1288b18..f12de31741d 100644 --- a/requirements/static/pkg/py3.10/windows.txt +++ b/requirements/static/pkg/py3.10/windows.txt @@ -27,6 +27,8 @@ cryptography==41.0.2 # via # -r requirements/windows.txt # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.7 diff --git a/requirements/static/pkg/py3.7/freebsd.txt b/requirements/static/pkg/py3.7/freebsd.txt index af258097ffd..5cee85df464 100644 --- a/requirements/static/pkg/py3.7/freebsd.txt +++ b/requirements/static/pkg/py3.7/freebsd.txt @@ -18,6 +18,8 @@ contextvars==2.4 # via -r requirements/base.txt cryptography==41.0.2 # via pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.7/linux.txt b/requirements/static/pkg/py3.7/linux.txt index 376d4300a45..b4910c94b06 100644 --- a/requirements/static/pkg/py3.7/linux.txt +++ b/requirements/static/pkg/py3.7/linux.txt @@ -20,6 +20,8 @@ cryptography==41.0.2 # via # -r requirements/static/pkg/linux.in # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt idna==2.8 diff --git a/requirements/static/pkg/py3.7/windows.txt b/requirements/static/pkg/py3.7/windows.txt index 9b12b209653..db4ff2ceea7 100644 --- a/requirements/static/pkg/py3.7/windows.txt +++ b/requirements/static/pkg/py3.7/windows.txt @@ -27,6 +27,8 @@ cryptography==41.0.2 # via # -r requirements/windows.txt # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.7 diff --git a/requirements/static/pkg/py3.8/freebsd.txt b/requirements/static/pkg/py3.8/freebsd.txt index d95e3798e96..ba35c0cc6ba 100644 --- a/requirements/static/pkg/py3.8/freebsd.txt +++ b/requirements/static/pkg/py3.8/freebsd.txt @@ -18,6 +18,8 @@ contextvars==2.4 # via -r requirements/base.txt cryptography==41.0.2 # via pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.8/linux.txt b/requirements/static/pkg/py3.8/linux.txt index 59c1f49d169..8d23b1ec139 100644 --- a/requirements/static/pkg/py3.8/linux.txt +++ b/requirements/static/pkg/py3.8/linux.txt @@ -20,6 +20,8 @@ cryptography==41.0.2 # via # -r requirements/static/pkg/linux.in # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt idna==2.8 diff --git a/requirements/static/pkg/py3.8/windows.txt b/requirements/static/pkg/py3.8/windows.txt index 96d4e217b1a..f11a6c3bac2 100644 --- a/requirements/static/pkg/py3.8/windows.txt +++ b/requirements/static/pkg/py3.8/windows.txt @@ -27,6 +27,8 @@ cryptography==41.0.2 # via # -r requirements/windows.txt # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.7 diff --git a/requirements/static/pkg/py3.9/darwin.txt b/requirements/static/pkg/py3.9/darwin.txt index 89449fc9055..4469fb91751 100644 --- a/requirements/static/pkg/py3.9/darwin.txt +++ b/requirements/static/pkg/py3.9/darwin.txt @@ -22,6 +22,8 @@ cryptography==41.0.2 # via # -r requirements/darwin.txt # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.5 diff --git a/requirements/static/pkg/py3.9/freebsd.txt b/requirements/static/pkg/py3.9/freebsd.txt index 739271e590e..cb519a46993 100644 --- a/requirements/static/pkg/py3.9/freebsd.txt +++ b/requirements/static/pkg/py3.9/freebsd.txt @@ -18,6 +18,8 @@ contextvars==2.4 # via -r requirements/base.txt cryptography==41.0.2 # via pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.9/linux.txt b/requirements/static/pkg/py3.9/linux.txt index 6c5fed38051..5be38437e59 100644 --- a/requirements/static/pkg/py3.9/linux.txt +++ b/requirements/static/pkg/py3.9/linux.txt @@ -20,6 +20,8 @@ cryptography==41.0.2 # via # -r requirements/static/pkg/linux.in # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt idna==2.8 diff --git a/requirements/static/pkg/py3.9/windows.txt b/requirements/static/pkg/py3.9/windows.txt index 42ca414ea99..f21f6fc1124 100644 --- a/requirements/static/pkg/py3.9/windows.txt +++ b/requirements/static/pkg/py3.9/windows.txt @@ -27,6 +27,8 @@ cryptography==41.0.2 # via # -r requirements/windows.txt # pyopenssl +cython==0.29.36 + # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.7 diff --git a/salt/utils/nacl.py b/salt/utils/nacl.py index 20239ff35f7..b04904c2e14 100644 --- a/salt/utils/nacl.py +++ b/salt/utils/nacl.py @@ -2,9 +2,7 @@ Common code shared between the nacl module and runner. """ - import base64 -import logging import os import salt.syspaths @@ -15,9 +13,6 @@ import salt.utils.versions import salt.utils.win_dacl import salt.utils.win_functions -log = logging.getLogger(__name__) - - REQ_ERROR = None try: import nacl.public diff --git a/tests/pytests/integration/runners/test_nacl.py b/tests/pytests/integration/runners/test_nacl.py index 5e4688a79c8..dbdaf9db9ef 100644 --- a/tests/pytests/integration/runners/test_nacl.py +++ b/tests/pytests/integration/runners/test_nacl.py @@ -8,21 +8,16 @@ import salt.config import salt.utils.stringutils from tests.support.mock import patch +pytest.importorskip("nacl.public") +pytest.importorskip("nacl.secret") + +import salt.runners.nacl as nacl + pytestmark = [ pytest.mark.windows_whitelisted, ] -try: - import salt.runners.nacl as nacl - HAS_PYNACL = True -except (ImportError, OSError, AttributeError): - HAS_PYNACL = False - - -@pytest.mark.skipif( - not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" -) @pytest.fixture(scope="module") def minion_opts(): return salt.config.minion_config(None) diff --git a/tests/pytests/unit/modules/test_nacl.py b/tests/pytests/unit/modules/test_nacl.py index 9e4e4796842..915e2c5e3dd 100644 --- a/tests/pytests/unit/modules/test_nacl.py +++ b/tests/pytests/unit/modules/test_nacl.py @@ -6,17 +6,12 @@ import pytest import salt.utils.stringutils from tests.support.mock import patch -try: - import salt.modules.nacl as nacl +pytest.importorskip("nacl.public") +pytest.importorskip("nacl.secret") - HAS_PYNACL = True -except (ImportError, OSError, AttributeError): - HAS_PYNACL = False +import salt.modules.nacl as nacl -@pytest.mark.skipif( - not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" -) @pytest.fixture def configure_loader_modules(minion_opts): utils = salt.loader.utils(minion_opts) diff --git a/tests/pytests/unit/utils/test_nacl.py b/tests/pytests/unit/utils/test_nacl.py index c23f6bc0846..77f40d6fbf9 100644 --- a/tests/pytests/unit/utils/test_nacl.py +++ b/tests/pytests/unit/utils/test_nacl.py @@ -9,17 +9,12 @@ import salt.modules.config as config import salt.utils.files from tests.support.mock import patch -try: - import salt.utils.nacl as nacl +pytest.importorskip("nacl.public") +pytest.importorskip("nacl.secret") - HAS_PYNACL = nacl.check_requirements -except (ImportError, OSError, AttributeError): - HAS_PYNACL = False +import salt.utils.nacl as nacl -@pytest.mark.skipif( - not HAS_PYNACL, reason="skipping test_nacl, reason=PyNaCl is unavailable" -) @pytest.fixture def configure_loader_modules(): return { From 80785185ac00b9a7e416833d2253cc2b39d87f74 Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Tue, 18 Jul 2023 09:01:17 -0600 Subject: [PATCH 35/57] Remove cython and other pyyaml changes, now pyyaml 6.0.1 fixes cython 3.0 issue --- requirements/base.txt | 1 - requirements/static/ci/py3.10/cloud.txt | 2 -- requirements/static/ci/py3.10/darwin.txt | 2 -- requirements/static/ci/py3.10/docs.txt | 4 ---- requirements/static/ci/py3.10/freebsd.txt | 2 -- requirements/static/ci/py3.10/lint.txt | 2 -- requirements/static/ci/py3.10/linux.txt | 2 -- requirements/static/ci/py3.10/pkgtests-windows.txt | 2 -- requirements/static/ci/py3.10/pkgtests.txt | 2 -- requirements/static/ci/py3.10/windows.txt | 2 -- requirements/static/ci/py3.7/cloud.txt | 2 -- requirements/static/ci/py3.7/docs.txt | 4 ---- requirements/static/ci/py3.7/freebsd.txt | 2 -- requirements/static/ci/py3.7/lint.txt | 2 -- requirements/static/ci/py3.7/linux.txt | 2 -- requirements/static/ci/py3.7/windows.txt | 2 -- requirements/static/ci/py3.8/cloud.txt | 2 -- requirements/static/ci/py3.8/docs.txt | 4 ---- requirements/static/ci/py3.8/freebsd.txt | 2 -- requirements/static/ci/py3.8/lint.txt | 2 -- requirements/static/ci/py3.8/linux.txt | 2 -- requirements/static/ci/py3.8/windows.txt | 2 -- requirements/static/ci/py3.9/cloud.txt | 2 -- requirements/static/ci/py3.9/darwin.txt | 2 -- requirements/static/ci/py3.9/docs.txt | 4 ---- requirements/static/ci/py3.9/freebsd.txt | 2 -- requirements/static/ci/py3.9/lint.txt | 2 -- requirements/static/ci/py3.9/linux.txt | 2 -- requirements/static/ci/py3.9/windows.txt | 2 -- requirements/static/pkg/py3.10/darwin.txt | 2 -- requirements/static/pkg/py3.10/freebsd.txt | 2 -- requirements/static/pkg/py3.10/linux.txt | 2 -- requirements/static/pkg/py3.10/windows.txt | 2 -- requirements/static/pkg/py3.7/freebsd.txt | 2 -- requirements/static/pkg/py3.7/linux.txt | 2 -- requirements/static/pkg/py3.7/windows.txt | 2 -- requirements/static/pkg/py3.8/freebsd.txt | 2 -- requirements/static/pkg/py3.8/linux.txt | 2 -- requirements/static/pkg/py3.8/windows.txt | 2 -- requirements/static/pkg/py3.9/darwin.txt | 2 -- requirements/static/pkg/py3.9/freebsd.txt | 2 -- requirements/static/pkg/py3.9/linux.txt | 2 -- requirements/static/pkg/py3.9/windows.txt | 2 -- 43 files changed, 93 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index b3a8e7947ca..c19d8804a2b 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,3 @@ -cython Jinja2 jmespath msgpack>=0.5,!=0.5.5 diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index 67741070f20..797e0030942 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -400,8 +400,6 @@ cryptography==41.0.2 # requests-ntlm # smbprotocol # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index d902501a9b4..5bf23112ab6 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -398,8 +398,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.10/docs.txt b/requirements/static/ci/py3.10/docs.txt index c360b5bd2f9..588b8682f56 100644 --- a/requirements/static/ci/py3.10/docs.txt +++ b/requirements/static/ci/py3.10/docs.txt @@ -28,10 +28,6 @@ contextvars==2.4 # via # -c requirements/static/ci/py3.10/linux.txt # -r requirements/base.txt -cython==0.29.36 - # via - # -c requirements/static/ci/py3.10/linux.txt - # -r requirements/base.txt distro==1.5.0 # via # -c requirements/static/ci/py3.10/linux.txt diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 7d2e2a17ecc..009befe86ff 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -395,8 +395,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index f51f38b26dc..a724c32d3c9 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -403,8 +403,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index 89f8d79aa9a..15892aa82db 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -411,8 +411,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.10/pkgtests-windows.txt b/requirements/static/ci/py3.10/pkgtests-windows.txt index 541057a6988..de7ee93e182 100644 --- a/requirements/static/ci/py3.10/pkgtests-windows.txt +++ b/requirements/static/ci/py3.10/pkgtests-windows.txt @@ -29,8 +29,6 @@ colorama==0.4.6 # via pytest contextvars==2.4 # via -r requirements/base.txt -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.6 # via virtualenv distro==1.8.0 diff --git a/requirements/static/ci/py3.10/pkgtests.txt b/requirements/static/ci/py3.10/pkgtests.txt index 13ea9ee51eb..127e64a8857 100644 --- a/requirements/static/ci/py3.10/pkgtests.txt +++ b/requirements/static/ci/py3.10/pkgtests.txt @@ -23,8 +23,6 @@ cherrypy==18.8.0 # via -r requirements/static/ci/pkgtests.in contextvars==2.4 # via -r requirements/base.txt -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.6 # via virtualenv distro==1.8.0 diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index ddaec5d1b98..15fd9ed41b1 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -79,8 +79,6 @@ cryptography==41.0.2 # moto # pyopenssl # requests-ntlm -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.6 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt index d1eea4d5b77..600b0bd5392 100644 --- a/requirements/static/ci/py3.7/cloud.txt +++ b/requirements/static/ci/py3.7/cloud.txt @@ -407,8 +407,6 @@ cryptography==41.0.2 # requests-ntlm # smbprotocol # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.3 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.7/docs.txt b/requirements/static/ci/py3.7/docs.txt index 32a688bfd1f..31209a994b2 100644 --- a/requirements/static/ci/py3.7/docs.txt +++ b/requirements/static/ci/py3.7/docs.txt @@ -28,10 +28,6 @@ contextvars==2.4 # via # -c requirements/static/ci/py3.7/linux.txt # -r requirements/base.txt -cython==0.29.36 - # via - # -c requirements/static/ci/py3.7/linux.txt - # -r requirements/base.txt distro==1.5.0 # via # -c requirements/static/ci/py3.7/linux.txt diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 9f451efe86e..5cbcb1ec49b 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -402,8 +402,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 63bbc5f0d39..2c1d983fa11 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -412,8 +412,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index 8157c49929b..1211423a9e8 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -418,8 +418,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index a9dde8fb4d9..98dee3392b9 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -85,8 +85,6 @@ cryptography==41.0.2 # moto # pyopenssl # requests-ntlm -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index 8c2b8bee980..9a9be0b4f18 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -405,8 +405,6 @@ cryptography==41.0.2 # requests-ntlm # smbprotocol # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.3 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.8/docs.txt b/requirements/static/ci/py3.8/docs.txt index f0a237306e7..da96a0c3bfb 100644 --- a/requirements/static/ci/py3.8/docs.txt +++ b/requirements/static/ci/py3.8/docs.txt @@ -28,10 +28,6 @@ contextvars==2.4 # via # -c requirements/static/ci/py3.8/linux.txt # -r requirements/base.txt -cython==0.29.36 - # via - # -c requirements/static/ci/py3.8/linux.txt - # -r requirements/base.txt distro==1.5.0 # via # -c requirements/static/ci/py3.8/linux.txt diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index 595091dc02f..4af8390b311 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -400,8 +400,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index 9467bc6c7e3..7f356487283 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -410,8 +410,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index e1b6fba1e7b..981576f2e0e 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -416,8 +416,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index 33c410621c0..4bc662a75af 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -81,8 +81,6 @@ cryptography==41.0.2 # moto # pyopenssl # requests-ntlm -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index 6e40a4f59e0..c5ea66d3980 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -405,8 +405,6 @@ cryptography==41.0.2 # requests-ntlm # smbprotocol # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.3 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index 51ade7faa5a..c088cf25eb0 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -403,8 +403,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.9/docs.txt b/requirements/static/ci/py3.9/docs.txt index 2fe7dc49d12..772a37c357a 100644 --- a/requirements/static/ci/py3.9/docs.txt +++ b/requirements/static/ci/py3.9/docs.txt @@ -28,10 +28,6 @@ contextvars==2.4 # via # -c requirements/static/ci/py3.9/linux.txt # -r requirements/base.txt -cython==0.29.36 - # via - # -c requirements/static/ci/py3.9/linux.txt - # -r requirements/base.txt distro==1.5.0 # via # -c requirements/static/ci/py3.9/linux.txt diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index f60d47923a9..f10ea6a528d 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -400,8 +400,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index c2fb489ded4..26e10d45694 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -408,8 +408,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.6.0 diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index b3d7afda296..8373105cef7 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -418,8 +418,6 @@ cryptography==41.0.2 # paramiko # pyopenssl # vcert -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index 989001c9b85..7874d241d12 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -81,8 +81,6 @@ cryptography==41.0.2 # moto # pyopenssl # requests-ntlm -cython==0.29.36 - # via -r requirements/base.txt distlib==0.3.2 # via virtualenv distro==1.5.0 diff --git a/requirements/static/pkg/py3.10/darwin.txt b/requirements/static/pkg/py3.10/darwin.txt index 6608855910e..e2667937927 100644 --- a/requirements/static/pkg/py3.10/darwin.txt +++ b/requirements/static/pkg/py3.10/darwin.txt @@ -22,8 +22,6 @@ cryptography==41.0.2 # via # -r requirements/darwin.txt # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.5 diff --git a/requirements/static/pkg/py3.10/freebsd.txt b/requirements/static/pkg/py3.10/freebsd.txt index f1e1b2379f4..8d2fe56ad5a 100644 --- a/requirements/static/pkg/py3.10/freebsd.txt +++ b/requirements/static/pkg/py3.10/freebsd.txt @@ -18,8 +18,6 @@ contextvars==2.4 # via -r requirements/base.txt cryptography==41.0.2 # via pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.10/linux.txt b/requirements/static/pkg/py3.10/linux.txt index 8d5e005eadb..2219e99e56a 100644 --- a/requirements/static/pkg/py3.10/linux.txt +++ b/requirements/static/pkg/py3.10/linux.txt @@ -20,8 +20,6 @@ cryptography==41.0.2 # via # -r requirements/static/pkg/linux.in # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt idna==2.8 diff --git a/requirements/static/pkg/py3.10/windows.txt b/requirements/static/pkg/py3.10/windows.txt index f12de31741d..889f1288b18 100644 --- a/requirements/static/pkg/py3.10/windows.txt +++ b/requirements/static/pkg/py3.10/windows.txt @@ -27,8 +27,6 @@ cryptography==41.0.2 # via # -r requirements/windows.txt # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.7 diff --git a/requirements/static/pkg/py3.7/freebsd.txt b/requirements/static/pkg/py3.7/freebsd.txt index 5cee85df464..af258097ffd 100644 --- a/requirements/static/pkg/py3.7/freebsd.txt +++ b/requirements/static/pkg/py3.7/freebsd.txt @@ -18,8 +18,6 @@ contextvars==2.4 # via -r requirements/base.txt cryptography==41.0.2 # via pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.7/linux.txt b/requirements/static/pkg/py3.7/linux.txt index b4910c94b06..376d4300a45 100644 --- a/requirements/static/pkg/py3.7/linux.txt +++ b/requirements/static/pkg/py3.7/linux.txt @@ -20,8 +20,6 @@ cryptography==41.0.2 # via # -r requirements/static/pkg/linux.in # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt idna==2.8 diff --git a/requirements/static/pkg/py3.7/windows.txt b/requirements/static/pkg/py3.7/windows.txt index db4ff2ceea7..9b12b209653 100644 --- a/requirements/static/pkg/py3.7/windows.txt +++ b/requirements/static/pkg/py3.7/windows.txt @@ -27,8 +27,6 @@ cryptography==41.0.2 # via # -r requirements/windows.txt # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.7 diff --git a/requirements/static/pkg/py3.8/freebsd.txt b/requirements/static/pkg/py3.8/freebsd.txt index ba35c0cc6ba..d95e3798e96 100644 --- a/requirements/static/pkg/py3.8/freebsd.txt +++ b/requirements/static/pkg/py3.8/freebsd.txt @@ -18,8 +18,6 @@ contextvars==2.4 # via -r requirements/base.txt cryptography==41.0.2 # via pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.8/linux.txt b/requirements/static/pkg/py3.8/linux.txt index 8d23b1ec139..59c1f49d169 100644 --- a/requirements/static/pkg/py3.8/linux.txt +++ b/requirements/static/pkg/py3.8/linux.txt @@ -20,8 +20,6 @@ cryptography==41.0.2 # via # -r requirements/static/pkg/linux.in # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt idna==2.8 diff --git a/requirements/static/pkg/py3.8/windows.txt b/requirements/static/pkg/py3.8/windows.txt index f11a6c3bac2..96d4e217b1a 100644 --- a/requirements/static/pkg/py3.8/windows.txt +++ b/requirements/static/pkg/py3.8/windows.txt @@ -27,8 +27,6 @@ cryptography==41.0.2 # via # -r requirements/windows.txt # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.7 diff --git a/requirements/static/pkg/py3.9/darwin.txt b/requirements/static/pkg/py3.9/darwin.txt index 4469fb91751..89449fc9055 100644 --- a/requirements/static/pkg/py3.9/darwin.txt +++ b/requirements/static/pkg/py3.9/darwin.txt @@ -22,8 +22,6 @@ cryptography==41.0.2 # via # -r requirements/darwin.txt # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.5 diff --git a/requirements/static/pkg/py3.9/freebsd.txt b/requirements/static/pkg/py3.9/freebsd.txt index cb519a46993..739271e590e 100644 --- a/requirements/static/pkg/py3.9/freebsd.txt +++ b/requirements/static/pkg/py3.9/freebsd.txt @@ -18,8 +18,6 @@ contextvars==2.4 # via -r requirements/base.txt cryptography==41.0.2 # via pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.9/linux.txt b/requirements/static/pkg/py3.9/linux.txt index 5be38437e59..6c5fed38051 100644 --- a/requirements/static/pkg/py3.9/linux.txt +++ b/requirements/static/pkg/py3.9/linux.txt @@ -20,8 +20,6 @@ cryptography==41.0.2 # via # -r requirements/static/pkg/linux.in # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt idna==2.8 diff --git a/requirements/static/pkg/py3.9/windows.txt b/requirements/static/pkg/py3.9/windows.txt index f21f6fc1124..42ca414ea99 100644 --- a/requirements/static/pkg/py3.9/windows.txt +++ b/requirements/static/pkg/py3.9/windows.txt @@ -27,8 +27,6 @@ cryptography==41.0.2 # via # -r requirements/windows.txt # pyopenssl -cython==0.29.36 - # via -r requirements/base.txt distro==1.5.0 # via -r requirements/base.txt gitdb==4.0.7 From 0519a4cc6b6aac58e5358037ae61436e30b07c17 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Mon, 31 Jul 2023 17:28:07 -0700 Subject: [PATCH 36/57] Reasonable failures when pillars timeout --- salt/channel/client.py | 66 ++++++++++++++--- salt/config/__init__.py | 4 ++ salt/minion.py | 26 +++++-- salt/pillar/__init__.py | 33 +++++++-- .../integration/minion/test_return_retries.py | 70 +++++++++++++++++++ tests/pytests/unit/pillar/test_pillar.py | 18 +++++ 6 files changed, 195 insertions(+), 22 deletions(-) diff --git a/salt/channel/client.py b/salt/channel/client.py index e5b073ccdba..5d07a04ad63 100644 --- a/salt/channel/client.py +++ b/salt/channel/client.py @@ -40,6 +40,9 @@ except ImportError: log = logging.getLogger(__name__) +REQUEST_CHANNEL_TIMEOUT = 60 +REQUEST_CHANNEL_TRIES = 3 + class ReqChannel: """ @@ -121,6 +124,9 @@ class AsyncReqChannel: if io_loop is None: io_loop = salt.ext.tornado.ioloop.IOLoop.current() + timeout = opts.get("request_channel_timeout", REQUEST_CHANNEL_TIMEOUT) + tries = opts.get("request_channel_tries", REQUEST_CHANNEL_TRIES) + crypt = kwargs.get("crypt", "aes") if crypt != "clear": # we don't need to worry about auth as a kwarg, since its a singleton @@ -129,9 +135,17 @@ class AsyncReqChannel: auth = None transport = salt.transport.request_client(opts, io_loop=io_loop) - return cls(opts, transport, auth) + return cls(opts, transport, auth, tries=tries, timeout=timeout) - def __init__(self, opts, transport, auth, **kwargs): + def __init__( + self, + opts, + transport, + auth, + timeout=REQUEST_CHANNEL_TIMEOUT, + tries=REQUEST_CHANNEL_TRIES, + **kwargs + ): self.opts = dict(opts) self.transport = transport self.auth = auth @@ -139,6 +153,8 @@ class AsyncReqChannel: if self.auth: self.master_pubkey_path = os.path.join(self.opts["pki_dir"], self.auth.mpub) self._closing = False + self.timeout = timeout + self.tries = tries @property def crypt(self): @@ -157,28 +173,54 @@ class AsyncReqChannel: "version": 2, } + @salt.ext.tornado.gen.coroutine + def _send_with_retry(self, load, tries, timeout): + _try = 1 + while True: + try: + ret = yield self.transport.send( + load, + timeout=timeout, + ) + break + except Exception as exc: # pylint: disable=broad-except + log.trace("Failed to send msg %r", exc) + if _try >= tries: + raise + else: + _try += 1 + continue + raise salt.ext.tornado.gen.Return(ret) + @salt.ext.tornado.gen.coroutine def crypted_transfer_decode_dictentry( self, load, dictkey=None, - timeout=60, + timeout=None, + tries=None, ): + if timeout is None: + timeout = self.timeout + if tries is None: + tries = self.tries nonce = uuid.uuid4().hex load["nonce"] = nonce if not self.auth.authenticated: yield self.auth.authenticate() - ret = yield self.transport.send( + ret = yield self._send_with_retry( self._package_load(self.auth.crypticle.dumps(load)), - timeout=timeout, + tries, + timeout, ) key = self.auth.get_keys() if "key" not in ret: # Reauth in the case our key is deleted on the master side. yield self.auth.authenticate() - ret = yield self.transport.send( + ret = yield self._send_with_retry( self._package_load(self.auth.crypticle.dumps(load)), - timeout=timeout, + tries, + timeout, ) if HAS_M2: aes = key.private_decrypt(ret["key"], RSA.pkcs1_oaep_padding) @@ -210,7 +252,7 @@ class AsyncReqChannel: return salt.crypt.verify_signature(self.master_pubkey_path, data, sig) @salt.ext.tornado.gen.coroutine - def _crypted_transfer(self, load, timeout=60, raw=False): + def _crypted_transfer(self, load, timeout, raw=False): """ Send a load across the wire, with encryption @@ -257,7 +299,7 @@ class AsyncReqChannel: raise salt.ext.tornado.gen.Return(ret) @salt.ext.tornado.gen.coroutine - def _uncrypted_transfer(self, load, timeout=60): + def _uncrypted_transfer(self, load, timeout): """ Send a load across the wire in cleartext @@ -276,7 +318,7 @@ class AsyncReqChannel: yield self.transport.connect() @salt.ext.tornado.gen.coroutine - def send(self, load, tries=3, timeout=60, raw=False): + def send(self, load, tries=None, timeout=None, raw=False): """ Send a request, return a future which will complete when we send the message @@ -284,6 +326,10 @@ class AsyncReqChannel: :param int tries: The number of times to make before failure :param int timeout: The number of seconds on a response before failing """ + if timeout is None: + timeout = self.timeout + if tries is None: + tries = self.tries _try = 1 while True: try: diff --git a/salt/config/__init__.py b/salt/config/__init__.py index 781c5637409..27b1edcea87 100644 --- a/salt/config/__init__.py +++ b/salt/config/__init__.py @@ -991,6 +991,8 @@ VALID_OPTS = immutabletypes.freeze( "maintenance_interval": int, # Fileserver process restart interval "fileserver_interval": int, + "request_channel_timeout": int, + "request_channel_tries": int, } ) @@ -1052,6 +1054,8 @@ DEFAULT_MINION_OPTS = immutabletypes.freeze( "pillar_cache": False, "pillar_cache_ttl": 3600, "pillar_cache_backend": "disk", + "request_channel_timeout": 30, + "request_channel_tries": 3, "gpg_cache": False, "gpg_cache_ttl": 86400, "gpg_cache_backend": "disk", diff --git a/salt/minion.py b/salt/minion.py index 3a7c26366fc..2ee1387c6ec 100644 --- a/salt/minion.py +++ b/salt/minion.py @@ -1998,7 +1998,20 @@ class Minion(MinionBase): ret["return"] = "ERROR executing '{}': {}".format(function_name, exc) ret["out"] = "nested" ret["retcode"] = salt.defaults.exitcodes.EX_GENERIC + except SaltClientError as exc: + log.error( + "Problem executing '%s': %s", + function_name, + exc, + ) + ret["return"] = "ERROR executing '{}': {}".format(function_name, exc) + ret["out"] = "nested" + ret["retcode"] = salt.defaults.exitcodes.EX_GENERIC except TypeError as exc: + # XXX: This can ba extreemly missleading when something outside of a + # execution module call raises a TypeError. Make this it's own + # type of exception when we start validating state and + # execution argument module inputs. msg = "Passed invalid arguments to {}: {}\n{}".format( function_name, exc, @@ -2696,11 +2709,14 @@ class Minion(MinionBase): notify=data.get("notify", False), ) elif tag.startswith("__master_req_channel_payload"): - yield _minion.req_channel.send( - data, - timeout=_minion._return_retry_timer(), - tries=_minion.opts["return_retry_tries"], - ) + try: + yield _minion.req_channel.send( + data, + timeout=_minion._return_retry_timer(), + tries=_minion.opts["return_retry_tries"], + ) + except salt.exceptions.SaltReqTimeoutError: + log.error("Timeout encountered while sending %r request", data) elif tag.startswith("pillar_refresh"): yield _minion.pillar_refresh( force_refresh=data.get("force_refresh", False), diff --git a/salt/pillar/__init__.py b/salt/pillar/__init__.py index d324fcee192..d047f367fb5 100644 --- a/salt/pillar/__init__.py +++ b/salt/pillar/__init__.py @@ -8,6 +8,7 @@ import fnmatch import logging import os import sys +import time import traceback import salt.channel.client @@ -259,6 +260,7 @@ class AsyncRemotePillar(RemotePillarMixin): if self.ext: load["ext"] = self.ext try: + start = time.monotonic() ret_pillar = yield self.channel.crypted_transfer_decode_dictentry( load, dictkey="pillar", @@ -266,6 +268,10 @@ class AsyncRemotePillar(RemotePillarMixin): except salt.crypt.AuthenticationError as exc: log.error(exc.message) raise SaltClientError("Exception getting pillar.") + except salt.exceptions.SaltReqTimeoutError: + raise SaltClientError( + f"Pillar timed out after {int(time.monotonic() - start)} seconds" + ) except Exception: # pylint: disable=broad-except log.exception("Exception getting pillar:") raise SaltClientError("Exception getting pillar.") @@ -350,10 +356,23 @@ class RemotePillar(RemotePillarMixin): } if self.ext: load["ext"] = self.ext - ret_pillar = self.channel.crypted_transfer_decode_dictentry( - load, - dictkey="pillar", - ) + + try: + start = time.monotonic() + ret_pillar = self.channel.crypted_transfer_decode_dictentry( + load, + dictkey="pillar", + ) + except salt.crypt.AuthenticationError as exc: + log.error(exc.message) + raise SaltClientError("Exception getting pillar.") + except salt.exceptions.SaltReqTimeoutError: + raise SaltClientError( + f"Pillar timed out after {int(time.monotonic() - start)} seconds" + ) + except Exception: # pylint: disable=broad-except + log.exception("Exception getting pillar:") + raise SaltClientError("Exception getting pillar.") if not isinstance(ret_pillar, dict): log.error( @@ -925,7 +944,7 @@ class Pillar: saltenv, sls, _pillar_rend=True, - **defaults + **defaults, ) except Exception as exc: # pylint: disable=broad-except msg = "Rendering SLS '{}' failed, render error:\n{}".format(sls, exc) @@ -1104,7 +1123,7 @@ class Pillar: self.minion_id, pillar, extra_minion_data=self.extra_minion_data, - **val + **val, ) else: ext = self.ext_pillars[key](self.minion_id, pillar, **val) @@ -1114,7 +1133,7 @@ class Pillar: self.minion_id, pillar, *val, - extra_minion_data=self.extra_minion_data + extra_minion_data=self.extra_minion_data, ) else: ext = self.ext_pillars[key](self.minion_id, pillar, *val) diff --git a/tests/pytests/integration/minion/test_return_retries.py b/tests/pytests/integration/minion/test_return_retries.py index a7f5eaeff16..ae421c4b4da 100644 --- a/tests/pytests/integration/minion/test_return_retries.py +++ b/tests/pytests/integration/minion/test_return_retries.py @@ -3,6 +3,8 @@ import time import pytest from saltfactories.utils import random_string +from tests.support.helpers import dedent + @pytest.fixture(scope="function") def salt_minion_retry(salt_master_factory, salt_minion_id): @@ -50,3 +52,71 @@ def test_publish_retry(salt_master, salt_minion_retry, salt_cli, salt_run_cli): assert salt_minion_retry.id in data assert data[salt_minion_retry.id] is True + + +@pytest.mark.slow_test +def test_pillar_timeout(salt_master_factory): + cmd = """ + python -c "import time; time.sleep(4.8); print('{\\"foo\\": \\"bar\\"}');\" + """.strip() + master_overrides = { + "ext_pillar": [ + {"cmd_json": cmd}, + ], + "auto_accept": True, + "worker_threads": 3, + "peer": True, + } + minion_overrides = { + "auth_timeout": 20, + "request_channel_timeout": 5, + "request_channel_tries": 1, + } + sls_name = "issue-50221" + sls_contents = dedent( + """ + custom_test_state: + test.configurable_test_state: + - name: example + - changes: True + - result: True + - comment: "Nothing has acutally been changed" + """ + ) + master = salt_master_factory.salt_master_daemon( + "pillar-timeout-master", + overrides=master_overrides, + ) + minion1 = master.salt_minion_daemon( + random_string("pillar-timeout-1-"), + overrides=minion_overrides, + ) + minion2 = master.salt_minion_daemon( + random_string("pillar-timeout-2-"), + overrides=minion_overrides, + ) + minion3 = master.salt_minion_daemon( + random_string("pillar-timeout-3-"), + overrides=minion_overrides, + ) + minion4 = master.salt_minion_daemon( + random_string("pillar-timeout-4-"), + overrides=minion_overrides, + ) + cli = master.salt_cli() + sls_tempfile = master.state_tree.base.temp_file( + "{}.sls".format(sls_name), sls_contents + ) + with master.started(), minion1.started(), minion2.started(), minion3.started(), minion4.started(), sls_tempfile: + proc = cli.run("state.sls", sls_name, minion_tgt="*") + # At least one minion should have a Pillar timeout + print(proc) + assert proc.returncode == 1 + minion_timed_out = False + # Find the minion that has a Pillar timeout + for key in proc.data: + if isinstance(proc.data[key], str): + if proc.data[key].find("Pillar timed out") != -1: + minion_timed_out = True + break + assert minion_timed_out is True diff --git a/tests/pytests/unit/pillar/test_pillar.py b/tests/pytests/unit/pillar/test_pillar.py index 75603aa0fe4..11eda34318b 100644 --- a/tests/pytests/unit/pillar/test_pillar.py +++ b/tests/pytests/unit/pillar/test_pillar.py @@ -7,6 +7,7 @@ import salt.loader import salt.pillar import salt.utils.cache from salt.utils.odict import OrderedDict +from tests.support.mock import MagicMock @pytest.mark.parametrize( @@ -157,3 +158,20 @@ def test_pillar_get_cache_disk(temp_salt_minion, caplog): in caplog.messages ) assert fresh_pillar == {} + + +def test_remote_pillar_timeout(temp_salt_minion, tmp_path): + opts = temp_salt_minion.config.copy() + opts["master_uri"] = "tcp://127.0.0.1:12323" + grains = salt.loader.grains(opts) + pillar = salt.pillar.RemotePillar( + opts, + grains, + temp_salt_minion.id, + "base", + ) + mock = MagicMock() + mock.side_effect = salt.exceptions.SaltReqTimeoutError() + pillar.channel.crypted_transfer_decode_dictentry = mock + with pytest.raises(salt.exceptions.SaltClientError): + pillar.compile_pillar() From 179583e93fad1fe6c2d83bf3ec60613ac6ebe02f Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Mon, 31 Jul 2023 17:38:45 -0700 Subject: [PATCH 37/57] Reasonable file client failures --- salt/fileclient.py | 66 +++++++++++++++++++++------ tests/pytests/unit/test_fileclient.py | 48 ++++++++++++++++++- 2 files changed, 98 insertions(+), 16 deletions(-) diff --git a/salt/fileclient.py b/salt/fileclient.py index f01a86dd0d4..4335558f754 100644 --- a/salt/fileclient.py +++ b/salt/fileclient.py @@ -9,6 +9,7 @@ import logging import os import shutil import string +import time import urllib.error import urllib.parse @@ -31,7 +32,7 @@ import salt.utils.templates import salt.utils.url import salt.utils.verify import salt.utils.versions -from salt.exceptions import CommandExecutionError, MinionError +from salt.exceptions import CommandExecutionError, MinionError, SaltClientError from salt.ext.tornado.httputil import ( HTTPHeaders, HTTPInputError, @@ -793,7 +794,7 @@ class Client: opts=self.opts, verify_ssl=verify_ssl, header_dict=header_dict, - **get_kwargs + **get_kwargs, ) # 304 Not Modified is returned when If-None-Match header @@ -822,7 +823,7 @@ class Client: "HTTP error {0} reading {1}: {3}".format( exc.code, url, - *http.server.BaseHTTPRequestHandler.responses[exc.code] + *http.server.BaseHTTPRequestHandler.responses[exc.code], ) ) except urllib.error.URLError as exc: @@ -839,7 +840,7 @@ class Client: makedirs=False, saltenv="base", cachedir=None, - **kwargs + **kwargs, ): """ Cache a file then process it as a template @@ -1136,6 +1137,18 @@ class RemoteClient(Client): self.channel = salt.channel.client.ReqChannel.factory(self.opts) return self.channel + def _channel_send(self, load, raw=False): + start = time.monotonic() + try: + return self.channel.send( + load, + raw=raw, + ) + except salt.exceptions.SaltReqTimeoutError: + raise SaltClientError( + f"File client timed out after {int(time.time() - start)}" + ) + def destroy(self): if self._closing: return @@ -1250,7 +1263,10 @@ class RemoteClient(Client): load["loc"] = 0 else: load["loc"] = fn_.tell() - data = self.channel.send(load, raw=True) + data = self._channel_send( + load, + raw=True, + ) # Sometimes the source is local (eg when using # 'salt.fileserver.FSChan'), in which case the keys are # already strings. Sometimes the source is remote, in which @@ -1343,28 +1359,36 @@ class RemoteClient(Client): List the files on the master """ load = {"saltenv": saltenv, "prefix": prefix, "cmd": "_file_list"} - return self.channel.send(load) + return self._channel_send( + load, + ) def file_list_emptydirs(self, saltenv="base", prefix=""): """ List the empty dirs on the master """ load = {"saltenv": saltenv, "prefix": prefix, "cmd": "_file_list_emptydirs"} - return self.channel.send(load) + return self._channel_send( + load, + ) def dir_list(self, saltenv="base", prefix=""): """ List the dirs on the master """ load = {"saltenv": saltenv, "prefix": prefix, "cmd": "_dir_list"} - return self.channel.send(load) + return self._channel_send( + load, + ) def symlink_list(self, saltenv="base", prefix=""): """ List symlinked files and dirs on the master """ load = {"saltenv": saltenv, "prefix": prefix, "cmd": "_symlink_list"} - return self.channel.send(load) + return self._channel_send( + load, + ) def __hash_and_stat_file(self, path, saltenv="base"): """ @@ -1385,7 +1409,9 @@ class RemoteClient(Client): ret["hash_type"] = hash_type return ret load = {"path": path, "saltenv": saltenv, "cmd": "_file_hash"} - return self.channel.send(load) + return self._channel_send( + load, + ) def hash_file(self, path, saltenv="base"): """ @@ -1412,7 +1438,9 @@ class RemoteClient(Client): except Exception: # pylint: disable=broad-except return hash_result, None load = {"path": path, "saltenv": saltenv, "cmd": "_file_find"} - fnd = self.channel.send(load) + fnd = self._channel_send( + load, + ) try: stat_result = fnd.get("stat") except AttributeError: @@ -1424,21 +1452,27 @@ class RemoteClient(Client): Return a list of the files in the file server's specified environment """ load = {"saltenv": saltenv, "cmd": "_file_list"} - return self.channel.send(load) + return self._channel_send( + load, + ) def envs(self): """ Return a list of available environments """ load = {"cmd": "_file_envs"} - return self.channel.send(load) + return self._channel_send( + load, + ) def master_opts(self): """ Return the master opts data """ load = {"cmd": "_master_opts"} - return self.channel.send(load) + return self._channel_send( + load, + ) def master_tops(self): """ @@ -1447,7 +1481,9 @@ class RemoteClient(Client): load = {"cmd": "_master_tops", "id": self.opts["id"], "opts": self.opts} if self.auth: load["tok"] = self.auth.gen_token(b"salt") - return self.channel.send(load) + return self._channel_send( + load, + ) def __enter__(self): return self diff --git a/tests/pytests/unit/test_fileclient.py b/tests/pytests/unit/test_fileclient.py index 20d16baa734..541f4be2675 100644 --- a/tests/pytests/unit/test_fileclient.py +++ b/tests/pytests/unit/test_fileclient.py @@ -1,5 +1,7 @@ +import pytest + import salt.fileclient -from tests.support.mock import patch +from tests.support.mock import Mock, patch class MockReqChannel: @@ -30,6 +32,8 @@ def test_fileclient_context_manager_closes(temp_salt_minion, temp_salt_master): "master_uri": "tcp://127.0.0.1:{}".format( temp_salt_master.config["ret_port"] ), + "request_channel_timeout": 1, + "request_channel_tries": 1, } ) master_uri = "tcp://{master_ip}:{master_port}".format( @@ -46,3 +50,45 @@ def test_fileclient_context_manager_closes(temp_salt_minion, temp_salt_master): assert client._closing assert client.channel.close.called + + +@pytest.mark.slow_test +def test_fileclient_timeout(temp_salt_minion, temp_salt_master): + """ + ensure fileclient channel closes + when used with a context manager + """ + opts = temp_salt_minion.config.copy() + opts.update( + { + "id": "root", + "transport": "zeromq", + "auth_tries": 1, + "auth_timeout": 5, + "master_ip": "127.0.0.1", + "master_port": temp_salt_master.config["ret_port"], + "master_uri": "tcp://127.0.0.1:{}".format( + temp_salt_master.config["ret_port"] + ), + "request_channel_timeout": 1, + "request_channel_tries": 1, + } + ) + master_uri = "tcp://{master_ip}:{master_port}".format( + master_ip="localhost", master_port=opts["master_port"] + ) + + async def mock_auth(): + return True + + def mock_dumps(*args): + return b"meh" + + with salt.fileclient.get_file_client(opts) as client: + # Authenticate must return true + client.auth.authenticate = mock_auth + # Crypticla must return bytes to pass to transport.RequestClient.send + client.auth._crypticle = Mock() + client.auth._crypticle.dumps = mock_dumps + with pytest.raises(salt.exceptions.SaltClientError): + client.file_list() From f7ca58e0afacc6b0d70e84edfc417848568abbe1 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Mon, 31 Jul 2023 18:34:16 -0700 Subject: [PATCH 38/57] Docs and changelogs for timeout handling --- changelog/63824.fixed.md | 1 + changelog/64651.fixed.md | 1 + changelog/64653.fixed.md | 1 + changelog/64729.fixed.md | 1 + doc/ref/configuration/minion.rst | 30 +++++++++++++++++++ .../integration/minion/test_return_retries.py | 5 ++-- 6 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 changelog/63824.fixed.md create mode 100644 changelog/64651.fixed.md create mode 100644 changelog/64653.fixed.md create mode 100644 changelog/64729.fixed.md diff --git a/changelog/63824.fixed.md b/changelog/63824.fixed.md new file mode 100644 index 00000000000..4a9ede961c5 --- /dev/null +++ b/changelog/63824.fixed.md @@ -0,0 +1 @@ +Allow long running pillar and file client requests to finish using request_channel_timeout and request_channel_tries minion config. diff --git a/changelog/64651.fixed.md b/changelog/64651.fixed.md new file mode 100644 index 00000000000..1ecab80c4af --- /dev/null +++ b/changelog/64651.fixed.md @@ -0,0 +1 @@ +Show user friendly message when pillars timeout diff --git a/changelog/64653.fixed.md b/changelog/64653.fixed.md new file mode 100644 index 00000000000..e7cc9d12185 --- /dev/null +++ b/changelog/64653.fixed.md @@ -0,0 +1 @@ +File client timeouts durring jobs show user friendly errors instead of tracbacks diff --git a/changelog/64729.fixed.md b/changelog/64729.fixed.md new file mode 100644 index 00000000000..4dfbc3819dd --- /dev/null +++ b/changelog/64729.fixed.md @@ -0,0 +1 @@ +SaltClientError does not log a traceback on minions, we expect these to happen so a user friendly log is shown. diff --git a/doc/ref/configuration/minion.rst b/doc/ref/configuration/minion.rst index b614376d136..780f36144cc 100644 --- a/doc/ref/configuration/minion.rst +++ b/doc/ref/configuration/minion.rst @@ -1305,6 +1305,36 @@ restart. auth_safemode: False +.. conf_minion:: request_channel_timeout + +``request_channel_timeout`` +--------------------------- + +.. versionadded:: 3006.2 + +Default: ``30`` + +The default timeout timeout for request channel requests. This setting can be used to tune minions to better handle long running pillar and file client requests. + +.. code-block:: yaml + + request_channel_timeout: 30 + +``request_channel_tries`` +------------------------- + +.. versionadded:: 3006.2 + +Default: ``3`` + +The default number of times the minion will try request channel requests. This +setting can be used to tune minions to better handle long running pillar and +file client requests by retrying them after a timeout happens. + +.. code-block:: yaml + + request_channel_tries: 3 + .. conf_minion:: ping_interval ``ping_interval`` diff --git a/tests/pytests/integration/minion/test_return_retries.py b/tests/pytests/integration/minion/test_return_retries.py index ae421c4b4da..25f3aaf97a9 100644 --- a/tests/pytests/integration/minion/test_return_retries.py +++ b/tests/pytests/integration/minion/test_return_retries.py @@ -30,7 +30,7 @@ def salt_minion_retry(salt_master_factory, salt_minion_id): @pytest.mark.slow_test def test_publish_retry(salt_master, salt_minion_retry, salt_cli, salt_run_cli): # run job that takes some time for warmup - rtn = salt_cli.run("test.sleep", "5", "--async", minion_tgt=salt_minion_retry.id) + rtn = salt_cli.run("test.sleep", "4.9", "--async", minion_tgt=salt_minion_retry.id) # obtain JID jid = rtn.stdout.strip().split(" ")[-1] @@ -110,13 +110,12 @@ def test_pillar_timeout(salt_master_factory): with master.started(), minion1.started(), minion2.started(), minion3.started(), minion4.started(), sls_tempfile: proc = cli.run("state.sls", sls_name, minion_tgt="*") # At least one minion should have a Pillar timeout - print(proc) assert proc.returncode == 1 minion_timed_out = False # Find the minion that has a Pillar timeout for key in proc.data: if isinstance(proc.data[key], str): - if proc.data[key].find("Pillar timed out") != -1: + if "Pillar timed out" in proc.data[key]: minion_timed_out = True break assert minion_timed_out is True From 7e373ee40b5d53ed74605e21da07bd113b9cf0f0 Mon Sep 17 00:00:00 2001 From: "Daniel A. Wozniak" Date: Tue, 1 Aug 2023 14:18:29 -0700 Subject: [PATCH 39/57] Test fix up --- .../integration/minion/test_return_retries.py | 10 ++----- tests/pytests/unit/test_fileclient.py | 30 ++++++++----------- 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/tests/pytests/integration/minion/test_return_retries.py b/tests/pytests/integration/minion/test_return_retries.py index 25f3aaf97a9..49517e52d22 100644 --- a/tests/pytests/integration/minion/test_return_retries.py +++ b/tests/pytests/integration/minion/test_return_retries.py @@ -3,8 +3,6 @@ import time import pytest from saltfactories.utils import random_string -from tests.support.helpers import dedent - @pytest.fixture(scope="function") def salt_minion_retry(salt_master_factory, salt_minion_id): @@ -30,7 +28,7 @@ def salt_minion_retry(salt_master_factory, salt_minion_id): @pytest.mark.slow_test def test_publish_retry(salt_master, salt_minion_retry, salt_cli, salt_run_cli): # run job that takes some time for warmup - rtn = salt_cli.run("test.sleep", "4.9", "--async", minion_tgt=salt_minion_retry.id) + rtn = salt_cli.run("test.sleep", "5", "--async", minion_tgt=salt_minion_retry.id) # obtain JID jid = rtn.stdout.strip().split(" ")[-1] @@ -57,7 +55,7 @@ def test_publish_retry(salt_master, salt_minion_retry, salt_cli, salt_run_cli): @pytest.mark.slow_test def test_pillar_timeout(salt_master_factory): cmd = """ - python -c "import time; time.sleep(4.8); print('{\\"foo\\": \\"bar\\"}');\" + python -c "import time; time.sleep(2.5); print('{\\"foo\\": \\"bar\\"}');\" """.strip() master_overrides = { "ext_pillar": [ @@ -73,8 +71,7 @@ def test_pillar_timeout(salt_master_factory): "request_channel_tries": 1, } sls_name = "issue-50221" - sls_contents = dedent( - """ + sls_contents = """ custom_test_state: test.configurable_test_state: - name: example @@ -82,7 +79,6 @@ def test_pillar_timeout(salt_master_factory): - result: True - comment: "Nothing has acutally been changed" """ - ) master = salt_master_factory.salt_master_daemon( "pillar-timeout-master", overrides=master_overrides, diff --git a/tests/pytests/unit/test_fileclient.py b/tests/pytests/unit/test_fileclient.py index 541f4be2675..b34d4391641 100644 --- a/tests/pytests/unit/test_fileclient.py +++ b/tests/pytests/unit/test_fileclient.py @@ -15,36 +15,33 @@ class MockReqChannel: return self -def test_fileclient_context_manager_closes(temp_salt_minion, temp_salt_master): +def test_fileclient_context_manager_closes(minion_opts, master_opts): """ ensure fileclient channel closes when used with a context manager """ - opts = temp_salt_minion.config.copy() - opts.update( + minion_opts.update( { "id": "root", "transport": "zeromq", "auth_tries": 1, "auth_timeout": 5, "master_ip": "127.0.0.1", - "master_port": temp_salt_master.config["ret_port"], - "master_uri": "tcp://127.0.0.1:{}".format( - temp_salt_master.config["ret_port"] - ), + "master_port": master_opts["ret_port"], + "master_uri": "tcp://127.0.0.1:{}".format(master_opts["ret_port"]), "request_channel_timeout": 1, "request_channel_tries": 1, } ) master_uri = "tcp://{master_ip}:{master_port}".format( - master_ip="localhost", master_port=opts["master_port"] + master_ip="localhost", master_port=minion_opts["master_port"] ) mock_reqchannel = MockReqChannel() patch_reqchannel = patch.object( salt.channel.client, "ReqChannel", return_value=mock_reqchannel ) with patch_reqchannel: - with salt.fileclient.get_file_client(opts) as client: + with salt.fileclient.get_file_client(minion_opts) as client: client.master_opts() assert not client._closing @@ -53,29 +50,26 @@ def test_fileclient_context_manager_closes(temp_salt_minion, temp_salt_master): @pytest.mark.slow_test -def test_fileclient_timeout(temp_salt_minion, temp_salt_master): +def test_fileclient_timeout(minion_opts, master_opts): """ ensure fileclient channel closes when used with a context manager """ - opts = temp_salt_minion.config.copy() - opts.update( + minion_opts.update( { "id": "root", "transport": "zeromq", "auth_tries": 1, "auth_timeout": 5, "master_ip": "127.0.0.1", - "master_port": temp_salt_master.config["ret_port"], - "master_uri": "tcp://127.0.0.1:{}".format( - temp_salt_master.config["ret_port"] - ), + "master_port": master_opts["ret_port"], + "master_uri": "tcp://127.0.0.1:{}".format(master_opts["ret_port"]), "request_channel_timeout": 1, "request_channel_tries": 1, } ) master_uri = "tcp://{master_ip}:{master_port}".format( - master_ip="localhost", master_port=opts["master_port"] + master_ip="localhost", master_port=minion_opts["master_port"] ) async def mock_auth(): @@ -84,7 +78,7 @@ def test_fileclient_timeout(temp_salt_minion, temp_salt_master): def mock_dumps(*args): return b"meh" - with salt.fileclient.get_file_client(opts) as client: + with salt.fileclient.get_file_client(minion_opts) as client: # Authenticate must return true client.auth.authenticate = mock_auth # Crypticla must return bytes to pass to transport.RequestClient.send From 78f3b27f1bcb053797bc45bfde6918d0f414e9d2 Mon Sep 17 00:00:00 2001 From: Salt Project Packaging Date: Tue, 25 Jul 2023 20:08:29 +0000 Subject: [PATCH 40/57] Update the bootstrap script to v2023.07.25 (cherry picked from commit 2244d93fb4e8ffe7f76184c3de16f2c3101e7895) --- salt/cloud/deploy/bootstrap-salt.sh | 50 ++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/salt/cloud/deploy/bootstrap-salt.sh b/salt/cloud/deploy/bootstrap-salt.sh index 1cf46c774df..b937fbb7ef7 100644 --- a/salt/cloud/deploy/bootstrap-salt.sh +++ b/salt/cloud/deploy/bootstrap-salt.sh @@ -23,7 +23,7 @@ #====================================================================================================================== set -o nounset # Treat unset variables as an error -__ScriptVersion="2023.06.28" +__ScriptVersion="2023.07.25" __ScriptName="bootstrap-salt.sh" __ScriptFullName="$0" @@ -277,6 +277,8 @@ _MINIMUM_PIP_VERSION="9.0.1" _MINIMUM_SETUPTOOLS_VERSION="9.1" _POST_NEON_PIP_INSTALL_ARGS="--prefix=/usr" _PIP_DOWNLOAD_ARGS="" +_QUICK_START="$BS_FALSE" +_AUTO_ACCEPT_MINION_KEYS="$BS_FALSE" # Defaults for install arguments ITYPE="stable" @@ -395,6 +397,8 @@ __usage() { resort method. NOTE: This only works for functions which actually implement pip based installations. -q Quiet salt installation from git (setup.py install -q) + -Q Quickstart, install the Salt master and the Salt minion. + And automatically accept the minion key. -R Specify a custom repository URL. Assumes the custom repository URL points to a repository that mirrors Salt packages located at repo.saltproject.io. The option passed with -R replaces the @@ -426,7 +430,7 @@ EOT } # ---------- end of function __usage ---------- -while getopts ':hvnDc:g:Gyx:k:s:MSNXCPFUKIA:i:Lp:dH:bflV:J:j:rR:aq' opt +while getopts ':hvnDc:g:Gyx:k:s:MSNXCPFUKIA:i:Lp:dH:bflV:J:j:rR:aqQ' opt do case "${opt}" in @@ -470,6 +474,7 @@ do J ) _CUSTOM_MASTER_CONFIG=$OPTARG ;; j ) _CUSTOM_MINION_CONFIG=$OPTARG ;; q ) _QUIET_GIT_INSTALLATION=$BS_TRUE ;; + Q ) _QUICK_START=$BS_TRUE ;; x ) _PY_EXE="$OPTARG" ;; y ) _INSTALL_PY="$BS_TRUE" ;; @@ -714,6 +719,31 @@ elif [ "$ITYPE" = "onedir_rc" ]; then fi fi +# Doing a quick start, so install master +# set master address to 127.0.0.1 +if [ "$_QUICK_START" -eq "$BS_TRUE" ]; then + # make install type is stable + ITYPE="stable" + + # make sure the revision is latest + STABLE_REV="latest" + ONEDIR_REV="latest" + + # make sure we're installing the master + _INSTALL_MASTER=$BS_TRUE + + # override incase install minion + # is set to false + _INSTALL_MINION=$BS_TRUE + + # Set master address to loopback IP + _SALT_MASTER_ADDRESS="127.0.0.1" + + # Auto accept the minion key + # when the install is done. + _AUTO_ACCEPT_MINION_KEYS=$BS_TRUE +fi + # Check for any unparsed arguments. Should be an error. if [ "$#" -gt 0 ]; then __usage @@ -4670,7 +4700,7 @@ __install_saltstack_rhel_onedir_repository() { if [ "${ONEDIR_REV}" = "nightly" ] ; then base_url="${HTTP_VAL}://${_REPO_URL}/${_ONEDIR_NIGHTLY_DIR}/${__PY_VERSION_REPO}/redhat/${DISTRO_MAJOR_VERSION}/\$basearch/" fi - if [ "$(echo "${ONEDIR_REV}" | grep -E '(3004|3005)')" != "" ]; then + if [ "$(echo "${ONEDIR_REV}" | grep -E '(3004|3005)')" != "" ] || [ "${ONEDIR_REV}" = "nightly" ]; then if [ "${DISTRO_MAJOR_VERSION}" -eq 9 ]; then gpg_key="SALTSTACK-GPG-KEY2.pub" else @@ -6464,7 +6494,7 @@ install_amazon_linux_ami_2_onedir_deps() { base_url="$HTTP_VAL://${_REPO_URL}/${_ONEDIR_NIGHTLY_DIR}/${__PY_VERSION_REPO}/amazon/2/\$basearch/" fi - if [ "$(echo "${ONEDIR_REV}" | grep -E '(3004|3005)')" != "" ]; then + if [ "$(echo "${ONEDIR_REV}" | grep -E '(3004|3005)')" != "" ] || [ "${ONEDIR_REV}" = "nightly" ]; then gpg_key="${base_url}SALTSTACK-GPG-KEY.pub,${base_url}base/RPM-GPG-KEY-CentOS-7" if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -eq 3 ]; then gpg_key="${base_url}SALTSTACK-GPG-KEY.pub" @@ -9698,6 +9728,11 @@ if [ "$DAEMONS_RUNNING_FUNC" != "null" ] && [ ${_START_DAEMONS} -eq $BS_TRUE ]; fi fi +if [ "$_AUTO_ACCEPT_MINION_KEYS" -eq "$BS_TRUE" ]; then + echoinfo "Accepting the Salt Minion Keys" + salt-key -yA +fi + # Done! if [ "$_CONFIG_ONLY" -eq $BS_FALSE ]; then echoinfo "Salt installed!" @@ -9705,6 +9740,13 @@ else echoinfo "Salt configured!" fi +if [ "$_QUICK_START" -eq "$BS_TRUE" ]; then + echoinfo "Congratulations!" + echoinfo "A couple of commands to try:" + echoinfo " salt \* test.ping" + echoinfo " salt \* test.version" +fi + exit 0 # vim: set sts=4 ts=4 et From 9f34aa38dc03d482a34c5064f745ef7278b0ddff Mon Sep 17 00:00:00 2001 From: Felippe Burk Date: Mon, 31 Jul 2023 14:32:05 -0600 Subject: [PATCH 41/57] adding obsoletes to rpm.spec for photon3 packages Signed-off-by: Felippe Burk --- pkg/rpm/salt.spec | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pkg/rpm/salt.spec b/pkg/rpm/salt.spec index 9a6f71cba38..50b8e9c9783 100644 --- a/pkg/rpm/salt.spec +++ b/pkg/rpm/salt.spec @@ -32,6 +32,8 @@ Group: System Environment/Daemons License: ASL 2.0 URL: https://saltproject.io/ +Provides: salt = %{version} +Obsoletes: salt3 < 3006 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -68,6 +70,8 @@ servers, handle them quickly and through a simple and manageable interface. Summary: Management component for salt, a parallel remote execution system Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} +Provides: salt-master = %{version} +Obsoletes: salt3-master < 3006 %description master The Salt master is the central server to which all minions connect. @@ -77,6 +81,8 @@ The Salt master is the central server to which all minions connect. Summary: Client component for Salt, a parallel remote execution system Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} +Provides: salt-minion = %{version} +Obsoletes: salt3-minion < 3006 %description minion The Salt minion is the agent component of Salt. It listens for instructions @@ -87,6 +93,8 @@ from the master, runs jobs, and returns results back to the master. Summary: Master-of-master component for Salt, a parallel remote execution system Group: System Environment/Daemons Requires: %{name}-master = %{version}-%{release} +Provides: salt-syndic = %{version} +Obsoletes: salt3-syndic < 3006 %description syndic The Salt syndic is a master daemon which can receive instruction from a @@ -98,6 +106,8 @@ infrastructure. Summary: REST API for Salt, a parallel remote execution system Group: Applications/System Requires: %{name}-master = %{version}-%{release} +Provides: salt-api = %{version} +Obsoletes: salt3-api < 3006 %description api salt-api provides a REST interface to the Salt master. @@ -107,6 +117,8 @@ salt-api provides a REST interface to the Salt master. Summary: Cloud provisioner for Salt, a parallel remote execution system Group: Applications/System Requires: %{name}-master = %{version}-%{release} +Provides: salt-cloud = %{version} +Obsoletes: salt3-cloud < 3006 %description cloud The salt-cloud tool provisions new cloud VMs, installs salt-minion on them, and @@ -117,6 +129,8 @@ adds them to the master's collection of controllable minions. Summary: Agentless SSH-based version of Salt, a parallel remote execution system Group: Applications/System Requires: %{name} = %{version}-%{release} +Provides: salt-ssh = %{version} +Obsoletes: salt3-ssh < 3006 %description ssh The salt-ssh tool can run remote execution functions and states without the use From bdb04c3f73fe9645650064f0689e0e6aacf8e085 Mon Sep 17 00:00:00 2001 From: Pedro Algarvio Date: Thu, 3 Aug 2023 15:48:03 +0100 Subject: [PATCH 42/57] Bump to `saltpylint==2023.8.3` Signed-off-by: Pedro Algarvio --- requirements/static/ci/lint.in | 2 +- requirements/static/ci/py3.10/lint.txt | 2 +- requirements/static/ci/py3.7/lint.txt | 2 +- requirements/static/ci/py3.8/lint.txt | 2 +- requirements/static/ci/py3.9/lint.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/requirements/static/ci/lint.in b/requirements/static/ci/lint.in index 7b568d61d38..6511b70c51b 100644 --- a/requirements/static/ci/lint.in +++ b/requirements/static/ci/lint.in @@ -1,4 +1,4 @@ # Lint requirements pylint==2.4.4 -SaltPyLint>=v2020.9.28 +SaltPyLint>=2023.3.8 toml diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index a724c32d3c9..09c8e61d80a 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -769,7 +769,7 @@ rsa==4.7.2 # via google-auth s3transfer==0.5.0 # via boto3 -saltpylint==2020.9.28 +saltpylint==2023.8.3 # via -r requirements/static/ci/lint.in scp==0.13.6 # via junos-eznc diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 2c1d983fa11..550e3235fe6 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -816,7 +816,7 @@ rsa==4.7.2 # via google-auth s3transfer==0.5.0 # via boto3 -saltpylint==2020.9.28 +saltpylint==2023.8.3 # via -r requirements/static/ci/lint.in scp==0.13.6 # via diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index 7f356487283..ce7c7ebcc2d 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -807,7 +807,7 @@ rsa==4.7.2 # via google-auth s3transfer==0.5.0 # via boto3 -saltpylint==2020.9.28 +saltpylint==2023.8.3 # via -r requirements/static/ci/lint.in scp==0.13.6 # via diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 26e10d45694..2d3ef95cd92 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -808,7 +808,7 @@ rsa==4.7.2 # via google-auth s3transfer==0.5.0 # via boto3 -saltpylint==2020.9.28 +saltpylint==2023.8.3 # via -r requirements/static/ci/lint.in scp==0.13.6 # via From 2bad38a08ca6c8ced8a6c9c08c0444469504e363 Mon Sep 17 00:00:00 2001 From: "Jamie (Bear) Murphy" <1613241+ITJamie@users.noreply.github.com> Date: Wed, 2 Aug 2023 10:49:29 +0100 Subject: [PATCH 43/57] fix nightly repofile path (cherry picked from commit a58a741150e0036e330cc810698e472267cc62ac) --- tools/pkg/repo/create.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/pkg/repo/create.py b/tools/pkg/repo/create.py index 60ed8ad0570..5edf2be0409 100644 --- a/tools/pkg/repo/create.py +++ b/tools/pkg/repo/create.py @@ -12,6 +12,7 @@ import pathlib import shutil import sys import textwrap +from datetime import datetime from typing import TYPE_CHECKING from ptscripts import Context, command_group @@ -487,7 +488,7 @@ def rpm( def _create_repo_file(create_repo_path, url_suffix): ctx.info(f"Creating '{repo_file_path.relative_to(repo_path)}' file ...") if nightly_build_from: - base_url = f"salt-dev/{nightly_build_from}/" + base_url = f"salt-dev/{nightly_build_from}/latest/{datetime.utcnow().strftime("%Y-%m-%d") }" repo_file_contents = "[salt-nightly-repo]" elif "rc" in salt_version: base_url = "salt_rc/" From b9841886935647427962d697ecd1da8f216ab9ba Mon Sep 17 00:00:00 2001 From: "Jamie (Bear) Murphy" <1613241+ITJamie@users.noreply.github.com> Date: Wed, 2 Aug 2023 10:51:54 +0100 Subject: [PATCH 44/57] drop latest (cherry picked from commit 2073e52bc4de9f74bb6e15811f0354e484229600) --- tools/pkg/repo/create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pkg/repo/create.py b/tools/pkg/repo/create.py index 5edf2be0409..0442bfbbb55 100644 --- a/tools/pkg/repo/create.py +++ b/tools/pkg/repo/create.py @@ -488,7 +488,7 @@ def rpm( def _create_repo_file(create_repo_path, url_suffix): ctx.info(f"Creating '{repo_file_path.relative_to(repo_path)}' file ...") if nightly_build_from: - base_url = f"salt-dev/{nightly_build_from}/latest/{datetime.utcnow().strftime("%Y-%m-%d") }" + base_url = f"salt-dev/{nightly_build_from}/{datetime.utcnow().strftime("%Y-%m-%d") }" repo_file_contents = "[salt-nightly-repo]" elif "rc" in salt_version: base_url = "salt_rc/" From 7e7e83b00faf08c42af257b3f82b15b4168f4a95 Mon Sep 17 00:00:00 2001 From: "Jamie (Bear) Murphy" <1613241+ITJamie@users.noreply.github.com> Date: Wed, 2 Aug 2023 10:54:51 +0100 Subject: [PATCH 45/57] linting (cherry picked from commit 318c198a6f19242631f68233fcd4aeaa223756d1) --- tools/pkg/repo/create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pkg/repo/create.py b/tools/pkg/repo/create.py index 0442bfbbb55..2fab46147c2 100644 --- a/tools/pkg/repo/create.py +++ b/tools/pkg/repo/create.py @@ -488,7 +488,7 @@ def rpm( def _create_repo_file(create_repo_path, url_suffix): ctx.info(f"Creating '{repo_file_path.relative_to(repo_path)}' file ...") if nightly_build_from: - base_url = f"salt-dev/{nightly_build_from}/{datetime.utcnow().strftime("%Y-%m-%d") }" + base_url = f"salt-dev/{nightly_build_from}/{datetime.utcnow().strftime("%Y-%m-%d")}" repo_file_contents = "[salt-nightly-repo]" elif "rc" in salt_version: base_url = "salt_rc/" From 92254e8a0335e7911fe0ef99bf2339b072be7ea3 Mon Sep 17 00:00:00 2001 From: "Jamie (Bear) Murphy" <1613241+ITJamie@users.noreply.github.com> Date: Wed, 2 Aug 2023 10:56:12 +0100 Subject: [PATCH 46/57] add missing slash (cherry picked from commit b2dc649f90fba98513f4c592dc49aa0ac3f043fb) --- tools/pkg/repo/create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pkg/repo/create.py b/tools/pkg/repo/create.py index 2fab46147c2..161c4bc7d23 100644 --- a/tools/pkg/repo/create.py +++ b/tools/pkg/repo/create.py @@ -488,7 +488,7 @@ def rpm( def _create_repo_file(create_repo_path, url_suffix): ctx.info(f"Creating '{repo_file_path.relative_to(repo_path)}' file ...") if nightly_build_from: - base_url = f"salt-dev/{nightly_build_from}/{datetime.utcnow().strftime("%Y-%m-%d")}" + base_url = f"salt-dev/{nightly_build_from}/{datetime.utcnow().strftime("%Y-%m-%d")}/" repo_file_contents = "[salt-nightly-repo]" elif "rc" in salt_version: base_url = "salt_rc/" From 08482ed6f3f2ca3014910fa4c9b5ff09780db01b Mon Sep 17 00:00:00 2001 From: "Jamie (Bear) Murphy" <1613241+ITJamie@users.noreply.github.com> Date: Wed, 2 Aug 2023 15:11:42 +0100 Subject: [PATCH 47/57] fix quotes in fstring (cherry picked from commit 611944fa7bd5d811f62e14ce2d3c7fb2108c23c8) --- tools/pkg/repo/create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pkg/repo/create.py b/tools/pkg/repo/create.py index 161c4bc7d23..904208d53da 100644 --- a/tools/pkg/repo/create.py +++ b/tools/pkg/repo/create.py @@ -488,7 +488,7 @@ def rpm( def _create_repo_file(create_repo_path, url_suffix): ctx.info(f"Creating '{repo_file_path.relative_to(repo_path)}' file ...") if nightly_build_from: - base_url = f"salt-dev/{nightly_build_from}/{datetime.utcnow().strftime("%Y-%m-%d")}/" + base_url = f"salt-dev/{nightly_build_from}/{datetime.utcnow().strftime('%Y-%m-%d')}/" repo_file_contents = "[salt-nightly-repo]" elif "rc" in salt_version: base_url = "salt_rc/" From aea4ce188fe3736779a5defcd15647cdb25e3eee Mon Sep 17 00:00:00 2001 From: twangboy Date: Thu, 3 Aug 2023 15:43:43 -0600 Subject: [PATCH 48/57] Fix issues with choco states --- salt/modules/chocolatey.py | 40 +-- salt/states/chocolatey.py | 252 ++++++++---------- .../functional/states/test_chocolatey.py | 66 +++++ tests/pytests/unit/modules/test_chocolatey.py | 2 +- tests/pytests/unit/states/test_chocolatey.py | 8 +- 5 files changed, 200 insertions(+), 168 deletions(-) create mode 100644 tests/pytests/functional/states/test_chocolatey.py diff --git a/salt/modules/chocolatey.py b/salt/modules/chocolatey.py index 2dab74da497..777b37d5a77 100644 --- a/salt/modules/chocolatey.py +++ b/salt/modules/chocolatey.py @@ -896,7 +896,13 @@ def install_webpi(name, install_args=None, override_args=False): ) -def uninstall(name, version=None, uninstall_args=None, override_args=False): +def uninstall( + name, + version=None, + uninstall_args=None, + override_args=False, + force=False, +): """ Instructs Chocolatey to uninstall a package. @@ -933,11 +939,13 @@ def uninstall(name, version=None, uninstall_args=None, override_args=False): if uninstall_args: cmd.extend(["--uninstallarguments", uninstall_args]) if override_args: - cmd.extend(["--overridearguments"]) + cmd.append("--overridearguments") + if force: + cmd.append("--force") cmd.extend(_yes()) result = __salt__["cmd.run_all"](cmd, python_shell=False) - if result["retcode"] not in [0, 1605, 1614, 1641]: + if result["retcode"] not in [0, 1, 1605, 1614, 1641]: err = "Running chocolatey failed: {}".format(result["stdout"]) raise CommandExecutionError(err) @@ -1120,21 +1128,21 @@ def version(name, check_remote=False, source=None, pre_versions=False): packages = {} lower_name = name.lower() - for pkg in installed: - if lower_name in pkg.lower(): - packages[pkg] = installed[pkg] + if installed: + for pkg in installed: + if lower_name == pkg.lower(): + packages.setdefault(pkg, {}) + packages[pkg]["installed"] = installed[pkg] if check_remote: - available = list_(narrow=name, pre_versions=pre_versions, source=source) - - for pkg in packages: - # Grab the current version from the package that was installed - packages[pkg] = {"installed": installed[pkg]} - - # If there's a remote package available, then also include that - # in the dictionary that we return. - if pkg in available: - packages[pkg]["available"] = available[pkg] + # If there's a remote package available, then also include that + # in the dictionary that we return. + available = list_(narrow=name, local_only=False, pre_versions=pre_versions, source=source) + if available: + for pkg in available: + if lower_name == pkg.lower(): + packages.setdefault(pkg, {}) + packages[pkg]["available"] = available[pkg] return packages diff --git a/salt/states/chocolatey.py b/salt/states/chocolatey.py index f2e0651ae60..4b2d640e873 100644 --- a/salt/states/chocolatey.py +++ b/salt/states/chocolatey.py @@ -1,5 +1,5 @@ """ -Manage Chocolatey package installs +Manage Windows Packages using Chocolatey .. versionadded:: 2016.3.0 .. note:: @@ -20,7 +20,7 @@ def __virtual__(): """ if "chocolatey.install" in __salt__: return "chocolatey" - return (False, "chocolatey module could not be loaded") + return False, "chocolatey module could not be loaded" def installed( @@ -45,50 +45,55 @@ def installed( The name of the package to be installed. Required. version (str): - Install a specific version of the package. Defaults to latest - version. If the version is different to the one installed then the - specified version will be installed. Default is None. + Install a specific version of the package. Defaults to the latest + version. If the version is different to the one installed, then the + specified version will be installed. Default is ``None``. source (str): Chocolatey repository (directory, share or remote URL, feed). - Defaults to the official Chocolatey feed. Default is None. + ``None`` defaults to the official Chocolatey feed. Default is + ``None``. force (bool): Reinstall the current version of an existing package. Do not use - with ``allow_multiple``. Default is False. + with ``allow_multiple``. Default is ``False``. pre_versions (bool): - Include pre-release packages. Default is False. + Include pre-release packages. Default is ``False``. install_args (str): - Install arguments you want to pass to the installation process, i.e - product key or feature list. Default is None. + Install arguments you want to pass to the installation process, i.e. + product key or feature list. Default is ``None``. override_args (bool): - Set to True if you want to override the original install arguments - (for the native installer) in the package and use your own. When - this is set to False install_args will be appended to the end of the - default arguments. Default is False. + Set to ``True`` to override the original install arguments (for the + native installer) in the package and use your own. When this is set + to ``False``, install_args will be appended to the end of the + default arguments. Default is ``False``. force_x86 (bool): - Force x86 (32bit) installation on 64 bit systems. Default is False. + Force x86 (32bit) installation on 64-bit systems. Default is + ``False``. package_args (str): - Arguments you want to pass to the package. Default is None. + Arguments you want to pass to the package. Default is ``None``. allow_multiple (bool): - Allow mulitiple versions of the package to be installed. Do not use - with ``force``. Does not work with all packages. Default is False. + Allow multiple versions of the package to be installed. Do not use + with ``force``. Does not work with all packages. Default is + ``False``. .. versionadded:: 2017.7.0 execution_timeout (str): Chocolatey execution timeout value you want to pass to the - installation process. Default is None. + installation process. Default is ``None``. + + Example: .. code-block:: yaml - Installsomepackage: + install_some_package: chocolatey.installed: - name: packagename - version: '12.04' @@ -109,9 +114,9 @@ def installed( # Package not installed if name.lower() not in [package.lower() for package in pre_install.keys()]: if version: - ret["changes"] = {name: "Version {} will be installed".format(version)} + ret["comment"] = f"{name} {version} will be installed" else: - ret["changes"] = {name: "Latest version will be installed"} + ret["comment"] = f"Latest version of {name} will be installed" # Package installed else: @@ -124,59 +129,32 @@ def installed( if name.lower() == pkg.lower(): full_name = pkg - installed_version = version_info[full_name]["installed"][0] + installed_version = version_info[full_name].get("installed")[0] if version: if salt.utils.versions.compare( ver1=installed_version, oper="==", ver2=version ): if force: - ret["changes"] = { - name: "Version {} will be reinstalled".format(version) - } - ret["comment"] = "Reinstall {} {}".format(full_name, version) + ret["comment"] = f"{name} {version} will be reinstalled" else: - ret["comment"] = "{} {} is already installed".format(name, version) - if __opts__["test"]: - ret["result"] = None - return ret + ret["comment"] = f"{name} {version} is already installed" else: if allow_multiple: - ret["changes"] = { - name: ( - "Version {} will be installed side by side with " - "Version {} if supported".format(version, installed_version) - ) - } - ret["comment"] = "Install {0} {1} side-by-side with {0} {2}".format( - full_name, version, installed_version - ) + ret["comment"] = f"{name} {version} will be installed side by side with {name} {installed_version} if supported" else: - ret["changes"] = { - name: "Version {} will be installed over Version {}".format( - version, installed_version - ) - } - ret["comment"] = "Install {0} {1} over {0} {2}".format( - full_name, version, installed_version - ) + ret["comment"] = f"{name} {version} will be installed over {name} {installed_version}" force = True else: version = installed_version if force: - ret["changes"] = { - name: "Version {} will be reinstalled".format(version) - } - ret["comment"] = "Reinstall {} {}".format(full_name, version) + ret["comment"] = f"{name} {version} will be reinstalled" else: - ret["comment"] = "{} {} is already installed".format(name, version) - if __opts__["test"]: - ret["result"] = None + ret["comment"] = f"{name} {version} is already installed" return ret if __opts__["test"]: ret["result"] = None - ret["comment"] = "The installation was tested" return ret # Install the package @@ -195,13 +173,12 @@ def installed( ) if "Running chocolatey failed" not in result: + ret["comment"] = f"{name} installed successfully" ret["result"] = True else: + ret["comment"] = f"Failed to install {name}" ret["result"] = False - if not ret["result"]: - ret["comment"] = "Failed to install the package {}".format(name) - # Get list of installed packages after 'chocolatey.install' post_install = __salt__["chocolatey.list"](local_only=True) @@ -212,32 +189,35 @@ def installed( def uninstalled(name, version=None, uninstall_args=None, override_args=False): """ - Uninstalls a package + Uninstalls a chocolatey package - name - The name of the package to be uninstalled + Args: - version - Uninstalls a specific version of the package. Defaults to latest - version installed. + name (str): + The name of the package to be uninstalled. Required. - uninstall_args - A list of uninstall arguments you want to pass to the uninstallation - process i.e product key or feature list + version (str): + Uninstalls a specific version of the package. Defaults to the latest + version installed. - override_args - Set to true if you want to override the original uninstall arguments ( - for the native uninstaller)in the package and use your own. - When this is set to False uninstall_args will be appended to the end of - the default arguments + uninstall_args (str): + A list of uninstall arguments you want to pass to the uninstallation + process, i.e. product key or feature list + + override_args (str): + Set to ``True`` if you want to override the original uninstall + arguments (for the native uninstaller) in the package and use your + own. When this is set to ``False``, uninstall_args will be appended + to the end of the default arguments + + Example: .. code-block:: yaml - Removemypackage: + remove_my_package: chocolatey.uninstalled: - name: mypackage - version: '21.5' - """ ret = {"name": name, "result": True, "changes": {}, "comment": ""} @@ -248,20 +228,15 @@ def uninstalled(name, version=None, uninstall_args=None, override_args=False): # Determine if package is installed if name.lower() in [package.lower() for package in pre_uninstall.keys()]: try: - ret["changes"] = { - name: "{} version {} will be removed".format( - name, pre_uninstall[name][0] - ) - } + ret["comment"] = f"{name} {pre_uninstall[name][0]} will be removed" except KeyError: - ret["changes"] = {name: "{} will be removed".format(name)} + ret["comment"] = f"{name} will be removed" else: - ret["comment"] = "The package {} is not installed".format(name) + ret["comment"] = f"The package {name} is not installed" return ret if __opts__["test"]: ret["result"] = None - ret["comment"] = "The uninstall was tested" return ret # Uninstall the package @@ -270,13 +245,12 @@ def uninstalled(name, version=None, uninstall_args=None, override_args=False): ) if "Running chocolatey failed" not in result: + ret["comment"] = f"{name} uninstalled successfully" ret["result"] = True else: + ret["comment"] = f"Failed to uninstall {name}" ret["result"] = False - if not ret["result"]: - ret["comment"] = "Failed to uninstall the package {}".format(name) - # Get list of installed packages after 'chocolatey.uninstall' post_uninstall = __salt__["chocolatey.list"](local_only=True) @@ -297,7 +271,7 @@ def upgraded( package_args=None, ): """ - Upgrades a package. Will install the package if not installed. + Upgrades a chocolatey package. Will install the package if not installed. .. versionadded:: 2018.3.0 @@ -320,7 +294,7 @@ def upgraded( Default is ``False``. pre_versions (bool): - ``True`` will nclude pre-release packages. Default is ``False``. + ``True`` will include pre-release packages. Default is ``False``. install_args (str): Install arguments you want to pass to the installation process, i.e @@ -333,12 +307,14 @@ def upgraded( the default arguments. Default is ``False``. force_x86 (bool): - ``True`` forces 32bit installation on 64 bit systems. Default is + ``True`` forces 32-bit installation on 64-bit systems. Default is ``False``. package_args (str): Arguments you want to pass to the package. Default is ``None``. + Example: + .. code-block:: yaml upgrade_some_package: @@ -356,15 +332,15 @@ def upgraded( # Package not installed if name.lower() not in [package.lower() for package in pre_install.keys()]: if version: - ret["changes"][name] = "Version {} will be installed".format(version) - ret["comment"] = "Install version {}".format(version) + ret["comment"] = f"{name} {version} will be installed" else: - ret["changes"][name] = "Latest version will be installed" - ret["comment"] = "Install latest version" + ret["comment"] = f"Latest version of {name} will be installed" # Package installed else: - version_info = __salt__["chocolatey.version"](name, check_remote=True) + version_info = __salt__["chocolatey.version"]( + name=name, check_remote=True, source=source + ) # Get the actual full name out of version_info full_name = name @@ -385,40 +361,25 @@ def upgraded( ver1=installed_version, oper="==", ver2=version ): if force: - ret["changes"][name] = "Version {} will be reinstalled".format( - version - ) - ret["comment"] = "Reinstall {} {}".format(full_name, version) + ret["comment"] = f"{name} {version} will be reinstalled" else: - ret["comment"] = "{} {} is already installed".format( - name, installed_version - ) + ret["comment"] = f"{name} {version} is already installed" + return ret else: # If installed version is older than new version if salt.utils.versions.compare( ver1=installed_version, oper="<", ver2=version ): - ret["changes"][ - name - ] = "Version {} will be upgraded to Version {}".format( - installed_version, version - ) - ret["comment"] = "Upgrade {} {} to {}".format( - full_name, installed_version, version - ) + ret["comment"] = f"{name} {installed_version} will be upgraded to version {version}" # If installed version is newer than new version else: - ret["comment"] = "{} {} (newer) is already installed".format( - name, installed_version - ) + ret["comment"] = f"{name} {installed_version} (newer) is already installed" + return ret # Catch all for a condition where version is not passed and there is no # available version else: ret["comment"] = "No version found to install" - - # Return if there are no changes to be made - if not ret["changes"]: - return ret + return ret # Return if running in test mode if __opts__["test"]: @@ -439,10 +400,10 @@ def upgraded( ) if "Running chocolatey failed" not in result: - ret["comment"] = "Package {} upgraded successfully".format(name) + ret["comment"] = f"{name} upgraded successfully" ret["result"] = True else: - ret["comment"] = "Failed to upgrade the package {}".format(name) + ret["comment"] = f"Failed to upgrade {name}" ret["result"] = False # Get list of installed packages after 'chocolatey.install' @@ -460,33 +421,35 @@ def source_present( name, source_location, username=None, password=None, force=False, priority=None ): """ - Instructs Chocolatey to add a source if not already present. + Adds a Chocolatey source if not already present. - name - The name of the source to be added as a chocolatey repository. + Args: - source - Location of the source you want to work with. + name (str): + The name of the source to be added as a chocolatey repository. - username - Provide username for chocolatey sources that need authentication - credentials. + source (str): + Location of the source you want to work with. - password - Provide password for chocolatey sources that need authentication - credentials. + username (str): + The username for a chocolatey source that needs authentication + credentials. - force - Salt will not modify a existing repository with the same name. Set this - option to true to update an existing repository. + password (str): + The password for a chocolatey source that needx authentication + credentials. - priority - The priority order of this source as compared to other sources, - lower is better. Defaults to 0 (no priority). All priorities - above 0 will be evaluated first, then zero-based values will be - evaluated in config file order. + force (bool): + Salt will not modify an existing repository with the same name. Set + this option to ``True`` to update an existing repository. - CLI Example: + priority (int): + The priority order of this source as compared to other sources. + Lower is better. Defaults to 0 (no priority). All priorities + above 0 will be evaluated first, then zero-based values will be + evaluated in config file order. + + Example: .. code-block:: yaml @@ -506,21 +469,18 @@ def source_present( # Determine action # Source with same name not present if name.lower() not in [present.lower() for present in pre_install.keys()]: - ret["comment"] = "Add the source {}".format(name) + ret["comment"] = f"{name} will be added" # Source with same name already present else: if force: - ret["comment"] = "Update the source {}".format(name) + ret["comment"] = f"{name} will be updated" else: - ret["comment"] = "A source with the name {} is already present".format(name) - if __opts__["test"]: - ret["result"] = None + ret["comment"] = f"{name} is already present" return ret if __opts__["test"]: ret["result"] = None - ret["comment"] = "The installation was tested" return ret # Add the source @@ -534,10 +494,10 @@ def source_present( if "Running chocolatey failed" not in result: ret["result"] = True - ret["comment"] = "Source {} added successfully".format(name) + ret["comment"] = f"Source {name} added successfully" else: ret["result"] = False - ret["comment"] = "Failed to add the source {}".format(name) + ret["comment"] = f"Failed to add the source {name}" # Get list of present sources after 'chocolatey.add_source' post_install = __salt__["chocolatey.list_sources"]() diff --git a/tests/pytests/functional/states/test_chocolatey.py b/tests/pytests/functional/states/test_chocolatey.py new file mode 100644 index 00000000000..d3ed41f08d0 --- /dev/null +++ b/tests/pytests/functional/states/test_chocolatey.py @@ -0,0 +1,66 @@ +import pytest + +import salt.utils.path + +pytestmark = [ + pytest.mark.windows_whitelisted, + pytest.mark.skip_unless_on_windows, + pytest.mark.slow_test, +] + + +@pytest.fixture(scope="module") +def chocolatey(states): + if not salt.utils.path.which("choco.exe"): + pytest.skip("The `chocolatey` binary is not available") + yield states.chocolatey + + +@pytest.fixture(scope="module") +def chocolatey_mod(modules): + yield modules.chocolatey + + +@pytest.fixture(scope="function") +def clean(chocolatey_mod): + chocolatey_mod.uninstall(name="vim", force=True) + yield + chocolatey_mod.uninstall(name="vim", force=True) + + +@pytest.fixture(scope="function") +def vim(chocolatey_mod): + chocolatey_mod.install(name="vim", version="9.0.1672") + yield + chocolatey_mod.uninstall(name="vim", force=True) + + +@pytest.mark.destructive_test +def test_installed_latest(clean, chocolatey, chocolatey_mod): + chocolatey.installed(name="vim") + result = chocolatey_mod.version(name="vim") + assert "vim" in result + + +@pytest.mark.destructive_test +def test_installed_version(clean, chocolatey, chocolatey_mod): + chocolatey.installed(name="vim", version="9.0.1672") + result = chocolatey_mod.version(name="vim") + assert "vim" in result + assert result["vim"]["installed"][0] == "9.0.1672" + + +def test_uninstalled(vim, chocolatey, chocolatey_mod): + chocolatey.uninstalled(name="vim") + result = chocolatey_mod.version(name="vim") + assert "vim" not in result + + +def test_upgraded(vim, chocolatey, chocolatey_mod): + result = chocolatey_mod.version(name="vim") + assert "vim" in result + assert result["vim"]["installed"][0] == "9.0.1672" + chocolatey.upgraded(name="vim", version="9.0.1677") + result = chocolatey_mod.version(name="vim") + assert "vim" in result + assert result["vim"]["installed"][0] == "9.0.1677" diff --git a/tests/pytests/unit/modules/test_chocolatey.py b/tests/pytests/unit/modules/test_chocolatey.py index ac553ceba63..7c5d7f08d95 100644 --- a/tests/pytests/unit/modules/test_chocolatey.py +++ b/tests/pytests/unit/modules/test_chocolatey.py @@ -190,7 +190,7 @@ def test_version_check_remote_false(): """ list_return_value = {"ack": ["3.1.1"]} with patch.object(chocolatey, "list_", return_value=list_return_value): - expected = {"ack": ["3.1.1"]} + expected = {"ack": {"installed": ["3.1.1"]}} result = chocolatey.version("ack", check_remote=False) assert result == expected diff --git a/tests/pytests/unit/states/test_chocolatey.py b/tests/pytests/unit/states/test_chocolatey.py index 1109b1a1342..4b9bec600ad 100644 --- a/tests/pytests/unit/states/test_chocolatey.py +++ b/tests/pytests/unit/states/test_chocolatey.py @@ -3,6 +3,7 @@ import logging import pytest import salt.modules.chocolatey as chocolatey_mod +import salt.modules.cmdmod as cmdmod import salt.states.chocolatey as chocolatey from tests.support.mock import MagicMock, patch @@ -74,6 +75,7 @@ def test_source_present(list_sources): chocolatey.__salt__, { "chocolatey.list_sources": list_sources_sideeffect, + "chocolatey.add_source": chocolatey_mod.add_source, }, ): @@ -84,11 +86,6 @@ def test_source_present(list_sources): cmd_run_all_mock = MagicMock(return_value={"retcode": 0, "stdout": stdout_ret}) cmd_run_which_mock = MagicMock(return_value=choco_path) with patch.dict( - chocolatey.__salt__, - { - "chocolatey.add_source": chocolatey_mod.add_source, - }, - ), patch.dict( chocolatey_mod.__salt__, { "cmd.which": cmd_run_which_mock, @@ -115,3 +112,4 @@ def test_source_present(list_sources): }, } } + From 866175b707a7a65500e2503e7a87be153ad2548b Mon Sep 17 00:00:00 2001 From: twangboy Date: Thu, 3 Aug 2023 22:59:08 -0600 Subject: [PATCH 49/57] Add functional tests for 1.2.1 and latest --- salt/modules/chocolatey.py | 317 ++++++++++-------- salt/states/chocolatey.py | 20 +- .../functional/states/test_chocolatey.py | 66 ---- .../states/test_chocolatey_1.2.1.py | 128 +++++++ .../states/test_chocolatey_latest.py | 128 +++++++ tests/pytests/unit/modules/test_chocolatey.py | 2 - tests/pytests/unit/states/test_chocolatey.py | 5 +- 7 files changed, 449 insertions(+), 217 deletions(-) delete mode 100644 tests/pytests/functional/states/test_chocolatey.py create mode 100644 tests/pytests/functional/states/test_chocolatey_1.2.1.py create mode 100644 tests/pytests/functional/states/test_chocolatey_latest.py diff --git a/salt/modules/chocolatey.py b/salt/modules/chocolatey.py index 777b37d5a77..ade057da95c 100644 --- a/salt/modules/chocolatey.py +++ b/salt/modules/chocolatey.py @@ -1,5 +1,5 @@ """ -A dead simple module wrapping calls to the Chocolatey package manager +A module that wraps calls to the Chocolatey package manager (http://chocolatey.org) .. versionadded:: 2014.1.0 @@ -40,13 +40,10 @@ def __virtual__(): salt-minion running as SYSTEM. """ if not salt.utils.platform.is_windows(): - return (False, "Cannot load module chocolatey: Chocolatey requires Windows") + return False, "Chocolatey: Requires Windows" if __grains__["osrelease"] in ("XP", "2003Server"): - return ( - False, - "Cannot load module chocolatey: Chocolatey requires Windows Vista or later", - ) + return False, "Chocolatey: Requires Windows Vista or later" return __virtualname__ @@ -355,12 +352,12 @@ def unbootstrap(): """ Uninstall chocolatey from the system by doing the following: - .. versionadded:: 3001 - - Delete the Chocolatey Directory - Remove Chocolatey from the path - Remove Chocolatey environment variables + .. versionadded:: 3001 + Returns: list: A list of items that were removed, otherwise an empty list @@ -441,10 +438,10 @@ def list_( None is passed. Default is None. local_only (bool): - Display packages only installed locally. Default is False. + Only display packages that are installed locally. Default is False. exact (bool): - Display only packages that match ``narrow`` exactly. Default is + Only display packages that match ``narrow`` exactly. Default is False. .. versionadded:: 2017.7.0 @@ -463,8 +460,14 @@ def list_( # https://docs.chocolatey.org/en-us/guides/upgrading-to-chocolatey-v2-v6 if Version(chocolatey_version()) < Version("2.0.0"): cmd = [choc_path, "list"] + if local_only: + cmd.append("--local-only") else: - cmd = [choc_path, "search"] + if local_only: + # Starting with 2.0.0, list only returns local packages + cmd = [choc_path, "list"] + else: + cmd = [choc_path, "search"] if narrow: cmd.append(narrow) if salt.utils.data.is_true(all_versions): @@ -473,8 +476,6 @@ def list_( cmd.append("--prerelease") if source: cmd.extend(["--source", source]) - if local_only: - cmd.append("--local-only") if exact: cmd.append("--exact") @@ -589,12 +590,12 @@ def install( version (str): Install a specific version of the package. Defaults to latest - version. Default is None. + version. Default is ``None``. source (str): Chocolatey repository (directory, share or remote URL feed) the package comes from. Defaults to the official Chocolatey feed. - Default is None. + Default is ``None``. Alternate Sources: @@ -606,36 +607,38 @@ def install( force (bool): Reinstall the current version of an existing package. Do not use - with ``allow_multiple``. Default is False. + with ``allow_multiple``. Default is ``False``. pre_versions (bool): - Include pre-release packages. Default is False. + Include pre-release packages. Default is ``False``. install_args (str): A list of install arguments you want to pass to the installation - process i.e product key or feature list. Default is None. + process, i.e. product key or feature list. Default is ``None``. override_args (bool): Set to true if you want to override the original install arguments (for the native installer) in the package and use your own. When - this is set to False install_args will be appended to the end of the - default arguments. Default is None. + this is set to ``False`` install_args will be appended to the end of + the default arguments. Default is ``None``. force_x86 (bool): - Force x86 (32bit) installation on 64 bit systems. Default is False. + Force x86 (32bit) installation on 64bit systems. Default is + ``False``. package_args (str): - Arguments you want to pass to the package. Default is None. + Arguments you want to pass to the package. Default is ``None``. allow_multiple (bool): Allow multiple versions of the package to be installed. Do not use - with ``force``. Does not work with all packages. Default is False. + with ``force``. Does not work with all packages. Default is + ``False``. .. versionadded:: 2017.7.0 execution_timeout (str): Chocolatey execution timeout value you want to pass to the - installation process. Default is None. + installation process. Default is ``None``. .. versionadded:: 2018.3.0 @@ -700,18 +703,21 @@ def install_cygwin(name, install_args=None, override_args=False): """ Instructs Chocolatey to install a package via Cygwin. - name - The name of the package to be installed. Only accepts a single argument. + Args: - install_args - A list of install arguments you want to pass to the installation process - i.e product key or feature list + name (str): + The name of the package to be installed. Only accepts a single + argument. - override_args - Set to true if you want to override the original install arguments (for - the native installer) in the package and use your own. When this is set - to False install_args will be appended to the end of the default - arguments + install_args (str): + A list of install arguments you want to pass to the installation + process, i.e. product key or feature list + + override_args (bool): + Set to ``True`` if you want to override the original install + arguments (for the native installer) in the package and use your + own. When this is set to ``False`` install_args will be appended to + the end of the default arguments CLI Example: @@ -729,22 +735,25 @@ def install_gem(name, version=None, install_args=None, override_args=False): """ Instructs Chocolatey to install a package via Ruby's Gems. - name - The name of the package to be installed. Only accepts a single argument. + Args: - version - Install a specific version of the package. Defaults to latest version - available. + name (str): + The name of the package to be installed. Only accepts a single + argument. - install_args - A list of install arguments you want to pass to the installation process - i.e product key or feature list + version (str): + Install a specific version of the package. Defaults to the latest + version available. - override_args - Set to true if you want to override the original install arguments (for - the native installer) in the package and use your own. When this is set - to False install_args will be appended to the end of the default - arguments + install_args (str): + A list of install arguments you want to pass to the installation + process, i.e. product key or feature list + + override_args (bool): + Set to ``True`` if you want to override the original install + arguments (for the native installer) in the package and use your + own. When this is set to ``False`` install_args will be appended to + the end of the default arguments CLI Example: @@ -773,16 +782,19 @@ def install_missing(name, version=None, source=None): ``installmissing`` is deprecated as of that version and will be removed in Chocolatey 1.0. - name - The name of the package to be installed. Only accepts a single argument. + Args: - version - Install a specific version of the package. Defaults to latest version - available. + name (str): + The name of the package to be installed. Only accepts a single + argument. - source - Chocolatey repository (directory, share or remote URL feed) the package - comes from. Defaults to the official Chocolatey feed. + version (str): + Install a specific version of the package. Defaults to the latest + version available. + + source (str): + Chocolatey repository (directory, share or remote URL feed) the + package comes from. Defaults to the official Chocolatey feed. CLI Example: @@ -816,22 +828,25 @@ def install_python(name, version=None, install_args=None, override_args=False): """ Instructs Chocolatey to install a package via Python's easy_install. - name - The name of the package to be installed. Only accepts a single argument. + Args: - version - Install a specific version of the package. Defaults to latest version - available. + name (str): + The name of the package to be installed. Only accepts a single + argument. - install_args - A list of install arguments you want to pass to the installation process - i.e product key or feature list + version (str): + Install a specific version of the package. Defaults to the latest + version available. - override_args - Set to true if you want to override the original install arguments (for - the native installer) in the package and use your own. When this is set - to False install_args will be appended to the end of the default - arguments + install_args (str): + A list of install arguments you want to pass to the installation + process, i.e. product key or feature list. + + override_args (bool): + Set to ``True`` if you want to override the original install + arguments (for the native installer) in the package and use your + own. When this is set to ``False`` install_args will be appended to + the end of the default arguments. CLI Example: @@ -855,8 +870,11 @@ def install_windowsfeatures(name): Instructs Chocolatey to install a Windows Feature via the Deployment Image Servicing and Management tool. - name - The name of the feature to be installed. Only accepts a single argument. + Args: + + name (str): + The name of the feature to be installed. Only accepts a single + argument. CLI Example: @@ -871,18 +889,21 @@ def install_webpi(name, install_args=None, override_args=False): """ Instructs Chocolatey to install a package via the Microsoft Web PI service. - name - The name of the package to be installed. Only accepts a single argument. + Args: - install_args - A list of install arguments you want to pass to the installation process - i.e product key or feature list + name (str): + The name of the package to be installed. Only accepts a single + argument. - override_args - Set to true if you want to override the original install arguments (for - the native installer) in the package and use your own. When this is set - to False install_args will be appended to the end of the default - arguments + install_args (str): + A list of install arguments you want to pass to the installation + process, i.e. product key or feature list. + + override_args (bool): + Set to ``True`` if you want to override the original install + arguments (for the native installer) in the package and use your + own. When this is set to ``False`` install_args will be appended to + the end of the default arguments. CLI Example: @@ -906,23 +927,25 @@ def uninstall( """ Instructs Chocolatey to uninstall a package. - name - The name of the package to be uninstalled. Only accepts a single - argument. + Args: - version - Uninstalls a specific version of the package. Defaults to latest version - installed. + name (str): + The name of the package to be uninstalled. Only accepts a single + argument. - uninstall_args - A list of uninstall arguments you want to pass to the uninstallation - process i.e product key or feature list + version (str): + Uninstalls a specific version of the package. Defaults to the latest + version installed. - override_args - Set to true if you want to override the original uninstall arguments - (for the native uninstaller) in the package and use your own. When this - is set to False uninstall_args will be appended to the end of the - default arguments + uninstall_args (str): + A list of uninstall arguments you want to pass to the uninstallation + process, i.e. product key or feature list. + + override_args + Set to ``True`` if you want to override the original uninstall + arguments (for the native uninstaller) in the package and use your + own. When this is set to ``False`` uninstall_args will be appended + to the end of the default arguments. CLI Example: @@ -984,26 +1007,27 @@ def upgrade( package comes from. Defaults to the official Chocolatey feed. force (bool): - Reinstall the **same** version already installed + Reinstall the **same** version already installed. pre_versions (bool): - Include pre-release packages in comparison. Defaults to False. + Include pre-release packages in comparison. Defaults to ``False``. install_args (str): A list of install arguments you want to pass to the installation - process i.e product key or feature list + process, i.e. product key or feature list. - override_args (str): - Set to true if you want to override the original install arguments - (for the native installer) in the package and use your own. When - this is set to False install_args will be appended to the end of the - default arguments + override_args (bool): + Set to ``True`` if you want to override the original install + arguments (for the native installer) in the package and use your + own. When this is set to ``False`` install_args will be appended to + the end of the default arguments. - force_x86 - Force x86 (32bit) installation on 64 bit systems. Defaults to false. + force_x86 (bool): + Force x86 (32bit) installation on 64bit systems. Defaults to + ``False``. - package_args - A list of arguments you want to pass to the package + package_args (str): + A list of arguments you want to pass to the package. Returns: str: Results of the ``chocolatey`` command @@ -1051,16 +1075,18 @@ def update(name, source=None, pre_versions=False): """ Instructs Chocolatey to update packages on the system. - name - The name of the package to update, or "all" to update everything - installed on the system. + Args: - source - Chocolatey repository (directory, share or remote URL feed) the package - comes from. Defaults to the official Chocolatey feed. + name (str): + The name of the package to update, or "all" to update everything + installed on the system. - pre_versions - Include pre-release packages in comparison. Defaults to False. + source (str): + Chocolatey repository (directory, share or remote URL feed) the + package comes from. Defaults to the official Chocolatey feed. + + pre_versions (bool): + Include pre-release packages in comparison. Defaults to ``False``. CLI Example: @@ -1104,15 +1130,15 @@ def version(name, check_remote=False, source=None, pre_versions=False): check_remote (bool): Get the version number of the latest package from the remote feed. - Default is False. + Default is ``False``. source (str): Chocolatey repository (directory, share or remote URL feed) the package comes from. Defaults to the official Chocolatey feed. - Default is None. + Default is ``None``. pre_versions (bool): - Include pre-release packages in comparison. Default is False. + Include pre-release packages in comparison. Default is ``False``. Returns: dict: A dictionary of currently installed software and versions @@ -1137,7 +1163,9 @@ def version(name, check_remote=False, source=None, pre_versions=False): if check_remote: # If there's a remote package available, then also include that # in the dictionary that we return. - available = list_(narrow=name, local_only=False, pre_versions=pre_versions, source=source) + available = list_( + narrow=name, local_only=False, pre_versions=pre_versions, source=source + ) if available: for pkg in available: if lower_name == pkg.lower(): @@ -1151,25 +1179,27 @@ def add_source(name, source_location, username=None, password=None, priority=Non """ Instructs Chocolatey to add a source. - name - The name of the source to be added as a chocolatey repository. + Args: - source - Location of the source you want to work with. + name (str): + The name of the source to be added as a chocolatey repository. - username - Provide username for chocolatey sources that need authentication - credentials. + source (str): + Location of the source you want to work with. - password - Provide password for chocolatey sources that need authentication - credentials. + username (str): + Provide username for chocolatey sources that need authentication + credentials. - priority - The priority order of this source as compared to other sources, - lower is better. Defaults to 0 (no priority). All priorities - above 0 will be evaluated first, then zero-based values will be - evaluated in config file order. + password (str): + Provide password for chocolatey sources that need authentication + credentials. + + priority (int): + The priority order of this source as compared to other sources, + lower is better. Defaults to 0 (no priority). All priorities + above 0 will be evaluated first, then zero-based values will be + evaluated in config file order. CLI Example: @@ -1208,12 +1238,13 @@ def _change_source_state(name, state): """ Instructs Chocolatey to change the state of a source. - name - Name of the repository to affect. + Args: - state - State in which you want the chocolatey repository. + name (str): + Name of the repository to affect. + state (str): + State in which you want the chocolatey repository. """ cmd = [_find_chocolatey(), "source", state, "--name", name] result = __salt__["cmd.run_all"](cmd, python_shell=False) @@ -1229,8 +1260,10 @@ def enable_source(name): """ Instructs Chocolatey to enable a source. - name - Name of the source repository to enable. + Args: + + name (str): + Name of the source repository to enable. CLI Example: @@ -1246,8 +1279,10 @@ def disable_source(name): """ Instructs Chocolatey to disable a source. - name - Name of the source repository to disable. + Args: + + name (str): + Name of the source repository to disable. CLI Example: diff --git a/salt/states/chocolatey.py b/salt/states/chocolatey.py index 4b2d640e873..87dad46a751 100644 --- a/salt/states/chocolatey.py +++ b/salt/states/chocolatey.py @@ -72,7 +72,7 @@ def installed( default arguments. Default is ``False``. force_x86 (bool): - Force x86 (32bit) installation on 64-bit systems. Default is + Force x86 (32bit) installation on 64bit systems. Default is ``False``. package_args (str): @@ -141,9 +141,13 @@ def installed( ret["comment"] = f"{name} {version} is already installed" else: if allow_multiple: - ret["comment"] = f"{name} {version} will be installed side by side with {name} {installed_version} if supported" + ret[ + "comment" + ] = f"{name} {version} will be installed side by side with {name} {installed_version} if supported" else: - ret["comment"] = f"{name} {version} will be installed over {name} {installed_version}" + ret[ + "comment" + ] = f"{name} {version} will be installed over {name} {installed_version}" force = True else: version = installed_version @@ -307,7 +311,7 @@ def upgraded( the default arguments. Default is ``False``. force_x86 (bool): - ``True`` forces 32-bit installation on 64-bit systems. Default is + ``True`` forces 32bit installation on 64bit systems. Default is ``False``. package_args (str): @@ -370,10 +374,14 @@ def upgraded( if salt.utils.versions.compare( ver1=installed_version, oper="<", ver2=version ): - ret["comment"] = f"{name} {installed_version} will be upgraded to version {version}" + ret[ + "comment" + ] = f"{name} {installed_version} will be upgraded to version {version}" # If installed version is newer than new version else: - ret["comment"] = f"{name} {installed_version} (newer) is already installed" + ret[ + "comment" + ] = f"{name} {installed_version} (newer) is already installed" return ret # Catch all for a condition where version is not passed and there is no # available version diff --git a/tests/pytests/functional/states/test_chocolatey.py b/tests/pytests/functional/states/test_chocolatey.py deleted file mode 100644 index d3ed41f08d0..00000000000 --- a/tests/pytests/functional/states/test_chocolatey.py +++ /dev/null @@ -1,66 +0,0 @@ -import pytest - -import salt.utils.path - -pytestmark = [ - pytest.mark.windows_whitelisted, - pytest.mark.skip_unless_on_windows, - pytest.mark.slow_test, -] - - -@pytest.fixture(scope="module") -def chocolatey(states): - if not salt.utils.path.which("choco.exe"): - pytest.skip("The `chocolatey` binary is not available") - yield states.chocolatey - - -@pytest.fixture(scope="module") -def chocolatey_mod(modules): - yield modules.chocolatey - - -@pytest.fixture(scope="function") -def clean(chocolatey_mod): - chocolatey_mod.uninstall(name="vim", force=True) - yield - chocolatey_mod.uninstall(name="vim", force=True) - - -@pytest.fixture(scope="function") -def vim(chocolatey_mod): - chocolatey_mod.install(name="vim", version="9.0.1672") - yield - chocolatey_mod.uninstall(name="vim", force=True) - - -@pytest.mark.destructive_test -def test_installed_latest(clean, chocolatey, chocolatey_mod): - chocolatey.installed(name="vim") - result = chocolatey_mod.version(name="vim") - assert "vim" in result - - -@pytest.mark.destructive_test -def test_installed_version(clean, chocolatey, chocolatey_mod): - chocolatey.installed(name="vim", version="9.0.1672") - result = chocolatey_mod.version(name="vim") - assert "vim" in result - assert result["vim"]["installed"][0] == "9.0.1672" - - -def test_uninstalled(vim, chocolatey, chocolatey_mod): - chocolatey.uninstalled(name="vim") - result = chocolatey_mod.version(name="vim") - assert "vim" not in result - - -def test_upgraded(vim, chocolatey, chocolatey_mod): - result = chocolatey_mod.version(name="vim") - assert "vim" in result - assert result["vim"]["installed"][0] == "9.0.1672" - chocolatey.upgraded(name="vim", version="9.0.1677") - result = chocolatey_mod.version(name="vim") - assert "vim" in result - assert result["vim"]["installed"][0] == "9.0.1677" diff --git a/tests/pytests/functional/states/test_chocolatey_1.2.1.py b/tests/pytests/functional/states/test_chocolatey_1.2.1.py new file mode 100644 index 00000000000..bdb4e74ea88 --- /dev/null +++ b/tests/pytests/functional/states/test_chocolatey_1.2.1.py @@ -0,0 +1,128 @@ +""" +Functional tests for chocolatey state +""" +import os +import pathlib + +import pytest + +import salt.utils.path + +pytestmark = [ + pytest.mark.windows_whitelisted, + pytest.mark.skip_unless_on_windows, + pytest.mark.slow_test, + pytest.mark.destructive_test, +] + + +@pytest.fixture(scope="module") +def chocolatey(states): + yield states.chocolatey + + +@pytest.fixture(scope="module") +def chocolatey_mod(modules): + + url = "https://packages.chocolatey.org/chocolatey.1.2.1.nupkg" + with pytest.helpers.temp_file(name="choco.nupkg") as nupkg: + choco_pkg = pathlib.Path(str(nupkg)) + choco_dir = choco_pkg.parent / "choco_dir" + choco_script = choco_dir / "tools" / "chocolateyInstall.ps1" + + def install(): + # Install Chocolatey 1.2.1 + + # Download Package + modules.cp.get_url(path=url, dest=str(choco_pkg)) + + # Unzip Package + modules.archive.unzip( + zip_file=str(choco_pkg), + dest=str(choco_dir), + extract_perms=False, + ) + + # Run installer script + assert choco_script.exists() + result = modules.cmd.script( + source=str(choco_script), + cwd=str(choco_script.parent), + shell="powershell", + python_shell=True, + ) + assert result["retcode"] == 0 + + def uninstall(): + choco_dir = os.environ.get("ChocolateyInstall", False) + if choco_dir: + # Remove Chocolatey Directory + modules.file.remove(path=choco_dir, force=True) + # Remove Chocolatey Environment Variables + for env_var in modules.environ.items(): + if env_var.lower().startswith("chocolatey"): + modules.environ.setval( + key=env_var, val=False, false_unsets=True, permanent="HKLM" + ) + modules.environ.setval( + key=env_var, val=False, false_unsets=True, permanent="HKCU" + ) + # Remove Chocolatey from the Path + for path in modules.win_path.get_path(): + if "chocolatey" in path.lower(): + modules.win_path.remove(path=path, rehash=True) + + # Remove unknown version + if salt.utils.path.which("choco.exe"): + uninstall() + + # Install known version + install() + + yield modules.chocolatey + + # Remove + uninstall() + + +@pytest.fixture(scope="function") +def clean(chocolatey_mod): + chocolatey_mod.uninstall(name="vim", force=True) + yield + chocolatey_mod.uninstall(name="vim", force=True) + + +@pytest.fixture(scope="function") +def vim(chocolatey_mod): + chocolatey_mod.install(name="vim", version="9.0.1672") + yield + chocolatey_mod.uninstall(name="vim", force=True) + + +def test_installed_latest(clean, chocolatey, chocolatey_mod): + chocolatey.installed(name="vim") + result = chocolatey_mod.version(name="vim") + assert "vim" in result + + +def test_installed_version(clean, chocolatey, chocolatey_mod): + chocolatey.installed(name="vim", version="9.0.1672") + result = chocolatey_mod.version(name="vim") + assert "vim" in result + assert result["vim"]["installed"][0] == "9.0.1672" + + +def test_uninstalled(vim, chocolatey, chocolatey_mod): + chocolatey.uninstalled(name="vim") + result = chocolatey_mod.version(name="vim") + assert "vim" not in result + + +def test_upgraded(vim, chocolatey, chocolatey_mod): + result = chocolatey_mod.version(name="vim") + assert "vim" in result + assert result["vim"]["installed"][0] == "9.0.1672" + chocolatey.upgraded(name="vim", version="9.0.1677") + result = chocolatey_mod.version(name="vim") + assert "vim" in result + assert result["vim"]["installed"][0] == "9.0.1677" diff --git a/tests/pytests/functional/states/test_chocolatey_latest.py b/tests/pytests/functional/states/test_chocolatey_latest.py new file mode 100644 index 00000000000..d388b362f6c --- /dev/null +++ b/tests/pytests/functional/states/test_chocolatey_latest.py @@ -0,0 +1,128 @@ +""" +Functional tests for chocolatey state +""" +import os +import pathlib + +import pytest + +import salt.utils.path + +pytestmark = [ + pytest.mark.windows_whitelisted, + pytest.mark.skip_unless_on_windows, + pytest.mark.slow_test, + pytest.mark.destructive_test, +] + + +@pytest.fixture(scope="module") +def chocolatey(states): + yield states.chocolatey + + +@pytest.fixture(scope="module") +def chocolatey_mod(modules): + + url = "https://community.chocolatey.org/api/v2/package/chocolatey/" + with pytest.helpers.temp_file(name="choco.nupkg") as nupkg: + choco_pkg = pathlib.Path(str(nupkg)) + choco_dir = choco_pkg.parent / "choco_dir" + choco_script = choco_dir / "tools" / "chocolateyInstall.ps1" + + def install(): + # Install Chocolatey 1.2.1 + + # Download Package + modules.cp.get_url(path=url, dest=str(choco_pkg)) + + # Unzip Package + modules.archive.unzip( + zip_file=str(choco_pkg), + dest=str(choco_dir), + extract_perms=False, + ) + + # Run installer script + assert choco_script.exists() + result = modules.cmd.script( + source=str(choco_script), + cwd=str(choco_script.parent), + shell="powershell", + python_shell=True, + ) + assert result["retcode"] == 0 + + def uninstall(): + choco_dir = os.environ.get("ChocolateyInstall", False) + if choco_dir: + # Remove Chocolatey Directory + modules.file.remove(path=choco_dir, force=True) + # Remove Chocolatey Environment Variables + for env_var in modules.environ.items(): + if env_var.lower().startswith("chocolatey"): + modules.environ.setval( + key=env_var, val=False, false_unsets=True, permanent="HKLM" + ) + modules.environ.setval( + key=env_var, val=False, false_unsets=True, permanent="HKCU" + ) + # Remove Chocolatey from the Path + for path in modules.win_path.get_path(): + if "chocolatey" in path.lower(): + modules.win_path.remove(path=path, rehash=True) + + # Remove unknown version + if salt.utils.path.which("choco.exe"): + uninstall() + + # Install known version + install() + + yield modules.chocolatey + + # Remove + uninstall() + + +@pytest.fixture(scope="function") +def clean(chocolatey_mod): + chocolatey_mod.uninstall(name="vim", force=True) + yield + chocolatey_mod.uninstall(name="vim", force=True) + + +@pytest.fixture(scope="function") +def vim(chocolatey_mod): + chocolatey_mod.install(name="vim", version="9.0.1672") + yield + chocolatey_mod.uninstall(name="vim", force=True) + + +def test_installed_latest(clean, chocolatey, chocolatey_mod): + chocolatey.installed(name="vim") + result = chocolatey_mod.version(name="vim") + assert "vim" in result + + +def test_installed_version(clean, chocolatey, chocolatey_mod): + chocolatey.installed(name="vim", version="9.0.1672") + result = chocolatey_mod.version(name="vim") + assert "vim" in result + assert result["vim"]["installed"][0] == "9.0.1672" + + +def test_uninstalled(vim, chocolatey, chocolatey_mod): + chocolatey.uninstalled(name="vim") + result = chocolatey_mod.version(name="vim") + assert "vim" not in result + + +def test_upgraded(vim, chocolatey, chocolatey_mod): + result = chocolatey_mod.version(name="vim") + assert "vim" in result + assert result["vim"]["installed"][0] == "9.0.1672" + chocolatey.upgraded(name="vim", version="9.0.1677") + result = chocolatey_mod.version(name="vim") + assert "vim" in result + assert result["vim"]["installed"][0] == "9.0.1677" diff --git a/tests/pytests/unit/modules/test_chocolatey.py b/tests/pytests/unit/modules/test_chocolatey.py index 7c5d7f08d95..ac2c7341045 100644 --- a/tests/pytests/unit/modules/test_chocolatey.py +++ b/tests/pytests/unit/modules/test_chocolatey.py @@ -1,8 +1,6 @@ """ Test for the chocolatey module """ - - import os import pytest diff --git a/tests/pytests/unit/states/test_chocolatey.py b/tests/pytests/unit/states/test_chocolatey.py index 4b9bec600ad..5f24d3cb9ae 100644 --- a/tests/pytests/unit/states/test_chocolatey.py +++ b/tests/pytests/unit/states/test_chocolatey.py @@ -1,9 +1,11 @@ +""" +Unit tests for chocolatey state +""" import logging import pytest import salt.modules.chocolatey as chocolatey_mod -import salt.modules.cmdmod as cmdmod import salt.states.chocolatey as chocolatey from tests.support.mock import MagicMock, patch @@ -112,4 +114,3 @@ def test_source_present(list_sources): }, } } - From e5eafd9dffba6a328c0ea574e71e1e8be72600da Mon Sep 17 00:00:00 2001 From: twangboy Date: Thu, 3 Aug 2023 23:01:07 -0600 Subject: [PATCH 50/57] Update changelog --- changelog/64622.fixed.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/64622.fixed.md b/changelog/64622.fixed.md index e46dbeb0ff6..1216345eebe 100644 --- a/changelog/64622.fixed.md +++ b/changelog/64622.fixed.md @@ -1 +1 @@ -Added support for Chocolatey 2.0.0+ +Added support for Chocolatey 2.0.0+ while maintaining support for older versions From c084e2bf7522df2bbbacb1d28b2f2d20c9398d37 Mon Sep 17 00:00:00 2001 From: twangboy Date: Fri, 4 Aug 2023 08:51:51 -0600 Subject: [PATCH 51/57] Fix test file name --- .../states/{test_chocolatey_1.2.1.py => test_chocolatey_1_2_1.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/pytests/functional/states/{test_chocolatey_1.2.1.py => test_chocolatey_1_2_1.py} (100%) diff --git a/tests/pytests/functional/states/test_chocolatey_1.2.1.py b/tests/pytests/functional/states/test_chocolatey_1_2_1.py similarity index 100% rename from tests/pytests/functional/states/test_chocolatey_1.2.1.py rename to tests/pytests/functional/states/test_chocolatey_1_2_1.py From a98d31775f46934506398ad244a991e80244ac57 Mon Sep 17 00:00:00 2001 From: MKLeb Date: Fri, 4 Aug 2023 14:42:54 -0400 Subject: [PATCH 52/57] Allow setting the key name using an environment variable --- tools/vm.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/vm.py b/tools/vm.py index c62f05750f1..9aea0369f2f 100644 --- a/tools/vm.py +++ b/tools/vm.py @@ -110,7 +110,7 @@ vm.add_argument("--region", help="The AWS region.", default=AWS_REGION) def create( ctx: Context, name: str, - key_name: str = os.environ.get("RUNNER_NAME"), # type: ignore[assignment] + key_name: str = os.environ.get("RUNNER_NAME") or os.environ.get("TOOLS_KEY_NAME"), # type: ignore[assignment] instance_type: str = None, no_delete: bool = False, no_destroy_on_failure: bool = False, @@ -575,7 +575,7 @@ def download_artifacts(ctx: Context, name: str): ) def sync_cache( ctx: Context, - key_name: str = os.environ.get("RUNNER_NAME"), # type: ignore[assignment] + key_name: str = os.environ.get("RUNNER_NAME") or os.environ.get("TOOLS_KEY_NAME"), # type: ignore[assignment] delete: bool = False, ): """ @@ -636,7 +636,7 @@ def sync_cache( ) def list_vms( ctx: Context, - key_name: str = os.environ.get("RUNNER_NAME"), # type: ignore[assignment] + key_name: str = os.environ.get("RUNNER_NAME") or os.environ.get("TOOLS_KEY_NAME"), # type: ignore[assignment] states: set[str] = None, ): """ From 3f3610f6709c08f9c3717edf388c793078049c63 Mon Sep 17 00:00:00 2001 From: MKLeb Date: Fri, 4 Aug 2023 14:45:02 -0400 Subject: [PATCH 53/57] Add docs explaining key name in environment --- tools/vm.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/vm.py b/tools/vm.py index 9aea0369f2f..facefe320f2 100644 --- a/tools/vm.py +++ b/tools/vm.py @@ -78,7 +78,7 @@ vm.add_argument("--region", help="The AWS region.", default=AWS_REGION) "choices": list(AMIS), }, "key_name": { - "help": "The SSH key name.", + "help": "The SSH key name. Will default to TOOLS_KEY_NAME in environment", }, "instance_type": { "help": "The instance type to use.", @@ -566,7 +566,9 @@ def download_artifacts(ctx: Context, name: str): @vm.command( name="sync-cache", arguments={ - "key_name": {"help": "The SSH key name."}, + "key_name": { + "help": "The SSH key name. Will default to TOOLS_KEY_NAME in environment" + }, "delete": { "help": "Delete the entries in the cache that don't align with ec2", "action": "store_true", @@ -626,7 +628,9 @@ def sync_cache( @vm.command( name="list", arguments={ - "key_name": {"help": "The SSH key name."}, + "key_name": { + "help": "The SSH key name. Will default to TOOLS_KEY_NAME in environment" + }, "states": { "help": "The instance state to filter by.", "flags": ["-s", "-state"], From a46d846ab6652c2a885f9b818ab1336ce7db6040 Mon Sep 17 00:00:00 2001 From: Megan Wilhite Date: Wed, 2 Aug 2023 09:35:26 -0600 Subject: [PATCH 54/57] Update to `cryptography==41.0.3` due to https://github.com/advisories/GHSA-jm77-qphf-c4w8 --- changelog/64595.security.md | 9 ++++++++- requirements/darwin.txt | 2 +- requirements/static/ci/py3.10/cloud.txt | 2 +- requirements/static/ci/py3.10/darwin.txt | 2 +- requirements/static/ci/py3.10/freebsd.txt | 3 ++- requirements/static/ci/py3.10/lint.txt | 2 +- requirements/static/ci/py3.10/linux.txt | 2 +- requirements/static/ci/py3.10/windows.txt | 2 +- requirements/static/ci/py3.7/cloud.txt | 2 +- requirements/static/ci/py3.7/freebsd.txt | 3 ++- requirements/static/ci/py3.7/lint.txt | 2 +- requirements/static/ci/py3.7/linux.txt | 2 +- requirements/static/ci/py3.7/windows.txt | 2 +- requirements/static/ci/py3.8/cloud.txt | 2 +- requirements/static/ci/py3.8/freebsd.txt | 3 ++- requirements/static/ci/py3.8/lint.txt | 2 +- requirements/static/ci/py3.8/linux.txt | 2 +- requirements/static/ci/py3.8/windows.txt | 2 +- requirements/static/ci/py3.9/cloud.txt | 2 +- requirements/static/ci/py3.9/darwin.txt | 2 +- requirements/static/ci/py3.9/freebsd.txt | 3 ++- requirements/static/ci/py3.9/lint.txt | 2 +- requirements/static/ci/py3.9/linux.txt | 2 +- requirements/static/ci/py3.9/windows.txt | 2 +- requirements/static/pkg/freebsd.in | 3 ++- requirements/static/pkg/linux.in | 2 +- requirements/static/pkg/py3.10/darwin.txt | 2 +- requirements/static/pkg/py3.10/freebsd.txt | 6 ++++-- requirements/static/pkg/py3.10/linux.txt | 2 +- requirements/static/pkg/py3.10/windows.txt | 2 +- requirements/static/pkg/py3.7/freebsd.txt | 6 ++++-- requirements/static/pkg/py3.7/linux.txt | 2 +- requirements/static/pkg/py3.7/windows.txt | 2 +- requirements/static/pkg/py3.8/freebsd.txt | 6 ++++-- requirements/static/pkg/py3.8/linux.txt | 2 +- requirements/static/pkg/py3.8/windows.txt | 2 +- requirements/static/pkg/py3.9/darwin.txt | 2 +- requirements/static/pkg/py3.9/freebsd.txt | 6 ++++-- requirements/static/pkg/py3.9/linux.txt | 2 +- requirements/static/pkg/py3.9/windows.txt | 2 +- requirements/windows.txt | 2 +- 41 files changed, 65 insertions(+), 45 deletions(-) diff --git a/changelog/64595.security.md b/changelog/64595.security.md index 63a7d529f92..009264aec77 100644 --- a/changelog/64595.security.md +++ b/changelog/64595.security.md @@ -1,3 +1,10 @@ -Upgrade to `cryptography==41.0.1`(and therefor `pyopenssl==23.2.0` due to https://github.com/advisories/GHSA-5cpq-8wj7-hf2v +Upgrade to `cryptography==41.0.3`(and therefor `pyopenssl==23.2.0` due to https://github.com/advisories/GHSA-jm77-qphf-c4w8) This only really impacts pip installs of Salt and the windows onedir since the linux and macos onedir build every package dependency from source, not from pre-existing wheels. + +Also resolves the following cryptography advisories: + +Due to: + * https://github.com/advisories/GHSA-5cpq-8wj7-hf2v + * https://github.com/advisories/GHSA-x4qr-2fvf-3mr5 + * https://github.com/advisories/GHSA-w7pp-m8wf-vj6r diff --git a/requirements/darwin.txt b/requirements/darwin.txt index 8477bdf0b1a..a519a42c83c 100644 --- a/requirements/darwin.txt +++ b/requirements/darwin.txt @@ -5,7 +5,7 @@ apache-libcloud>=2.4.0 backports.ssl_match_hostname>=3.7.0.1; python_version < '3.7' cherrypy>=17.4.1 -cryptography>=41.0.2 +cryptography>=41.0.3 gitpython>=3.1.30; python_version >= '3.7' idna>=2.8 linode-python>=1.1.1 diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index 797e0030942..eb9ab420b44 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -385,7 +385,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==1.0.15 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index 5bf23112ab6..5e045734e88 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -386,7 +386,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/darwin.txt # adal diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 009befe86ff..1f86bdc288c 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -384,8 +384,9 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via + # -r requirements/static/pkg/freebsd.in # adal # azure-cosmosdb-table # azure-keyvault diff --git a/requirements/static/ci/py3.10/lint.txt b/requirements/static/ci/py3.10/lint.txt index 09c8e61d80a..1173e47e53b 100644 --- a/requirements/static/ci/py3.10/lint.txt +++ b/requirements/static/ci/py3.10/lint.txt @@ -390,7 +390,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==1.0.15 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index 15892aa82db..f0f7feee91e 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -398,7 +398,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index 15fd9ed41b1..a1a6b241994 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -72,7 +72,7 @@ colorama==0.4.1 # via pytest contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/windows.txt # etcd3-py diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt index 600b0bd5392..1da7862d36b 100644 --- a/requirements/static/ci/py3.7/cloud.txt +++ b/requirements/static/ci/py3.7/cloud.txt @@ -392,7 +392,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==1.0.15 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt index 5cbcb1ec49b..d96521a7428 100644 --- a/requirements/static/ci/py3.7/freebsd.txt +++ b/requirements/static/ci/py3.7/freebsd.txt @@ -391,8 +391,9 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via + # -r requirements/static/pkg/freebsd.in # adal # azure-cosmosdb-table # azure-keyvault diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt index 550e3235fe6..f40636f2750 100644 --- a/requirements/static/ci/py3.7/lint.txt +++ b/requirements/static/ci/py3.7/lint.txt @@ -399,7 +399,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==1.0.15 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt index 1211423a9e8..4d4d0ae6ee2 100644 --- a/requirements/static/ci/py3.7/linux.txt +++ b/requirements/static/ci/py3.7/linux.txt @@ -405,7 +405,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.7/windows.txt b/requirements/static/ci/py3.7/windows.txt index 98dee3392b9..d796c5419f5 100644 --- a/requirements/static/ci/py3.7/windows.txt +++ b/requirements/static/ci/py3.7/windows.txt @@ -78,7 +78,7 @@ colorama==0.4.1 # via pytest contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/windows.txt # etcd3-py diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index 9a9be0b4f18..6a4db621001 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -390,7 +390,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==1.0.15 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.8/freebsd.txt b/requirements/static/ci/py3.8/freebsd.txt index 4af8390b311..b763fdc9490 100644 --- a/requirements/static/ci/py3.8/freebsd.txt +++ b/requirements/static/ci/py3.8/freebsd.txt @@ -389,8 +389,9 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via + # -r requirements/static/pkg/freebsd.in # adal # azure-cosmosdb-table # azure-keyvault diff --git a/requirements/static/ci/py3.8/lint.txt b/requirements/static/ci/py3.8/lint.txt index ce7c7ebcc2d..fa7ac9cdee4 100644 --- a/requirements/static/ci/py3.8/lint.txt +++ b/requirements/static/ci/py3.8/lint.txt @@ -397,7 +397,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==1.0.15 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.8/linux.txt b/requirements/static/ci/py3.8/linux.txt index 981576f2e0e..275602fb989 100644 --- a/requirements/static/ci/py3.8/linux.txt +++ b/requirements/static/ci/py3.8/linux.txt @@ -403,7 +403,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.8/windows.txt b/requirements/static/ci/py3.8/windows.txt index 4bc662a75af..12ce7aa277a 100644 --- a/requirements/static/ci/py3.8/windows.txt +++ b/requirements/static/ci/py3.8/windows.txt @@ -74,7 +74,7 @@ colorama==0.4.1 # via pytest contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/windows.txt # etcd3-py diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index c5ea66d3980..f39e8638e3b 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -390,7 +390,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==1.0.15 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index c088cf25eb0..5c9748fb873 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -391,7 +391,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/darwin.txt # adal diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index f10ea6a528d..ec9f2164412 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -389,8 +389,9 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via + # -r requirements/static/pkg/freebsd.in # adal # azure-cosmosdb-table # azure-keyvault diff --git a/requirements/static/ci/py3.9/lint.txt b/requirements/static/ci/py3.9/lint.txt index 2d3ef95cd92..302ab73383d 100644 --- a/requirements/static/ci/py3.9/lint.txt +++ b/requirements/static/ci/py3.9/lint.txt @@ -395,7 +395,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==1.0.15 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index 8373105cef7..0dcdfa75442 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -405,7 +405,7 @@ contextvars==2.4 # via -r requirements/base.txt croniter==0.3.29 ; sys_platform != "win32" # via -r requirements/static/ci/common.in -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # adal diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index 7874d241d12..9da4c42d61f 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -74,7 +74,7 @@ colorama==0.4.1 # via pytest contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/windows.txt # etcd3-py diff --git a/requirements/static/pkg/freebsd.in b/requirements/static/pkg/freebsd.in index 87c87c99e39..1e176a3bed5 100644 --- a/requirements/static/pkg/freebsd.in +++ b/requirements/static/pkg/freebsd.in @@ -1,9 +1,10 @@ # This file only exists to trigger the right static compiled requirements destination # Any non hard dependencies of Salt for FreeBSD can go here cherrypy +cryptography>=41.0.3 backports.ssl_match_hostname>=3.7.0.1; python_version < '3.7' pycparser>=2.21; python_version >= '3.9' -pyopenssl>=19.0.0 +pyopenssl>=23.2.0 python-dateutil>=2.8.0 python-gnupg>=0.4.4 setproctitle>=1.2.3 diff --git a/requirements/static/pkg/linux.in b/requirements/static/pkg/linux.in index 03173a533d1..5d51f4a5917 100644 --- a/requirements/static/pkg/linux.in +++ b/requirements/static/pkg/linux.in @@ -10,4 +10,4 @@ rpm-vercmp setproctitle>=1.2.3 timelib>=0.2.5 importlib-metadata>=3.3.0 -cryptography>=41.0.2 +cryptography>=41.0.3 diff --git a/requirements/static/pkg/py3.10/darwin.txt b/requirements/static/pkg/py3.10/darwin.txt index e2667937927..f226853cafa 100644 --- a/requirements/static/pkg/py3.10/darwin.txt +++ b/requirements/static/pkg/py3.10/darwin.txt @@ -18,7 +18,7 @@ cherrypy==18.6.1 # via -r requirements/darwin.txt contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/darwin.txt # pyopenssl diff --git a/requirements/static/pkg/py3.10/freebsd.txt b/requirements/static/pkg/py3.10/freebsd.txt index 8d2fe56ad5a..95078334ba5 100644 --- a/requirements/static/pkg/py3.10/freebsd.txt +++ b/requirements/static/pkg/py3.10/freebsd.txt @@ -16,8 +16,10 @@ cherrypy==18.6.1 # via -r requirements/static/pkg/freebsd.in contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 - # via pyopenssl +cryptography==41.0.3 + # via + # -r requirements/static/pkg/freebsd.in + # pyopenssl distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.10/linux.txt b/requirements/static/pkg/py3.10/linux.txt index 2219e99e56a..65494cd2941 100644 --- a/requirements/static/pkg/py3.10/linux.txt +++ b/requirements/static/pkg/py3.10/linux.txt @@ -16,7 +16,7 @@ cherrypy==18.6.1 # via -r requirements/static/pkg/linux.in contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # pyopenssl diff --git a/requirements/static/pkg/py3.10/windows.txt b/requirements/static/pkg/py3.10/windows.txt index 889f1288b18..43f9b0b342b 100644 --- a/requirements/static/pkg/py3.10/windows.txt +++ b/requirements/static/pkg/py3.10/windows.txt @@ -23,7 +23,7 @@ clr-loader==0.2.4 # via pythonnet contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/windows.txt # pyopenssl diff --git a/requirements/static/pkg/py3.7/freebsd.txt b/requirements/static/pkg/py3.7/freebsd.txt index af258097ffd..0204655d057 100644 --- a/requirements/static/pkg/py3.7/freebsd.txt +++ b/requirements/static/pkg/py3.7/freebsd.txt @@ -16,8 +16,10 @@ cherrypy==18.6.1 # via -r requirements/static/pkg/freebsd.in contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 - # via pyopenssl +cryptography==41.0.3 + # via + # -r requirements/static/pkg/freebsd.in + # pyopenssl distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.7/linux.txt b/requirements/static/pkg/py3.7/linux.txt index 376d4300a45..2e6e50a8707 100644 --- a/requirements/static/pkg/py3.7/linux.txt +++ b/requirements/static/pkg/py3.7/linux.txt @@ -16,7 +16,7 @@ cherrypy==18.6.1 # via -r requirements/static/pkg/linux.in contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # pyopenssl diff --git a/requirements/static/pkg/py3.7/windows.txt b/requirements/static/pkg/py3.7/windows.txt index 9b12b209653..c33ec04a947 100644 --- a/requirements/static/pkg/py3.7/windows.txt +++ b/requirements/static/pkg/py3.7/windows.txt @@ -23,7 +23,7 @@ clr-loader==0.2.4 # via pythonnet contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/windows.txt # pyopenssl diff --git a/requirements/static/pkg/py3.8/freebsd.txt b/requirements/static/pkg/py3.8/freebsd.txt index d95e3798e96..b1e837d00e8 100644 --- a/requirements/static/pkg/py3.8/freebsd.txt +++ b/requirements/static/pkg/py3.8/freebsd.txt @@ -16,8 +16,10 @@ cherrypy==18.6.1 # via -r requirements/static/pkg/freebsd.in contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 - # via pyopenssl +cryptography==41.0.3 + # via + # -r requirements/static/pkg/freebsd.in + # pyopenssl distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.8/linux.txt b/requirements/static/pkg/py3.8/linux.txt index 59c1f49d169..ec09ea6d2b5 100644 --- a/requirements/static/pkg/py3.8/linux.txt +++ b/requirements/static/pkg/py3.8/linux.txt @@ -16,7 +16,7 @@ cherrypy==18.6.1 # via -r requirements/static/pkg/linux.in contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # pyopenssl diff --git a/requirements/static/pkg/py3.8/windows.txt b/requirements/static/pkg/py3.8/windows.txt index 96d4e217b1a..01c50d8cbd9 100644 --- a/requirements/static/pkg/py3.8/windows.txt +++ b/requirements/static/pkg/py3.8/windows.txt @@ -23,7 +23,7 @@ clr-loader==0.2.4 # via pythonnet contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/windows.txt # pyopenssl diff --git a/requirements/static/pkg/py3.9/darwin.txt b/requirements/static/pkg/py3.9/darwin.txt index 89449fc9055..bc03b3bc58f 100644 --- a/requirements/static/pkg/py3.9/darwin.txt +++ b/requirements/static/pkg/py3.9/darwin.txt @@ -18,7 +18,7 @@ cherrypy==18.6.1 # via -r requirements/darwin.txt contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/darwin.txt # pyopenssl diff --git a/requirements/static/pkg/py3.9/freebsd.txt b/requirements/static/pkg/py3.9/freebsd.txt index 739271e590e..b932ff8cd8c 100644 --- a/requirements/static/pkg/py3.9/freebsd.txt +++ b/requirements/static/pkg/py3.9/freebsd.txt @@ -16,8 +16,10 @@ cherrypy==18.6.1 # via -r requirements/static/pkg/freebsd.in contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 - # via pyopenssl +cryptography==41.0.3 + # via + # -r requirements/static/pkg/freebsd.in + # pyopenssl distro==1.5.0 # via # -r requirements/base.txt diff --git a/requirements/static/pkg/py3.9/linux.txt b/requirements/static/pkg/py3.9/linux.txt index 6c5fed38051..f40b93e4dd5 100644 --- a/requirements/static/pkg/py3.9/linux.txt +++ b/requirements/static/pkg/py3.9/linux.txt @@ -16,7 +16,7 @@ cherrypy==18.6.1 # via -r requirements/static/pkg/linux.in contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/static/pkg/linux.in # pyopenssl diff --git a/requirements/static/pkg/py3.9/windows.txt b/requirements/static/pkg/py3.9/windows.txt index 42ca414ea99..15a71340a23 100644 --- a/requirements/static/pkg/py3.9/windows.txt +++ b/requirements/static/pkg/py3.9/windows.txt @@ -23,7 +23,7 @@ clr-loader==0.2.4 # via pythonnet contextvars==2.4 # via -r requirements/base.txt -cryptography==41.0.2 +cryptography==41.0.3 # via # -r requirements/windows.txt # pyopenssl diff --git a/requirements/windows.txt b/requirements/windows.txt index 9490031d7df..0423f26979b 100644 --- a/requirements/windows.txt +++ b/requirements/windows.txt @@ -10,7 +10,7 @@ backports.ssl-match-hostname>=3.7.0.1; python_version < '3.7' certifi>=2022.12.07 cffi>=1.14.5 cherrypy>=18.6.1 -cryptography>=41.0.2 +cryptography>=41.0.3 gitpython>=3.1.30; python_version >= '3.7' ioloop>=0.1a0 lxml>=4.6.3 From 6ed59e27279221de606c721f2e371477e64391ee Mon Sep 17 00:00:00 2001 From: Pedro Algarvio Date: Sun, 6 Aug 2023 08:18:00 +0100 Subject: [PATCH 55/57] Run `pyupgrade` against changed files from merge-forward Signed-off-by: Pedro Algarvio --- salt/utils/nacl.py | 24 +++++++++---------- .../integration/minion/test_return_retries.py | 4 +--- tests/pytests/unit/utils/test_nacl.py | 4 ++-- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/salt/utils/nacl.py b/salt/utils/nacl.py index b04904c2e14..746fd8aeaa4 100644 --- a/salt/utils/nacl.py +++ b/salt/utils/nacl.py @@ -58,7 +58,7 @@ def _get_config(**kwargs): "pk_file": pk_file, } - config_key = "{}.config".format(__virtualname__) + config_key = f"{__virtualname__}.config" try: config.update(__salt__["config.get"](config_key, {})) except (NameError, KeyError) as e: @@ -146,7 +146,7 @@ def keygen(sk_file=None, pk_file=None, **kwargs): } if pk_file is None: - pk_file = "{}.pub".format(sk_file) + pk_file = f"{sk_file}.pub" if sk_file and pk_file is None: if not os.path.isfile(sk_file): @@ -167,17 +167,15 @@ def keygen(sk_file=None, pk_file=None, **kwargs): else: # chmod 0600 file os.chmod(sk_file, 1536) - return "saved sk_file: {}".format(sk_file) + return f"saved sk_file: {sk_file}" else: - raise Exception("sk_file:{} already exist.".format(sk_file)) + raise Exception(f"sk_file:{sk_file} already exist.") if sk_file is None and pk_file: raise Exception("sk_file: Must be set inorder to generate a public key.") if os.path.isfile(sk_file) and os.path.isfile(pk_file): - raise Exception( - "sk_file:{} and pk_file:{} already exist.".format(sk_file, pk_file) - ) + raise Exception(f"sk_file:{sk_file} and pk_file:{pk_file} already exist.") if os.path.isfile(sk_file) and not os.path.isfile(pk_file): # generate pk using the sk @@ -187,7 +185,7 @@ def keygen(sk_file=None, pk_file=None, **kwargs): kp = nacl.public.PublicKey(sk) with salt.utils.files.fopen(pk_file, "wb") as keyf: keyf.write(base64.b64encode(kp.encode())) - return "saved pk_file: {}".format(pk_file) + return f"saved pk_file: {pk_file}" kp = nacl.public.PublicKey.generate() with salt.utils.files.fopen(sk_file, "wb") as keyf: @@ -203,7 +201,7 @@ def keygen(sk_file=None, pk_file=None, **kwargs): os.chmod(sk_file, 1536) with salt.utils.files.fopen(pk_file, "wb") as keyf: keyf.write(base64.b64encode(kp.encode())) - return "saved sk_file:{} pk_file: {}".format(sk_file, pk_file) + return f"saved sk_file:{sk_file} pk_file: {pk_file}" def enc(data, **kwargs): @@ -270,10 +268,10 @@ def enc_file(name, out=None, **kwargs): d = enc(data, **kwargs) if out: if os.path.isfile(out): - raise Exception("file:{} already exist.".format(out)) + raise Exception(f"file:{out} already exist.") with salt.utils.files.fopen(out, "wb") as f: f.write(salt.utils.stringutils.to_bytes(d)) - return "Wrote: {}".format(out) + return f"Wrote: {out}" return d @@ -342,10 +340,10 @@ def dec_file(name, out=None, **kwargs): d = dec(data, **kwargs) if out: if os.path.isfile(out): - raise Exception("file:{} already exist.".format(out)) + raise Exception(f"file:{out} already exist.") with salt.utils.files.fopen(out, "wb") as f: f.write(salt.utils.stringutils.to_bytes(d)) - return "Wrote: {}".format(out) + return f"Wrote: {out}" return d diff --git a/tests/pytests/integration/minion/test_return_retries.py b/tests/pytests/integration/minion/test_return_retries.py index 49517e52d22..1706825fc69 100644 --- a/tests/pytests/integration/minion/test_return_retries.py +++ b/tests/pytests/integration/minion/test_return_retries.py @@ -100,9 +100,7 @@ def test_pillar_timeout(salt_master_factory): overrides=minion_overrides, ) cli = master.salt_cli() - sls_tempfile = master.state_tree.base.temp_file( - "{}.sls".format(sls_name), sls_contents - ) + sls_tempfile = master.state_tree.base.temp_file(f"{sls_name}.sls", sls_contents) with master.started(), minion1.started(), minion2.started(), minion3.started(), minion4.started(), sls_tempfile: proc = cli.run("state.sls", sls_name, minion_tgt="*") # At least one minion should have a Pillar timeout diff --git a/tests/pytests/unit/utils/test_nacl.py b/tests/pytests/unit/utils/test_nacl.py index 77f40d6fbf9..e5de4b8e645 100644 --- a/tests/pytests/unit/utils/test_nacl.py +++ b/tests/pytests/unit/utils/test_nacl.py @@ -57,7 +57,7 @@ def test_keygen_sk_file(test_keygen): # test sk_file ret = nacl.keygen(sk_file=fpath) - assert "saved pk_file: {}.pub".format(fpath) == ret + assert f"saved pk_file: {fpath}.pub" == ret salt.utils.files.remove(str(fpath) + ".pub") @@ -71,7 +71,7 @@ def test_keygen_keyfile(test_keygen): wfh.write(test_keygen["sk"]) ret = nacl.keygen(keyfile=fpath) - assert "saved pk_file: {}.pub".format(fpath) == ret + assert f"saved pk_file: {fpath}.pub" == ret salt.utils.files.remove(str(fpath) + ".pub") From ef367f4450c0cb55077859d9eda0c88bdfde6378 Mon Sep 17 00:00:00 2001 From: Pedro Algarvio Date: Sun, 6 Aug 2023 08:36:32 +0100 Subject: [PATCH 56/57] Fix changed requirements during merge forward Signed-off-by: Pedro Algarvio --- requirements/crypto.txt | 2 +- requirements/static/ci/common.in | 1 - requirements/static/ci/py3.10/cloud.txt | 5 +- requirements/static/ci/py3.10/darwin.txt | 3 +- requirements/static/ci/py3.10/freebsd.txt | 1 - requirements/static/ci/py3.10/linux.txt | 3 +- requirements/static/ci/py3.10/windows.txt | 3 +- requirements/static/ci/py3.11/cloud.txt | 2 +- requirements/static/ci/py3.11/darwin.txt | 3 +- requirements/static/ci/py3.11/freebsd.txt | 1 - requirements/static/ci/py3.11/linux.txt | 3 +- requirements/static/ci/py3.11/windows.txt | 3 +- requirements/static/ci/py3.7/cloud.txt | 961 --------------------- requirements/static/ci/py3.7/freebsd.txt | 937 -------------------- requirements/static/ci/py3.7/lint.txt | 936 -------------------- requirements/static/ci/py3.7/linux.txt | 986 ---------------------- requirements/static/ci/py3.8/cloud.txt | 3 +- requirements/static/ci/py3.9/cloud.txt | 5 +- requirements/static/ci/py3.9/darwin.txt | 3 +- requirements/static/ci/py3.9/freebsd.txt | 1 - requirements/static/ci/py3.9/linux.txt | 3 +- requirements/static/ci/py3.9/windows.txt | 3 +- 22 files changed, 16 insertions(+), 3852 deletions(-) delete mode 100644 requirements/static/ci/py3.7/cloud.txt delete mode 100644 requirements/static/ci/py3.7/freebsd.txt delete mode 100644 requirements/static/ci/py3.7/lint.txt delete mode 100644 requirements/static/ci/py3.7/linux.txt diff --git a/requirements/crypto.txt b/requirements/crypto.txt index 45173f6f896..dd6c8c43368 100644 --- a/requirements/crypto.txt +++ b/requirements/crypto.txt @@ -1,2 +1,2 @@ pycryptodomex>=3.9.8 -cryptography>=40.0.2 +cryptography>=40.0.3 diff --git a/requirements/static/ci/common.in b/requirements/static/ci/common.in index f46d367406b..04d0c3eaa29 100644 --- a/requirements/static/ci/common.in +++ b/requirements/static/ci/common.in @@ -33,7 +33,6 @@ paramiko>=2.10.1; sys_platform != 'win32' and sys_platform != 'darwin' bcrypt passlib>=1.7.4 pynacl>=1.5.0 -pycparser>=2.21; python_version >= '3.9' pyinotify>=0.9.6; sys_platform != 'win32' and sys_platform != 'darwin' and platform_system != "openbsd" python-etcd>0.4.2 pyvmomi diff --git a/requirements/static/ci/py3.10/cloud.txt b/requirements/static/ci/py3.10/cloud.txt index 4aef74f5d14..de287823ad0 100644 --- a/requirements/static/ci/py3.10/cloud.txt +++ b/requirements/static/ci/py3.10/cloud.txt @@ -36,11 +36,11 @@ netaddr==0.8.0 # -r requirements/static/ci/cloud.in profitbricks==4.1.3 # via -r requirements/static/ci/cloud.in -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/py3.10/linux.txt # cffi -pypsexec==0.1.0 +pypsexec==0.3.0 # via -r requirements/static/ci/cloud.in pyspnego==0.9.0 # via @@ -62,7 +62,6 @@ six==1.16.0 # via # -c requirements/static/ci/py3.10/linux.txt # profitbricks - # pypsexec # pywinrm smbprotocol==1.10.1 # via diff --git a/requirements/static/ci/py3.10/darwin.txt b/requirements/static/ci/py3.10/darwin.txt index 6e8aa11a733..9918757a6fd 100644 --- a/requirements/static/ci/py3.10/darwin.txt +++ b/requirements/static/ci/py3.10/darwin.txt @@ -318,10 +318,9 @@ pyasn1==0.4.8 # -r requirements/darwin.txt # pyasn1-modules # rsa -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/../pkg/py3.10/darwin.txt - # -r requirements/static/ci/common.in # cffi pycryptodomex==3.9.8 # via diff --git a/requirements/static/ci/py3.10/freebsd.txt b/requirements/static/ci/py3.10/freebsd.txt index 59c1150172b..26edd4157d3 100644 --- a/requirements/static/ci/py3.10/freebsd.txt +++ b/requirements/static/ci/py3.10/freebsd.txt @@ -315,7 +315,6 @@ pyasn1==0.5.0 pycparser==2.21 ; python_version >= "3.9" # via # -c requirements/static/ci/../pkg/py3.10/freebsd.txt - # -r requirements/static/ci/common.in # -r requirements/static/pkg/freebsd.in # cffi pycryptodomex==3.9.8 diff --git a/requirements/static/ci/py3.10/linux.txt b/requirements/static/ci/py3.10/linux.txt index b9cdeb73136..225294603d9 100644 --- a/requirements/static/ci/py3.10/linux.txt +++ b/requirements/static/ci/py3.10/linux.txt @@ -338,10 +338,9 @@ pyasn1==0.5.0 # via # pyasn1-modules # rsa -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/../pkg/py3.10/linux.txt - # -r requirements/static/ci/common.in # cffi pycryptodomex==3.9.8 # via diff --git a/requirements/static/ci/py3.10/windows.txt b/requirements/static/ci/py3.10/windows.txt index d67bad7a95d..f0b3c7a07a7 100644 --- a/requirements/static/ci/py3.10/windows.txt +++ b/requirements/static/ci/py3.10/windows.txt @@ -273,10 +273,9 @@ pyasn1==0.4.8 # -r requirements/windows.txt # pyasn1-modules # rsa -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/../pkg/py3.10/windows.txt - # -r requirements/static/ci/common.in # cffi pycryptodomex==3.9.8 # via diff --git a/requirements/static/ci/py3.11/cloud.txt b/requirements/static/ci/py3.11/cloud.txt index 69d7d84bcdc..5f20bebcebf 100644 --- a/requirements/static/ci/py3.11/cloud.txt +++ b/requirements/static/ci/py3.11/cloud.txt @@ -36,7 +36,7 @@ netaddr==0.8.0 # -r requirements/static/ci/cloud.in profitbricks==4.1.3 # via -r requirements/static/ci/cloud.in -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/py3.11/linux.txt # cffi diff --git a/requirements/static/ci/py3.11/darwin.txt b/requirements/static/ci/py3.11/darwin.txt index bb513d600a0..6c9493c517b 100644 --- a/requirements/static/ci/py3.11/darwin.txt +++ b/requirements/static/ci/py3.11/darwin.txt @@ -316,10 +316,9 @@ pyasn1==0.4.8 # -r requirements/darwin.txt # pyasn1-modules # rsa -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/../pkg/py3.11/darwin.txt - # -r requirements/static/ci/common.in # cffi pycryptodomex==3.9.8 # via diff --git a/requirements/static/ci/py3.11/freebsd.txt b/requirements/static/ci/py3.11/freebsd.txt index 5bfc74efdb5..dd12f545bfc 100644 --- a/requirements/static/ci/py3.11/freebsd.txt +++ b/requirements/static/ci/py3.11/freebsd.txt @@ -313,7 +313,6 @@ pyasn1==0.5.0 pycparser==2.21 ; python_version >= "3.9" # via # -c requirements/static/ci/../pkg/py3.11/freebsd.txt - # -r requirements/static/ci/common.in # -r requirements/static/pkg/freebsd.in # cffi pycryptodomex==3.9.8 diff --git a/requirements/static/ci/py3.11/linux.txt b/requirements/static/ci/py3.11/linux.txt index 8f536f31ccd..0db34f5daa9 100644 --- a/requirements/static/ci/py3.11/linux.txt +++ b/requirements/static/ci/py3.11/linux.txt @@ -334,10 +334,9 @@ pyasn1==0.5.0 # via # pyasn1-modules # rsa -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/../pkg/py3.11/linux.txt - # -r requirements/static/ci/common.in # cffi pycryptodomex==3.9.8 # via diff --git a/requirements/static/ci/py3.11/windows.txt b/requirements/static/ci/py3.11/windows.txt index bbebdf2d88a..4c14a5bdb8e 100644 --- a/requirements/static/ci/py3.11/windows.txt +++ b/requirements/static/ci/py3.11/windows.txt @@ -271,10 +271,9 @@ pyasn1==0.4.8 # -r requirements/windows.txt # pyasn1-modules # rsa -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/../pkg/py3.11/windows.txt - # -r requirements/static/ci/common.in # cffi pycryptodomex==3.9.8 # via diff --git a/requirements/static/ci/py3.7/cloud.txt b/requirements/static/ci/py3.7/cloud.txt deleted file mode 100644 index 5086c7e82e8..00000000000 --- a/requirements/static/ci/py3.7/cloud.txt +++ /dev/null @@ -1,961 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/static/ci/py3.7/cloud.txt --pip-args='--constraint=requirements/static/ci/py3.7/linux.txt' requirements/base.txt requirements/pytest.txt requirements/static/ci/cloud.in requirements/static/ci/common.in requirements/static/pkg/linux.in requirements/zeromq.txt -# -adal==1.2.7 - # via - # azure-datalake-store - # msrestazure -aiohttp==3.8.5 - # via etcd3-py -aiosignal==1.2.0 - # via aiohttp -apache-libcloud==2.5.0 ; sys_platform != "win32" - # via - # -r requirements/static/ci/cloud.in - # -r requirements/static/ci/common.in -asn1crypto==1.4.0 - # via - # certvalidator - # oscrypto -async-timeout==4.0.2 - # via aiohttp -asynctest==0.13.0 - # via aiohttp -attrs==21.2.0 - # via - # aiohttp - # jsonschema - # pytest - # pytest-salt-factories - # pytest-shell-utilities - # pytest-skip-markers - # pytest-system-statistics -azure-applicationinsights==0.1.0 - # via azure -azure-batch==4.1.3 - # via azure -azure-common==1.1.27 - # via - # azure-applicationinsights - # azure-batch - # azure-cosmosdb-table - # azure-eventgrid - # azure-graphrbac - # azure-keyvault - # azure-loganalytics - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cdn - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-compute - # azure-mgmt-consumption - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-eventhub - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-managementpartner - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-media - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-rdbms - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-resource - # azure-mgmt-scheduler - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web - # azure-servicebus - # azure-servicefabric - # azure-servicemanagement-legacy - # azure-storage-blob - # azure-storage-common - # azure-storage-file - # azure-storage-queue -azure-cosmosdb-nspkg==2.0.2 - # via azure-cosmosdb-table -azure-cosmosdb-table==1.0.6 - # via azure -azure-datalake-store==0.0.52 - # via azure -azure-eventgrid==1.3.0 - # via azure -azure-graphrbac==0.40.0 - # via azure -azure-keyvault==1.1.0 - # via azure -azure-loganalytics==0.1.0 - # via azure -azure-mgmt-advisor==1.0.1 - # via azure-mgmt -azure-mgmt-applicationinsights==0.1.1 - # via azure-mgmt -azure-mgmt-authorization==0.50.0 - # via azure-mgmt -azure-mgmt-batch==5.0.1 - # via azure-mgmt -azure-mgmt-batchai==2.0.0 - # via azure-mgmt -azure-mgmt-billing==0.2.0 - # via azure-mgmt -azure-mgmt-cdn==3.1.0 - # via azure-mgmt -azure-mgmt-cognitiveservices==3.0.0 - # via azure-mgmt -azure-mgmt-commerce==1.0.1 - # via azure-mgmt -azure-mgmt-compute==4.6.2 - # via azure-mgmt -azure-mgmt-consumption==2.0.0 - # via azure-mgmt -azure-mgmt-containerinstance==1.5.0 - # via azure-mgmt -azure-mgmt-containerregistry==2.8.0 - # via azure-mgmt -azure-mgmt-containerservice==4.4.0 - # via azure-mgmt -azure-mgmt-cosmosdb==0.4.1 - # via azure-mgmt -azure-mgmt-datafactory==0.6.0 - # via azure-mgmt -azure-mgmt-datalake-analytics==0.6.0 - # via azure-mgmt -azure-mgmt-datalake-nspkg==3.0.1 - # via - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store -azure-mgmt-datalake-store==0.5.0 - # via azure-mgmt -azure-mgmt-datamigration==1.0.0 - # via azure-mgmt -azure-mgmt-devspaces==0.1.0 - # via azure-mgmt -azure-mgmt-devtestlabs==2.2.0 - # via azure-mgmt -azure-mgmt-dns==2.1.0 - # via azure-mgmt -azure-mgmt-eventgrid==1.0.0 - # via azure-mgmt -azure-mgmt-eventhub==2.6.0 - # via azure-mgmt -azure-mgmt-hanaonazure==0.1.1 - # via azure-mgmt -azure-mgmt-iotcentral==0.1.0 - # via azure-mgmt -azure-mgmt-iothub==0.5.0 - # via azure-mgmt -azure-mgmt-iothubprovisioningservices==0.2.0 - # via azure-mgmt -azure-mgmt-keyvault==1.1.0 - # via azure-mgmt -azure-mgmt-loganalytics==0.2.0 - # via azure-mgmt -azure-mgmt-logic==3.0.0 - # via azure-mgmt -azure-mgmt-machinelearningcompute==0.4.1 - # via azure-mgmt -azure-mgmt-managementgroups==0.1.0 - # via azure-mgmt -azure-mgmt-managementpartner==0.1.1 - # via azure-mgmt -azure-mgmt-maps==0.1.0 - # via azure-mgmt -azure-mgmt-marketplaceordering==0.1.0 - # via azure-mgmt -azure-mgmt-media==1.0.0 - # via azure-mgmt -azure-mgmt-monitor==0.5.2 - # via azure-mgmt -azure-mgmt-msi==0.2.0 - # via azure-mgmt -azure-mgmt-network==2.7.0 - # via azure-mgmt -azure-mgmt-notificationhubs==2.1.0 - # via azure-mgmt -azure-mgmt-nspkg==3.0.2 - # via - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-consumption - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-nspkg - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-scheduler - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web -azure-mgmt-policyinsights==0.1.0 - # via azure-mgmt -azure-mgmt-powerbiembedded==2.0.0 - # via azure-mgmt -azure-mgmt-rdbms==1.9.0 - # via azure-mgmt -azure-mgmt-recoveryservices==0.3.0 - # via azure-mgmt -azure-mgmt-recoveryservicesbackup==0.3.0 - # via azure-mgmt -azure-mgmt-redis==5.0.0 - # via azure-mgmt -azure-mgmt-relay==0.1.0 - # via azure-mgmt -azure-mgmt-reservations==0.2.1 - # via azure-mgmt -azure-mgmt-resource==2.2.0 - # via azure-mgmt -azure-mgmt-scheduler==2.0.0 - # via azure-mgmt -azure-mgmt-search==2.1.0 - # via azure-mgmt -azure-mgmt-servicebus==0.5.3 - # via azure-mgmt -azure-mgmt-servicefabric==0.2.0 - # via azure-mgmt -azure-mgmt-signalr==0.1.1 - # via azure-mgmt -azure-mgmt-sql==0.9.1 - # via azure-mgmt -azure-mgmt-storage==2.0.0 - # via azure-mgmt -azure-mgmt-subscription==0.2.0 - # via azure-mgmt -azure-mgmt-trafficmanager==0.50.0 - # via azure-mgmt -azure-mgmt-web==0.35.0 - # via azure-mgmt -azure-mgmt==4.0.0 - # via azure -azure-nspkg==3.0.2 - # via - # azure-applicationinsights - # azure-batch - # azure-cosmosdb-nspkg - # azure-graphrbac - # azure-keyvault - # azure-loganalytics - # azure-mgmt-nspkg - # azure-servicebus - # azure-servicefabric - # azure-servicemanagement-legacy -azure-servicebus==0.21.1 - # via azure -azure-servicefabric==6.3.0.0 - # via azure -azure-servicemanagement-legacy==0.20.7 - # via azure -azure-storage-blob==1.5.0 - # via azure -azure-storage-common==1.4.2 - # via - # azure-storage-blob - # azure-storage-file - # azure-storage-queue -azure-storage-file==1.4.0 - # via azure -azure-storage-queue==1.4.0 - # via azure -azure==4.0.0 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -backports.entry-points-selectable==1.1.0 - # via virtualenv -bcrypt==3.2.0 - # via - # paramiko - # passlib -boto3==1.21.46 ; python_version >= "3.6" - # via - # -r requirements/static/ci/common.in - # moto -boto==2.49.0 - # via -r requirements/static/ci/common.in -botocore==1.24.46 - # via - # boto3 - # moto - # s3transfer -cachetools==4.2.2 - # via google-auth -cassandra-driver==3.25.0 - # via -r requirements/static/ci/common.in -certifi==2023.07.22 - # via - # -r requirements/static/ci/common.in - # kubernetes - # msrest - # requests -certvalidator==0.11.1 - # via vcert -cffi==1.15.1 - # via - # -r requirements/static/ci/common.in - # azure-datalake-store - # bcrypt - # cryptography - # napalm - # pynacl -charset-normalizer==3.1.0 - # via - # aiohttp - # requests -cheetah3==3.2.6.post1 - # via -r requirements/static/ci/common.in -cheroot==8.5.2 - # via cherrypy -cherrypy==18.6.1 - # via - # -r requirements/static/ci/common.in - # -r requirements/static/pkg/linux.in -ciscoconfparse==1.5.46 - # via napalm -click==8.0.1 - # via geomet -clustershell==1.8.3 - # via -r requirements/static/ci/common.in -colorama==0.4.4 - # via ciscoconfparse -contextvars==2.4 - # via -r requirements/base.txt -croniter==1.0.15 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -cryptography==41.0.3 - # via - # -r requirements/static/pkg/linux.in - # adal - # azure-cosmosdb-table - # azure-keyvault - # azure-storage-common - # etcd3-py - # moto - # paramiko - # pyopenssl - # pyspnego - # requests-ntlm - # smbprotocol - # vcert -distlib==0.3.3 - # via virtualenv -distro==1.8.0 - # via - # -r requirements/base.txt - # pytest-skip-markers -dnspython==2.1.0 - # via - # -r requirements/static/ci/common.in - # ciscoconfparse - # python-etcd -docker==5.0.2 - # via - # -r requirements/static/ci/common.in - # pytest-salt-factories -etcd3-py==0.1.6 ; python_version >= "3.6" - # via -r requirements/static/ci/common.in -exceptiongroup==1.0.4 - # via pytest -filelock==3.0.12 - # via virtualenv -flaky==3.7.0 - # via -r requirements/pytest.txt -frozenlist==1.3.0 - # via - # aiohttp - # aiosignal -future==0.18.3 - # via - # napalm - # textfsm -genshi==0.7.5 - # via -r requirements/static/ci/common.in -geomet==0.2.1.post1 - # via cassandra-driver -gitdb==4.0.7 - # via gitpython -gitpython==3.1.30 ; python_version >= "3.7" - # via -r requirements/static/ci/common.in -google-auth==2.1.0 - # via kubernetes -idna==2.8 - # via - # etcd3-py - # requests - # yarl -immutables==0.19 - # via contextvars -importlib-metadata==4.8.1 - # via - # -r requirements/static/pkg/linux.in - # backports.entry-points-selectable - # click - # jsonschema - # mako - # moto - # pluggy - # pytest - # virtualenv -iniconfig==1.1.1 - # via pytest -ipaddress==1.0.23 - # via kubernetes -isodate==0.6.0 - # via msrest -jaraco.classes==3.2.1 - # via jaraco.collections -jaraco.collections==3.4.0 - # via cherrypy -jaraco.functools==3.3.0 - # via - # cheroot - # jaraco.text - # tempora -jaraco.text==3.5.1 - # via jaraco.collections -jinja2==3.1.2 - # via - # -r requirements/base.txt - # junos-eznc - # moto - # napalm -jmespath==0.10.0 - # via - # -r requirements/base.txt - # -r requirements/static/ci/common.in - # boto3 - # botocore -jsonschema==3.2.0 - # via -r requirements/static/ci/common.in -junos-eznc==2.4.0 ; sys_platform != "win32" and python_version <= "3.10" - # via - # -r requirements/static/ci/common.in - # napalm -jxmlease==1.0.3 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -kazoo==2.8.0 ; sys_platform != "win32" and sys_platform != "darwin" - # via -r requirements/static/ci/common.in -keyring==5.7.1 - # via -r requirements/static/ci/common.in -kubernetes==3.0.0 - # via -r requirements/static/ci/common.in -libnacl==1.8.0 ; sys_platform != "win32" and sys_platform != "darwin" - # via -r requirements/static/ci/common.in -loguru==0.6.0 - # via ciscoconfparse -looseversion==1.0.2 - # via -r requirements/base.txt -lxml==4.9.1 - # via - # junos-eznc - # napalm - # ncclient -mako==1.2.2 - # via -r requirements/static/ci/common.in -markupsafe==2.1.2 - # via - # -r requirements/base.txt - # jinja2 - # mako - # moto - # werkzeug -mock==4.0.3 - # via -r requirements/pytest.txt -more-itertools==8.8.0 - # via - # cheroot - # cherrypy - # jaraco.classes - # jaraco.functools -moto==3.0.1 ; python_version >= "3.6" - # via -r requirements/static/ci/common.in -msgpack==1.0.2 - # via - # -r requirements/base.txt - # pytest-salt-factories -msrest==0.6.21 - # via - # azure-applicationinsights - # azure-eventgrid - # azure-keyvault - # azure-loganalytics - # azure-mgmt-cdn - # azure-mgmt-compute - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-dns - # azure-mgmt-eventhub - # azure-mgmt-keyvault - # azure-mgmt-managementpartner - # azure-mgmt-media - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-rdbms - # azure-mgmt-resource - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-servicefabric - # msrestazure -msrestazure==0.6.4 - # via - # azure-batch - # azure-eventgrid - # azure-graphrbac - # azure-keyvault - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cdn - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-compute - # azure-mgmt-consumption - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-eventhub - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-managementpartner - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-media - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-rdbms - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-resource - # azure-mgmt-scheduler - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web -multidict==6.0.2 - # via - # aiohttp - # yarl -napalm==3.3.1 ; sys_platform != "win32" and python_version > "3.6" and python_version < "3.10" - # via -r requirements/static/ci/common.in -ncclient==0.6.12 - # via - # junos-eznc - # napalm -netaddr==0.7.19 - # via - # -r requirements/static/ci/cloud.in - # junos-eznc - # napalm - # pyeapi -netmiko==3.4.0 - # via napalm -ntc-templates==2.3.2 - # via - # junos-eznc - # netmiko -ntlm-auth==1.3.0 - # via requests-ntlm -oauthlib==3.2.2 - # via requests-oauthlib -oscrypto==1.2.1 - # via certvalidator -packaging==21.3 - # via - # -r requirements/base.txt - # pytest -paramiko==2.10.1 ; sys_platform != "win32" and sys_platform != "darwin" - # via - # -r requirements/static/ci/common.in - # junos-eznc - # napalm - # ncclient - # netmiko - # scp -passlib[bcrypt]==1.7.4 - # via - # -r requirements/static/ci/common.in - # ciscoconfparse -platformdirs==2.3.0 - # via virtualenv -pluggy==1.0.0 - # via pytest -portend==2.7.1 - # via cherrypy -profitbricks==4.1.3 - # via -r requirements/static/ci/cloud.in -psutil==5.8.0 - # via - # -r requirements/base.txt - # pytest-salt-factories - # pytest-shell-utilities - # pytest-system-statistics -pyasn1-modules==0.2.8 - # via google-auth -pyasn1==0.4.8 - # via - # pyasn1-modules - # rsa -pycparser==2.19 - # via cffi -pycryptodomex==3.10.1 - # via -r requirements/crypto.txt -pyeapi==0.8.4 - # via napalm -pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd" - # via -r requirements/static/ci/common.in -pyjwt==2.4.0 - # via adal -pynacl==1.5.0 - # via - # -r requirements/static/ci/common.in - # paramiko -pyopenssl==23.2.0 - # via - # -r requirements/static/pkg/linux.in - # etcd3-py -pyparsing==3.0.9 - # via - # junos-eznc - # packaging -pypsexec==0.1.0 - # via -r requirements/static/ci/cloud.in -pyrsistent==0.18.0 - # via jsonschema -pyserial==3.5 - # via - # junos-eznc - # netmiko -pyspnego==0.8.0 - # via - # -r requirements/static/ci/cloud.in - # smbprotocol -pytest-custom-exit-code==0.3.0 - # via -r requirements/pytest.txt -pytest-helpers-namespace==2021.4.29 - # via - # -r requirements/pytest.txt - # pytest-salt-factories - # pytest-shell-utilities -pytest-httpserver==1.0.4 - # via -r requirements/pytest.txt -pytest-salt-factories[docker]==1.0.0rc21 ; sys_platform != "win32" - # via -r requirements/pytest.txt -pytest-shell-utilities==1.6.0 - # via pytest-salt-factories -pytest-skip-markers==1.2.0 - # via - # pytest-salt-factories - # pytest-shell-utilities - # pytest-system-statistics -pytest-subtests==0.5.0 - # via -r requirements/pytest.txt -pytest-system-statistics==1.0.2 - # via pytest-salt-factories -pytest-tempdir==2019.10.12 - # via - # -r requirements/pytest.txt - # pytest-salt-factories -pytest-timeout==2.0.2 - # via -r requirements/pytest.txt -pytest==7.2.0 ; python_version > "3.6" - # via - # -r requirements/pytest.txt - # pytest-custom-exit-code - # pytest-helpers-namespace - # pytest-salt-factories - # pytest-shell-utilities - # pytest-skip-markers - # pytest-subtests - # pytest-system-statistics - # pytest-tempdir - # pytest-timeout -python-dateutil==2.8.2 - # via - # -r requirements/static/pkg/linux.in - # adal - # azure-cosmosdb-table - # azure-storage-common - # botocore - # croniter - # kubernetes - # moto - # vcert -python-etcd==0.4.5 - # via -r requirements/static/ci/common.in -python-gnupg==0.4.8 - # via -r requirements/static/pkg/linux.in -pytz==2022.1 - # via - # moto - # tempora -pyvmomi==7.0.2 - # via -r requirements/static/ci/common.in -pywinrm==0.3.0 - # via -r requirements/static/ci/cloud.in -pyyaml==6.0.1 - # via - # -r requirements/base.txt - # clustershell - # junos-eznc - # kubernetes - # napalm - # yamlordereddictloader -pyzmq==23.2.0 - # via - # -r requirements/zeromq.txt - # pytest-salt-factories -requests-ntlm==1.1.0 - # via pywinrm -requests-oauthlib==1.3.0 - # via msrest -requests==2.31.0 - # via - # -r requirements/base.txt - # -r requirements/static/ci/common.in - # adal - # apache-libcloud - # azure-cosmosdb-table - # azure-datalake-store - # azure-keyvault - # azure-servicebus - # azure-servicemanagement-legacy - # azure-storage-common - # docker - # etcd3-py - # kubernetes - # moto - # msrest - # napalm - # profitbricks - # pyvmomi - # pywinrm - # requests-ntlm - # requests-oauthlib - # responses - # vcert -responses==0.14.0 - # via moto -rfc3987==1.3.8 - # via -r requirements/static/ci/common.in -rpm-vercmp==0.1.2 - # via -r requirements/static/pkg/linux.in -rsa==4.7.2 - # via google-auth -s3transfer==0.5.0 - # via boto3 -scp==0.14.1 - # via - # junos-eznc - # napalm - # netmiko -semantic-version==2.9.0 - # via etcd3-py -setproctitle==1.3.2 - # via -r requirements/static/pkg/linux.in -six==1.16.0 - # via - # bcrypt - # cassandra-driver - # cheroot - # etcd3-py - # genshi - # geomet - # isodate - # jsonschema - # junos-eznc - # kazoo - # kubernetes - # msrestazure - # ncclient - # paramiko - # profitbricks - # pypsexec - # python-dateutil - # pyvmomi - # pywinrm - # responses - # textfsm - # transitions - # vcert - # virtualenv - # websocket-client -smbprotocol==1.10.1 - # via - # -r requirements/static/ci/cloud.in - # pypsexec -smmap==4.0.0 - # via gitdb -sqlparse==0.4.4 - # via -r requirements/static/ci/common.in -strict-rfc3339==0.7 - # via -r requirements/static/ci/common.in -tempora==4.1.1 - # via portend -tenacity==8.0.1 - # via netmiko -textfsm==1.1.2 - # via - # napalm - # ntc-templates -timelib==0.2.5 - # via -r requirements/static/pkg/linux.in -toml==0.10.2 - # via -r requirements/static/ci/common.in -tomli==2.0.1 - # via pytest -transitions==0.8.9 - # via junos-eznc -typing-extensions==3.10.0.0 - # via - # aiohttp - # async-timeout - # gitpython - # immutables - # importlib-metadata - # pytest-shell-utilities - # pytest-system-statistics - # yarl -urllib3==1.26.6 - # via - # botocore - # kubernetes - # python-etcd - # requests - # responses -vcert==0.7.4 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -virtualenv==20.8.0 - # via - # -r requirements/static/ci/common.in - # pytest-salt-factories -watchdog==2.1.5 - # via -r requirements/static/ci/common.in -websocket-client==0.40.0 - # via - # docker - # kubernetes -wempy==0.2.1 - # via -r requirements/static/ci/common.in -werkzeug==2.2.3 - # via - # moto - # pytest-httpserver -xmltodict==0.12.0 - # via - # moto - # pywinrm -yamlordereddictloader==0.4.0 - # via junos-eznc -yarl==1.7.2 - # via aiohttp -zc.lockfile==2.0 - # via cherrypy -zipp==3.5.0 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/static/ci/py3.7/freebsd.txt b/requirements/static/ci/py3.7/freebsd.txt deleted file mode 100644 index 99f0613363a..00000000000 --- a/requirements/static/ci/py3.7/freebsd.txt +++ /dev/null @@ -1,937 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/static/ci/py3.7/freebsd.txt --pip-args='--constraint=requirements/static/pkg/py3.7/freebsd.txt' requirements/base.txt requirements/pytest.txt requirements/static/ci/common.in requirements/static/ci/freebsd.in requirements/static/pkg/freebsd.in requirements/zeromq.txt -# -adal==1.2.5 - # via - # azure-datalake-store - # msrestazure -aiohttp==3.8.5 - # via etcd3-py -aiosignal==1.2.0 - # via aiohttp -apache-libcloud==2.5.0 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -asn1crypto==1.3.0 - # via - # certvalidator - # oscrypto -async-timeout==4.0.2 - # via aiohttp -asynctest==0.13.0 - # via aiohttp -attrs==20.3.0 - # via - # aiohttp - # jsonschema - # pytest - # pytest-salt-factories - # pytest-shell-utilities - # pytest-skip-markers - # pytest-system-statistics -azure-applicationinsights==0.1.0 - # via azure -azure-batch==4.1.3 - # via azure -azure-common==1.1.26 - # via - # azure-applicationinsights - # azure-batch - # azure-cosmosdb-table - # azure-eventgrid - # azure-graphrbac - # azure-keyvault - # azure-loganalytics - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cdn - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-compute - # azure-mgmt-consumption - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-eventhub - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-managementpartner - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-media - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-rdbms - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-resource - # azure-mgmt-scheduler - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web - # azure-servicebus - # azure-servicefabric - # azure-servicemanagement-legacy - # azure-storage-blob - # azure-storage-common - # azure-storage-file - # azure-storage-queue -azure-cosmosdb-nspkg==2.0.2 - # via azure-cosmosdb-table -azure-cosmosdb-table==1.0.6 - # via azure -azure-datalake-store==0.0.51 - # via azure -azure-eventgrid==1.3.0 - # via azure -azure-graphrbac==0.40.0 - # via azure -azure-keyvault==1.1.0 - # via azure -azure-loganalytics==0.1.0 - # via azure -azure-mgmt-advisor==1.0.1 - # via azure-mgmt -azure-mgmt-applicationinsights==0.1.1 - # via azure-mgmt -azure-mgmt-authorization==0.50.0 - # via azure-mgmt -azure-mgmt-batch==5.0.1 - # via azure-mgmt -azure-mgmt-batchai==2.0.0 - # via azure-mgmt -azure-mgmt-billing==0.2.0 - # via azure-mgmt -azure-mgmt-cdn==3.1.0 - # via azure-mgmt -azure-mgmt-cognitiveservices==3.0.0 - # via azure-mgmt -azure-mgmt-commerce==1.0.1 - # via azure-mgmt -azure-mgmt-compute==4.6.2 - # via azure-mgmt -azure-mgmt-consumption==2.0.0 - # via azure-mgmt -azure-mgmt-containerinstance==1.5.0 - # via azure-mgmt -azure-mgmt-containerregistry==2.8.0 - # via azure-mgmt -azure-mgmt-containerservice==4.4.0 - # via azure-mgmt -azure-mgmt-cosmosdb==0.4.1 - # via azure-mgmt -azure-mgmt-datafactory==0.6.0 - # via azure-mgmt -azure-mgmt-datalake-analytics==0.6.0 - # via azure-mgmt -azure-mgmt-datalake-nspkg==3.0.1 - # via - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store -azure-mgmt-datalake-store==0.5.0 - # via azure-mgmt -azure-mgmt-datamigration==1.0.0 - # via azure-mgmt -azure-mgmt-devspaces==0.1.0 - # via azure-mgmt -azure-mgmt-devtestlabs==2.2.0 - # via azure-mgmt -azure-mgmt-dns==2.1.0 - # via azure-mgmt -azure-mgmt-eventgrid==1.0.0 - # via azure-mgmt -azure-mgmt-eventhub==2.6.0 - # via azure-mgmt -azure-mgmt-hanaonazure==0.1.1 - # via azure-mgmt -azure-mgmt-iotcentral==0.1.0 - # via azure-mgmt -azure-mgmt-iothub==0.5.0 - # via azure-mgmt -azure-mgmt-iothubprovisioningservices==0.2.0 - # via azure-mgmt -azure-mgmt-keyvault==1.1.0 - # via azure-mgmt -azure-mgmt-loganalytics==0.2.0 - # via azure-mgmt -azure-mgmt-logic==3.0.0 - # via azure-mgmt -azure-mgmt-machinelearningcompute==0.4.1 - # via azure-mgmt -azure-mgmt-managementgroups==0.1.0 - # via azure-mgmt -azure-mgmt-managementpartner==0.1.1 - # via azure-mgmt -azure-mgmt-maps==0.1.0 - # via azure-mgmt -azure-mgmt-marketplaceordering==0.1.0 - # via azure-mgmt -azure-mgmt-media==1.0.0 - # via azure-mgmt -azure-mgmt-monitor==0.5.2 - # via azure-mgmt -azure-mgmt-msi==0.2.0 - # via azure-mgmt -azure-mgmt-network==2.7.0 - # via azure-mgmt -azure-mgmt-notificationhubs==2.1.0 - # via azure-mgmt -azure-mgmt-nspkg==3.0.2 - # via - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-consumption - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-nspkg - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-scheduler - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web -azure-mgmt-policyinsights==0.1.0 - # via azure-mgmt -azure-mgmt-powerbiembedded==2.0.0 - # via azure-mgmt -azure-mgmt-rdbms==1.9.0 - # via azure-mgmt -azure-mgmt-recoveryservices==0.3.0 - # via azure-mgmt -azure-mgmt-recoveryservicesbackup==0.3.0 - # via azure-mgmt -azure-mgmt-redis==5.0.0 - # via azure-mgmt -azure-mgmt-relay==0.1.0 - # via azure-mgmt -azure-mgmt-reservations==0.2.1 - # via azure-mgmt -azure-mgmt-resource==2.2.0 - # via azure-mgmt -azure-mgmt-scheduler==2.0.0 - # via azure-mgmt -azure-mgmt-search==2.1.0 - # via azure-mgmt -azure-mgmt-servicebus==0.5.3 - # via azure-mgmt -azure-mgmt-servicefabric==0.2.0 - # via azure-mgmt -azure-mgmt-signalr==0.1.1 - # via azure-mgmt -azure-mgmt-sql==0.9.1 - # via azure-mgmt -azure-mgmt-storage==2.0.0 - # via azure-mgmt -azure-mgmt-subscription==0.2.0 - # via azure-mgmt -azure-mgmt-trafficmanager==0.50.0 - # via azure-mgmt -azure-mgmt-web==0.35.0 - # via azure-mgmt -azure-mgmt==4.0.0 - # via azure -azure-nspkg==3.0.2 - # via - # azure-applicationinsights - # azure-batch - # azure-cosmosdb-nspkg - # azure-graphrbac - # azure-keyvault - # azure-loganalytics - # azure-mgmt-nspkg - # azure-servicebus - # azure-servicefabric - # azure-servicemanagement-legacy -azure-servicebus==0.21.1 - # via azure -azure-servicefabric==6.3.0.0 - # via azure -azure-servicemanagement-legacy==0.20.7 - # via azure -azure-storage-blob==1.5.0 - # via azure -azure-storage-common==1.4.2 - # via - # azure-storage-blob - # azure-storage-file - # azure-storage-queue -azure-storage-file==1.4.0 - # via azure -azure-storage-queue==1.4.0 - # via azure -azure==4.0.0 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -backports.entry-points-selectable==1.1.0 - # via virtualenv -bcrypt==3.1.6 - # via - # paramiko - # passlib -boto3==1.21.46 ; python_version >= "3.6" - # via - # -r requirements/static/ci/common.in - # moto -boto==2.49.0 - # via -r requirements/static/ci/common.in -botocore==1.24.46 - # via - # boto3 - # moto - # s3transfer -cachetools==3.1.0 - # via google-auth -cassandra-driver==3.24.0 - # via -r requirements/static/ci/common.in -certifi==2023.07.22 - # via - # -r requirements/static/ci/common.in - # kubernetes - # msrest - # requests -certvalidator==0.11.1 - # via vcert -cffi==1.15.1 - # via - # -r requirements/static/ci/common.in - # azure-datalake-store - # bcrypt - # cryptography - # napalm - # pygit2 - # pynacl -charset-normalizer==3.1.0 - # via - # aiohttp - # requests -cheetah3==3.2.6.post2 - # via -r requirements/static/ci/common.in -cheroot==8.5.2 - # via cherrypy -cherrypy==18.6.1 - # via - # -r requirements/static/ci/common.in - # -r requirements/static/pkg/freebsd.in -ciscoconfparse==1.5.19 - # via napalm -click==7.1.2 - # via geomet -clustershell==1.8.3 - # via -r requirements/static/ci/common.in -colorama==0.4.3 - # via ciscoconfparse -contextvars==2.4 - # via -r requirements/base.txt -croniter==0.3.29 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -cryptography==41.0.3 - # via - # -r requirements/static/pkg/freebsd.in - # adal - # azure-cosmosdb-table - # azure-keyvault - # azure-storage-common - # etcd3-py - # moto - # paramiko - # pyopenssl - # vcert -distlib==0.3.2 - # via virtualenv -distro==1.8.0 - # via - # -r requirements/base.txt - # -r requirements/static/pkg/freebsd.in - # pytest-skip-markers -dnspython==1.16.0 - # via - # -r requirements/static/ci/common.in - # ciscoconfparse - # python-etcd -docker==5.0.3 - # via - # -r requirements/static/ci/common.in - # pytest-salt-factories -etcd3-py==0.1.6 ; python_version >= "3.6" - # via -r requirements/static/ci/common.in -exceptiongroup==1.0.4 - # via pytest -filelock==3.0.12 - # via virtualenv -flaky==3.7.0 - # via -r requirements/pytest.txt -frozenlist==1.3.0 - # via - # aiohttp - # aiosignal -future==0.18.3 - # via - # napalm - # textfsm -genshi==0.7.5 - # via -r requirements/static/ci/common.in -geomet==0.2.1.post1 - # via cassandra-driver -gitdb==4.0.5 - # via gitpython -gitpython==3.1.30 ; python_version >= "3.7" - # via -r requirements/static/ci/common.in -google-auth==1.6.3 - # via kubernetes -hglib==2.6.1 - # via -r requirements/static/ci/freebsd.in -idna==2.8 - # via - # etcd3-py - # requests - # yarl -immutables==0.15 - # via contextvars -importlib-metadata==4.6.4 - # via - # -r requirements/static/pkg/freebsd.in - # backports.entry-points-selectable - # jsonschema - # mako - # moto - # pluggy - # pytest - # virtualenv -iniconfig==1.0.1 - # via pytest -ipaddress==1.0.22 - # via kubernetes -isodate==0.6.0 - # via msrest -jaraco.classes==3.2.1 - # via jaraco.collections -jaraco.collections==3.4.0 - # via cherrypy -jaraco.functools==2.0 - # via - # cheroot - # jaraco.text - # tempora -jaraco.text==3.5.1 - # via jaraco.collections -jinja2==3.1.2 - # via - # -r requirements/base.txt - # junos-eznc - # moto - # napalm -jmespath==1.0.1 - # via - # -r requirements/base.txt - # -r requirements/static/ci/common.in - # boto3 - # botocore -jsonschema==3.2.0 - # via -r requirements/static/ci/common.in -junos-eznc==2.4.0 ; sys_platform != "win32" and python_version <= "3.10" - # via - # -r requirements/static/ci/common.in - # napalm -jxmlease==1.0.1 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -kazoo==2.6.1 ; sys_platform != "win32" and sys_platform != "darwin" - # via -r requirements/static/ci/common.in -keyring==5.7.1 - # via -r requirements/static/ci/common.in -kubernetes==3.0.0 - # via -r requirements/static/ci/common.in -libnacl==1.7.1 ; sys_platform != "win32" and sys_platform != "darwin" - # via -r requirements/static/ci/common.in -looseversion==1.0.2 - # via -r requirements/base.txt -lxml==4.9.1 - # via - # junos-eznc - # napalm - # ncclient -mako==1.2.2 - # via -r requirements/static/ci/common.in -markupsafe==2.1.2 - # via - # -r requirements/base.txt - # jinja2 - # mako - # moto - # werkzeug -mercurial==6.0.1 - # via -r requirements/static/ci/freebsd.in -mock==3.0.5 - # via -r requirements/pytest.txt -more-itertools==5.0.0 - # via - # cheroot - # cherrypy - # jaraco.classes - # jaraco.functools -moto==3.0.1 ; python_version >= "3.6" - # via -r requirements/static/ci/common.in -msgpack==1.0.2 - # via - # -r requirements/base.txt - # pytest-salt-factories -msrest==0.6.19 - # via - # azure-applicationinsights - # azure-eventgrid - # azure-keyvault - # azure-loganalytics - # azure-mgmt-cdn - # azure-mgmt-compute - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-dns - # azure-mgmt-eventhub - # azure-mgmt-keyvault - # azure-mgmt-managementpartner - # azure-mgmt-media - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-rdbms - # azure-mgmt-resource - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-servicefabric - # msrestazure -msrestazure==0.6.4 - # via - # azure-batch - # azure-eventgrid - # azure-graphrbac - # azure-keyvault - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cdn - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-compute - # azure-mgmt-consumption - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-eventhub - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-managementpartner - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-media - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-rdbms - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-resource - # azure-mgmt-scheduler - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web -multidict==6.0.2 - # via - # aiohttp - # yarl -napalm==3.1.0 ; sys_platform != "win32" and python_version > "3.6" and python_version < "3.10" - # via -r requirements/static/ci/common.in -ncclient==0.6.4 - # via junos-eznc -netaddr==0.7.19 - # via - # junos-eznc - # napalm - # pyeapi -netmiko==3.2.0 - # via napalm -ntc-templates==1.4.0 - # via junos-eznc -oauthlib==3.2.2 - # via requests-oauthlib -oscrypto==1.2.0 - # via certvalidator -packaging==21.3 - # via - # -r requirements/base.txt - # pytest -paramiko==2.10.1 ; sys_platform != "win32" and sys_platform != "darwin" - # via - # -r requirements/static/ci/common.in - # junos-eznc - # napalm - # ncclient - # netmiko - # scp -passlib[bcrypt]==1.7.4 - # via - # -r requirements/static/ci/common.in - # ciscoconfparse -pathspec==0.9.0 - # via yamllint -pathtools==0.1.2 - # via watchdog -platformdirs==2.2.0 - # via virtualenv -pluggy==0.13.0 - # via pytest -portend==2.4 - # via cherrypy -psutil==5.8.0 - # via - # -r requirements/base.txt - # pytest-salt-factories - # pytest-shell-utilities - # pytest-system-statistics -pyasn1-modules==0.2.4 - # via google-auth -pyasn1==0.4.8 - # via - # pyasn1-modules - # rsa -pycparser==2.17 - # via cffi -pycryptodomex==3.9.8 - # via -r requirements/crypto.txt -pyeapi==0.8.3 - # via napalm -pygit2==1.8.0 ; python_version >= "3.7" - # via -r requirements/static/ci/freebsd.in -pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd" - # via -r requirements/static/ci/common.in -pyjwt==2.4.0 - # via adal -pynacl==1.5.0 - # via - # -r requirements/static/ci/common.in - # paramiko -pyopenssl==23.2.0 - # via - # -r requirements/static/pkg/freebsd.in - # etcd3-py -pyparsing==3.0.9 - # via - # junos-eznc - # packaging -pyrsistent==0.17.3 - # via jsonschema -pyserial==3.4 - # via - # junos-eznc - # netmiko -pytest-custom-exit-code==0.3.0 - # via -r requirements/pytest.txt -pytest-helpers-namespace==2021.4.29 - # via - # -r requirements/pytest.txt - # pytest-salt-factories - # pytest-shell-utilities -pytest-httpserver==1.0.4 - # via -r requirements/pytest.txt -pytest-salt-factories[docker]==1.0.0rc21 ; sys_platform != "win32" - # via -r requirements/pytest.txt -pytest-shell-utilities==1.6.0 - # via pytest-salt-factories -pytest-skip-markers==1.2.0 - # via - # pytest-salt-factories - # pytest-shell-utilities - # pytest-system-statistics -pytest-subtests==0.4.0 - # via -r requirements/pytest.txt -pytest-system-statistics==1.0.2 - # via pytest-salt-factories -pytest-tempdir==2019.10.12 - # via - # -r requirements/pytest.txt - # pytest-salt-factories -pytest-timeout==1.4.2 - # via -r requirements/pytest.txt -pytest==7.2.0 ; python_version > "3.6" - # via - # -r requirements/pytest.txt - # pytest-custom-exit-code - # pytest-helpers-namespace - # pytest-salt-factories - # pytest-shell-utilities - # pytest-skip-markers - # pytest-subtests - # pytest-system-statistics - # pytest-tempdir - # pytest-timeout -python-dateutil==2.8.1 - # via - # -r requirements/static/pkg/freebsd.in - # adal - # azure-cosmosdb-table - # azure-storage-common - # botocore - # croniter - # kubernetes - # moto - # vcert -python-etcd==0.4.5 - # via -r requirements/static/ci/common.in -python-gnupg==0.4.8 - # via -r requirements/static/pkg/freebsd.in -pytz==2022.1 - # via - # moto - # tempora -pyvmomi==6.7.1.2018.12 - # via -r requirements/static/ci/common.in -pyyaml==6.0.1 - # via - # -r requirements/base.txt - # clustershell - # junos-eznc - # kubernetes - # napalm - # yamllint - # yamlordereddictloader -pyzmq==23.2.0 - # via - # -r requirements/zeromq.txt - # pytest-salt-factories -requests-oauthlib==1.3.0 - # via msrest -requests==2.31.0 - # via - # -r requirements/base.txt - # -r requirements/static/ci/common.in - # adal - # apache-libcloud - # azure-cosmosdb-table - # azure-datalake-store - # azure-keyvault - # azure-servicebus - # azure-servicemanagement-legacy - # azure-storage-common - # docker - # etcd3-py - # kubernetes - # moto - # msrest - # napalm - # pyvmomi - # requests-oauthlib - # responses - # vcert -responses==0.10.6 - # via moto -rfc3987==1.3.8 - # via -r requirements/static/ci/common.in -rsa==4.7.2 - # via google-auth -s3transfer==0.5.2 - # via boto3 -scp==0.13.2 - # via - # junos-eznc - # napalm - # netmiko -semantic-version==2.9.0 - # via etcd3-py -setproctitle==1.3.2 - # via -r requirements/static/pkg/freebsd.in -six==1.16.0 - # via - # bcrypt - # cassandra-driver - # cheroot - # etcd3-py - # genshi - # geomet - # google-auth - # isodate - # jsonschema - # junos-eznc - # kazoo - # kubernetes - # mock - # more-itertools - # msrestazure - # ncclient - # paramiko - # python-dateutil - # pyvmomi - # responses - # textfsm - # transitions - # vcert - # virtualenv - # websocket-client -smmap==3.0.4 - # via gitdb -sqlparse==0.4.4 - # via -r requirements/static/ci/common.in -strict-rfc3339==0.7 - # via -r requirements/static/ci/common.in -tempora==4.1.1 - # via portend -terminal==0.4.0 - # via ntc-templates -textfsm==1.1.0 - # via - # napalm - # netmiko - # ntc-templates -timelib==0.2.5 - # via -r requirements/static/pkg/freebsd.in -toml==0.10.2 - # via -r requirements/static/ci/common.in -tomli==2.0.1 - # via pytest -transitions==0.8.1 - # via junos-eznc -typing-extensions==3.10.0.0 - # via - # aiohttp - # async-timeout - # gitpython - # importlib-metadata - # pytest-shell-utilities - # pytest-system-statistics - # yarl -urllib3==1.26.6 - # via - # botocore - # kubernetes - # python-etcd - # requests -vcert==0.7.4 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -virtualenv==20.7.2 - # via - # -r requirements/static/ci/common.in - # pytest-salt-factories -watchdog==0.10.3 - # via -r requirements/static/ci/common.in -websocket-client==0.40.0 - # via - # docker - # kubernetes -wempy==0.2.1 - # via -r requirements/static/ci/common.in -werkzeug==2.2.3 - # via - # moto - # pytest-httpserver -xmltodict==0.12.0 - # via moto -yamllint==1.26.3 - # via -r requirements/static/ci/freebsd.in -yamlordereddictloader==0.4.0 - # via junos-eznc -yarl==1.7.2 - # via aiohttp -zc.lockfile==1.4 - # via cherrypy -zipp==3.5.0 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/static/ci/py3.7/lint.txt b/requirements/static/ci/py3.7/lint.txt deleted file mode 100644 index fd07a8dcc15..00000000000 --- a/requirements/static/ci/py3.7/lint.txt +++ /dev/null @@ -1,936 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/static/ci/py3.7/lint.txt --pip-args='--constraint=requirements/static/ci/py3.7/linux.txt' requirements/base.txt requirements/static/ci/common.in requirements/static/ci/lint.in requirements/static/ci/linux.in requirements/static/pkg/linux.in requirements/zeromq.txt -# -adal==1.2.7 - # via - # azure-datalake-store - # msrestazure -aiohttp==3.8.5 - # via etcd3-py -aiosignal==1.2.0 - # via aiohttp -ansible-core==2.11.4 - # via ansible -ansible==4.4.0 ; python_version < "3.9" - # via -r requirements/static/ci/linux.in -apache-libcloud==3.3.1 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -apscheduler==3.6.3 - # via python-telegram-bot -asn1crypto==1.4.0 - # via - # certvalidator - # oscrypto -astroid==2.3.3 - # via pylint -async-timeout==4.0.2 - # via aiohttp -asynctest==0.13.0 - # via aiohttp -attrs==21.2.0 - # via - # aiohttp - # jsonschema -azure-applicationinsights==0.1.0 - # via azure -azure-batch==4.1.3 - # via azure -azure-common==1.1.27 - # via - # azure-applicationinsights - # azure-batch - # azure-cosmosdb-table - # azure-eventgrid - # azure-graphrbac - # azure-keyvault - # azure-loganalytics - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cdn - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-compute - # azure-mgmt-consumption - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-eventhub - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-managementpartner - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-media - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-rdbms - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-resource - # azure-mgmt-scheduler - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web - # azure-servicebus - # azure-servicefabric - # azure-servicemanagement-legacy - # azure-storage-blob - # azure-storage-common - # azure-storage-file - # azure-storage-queue -azure-cosmosdb-nspkg==2.0.2 - # via azure-cosmosdb-table -azure-cosmosdb-table==1.0.6 - # via azure -azure-datalake-store==0.0.52 - # via azure -azure-eventgrid==1.3.0 - # via azure -azure-graphrbac==0.40.0 - # via azure -azure-keyvault==1.1.0 - # via azure -azure-loganalytics==0.1.0 - # via azure -azure-mgmt-advisor==1.0.1 - # via azure-mgmt -azure-mgmt-applicationinsights==0.1.1 - # via azure-mgmt -azure-mgmt-authorization==0.50.0 - # via azure-mgmt -azure-mgmt-batch==5.0.1 - # via azure-mgmt -azure-mgmt-batchai==2.0.0 - # via azure-mgmt -azure-mgmt-billing==0.2.0 - # via azure-mgmt -azure-mgmt-cdn==3.1.0 - # via azure-mgmt -azure-mgmt-cognitiveservices==3.0.0 - # via azure-mgmt -azure-mgmt-commerce==1.0.1 - # via azure-mgmt -azure-mgmt-compute==4.6.2 - # via azure-mgmt -azure-mgmt-consumption==2.0.0 - # via azure-mgmt -azure-mgmt-containerinstance==1.5.0 - # via azure-mgmt -azure-mgmt-containerregistry==2.8.0 - # via azure-mgmt -azure-mgmt-containerservice==4.4.0 - # via azure-mgmt -azure-mgmt-cosmosdb==0.4.1 - # via azure-mgmt -azure-mgmt-datafactory==0.6.0 - # via azure-mgmt -azure-mgmt-datalake-analytics==0.6.0 - # via azure-mgmt -azure-mgmt-datalake-nspkg==3.0.1 - # via - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store -azure-mgmt-datalake-store==0.5.0 - # via azure-mgmt -azure-mgmt-datamigration==1.0.0 - # via azure-mgmt -azure-mgmt-devspaces==0.1.0 - # via azure-mgmt -azure-mgmt-devtestlabs==2.2.0 - # via azure-mgmt -azure-mgmt-dns==2.1.0 - # via azure-mgmt -azure-mgmt-eventgrid==1.0.0 - # via azure-mgmt -azure-mgmt-eventhub==2.6.0 - # via azure-mgmt -azure-mgmt-hanaonazure==0.1.1 - # via azure-mgmt -azure-mgmt-iotcentral==0.1.0 - # via azure-mgmt -azure-mgmt-iothub==0.5.0 - # via azure-mgmt -azure-mgmt-iothubprovisioningservices==0.2.0 - # via azure-mgmt -azure-mgmt-keyvault==1.1.0 - # via azure-mgmt -azure-mgmt-loganalytics==0.2.0 - # via azure-mgmt -azure-mgmt-logic==3.0.0 - # via azure-mgmt -azure-mgmt-machinelearningcompute==0.4.1 - # via azure-mgmt -azure-mgmt-managementgroups==0.1.0 - # via azure-mgmt -azure-mgmt-managementpartner==0.1.1 - # via azure-mgmt -azure-mgmt-maps==0.1.0 - # via azure-mgmt -azure-mgmt-marketplaceordering==0.1.0 - # via azure-mgmt -azure-mgmt-media==1.0.0 - # via azure-mgmt -azure-mgmt-monitor==0.5.2 - # via azure-mgmt -azure-mgmt-msi==0.2.0 - # via azure-mgmt -azure-mgmt-network==2.7.0 - # via azure-mgmt -azure-mgmt-notificationhubs==2.1.0 - # via azure-mgmt -azure-mgmt-nspkg==3.0.2 - # via - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-consumption - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-nspkg - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-scheduler - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web -azure-mgmt-policyinsights==0.1.0 - # via azure-mgmt -azure-mgmt-powerbiembedded==2.0.0 - # via azure-mgmt -azure-mgmt-rdbms==1.9.0 - # via azure-mgmt -azure-mgmt-recoveryservices==0.3.0 - # via azure-mgmt -azure-mgmt-recoveryservicesbackup==0.3.0 - # via azure-mgmt -azure-mgmt-redis==5.0.0 - # via azure-mgmt -azure-mgmt-relay==0.1.0 - # via azure-mgmt -azure-mgmt-reservations==0.2.1 - # via azure-mgmt -azure-mgmt-resource==2.2.0 - # via azure-mgmt -azure-mgmt-scheduler==2.0.0 - # via azure-mgmt -azure-mgmt-search==2.1.0 - # via azure-mgmt -azure-mgmt-servicebus==0.5.3 - # via azure-mgmt -azure-mgmt-servicefabric==0.2.0 - # via azure-mgmt -azure-mgmt-signalr==0.1.1 - # via azure-mgmt -azure-mgmt-sql==0.9.1 - # via azure-mgmt -azure-mgmt-storage==2.0.0 - # via azure-mgmt -azure-mgmt-subscription==0.2.0 - # via azure-mgmt -azure-mgmt-trafficmanager==0.50.0 - # via azure-mgmt -azure-mgmt-web==0.35.0 - # via azure-mgmt -azure-mgmt==4.0.0 - # via azure -azure-nspkg==3.0.2 - # via - # azure-applicationinsights - # azure-batch - # azure-cosmosdb-nspkg - # azure-graphrbac - # azure-keyvault - # azure-loganalytics - # azure-mgmt-nspkg - # azure-servicebus - # azure-servicefabric - # azure-servicemanagement-legacy -azure-servicebus==0.21.1 - # via azure -azure-servicefabric==6.3.0.0 - # via azure -azure-servicemanagement-legacy==0.20.7 - # via azure -azure-storage-blob==1.5.0 - # via azure -azure-storage-common==1.4.2 - # via - # azure-storage-blob - # azure-storage-file - # azure-storage-queue -azure-storage-file==1.4.0 - # via azure -azure-storage-queue==1.4.0 - # via azure -azure==4.0.0 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -backports.entry-points-selectable==1.1.0 - # via virtualenv -backports.zoneinfo==0.2.1 - # via tzlocal -bcrypt==3.2.0 - # via - # paramiko - # passlib -boto3==1.21.46 ; python_version >= "3.6" - # via - # -r requirements/static/ci/common.in - # moto -boto==2.49.0 - # via -r requirements/static/ci/common.in -botocore==1.24.46 - # via - # boto3 - # moto - # s3transfer -cachetools==4.2.2 - # via - # google-auth - # python-telegram-bot -cassandra-driver==3.25.0 - # via -r requirements/static/ci/common.in -certifi==2023.07.22 - # via - # -r requirements/static/ci/common.in - # kubernetes - # msrest - # python-telegram-bot - # requests -certvalidator==0.11.1 - # via vcert -cffi==1.15.1 - # via - # -r requirements/static/ci/common.in - # azure-datalake-store - # bcrypt - # cryptography - # napalm - # pygit2 - # pynacl -charset-normalizer==3.1.0 - # via - # aiohttp - # requests -cheetah3==3.2.6.post1 - # via -r requirements/static/ci/common.in -cheroot==8.5.2 - # via cherrypy -cherrypy==18.6.1 - # via - # -r requirements/static/ci/common.in - # -r requirements/static/pkg/linux.in -ciscoconfparse==1.5.46 - # via napalm -click==8.0.1 - # via geomet -clustershell==1.8.3 - # via -r requirements/static/ci/common.in -colorama==0.4.4 - # via ciscoconfparse -contextvars==2.4 - # via -r requirements/base.txt -croniter==1.0.15 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -cryptography==41.0.3 - # via - # -r requirements/static/pkg/linux.in - # adal - # ansible-core - # azure-cosmosdb-table - # azure-keyvault - # azure-storage-common - # etcd3-py - # moto - # paramiko - # pyopenssl - # vcert -distlib==0.3.2 - # via virtualenv -distro==1.8.0 - # via -r requirements/base.txt -dnspython==2.1.0 - # via - # -r requirements/static/ci/common.in - # ciscoconfparse - # python-etcd -docker==5.0.0 - # via -r requirements/static/ci/common.in -etcd3-py==0.1.6 ; python_version >= "3.6" - # via -r requirements/static/ci/common.in -filelock==3.0.12 - # via virtualenv -frozenlist==1.3.0 - # via - # aiohttp - # aiosignal -future==0.18.3 - # via - # napalm - # textfsm -genshi==0.7.5 - # via -r requirements/static/ci/common.in -geomet==0.2.1.post1 - # via cassandra-driver -gitdb==4.0.7 - # via gitpython -gitpython==3.1.30 ; python_version >= "3.7" - # via -r requirements/static/ci/common.in -google-auth==2.0.1 - # via kubernetes -hglib==2.6.1 - # via -r requirements/static/ci/linux.in -idna==3.2 - # via - # etcd3-py - # requests - # yarl -immutables==0.19 - # via contextvars -importlib-metadata==4.6.4 - # via - # -r requirements/static/pkg/linux.in - # backports.entry-points-selectable - # click - # jsonschema - # mako - # moto - # virtualenv -ipaddress==1.0.23 - # via kubernetes -isodate==0.6.0 - # via msrest -isort==4.3.21 - # via pylint -jaraco.classes==3.2.1 - # via jaraco.collections -jaraco.collections==3.4.0 - # via cherrypy -jaraco.functools==3.3.0 - # via - # cheroot - # jaraco.text - # tempora -jaraco.text==3.5.1 - # via jaraco.collections -jinja2==3.1.2 - # via - # -r requirements/base.txt - # ansible-core - # junos-eznc - # moto - # napalm -jmespath==0.10.0 - # via - # -r requirements/base.txt - # -r requirements/static/ci/common.in - # boto3 - # botocore -jsonschema==3.2.0 - # via -r requirements/static/ci/common.in -junos-eznc==2.4.0 ; sys_platform != "win32" and python_version <= "3.10" - # via - # -r requirements/static/ci/common.in - # napalm -jxmlease==1.0.3 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -kazoo==2.8.0 ; sys_platform != "win32" and sys_platform != "darwin" - # via -r requirements/static/ci/common.in -keyring==5.7.1 - # via -r requirements/static/ci/common.in -kubernetes==3.0.0 - # via -r requirements/static/ci/common.in -lazy-object-proxy==1.4.3 - # via astroid -libnacl==1.8.0 ; sys_platform != "win32" and sys_platform != "darwin" - # via -r requirements/static/ci/common.in -loguru==0.6.0 - # via ciscoconfparse -looseversion==1.0.2 - # via -r requirements/base.txt -lxml==4.9.1 - # via - # junos-eznc - # napalm - # ncclient -mako==1.2.2 - # via -r requirements/static/ci/common.in -markupsafe==2.1.2 - # via - # -r requirements/base.txt - # jinja2 - # mako - # moto - # werkzeug -mccabe==0.6.1 - # via pylint -mercurial==6.0.1 - # via -r requirements/static/ci/linux.in -modernize==0.5 - # via saltpylint -more-itertools==8.8.0 - # via - # cheroot - # cherrypy - # jaraco.classes - # jaraco.functools -moto==3.0.1 ; python_version >= "3.6" - # via -r requirements/static/ci/common.in -msgpack==1.0.2 - # via -r requirements/base.txt -msrest==0.6.21 - # via - # azure-applicationinsights - # azure-eventgrid - # azure-keyvault - # azure-loganalytics - # azure-mgmt-cdn - # azure-mgmt-compute - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-dns - # azure-mgmt-eventhub - # azure-mgmt-keyvault - # azure-mgmt-managementpartner - # azure-mgmt-media - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-rdbms - # azure-mgmt-resource - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-servicefabric - # msrestazure -msrestazure==0.6.4 - # via - # azure-batch - # azure-eventgrid - # azure-graphrbac - # azure-keyvault - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cdn - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-compute - # azure-mgmt-consumption - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-eventhub - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-managementpartner - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-media - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-rdbms - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-resource - # azure-mgmt-scheduler - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web -multidict==6.0.2 - # via - # aiohttp - # yarl -napalm==3.3.1 ; sys_platform != "win32" and python_version > "3.6" and python_version < "3.10" - # via -r requirements/static/ci/common.in -ncclient==0.6.12 - # via - # junos-eznc - # napalm -netaddr==0.8.0 - # via - # junos-eznc - # napalm - # pyeapi -netmiko==3.4.0 - # via napalm -ntc-templates==2.2.2 - # via - # junos-eznc - # netmiko -oauthlib==3.2.2 - # via requests-oauthlib -oscrypto==1.2.1 - # via certvalidator -packaging==21.3 - # via - # -r requirements/base.txt - # ansible-core -paramiko==2.10.1 ; sys_platform != "win32" and sys_platform != "darwin" - # via - # -r requirements/static/ci/common.in - # junos-eznc - # napalm - # ncclient - # netmiko - # scp -passlib[bcrypt]==1.7.4 - # via - # -r requirements/static/ci/common.in - # ciscoconfparse -pathspec==0.9.0 - # via yamllint -platformdirs==2.2.0 - # via virtualenv -portend==2.7.1 - # via cherrypy -psutil==5.8.0 - # via -r requirements/base.txt -pyasn1-modules==0.2.8 - # via google-auth -pyasn1==0.4.8 - # via - # pyasn1-modules - # rsa -pycodestyle==2.5.0 - # via saltpylint -pycparser==2.20 - # via cffi -pycryptodomex==3.10.1 - # via -r requirements/crypto.txt -pyeapi==0.8.4 - # via napalm -pygit2==1.0.3 ; python_version <= "3.8" - # via -r requirements/static/ci/linux.in -pyiface==0.0.11 - # via -r requirements/static/ci/linux.in -pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd" - # via -r requirements/static/ci/common.in -pyjwt==2.4.0 - # via - # adal - # twilio -pylint==2.4.4 - # via - # -r requirements/static/ci/lint.in - # saltpylint -pymysql==1.0.2 ; python_version > "3.5" - # via -r requirements/static/ci/linux.in -pynacl==1.5.0 - # via - # -r requirements/static/ci/common.in - # paramiko -pyopenssl==23.2.0 - # via - # -r requirements/static/pkg/linux.in - # etcd3-py -pyparsing==3.0.9 - # via - # junos-eznc - # packaging -pyrsistent==0.18.0 - # via jsonschema -pyserial==3.5 - # via - # junos-eznc - # netmiko -python-consul==1.1.0 - # via -r requirements/static/ci/linux.in -python-dateutil==2.8.2 - # via - # -r requirements/static/pkg/linux.in - # adal - # azure-cosmosdb-table - # azure-storage-common - # botocore - # croniter - # kubernetes - # moto - # vcert -python-etcd==0.4.5 - # via -r requirements/static/ci/common.in -python-gnupg==0.4.8 - # via -r requirements/static/pkg/linux.in -python-telegram-bot==13.7 ; python_version > "3.5" - # via -r requirements/static/ci/linux.in -pytz==2022.1 - # via - # apscheduler - # moto - # python-telegram-bot - # tempora - # twilio -pyvmomi==7.0.2 - # via -r requirements/static/ci/common.in -pyyaml==6.0.1 - # via - # -r requirements/base.txt - # ansible-core - # clustershell - # junos-eznc - # kubernetes - # napalm - # yamllint - # yamlordereddictloader -pyzmq==23.2.0 - # via -r requirements/zeromq.txt -redis-py-cluster==2.1.3 - # via -r requirements/static/ci/linux.in -redis==3.5.3 - # via redis-py-cluster -requests-oauthlib==1.3.0 - # via msrest -requests==2.31.0 - # via - # -r requirements/base.txt - # -r requirements/static/ci/common.in - # adal - # apache-libcloud - # azure-cosmosdb-table - # azure-datalake-store - # azure-keyvault - # azure-servicebus - # azure-servicemanagement-legacy - # azure-storage-common - # docker - # etcd3-py - # kubernetes - # moto - # msrest - # napalm - # python-consul - # pyvmomi - # requests-oauthlib - # responses - # twilio - # vcert -resolvelib==0.5.4 - # via ansible-core -responses==0.13.4 - # via moto -rfc3987==1.3.8 - # via -r requirements/static/ci/common.in -rpm-vercmp==0.1.2 - # via -r requirements/static/pkg/linux.in -rsa==4.7.2 - # via google-auth -s3transfer==0.5.0 - # via boto3 -saltpylint==2023.8.3 - # via -r requirements/static/ci/lint.in -scp==0.13.6 - # via - # junos-eznc - # napalm - # netmiko -semantic-version==2.9.0 - # via etcd3-py -setproctitle==1.3.2 - # via -r requirements/static/pkg/linux.in -six==1.16.0 - # via - # apscheduler - # astroid - # bcrypt - # cassandra-driver - # cheroot - # etcd3-py - # genshi - # geomet - # isodate - # jsonschema - # junos-eznc - # kazoo - # kubernetes - # msrestazure - # ncclient - # paramiko - # python-consul - # python-dateutil - # pyvmomi - # responses - # textfsm - # transitions - # vcert - # virtualenv - # websocket-client -slack-bolt==1.15.5 - # via -r requirements/static/ci/linux.in -slack-sdk==3.19.5 - # via slack-bolt -smmap==4.0.0 - # via gitdb -sqlparse==0.4.4 - # via -r requirements/static/ci/common.in -strict-rfc3339==0.7 - # via -r requirements/static/ci/common.in -tempora==4.1.1 - # via portend -tenacity==8.0.1 - # via netmiko -textfsm==1.1.2 - # via - # napalm - # ntc-templates -timelib==0.2.5 - # via -r requirements/static/pkg/linux.in -toml==0.10.2 - # via - # -r requirements/static/ci/common.in - # -r requirements/static/ci/lint.in -tornado==6.1 - # via python-telegram-bot -transitions==0.8.8 - # via junos-eznc -twilio==7.9.2 - # via -r requirements/static/ci/linux.in -typed-ast==1.4.1 - # via astroid -typing-extensions==4.6.3 - # via - # aiohttp - # async-timeout - # gitpython - # immutables - # importlib-metadata - # yarl -tzlocal==3.0 - # via apscheduler -urllib3==1.26.6 - # via - # botocore - # kubernetes - # python-etcd - # requests - # responses -vcert==0.7.4 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -virtualenv==20.7.2 - # via -r requirements/static/ci/common.in -watchdog==2.1.5 - # via -r requirements/static/ci/common.in -websocket-client==0.40.0 - # via - # docker - # kubernetes -wempy==0.2.1 - # via -r requirements/static/ci/common.in -werkzeug==2.2.3 - # via moto -wrapt==1.11.1 - # via astroid -xmltodict==0.12.0 - # via moto -yamllint==1.26.3 - # via -r requirements/static/ci/linux.in -yamlordereddictloader==0.4.0 - # via junos-eznc -yarl==1.7.2 - # via aiohttp -zc.lockfile==2.0 - # via cherrypy -zipp==3.5.0 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/static/ci/py3.7/linux.txt b/requirements/static/ci/py3.7/linux.txt deleted file mode 100644 index a661589b507..00000000000 --- a/requirements/static/ci/py3.7/linux.txt +++ /dev/null @@ -1,986 +0,0 @@ -# -# This file is autogenerated by pip-compile -# To update, run: -# -# pip-compile --output-file=requirements/static/ci/py3.7/linux.txt --pip-args='--constraint=requirements/static/pkg/py3.7/linux.txt' requirements/base.txt requirements/pytest.txt requirements/static/ci/common.in requirements/static/ci/linux.in requirements/static/pkg/linux.in requirements/zeromq.txt -# -adal==1.2.3 - # via - # azure-datalake-store - # msrestazure -aiohttp==3.8.5 - # via etcd3-py -aiosignal==1.2.0 - # via aiohttp -ansible-core==2.11.7 - # via ansible -ansible==4.4.0 ; python_version < "3.9" - # via -r requirements/static/ci/linux.in -apache-libcloud==2.5.0 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -apscheduler==3.6.3 - # via python-telegram-bot -asn1crypto==1.3.0 - # via - # certvalidator - # oscrypto -async-timeout==4.0.2 - # via aiohttp -asynctest==0.13.0 - # via aiohttp -attrs==20.3.0 - # via - # aiohttp - # jsonschema - # pytest - # pytest-salt-factories - # pytest-shell-utilities - # pytest-skip-markers - # pytest-system-statistics -azure-applicationinsights==0.1.0 - # via azure -azure-batch==4.1.3 - # via azure -azure-common==1.1.18 - # via - # azure-applicationinsights - # azure-batch - # azure-cosmosdb-table - # azure-eventgrid - # azure-graphrbac - # azure-keyvault - # azure-loganalytics - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cdn - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-compute - # azure-mgmt-consumption - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-eventhub - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-managementpartner - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-media - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-rdbms - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-resource - # azure-mgmt-scheduler - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web - # azure-servicebus - # azure-servicefabric - # azure-servicemanagement-legacy - # azure-storage-blob - # azure-storage-common - # azure-storage-file - # azure-storage-queue -azure-cosmosdb-nspkg==2.0.2 - # via azure-cosmosdb-table -azure-cosmosdb-table==1.0.5 - # via azure -azure-datalake-store==0.0.44 - # via azure -azure-eventgrid==1.2.0 - # via azure -azure-graphrbac==0.40.0 - # via azure -azure-keyvault==1.1.0 - # via azure -azure-loganalytics==0.1.0 - # via azure -azure-mgmt-advisor==1.0.1 - # via azure-mgmt -azure-mgmt-applicationinsights==0.1.1 - # via azure-mgmt -azure-mgmt-authorization==0.50.0 - # via azure-mgmt -azure-mgmt-batch==5.0.1 - # via azure-mgmt -azure-mgmt-batchai==2.0.0 - # via azure-mgmt -azure-mgmt-billing==0.2.0 - # via azure-mgmt -azure-mgmt-cdn==3.1.0 - # via azure-mgmt -azure-mgmt-cognitiveservices==3.0.0 - # via azure-mgmt -azure-mgmt-commerce==1.0.1 - # via azure-mgmt -azure-mgmt-compute==4.6.0 - # via azure-mgmt -azure-mgmt-consumption==2.0.0 - # via azure-mgmt -azure-mgmt-containerinstance==1.4.1 - # via azure-mgmt -azure-mgmt-containerregistry==2.7.0 - # via azure-mgmt -azure-mgmt-containerservice==4.4.0 - # via azure-mgmt -azure-mgmt-cosmosdb==0.4.1 - # via azure-mgmt -azure-mgmt-datafactory==0.6.0 - # via azure-mgmt -azure-mgmt-datalake-analytics==0.6.0 - # via azure-mgmt -azure-mgmt-datalake-nspkg==3.0.1 - # via - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store -azure-mgmt-datalake-store==0.5.0 - # via azure-mgmt -azure-mgmt-datamigration==1.0.0 - # via azure-mgmt -azure-mgmt-devspaces==0.1.0 - # via azure-mgmt -azure-mgmt-devtestlabs==2.2.0 - # via azure-mgmt -azure-mgmt-dns==2.1.0 - # via azure-mgmt -azure-mgmt-eventgrid==1.0.0 - # via azure-mgmt -azure-mgmt-eventhub==2.5.0 - # via azure-mgmt -azure-mgmt-hanaonazure==0.1.1 - # via azure-mgmt -azure-mgmt-iotcentral==0.1.0 - # via azure-mgmt -azure-mgmt-iothub==0.5.0 - # via azure-mgmt -azure-mgmt-iothubprovisioningservices==0.2.0 - # via azure-mgmt -azure-mgmt-keyvault==1.1.0 - # via azure-mgmt -azure-mgmt-loganalytics==0.2.0 - # via azure-mgmt -azure-mgmt-logic==3.0.0 - # via azure-mgmt -azure-mgmt-machinelearningcompute==0.4.1 - # via azure-mgmt -azure-mgmt-managementgroups==0.1.0 - # via azure-mgmt -azure-mgmt-managementpartner==0.1.0 - # via azure-mgmt -azure-mgmt-maps==0.1.0 - # via azure-mgmt -azure-mgmt-marketplaceordering==0.1.0 - # via azure-mgmt -azure-mgmt-media==1.0.0 - # via azure-mgmt -azure-mgmt-monitor==0.5.2 - # via azure-mgmt -azure-mgmt-msi==0.2.0 - # via azure-mgmt -azure-mgmt-network==2.6.0 - # via azure-mgmt -azure-mgmt-notificationhubs==2.0.0 - # via azure-mgmt -azure-mgmt-nspkg==3.0.2 - # via - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-consumption - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-nspkg - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-managementpartner - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-notificationhubs - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-scheduler - # azure-mgmt-search - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web -azure-mgmt-policyinsights==0.1.0 - # via azure-mgmt -azure-mgmt-powerbiembedded==2.0.0 - # via azure-mgmt -azure-mgmt-rdbms==1.8.0 - # via azure-mgmt -azure-mgmt-recoveryservices==0.3.0 - # via azure-mgmt -azure-mgmt-recoveryservicesbackup==0.3.0 - # via azure-mgmt -azure-mgmt-redis==5.0.0 - # via azure-mgmt -azure-mgmt-relay==0.1.0 - # via azure-mgmt -azure-mgmt-reservations==0.2.1 - # via azure-mgmt -azure-mgmt-resource==2.1.0 - # via azure-mgmt -azure-mgmt-scheduler==2.0.0 - # via azure-mgmt -azure-mgmt-search==2.0.0 - # via azure-mgmt -azure-mgmt-servicebus==0.5.3 - # via azure-mgmt -azure-mgmt-servicefabric==0.2.0 - # via azure-mgmt -azure-mgmt-signalr==0.1.1 - # via azure-mgmt -azure-mgmt-sql==0.9.1 - # via azure-mgmt -azure-mgmt-storage==2.0.0 - # via azure-mgmt -azure-mgmt-subscription==0.2.0 - # via azure-mgmt -azure-mgmt-trafficmanager==0.50.0 - # via azure-mgmt -azure-mgmt-web==0.35.0 - # via azure-mgmt -azure-mgmt==4.0.0 - # via azure -azure-nspkg==3.0.2 - # via - # azure-applicationinsights - # azure-batch - # azure-cosmosdb-nspkg - # azure-eventgrid - # azure-graphrbac - # azure-keyvault - # azure-loganalytics - # azure-mgmt-nspkg - # azure-servicebus - # azure-servicefabric - # azure-servicemanagement-legacy -azure-servicebus==0.21.1 - # via azure -azure-servicefabric==6.3.0.0 - # via azure -azure-servicemanagement-legacy==0.20.6 - # via azure -azure-storage-blob==1.5.0 - # via azure -azure-storage-common==1.4.0 - # via - # azure-cosmosdb-table - # azure-storage-blob - # azure-storage-file - # azure-storage-queue -azure-storage-file==1.4.0 - # via azure -azure-storage-queue==1.4.0 - # via azure -azure==4.0.0 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -backports.entry-points-selectable==1.1.0 - # via virtualenv -bcrypt==3.1.6 - # via - # paramiko - # passlib -boto3==1.21.46 ; python_version >= "3.6" - # via - # -r requirements/static/ci/common.in - # moto -boto==2.49.0 - # via -r requirements/static/ci/common.in -botocore==1.24.46 - # via - # boto3 - # moto - # s3transfer -cachetools==4.2.2 - # via - # google-auth - # python-telegram-bot -cassandra-driver==3.23.0 - # via -r requirements/static/ci/common.in -certifi==2023.07.22 - # via - # -r requirements/static/ci/common.in - # kubernetes - # msrest - # python-telegram-bot - # requests -certvalidator==0.11.1 - # via vcert -cffi==1.15.1 - # via - # -r requirements/static/ci/common.in - # azure-datalake-store - # bcrypt - # cryptography - # napalm - # pygit2 - # pynacl -charset-normalizer==3.1.0 - # via - # aiohttp - # requests -cheetah3==3.2.6.post2 - # via -r requirements/static/ci/common.in -cheroot==8.5.2 - # via cherrypy -cherrypy==18.6.1 - # via - # -r requirements/static/ci/common.in - # -r requirements/static/pkg/linux.in -ciscoconfparse==1.5.19 - # via napalm -click==7.1.1 - # via geomet -clustershell==1.8.3 - # via -r requirements/static/ci/common.in -colorama==0.4.3 - # via ciscoconfparse -contextvars==2.4 - # via -r requirements/base.txt -croniter==0.3.29 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -cryptography==41.0.3 - # via - # -r requirements/static/pkg/linux.in - # adal - # ansible-core - # azure-cosmosdb-table - # azure-keyvault - # azure-storage-common - # etcd3-py - # moto - # paramiko - # pyopenssl - # vcert -distlib==0.3.2 - # via virtualenv -distro==1.8.0 - # via - # -r requirements/base.txt - # pytest-skip-markers -dnspython==1.16.0 - # via - # -r requirements/static/ci/common.in - # ciscoconfparse - # python-etcd -docker==5.0.3 - # via - # -r requirements/static/ci/common.in - # pytest-salt-factories -etcd3-py==0.1.6 ; python_version >= "3.6" - # via -r requirements/static/ci/common.in -exceptiongroup==1.0.4 - # via pytest -filelock==3.0.12 - # via virtualenv -flaky==3.7.0 - # via -r requirements/pytest.txt -frozenlist==1.3.0 - # via - # aiohttp - # aiosignal -future==0.18.3 - # via - # napalm - # textfsm -genshi==0.7.5 - # via -r requirements/static/ci/common.in -geomet==0.1.2 - # via cassandra-driver -gitdb==4.0.5 - # via gitpython -gitpython==3.1.30 ; python_version >= "3.7" - # via -r requirements/static/ci/common.in -google-auth==1.6.3 - # via kubernetes -hglib==2.6.1 - # via -r requirements/static/ci/linux.in -idna==2.8 - # via - # etcd3-py - # requests - # yarl -immutables==0.15 - # via contextvars -importlib-metadata==4.6.4 - # via - # -r requirements/static/pkg/linux.in - # backports.entry-points-selectable - # jsonschema - # mako - # moto - # pluggy - # pytest - # virtualenv -iniconfig==1.0.1 - # via pytest -ipaddress==1.0.22 - # via kubernetes -isodate==0.6.0 - # via msrest -jaraco.classes==3.2.1 - # via jaraco.collections -jaraco.collections==3.4.0 - # via cherrypy -jaraco.functools==2.0 - # via - # cheroot - # jaraco.text - # tempora -jaraco.text==3.5.1 - # via jaraco.collections -jinja2==3.1.2 - # via - # -r requirements/base.txt - # ansible-core - # junos-eznc - # moto - # napalm -jmespath==1.0.1 - # via - # -r requirements/base.txt - # -r requirements/static/ci/common.in - # boto3 - # botocore -jsonschema==3.2.0 - # via -r requirements/static/ci/common.in -junos-eznc==2.4.0 ; sys_platform != "win32" and python_version <= "3.10" - # via - # -r requirements/static/ci/common.in - # napalm -jxmlease==1.0.1 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -kazoo==2.6.1 ; sys_platform != "win32" and sys_platform != "darwin" - # via -r requirements/static/ci/common.in -keyring==5.7.1 - # via -r requirements/static/ci/common.in -kubernetes==3.0.0 - # via -r requirements/static/ci/common.in -libnacl==1.7.1 ; sys_platform != "win32" and sys_platform != "darwin" - # via -r requirements/static/ci/common.in -looseversion==1.0.2 - # via -r requirements/base.txt -lxml==4.9.1 - # via - # junos-eznc - # napalm - # ncclient -mako==1.2.2 - # via -r requirements/static/ci/common.in -markupsafe==2.1.2 - # via - # -r requirements/base.txt - # jinja2 - # mako - # moto - # werkzeug -mercurial==6.0.1 - # via -r requirements/static/ci/linux.in -mock==3.0.5 - # via -r requirements/pytest.txt -more-itertools==5.0.0 - # via - # cheroot - # cherrypy - # jaraco.classes - # jaraco.functools -moto==3.0.1 ; python_version >= "3.6" - # via -r requirements/static/ci/common.in -msgpack==1.0.2 - # via - # -r requirements/base.txt - # pytest-salt-factories -msrest==0.6.14 - # via - # azure-applicationinsights - # azure-eventgrid - # azure-keyvault - # azure-loganalytics - # azure-mgmt-cdn - # azure-mgmt-compute - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-dns - # azure-mgmt-eventhub - # azure-mgmt-keyvault - # azure-mgmt-media - # azure-mgmt-network - # azure-mgmt-rdbms - # azure-mgmt-resource - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-servicefabric - # msrestazure -msrestazure==0.6.3 - # via - # azure-batch - # azure-eventgrid - # azure-graphrbac - # azure-keyvault - # azure-mgmt-advisor - # azure-mgmt-applicationinsights - # azure-mgmt-authorization - # azure-mgmt-batch - # azure-mgmt-batchai - # azure-mgmt-billing - # azure-mgmt-cdn - # azure-mgmt-cognitiveservices - # azure-mgmt-commerce - # azure-mgmt-compute - # azure-mgmt-consumption - # azure-mgmt-containerinstance - # azure-mgmt-containerregistry - # azure-mgmt-containerservice - # azure-mgmt-cosmosdb - # azure-mgmt-datafactory - # azure-mgmt-datalake-analytics - # azure-mgmt-datalake-store - # azure-mgmt-datamigration - # azure-mgmt-devspaces - # azure-mgmt-devtestlabs - # azure-mgmt-dns - # azure-mgmt-eventgrid - # azure-mgmt-eventhub - # azure-mgmt-hanaonazure - # azure-mgmt-iotcentral - # azure-mgmt-iothub - # azure-mgmt-iothubprovisioningservices - # azure-mgmt-keyvault - # azure-mgmt-loganalytics - # azure-mgmt-logic - # azure-mgmt-machinelearningcompute - # azure-mgmt-managementgroups - # azure-mgmt-managementpartner - # azure-mgmt-maps - # azure-mgmt-marketplaceordering - # azure-mgmt-media - # azure-mgmt-monitor - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-notificationhubs - # azure-mgmt-policyinsights - # azure-mgmt-powerbiembedded - # azure-mgmt-rdbms - # azure-mgmt-recoveryservices - # azure-mgmt-recoveryservicesbackup - # azure-mgmt-redis - # azure-mgmt-relay - # azure-mgmt-reservations - # azure-mgmt-resource - # azure-mgmt-scheduler - # azure-mgmt-search - # azure-mgmt-servicebus - # azure-mgmt-servicefabric - # azure-mgmt-signalr - # azure-mgmt-sql - # azure-mgmt-storage - # azure-mgmt-subscription - # azure-mgmt-trafficmanager - # azure-mgmt-web -multidict==6.0.2 - # via - # aiohttp - # yarl -napalm==3.1.0 ; sys_platform != "win32" and python_version > "3.6" and python_version < "3.10" - # via -r requirements/static/ci/common.in -ncclient==0.6.4 - # via junos-eznc -netaddr==0.7.19 - # via - # junos-eznc - # napalm - # pyeapi -netmiko==3.2.0 - # via napalm -ntc-templates==1.4.0 - # via junos-eznc -oauthlib==3.2.2 - # via requests-oauthlib -oscrypto==1.2.0 - # via certvalidator -packaging==21.3 - # via - # -r requirements/base.txt - # ansible-core - # pytest -paramiko==2.10.1 ; sys_platform != "win32" and sys_platform != "darwin" - # via - # -r requirements/static/ci/common.in - # junos-eznc - # napalm - # ncclient - # netmiko - # scp -passlib[bcrypt]==1.7.4 - # via - # -r requirements/static/ci/common.in - # ciscoconfparse -pathspec==0.9.0 - # via yamllint -pathtools==0.1.2 - # via watchdog -platformdirs==2.2.0 - # via virtualenv -pluggy==0.13.0 - # via pytest -portend==2.4 - # via cherrypy -psutil==5.8.0 - # via - # -r requirements/base.txt - # pytest-salt-factories - # pytest-shell-utilities - # pytest-system-statistics -pyasn1-modules==0.2.4 - # via google-auth -pyasn1==0.4.8 - # via - # pyasn1-modules - # rsa -pycparser==2.17 - # via cffi -pycryptodomex==3.9.8 - # via -r requirements/crypto.txt -pyeapi==0.8.3 - # via napalm -pygit2==1.0.3 ; python_version <= "3.8" - # via -r requirements/static/ci/linux.in -pyiface==0.0.11 - # via -r requirements/static/ci/linux.in -pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd" - # via -r requirements/static/ci/common.in -pyjwt==2.4.0 - # via - # adal - # twilio -pymysql==1.0.2 ; python_version > "3.5" - # via -r requirements/static/ci/linux.in -pynacl==1.5.0 - # via - # -r requirements/static/ci/common.in - # paramiko -pyopenssl==23.2.0 - # via - # -r requirements/static/pkg/linux.in - # etcd3-py -pyparsing==3.0.9 - # via - # junos-eznc - # packaging -pyrsistent==0.17.3 - # via jsonschema -pyserial==3.4 - # via - # junos-eznc - # netmiko -pytest-custom-exit-code==0.3.0 - # via -r requirements/pytest.txt -pytest-helpers-namespace==2021.4.29 - # via - # -r requirements/pytest.txt - # pytest-salt-factories - # pytest-shell-utilities -pytest-httpserver==1.0.4 - # via -r requirements/pytest.txt -pytest-salt-factories[docker]==1.0.0rc21 ; sys_platform != "win32" - # via -r requirements/pytest.txt -pytest-shell-utilities==1.6.0 - # via pytest-salt-factories -pytest-skip-markers==1.2.0 - # via - # pytest-salt-factories - # pytest-shell-utilities - # pytest-system-statistics -pytest-subtests==0.4.0 - # via -r requirements/pytest.txt -pytest-system-statistics==1.0.2 - # via pytest-salt-factories -pytest-tempdir==2019.10.12 - # via - # -r requirements/pytest.txt - # pytest-salt-factories -pytest-timeout==1.4.2 - # via -r requirements/pytest.txt -pytest==7.2.0 ; python_version > "3.6" - # via - # -r requirements/pytest.txt - # pytest-custom-exit-code - # pytest-helpers-namespace - # pytest-salt-factories - # pytest-shell-utilities - # pytest-skip-markers - # pytest-subtests - # pytest-system-statistics - # pytest-tempdir - # pytest-timeout -python-consul==1.1.0 - # via -r requirements/static/ci/linux.in -python-dateutil==2.8.1 - # via - # -r requirements/static/pkg/linux.in - # adal - # azure-cosmosdb-table - # azure-storage-common - # botocore - # croniter - # kubernetes - # moto - # vcert -python-etcd==0.4.5 - # via -r requirements/static/ci/common.in -python-gnupg==0.4.8 - # via -r requirements/static/pkg/linux.in -python-telegram-bot==13.7 ; python_version > "3.5" - # via -r requirements/static/ci/linux.in -pytz==2022.1 - # via - # apscheduler - # moto - # python-telegram-bot - # tempora - # twilio - # tzlocal -pyvmomi==6.7.1.2018.12 - # via -r requirements/static/ci/common.in -pyyaml==6.0.1 - # via - # -r requirements/base.txt - # ansible-core - # clustershell - # junos-eznc - # kubernetes - # napalm - # yamllint - # yamlordereddictloader -pyzmq==23.2.0 - # via - # -r requirements/zeromq.txt - # pytest-salt-factories -redis-py-cluster==2.1.3 - # via -r requirements/static/ci/linux.in -redis==3.5.3 - # via redis-py-cluster -requests-oauthlib==1.3.0 - # via msrest -requests==2.31.0 - # via - # -r requirements/base.txt - # -r requirements/static/ci/common.in - # adal - # apache-libcloud - # azure-cosmosdb-table - # azure-datalake-store - # azure-keyvault - # azure-servicebus - # azure-servicemanagement-legacy - # azure-storage-common - # docker - # etcd3-py - # kubernetes - # moto - # msrest - # napalm - # python-consul - # pyvmomi - # requests-oauthlib - # responses - # twilio - # vcert -resolvelib==0.5.4 - # via ansible-core -responses==0.10.6 - # via moto -rfc3987==1.3.8 - # via -r requirements/static/ci/common.in -rpm-vercmp==0.1.2 - # via -r requirements/static/pkg/linux.in -rsa==4.7.2 - # via google-auth -s3transfer==0.5.2 - # via boto3 -scp==0.13.2 - # via - # junos-eznc - # napalm - # netmiko -semantic-version==2.9.0 - # via etcd3-py -setproctitle==1.3.2 - # via -r requirements/static/pkg/linux.in -six==1.16.0 - # via - # apscheduler - # bcrypt - # cassandra-driver - # cheroot - # etcd3-py - # genshi - # geomet - # google-auth - # isodate - # jsonschema - # junos-eznc - # kazoo - # kubernetes - # mock - # more-itertools - # ncclient - # paramiko - # python-consul - # python-dateutil - # pyvmomi - # responses - # textfsm - # transitions - # vcert - # virtualenv - # websocket-client -slack-bolt==1.15.5 - # via -r requirements/static/ci/linux.in -slack-sdk==3.19.5 - # via slack-bolt -smmap==3.0.4 - # via gitdb -sqlparse==0.4.4 - # via -r requirements/static/ci/common.in -strict-rfc3339==0.7 - # via -r requirements/static/ci/common.in -tempora==4.1.1 - # via portend -terminal==0.4.0 - # via ntc-templates -textfsm==1.1.0 - # via - # napalm - # netmiko - # ntc-templates -timelib==0.2.5 - # via -r requirements/static/pkg/linux.in -toml==0.10.2 - # via -r requirements/static/ci/common.in -tomli==2.0.1 - # via pytest -tornado==6.1 - # via python-telegram-bot -transitions==0.8.1 - # via junos-eznc -twilio==7.9.2 - # via -r requirements/static/ci/linux.in -typing-extensions==3.10.0.0 - # via - # aiohttp - # async-timeout - # gitpython - # importlib-metadata - # pytest-shell-utilities - # pytest-system-statistics - # yarl -tzlocal==2.1 - # via apscheduler -urllib3==1.26.6 - # via - # botocore - # kubernetes - # python-etcd - # requests -vcert==0.7.4 ; sys_platform != "win32" - # via -r requirements/static/ci/common.in -virtualenv==20.7.2 - # via - # -r requirements/static/ci/common.in - # pytest-salt-factories -watchdog==0.10.3 - # via -r requirements/static/ci/common.in -websocket-client==0.40.0 - # via - # docker - # kubernetes -wempy==0.2.1 - # via -r requirements/static/ci/common.in -werkzeug==2.2.3 - # via - # moto - # pytest-httpserver -xmltodict==0.12.0 - # via moto -yamllint==1.26.3 - # via -r requirements/static/ci/linux.in -yamlordereddictloader==0.4.0 - # via junos-eznc -yarl==1.7.2 - # via aiohttp -zc.lockfile==1.4 - # via cherrypy -zipp==3.5.0 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/static/ci/py3.8/cloud.txt b/requirements/static/ci/py3.8/cloud.txt index 135fa52b010..5748357e99e 100644 --- a/requirements/static/ci/py3.8/cloud.txt +++ b/requirements/static/ci/py3.8/cloud.txt @@ -40,7 +40,7 @@ pycparser==2.21 # via # -c requirements/static/ci/py3.8/linux.txt # cffi -pypsexec==0.1.0 +pypsexec==0.3.0 # via -r requirements/static/ci/cloud.in pyspnego==0.9.0 # via @@ -62,7 +62,6 @@ six==1.16.0 # via # -c requirements/static/ci/py3.8/linux.txt # profitbricks - # pypsexec # pywinrm smbprotocol==1.10.1 # via diff --git a/requirements/static/ci/py3.9/cloud.txt b/requirements/static/ci/py3.9/cloud.txt index f66aabdc4b1..af362253083 100644 --- a/requirements/static/ci/py3.9/cloud.txt +++ b/requirements/static/ci/py3.9/cloud.txt @@ -36,11 +36,11 @@ netaddr==0.8.0 # -r requirements/static/ci/cloud.in profitbricks==4.1.3 # via -r requirements/static/ci/cloud.in -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/py3.9/linux.txt # cffi -pypsexec==0.1.0 +pypsexec==0.3.0 # via -r requirements/static/ci/cloud.in pyspnego==0.9.0 # via @@ -62,7 +62,6 @@ six==1.16.0 # via # -c requirements/static/ci/py3.9/linux.txt # profitbricks - # pypsexec # pywinrm smbprotocol==1.10.1 # via diff --git a/requirements/static/ci/py3.9/darwin.txt b/requirements/static/ci/py3.9/darwin.txt index d5da2526f3f..9122b3b3287 100644 --- a/requirements/static/ci/py3.9/darwin.txt +++ b/requirements/static/ci/py3.9/darwin.txt @@ -318,10 +318,9 @@ pyasn1==0.4.8 # -r requirements/darwin.txt # pyasn1-modules # rsa -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/../pkg/py3.9/darwin.txt - # -r requirements/static/ci/common.in # cffi pycryptodomex==3.9.8 # via diff --git a/requirements/static/ci/py3.9/freebsd.txt b/requirements/static/ci/py3.9/freebsd.txt index 92421e07c99..8b63925f656 100644 --- a/requirements/static/ci/py3.9/freebsd.txt +++ b/requirements/static/ci/py3.9/freebsd.txt @@ -315,7 +315,6 @@ pyasn1==0.5.0 pycparser==2.21 ; python_version >= "3.9" # via # -c requirements/static/ci/../pkg/py3.9/freebsd.txt - # -r requirements/static/ci/common.in # -r requirements/static/pkg/freebsd.in # cffi pycryptodomex==3.9.8 diff --git a/requirements/static/ci/py3.9/linux.txt b/requirements/static/ci/py3.9/linux.txt index 98b238464c4..832067279ee 100644 --- a/requirements/static/ci/py3.9/linux.txt +++ b/requirements/static/ci/py3.9/linux.txt @@ -340,10 +340,9 @@ pyasn1==0.5.0 # via # pyasn1-modules # rsa -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/../pkg/py3.9/linux.txt - # -r requirements/static/ci/common.in # cffi pycryptodomex==3.9.8 # via diff --git a/requirements/static/ci/py3.9/windows.txt b/requirements/static/ci/py3.9/windows.txt index 2cdefe19220..9676f9b3165 100644 --- a/requirements/static/ci/py3.9/windows.txt +++ b/requirements/static/ci/py3.9/windows.txt @@ -273,10 +273,9 @@ pyasn1==0.4.8 # -r requirements/windows.txt # pyasn1-modules # rsa -pycparser==2.21 ; python_version >= "3.9" +pycparser==2.21 # via # -c requirements/static/ci/../pkg/py3.9/windows.txt - # -r requirements/static/ci/common.in # cffi pycryptodomex==3.9.8 # via From 7d1907cd73010bb99633fb2c16f5f4114b4b3540 Mon Sep 17 00:00:00 2001 From: Pedro Algarvio Date: Sun, 6 Aug 2023 09:47:18 +0100 Subject: [PATCH 57/57] Fix missed `salt.ext.tornado.gen.Return` occurrence during merge forward Signed-off-by: Pedro Algarvio --- salt/channel/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/channel/client.py b/salt/channel/client.py index 7a85ad69bb2..079ed296dd9 100644 --- a/salt/channel/client.py +++ b/salt/channel/client.py @@ -191,7 +191,7 @@ class AsyncReqChannel: else: _try += 1 continue - raise salt.ext.tornado.gen.Return(ret) + raise tornado.gen.Return(ret) @tornado.gen.coroutine def crypted_transfer_decode_dictentry(