--- # Copyright (c) Ansible Project # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later - name: Create disk image command: 'dd if=/dev/zero of={{ remote_tmp_dir }}/img-pquota bs=1M count=400 ' - name: Create XFS filesystem filesystem: dev: '{{ remote_tmp_dir }}/img-pquota' fstype: xfs - name: Create xfs related files file: path: /etc/{{ item }} state: touch become: true loop: - projid - projects - name: Add test xfs quota project id lineinfile: path: /etc/projid line: xft_quotaval:99999 state: present become: true - name: Add test xfs quota project path lineinfile: path: /etc/projects line: 99999:{{ remote_tmp_dir }}/pquota/test state: present become: true - block: - name: Mount filesystem become: true ansible.posix.mount: fstab: '{{ remote_tmp_dir }}/fstab' src: '{{ remote_tmp_dir }}/img-pquota' path: '{{ remote_tmp_dir }}/pquota' fstype: xfs opts: pquota state: mounted - name: Create test directory file: path: '{{ remote_tmp_dir }}/pquota/test' state: directory become: true - name: Apply default project limits xfs_quota: bsoft: '{{ pquota_default_bsoft }}' bhard: '{{ pquota_default_bhard }}' isoft: '{{ pquota_default_isoft }}' ihard: '{{ pquota_default_ihard }}' mountpoint: '{{ remote_tmp_dir }}/pquota' rtbsoft: '{{ pquota_default_rtbsoft }}' rtbhard: '{{ pquota_default_rtbhard }}' type: project become: true register: test_pquota_default_before - name: Assert default project limits results assert: that: - test_pquota_default_before.changed - test_pquota_default_before.bsoft == pquota_default_bsoft|human_to_bytes - test_pquota_default_before.bhard == pquota_default_bhard|human_to_bytes - test_pquota_default_before.isoft == pquota_default_isoft - test_pquota_default_before.ihard == pquota_default_ihard - test_pquota_default_before.rtbsoft == pquota_default_rtbsoft|human_to_bytes - test_pquota_default_before.rtbhard == pquota_default_rtbhard|human_to_bytes - name: Apply project limits xfs_quota: bsoft: '{{ pquota_project_bsoft }}' bhard: '{{ pquota_project_bhard }}' isoft: '{{ pquota_project_isoft }}' ihard: '{{ pquota_project_ihard }}' mountpoint: '{{ remote_tmp_dir }}/pquota' name: xft_quotaval rtbsoft: '{{ pquota_project_rtbsoft }}' rtbhard: '{{ pquota_project_rtbhard }}' type: project become: true register: test_pquota_project_before - name: Assert project limits results for xft_quotaval assert: that: - test_pquota_project_before.changed - test_pquota_project_before.bsoft == pquota_project_bsoft|human_to_bytes - test_pquota_project_before.bhard == pquota_project_bhard|human_to_bytes - test_pquota_project_before.isoft == pquota_project_isoft - test_pquota_project_before.ihard == pquota_project_ihard - test_pquota_project_before.rtbsoft == pquota_project_rtbsoft|human_to_bytes - test_pquota_project_before.rtbhard == pquota_project_rtbhard|human_to_bytes - name: Re-apply default project limits xfs_quota: bsoft: '{{ pquota_default_bsoft }}' bhard: '{{ pquota_default_bhard }}' isoft: '{{ pquota_default_isoft }}' ihard: '{{ pquota_default_ihard }}' mountpoint: '{{ remote_tmp_dir }}/pquota' rtbsoft: '{{ pquota_default_rtbsoft }}' rtbhard: '{{ pquota_default_rtbhard }}' type: project become: true register: test_pquota_default_after - name: Assert default project limits results after re-apply assert: that: - not test_pquota_default_after.changed - name: Re-apply project limits xfs_quota: bsoft: '{{ pquota_project_bsoft }}' bhard: '{{ pquota_project_bhard }}' isoft: '{{ pquota_project_isoft }}' ihard: '{{ pquota_project_ihard }}' mountpoint: '{{ remote_tmp_dir }}/pquota' name: xft_quotaval rtbsoft: '{{ pquota_project_rtbsoft }}' rtbhard: '{{ pquota_project_rtbhard }}' type: project become: true register: test_pquota_project_after - name: Assert project limits results for xft_quotaval after re-apply assert: that: - test_pquota_project_after.changed - name: Reset default project limits xfs_quota: mountpoint: '{{ remote_tmp_dir }}/pquota' state: absent type: project become: true register: test_reset_pquota_default - name: Assert reset of default projecy limits results assert: that: - test_reset_pquota_default.changed - test_reset_pquota_default.bsoft == 0 - test_reset_pquota_default.bhard == 0 - test_reset_pquota_default.isoft == 0 - test_reset_pquota_default.ihard == 0 - test_reset_pquota_default.rtbsoft == 0 - test_reset_pquota_default.rtbhard == 0 - name: Reset project limits for xft_quotaval xfs_quota: mountpoint: '{{ remote_tmp_dir }}/pquota' name: xft_quotaval state: absent type: project become: true register: test_reset_pquota_project - name: Assert reset of project limits results for xft_quotaval assert: that: - test_reset_pquota_project.changed - test_reset_pquota_project.bsoft == 0 - test_reset_pquota_project.bhard == 0 - test_reset_pquota_project.isoft == 0 - test_reset_pquota_project.ihard == 0 - test_reset_pquota_project.rtbsoft == 0 - test_reset_pquota_project.rtbhard == 0 always: - name: Unmount filesystem become: true ansible.posix.mount: fstab: '{{ remote_tmp_dir }}/fstab' path: '{{ remote_tmp_dir }}/pquota' state: unmounted - name: Remove disk image file: path: '{{ remote_tmp_dir }}/img-pquota' state: absent - name: Remove xfs quota project id lineinfile: path: /etc/projid regexp: ^xft_quotaval:99999$ state: absent become: true - name: Remove xfs quota project path lineinfile: path: /etc/projects regexp: ^99999:.*$ state: absent become: true