Compare commits

...

19 commits

Author SHA1 Message Date
Mandar Kulkarni
91e9657a42
Merge 99585a9696 into 12a1c25f5e 2023-07-07 23:19:22 +01:00
softwarefactory-project-zuul[bot]
12a1c25f5e
Merge pull request #478 from maxamillion/test/rhel_updates
Update azure-pipelines for new RHEL versions

SUMMARY

Change to the CI system annnounced in the following required this change:
ansible-collections/news-for-maintainers#47
2023-07-06 22:34:53 +00:00
Adam Miller
7062be892e only for devel
Signed-off-by: Adam Miller <admiller@redhat.com>
2023-07-06 10:19:58 -05:00
softwarefactory-project-zuul[bot]
20c2c30d23
Merge pull request #477 from saito-hideki/issue/476/1
Update CI tests to address changes on ansible-core

SUMMARY
Replace Python3.9 with 3.12 for ansible-test

Addresses issue #476

ISSUE TYPE

CI Test Pull Request

COMPONENT NAME

ansible.posix

ADDITIONAL INFORMATION
None
2023-07-04 01:39:12 +00:00
Hideki Saito
4f1e6b4a6d Drop Python3.9 and update versions of RHEL,Fedora and FreeBSD for ansible-core:devel
* Addresses issue #476
* Drop Python3.9
* Replace Fedora 37 with 38
* Replace FreeBSD13.1 with 13.2
* Replace RHEL 8.7 with 8.8
* Replace RHEL 9.1 with 9.2

Signed-off-by: Hideki Saito <saito@fgrep.org>
2023-07-04 09:15:24 +09:00
Adam Miller
806ab9ef9d Update azure-pipelines for new RHEL versions
Change to the CI system annnounced in the following required this
change:

  https://github.com/ansible-collections/news-for-maintainers/issues/47

Signed-off-by: Adam Miller <admiller@redhat.com>
2023-06-29 10:57:49 -05:00
Mandar Kulkarni
99585a9696
Update at.py 2021-08-04 23:46:54 -07:00
Mandar Kulkarni
c7d610b662 Skipping tests for CentOS 6 2021-07-06 11:53:09 -07:00
Mandar Kulkarni
8788d4d103 Updating condition for a test 2021-07-05 15:49:49 -07:00
Mandar Kulkarni
12d3db3414 Update main.yml 2021-07-02 15:54:30 -07:00
Mandar Kulkarni
a18fce2f3a Update main.yml 2021-07-02 15:11:08 -07:00
Mandar Kulkarni
b8fcfdd247 Update main.yml 2021-07-02 08:58:21 -07:00
Mandar Kulkarni
faf1ea4132 Fix assertion 2021-07-01 17:43:16 -07:00
Mandar Kulkarni
3206c5c1b7
Merge branch 'ansible-collections:main' into module-at-add-chdir 2021-07-01 19:57:25 -04:00
Baptiste Mille-Mathias
17f8c02361 Update changelogs/fragments/102_module_at_add_chdir_option.yml
Co-authored-by: quidame <quidame@poivron.org>
2021-06-16 16:09:39 +05:30
Baptiste Mille-Mathias
ceaee68c85 Update plugins/modules/at.py
Co-authored-by: quidame <quidame@poivron.org>
2021-06-16 16:00:57 +05:30
Baptiste Mille-Mathias
09299f1b9a Update version_added
Co-authored-by: quidame <quidame@poivron.org>
2021-06-16 16:00:57 +05:30
Baptiste Mille-Mathias
a699771c87 add chdir option to define a directory from where to run the at command 2021-06-16 16:00:57 +05:30
Baptiste Mille-Mathias
269c66fbdb Add a test for removal of at command 2021-06-16 16:00:57 +05:30
7 changed files with 125 additions and 46 deletions

View file

@ -53,8 +53,8 @@ stages:
targets: targets:
- name: CentOS 7 - name: CentOS 7
test: centos7 test: centos7
- name: Fedora 37 - name: Fedora 38
test: fedora37 test: fedora38
- name: openSUSE 15 py3 - name: openSUSE 15 py3
test: opensuse15 test: opensuse15
- name: Ubuntu 20.04 - name: Ubuntu 20.04
@ -213,14 +213,14 @@ stages:
test: macos/13.2 test: macos/13.2
- name: RHEL 7.9 - name: RHEL 7.9
test: rhel/7.9 test: rhel/7.9
- name: RHEL 8.7 - name: RHEL 8.8
test: rhel/8.7 test: rhel/8.8
- name: RHEL 9.1 - name: RHEL 9.2
test: rhel/9.1 test: rhel/9.2
- name: FreeBSD 12.4 - name: FreeBSD 12.4
test: freebsd/12.4 test: freebsd/12.4
- name: FreeBSD 13.1 - name: FreeBSD 13.2
test: freebsd/13.1 test: freebsd/13.2
- stage: Remote_2_15 - stage: Remote_2_15
displayName: Remote 2.15 displayName: Remote 2.15
dependsOn: [] dependsOn: []

View file

@ -0,0 +1,2 @@
minor_changes:
- at - add option ``chdir`` to permit to launch the ``at`` command from a specific directory (https://github.com/ansible-collections/ansible.posix/issues/13).

View file

@ -0,0 +1,3 @@
---
trivial:
- "Drop Python3.9 and update versions of RHEL,Fedora and FreeBSD for ansible-core:devel test(https://github.com/ansible-collections/ansible.posix/issues/476)."

View file

@ -17,6 +17,12 @@ description:
- All jobs are executed in the 'a' queue. - All jobs are executed in the 'a' queue.
version_added: "1.0.0" version_added: "1.0.0"
options: options:
chdir:
description:
- An optional location from where to run the command C(at).
- Useful for instance when running a playbook using ansible-pull with C(purge) option.
type: path
version_added: 1.3.0
command: command:
description: description:
- A command to be executed in the future. - A command to be executed in the future.
@ -78,32 +84,32 @@ import tempfile
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
def add_job(module, result, at_cmd, count, units, command, script_file): def add_job(module, result, at_cmd, count, units, command, script_file, chdir=None):
at_command = "%s -f %s now + %s %s" % (at_cmd, script_file, count, units) at_command = "%s -f %s now + %s %s" % (at_cmd, script_file, count, units)
rc, out, err = module.run_command(at_command, check_rc=True) rc, out, err = module.run_command(at_command, cwd=chdir, check_rc=True)
if command: if command:
os.unlink(script_file) os.unlink(script_file)
result['changed'] = True result['changed'] = True
def delete_job(module, result, at_cmd, command, script_file): def delete_job(module, result, at_cmd, command, script_file, chdir=None):
for matching_job in get_matching_jobs(module, at_cmd, script_file): for matching_job in get_matching_jobs(module, at_cmd, script_file):
at_command = "%s -r %s" % (at_cmd, matching_job) at_command = "%s -r %s" % (at_cmd, matching_job)
rc, out, err = module.run_command(at_command, check_rc=True) rc, out, err = module.run_command(at_command, cwd=chdir, check_rc=True)
result['changed'] = True result['changed'] = True
if command: if command:
os.unlink(script_file) os.unlink(script_file)
module.exit_json(**result) module.exit_json(**result)
def get_matching_jobs(module, at_cmd, script_file): def get_matching_jobs(module, at_cmd, script_file, chdir=None):
matching_jobs = [] matching_jobs = []
atq_cmd = module.get_bin_path('atq', True) atq_cmd = module.get_bin_path('atq', True)
# Get list of job numbers for the user. # Get list of job numbers for the user.
atq_command = "%s" % atq_cmd atq_command = "%s" % atq_cmd
rc, out, err = module.run_command(atq_command, check_rc=True) rc, out, err = module.run_command(atq_command, cwd=chdir, check_rc=True)
current_jobs = out.splitlines() current_jobs = out.splitlines()
if len(current_jobs) == 0: if len(current_jobs) == 0:
return matching_jobs return matching_jobs
@ -118,7 +124,7 @@ def get_matching_jobs(module, at_cmd, script_file):
split_current_job = current_job.split() split_current_job = current_job.split()
at_opt = '-c' if platform.system() != 'AIX' else '-lv' at_opt = '-c' if platform.system() != 'AIX' else '-lv'
at_command = "%s %s %s" % (at_cmd, at_opt, split_current_job[0]) at_command = "%s %s %s" % (at_cmd, at_opt, split_current_job[0])
rc, out, err = module.run_command(at_command, check_rc=True) rc, out, err = module.run_command(at_command, cwd=chdir, check_rc=True)
if script_file_string in out: if script_file_string in out:
matching_jobs.append(split_current_job[0]) matching_jobs.append(split_current_job[0])
@ -139,6 +145,7 @@ def main():
module = AnsibleModule( module = AnsibleModule(
argument_spec=dict( argument_spec=dict(
command=dict(type='str'), command=dict(type='str'),
chdir=dict(type='path'),
script_file=dict(type='str'), script_file=dict(type='str'),
count=dict(type='int'), count=dict(type='int'),
units=dict(type='str', choices=['minutes', 'hours', 'days', 'weeks']), units=dict(type='str', choices=['minutes', 'hours', 'days', 'weeks']),
@ -152,6 +159,7 @@ def main():
at_cmd = module.get_bin_path('at', True) at_cmd = module.get_bin_path('at', True)
chdir = module.params['chdir']
command = module.params['command'] command = module.params['command']
script_file = module.params['script_file'] script_file = module.params['script_file']
count = module.params['count'] count = module.params['count']
@ -173,7 +181,7 @@ def main():
# if absent remove existing and return # if absent remove existing and return
if state == 'absent': if state == 'absent':
delete_job(module, result, at_cmd, command, script_file) delete_job(module, result, at_cmd, command, script_file, chdir=chdir)
# if unique if existing return unchanged # if unique if existing return unchanged
if unique: if unique:
@ -186,7 +194,7 @@ def main():
result['count'] = count result['count'] = count
result['units'] = units result['units'] = units
add_job(module, result, at_cmd, count, units, command, script_file) add_job(module, result, at_cmd, count, units, command, script_file, chdir=chdir)
module.exit_json(**result) module.exit_json(**result)

View file

@ -1,3 +1,2 @@
shippable/posix/group1 shippable/posix/group1
destructive destructive
disabled # fixme package

View file

@ -16,6 +16,7 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>. # along with Ansible. If not, see <http://www.gnu.org/licenses/>.
- set_fact: output_dir_test={{output_dir}}/at - set_fact: output_dir_test={{output_dir}}/at
- name: make sure our testing sub-directory does not exist - name: make sure our testing sub-directory does not exist
@ -28,35 +29,103 @@
## at ## at
## ##
- name: define distros to attempt installing at on - name: Run At tests
set_fact: block:
package_distros: - name: define distros to attempt installing at on
- RedHat set_fact:
- CentOS package_distros:
- ScientificLinux - RedHat
- Fedora - CentOS
- Ubuntu - ScientificLinux
- Debian - Fedora
- openSUSE Leap - Ubuntu
- Debian
- openSUSE Leap
- name: ensure at is installed - name: ensure at is installed
package: package:
name: at name: at
state: present state: present
when: ansible_distribution in package_distros when: ansible_distribution in package_distros
- name: run the first example - name: run the first example
at: at:
command: "ls -d / > /dev/null" command: "ls -d / > /dev/null"
count: 20 count: 20
units: minutes units: minutes
register: at_test0 register: at_test0
- debug: var=at_test0
- name: validate results - debug: var=at_test0
assert:
that: - name: validate results
assert:
that:
- 'at_test0.changed is defined' - 'at_test0.changed is defined'
- 'at_test0.count is defined' - 'at_test0.count is defined'
- 'at_test0.script_file is defined' - 'at_test0.script_file is defined'
- 'at_test0.state is defined' - 'at_test0.state is defined'
- 'at_test0.units is defined' - 'at_test0.units is defined'
- name: Add a useless command using at
at:
command: /bin/logger 'AT task ran from Ansible'
count: 1
units: minutes
unique: yes
register: at_add
- debug: var=at_add
- name: Wait for at to run the previous command
pause:
minutes: 1
- name: Add a useless command
at:
command: /bin/logger 'AT task ran from Ansible'
count: 1
units: minutes
unique: true
state: absent
register: at_removal
- debug: var=at_removal
- name: Wait for at to run the previous command
pause:
minutes: 1
- name: Validate results
assert:
that:
- at_add is changed
- at_removal is changed
- name: Create an at command with chdir with valid value
at:
command: /bin/logger 'AT task ran from Ansible with chdir'
count: 1
units: minutes
chdir: /tmp
register: at_chdir_valid
- debug: var=at_chdir_valid
- name: Create an at command with chdir with invalid value
at:
command: /bin/logger 'AT task ran from Ansible with chdir'
count: 1
units: minutes
chdir: /invalid
register: at_chdir_invalid
ignore_errors: true
- debug: var=at_chdir_invalid
- name: Validate results
assert:
that:
- at_chdir_valid is changed
- at_chdir_invalid is changed
when:
- not (ansible_facts['distribution'] in ('Ubuntu','FreeBSD'))
- not (ansible_distribution == "CentOS" and ansible_distribution_version is version('6', '=='))

View file

@ -145,9 +145,7 @@ function cleanup
fi fi
if [ "${process_coverage}" ]; then if [ "${process_coverage}" ]; then
# use python 3.9 for coverage to avoid running out of memory during coverage xml processing python3 -m venv ~/ansible-venv
# only use it for coverage to avoid the additional overhead of setting up a virtual environment for a potential no-op job
virtualenv --python /usr/bin/python3.9 ~/ansible-venv
set +ux set +ux
. ~/ansible-venv/bin/activate . ~/ansible-venv/bin/activate
set -ux set -ux