Compare commits

...

17 commits

Author SHA1 Message Date
Xyz00777
6dacd62307
Merge 3c881c61fa into 6da1331018 2025-08-18 12:32:01 +00:00
softwarefactory-project-zuul[bot]
6da1331018
Merge pull request #670 from felixfontein/deprecations
Use module.warn() instead of returning warnings

SUMMARY
Returning warnings as warnings has been deprecated.
Ref: #635.
ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME
firewalld_info
mount

Reviewed-by: Hideki Saito <saito@fgrep.org>
2025-08-16 01:03:30 +00:00
Felix Fontein
ab8dfefd90 Use module.warn() instead of returning warnings. 2025-08-06 06:49:32 +02:00
softwarefactory-project-zuul[bot]
b96fad5e5b
Merge pull request #673 from saito-hideki/pr/ci_update_20250805
[AZP] Update CI matrix

SUMMARY
Update AZP CI matrix:

Addresses #672
Bump test container version 7.0.0
Removes Ansible Core 2.15 tests. Python 3.11 is no longer supported in Container 7.0.0.

ISSUE TYPE

CI Pull Request

COMPONENT NAME

ansible.posix

ADDITIONAL INFORMATION
None
2025-08-05 23:44:46 +00:00
saito-hideki
2d350e6073
AZP update CI matrix
* Addresses #672
* Bump test container version 7.0.0
* Removes Ansible Core 2.15 tests. Python 3.11 is no longer supported in Container 7.0.0.

Signed-off-by: saito-hideki <saito@fgrep.org>
2025-08-05 14:30:30 +09:00
softwarefactory-project-zuul[bot]
ea6ef5c775
Merge pull request #665 from saito-hideki/pr/readme_20250728
Update README for release of Ansible Core 2.19

SUMMARY
README updated with the release of Ansible Core 2.19

https://docs.ansible.com/ansible/devel/roadmap/ROADMAP_2_19.html

ISSUE TYPE

Docs Pull Request

COMPONENT NAME

ansible.posix

ADDITIONAL INFORMATION
N/A
2025-07-28 08:38:22 +00:00
saito-hideki
9007e20b2f
README updated with the release of Ansible Core 2.19
* https://docs.ansible.com/ansible/devel/roadmap/ROADMAP_2_19.html

Signed-off-by: saito-hideki <saito@fgrep.org>
2025-07-28 17:12:02 +09:00
softwarefactory-project-zuul[bot]
508e3d920f
Merge pull request #666 from saito-hideki/pr/azp_update_matrix_20250728
[AZP][CI] Update AZP matrix to follow ansible-test changes

SUMMARY
Update AZP matrix to follow ansible-test changes

ansible/ansible/pull/85558
ansible/ansible/pull/85561
ansible/ansible/pull/85562

ISSUE TYPE

CI Pull Request

COMPONENT NAME

ansible.posix

ADDITIONAL INFORMATION
None
2025-07-28 06:32:06 +00:00
saito-hideki
18e023dd77
Update AZP matrix to follow ansible-test changes
* https://github.com/ansible/ansible/pull/85558
* https://github.com/ansible/ansible/pull/85561
* https://github.com/ansible/ansible/pull/85562

Signed-off-by: saito-hideki <saito@fgrep.org>
2025-07-28 14:59:14 +09:00
softwarefactory-project-zuul[bot]
d3204df536
Merge pull request #660 from saito-hideki/pr_azp_syntax
[AZP] Fixed syntax error in AZP settings

SUMMARY
Fixed syntax error in AZP settings
ISSUE TYPE

CI Pull Request

COMPONENT NAME

ansible.posix

ADDITIONAL INFORMATION
None
2025-07-17 03:39:40 +00:00
Hideki SAITO
162e72182f Fixed syntax error in azurepileline settings
Signed-off-by: Hideki SAITO <hsaito@macallan.home.fgrep.org>
2025-07-17 12:16:09 +09:00
softwarefactory-project-zuul[bot]
1c1dd005c8
Merge pull request #654 from saito-hideki/pr/bump_core_version_220
[CI] bump ansible-core version to 2.20 for devel branch

SUMMARY
Bump ansible-core version to 2.20 for devel branch.

Bump devel test to ansible-core 2.19
Add ansible-core 2.18 to the stable list

ISSUE TYPE

CI Pull Request

COMPONENT NAME

ansible.posix

ADDITIONAL INFORMATION
None
2025-07-10 01:00:47 +00:00
saito-hideki
40c27e2bee
CI - bump ansible-core version
* bump devel to ansible-core 2.20
* add ansible-core 2.19 to stable list

Signed-off-by: saito-hideki <saito@fgrep.org>
2025-07-10 09:35:28 +09:00
softwarefactory-project-zuul[bot]
c273ac2a01
Merge pull request #650 from felixfontein/callback
profile_* callbacks: avoid deprecated/deleted functions

SUMMARY
The profile_roles and profile_tasks callbacks define methods playbook_on_setup and playbook_on_stats which have been deleted/deprecated:

playbook_on_stats has been deprecated, v2_playbook_on_stats should be used instead (that one has already been there for many years: ansible/ansible@ba0e532 was added in 2015).
playbook_on_setup has been deleted (ansible/ansible@eec57ec), and its v2 variant was already deleted in 2017: ansible/ansible@59d5481

Ref: #635
ISSUE TYPE

Bugfix Pull Request
Feature Pull Request

COMPONENT NAME
profile_roles
profile_tasks

Reviewed-by: Abhijeet Kasurde
Reviewed-by: Hideki Saito <saito@fgrep.org>
2025-07-08 05:47:53 +00:00
Felix Fontein
f978998521 Add changelog fragment. 2025-06-28 16:34:47 +02:00
Felix Fontein
c319c856ed Avoid deprecated/deleted callback functions. 2025-06-28 16:29:29 +02:00
Xyz00777
3c881c61fa Enhance ACL handling for NFSv4: add recursive flag and adjust default ACL processing
currently not working is the indempodency, so the permissions are getting set every time when executet
2025-04-25 19:37:07 +00:00
17 changed files with 115 additions and 85 deletions

View file

@ -37,7 +37,7 @@ variables:
resources: resources:
containers: containers:
- container: default - container: default
image: quay.io/ansible/azure-pipelines-test-container:6.0.0 image: quay.io/ansible/azure-pipelines-test-container:7.0.0
pool: Standard pool: Standard
@ -57,8 +57,23 @@ stages:
test: units test: units
- name: Lint - name: Lint
test: lint test: lint
- stage: Sanity_2_19
displayName: Ansible 2.19 sanitay & Units & Lint
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: "{0}"
testFormat: 2.19/{0}
targets:
- name: Sanity
test: sanity
- name: Units
test: units
- name: Lint
test: lint
- stage: Sanity_2_18 - stage: Sanity_2_18
displayName: Ansible 2.18 sanity displayName: Ansible 2.18 sanity & Units & Lint
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml
@ -73,7 +88,7 @@ stages:
- name: Lint - name: Lint
test: lint test: lint
- stage: Sanity_2_17 - stage: Sanity_2_17
displayName: Ansible 2.17 sanity displayName: Ansible 2.17 sanity & Units & Lint
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml
@ -88,7 +103,7 @@ stages:
- name: Lint - name: Lint
test: lint test: lint
- stage: Sanity_2_16 - stage: Sanity_2_16
displayName: Ansible 2.16 sanity displayName: Ansible 2.16 sanity & Units & Lint
dependsOn: [] dependsOn: []
jobs: jobs:
- template: templates/matrix.yml - template: templates/matrix.yml
@ -100,19 +115,6 @@ stages:
test: sanity test: sanity
- name: Units - name: Units
test: units test: units
- stage: Sanity_2_15
displayName: Ansible 2.15 sanity
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: "{0}"
testFormat: 2.15/{0}
targets:
- name: Sanity
test: sanity
- name: Units
test: units
## Docker ## Docker
- stage: Docker_devel - stage: Docker_devel
displayName: Docker devel displayName: Docker devel
@ -121,6 +123,20 @@ stages:
- template: templates/matrix.yml - template: templates/matrix.yml
parameters: parameters:
testFormat: devel/linux/{0}/1 testFormat: devel/linux/{0}/1
targets:
- name: Fedora 42
test: fedora42
- name: Ubuntu 22.04
test: ubuntu2204
- name: Ubuntu 24.04
test: ubuntu2404
- stage: Docker_2_19
displayName: Docker 2.19
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.19/linux/{0}/1
targets: targets:
- name: Fedora 41 - name: Fedora 41
test: fedora41 test: fedora41
@ -169,23 +185,6 @@ stages:
- name: Ubuntu 22.04 - name: Ubuntu 22.04
test: ubuntu2204 test: ubuntu2204
- stage: Docker_2_15
displayName: Docker 2.15
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.15/linux/{0}/1
targets:
- name: CentOS 7
test: centos7
- name: Fedora 37
test: fedora37
- name: openSUSE 15 py3
test: opensuse15
- name: Ubuntu 22.04
test: ubuntu2204
## Remote ## Remote
- stage: Remote_devel - stage: Remote_devel
displayName: Remote devel displayName: Remote devel
@ -194,6 +193,22 @@ stages:
- template: templates/matrix.yml - template: templates/matrix.yml
parameters: parameters:
testFormat: devel/{0}/1 testFormat: devel/{0}/1
targets:
- name: RHEL 10.0
test: rhel/10.0
- name: RHEL 9.6
test: rhel/9.6
- name: FreeBSD 14.3
test: freebsd/14.3
- name: FreeBSD 13.5
test: freebsd/13.5
- stage: Remote_2_19
displayName: Remote 2.19
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.19/{0}/1
targets: targets:
- name: RHEL 10.0 - name: RHEL 10.0
test: rhel/10.0 test: rhel/10.0
@ -213,8 +228,8 @@ stages:
targets: targets:
- name: RHEL 9.4 - name: RHEL 9.4
test: rhel/9.4 test: rhel/9.4
- name: FreeBSD 13.3 - name: FreeBSD 13.5
test: freebsd/13.3 test: freebsd/13.5
- stage: Remote_2_17 - stage: Remote_2_17
displayName: Remote 2.17 displayName: Remote 2.17
dependsOn: [] dependsOn: []
@ -225,8 +240,8 @@ stages:
targets: targets:
- name: RHEL 9.3 - name: RHEL 9.3
test: rhel/9.3 test: rhel/9.3
- name: FreeBSD 13.3 - name: FreeBSD 13.5
test: freebsd/13.3 test: freebsd/13.5
- stage: Remote_2_16 - stage: Remote_2_16
displayName: Remote 2.16 displayName: Remote 2.16
dependsOn: [] dependsOn: []
@ -240,29 +255,11 @@ stages:
- name: RHEL 9.2 - name: RHEL 9.2
test: rhel/9.2 test: rhel/9.2
- stage: Remote_2_15
displayName: Remote 2.15
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.15/{0}/1
targets:
- name: RHEL 7.9
test: rhel/7.9
- name: RHEL 8.7
test: rhel/8.7
- name: RHEL 9.1
test: rhel/9.1
## Finally ## Finally
- stage: Summary - stage: Summary
condition: succeededOrFailed() condition: succeededOrFailed()
dependsOn: dependsOn:
- Sanity_2_15
- Remote_2_15
- Docker_2_15
- Sanity_2_16 - Sanity_2_16
- Remote_2_16 - Remote_2_16
- Docker_2_16 - Docker_2_16
@ -272,6 +269,9 @@ stages:
- Sanity_2_18 - Sanity_2_18
- Remote_2_18 - Remote_2_18
- Docker_2_18 - Docker_2_18
- Sanity_2_19
- Remote_2_19
- Docker_2_19
- Sanity_devel - Sanity_devel
- Remote_devel - Remote_devel
- Docker_devel - Docker_devel

View file

@ -21,7 +21,7 @@ An Ansible Collection of modules and plugins that target POSIX UNIX/Linux and de
* Python: * Python:
* The Python interpreter version must meet Ansible Core's requirements. * The Python interpreter version must meet Ansible Core's requirements.
* Ansible Core: * Ansible Core:
- ansible-core 2.15 or later - ansible-core 2.16 or later
## Installation ## Installation
@ -46,10 +46,10 @@ To upgrade the collection to the latest available version, run the following com
ansible-galaxy collection install ansible.posix --upgrade ansible-galaxy collection install ansible.posix --upgrade
``` ```
You can also install a specific version of the collection, for example, if you need to downgrade when something is broken in the latest version (please report an issue in this repository). Use the following syntax to install version 1.0.0: You can also install a specific version of the collection, for example, if you need to downgrade when something is broken in the latest version (please report an issue in this repository). Use the following syntax to install version 2.0.0:
```shell ```shell
ansible-galaxy collection install ansible.posix:==1.0.0 ansible-galaxy collection install ansible.posix:==2.0.0
``` ```
See [using Ansible collections](https://docs.ansible.com/ansible/devel/user_guide/collections_using.html) for more details. See [using Ansible collections](https://docs.ansible.com/ansible/devel/user_guide/collections_using.html) for more details.
@ -78,11 +78,10 @@ ansible-doc -t callback ansible.posix.profile_tasks
The following ansible-core versions have been tested with this collection: The following ansible-core versions have been tested with this collection:
- ansible-core 2.19 (devel) - ansible-core 2.20 (devel)
- ansible-core 2.18 (stable) * - ansible-core 2.19 (stable) *
- ansible-core 2.18 (stable)
- ansible-core 2.17 (stable) - ansible-core 2.17 (stable)
- ansible-core 2.16 (stable)
- ansible-core 2.15 (stable)
## Contributing ## Contributing

View file

@ -0,0 +1,2 @@
minor_changes:
- "profile_tasks and profile_roles callback plugins - avoid deleted/deprecated callback functions, instead use modern interface that was introduced a longer time ago (https://github.com/ansible-collections/ansible.posix/issues/650)."

View file

@ -0,0 +1,3 @@
---
trivial:
- Bump ansible-core version to 2.20 of devel branch and add 2.19 to CI

View file

@ -0,0 +1,2 @@
trivial:
- AZP - fixed syntax error in CI test.

View file

@ -0,0 +1,3 @@
---
trivial:
- README - Update README to reflect Ansible Core 2.19 release.

View file

@ -0,0 +1,3 @@
---
trivial:
- AZP - Update AZP matrix to follow ansible-test changes.

View file

@ -0,0 +1,3 @@
bugfixes:
- "firewalld_info - stop returning warnings as return values; this has been deprecated by ansible-core (https://github.com/ansible-collections/ansible.posix/pull/670)."
- "mount - stop returning warnings as return values; this has been deprecated by ansible-core (https://github.com/ansible-collections/ansible.posix/pull/670)."

View file

@ -0,0 +1,2 @@
trivial:
- Update AZP CI matrix (https://github.com/ansible-collections/ansible.posix/issues/673).

View file

@ -1,2 +1,2 @@
--- ---
requires_ansible: ">=2.15.0" requires_ansible: ">=2.16.0"

View file

@ -124,10 +124,7 @@ class CallbackModule(CallbackBase):
def v2_playbook_on_handler_task_start(self, task): def v2_playbook_on_handler_task_start(self, task):
self._record_task(task) self._record_task(task)
def playbook_on_setup(self): def v2_playbook_on_stats(self, stats):
self._display_tasktime()
def playbook_on_stats(self, stats):
# Align summary report header with other callback plugin summary # Align summary report header with other callback plugin summary
self._display.banner("ROLES RECAP") self._display.banner("ROLES RECAP")

View file

@ -209,10 +209,7 @@ class CallbackModule(CallbackBase):
def v2_playbook_on_handler_task_start(self, task): def v2_playbook_on_handler_task_start(self, task):
self._record_task(task) self._record_task(task)
def playbook_on_setup(self): def v2_playbook_on_stats(self, stats):
self._display_tasktime()
def playbook_on_stats(self, stats):
# Align summary report header with other callback plugin summary # Align summary report header with other callback plugin summary
self._display.banner("TASKS RECAP") self._display.banner("TASKS RECAP")

View file

@ -211,7 +211,10 @@ def build_command(module, mode, path, follow, default, recursive, recalculate_ma
cmd.append('--absolute-names') cmd.append('--absolute-names')
cmd.append('--omit-header') cmd.append('--omit-header')
if recursive and not use_nfsv4_acls: if recursive:
if use_nfsv4_acls:
cmd.append('-R') # Add recursive flag for NFSv4 ACLs
else:
cmd.append('--recursive') cmd.append('--recursive')
if recalculate_mask == 'mask' and mode in ['set', 'rm']: if recalculate_mask == 'mask' and mode in ['set', 'rm']:
@ -226,13 +229,18 @@ def build_command(module, mode, path, follow, default, recursive, recalculate_ma
cmd.append('-h') cmd.append('-h')
if default: if default:
if not use_nfsv4_acls:
cmd.insert(1, '-d') cmd.insert(1, '-d')
elif mode == 'set':
# For NFSv4 ACLs, handle default ACLs through the entry format or other means
# This is a placeholder for NFSv4 default ACL handling
pass
cmd.append(path) cmd.append(path)
return cmd return cmd
def acl_changed(module, cmd, entry, use_nfsv4_acls=False): def acl_changed(module, cmd, entry, recursive=False, use_nfsv4_acls=False):
'''Returns true if the provided command affects the existing ACLs, false otherwise.''' '''Returns true if the provided command affects the existing ACLs, false otherwise.'''
# To check the ACL changes, use the output of setfacl or nfs4_setfacl with '--test'. # To check the ACL changes, use the output of setfacl or nfs4_setfacl with '--test'.
# FreeBSD do not have a --test flag, so by default, it is safer to always say "true". # FreeBSD do not have a --test flag, so by default, it is safer to always say "true".
@ -247,6 +255,18 @@ def acl_changed(module, cmd, entry, use_nfsv4_acls=False):
if line.endswith('*,*') and not use_nfsv4_acls: if line.endswith('*,*') and not use_nfsv4_acls:
return False return False
# if use_nfsv4_acls and entry is listed # if use_nfsv4_acls and entry is listed
if use_nfsv4_acls:
# For NFSv4 ACLs, ensure the entry is checked against the actual ACLs
for line in lines:
if recursive:
# In recursive mode, ensure all entries match
if entry not in line:
return True
else:
if entry in line:
return False
return True
if use_nfsv4_acls and entry == line: if use_nfsv4_acls and entry == line:
counter += 1 counter += 1
@ -371,7 +391,7 @@ def main():
module, 'set', path, follow, module, 'set', path, follow,
default, recursive, recalculate_mask, use_nfsv4_acls, entry default, recursive, recalculate_mask, use_nfsv4_acls, entry
) )
changed = acl_changed(module, command, entry, use_nfsv4_acls) changed = acl_changed(module, command, entry, recursive, use_nfsv4_acls)
if changed and not module.check_mode: if changed and not module.check_mode:
run_acl(module, command) run_acl(module, command)
@ -386,7 +406,7 @@ def main():
module, 'rm', path, follow, module, 'rm', path, follow,
default, recursive, recalculate_mask, use_nfsv4_acls, entry default, recursive, recalculate_mask, use_nfsv4_acls, entry
) )
changed = acl_changed(module, command, entry, use_nfsv4_acls) changed = acl_changed(module, command, entry, recursive, use_nfsv4_acls)
if changed and not module.check_mode: if changed and not module.check_mode:
run_acl(module, command, False) run_acl(module, command, False)

View file

@ -319,7 +319,6 @@ def main():
active_zones=module.params['active_zones'], active_zones=module.params['active_zones'],
collected_zones=list(), collected_zones=list(),
undefined_zones=list(), undefined_zones=list(),
warnings=list(),
) )
# Exit with failure message if requirements modules are not installed. # Exit with failure message if requirements modules are not installed.

View file

@ -279,7 +279,7 @@ def _set_mount_save_old(module, args):
old_lines = [] old_lines = []
exists = False exists = False
changed = False changed = False
escaped_args = dict([(k, _escape_fstab(v)) for k, v in iteritems(args) if k != 'warnings']) escaped_args = dict([(k, _escape_fstab(v)) for k, v in iteritems(args)])
new_line = '%(src)s %(name)s %(fstype)s %(opts)s %(dump)s %(passno)s\n' new_line = '%(src)s %(name)s %(fstype)s %(opts)s %(dump)s %(passno)s\n'
if platform.system() == 'SunOS': if platform.system() == 'SunOS':
@ -804,7 +804,6 @@ def main():
passno='-', passno='-',
fstab=module.params['fstab'], fstab=module.params['fstab'],
boot='yes' if module.params['boot'] else 'no', boot='yes' if module.params['boot'] else 'no',
warnings=[]
) )
if args['fstab'] is None: if args['fstab'] is None:
args['fstab'] = '/etc/vfstab' args['fstab'] = '/etc/vfstab'
@ -816,7 +815,6 @@ def main():
passno='0', passno='0',
fstab=module.params['fstab'], fstab=module.params['fstab'],
boot='yes', boot='yes',
warnings=[]
) )
if args['fstab'] is None: if args['fstab'] is None:
args['fstab'] = '/etc/fstab' args['fstab'] = '/etc/fstab'
@ -834,8 +832,7 @@ def main():
linux_mounts = get_linux_mounts(module) linux_mounts = get_linux_mounts(module)
if linux_mounts is None: if linux_mounts is None:
args['warnings'].append('Cannot open file /proc/self/mountinfo.' module.warn('Cannot open file /proc/self/mountinfo. Bind mounts might be misinterpreted.')
' Bind mounts might be misinterpreted.')
# Override defaults with user specified params # Override defaults with user specified params
for key in ('src', 'fstype', 'passno', 'opts', 'dump', 'fstab'): for key in ('src', 'fstype', 'passno', 'opts', 'dump', 'fstab'):
@ -847,7 +844,7 @@ def main():
# specified in 'opts', mount module will ignore 'boot'. # specified in 'opts', mount module will ignore 'boot'.
opts = args['opts'].split(',') opts = args['opts'].split(',')
if module.params['boot'] and 'noauto' in opts: if module.params['boot'] and 'noauto' in opts:
args['warnings'].append("Ignore the 'boot' due to 'opts' contains 'noauto'.") module.warn("Ignore the 'boot' due to 'opts' contains 'noauto'.")
elif not module.params['boot']: elif not module.params['boot']:
args['boot'] = 'no' args['boot'] = 'no'
opts.append('noauto') opts.append('noauto')

View file

@ -1,3 +1,5 @@
needs/privileged
needs/root
destructive destructive
shippable/posix/group1 shippable/posix/group1
skip/aix skip/aix

View file

@ -0,0 +1 @@
tests/utils/shippable/timing.py shebang