ansible-core 2.14.9__py3-none-any.whl → 2.14.10rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ansible-core might be problematic. Click here for more details.
- ansible/galaxy/role.py +33 -1
- ansible/module_utils/ansible_release.py +1 -1
- ansible/module_utils/csharp/Ansible.AccessToken.cs +0 -3
- ansible/module_utils/csharp/Ansible.Become.cs +0 -4
- ansible/module_utils/csharp/Ansible.Privilege.cs +1 -3
- ansible/module_utils/csharp/Ansible.Process.cs +0 -2
- ansible/release.py +1 -1
- {ansible_core-2.14.9.dist-info → ansible_core-2.14.10rc1.dist-info}/METADATA +1 -1
- {ansible_core-2.14.9.dist-info → ansible_core-2.14.10rc1.dist-info}/RECORD +22 -22
- {ansible_core-2.14.9.dist-info → ansible_core-2.14.10rc1.dist-info}/WHEEL +1 -1
- ansible_test/_data/completion/remote.txt +1 -1
- ansible_test/_internal/ansible_util.py +56 -3
- ansible_test/_internal/commands/sanity/bin_symlinks.py +2 -2
- ansible_test/_internal/commands/sanity/validate_modules.py +5 -1
- ansible_test/_internal/constants.py +1 -0
- ansible_test/_internal/delegation.py +5 -2
- ansible_test/_internal/util.py +0 -2
- ansible_test/_util/target/setup/bootstrap.sh +2 -0
- {ansible_core-2.14.9.data → ansible_core-2.14.10rc1.data}/scripts/ansible-test +0 -0
- {ansible_core-2.14.9.dist-info → ansible_core-2.14.10rc1.dist-info}/COPYING +0 -0
- {ansible_core-2.14.9.dist-info → ansible_core-2.14.10rc1.dist-info}/entry_points.txt +0 -0
- {ansible_core-2.14.9.dist-info → ansible_core-2.14.10rc1.dist-info}/top_level.txt +0 -0
ansible/galaxy/role.py
CHANGED
|
@@ -24,6 +24,7 @@ __metaclass__ = type
|
|
|
24
24
|
|
|
25
25
|
import errno
|
|
26
26
|
import datetime
|
|
27
|
+
import functools
|
|
27
28
|
import os
|
|
28
29
|
import tarfile
|
|
29
30
|
import tempfile
|
|
@@ -45,6 +46,32 @@ from ansible.utils.display import Display
|
|
|
45
46
|
display = Display()
|
|
46
47
|
|
|
47
48
|
|
|
49
|
+
@functools.cache
|
|
50
|
+
def _check_working_data_filter() -> bool:
|
|
51
|
+
"""
|
|
52
|
+
Check if tarfile.data_filter implementation is working
|
|
53
|
+
for the current Python version or not
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
# Implemented the following code to circumvent broken implementation of data_filter
|
|
57
|
+
# in tarfile. See for more information - https://github.com/python/cpython/issues/107845
|
|
58
|
+
# deprecated: description='probing broken data filter implementation' python_version='3.11'
|
|
59
|
+
ret = False
|
|
60
|
+
if hasattr(tarfile, 'data_filter'):
|
|
61
|
+
# We explicitly check if tarfile.data_filter is broken or not
|
|
62
|
+
ti = tarfile.TarInfo('docs/README.md')
|
|
63
|
+
ti.type = tarfile.SYMTYPE
|
|
64
|
+
ti.linkname = '../README.md'
|
|
65
|
+
|
|
66
|
+
try:
|
|
67
|
+
tarfile.data_filter(ti, '/foo')
|
|
68
|
+
except tarfile.LinkOutsideDestinationError:
|
|
69
|
+
pass
|
|
70
|
+
else:
|
|
71
|
+
ret = True
|
|
72
|
+
return ret
|
|
73
|
+
|
|
74
|
+
|
|
48
75
|
class GalaxyRole(object):
|
|
49
76
|
|
|
50
77
|
SUPPORTED_SCMS = set(['git', 'hg'])
|
|
@@ -379,7 +406,12 @@ class GalaxyRole(object):
|
|
|
379
406
|
if n_part != '..' and not n_part.startswith('~') and '$' not in n_part:
|
|
380
407
|
n_final_parts.append(n_part)
|
|
381
408
|
member.name = os.path.join(*n_final_parts)
|
|
382
|
-
|
|
409
|
+
|
|
410
|
+
if _check_working_data_filter():
|
|
411
|
+
# deprecated: description='extract fallback without filter' python_version='3.11'
|
|
412
|
+
role_tar_file.extract(member, to_native(self.path), filter='data') # type: ignore[call-arg]
|
|
413
|
+
else:
|
|
414
|
+
role_tar_file.extract(member, to_native(self.path))
|
|
383
415
|
|
|
384
416
|
# write out the install info file for later use
|
|
385
417
|
self._write_galaxy_install_info()
|
|
@@ -2,7 +2,6 @@ using Microsoft.Win32.SafeHandles;
|
|
|
2
2
|
using System;
|
|
3
3
|
using System.Collections.Generic;
|
|
4
4
|
using System.Linq;
|
|
5
|
-
using System.Runtime.ConstrainedExecution;
|
|
6
5
|
using System.Runtime.InteropServices;
|
|
7
6
|
using System.Security.Principal;
|
|
8
7
|
using System.Text;
|
|
@@ -123,7 +122,6 @@ namespace Ansible.AccessToken
|
|
|
123
122
|
base.SetHandle(handle);
|
|
124
123
|
}
|
|
125
124
|
|
|
126
|
-
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
|
127
125
|
protected override bool ReleaseHandle()
|
|
128
126
|
{
|
|
129
127
|
Marshal.FreeHGlobal(handle);
|
|
@@ -247,7 +245,6 @@ namespace Ansible.AccessToken
|
|
|
247
245
|
public SafeNativeHandle() : base(true) { }
|
|
248
246
|
public SafeNativeHandle(IntPtr handle) : base(true) { this.handle = handle; }
|
|
249
247
|
|
|
250
|
-
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
|
251
248
|
protected override bool ReleaseHandle()
|
|
252
249
|
{
|
|
253
250
|
return NativeMethods.CloseHandle(handle);
|
|
@@ -4,7 +4,6 @@ using System.Collections;
|
|
|
4
4
|
using System.Collections.Generic;
|
|
5
5
|
using System.IO;
|
|
6
6
|
using System.Linq;
|
|
7
|
-
using System.Runtime.ConstrainedExecution;
|
|
8
7
|
using System.Runtime.InteropServices;
|
|
9
8
|
using System.Security.AccessControl;
|
|
10
9
|
using System.Security.Principal;
|
|
@@ -175,7 +174,6 @@ namespace Ansible.Become
|
|
|
175
174
|
{
|
|
176
175
|
public SafeLsaHandle() : base(true) { }
|
|
177
176
|
|
|
178
|
-
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
|
179
177
|
protected override bool ReleaseHandle()
|
|
180
178
|
{
|
|
181
179
|
UInt32 res = NativeMethods.LsaDeregisterLogonProcess(handle);
|
|
@@ -187,7 +185,6 @@ namespace Ansible.Become
|
|
|
187
185
|
{
|
|
188
186
|
public SafeLsaMemoryBuffer() : base(true) { }
|
|
189
187
|
|
|
190
|
-
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
|
191
188
|
protected override bool ReleaseHandle()
|
|
192
189
|
{
|
|
193
190
|
UInt32 res = NativeMethods.LsaFreeReturnBuffer(handle);
|
|
@@ -200,7 +197,6 @@ namespace Ansible.Become
|
|
|
200
197
|
public NoopSafeHandle() : base(IntPtr.Zero, false) { }
|
|
201
198
|
public override bool IsInvalid { get { return false; } }
|
|
202
199
|
|
|
203
|
-
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
|
204
200
|
protected override bool ReleaseHandle() { return true; }
|
|
205
201
|
}
|
|
206
202
|
|
|
@@ -3,7 +3,6 @@ using System;
|
|
|
3
3
|
using System.Collections;
|
|
4
4
|
using System.Collections.Generic;
|
|
5
5
|
using System.Linq;
|
|
6
|
-
using System.Runtime.ConstrainedExecution;
|
|
7
6
|
using System.Runtime.InteropServices;
|
|
8
7
|
using System.Security.Principal;
|
|
9
8
|
using System.Text;
|
|
@@ -92,7 +91,6 @@ namespace Ansible.Privilege
|
|
|
92
91
|
{
|
|
93
92
|
base.SetHandle(handle);
|
|
94
93
|
}
|
|
95
|
-
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
|
96
94
|
protected override bool ReleaseHandle()
|
|
97
95
|
{
|
|
98
96
|
Marshal.FreeHGlobal(handle);
|
|
@@ -104,7 +102,7 @@ namespace Ansible.Privilege
|
|
|
104
102
|
{
|
|
105
103
|
public SafeNativeHandle() : base(true) { }
|
|
106
104
|
public SafeNativeHandle(IntPtr handle) : base(true) { this.handle = handle; }
|
|
107
|
-
|
|
105
|
+
|
|
108
106
|
protected override bool ReleaseHandle()
|
|
109
107
|
{
|
|
110
108
|
return NativeMethods.CloseHandle(handle);
|
|
@@ -3,7 +3,6 @@ using System;
|
|
|
3
3
|
using System.Collections;
|
|
4
4
|
using System.IO;
|
|
5
5
|
using System.Linq;
|
|
6
|
-
using System.Runtime.ConstrainedExecution;
|
|
7
6
|
using System.Runtime.InteropServices;
|
|
8
7
|
using System.Text;
|
|
9
8
|
using System.Threading;
|
|
@@ -176,7 +175,6 @@ namespace Ansible.Process
|
|
|
176
175
|
base.SetHandle(handle);
|
|
177
176
|
}
|
|
178
177
|
|
|
179
|
-
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
|
180
178
|
protected override bool ReleaseHandle()
|
|
181
179
|
{
|
|
182
180
|
Marshal.FreeHGlobal(handle);
|
ansible/release.py
CHANGED
|
@@ -3,7 +3,7 @@ ansible/__main__.py,sha256=IvyRvY64pT0on94qCLibxgDJ0-7_2CRoaZ5kfGOl54Q,1395
|
|
|
3
3
|
ansible/constants.py,sha256=JLIDnuSz3_PbtXWsL4vnvVBbxlh3lSrJREd7T73atEI,8293
|
|
4
4
|
ansible/context.py,sha256=OzSlaA_GgGRyyf5I209sy19_eGOX6HXn441W9w_FcvU,2018
|
|
5
5
|
ansible/keyword_desc.yml,sha256=FYY0Ld1Xc3AxJ_Tefz78kRSYzIKGS8qcPtVk370J118,7367
|
|
6
|
-
ansible/release.py,sha256=
|
|
6
|
+
ansible/release.py,sha256=mOZJwFGjsG1D63-CNecQy6BLWawSBGCS9uB4h6cPhGg,923
|
|
7
7
|
ansible/_vendor/__init__.py,sha256=wJRKH7kI9OzYVY9hgSchOsTNTmTnugpPLGYj9Y5akX0,2086
|
|
8
8
|
ansible/cli/__init__.py,sha256=yDt8_ny7HauC9Aj-MMHQr3Y6gDQADfdEU0O1BfzkSwA,27957
|
|
9
9
|
ansible/cli/adhoc.py,sha256=pGW6eysaireovp4sVsUuntg-l1o7DSujuhxVhVC2zsM,8230
|
|
@@ -56,7 +56,7 @@ ansible/executor/process/__init__.py,sha256=1lMXN1i2fFqslda4BmeI5tpYMFP95D5Wpr1A
|
|
|
56
56
|
ansible/executor/process/worker.py,sha256=mO9-GR7bDVxgDh65ROBhEBNg8qb9FWkkaP1vb_sklxY,8843
|
|
57
57
|
ansible/galaxy/__init__.py,sha256=_ccTedn8dUGGtkmHcQLIkeje_YD0TYSXlvCl1AOY5fE,2533
|
|
58
58
|
ansible/galaxy/api.py,sha256=deSYsFinaJodT2Y9-XnOerWIwYY8V2AWQ_9kZI0pWCE,39872
|
|
59
|
-
ansible/galaxy/role.py,sha256=
|
|
59
|
+
ansible/galaxy/role.py,sha256=h5ttpZ0VYY1c43l1S1tk3VKdLDF95ZcQAi9HtWw77ds,20337
|
|
60
60
|
ansible/galaxy/token.py,sha256=K0dAwD3Fjkn3Zs2N9sG98UesSWfAukie47QGyYpIf0M,6167
|
|
61
61
|
ansible/galaxy/user_agent.py,sha256=x7cJzzpnTngHcwqSUd2hg0i28Dv0tbAyBdke5CSiNhM,813
|
|
62
62
|
ansible/galaxy/collection/__init__.py,sha256=9te8ju-vLZa6_-M6LMmBhbOK02G-YrXt7w8I2hRHCTk,75811
|
|
@@ -139,7 +139,7 @@ ansible/inventory/host.py,sha256=wXJp6kpSaZtDr4JNsgdAuhi5MzQ9LTQzaAH10zoVbIA,505
|
|
|
139
139
|
ansible/inventory/manager.py,sha256=tGwhBR6poLuG_i4jZ5RGOG-rH4gu4DBfT0-4iLLZZMs,29490
|
|
140
140
|
ansible/module_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
141
|
ansible/module_utils/_text.py,sha256=VCjTJovTxGfLahnzyrvOehpwTXLpRzMUug6wheirt4A,565
|
|
142
|
-
ansible/module_utils/ansible_release.py,sha256=
|
|
142
|
+
ansible/module_utils/ansible_release.py,sha256=mOZJwFGjsG1D63-CNecQy6BLWawSBGCS9uB4h6cPhGg,923
|
|
143
143
|
ansible/module_utils/api.py,sha256=BTo7stVOANbtd-ngZslaqx70r9t5gfvo44cKyu5SFjU,5837
|
|
144
144
|
ansible/module_utils/basic.py,sha256=dGTJD-84x2a0hqKgoqB6PNhjmOEqYuuf2EgWyX5zVC8,86621
|
|
145
145
|
ansible/module_utils/connection.py,sha256=XHxMlyAdwLiXDSo8jBMkV61-lz_0FDJUYH1B152UGJU,8430
|
|
@@ -179,11 +179,11 @@ ansible/module_utils/compat/selectors.py,sha256=XGwKJwg4SvRIzdsDZADNg4mWx5vWPUfW
|
|
|
179
179
|
ansible/module_utils/compat/selinux.py,sha256=FDJE4H5flBECz6k11dI0BObuCZkhToAEcNrfBnw8aA8,3527
|
|
180
180
|
ansible/module_utils/compat/typing.py,sha256=w8Yy7Rm5MtsgTFA6rVe0YTRSY3FaatZeLCyS-rAOokM,741
|
|
181
181
|
ansible/module_utils/compat/version.py,sha256=UKmpFhMk-Y9vuYfgmaT5NYctS3WFU-Xn9ycEzl01Nlc,12787
|
|
182
|
-
ansible/module_utils/csharp/Ansible.AccessToken.cs,sha256=
|
|
182
|
+
ansible/module_utils/csharp/Ansible.AccessToken.cs,sha256=4HzIFQKGG3ZTg8tehVcM_ukMi057wxxLdYFZoqsij5I,15871
|
|
183
183
|
ansible/module_utils/csharp/Ansible.Basic.cs,sha256=slTfWp_cpHuxlzjSQMT5VMqIBKg8XE0Ynsa_w0WoX7Q,77734
|
|
184
|
-
ansible/module_utils/csharp/Ansible.Become.cs,sha256=
|
|
185
|
-
ansible/module_utils/csharp/Ansible.Privilege.cs,sha256=
|
|
186
|
-
ansible/module_utils/csharp/Ansible.Process.cs,sha256=
|
|
184
|
+
ansible/module_utils/csharp/Ansible.Become.cs,sha256=1yasfX8SpbcIWJWiobr2Ms-Hl5W47_XNSKvwMXOyiz4,30457
|
|
185
|
+
ansible/module_utils/csharp/Ansible.Privilege.cs,sha256=7e46na6k6ygdRwN53bzfIS8O-IwfM1TF_q5DeFH2Z80,19398
|
|
186
|
+
ansible/module_utils/csharp/Ansible.Process.cs,sha256=g6R2PkbxiVBry4bk35ieWwYCAZOi7RSeyKmtOW8j90I,19449
|
|
187
187
|
ansible/module_utils/csharp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
188
188
|
ansible/module_utils/distro/__init__.py,sha256=UCWityXk2h5DRRwBgcvk2bO9jNY2kXfy14PS7TH8KVc,2026
|
|
189
189
|
ansible/module_utils/distro/_distro.py,sha256=q7IiQ1pJty1K9qz8s-Chj6h4Rr51XjEk_mfoxa9WU1A,49649
|
|
@@ -674,13 +674,13 @@ ansible/vars/hostvars.py,sha256=dg3jpVmNwSg8EJ4SIvYGT80uxMgRtrOW6vvtDfrQzDU,5152
|
|
|
674
674
|
ansible/vars/manager.py,sha256=9d-9uD9x1X35QgLOZRyJtAxg3b1j4sp8Ivc5C78viOk,36178
|
|
675
675
|
ansible/vars/plugins.py,sha256=B7L3fXoSOoBZSXqJ2ulk0adx1g5SpAb8BxyLGPNA7d4,4695
|
|
676
676
|
ansible/vars/reserved.py,sha256=FBD7n2dnA0CW4I0J1LtWwk2hQqvGW0KTRPcxaRtMKWo,2615
|
|
677
|
-
ansible_core-2.14.
|
|
677
|
+
ansible_core-2.14.10rc1.data/scripts/ansible-test,sha256=CYIYL99IxWdVTtDIj3avilIJXhGAmtjuKPPWNuLWuc8,1690
|
|
678
678
|
ansible_test/__init__.py,sha256=6e721yAyyyocRKzbCKtQXloAfFP7Aqv0L3zG70uh-4A,190
|
|
679
679
|
ansible_test/_data/ansible.cfg,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
680
680
|
ansible_test/_data/coveragerc,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
681
681
|
ansible_test/_data/completion/docker.txt,sha256=q47NhD2sEadcFZ_eOi33MqUh_nJNUsnyUmCnkszIhuM,822
|
|
682
682
|
ansible_test/_data/completion/network.txt,sha256=_-mi013-JeufshKMUmykkOmZPw1cVbakIMaAuweHet8,198
|
|
683
|
-
ansible_test/_data/completion/remote.txt,sha256=
|
|
683
|
+
ansible_test/_data/completion/remote.txt,sha256=sdTc57I1_dyoHLlTk8aVKTLxBZIAe58TuKzadiNPVJc,1044
|
|
684
684
|
ansible_test/_data/completion/windows.txt,sha256=k02uwXJ2i7cVHZnXS4HRFlvK5QU5BzAV291Cw53FlXA,226
|
|
685
685
|
ansible_test/_data/playbooks/posix_coverage_setup.yml,sha256=PgQNVzVTsNmfnu0sT2SAYiWtkMSOppfmh0oVmAsb7TQ,594
|
|
686
686
|
ansible_test/_data/playbooks/posix_coverage_teardown.yml,sha256=xHci5QllwJymFtig-hsOXm-Wdrxz063JH14aIyRXhyc,212
|
|
@@ -725,7 +725,7 @@ ansible_test/_data/requirements/sanity.yamllint.txt,sha256=dDer7Wd5rlNFaSct7NiYp
|
|
|
725
725
|
ansible_test/_data/requirements/units.txt,sha256=ah91xwwRFeY_fpi0WdRGw9GqEiAjm9BbVbnwTrdzn2g,125
|
|
726
726
|
ansible_test/_data/requirements/windows-integration.txt,sha256=jx9vvE8tX1-sColj5E2WuDs1sZvhuqUJnqBjheSbP4U,65
|
|
727
727
|
ansible_test/_internal/__init__.py,sha256=Ov_4Oh-B08xt4PU_7M_fMkmG9X9gnseBo78x0hmXZ98,3156
|
|
728
|
-
ansible_test/_internal/ansible_util.py,sha256=
|
|
728
|
+
ansible_test/_internal/ansible_util.py,sha256=LpKPawaZObpfyUJZ018U5S5nIbQiMSsbj3JGQrTcfcU,12417
|
|
729
729
|
ansible_test/_internal/become.py,sha256=zvOlaWKA4L6Cp6Xe795FsTw9xlWUy5Q5TicOwHXjzaI,3071
|
|
730
730
|
ansible_test/_internal/bootstrap.py,sha256=UbkB1ZJ-2bs7qtwRRBi5516IsBq0vZl-pUoyrgzdROQ,2471
|
|
731
731
|
ansible_test/_internal/cache.py,sha256=3W_1s5xdXdm-6Mhgrk1bNlr_Nde-B4FDN00LN0hVbfk,1050
|
|
@@ -733,13 +733,13 @@ ansible_test/_internal/cgroup.py,sha256=-7oLhkGrfCey8tt_4WNkJjeFRceBRK6EJXOmsRNX
|
|
|
733
733
|
ansible_test/_internal/completion.py,sha256=BJvhJ0d6PhBBn28YwZ63iGKtTh5TQw6R_uPNMAnpETo,11026
|
|
734
734
|
ansible_test/_internal/config.py,sha256=LJkfQ0d6EjEgRWoovdxQX1AK3TRSx-H_Cx1lneNPCEc,12524
|
|
735
735
|
ansible_test/_internal/connections.py,sha256=-gK9FqvmpsjENdYNkvWgFgqYHJSS_F2XkvQzH2_s86E,7855
|
|
736
|
-
ansible_test/_internal/constants.py,sha256=
|
|
736
|
+
ansible_test/_internal/constants.py,sha256=djMgWI_xR1Yg6M9Au8dEtao6yTYIzeLA-Ctxb1sKnHg,2056
|
|
737
737
|
ansible_test/_internal/containers.py,sha256=YLRUYuLTUT4pSl7L9T_X1CI3lS53lBQk7lHQUwm5rX4,35635
|
|
738
738
|
ansible_test/_internal/content_config.py,sha256=pkhIu5lg-o8oWc7RBzuniYE-mBPyjnf400vpaO0gr08,5778
|
|
739
739
|
ansible_test/_internal/core_ci.py,sha256=qkOcmYldBC4EX3wvql5G29O8whPRzyTM00eUTRH-6e0,17594
|
|
740
740
|
ansible_test/_internal/coverage_util.py,sha256=iw45rwz8Q5u37S4_dABNR0-Ybc5F8YRiEpUEKJiyjQ8,9302
|
|
741
741
|
ansible_test/_internal/data.py,sha256=OFDpRa47yqBqQO1aSvTZVQQpScHvBHsr861586MQEUI,11184
|
|
742
|
-
ansible_test/_internal/delegation.py,sha256=
|
|
742
|
+
ansible_test/_internal/delegation.py,sha256=xw9pjUmdGLT-xz5LdcH4s4EMDFHrMrZeMv60Rkj7iDc,13458
|
|
743
743
|
ansible_test/_internal/diff.py,sha256=COo6OgC3zxwymhOTlMifLZsGc1RGL0iM_zFVyqFNK48,7300
|
|
744
744
|
ansible_test/_internal/docker_util.py,sha256=LF4RrClcsDhg3UqrqgOztbeB_oWcsf1nc3W4DFacans,37675
|
|
745
745
|
ansible_test/_internal/encoding.py,sha256=E61EfXbQw0uQoFhbN3SYx3Oy_1tAMCPAAvY9hkEcSSo,1367
|
|
@@ -763,7 +763,7 @@ ansible_test/_internal/target.py,sha256=Whtb_n0jn4zbiMmX7je5jewgzsRczfXRm_ndYtjT
|
|
|
763
763
|
ansible_test/_internal/test.py,sha256=znQmGjKACqDU8T0EAPqcv2qyy0J7M2w4OmyYhwHLqT0,14515
|
|
764
764
|
ansible_test/_internal/thread.py,sha256=WQoZ2q2ljmEkKHRDkIqwxW7eZbkCKDrG3YZfcaxHzHw,2596
|
|
765
765
|
ansible_test/_internal/timeout.py,sha256=hT-LirImhAh1iCGIh8JpmECXsiGu6Zetw8BWl1iBIC8,4050
|
|
766
|
-
ansible_test/_internal/util.py,sha256=
|
|
766
|
+
ansible_test/_internal/util.py,sha256=KRb3EtwZ6_99cgIx36DqOlm5lvCC4ZrEq-OzQfSNt4A,37687
|
|
767
767
|
ansible_test/_internal/util_common.py,sha256=JvKuI4Z_iTfBIA22zDFUgPWUuPbx64sbV6ACpKx5l3w,17281
|
|
768
768
|
ansible_test/_internal/venv.py,sha256=DPHAt4tuoIdP7BOXa75-i4T7Paild8eGDsV2UUKOZ7U,9062
|
|
769
769
|
ansible_test/_internal/ci/__init__.py,sha256=QOaC_8_wUzqFEbsFCXYAnElWoUo6gB40CXvP9RJ-Iyo,7738
|
|
@@ -854,7 +854,7 @@ ansible_test/_internal/commands/integration/cloud/vcenter.py,sha256=n4xTIk35GTbM
|
|
|
854
854
|
ansible_test/_internal/commands/integration/cloud/vultr.py,sha256=TE43tKiAerXbKD9FXBrBVzeWNUB87qtR5twg_zDicHM,1488
|
|
855
855
|
ansible_test/_internal/commands/sanity/__init__.py,sha256=D9xQCctCtPETZ2UH7ORUjeTcQkjzUXeRnq0paoa3Oho,50043
|
|
856
856
|
ansible_test/_internal/commands/sanity/ansible_doc.py,sha256=nWFDAwPgNHp7KR5aNK1EVntxSnCEcFYo293ncYecoSY,4078
|
|
857
|
-
ansible_test/_internal/commands/sanity/bin_symlinks.py,sha256=
|
|
857
|
+
ansible_test/_internal/commands/sanity/bin_symlinks.py,sha256=uDiaMM3lf9KLlGTlGT53zYjgj6Fo-G-_dhJgFWnLS-o,3072
|
|
858
858
|
ansible_test/_internal/commands/sanity/compile.py,sha256=ZQwHB85a7N6utr038kLbDZwFlXGEJMkSI63YyoGcd-I,2539
|
|
859
859
|
ansible_test/_internal/commands/sanity/ignores.py,sha256=9wpzc8eRKS4nAVWOeSgXju5j1tDXNFPMSlskrR-Pohs,2789
|
|
860
860
|
ansible_test/_internal/commands/sanity/import.py,sha256=C7GCC2AFmjZ96rllGCcZIxiy_pDYSG9vGJFWcsny484,7555
|
|
@@ -864,7 +864,7 @@ ansible_test/_internal/commands/sanity/pep8.py,sha256=SSulTIljaSu_exl93ZklKyuhbK
|
|
|
864
864
|
ansible_test/_internal/commands/sanity/pslint.py,sha256=lVgL6RrDolRgIOJ2NRr04k2KVwMddZz1M7I-6h57vII,3210
|
|
865
865
|
ansible_test/_internal/commands/sanity/pylint.py,sha256=8XxdckD4AVTkP8GamX6XaeGcMvYvf5yTgtUIN5d8aFk,10922
|
|
866
866
|
ansible_test/_internal/commands/sanity/shellcheck.py,sha256=CZHNN_2iNVE3iqf5SIDSH9b2hwF6aXtJ0H6MPCEJX4s,3070
|
|
867
|
-
ansible_test/_internal/commands/sanity/validate_modules.py,sha256=
|
|
867
|
+
ansible_test/_internal/commands/sanity/validate_modules.py,sha256=DYkPXXRu2-1lkX9xaXAOQxfDzHrl4qTYuH7saebHXi0,7968
|
|
868
868
|
ansible_test/_internal/commands/sanity/yamllint.py,sha256=rF_L-QVWLfQ5HiOf_Q-6AMdk7orOJN_Bu8XyMfobRQ8,3423
|
|
869
869
|
ansible_test/_internal/commands/shell/__init__.py,sha256=70rahKppL1gi3I22YWZCkVKO9UF8Muryr0REiilb6C0,4371
|
|
870
870
|
ansible_test/_internal/commands/units/__init__.py,sha256=eDwwBQ87zWaVLRQbQ7GBC8P8TUcu28bhIAZqIjDk1fY,12686
|
|
@@ -971,7 +971,7 @@ ansible_test/_util/target/pytest/plugins/ansible_pytest_coverage.py,sha256=Nr52Y
|
|
|
971
971
|
ansible_test/_util/target/sanity/compile/compile.py,sha256=X1WHH2iLT4K8kyYJKlr-6AL6EAzKisL_hYrjvGrHCZ8,1637
|
|
972
972
|
ansible_test/_util/target/sanity/import/importer.py,sha256=FNNKz2lSpxTNdfjLdvadzP3KryI4ut7gT03050gzDN8,25932
|
|
973
973
|
ansible_test/_util/target/setup/ConfigureRemotingForAnsible.ps1,sha256=pW9YaaSNvhc_0ijjMfSMdoQkrmZNJ-Rb4xCL8m8t7yU,16693
|
|
974
|
-
ansible_test/_util/target/setup/bootstrap.sh,sha256=
|
|
974
|
+
ansible_test/_util/target/setup/bootstrap.sh,sha256=CPZvtpT8H7l2F2Th9kc85EseMm6evxsWPLCgfirBNSA,12994
|
|
975
975
|
ansible_test/_util/target/setup/check_systemd_cgroup_v1.sh,sha256=Aq0T62x_KLtkGaWzYqWjvhchTqYFflrTbQET3h6xrT0,395
|
|
976
976
|
ansible_test/_util/target/setup/probe_cgroups.py,sha256=ygqTkZc_YDH6EkZqp95rk_xkqsYcy_9IslPHKZO2A-8,712
|
|
977
977
|
ansible_test/_util/target/setup/quiet_pip.py,sha256=k-EK8Ny7AcekGTejRFq0oV4YTVHaYUVpjfRLbKVApnc,3267
|
|
@@ -992,9 +992,9 @@ ansible_test/config/cloud-config-vultr.ini.template,sha256=yO2Xz76Ay3kbG54jX7y8-
|
|
|
992
992
|
ansible_test/config/config.yml,sha256=wb3knoBmZewG3GWOMnRHoVPQWW4vPixKLPMNS6vJmTc,2620
|
|
993
993
|
ansible_test/config/inventory.networking.template,sha256=vQ7x1-u5Q4Y5CqZU-7eMSEJOSCzAbPOL1rmK_AQOQuY,1262
|
|
994
994
|
ansible_test/config/inventory.winrm.template,sha256=_M2i1B9RYfwSjwvgf3M-H_5Br5FO_kney_kMRPmoggk,1025
|
|
995
|
-
ansible_core-2.14.
|
|
996
|
-
ansible_core-2.14.
|
|
997
|
-
ansible_core-2.14.
|
|
998
|
-
ansible_core-2.14.
|
|
999
|
-
ansible_core-2.14.
|
|
1000
|
-
ansible_core-2.14.
|
|
995
|
+
ansible_core-2.14.10rc1.dist-info/COPYING,sha256=CuBIWlvTemPmNgNZZBfk6w5lMzT6bH-TLKOg6F1K8ic,35148
|
|
996
|
+
ansible_core-2.14.10rc1.dist-info/METADATA,sha256=_ee2qH90LDuLlyGScCGH9lDHKEa8BKOupYPdAdTlPns,6907
|
|
997
|
+
ansible_core-2.14.10rc1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
998
|
+
ansible_core-2.14.10rc1.dist-info/entry_points.txt,sha256=0mpmsrIhODChxKl3eS-NcVQCaMetBn8KdPLtVxQgR64,453
|
|
999
|
+
ansible_core-2.14.10rc1.dist-info/top_level.txt,sha256=IFbRLjAvih1DYzJWg3_F6t4sCzEMxRO7TOMNs6GkYHo,21
|
|
1000
|
+
ansible_core-2.14.10rc1.dist-info/RECORD,,
|
|
@@ -2,7 +2,7 @@ alpine/3.16 python=3.10 become=doas_sudo provider=aws arch=x86_64
|
|
|
2
2
|
alpine become=doas_sudo provider=aws arch=x86_64
|
|
3
3
|
fedora/36 python=3.10 become=sudo provider=aws arch=x86_64
|
|
4
4
|
fedora become=sudo provider=aws arch=x86_64
|
|
5
|
-
freebsd/12.
|
|
5
|
+
freebsd/12.4 python=3.9 python_dir=/usr/local/bin become=su_sudo provider=aws arch=x86_64
|
|
6
6
|
freebsd/13.1 python=3.8,3.7,3.9,3.10 python_dir=/usr/local/bin become=su_sudo provider=aws arch=x86_64
|
|
7
7
|
freebsd python_dir=/usr/local/bin become=su_sudo provider=aws arch=x86_64
|
|
8
8
|
macos/12.0 python=3.10 python_dir=/usr/local/bin become=sudo provider=parallels arch=x86_64
|
|
@@ -3,9 +3,11 @@ from __future__ import annotations
|
|
|
3
3
|
|
|
4
4
|
import json
|
|
5
5
|
import os
|
|
6
|
+
import shutil
|
|
6
7
|
import typing as t
|
|
7
8
|
|
|
8
9
|
from .constants import (
|
|
10
|
+
ANSIBLE_BIN_SYMLINK_MAP,
|
|
9
11
|
SOFT_RLIMIT_NOFILE,
|
|
10
12
|
)
|
|
11
13
|
|
|
@@ -17,12 +19,15 @@ from .util import (
|
|
|
17
19
|
common_environment,
|
|
18
20
|
ApplicationError,
|
|
19
21
|
ANSIBLE_LIB_ROOT,
|
|
22
|
+
ANSIBLE_TEST_ROOT,
|
|
20
23
|
ANSIBLE_TEST_DATA_ROOT,
|
|
21
|
-
|
|
24
|
+
ANSIBLE_ROOT,
|
|
22
25
|
ANSIBLE_SOURCE_ROOT,
|
|
23
26
|
ANSIBLE_TEST_TOOLS_ROOT,
|
|
27
|
+
MODE_FILE_EXECUTE,
|
|
24
28
|
get_ansible_version,
|
|
25
29
|
raw_command,
|
|
30
|
+
verified_chmod,
|
|
26
31
|
)
|
|
27
32
|
|
|
28
33
|
from .util_common import (
|
|
@@ -78,8 +83,10 @@ def ansible_environment(args: CommonConfig, color: bool = True, ansible_config:
|
|
|
78
83
|
env = common_environment()
|
|
79
84
|
path = env['PATH']
|
|
80
85
|
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
ansible_bin_path = get_ansible_bin_path(args)
|
|
87
|
+
|
|
88
|
+
if not path.startswith(ansible_bin_path + os.path.pathsep):
|
|
89
|
+
path = ansible_bin_path + os.path.pathsep + path
|
|
83
90
|
|
|
84
91
|
if not ansible_config:
|
|
85
92
|
# use the default empty configuration unless one has been provided
|
|
@@ -196,6 +203,52 @@ def configure_plugin_paths(args: CommonConfig) -> dict[str, str]:
|
|
|
196
203
|
return env
|
|
197
204
|
|
|
198
205
|
|
|
206
|
+
@mutex
|
|
207
|
+
def get_ansible_bin_path(args: CommonConfig) -> str:
|
|
208
|
+
"""
|
|
209
|
+
Return a directory usable for PATH, containing only the ansible entry points.
|
|
210
|
+
If a temporary directory is required, it will be cached for the lifetime of the process and cleaned up at exit.
|
|
211
|
+
"""
|
|
212
|
+
try:
|
|
213
|
+
return get_ansible_bin_path.bin_path # type: ignore[attr-defined]
|
|
214
|
+
except AttributeError:
|
|
215
|
+
pass
|
|
216
|
+
|
|
217
|
+
if ANSIBLE_SOURCE_ROOT:
|
|
218
|
+
# when running from source there is no need for a temporary directory since we already have known entry point scripts
|
|
219
|
+
bin_path = os.path.join(ANSIBLE_ROOT, 'bin')
|
|
220
|
+
else:
|
|
221
|
+
# when not running from source the installed entry points cannot be relied upon
|
|
222
|
+
# doing so would require using the interpreter specified by those entry points, which conflicts with using our interpreter and injector
|
|
223
|
+
# instead a temporary directory is created which contains only ansible entry points
|
|
224
|
+
# symbolic links cannot be used since the files are likely not executable
|
|
225
|
+
bin_path = create_temp_dir(prefix='ansible-test-', suffix='-bin')
|
|
226
|
+
bin_links = {os.path.join(bin_path, name): get_cli_path(path) for name, path in ANSIBLE_BIN_SYMLINK_MAP.items()}
|
|
227
|
+
|
|
228
|
+
if not args.explain:
|
|
229
|
+
for dst, src in bin_links.items():
|
|
230
|
+
shutil.copy(src, dst)
|
|
231
|
+
verified_chmod(dst, MODE_FILE_EXECUTE)
|
|
232
|
+
|
|
233
|
+
get_ansible_bin_path.bin_path = bin_path # type: ignore[attr-defined]
|
|
234
|
+
|
|
235
|
+
return bin_path
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def get_cli_path(path: str) -> str:
|
|
239
|
+
"""Return the absolute path to the CLI script from the given path which is relative to the `bin` directory of the original source tree layout."""
|
|
240
|
+
path_rewrite = {
|
|
241
|
+
'../lib/ansible/': ANSIBLE_LIB_ROOT,
|
|
242
|
+
'../test/lib/ansible_test/': ANSIBLE_TEST_ROOT,
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
for prefix, destination in path_rewrite.items():
|
|
246
|
+
if path.startswith(prefix):
|
|
247
|
+
return os.path.join(destination, path[len(prefix):])
|
|
248
|
+
|
|
249
|
+
raise RuntimeError(path)
|
|
250
|
+
|
|
251
|
+
|
|
199
252
|
@mutex
|
|
200
253
|
def get_ansible_python_path(args: CommonConfig) -> str:
|
|
201
254
|
"""
|
|
@@ -32,7 +32,7 @@ from ...payload import (
|
|
|
32
32
|
)
|
|
33
33
|
|
|
34
34
|
from ...util import (
|
|
35
|
-
|
|
35
|
+
ANSIBLE_SOURCE_ROOT,
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
|
|
@@ -52,7 +52,7 @@ class BinSymlinksTest(SanityVersionNeutral):
|
|
|
52
52
|
return True
|
|
53
53
|
|
|
54
54
|
def test(self, args: SanityConfig, targets: SanityTargets) -> TestResult:
|
|
55
|
-
bin_root =
|
|
55
|
+
bin_root = os.path.join(ANSIBLE_SOURCE_ROOT, 'bin')
|
|
56
56
|
bin_names = os.listdir(bin_root)
|
|
57
57
|
bin_paths = sorted(os.path.join(bin_root, path) for path in bin_names)
|
|
58
58
|
|
|
@@ -154,7 +154,11 @@ class ValidateModulesTest(SanitySingleVersion):
|
|
|
154
154
|
temp_dir = process_scoped_temporary_directory(args)
|
|
155
155
|
|
|
156
156
|
with tarfile.open(path) as file:
|
|
157
|
-
|
|
157
|
+
# deprecated: description='extractall fallback without filter' python_version='3.11'
|
|
158
|
+
if hasattr(tarfile, 'data_filter'):
|
|
159
|
+
file.extractall(temp_dir, filter='data') # type: ignore[call-arg]
|
|
160
|
+
else:
|
|
161
|
+
file.extractall(temp_dir)
|
|
158
162
|
|
|
159
163
|
cmd.extend([
|
|
160
164
|
'--original-plugins', temp_dir,
|
|
@@ -33,6 +33,7 @@ SECCOMP_CHOICES = [
|
|
|
33
33
|
# This bin symlink map must exactly match the contents of the bin directory.
|
|
34
34
|
# It is necessary for payload creation to reconstruct the bin directory when running ansible-test from an installed version of ansible.
|
|
35
35
|
# It is also used to construct the injector directory at runtime.
|
|
36
|
+
# It is also used to construct entry points when not running ansible-test from source.
|
|
36
37
|
ANSIBLE_BIN_SYMLINK_MAP = {
|
|
37
38
|
'ansible': '../lib/ansible/cli/adhoc.py',
|
|
38
39
|
'ansible-config': '../lib/ansible/cli/config.py',
|
|
@@ -33,7 +33,6 @@ from .util import (
|
|
|
33
33
|
SubprocessError,
|
|
34
34
|
display,
|
|
35
35
|
filter_args,
|
|
36
|
-
ANSIBLE_BIN_PATH,
|
|
37
36
|
ANSIBLE_LIB_ROOT,
|
|
38
37
|
ANSIBLE_TEST_ROOT,
|
|
39
38
|
OutputStream,
|
|
@@ -44,6 +43,10 @@ from .util_common import (
|
|
|
44
43
|
process_scoped_temporary_directory,
|
|
45
44
|
)
|
|
46
45
|
|
|
46
|
+
from .ansible_util import (
|
|
47
|
+
get_ansible_bin_path,
|
|
48
|
+
)
|
|
49
|
+
|
|
47
50
|
from .containers import (
|
|
48
51
|
support_container_context,
|
|
49
52
|
ContainerDatabase,
|
|
@@ -145,7 +148,7 @@ def delegate_command(args: EnvironmentConfig, host_state: HostState, exclude: li
|
|
|
145
148
|
con.extract_archive(chdir=working_directory, src=payload_file)
|
|
146
149
|
else:
|
|
147
150
|
content_root = working_directory
|
|
148
|
-
ansible_bin_path =
|
|
151
|
+
ansible_bin_path = get_ansible_bin_path(args)
|
|
149
152
|
|
|
150
153
|
command = generate_command(args, host_state.controller_profile.python, ansible_bin_path, content_root, exclude, require)
|
|
151
154
|
|
ansible_test/_internal/util.py
CHANGED
|
@@ -74,14 +74,12 @@ ANSIBLE_TEST_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
|
74
74
|
|
|
75
75
|
# assume running from install
|
|
76
76
|
ANSIBLE_ROOT = os.path.dirname(ANSIBLE_TEST_ROOT)
|
|
77
|
-
ANSIBLE_BIN_PATH = os.path.dirname(os.path.abspath(sys.argv[0]))
|
|
78
77
|
ANSIBLE_LIB_ROOT = os.path.join(ANSIBLE_ROOT, 'ansible')
|
|
79
78
|
ANSIBLE_SOURCE_ROOT = None
|
|
80
79
|
|
|
81
80
|
if not os.path.exists(ANSIBLE_LIB_ROOT):
|
|
82
81
|
# running from source
|
|
83
82
|
ANSIBLE_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(ANSIBLE_TEST_ROOT)))
|
|
84
|
-
ANSIBLE_BIN_PATH = os.path.join(ANSIBLE_ROOT, 'bin')
|
|
85
83
|
ANSIBLE_LIB_ROOT = os.path.join(ANSIBLE_ROOT, 'lib', 'ansible')
|
|
86
84
|
ANSIBLE_SOURCE_ROOT = ANSIBLE_ROOT
|
|
87
85
|
|
|
@@ -163,6 +163,8 @@ bootstrap_remote_freebsd()
|
|
|
163
163
|
# Declare platform/python version combinations which do not have supporting OS packages available.
|
|
164
164
|
# For these combinations ansible-test will use pip to install the requirements instead.
|
|
165
165
|
case "${platform_version}/${python_version}" in
|
|
166
|
+
"12.4/3.9")
|
|
167
|
+
;;
|
|
166
168
|
*)
|
|
167
169
|
jinja2_pkg="" # not available
|
|
168
170
|
cryptography_pkg="" # not available
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|