mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-28 03:00:23 -07:00
parent
bc99432f89
commit
eaa5e07b28
247 changed files with 7318 additions and 7375 deletions
|
@ -50,11 +50,11 @@ jobs:
|
|||
parameters:
|
||||
jobs:
|
||||
- ${{ if eq(length(parameters.groups), 0) }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(parameters.nameFormat, coalesce(target.name, target.test)) }}
|
||||
test: ${{ format(parameters.testFormat, coalesce(target.test, target.name)) }}
|
||||
- ${{ if not(eq(length(parameters.groups), 0)) }}:
|
||||
- ${{ each group in parameters.groups }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(format(parameters.nameGroupFormat, parameters.nameFormat), coalesce(target.name, target.test), group) }}
|
||||
test: ${{ format(format(parameters.testGroupFormat, parameters.testFormat), coalesce(target.test, target.name), group) }}
|
||||
- name: ${{ format(parameters.nameFormat, coalesce(target.name, target.test)) }}
|
||||
test: ${{ format(parameters.testFormat, coalesce(target.test, target.name)) }}
|
||||
- ${{ if not(eq(length(parameters.groups), 0)) }}:
|
||||
- ${{ each group in parameters.groups }}:
|
||||
- ${{ each target in parameters.targets }}:
|
||||
- name: ${{ format(format(parameters.nameGroupFormat, parameters.nameFormat), coalesce(target.name, target.test), group) }}
|
||||
test: ${{ format(format(parameters.testGroupFormat, parameters.testFormat), coalesce(target.test, target.name), group) }}
|
||||
|
|
|
@ -14,37 +14,37 @@ parameters:
|
|||
|
||||
jobs:
|
||||
- ${{ each job in parameters.jobs }}:
|
||||
- job: test_${{ replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_') }}
|
||||
displayName: ${{ job.name }}
|
||||
container: default
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- checkout: self
|
||||
fetchDepth: $(fetchDepth)
|
||||
path: $(checkoutPath)
|
||||
- bash: .azure-pipelines/scripts/run-tests.sh "$(entryPoint)" "${{ job.test }}" "$(coverageBranches)"
|
||||
displayName: Run Tests
|
||||
- bash: .azure-pipelines/scripts/process-results.sh
|
||||
condition: succeededOrFailed()
|
||||
displayName: Process Results
|
||||
- bash: .azure-pipelines/scripts/aggregate-coverage.sh "$(Agent.TempDirectory)"
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Aggregate Coverage Data
|
||||
- task: PublishTestResults@2
|
||||
condition: eq(variables.haveTestResults, 'true')
|
||||
inputs:
|
||||
testResultsFiles: "$(outputPath)/junit/*.xml"
|
||||
displayName: Publish Test Results
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveBotResults, 'true')
|
||||
displayName: Publish Bot Results
|
||||
inputs:
|
||||
targetPath: "$(outputPath)/bot/"
|
||||
artifactName: "Bot $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Publish Coverage Data
|
||||
inputs:
|
||||
targetPath: "$(Agent.TempDirectory)/coverage/"
|
||||
artifactName: "Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
- job: test_${{ replace(replace(replace(job.test, '/', '_'), '.', '_'), '-', '_') }}
|
||||
displayName: ${{ job.name }}
|
||||
container: default
|
||||
workspace:
|
||||
clean: all
|
||||
steps:
|
||||
- checkout: self
|
||||
fetchDepth: $(fetchDepth)
|
||||
path: $(checkoutPath)
|
||||
- bash: .azure-pipelines/scripts/run-tests.sh "$(entryPoint)" "${{ job.test }}" "$(coverageBranches)"
|
||||
displayName: Run Tests
|
||||
- bash: .azure-pipelines/scripts/process-results.sh
|
||||
condition: succeededOrFailed()
|
||||
displayName: Process Results
|
||||
- bash: .azure-pipelines/scripts/aggregate-coverage.sh "$(Agent.TempDirectory)"
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Aggregate Coverage Data
|
||||
- task: PublishTestResults@2
|
||||
condition: eq(variables.haveTestResults, 'true')
|
||||
inputs:
|
||||
testResultsFiles: "$(outputPath)/junit/*.xml"
|
||||
displayName: Publish Test Results
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveBotResults, 'true')
|
||||
displayName: Publish Bot Results
|
||||
inputs:
|
||||
targetPath: "$(outputPath)/bot/"
|
||||
artifactName: "Bot $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
- task: PublishPipelineArtifact@1
|
||||
condition: eq(variables.haveCoverageData, 'true')
|
||||
displayName: Publish Coverage Data
|
||||
inputs:
|
||||
targetPath: "$(Agent.TempDirectory)/coverage/"
|
||||
artifactName: "Coverage $(System.JobAttempt) $(System.StageDisplayName) $(System.JobDisplayName)"
|
||||
|
|
2
.github/workflows/ansible-test.yml
vendored
2
.github/workflows/ansible-test.yml
vendored
|
@ -7,7 +7,7 @@
|
|||
# https://github.com/marketplace/actions/ansible-test
|
||||
|
||||
name: EOL CI
|
||||
on:
|
||||
"on":
|
||||
# Run EOL CI against all pushes (direct commits, also merged PRs), Pull Requests
|
||||
push:
|
||||
branches:
|
||||
|
|
2
.github/workflows/codeql-analysis.yml
vendored
2
.github/workflows/codeql-analysis.yml
vendored
|
@ -5,7 +5,7 @@
|
|||
|
||||
name: "Code scanning - action"
|
||||
|
||||
on:
|
||||
"on":
|
||||
schedule:
|
||||
- cron: '26 19 * * 1'
|
||||
workflow_dispatch:
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
collections:
|
||||
- ansible.posix
|
||||
- community.crypto
|
||||
- community.docker
|
||||
- ansible.posix
|
||||
- community.crypto
|
||||
- community.docker
|
||||
|
|
|
@ -28,10 +28,10 @@
|
|||
# It requires a host (nfshost) exporting the NFS
|
||||
- name: Creating NFS filesystem from nfshost (Linux NFS server)
|
||||
aix_filesystem:
|
||||
device: /home/ftp
|
||||
nfs_server: nfshost
|
||||
filesystem: /nfs/ftp
|
||||
state: present
|
||||
device: /home/ftp
|
||||
nfs_server: nfshost
|
||||
filesystem: /nfs/ftp
|
||||
state: present
|
||||
|
||||
# It requires a volume group named datavg (next three actions)
|
||||
- name: Creating a logical volume testlv (aix_lvol module)
|
||||
|
|
|
@ -9,60 +9,60 @@
|
|||
|
||||
- name: 'setup: create a dummy alternative'
|
||||
block:
|
||||
- import_tasks: setup.yml
|
||||
- import_tasks: setup.yml
|
||||
|
||||
##############
|
||||
# Test parameters:
|
||||
# link parameter present / absent ('with_link' variable)
|
||||
# with / without alternatives defined in alternatives file ('with_alternatives' variable)
|
||||
# auto / manual ('mode' variable)
|
||||
##############
|
||||
# Test parameters:
|
||||
# link parameter present / absent ('with_link' variable)
|
||||
# with / without alternatives defined in alternatives file ('with_alternatives' variable)
|
||||
# auto / manual ('mode' variable)
|
||||
|
||||
- include_tasks: tests.yml
|
||||
with_nested:
|
||||
- [ true, false ] # with_link
|
||||
- [ true, false ] # with_alternatives
|
||||
- [ 'auto', 'manual' ] # mode
|
||||
loop_control:
|
||||
loop_var: test_conf
|
||||
- include_tasks: tests.yml
|
||||
with_nested:
|
||||
- [true, false] # with_link
|
||||
- [true, false] # with_alternatives
|
||||
- ['auto', 'manual'] # mode
|
||||
loop_control:
|
||||
loop_var: test_conf
|
||||
|
||||
##########
|
||||
# Priority
|
||||
- block:
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: setup_test.yml
|
||||
# at least two iterations again
|
||||
- include_tasks: tests_set_priority.yml
|
||||
with_sequence: start=3 end=4
|
||||
vars:
|
||||
with_alternatives: true
|
||||
mode: auto
|
||||
##########
|
||||
# Priority
|
||||
- block:
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: setup_test.yml
|
||||
# at least two iterations again
|
||||
- include_tasks: tests_set_priority.yml
|
||||
with_sequence: start=3 end=4
|
||||
vars:
|
||||
with_alternatives: true
|
||||
mode: auto
|
||||
|
||||
- block:
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: setup_test.yml
|
||||
# at least two iterations again
|
||||
- include_tasks: tests_set_priority.yml
|
||||
with_sequence: start=3 end=4
|
||||
vars:
|
||||
with_alternatives: false
|
||||
mode: auto
|
||||
- block:
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: setup_test.yml
|
||||
# at least two iterations again
|
||||
- include_tasks: tests_set_priority.yml
|
||||
with_sequence: start=3 end=4
|
||||
vars:
|
||||
with_alternatives: false
|
||||
mode: auto
|
||||
|
||||
# Test that path is checked: alternatives must fail when path is nonexistent
|
||||
- import_tasks: path_is_checked.yml
|
||||
# Test that path is checked: alternatives must fail when path is nonexistent
|
||||
- import_tasks: path_is_checked.yml
|
||||
|
||||
# Test that subcommands commands work
|
||||
- import_tasks: subcommands.yml
|
||||
# Test that subcommands commands work
|
||||
- import_tasks: subcommands.yml
|
||||
|
||||
# Test operation of the 'state' parameter
|
||||
- block:
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: tests_state.yml
|
||||
# Test operation of the 'state' parameter
|
||||
- block:
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: tests_state.yml
|
||||
|
||||
# Test for the family parameter
|
||||
- block:
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: tests_family.yml
|
||||
when: ansible_os_family == 'RedHat'
|
||||
# Test for the family parameter
|
||||
- block:
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: tests_family.yml
|
||||
when: ansible_os_family == 'RedHat'
|
||||
|
||||
# Cleanup
|
||||
always:
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
- include_vars: '{{ item }}'
|
||||
with_first_found:
|
||||
- files:
|
||||
- '{{ ansible_os_family }}-{{ ansible_distribution_version }}.yml'
|
||||
- '{{ ansible_os_family }}.yml'
|
||||
- default.yml
|
||||
paths: ../vars
|
||||
- files:
|
||||
- '{{ ansible_os_family }}-{{ ansible_distribution_version }}.yml'
|
||||
- '{{ ansible_os_family }}.yml'
|
||||
- default.yml
|
||||
paths: ../vars
|
||||
- template:
|
||||
src: dummy_command
|
||||
dest: /usr/bin/dummy{{ item }}
|
||||
|
|
|
@ -7,32 +7,32 @@
|
|||
msg: ' with_alternatives: {{ with_alternatives }}, mode: {{ mode }}'
|
||||
|
||||
- block:
|
||||
- name: set alternative (using link parameter)
|
||||
alternatives:
|
||||
name: dummy
|
||||
path: '/usr/bin/dummy{{ item }}'
|
||||
link: '/usr/bin/dummy'
|
||||
register: alternative
|
||||
- name: set alternative (using link parameter)
|
||||
alternatives:
|
||||
name: dummy
|
||||
path: '/usr/bin/dummy{{ item }}'
|
||||
link: '/usr/bin/dummy'
|
||||
register: alternative
|
||||
|
||||
- name: check expected command was executed
|
||||
assert:
|
||||
that:
|
||||
- 'alternative is successful'
|
||||
- 'alternative is changed'
|
||||
- name: check expected command was executed
|
||||
assert:
|
||||
that:
|
||||
- 'alternative is successful'
|
||||
- 'alternative is changed'
|
||||
when: with_link
|
||||
|
||||
- block:
|
||||
- name: set alternative (without link parameter)
|
||||
alternatives:
|
||||
name: dummy
|
||||
path: '/usr/bin/dummy{{ item }}'
|
||||
register: alternative
|
||||
- name: set alternative (without link parameter)
|
||||
alternatives:
|
||||
name: dummy
|
||||
path: '/usr/bin/dummy{{ item }}'
|
||||
register: alternative
|
||||
|
||||
- name: check expected command was executed
|
||||
assert:
|
||||
that:
|
||||
- 'alternative is successful'
|
||||
- 'alternative is changed'
|
||||
- name: check expected command was executed
|
||||
assert:
|
||||
that:
|
||||
- 'alternative is successful'
|
||||
- 'alternative is changed'
|
||||
when: not with_link
|
||||
|
||||
- name: execute dummy command
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- block:
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: setup_test.yml
|
||||
# at least two iterations:
|
||||
# - first will use 'link currently absent',
|
||||
# - second will receive 'link currently points to'
|
||||
- include_tasks: test.yml
|
||||
with_sequence: start=1 end=2
|
||||
- include_tasks: remove_links.yml
|
||||
- include_tasks: setup_test.yml
|
||||
# at least two iterations:
|
||||
# - first will use 'link currently absent',
|
||||
# - second will receive 'link currently points to'
|
||||
- include_tasks: test.yml
|
||||
with_sequence: start=1 end=2
|
||||
vars:
|
||||
with_link: '{{ test_conf[0] }}'
|
||||
with_alternatives: '{{ test_conf[1] }}'
|
||||
|
|
|
@ -11,21 +11,21 @@
|
|||
# java >= 17 is not available in RHEL and CentOS7 repos, which is required for sdkmanager to run
|
||||
- name: Bail out if not supported
|
||||
when:
|
||||
- "ansible_os_family == 'RedHat' and ansible_distribution_version is version('8.0', '<')"
|
||||
- "ansible_os_family == 'RedHat' and ansible_distribution_version is version('8.0', '<')"
|
||||
ansible.builtin.meta: end_play
|
||||
|
||||
- name: Run android_sdk tests
|
||||
environment:
|
||||
PATH: '{{ ansible_env.PATH }}:{{ android_sdk_location }}/cmdline-tools/latest/bin'
|
||||
block:
|
||||
- import_tasks: setup.yml
|
||||
- import_tasks: setup.yml
|
||||
|
||||
- name: Run default tests
|
||||
import_tasks: default-tests.yml
|
||||
when: ansible_os_family != 'FreeBSD'
|
||||
- name: Run default tests
|
||||
import_tasks: default-tests.yml
|
||||
when: ansible_os_family != 'FreeBSD'
|
||||
|
||||
# Most of the important Android SDK packages are not available on FreeBSD (like, build-tools, platform-tools and so on),
|
||||
# but at least some of the functionality can be tested (like, downloading sources)
|
||||
- name: Run FreeBSD tests
|
||||
import_tasks: freebsd-tests.yml
|
||||
when: ansible_os_family == 'FreeBSD'
|
||||
# Most of the important Android SDK packages are not available on FreeBSD (like, build-tools, platform-tools and so on),
|
||||
# but at least some of the functionality can be tested (like, downloading sources)
|
||||
- name: Run FreeBSD tests
|
||||
import_tasks: freebsd-tests.yml
|
||||
when: ansible_os_family == 'FreeBSD'
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
unarchive:
|
||||
src: "{{ commandline_tools_link }}"
|
||||
dest: "{{ android_cmdline_temp_dir }}"
|
||||
remote_src: yes
|
||||
remote_src: true
|
||||
creates: "{{ android_cmdline_temp_dir }}/cmdline-tools"
|
||||
when: not sdkmanager_installed.stat.exists
|
||||
|
||||
|
@ -91,4 +91,4 @@
|
|||
copy:
|
||||
src: "{{ android_cmdline_temp_dir }}/cmdline-tools/"
|
||||
dest: "{{ android_sdk_location }}/cmdline-tools/latest"
|
||||
remote_src: yes
|
||||
remote_src: true
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
- name: Assert collection netbox.netbox was installed
|
||||
assert:
|
||||
that:
|
||||
- install_c0 is changed
|
||||
- '"netbox.netbox" in install_c0.new_collections'
|
||||
- install_c0 is changed
|
||||
- '"netbox.netbox" in install_c0.new_collections'
|
||||
|
||||
- name: Install collection netbox.netbox (again)
|
||||
community.general.ansible_galaxy_install:
|
||||
|
@ -32,7 +32,7 @@
|
|||
- name: Assert collection was not installed
|
||||
assert:
|
||||
that:
|
||||
- install_c1 is not changed
|
||||
- install_c1 is not changed
|
||||
|
||||
###################################################
|
||||
- name: Make directory install_r
|
||||
|
@ -50,8 +50,8 @@
|
|||
- name: Assert collection ansistrano.deploy was installed
|
||||
assert:
|
||||
that:
|
||||
- install_r0 is changed
|
||||
- '"ansistrano.deploy" in install_r0.new_roles'
|
||||
- install_r0 is changed
|
||||
- '"ansistrano.deploy" in install_r0.new_roles'
|
||||
|
||||
- name: Install role ansistrano.deploy (again)
|
||||
community.general.ansible_galaxy_install:
|
||||
|
@ -63,7 +63,7 @@
|
|||
- name: Assert role was not installed
|
||||
assert:
|
||||
that:
|
||||
- install_r1 is not changed
|
||||
- install_r1 is not changed
|
||||
|
||||
###################################################
|
||||
- name: Set requirements file path
|
||||
|
@ -85,9 +85,9 @@
|
|||
- name: Assert requirements file was installed
|
||||
assert:
|
||||
that:
|
||||
- install_rq0 is changed
|
||||
- '"geerlingguy.java" in install_rq0.new_roles'
|
||||
- '"geerlingguy.php_roles" in install_rq0.new_collections'
|
||||
- install_rq0 is changed
|
||||
- '"geerlingguy.java" in install_rq0.new_roles'
|
||||
- '"geerlingguy.php_roles" in install_rq0.new_collections'
|
||||
|
||||
- name: Install from requirements file (again)
|
||||
community.general.ansible_galaxy_install:
|
||||
|
@ -99,7 +99,7 @@
|
|||
- name: Assert requirements file was not installed
|
||||
assert:
|
||||
that:
|
||||
- install_rq1 is not changed
|
||||
- install_rq1 is not changed
|
||||
|
||||
###################################################
|
||||
- name: Make directory upgrade_c
|
||||
|
@ -117,8 +117,8 @@
|
|||
- name: Assert collection netbox.netbox was installed
|
||||
assert:
|
||||
that:
|
||||
- upgrade_c0 is changed
|
||||
- '"netbox.netbox" in upgrade_c0.new_collections'
|
||||
- upgrade_c0 is changed
|
||||
- '"netbox.netbox" in upgrade_c0.new_collections'
|
||||
|
||||
- name: Upgrade collection netbox.netbox
|
||||
community.general.ansible_galaxy_install:
|
||||
|
@ -139,5 +139,5 @@
|
|||
- name: Assert collection was not installed
|
||||
assert:
|
||||
that:
|
||||
- upgrade_c1 is changed
|
||||
- upgrade_c2 is not changed
|
||||
- upgrade_c1 is changed
|
||||
- upgrade_c2 is not changed
|
||||
|
|
|
@ -15,11 +15,11 @@
|
|||
|
||||
- assert:
|
||||
that:
|
||||
- "'warnings' in disable_mpm_modules"
|
||||
- disable_mpm_modules["warnings"] == [
|
||||
"No MPM module loaded! apache2 reload AND other module actions will fail if no MPM module is loaded immediately.",
|
||||
"No MPM module loaded! apache2 reload AND other module actions will fail if no MPM module is loaded immediately."
|
||||
]
|
||||
- "'warnings' in disable_mpm_modules"
|
||||
- disable_mpm_modules["warnings"] == [
|
||||
"No MPM module loaded! apache2 reload AND other module actions will fail if no MPM module is loaded immediately.",
|
||||
"No MPM module loaded! apache2 reload AND other module actions will fail if no MPM module is loaded immediately."
|
||||
]
|
||||
|
||||
- name: Enable MPM event module - Revert previous change
|
||||
apache2_module:
|
||||
|
@ -44,4 +44,4 @@
|
|||
|
||||
- assert:
|
||||
that:
|
||||
- "'warnings' not in disable_mpm_modules"
|
||||
- "'warnings' not in disable_mpm_modules"
|
||||
|
|
|
@ -67,141 +67,141 @@
|
|||
- name: Debian/Ubuntu specific tests
|
||||
when: "ansible_os_family == 'Debian'"
|
||||
block:
|
||||
- name: force disable of autoindex # bug #2499
|
||||
community.general.apache2_module:
|
||||
name: autoindex
|
||||
state: absent
|
||||
force: true
|
||||
|
||||
- name: re-enable autoindex
|
||||
community.general.apache2_module:
|
||||
name: autoindex
|
||||
state: present
|
||||
|
||||
# mod_evasive is enabled by default upon the installation, so disable first and enable second, to preserve the config
|
||||
- name: disable evasive module
|
||||
community.general.apache2_module:
|
||||
name: evasive
|
||||
state: absent
|
||||
|
||||
- name: enable evasive module, test https://github.com/ansible/ansible/issues/22635
|
||||
community.general.apache2_module:
|
||||
name: evasive
|
||||
state: present
|
||||
|
||||
- name: use identifier to enable module, fix for https://github.com/ansible/ansible/issues/33669
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
state: present
|
||||
ignore_errors: true
|
||||
register: enable_dumpio_wrong
|
||||
|
||||
- name: disable dump_io
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
identifier: dumpio_module
|
||||
state: absent
|
||||
|
||||
- name: use identifier to enable module, fix for https://github.com/ansible/ansible/issues/33669
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
identifier: dumpio_module
|
||||
state: present
|
||||
register: enable_dumpio_correct_1
|
||||
|
||||
- name: ensure idempotency with identifier
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
identifier: dumpio_module
|
||||
state: present
|
||||
register: enable_dumpio_correct_2
|
||||
|
||||
- name: disable dump_io
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
identifier: dumpio_module
|
||||
state: absent
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- enable_dumpio_wrong is failed
|
||||
- enable_dumpio_correct_1 is changed
|
||||
- enable_dumpio_correct_2 is not changed
|
||||
|
||||
- name: disable mpm modules
|
||||
community.general.apache2_module:
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
ignore_configcheck: true
|
||||
with_items:
|
||||
- mpm_worker
|
||||
- mpm_event
|
||||
- mpm_prefork
|
||||
|
||||
- name: enabled mpm_event
|
||||
community.general.apache2_module:
|
||||
name: mpm_event
|
||||
state: present
|
||||
ignore_configcheck: true
|
||||
register: enabledmpmevent
|
||||
|
||||
- name: ensure changed mpm_event
|
||||
assert:
|
||||
that:
|
||||
- 'enabledmpmevent.changed'
|
||||
|
||||
- name: switch between mpm_event and mpm_worker
|
||||
community.general.apache2_module:
|
||||
name: "{{ item.name }}"
|
||||
state: "{{ item.state }}"
|
||||
ignore_configcheck: true
|
||||
with_items:
|
||||
- name: mpm_event
|
||||
- name: force disable of autoindex # bug #2499
|
||||
community.general.apache2_module:
|
||||
name: autoindex
|
||||
state: absent
|
||||
- name: mpm_worker
|
||||
force: true
|
||||
|
||||
- name: re-enable autoindex
|
||||
community.general.apache2_module:
|
||||
name: autoindex
|
||||
state: present
|
||||
|
||||
- name: ensure mpm_worker is already enabled
|
||||
community.general.apache2_module:
|
||||
name: mpm_worker
|
||||
state: present
|
||||
register: enabledmpmworker
|
||||
# mod_evasive is enabled by default upon the installation, so disable first and enable second, to preserve the config
|
||||
- name: disable evasive module
|
||||
community.general.apache2_module:
|
||||
name: evasive
|
||||
state: absent
|
||||
|
||||
- name: ensure mpm_worker unchanged
|
||||
assert:
|
||||
that:
|
||||
- 'not enabledmpmworker.changed'
|
||||
- name: enable evasive module, test https://github.com/ansible/ansible/issues/22635
|
||||
community.general.apache2_module:
|
||||
name: evasive
|
||||
state: present
|
||||
|
||||
- name: try to disable all mpm modules with configcheck
|
||||
community.general.apache2_module:
|
||||
name: "{{item}}"
|
||||
state: absent
|
||||
with_items:
|
||||
- mpm_worker
|
||||
- mpm_event
|
||||
- mpm_prefork
|
||||
ignore_errors: true
|
||||
register: remove_with_configcheck
|
||||
- name: use identifier to enable module, fix for https://github.com/ansible/ansible/issues/33669
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
state: present
|
||||
ignore_errors: true
|
||||
register: enable_dumpio_wrong
|
||||
|
||||
- name: ensure configcheck fails task with when run without mpm modules
|
||||
assert:
|
||||
that:
|
||||
- "{{ item.failed }}"
|
||||
with_items: "{{ remove_with_configcheck.results }}"
|
||||
- name: disable dump_io
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
identifier: dumpio_module
|
||||
state: absent
|
||||
|
||||
- name: try to disable all mpm modules without configcheck
|
||||
community.general.apache2_module:
|
||||
name: "{{item}}"
|
||||
state: absent
|
||||
ignore_configcheck: true
|
||||
with_items:
|
||||
- mpm_worker
|
||||
- mpm_event
|
||||
- mpm_prefork
|
||||
- name: use identifier to enable module, fix for https://github.com/ansible/ansible/issues/33669
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
identifier: dumpio_module
|
||||
state: present
|
||||
register: enable_dumpio_correct_1
|
||||
|
||||
- name: enabled mpm_event to restore previous state
|
||||
community.general.apache2_module:
|
||||
name: mpm_event
|
||||
state: present
|
||||
ignore_configcheck: true
|
||||
register: enabledmpmevent
|
||||
- name: ensure idempotency with identifier
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
identifier: dumpio_module
|
||||
state: present
|
||||
register: enable_dumpio_correct_2
|
||||
|
||||
- name: disable dump_io
|
||||
community.general.apache2_module:
|
||||
name: dump_io
|
||||
identifier: dumpio_module
|
||||
state: absent
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- enable_dumpio_wrong is failed
|
||||
- enable_dumpio_correct_1 is changed
|
||||
- enable_dumpio_correct_2 is not changed
|
||||
|
||||
- name: disable mpm modules
|
||||
community.general.apache2_module:
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
ignore_configcheck: true
|
||||
with_items:
|
||||
- mpm_worker
|
||||
- mpm_event
|
||||
- mpm_prefork
|
||||
|
||||
- name: enabled mpm_event
|
||||
community.general.apache2_module:
|
||||
name: mpm_event
|
||||
state: present
|
||||
ignore_configcheck: true
|
||||
register: enabledmpmevent
|
||||
|
||||
- name: ensure changed mpm_event
|
||||
assert:
|
||||
that:
|
||||
- 'enabledmpmevent.changed'
|
||||
|
||||
- name: switch between mpm_event and mpm_worker
|
||||
community.general.apache2_module:
|
||||
name: "{{ item.name }}"
|
||||
state: "{{ item.state }}"
|
||||
ignore_configcheck: true
|
||||
with_items:
|
||||
- name: mpm_event
|
||||
state: absent
|
||||
- name: mpm_worker
|
||||
state: present
|
||||
|
||||
- name: ensure mpm_worker is already enabled
|
||||
community.general.apache2_module:
|
||||
name: mpm_worker
|
||||
state: present
|
||||
register: enabledmpmworker
|
||||
|
||||
- name: ensure mpm_worker unchanged
|
||||
assert:
|
||||
that:
|
||||
- 'not enabledmpmworker.changed'
|
||||
|
||||
- name: try to disable all mpm modules with configcheck
|
||||
community.general.apache2_module:
|
||||
name: "{{item}}"
|
||||
state: absent
|
||||
with_items:
|
||||
- mpm_worker
|
||||
- mpm_event
|
||||
- mpm_prefork
|
||||
ignore_errors: true
|
||||
register: remove_with_configcheck
|
||||
|
||||
- name: ensure configcheck fails task with when run without mpm modules
|
||||
assert:
|
||||
that:
|
||||
- "{{ item.failed }}"
|
||||
with_items: "{{ remove_with_configcheck.results }}"
|
||||
|
||||
- name: try to disable all mpm modules without configcheck
|
||||
community.general.apache2_module:
|
||||
name: "{{item}}"
|
||||
state: absent
|
||||
ignore_configcheck: true
|
||||
with_items:
|
||||
- mpm_worker
|
||||
- mpm_event
|
||||
- mpm_prefork
|
||||
|
||||
- name: enabled mpm_event to restore previous state
|
||||
community.general.apache2_module:
|
||||
name: mpm_event
|
||||
state: present
|
||||
ignore_configcheck: true
|
||||
register: enabledmpmevent
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
btrfs_subvolume_single_configs:
|
||||
- file: "/tmp/disks0.img"
|
||||
loop: "/dev/loop95"
|
||||
- file: "/tmp/disks0.img"
|
||||
loop: "/dev/loop95"
|
||||
btrfs_subvolume_multiple_configs:
|
||||
- file: "/tmp/diskm0.img"
|
||||
loop: "/dev/loop97"
|
||||
- file: "/tmp/diskm1.img"
|
||||
loop: "/dev/loop98"
|
||||
- file: "/tmp/diskm2.img"
|
||||
loop: "/dev/loop99"
|
||||
- file: "/tmp/diskm0.img"
|
||||
loop: "/dev/loop97"
|
||||
- file: "/tmp/diskm1.img"
|
||||
loop: "/dev/loop98"
|
||||
- file: "/tmp/diskm2.img"
|
||||
loop: "/dev/loop99"
|
||||
btrfs_subvolume_configs: "{{ btrfs_subvolume_single_configs + btrfs_subvolume_multiple_configs }}"
|
||||
btrfs_subvolume_single_devices: "{{ btrfs_subvolume_single_configs | map(attribute='loop') }}"
|
||||
btrfs_subvolume_single_label: "single"
|
||||
|
|
|
@ -8,22 +8,22 @@
|
|||
name:
|
||||
- btrfs-progs # btrfs userspace
|
||||
- util-linux # losetup
|
||||
ignore_errors: True
|
||||
ignore_errors: true
|
||||
register: btrfs_installed
|
||||
|
||||
- name: Execute integration tests tests
|
||||
block:
|
||||
- ansible.builtin.include_tasks: 'setup.yml'
|
||||
- ansible.builtin.include_tasks: 'setup.yml'
|
||||
|
||||
- name: "Execute test scenario for single device filesystem"
|
||||
ansible.builtin.include_tasks: 'run_filesystem_tests.yml'
|
||||
vars:
|
||||
btrfs_subvolume_target_device: "{{ btrfs_subvolume_single_devices | first }}"
|
||||
btrfs_subvolume_target_label: "{{ btrfs_subvolume_single_label }}"
|
||||
- name: "Execute test scenario for single device filesystem"
|
||||
ansible.builtin.include_tasks: 'run_filesystem_tests.yml'
|
||||
vars:
|
||||
btrfs_subvolume_target_device: "{{ btrfs_subvolume_single_devices | first }}"
|
||||
btrfs_subvolume_target_label: "{{ btrfs_subvolume_single_label }}"
|
||||
|
||||
- name: "Execute test scenario for multiple device configuration"
|
||||
ansible.builtin.include_tasks: 'run_filesystem_tests.yml'
|
||||
vars:
|
||||
btrfs_subvolume_target_device: "{{ btrfs_subvolume_multiple_devices | first }}"
|
||||
btrfs_subvolume_target_label: "{{ btrfs_subvolume_multiple_label }}"
|
||||
- name: "Execute test scenario for multiple device configuration"
|
||||
ansible.builtin.include_tasks: 'run_filesystem_tests.yml'
|
||||
vars:
|
||||
btrfs_subvolume_target_device: "{{ btrfs_subvolume_multiple_devices | first }}"
|
||||
btrfs_subvolume_target_label: "{{ btrfs_subvolume_multiple_label }}"
|
||||
when: btrfs_installed is success
|
||||
|
|
|
@ -10,23 +10,23 @@
|
|||
|
||||
- name: "Execute test scenarios where non-root subvolume is mounted"
|
||||
block:
|
||||
- name: Create subvolume '/nonroot'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
name: "/nonroot"
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
state: "present"
|
||||
register: nonroot
|
||||
- name: "Mount subvolume '/nonroot'"
|
||||
ansible.posix.mount:
|
||||
src: "{{ nonroot.filesystem.devices | first }}"
|
||||
path: /mnt
|
||||
opts: "subvolid={{ nonroot.target_subvolume_id }}"
|
||||
fstype: btrfs
|
||||
state: mounted
|
||||
- name: "Run tests for explicit, mounted single device configuration"
|
||||
ansible.builtin.include_tasks: 'run_common_tests.yml'
|
||||
- name: "Unmount subvolume /nonroot"
|
||||
ansible.posix.mount:
|
||||
path: /mnt
|
||||
state: absent
|
||||
- name: Create subvolume '/nonroot'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
name: "/nonroot"
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
state: "present"
|
||||
register: nonroot
|
||||
- name: "Mount subvolume '/nonroot'"
|
||||
ansible.posix.mount:
|
||||
src: "{{ nonroot.filesystem.devices | first }}"
|
||||
path: /mnt
|
||||
opts: "subvolid={{ nonroot.target_subvolume_id }}"
|
||||
fstype: btrfs
|
||||
state: mounted
|
||||
- name: "Run tests for explicit, mounted single device configuration"
|
||||
ansible.builtin.include_tasks: 'run_common_tests.yml'
|
||||
- name: "Unmount subvolume /nonroot"
|
||||
ansible.posix.mount:
|
||||
path: /mnt
|
||||
state: absent
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
- name: Create single device btrfs filesystem
|
||||
ansible.builtin.command:
|
||||
cmd: "mkfs.btrfs --label {{ btrfs_subvolume_single_label }} -f {{ btrfs_subvolume_single_devices | first }}"
|
||||
changed_when: True
|
||||
changed_when: true
|
||||
|
||||
- name: Create multiple device btrfs filesystem
|
||||
ansible.builtin.command:
|
||||
cmd: "mkfs.btrfs --label {{ btrfs_subvolume_multiple_label }} -f -d raid0 {{ btrfs_subvolume_multiple_devices | join(' ') }}"
|
||||
changed_when: True
|
||||
changed_when: true
|
||||
|
||||
# Typically created by udev, but apparently missing on Alpine
|
||||
- name: Create btrfs control device node
|
||||
|
@ -34,4 +34,4 @@
|
|||
- name: Force rescan to ensure all device are detected
|
||||
ansible.builtin.command:
|
||||
cmd: "btrfs device scan"
|
||||
changed_when: True
|
||||
changed_when: true
|
||||
|
|
|
@ -5,76 +5,76 @@
|
|||
|
||||
- name: "Match targeted filesystem by label"
|
||||
block:
|
||||
- name: Match '{{ btrfs_subvolume_target_label }}' filesystem by label
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
name: "/match_label"
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Match '{{ btrfs_subvolume_target_label }}' filesystem by label
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
name: "/match_label"
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
state: "present"
|
||||
register: result
|
||||
|
||||
- name: Validate the '{{ btrfs_subvolume_target_label }}' filesystem was chosen
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.filesystem.label == btrfs_subvolume_target_label
|
||||
- name: Validate the '{{ btrfs_subvolume_target_label }}' filesystem was chosen
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.filesystem.label == btrfs_subvolume_target_label
|
||||
|
||||
- name: "Match targeted filesystem by uuid"
|
||||
block:
|
||||
- name: Match '{{ btrfs_subvolume_target_label }}' filesystem by uuid
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
name: "/match_uuid"
|
||||
filesystem_uuid: "{{ result.filesystem.uuid }}"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Match '{{ btrfs_subvolume_target_label }}' filesystem by uuid
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
name: "/match_uuid"
|
||||
filesystem_uuid: "{{ result.filesystem.uuid }}"
|
||||
state: "present"
|
||||
register: result
|
||||
|
||||
- name: Validate the '{{ btrfs_subvolume_target_label }}' filesystem was chosen
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.filesystem.label == btrfs_subvolume_target_label
|
||||
- name: Validate the '{{ btrfs_subvolume_target_label }}' filesystem was chosen
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.filesystem.label == btrfs_subvolume_target_label
|
||||
|
||||
- name: "Match targeted filesystem by devices"
|
||||
block:
|
||||
- name: Match '{{ btrfs_subvolume_target_label }}' filesystem by device
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
name: "/match_device"
|
||||
filesystem_device: "{{ result.filesystem.devices | first }}"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Match '{{ btrfs_subvolume_target_label }}' filesystem by device
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
name: "/match_device"
|
||||
filesystem_device: "{{ result.filesystem.devices | first }}"
|
||||
state: "present"
|
||||
register: result
|
||||
|
||||
- name: Validate the '{{ btrfs_subvolume_target_label }}' filesystem was chosen
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.filesystem.label == btrfs_subvolume_target_label
|
||||
- name: Validate the '{{ btrfs_subvolume_target_label }}' filesystem was chosen
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.filesystem.label == btrfs_subvolume_target_label
|
||||
|
||||
- name: "Match only mounted filesystem"
|
||||
block:
|
||||
- name: "Mount filesystem '{{ btrfs_subvolume_target_label }}'"
|
||||
ansible.posix.mount:
|
||||
src: "{{ result.filesystem.devices | first }}"
|
||||
path: /mnt
|
||||
opts: "subvolid={{ 5 }}"
|
||||
fstype: btrfs
|
||||
state: mounted
|
||||
- name: "Mount filesystem '{{ btrfs_subvolume_target_label }}'"
|
||||
ansible.posix.mount:
|
||||
src: "{{ result.filesystem.devices | first }}"
|
||||
path: /mnt
|
||||
opts: "subvolid={{ 5 }}"
|
||||
fstype: btrfs
|
||||
state: mounted
|
||||
|
||||
- name: Print current status
|
||||
community.general.btrfs_info:
|
||||
- name: Print current status
|
||||
community.general.btrfs_info:
|
||||
|
||||
- name: Match '{{ btrfs_subvolume_target_label }}' filesystem when only mount
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
name: "/match_only_mounted"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Match '{{ btrfs_subvolume_target_label }}' filesystem when only mount
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
name: "/match_only_mounted"
|
||||
state: "present"
|
||||
register: result
|
||||
|
||||
- name: "Unmount filesystem '{{ btrfs_subvolume_target_label }}'"
|
||||
ansible.posix.mount:
|
||||
path: /mnt
|
||||
state: absent
|
||||
- name: "Unmount filesystem '{{ btrfs_subvolume_target_label }}'"
|
||||
ansible.posix.mount:
|
||||
path: /mnt
|
||||
state: absent
|
||||
|
||||
- name: Validate the '{{ btrfs_subvolume_target_label }}' filesystem was chosen
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.filesystem.label == btrfs_subvolume_target_label
|
||||
when: False # TODO don't attempt this if the host already has a pre-existing btrfs filesystem
|
||||
- name: Validate the '{{ btrfs_subvolume_target_label }}' filesystem was chosen
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.filesystem.label == btrfs_subvolume_target_label
|
||||
when: false # TODO don't attempt this if the host already has a pre-existing btrfs filesystem
|
||||
|
|
|
@ -5,37 +5,37 @@
|
|||
|
||||
- name: Create a snapshot, overwriting if one already exists at path
|
||||
block:
|
||||
- name: Create a snapshot named 'snapshot_clobber'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_clobber"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "clobber"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_clobber' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a snapshot named 'snapshot_clobber'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_clobber"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "clobber"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_clobber' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Create a snapshot named 'snapshot_clobber' (no idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_clobber"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "clobber"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_clobber' created (no idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a snapshot named 'snapshot_clobber' (no idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_clobber"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "clobber"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_clobber' created (no idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Cleanup created snapshot
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_clobber"
|
||||
state: "absent"
|
||||
|
|
|
@ -5,38 +5,38 @@
|
|||
|
||||
- name: Create a snapshot, erroring if one already exists at path
|
||||
block:
|
||||
- name: Create a snapshot named 'snapshot_error'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_error"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "error"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_error' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a snapshot named 'snapshot_error'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_error"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "error"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_error' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Create a snapshot named 'snapshot_error' (no idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_error"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "error"
|
||||
state: "present"
|
||||
register: result
|
||||
ignore_errors: true
|
||||
- name: Snapshot 'snapshot_error' created (no idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Create a snapshot named 'snapshot_error' (no idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_error"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "error"
|
||||
state: "present"
|
||||
register: result
|
||||
ignore_errors: true
|
||||
- name: Snapshot 'snapshot_error' created (no idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Cleanup created snapshot
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_error"
|
||||
state: "absent"
|
||||
|
|
|
@ -5,37 +5,37 @@
|
|||
|
||||
- name: Create a snapshot if one does not already exist at path
|
||||
block:
|
||||
- name: Create a snapshot named 'snapshot_skip'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_skip"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "skip"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_skip' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a snapshot named 'snapshot_skip'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_skip"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "skip"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_skip' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Create a snapshot named 'snapshot_skip' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_skip"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "skip"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_skip' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Create a snapshot named 'snapshot_skip' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_skip"
|
||||
snapshot_source: "/"
|
||||
snapshot_conflict: "skip"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Snapshot 'snapshot_skip' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Cleanup created snapshot
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/snapshot_skip"
|
||||
state: "absent"
|
||||
|
|
|
@ -5,95 +5,95 @@
|
|||
|
||||
- name: Change the default subvolume
|
||||
block:
|
||||
- name: Update filesystem default subvolume to '@'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
default: True
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '@' set to default
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Update filesystem default subvolume to '@' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
default: True
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '@' set to default (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Update filesystem default subvolume to '@'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
default: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '@' set to default
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Update filesystem default subvolume to '@' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
default: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '@' set to default (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Revert the default subvolume
|
||||
block:
|
||||
- name: Revert filesystem default subvolume to '/'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
default: True
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '/' set to default
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Revert filesystem default subvolume to '/' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
default: True
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '/' set to default (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Revert filesystem default subvolume to '/'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
default: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '/' set to default
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Revert filesystem default subvolume to '/' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
default: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '/' set to default (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
|
||||
- name: Change the default subvolume again
|
||||
block:
|
||||
- name: Update filesystem default subvolume to '@'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
default: True
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '@' set to default
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Update filesystem default subvolume to '@'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
default: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume '@' set to default
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Revert custom default subvolume to fs_tree root when deleted
|
||||
block:
|
||||
- name: Delete custom default subvolume '@'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume '@' deleted
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Delete custom default subvolume '@' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume '@' deleted (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Delete custom default subvolume '@'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume '@' deleted
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Delete custom default subvolume '@' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/@"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume '@' deleted (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
|
|
@ -5,57 +5,57 @@
|
|||
|
||||
- name: Create parent subvolume 'container'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container"
|
||||
state: "present"
|
||||
|
||||
- name: Create a nested subvolume
|
||||
block:
|
||||
- name: Create a subvolume named 'nested' inside 'container'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/nested"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume 'container/nested' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a subvolume named 'nested' inside 'container' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/nested"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume 'container/nested' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Create a subvolume named 'nested' inside 'container'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/nested"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume 'container/nested' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a subvolume named 'nested' inside 'container' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/nested"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume 'container/nested' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Remove a nested subvolume
|
||||
block:
|
||||
- name: Remove a subvolume named 'nested' inside 'container'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/nested"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume 'container/nested' removed
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Remove a subvolume named 'nested' inside 'container' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/nested"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume 'container/nested' removed (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Remove a subvolume named 'nested' inside 'container'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/nested"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume 'container/nested' removed
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Remove a subvolume named 'nested' inside 'container' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/nested"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume 'container/nested' removed (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
|
|
@ -5,82 +5,82 @@
|
|||
|
||||
- name: Recursively create subvolumes
|
||||
block:
|
||||
- name: Create a subvolume named '/recursive/son/grandson'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive/son/grandson"
|
||||
recursive: Yes
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named '/recursive/son/grandson' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a subvolume named '/recursive/son/grandson'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive/son/grandson"
|
||||
recursive: true
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named '/recursive/son/grandson' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Create a subvolume named '/recursive/son/grandson' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive/son/grandson"
|
||||
recursive: Yes
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named '/recursive/son/grandson' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Create a subvolume named '/recursive/son/grandson' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive/son/grandson"
|
||||
recursive: true
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named '/recursive/son/grandson' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Create a subvolume named '/recursive/daughter/granddaughter'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive/daughter/granddaughter"
|
||||
recursive: Yes
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named '/recursive/son/grandson' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a subvolume named '/recursive/daughter/granddaughter'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive/daughter/granddaughter"
|
||||
recursive: true
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named '/recursive/son/grandson' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Create a subvolume named '/recursive/daughter/granddaughter' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive/daughter/granddaughter"
|
||||
recursive: Yes
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named '/recursive/son/grandson' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Create a subvolume named '/recursive/daughter/granddaughter' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive/daughter/granddaughter"
|
||||
recursive: true
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named '/recursive/son/grandson' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Recursively remove subvolumes
|
||||
block:
|
||||
- name: Remove subvolume '/recursive' and all descendents
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive"
|
||||
recursive: Yes
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume '/recursive' removed
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Remove subvolume '/recursive' and all descendents
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive"
|
||||
recursive: true
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume '/recursive' removed
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Remove subvolume '/recursive' and all descendents (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive"
|
||||
recursive: Yes
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume '/recursive' removed (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Remove subvolume '/recursive' and all descendents (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/recursive"
|
||||
recursive: true
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume '/recursive' removed (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
|
|
@ -5,50 +5,50 @@
|
|||
|
||||
- name: Create a simple subvolume
|
||||
block:
|
||||
- name: Create a subvolume named 'simple'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/simple"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named 'simple' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a subvolume named 'simple' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/simple"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named 'simple' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Create a subvolume named 'simple'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/simple"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named 'simple' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a subvolume named 'simple' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/simple"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named 'simple' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Remove a simple subvolume
|
||||
block:
|
||||
- name: Remove a subvolume named 'simple'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/simple"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume named 'simple' removed
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Remove a subvolume named 'simple' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/simple"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume named 'simple' removed (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Remove a subvolume named 'simple'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/simple"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume named 'simple' removed
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Remove a subvolume named 'simple' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/simple"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume named 'simple' removed (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
|
|
@ -5,58 +5,58 @@
|
|||
|
||||
- name: Create a subvolume named 'container'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container"
|
||||
state: "present"
|
||||
|
||||
- name: Create a subvolume with whitespace in the name
|
||||
block:
|
||||
- name: Create a subvolume named 'container/my data'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/my data"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named 'container/my data' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a subvolume named 'container/my data' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/my data"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named 'container/my data' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Create a subvolume named 'container/my data'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/my data"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named 'container/my data' created
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Create a subvolume named 'container/my data' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/my data"
|
||||
state: "present"
|
||||
register: result
|
||||
- name: Subvolume named 'container/my data' created (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- name: Remove a subvolume with whitespace in the name
|
||||
block:
|
||||
- name: Remove a subvolume named 'container/my data'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/my data"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume named 'container/my data' removed
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
- name: Remove a subvolume named 'container/my data'
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/my data"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume named 'container/my data' removed
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
- name: Remove a subvolume named 'container/my data' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: Yes
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/my data"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume named 'container/my data' removed (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- name: Remove a subvolume named 'container/my data' (idempotency)
|
||||
community.general.btrfs_subvolume:
|
||||
automount: true
|
||||
filesystem_label: "{{ btrfs_subvolume_target_label }}"
|
||||
name: "/container/my data"
|
||||
state: "absent"
|
||||
register: result
|
||||
- name: Subvolume named 'container/my data' removed (idempotency)
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
|
|
@ -9,59 +9,59 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- block:
|
||||
- name: Create temporary playbook files
|
||||
tempfile:
|
||||
state: file
|
||||
suffix: temp
|
||||
loop: "{{ tests }}"
|
||||
loop_control:
|
||||
loop_var: test
|
||||
label: "{{ test.name }}"
|
||||
register: temporary_playbook_files
|
||||
- name: Create temporary playbook files
|
||||
tempfile:
|
||||
state: file
|
||||
suffix: temp
|
||||
loop: "{{ tests }}"
|
||||
loop_control:
|
||||
loop_var: test
|
||||
label: "{{ test.name }}"
|
||||
register: temporary_playbook_files
|
||||
|
||||
- name: Set temporary playbook file content
|
||||
copy:
|
||||
content: "{{ test.playbook }}"
|
||||
dest: "{{ temporary_playbook_files.results[test_idx].path }}"
|
||||
loop: "{{ tests }}"
|
||||
loop_control:
|
||||
loop_var: test
|
||||
index_var: test_idx
|
||||
label: "{{ test.name }}"
|
||||
- name: Set temporary playbook file content
|
||||
copy:
|
||||
content: "{{ test.playbook }}"
|
||||
dest: "{{ temporary_playbook_files.results[test_idx].path }}"
|
||||
loop: "{{ tests }}"
|
||||
loop_control:
|
||||
loop_var: test
|
||||
index_var: test_idx
|
||||
label: "{{ test.name }}"
|
||||
|
||||
- name: Collect outputs
|
||||
command: "ansible-playbook -i {{ inventory }} {{ playbook }}"
|
||||
environment: "{{ test.environment }}"
|
||||
loop: "{{ tests }}"
|
||||
loop_control:
|
||||
loop_var: test
|
||||
label: "{{ test.name }}"
|
||||
register: outputs
|
||||
changed_when: false
|
||||
vars:
|
||||
inventory: "{{ role_path }}/inventory.yml"
|
||||
playbook: "
|
||||
{%- for result in temporary_playbook_files.results -%}
|
||||
{%- if result.test.name == test.name -%}
|
||||
{{- result.path -}}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}"
|
||||
- name: Collect outputs
|
||||
command: "ansible-playbook -i {{ inventory }} {{ playbook }}"
|
||||
environment: "{{ test.environment }}"
|
||||
loop: "{{ tests }}"
|
||||
loop_control:
|
||||
loop_var: test
|
||||
label: "{{ test.name }}"
|
||||
register: outputs
|
||||
changed_when: false
|
||||
vars:
|
||||
inventory: "{{ role_path }}/inventory.yml"
|
||||
playbook: "
|
||||
{%- for result in temporary_playbook_files.results -%}
|
||||
{%- if result.test.name == test.name -%}
|
||||
{{- result.path -}}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}"
|
||||
|
||||
- name: Assert test output equals expected output
|
||||
assert:
|
||||
that: result.output.differences | length == 0
|
||||
loop: "{{ outputs.results | callback_results_extractor }}"
|
||||
loop_control:
|
||||
loop_var: result
|
||||
label: "{{ result.name }}"
|
||||
register: assertions
|
||||
- name: Assert test output equals expected output
|
||||
assert:
|
||||
that: result.output.differences | length == 0
|
||||
loop: "{{ outputs.results | callback_results_extractor }}"
|
||||
loop_control:
|
||||
loop_var: result
|
||||
label: "{{ result.name }}"
|
||||
register: assertions
|
||||
|
||||
always:
|
||||
- name: Remove temporary playbooks
|
||||
file:
|
||||
path: "{{ temporary_file.path }}"
|
||||
state: absent
|
||||
loop: "{{ temporary_playbook_files.results }}"
|
||||
loop_control:
|
||||
loop_var: temporary_file
|
||||
label: "{{ temporary_file.test.name }}: {{ temporary_file.path }}"
|
||||
- name: Remove temporary playbooks
|
||||
file:
|
||||
path: "{{ temporary_file.path }}"
|
||||
state: absent
|
||||
loop: "{{ temporary_playbook_files.results }}"
|
||||
loop_control:
|
||||
loop_var: temporary_file
|
||||
label: "{{ temporary_file.test.name }}: {{ temporary_file.path }}"
|
||||
|
|
|
@ -41,22 +41,21 @@
|
|||
content: |
|
||||
Foo bar
|
||||
Bar baz bam!
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Gathering Facts] *********************************************************",
|
||||
"ok: [testhost]",
|
||||
"",
|
||||
"TASK [Create file] *************************************************************",
|
||||
"changed: [testhost]",
|
||||
"",
|
||||
"TASK [Modify file] *************************************************************",
|
||||
"changed: [testhost]",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ",
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Gathering Facts] *********************************************************"
|
||||
- "ok: [testhost]"
|
||||
- ""
|
||||
- "TASK [Create file] *************************************************************"
|
||||
- "changed: [testhost]"
|
||||
- ""
|
||||
- "TASK [Modify file] *************************************************************"
|
||||
- "changed: [testhost]"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
always:
|
||||
- name: Clean up temp file
|
||||
|
|
|
@ -25,18 +25,17 @@
|
|||
- name: Sample task name
|
||||
debug:
|
||||
msg: sample debug msg
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"sample debug msg\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"sample debug msg\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set playbook_on_start_msg callback using environment variable
|
||||
environment:
|
||||
|
@ -51,19 +50,18 @@
|
|||
- name: Sample task name
|
||||
debug:
|
||||
msg: sample debug msg
|
||||
expected_output: [
|
||||
"Sample output Sample playbook message",
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"sample debug msg\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- "Sample output Sample playbook message"
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"sample debug msg\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set playbook_on_play_start_msg callback using play variable
|
||||
environment:
|
||||
|
@ -80,17 +78,16 @@
|
|||
- name: Sample task name
|
||||
debug:
|
||||
msg: sample debug msg
|
||||
expected_output: [
|
||||
"Sample output Sample play name",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"sample debug msg\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- "Sample output Sample play name"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"sample debug msg\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set playbook_on_task_start_msg callback using play variable
|
||||
environment:
|
||||
|
@ -106,17 +103,16 @@
|
|||
- name: Sample task name
|
||||
debug:
|
||||
msg: sample debug msg
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"Sample output Sample task name",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"sample debug msg\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- "Sample output Sample task name"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"sample debug msg\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set playbook_on_task_start_msg callback using task variable
|
||||
environment:
|
||||
|
@ -132,17 +128,16 @@
|
|||
msg: sample debug msg
|
||||
vars:
|
||||
ansible_callback_diy_playbook_on_task_start_msg: Sample output {{ ansible_callback_diy.task.name }}
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"Sample output Sample task name",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"sample debug msg\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- "Sample output Sample task name"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"sample debug msg\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set runner_on_ok_msg callback using task variable
|
||||
environment:
|
||||
|
@ -158,16 +153,15 @@
|
|||
msg: sample debug msg
|
||||
vars:
|
||||
ansible_callback_diy_runner_on_ok_msg: Sample output {{ ansible_callback_diy.result.output.msg }}
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"Sample output sample debug msg",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "Sample output sample debug msg"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set runner_on_failed_msg callback using task variable
|
||||
environment:
|
||||
|
@ -185,16 +179,15 @@
|
|||
ignore_errors: true
|
||||
vars:
|
||||
ansible_callback_diy_runner_on_failed_msg: Sample output Sample failure message
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"Sample output Sample failure message",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "Sample output Sample failure message"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1 "
|
||||
|
||||
- name: Set runner_on_skipped_msg callback using task variable
|
||||
environment:
|
||||
|
@ -211,16 +204,15 @@
|
|||
when: false
|
||||
vars:
|
||||
ansible_callback_diy_runner_on_skipped_msg: Sample output Skipped {{ ansible_callback_diy.task.name }}
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"Sample output Skipped Sample task name",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=0 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "Sample output Skipped Sample task name"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=0 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set runner_item_on_ok_msg callback using task variable
|
||||
environment:
|
||||
|
@ -240,18 +232,17 @@
|
|||
- sample item 3
|
||||
vars:
|
||||
ansible_callback_diy_runner_item_on_ok_msg: Sample output Looping {{ ansible_callback_diy.result.output.msg }}
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"Sample output Looping sample debug msg sample item 1",
|
||||
"Sample output Looping sample debug msg sample item 2",
|
||||
"Sample output Looping sample debug msg sample item 3",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "Sample output Looping sample debug msg sample item 1"
|
||||
- "Sample output Looping sample debug msg sample item 2"
|
||||
- "Sample output Looping sample debug msg sample item 3"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set runner_item_on_failed_msg callback using task variable
|
||||
environment:
|
||||
|
@ -273,28 +264,25 @@
|
|||
ignore_errors: true
|
||||
vars:
|
||||
ansible_callback_diy_runner_item_on_failed_msg: Sample output Looping sample failure message
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"ok: [testhost] => (item=sample item 1) => {",
|
||||
" \"msg\": \"sample debug msg sample item 1\"",
|
||||
"}",
|
||||
"Sample output Looping sample failure message",
|
||||
"ok: [testhost] => (item=sample item 3) => {",
|
||||
" \"msg\": \"sample debug msg sample item 3\"",
|
||||
"}",
|
||||
[
|
||||
# Apparently a bug was fixed in Ansible, as before it ran through with "All items completed"
|
||||
"fatal: [testhost]: FAILED! => {\"msg\": \"All items completed\"}",
|
||||
"fatal: [testhost]: FAILED! => {\"msg\": \"One or more items failed\"}",
|
||||
],
|
||||
"...ignoring",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "ok: [testhost] => (item=sample item 1) => {"
|
||||
- " \"msg\": \"sample debug msg sample item 1\""
|
||||
- "}"
|
||||
- "Sample output Looping sample failure message"
|
||||
- "ok: [testhost] => (item=sample item 3) => {"
|
||||
- " \"msg\": \"sample debug msg sample item 3\""
|
||||
- "}"
|
||||
- # Apparently a bug was fixed in Ansible, as before it ran through with "All items completed"
|
||||
- "fatal: [testhost]: FAILED! => {\"msg\": \"All items completed\"}"
|
||||
- "fatal: [testhost]: FAILED! => {\"msg\": \"One or more items failed\"}"
|
||||
- "...ignoring"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1 "
|
||||
|
||||
- name: Set runner_item_on_skipped_msg callback using task variable
|
||||
environment:
|
||||
|
@ -315,22 +303,21 @@
|
|||
when: item != 'sample item 2'
|
||||
vars:
|
||||
ansible_callback_diy_runner_item_on_skipped_msg: Sample output Looping Skipped {{ ansible_callback_diy.result.output.item }}
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"ok: [testhost] => (item=sample item 1) => {",
|
||||
" \"msg\": \"sample debug msg sample item 1\"",
|
||||
"}",
|
||||
"Sample output Looping Skipped sample item 2",
|
||||
"ok: [testhost] => (item=sample item 3) => {",
|
||||
" \"msg\": \"sample debug msg sample item 3\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "ok: [testhost] => (item=sample item 1) => {"
|
||||
- " \"msg\": \"sample debug msg sample item 1\""
|
||||
- "}"
|
||||
- "Sample output Looping Skipped sample item 2"
|
||||
- "ok: [testhost] => (item=sample item 3) => {"
|
||||
- " \"msg\": \"sample debug msg sample item 3\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set playbook_on_stats_msg callback using play variable
|
||||
environment:
|
||||
|
@ -371,20 +358,19 @@
|
|||
- name: Sample task name
|
||||
debug:
|
||||
msg: sample debug msg
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"sample debug msg\"",
|
||||
"}",
|
||||
" Sample output stats",
|
||||
"===============================",
|
||||
" ok : testhost: 1",
|
||||
"",
|
||||
" processed : testhost: 1"
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"sample debug msg\""
|
||||
- "}"
|
||||
- " Sample output stats"
|
||||
- "==============================="
|
||||
- " ok : testhost: 1"
|
||||
- ""
|
||||
- " processed : testhost: 1"
|
||||
|
||||
- name: Suppress output on playbook_on_task_start_msg callback using task variable
|
||||
environment:
|
||||
|
@ -400,16 +386,15 @@
|
|||
msg: sample debug msg
|
||||
vars:
|
||||
ansible_callback_diy_playbook_on_task_start_msg: ''
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"sample debug msg\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"sample debug msg\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Suppress output on runner_on_ok_msg callback using task variable
|
||||
environment:
|
||||
|
@ -425,15 +410,14 @@
|
|||
msg: sample debug msg
|
||||
vars:
|
||||
ansible_callback_diy_runner_on_ok_msg: ''
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Set runner_on_ok_msg_color using task variable
|
||||
environment:
|
||||
|
@ -450,13 +434,12 @@
|
|||
vars:
|
||||
ansible_callback_diy_runner_on_ok_msg: Sample output {{ ansible_callback_diy.result.output.msg }}
|
||||
ansible_callback_diy_runner_on_ok_msg_color: blue
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"Sample output sample debug msg",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "Sample output sample debug msg"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
|
|
@ -24,18 +24,17 @@
|
|||
- name: Sample task
|
||||
debug:
|
||||
msg: This is a test
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task] *************************************************************",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"This is a test\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task] *************************************************************"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"This is a test\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: community.general.print_task is enabled
|
||||
environment:
|
||||
|
@ -49,23 +48,22 @@
|
|||
- name: Sample task
|
||||
debug:
|
||||
msg: This is a test
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task] *************************************************************",
|
||||
"",
|
||||
"- name: Sample task",
|
||||
" debug:",
|
||||
" msg: This is a test",
|
||||
"",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"This is a test\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task] *************************************************************"
|
||||
- ""
|
||||
- "- name: Sample task"
|
||||
- " debug:"
|
||||
- " msg: This is a test"
|
||||
- ""
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"This is a test\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Print with msg parameter on the same line
|
||||
environment:
|
||||
|
@ -78,22 +76,21 @@
|
|||
tasks:
|
||||
- name: Sample task
|
||||
debug: msg="This is a test"
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task] *************************************************************",
|
||||
"",
|
||||
"- name: Sample task",
|
||||
" debug: msg=\"This is a test\"",
|
||||
"",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"This is a test\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task] *************************************************************"
|
||||
- ""
|
||||
- "- name: Sample task"
|
||||
- " debug: msg=\"This is a test\""
|
||||
- ""
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"This is a test\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Task with additional parameters
|
||||
environment:
|
||||
|
@ -110,23 +107,22 @@
|
|||
test_var: "Hello World"
|
||||
debug:
|
||||
var: test_var
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task] *************************************************************",
|
||||
"",
|
||||
"- name: Sample task",
|
||||
" when: true",
|
||||
" vars:",
|
||||
" test_var: Hello World",
|
||||
" debug:",
|
||||
" var: test_var",
|
||||
"",
|
||||
"ok: [testhost] => {",
|
||||
" \"test_var\": \"Hello World\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task] *************************************************************"
|
||||
- ""
|
||||
- "- name: Sample task"
|
||||
- " when: true"
|
||||
- " vars:"
|
||||
- " test_var: Hello World"
|
||||
- " debug:"
|
||||
- " var: test_var"
|
||||
- ""
|
||||
- "ok: [testhost] => {"
|
||||
- " \"test_var\": \"Hello World\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
|
|
@ -26,18 +26,17 @@
|
|||
- name: Sample task name
|
||||
debug:
|
||||
msg: sample debug msg
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ******************************************************* 15:04:05",
|
||||
"",
|
||||
"TASK [Sample task name] *********************************************** 15:04:05",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"sample debug msg\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP ************************************************************ 15:04:05",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ******************************************************* 15:04:05"
|
||||
- ""
|
||||
- "TASK [Sample task name] *********************************************** 15:04:05"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"sample debug msg\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP ************************************************************ 15:04:05"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Enable timestamp in the longer length
|
||||
environment:
|
||||
|
@ -52,15 +51,14 @@
|
|||
- name: Sample task name
|
||||
debug:
|
||||
msg: sample debug msg
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ******************************************** 2006-01-02T15:04:05",
|
||||
"",
|
||||
"TASK [Sample task name] ************************************ 2006-01-02T15:04:05",
|
||||
"ok: [testhost] => {",
|
||||
" \"msg\": \"sample debug msg\"",
|
||||
"}",
|
||||
"",
|
||||
"PLAY RECAP ************************************************* 2006-01-02T15:04:05",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ******************************************** 2006-01-02T15:04:05"
|
||||
- ""
|
||||
- "TASK [Sample task name] ************************************ 2006-01-02T15:04:05"
|
||||
- "ok: [testhost] => {"
|
||||
- " \"msg\": \"sample debug msg\""
|
||||
- "}"
|
||||
- ""
|
||||
- "PLAY RECAP ************************************************* 2006-01-02T15:04:05"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
|
|
@ -25,17 +25,17 @@
|
|||
- name: Sample task name
|
||||
debug:
|
||||
msg: sample debug msg
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Sample task name] ********************************************************",
|
||||
"ok: [testhost] => ",
|
||||
" msg: sample debug msg",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Sample task name] ********************************************************"
|
||||
- "ok: [testhost] => "
|
||||
- " msg: sample debug msg"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Test umlauts in multiline
|
||||
environment:
|
||||
ANSIBLE_NOCOLOR: 'true'
|
||||
|
@ -48,20 +48,20 @@
|
|||
- name: Umlaut output
|
||||
debug:
|
||||
msg: "äöü\néêè\nßï☺"
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Umlaut output] ***********************************************************",
|
||||
"ok: [testhost] => ",
|
||||
" msg: |-",
|
||||
" äöü",
|
||||
" éêè",
|
||||
" ßï☺",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Umlaut output] ***********************************************************"
|
||||
- "ok: [testhost] => "
|
||||
- " msg: |-"
|
||||
- " äöü"
|
||||
- " éêè"
|
||||
- " ßï☺"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
||||
- name: Test to_yaml
|
||||
environment:
|
||||
ANSIBLE_NOCOLOR: 'true'
|
||||
|
@ -79,21 +79,20 @@
|
|||
- name: Test to_yaml
|
||||
debug:
|
||||
msg: "{{ data | to_yaml }}"
|
||||
expected_output: [
|
||||
"",
|
||||
"PLAY [testhost] ****************************************************************",
|
||||
"",
|
||||
"TASK [Test to_yaml] ************************************************************",
|
||||
"ok: [testhost] => ",
|
||||
" msg: |-",
|
||||
" 'line 1",
|
||||
" ",
|
||||
" line 2",
|
||||
" ",
|
||||
" line 3",
|
||||
" ",
|
||||
" '",
|
||||
"",
|
||||
"PLAY RECAP *********************************************************************",
|
||||
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
]
|
||||
expected_output:
|
||||
- ""
|
||||
- "PLAY [testhost] ****************************************************************"
|
||||
- ""
|
||||
- "TASK [Test to_yaml] ************************************************************"
|
||||
- "ok: [testhost] => "
|
||||
- " msg: |-"
|
||||
- " 'line 1"
|
||||
- " "
|
||||
- " line 2"
|
||||
- " "
|
||||
- " line 3"
|
||||
- " "
|
||||
- " '"
|
||||
- ""
|
||||
- "PLAY RECAP *********************************************************************"
|
||||
- "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
|
||||
when: has_cargo | default(false) and ansible_distribution == 'Alpine'
|
||||
- block:
|
||||
- import_tasks: test_general.yml
|
||||
- import_tasks: test_version.yml
|
||||
- import_tasks: test_directory.yml
|
||||
- import_tasks: test_general.yml
|
||||
- import_tasks: test_version.yml
|
||||
- import_tasks: test_directory.yml
|
||||
environment: "{{ cargo_environment }}"
|
||||
when: has_cargo | default(false)
|
||||
- import_tasks: test_rustup_cargo.yml
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- block:
|
||||
- name: Install cargo
|
||||
package:
|
||||
name: cargo
|
||||
state: present
|
||||
- set_fact:
|
||||
has_cargo: true
|
||||
- name: Install cargo
|
||||
package:
|
||||
name: cargo
|
||||
state: present
|
||||
- set_fact:
|
||||
has_cargo: true
|
||||
when:
|
||||
- ansible_system != 'FreeBSD'
|
||||
- ansible_distribution != 'MacOSX'
|
||||
|
@ -18,25 +18,25 @@
|
|||
- ansible_distribution != 'Ubuntu' or ansible_distribution_version is version('18', '>=')
|
||||
|
||||
- block:
|
||||
- name: Install rust (containing cargo)
|
||||
package:
|
||||
name: rust
|
||||
state: present
|
||||
- set_fact:
|
||||
has_cargo: true
|
||||
- name: Install rust (containing cargo)
|
||||
package:
|
||||
name: rust
|
||||
state: present
|
||||
- set_fact:
|
||||
has_cargo: true
|
||||
when:
|
||||
- ansible_system == 'FreeBSD' and ansible_distribution_version is version('13.0', '>')
|
||||
|
||||
- block:
|
||||
- name: Download rustup
|
||||
get_url:
|
||||
url: https://sh.rustup.rs
|
||||
dest: /tmp/sh.rustup.rs
|
||||
mode: "0750"
|
||||
force: true
|
||||
- name: Install rustup cargo
|
||||
command: /tmp/sh.rustup.rs -y
|
||||
- set_fact:
|
||||
rustup_cargo_bin: "{{ lookup('env', 'HOME') }}/.cargo/bin/cargo"
|
||||
- name: Download rustup
|
||||
get_url:
|
||||
url: https://sh.rustup.rs
|
||||
dest: /tmp/sh.rustup.rs
|
||||
mode: "0750"
|
||||
force: true
|
||||
- name: Install rustup cargo
|
||||
command: /tmp/sh.rustup.rs -y
|
||||
- set_fact:
|
||||
rustup_cargo_bin: "{{ lookup('env', 'HOME') }}/.cargo/bin/cargo"
|
||||
when:
|
||||
- ansible_distribution != 'CentOS' or ansible_distribution_version is version('7.0', '>=')
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
- name: Check assertions helloworld
|
||||
assert:
|
||||
that:
|
||||
- uninstall_absent_helloworld is not changed
|
||||
- install_absent_helloworld is changed
|
||||
- install_present_helloworld is not changed
|
||||
- uninstall_present_helloworld is changed
|
||||
- uninstall_absent_helloworld is not changed
|
||||
- install_absent_helloworld is changed
|
||||
- install_present_helloworld is not changed
|
||||
- uninstall_present_helloworld is changed
|
||||
|
|
|
@ -19,5 +19,5 @@
|
|||
- name: Check assertions helloworld
|
||||
assert:
|
||||
that:
|
||||
- rustup_install_absent_helloworld is changed
|
||||
- rustup_uninstall_present_helloworld is changed
|
||||
- rustup_install_absent_helloworld is changed
|
||||
- rustup_uninstall_present_helloworld is changed
|
||||
|
|
|
@ -42,9 +42,9 @@
|
|||
- name: Check assertions helloworld-yliu
|
||||
assert:
|
||||
that:
|
||||
- install_helloworld_010 is changed
|
||||
- install_helloworld_010_idem is not changed
|
||||
- upgrade_helloworld_010 is changed
|
||||
- upgrade_helloworld_010_idem is not changed
|
||||
- downgrade_helloworld_010 is changed
|
||||
- downgrade_helloworld_010_idem is not changed
|
||||
- install_helloworld_010 is changed
|
||||
- install_helloworld_010_idem is not changed
|
||||
- upgrade_helloworld_010 is changed
|
||||
- upgrade_helloworld_010_idem is not changed
|
||||
- downgrade_helloworld_010 is changed
|
||||
- downgrade_helloworld_010_idem is not changed
|
||||
|
|
|
@ -25,53 +25,53 @@
|
|||
# Will also have to skip on OpenSUSE when running on Python 2 on newer Leap versions
|
||||
# (!= 42 and >= 15) as cloud-init will install the Python 3 package, breaking our build on py2.
|
||||
when:
|
||||
- not (ansible_distribution == "Ubuntu" and ansible_distribution_major_version|int == 14)
|
||||
- not (ansible_os_family == "Suse" and ansible_distribution_major_version|int != 42 and ansible_python.version.major != 3)
|
||||
- not (ansible_os_family == "Suse" and ansible_distribution_major_version|int == 15)
|
||||
- not (ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 8) # TODO: cannot start service
|
||||
- not (ansible_distribution == 'Archlinux') # TODO: package seems to be broken, cannot be downloaded from mirrors?
|
||||
- not (ansible_distribution == 'Alpine') # TODO: not sure what's wrong here, the module doesn't return what the tests expect
|
||||
- not (ansible_distribution == "Ubuntu" and ansible_distribution_major_version|int == 14)
|
||||
- not (ansible_os_family == "Suse" and ansible_distribution_major_version|int != 42 and ansible_python.version.major != 3)
|
||||
- not (ansible_os_family == "Suse" and ansible_distribution_major_version|int == 15)
|
||||
- not (ansible_distribution == "CentOS" and ansible_distribution_major_version|int == 8) # TODO: cannot start service
|
||||
- not (ansible_distribution == 'Archlinux') # TODO: package seems to be broken, cannot be downloaded from mirrors?
|
||||
- not (ansible_distribution == 'Alpine') # TODO: not sure what's wrong here, the module doesn't return what the tests expect
|
||||
block:
|
||||
- name: setup install cloud-init
|
||||
package:
|
||||
name:
|
||||
- cloud-init
|
||||
- udev
|
||||
- name: setup install cloud-init
|
||||
package:
|
||||
name:
|
||||
- cloud-init
|
||||
- udev
|
||||
|
||||
- name: Ensure systemd-network user exists
|
||||
user:
|
||||
name: systemd-network
|
||||
state: present
|
||||
when: ansible_distribution == 'Fedora' and ansible_distribution_major_version|int >= 37
|
||||
- name: Ensure systemd-network user exists
|
||||
user:
|
||||
name: systemd-network
|
||||
state: present
|
||||
when: ansible_distribution == 'Fedora' and ansible_distribution_major_version|int >= 37
|
||||
|
||||
- name: setup run cloud-init
|
||||
service:
|
||||
name: cloud-init-local
|
||||
state: restarted
|
||||
- name: setup run cloud-init
|
||||
service:
|
||||
name: cloud-init-local
|
||||
state: restarted
|
||||
|
||||
- name: test gather cloud-init facts in check mode
|
||||
cloud_init_data_facts:
|
||||
check_mode: true
|
||||
register: result
|
||||
- name: verify test gather cloud-init facts in check mode
|
||||
assert:
|
||||
that:
|
||||
- result.cloud_init_data_facts.status.v1 is defined
|
||||
- result.cloud_init_data_facts.status.v1.stage is defined
|
||||
- not result.cloud_init_data_facts.status.v1.stage
|
||||
- cloud_init_data_facts.status.v1 is defined
|
||||
- cloud_init_data_facts.status.v1.stage is defined
|
||||
- not cloud_init_data_facts.status.v1.stage
|
||||
- name: test gather cloud-init facts in check mode
|
||||
cloud_init_data_facts:
|
||||
check_mode: true
|
||||
register: result
|
||||
- name: verify test gather cloud-init facts in check mode
|
||||
assert:
|
||||
that:
|
||||
- result.cloud_init_data_facts.status.v1 is defined
|
||||
- result.cloud_init_data_facts.status.v1.stage is defined
|
||||
- not result.cloud_init_data_facts.status.v1.stage
|
||||
- cloud_init_data_facts.status.v1 is defined
|
||||
- cloud_init_data_facts.status.v1.stage is defined
|
||||
- not cloud_init_data_facts.status.v1.stage
|
||||
|
||||
- name: test gather cloud-init facts
|
||||
cloud_init_data_facts:
|
||||
register: result
|
||||
- name: verify test gather cloud-init facts
|
||||
assert:
|
||||
that:
|
||||
- result.cloud_init_data_facts.status.v1 is defined
|
||||
- result.cloud_init_data_facts.status.v1.stage is defined
|
||||
- not result.cloud_init_data_facts.status.v1.stage
|
||||
- cloud_init_data_facts.status.v1 is defined
|
||||
- cloud_init_data_facts.status.v1.stage is defined
|
||||
- not cloud_init_data_facts.status.v1.stage
|
||||
- name: test gather cloud-init facts
|
||||
cloud_init_data_facts:
|
||||
register: result
|
||||
- name: verify test gather cloud-init facts
|
||||
assert:
|
||||
that:
|
||||
- result.cloud_init_data_facts.status.v1 is defined
|
||||
- result.cloud_init_data_facts.status.v1.stage is defined
|
||||
- not result.cloud_init_data_facts.status.v1.stage
|
||||
- cloud_init_data_facts.status.v1 is defined
|
||||
- cloud_init_data_facts.status.v1.stage is defined
|
||||
- not cloud_init_data_facts.status.v1.stage
|
||||
|
|
|
@ -8,41 +8,41 @@
|
|||
serial: 1
|
||||
tasks:
|
||||
|
||||
### raw with unicode arg and output
|
||||
### raw with unicode arg and output
|
||||
|
||||
- name: raw with unicode arg and output
|
||||
raw: echo 汉语
|
||||
register: command
|
||||
- name: check output of raw with unicode arg and output
|
||||
assert:
|
||||
that:
|
||||
- "'汉语' in command.stdout"
|
||||
- command is changed # as of 2.2, raw should default to changed: true for consistency w/ shell/command/script modules
|
||||
- name: raw with unicode arg and output
|
||||
raw: echo 汉语
|
||||
register: command
|
||||
- name: check output of raw with unicode arg and output
|
||||
assert:
|
||||
that:
|
||||
- "'汉语' in command.stdout"
|
||||
- command is changed # as of 2.2, raw should default to changed: true for consistency w/ shell/command/script modules
|
||||
|
||||
### copy local file with unicode filename and content
|
||||
### copy local file with unicode filename and content
|
||||
|
||||
- name: create local file with unicode filename and content
|
||||
local_action: lineinfile dest={{ local_tmp }}-汉语/汉语.txt create=true line=汉语
|
||||
- name: remove remote file with unicode filename and content
|
||||
action: "{{ action_prefix }}file path={{ remote_tmp }}-汉语/汉语.txt state=absent"
|
||||
- name: create remote directory with unicode name
|
||||
action: "{{ action_prefix }}file path={{ remote_tmp }}-汉语 state=directory"
|
||||
- name: copy local file with unicode filename and content
|
||||
action: "{{ action_prefix }}copy src={{ local_tmp }}-汉语/汉语.txt dest={{ remote_tmp }}-汉语/汉语.txt"
|
||||
- name: create local file with unicode filename and content
|
||||
local_action: lineinfile dest={{ local_tmp }}-汉语/汉语.txt create=true line=汉语
|
||||
- name: remove remote file with unicode filename and content
|
||||
action: "{{ action_prefix }}file path={{ remote_tmp }}-汉语/汉语.txt state=absent"
|
||||
- name: create remote directory with unicode name
|
||||
action: "{{ action_prefix }}file path={{ remote_tmp }}-汉语 state=directory"
|
||||
- name: copy local file with unicode filename and content
|
||||
action: "{{ action_prefix }}copy src={{ local_tmp }}-汉语/汉语.txt dest={{ remote_tmp }}-汉语/汉语.txt"
|
||||
|
||||
### fetch remote file with unicode filename and content
|
||||
### fetch remote file with unicode filename and content
|
||||
|
||||
- name: remove local file with unicode filename and content
|
||||
local_action: file path={{ local_tmp }}-汉语/汉语.txt state=absent
|
||||
- name: fetch remote file with unicode filename and content
|
||||
fetch: src={{ remote_tmp }}-汉语/汉语.txt dest={{ local_tmp }}-汉语/汉语.txt fail_on_missing=true validate_checksum=true flat=true
|
||||
- name: remove local file with unicode filename and content
|
||||
local_action: file path={{ local_tmp }}-汉语/汉语.txt state=absent
|
||||
- name: fetch remote file with unicode filename and content
|
||||
fetch: src={{ remote_tmp }}-汉语/汉语.txt dest={{ local_tmp }}-汉语/汉语.txt fail_on_missing=true validate_checksum=true flat=true
|
||||
|
||||
### remove local and remote temp files
|
||||
### remove local and remote temp files
|
||||
|
||||
- name: remove local temp file
|
||||
local_action: file path={{ local_tmp }}-汉语 state=absent
|
||||
- name: remove remote temp file
|
||||
action: "{{ action_prefix }}file path={{ remote_tmp }}-汉语 state=absent"
|
||||
- name: remove local temp file
|
||||
local_action: file path={{ local_tmp }}-汉语 state=absent
|
||||
- name: remove remote temp file
|
||||
action: "{{ action_prefix }}file path={{ remote_tmp }}-汉语 state=absent"
|
||||
|
||||
### test wait_for_connection plugin
|
||||
- ansible.builtin.wait_for_connection:
|
||||
### test wait_for_connection plugin
|
||||
- ansible.builtin.wait_for_connection:
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
copy:
|
||||
content: ""
|
||||
dest: "{{ remote_tmp }}/test_empty.txt"
|
||||
force: no
|
||||
force: false
|
||||
mode: '0644'
|
||||
|
||||
- name: assert file without content exists
|
||||
|
|
|
@ -15,10 +15,10 @@
|
|||
- result is changed
|
||||
- result.data.Value == 'somevalue'
|
||||
|
||||
#- name: Test the lookup
|
||||
# assert:
|
||||
# that:
|
||||
# - lookup('community.general.consul_kv', 'somekey', token=consul_management_token) == 'somevalue'
|
||||
# - name: Test the lookup
|
||||
# assert:
|
||||
# that:
|
||||
# - lookup('community.general.consul_kv', 'somekey', token=consul_management_token) == 'somevalue'
|
||||
|
||||
- name: Update a key with the same data
|
||||
consul_kv:
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
consul_role:
|
||||
name: foo-role-with-policy
|
||||
description: "Testing updating description"
|
||||
check_mode: yes
|
||||
check_mode: true
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
|
@ -106,7 +106,7 @@
|
|||
datacenters:
|
||||
- dc2
|
||||
register: result
|
||||
check_mode: yes
|
||||
check_mode: true
|
||||
|
||||
- assert:
|
||||
that:
|
||||
|
@ -146,7 +146,7 @@
|
|||
name: role-with-service-identity
|
||||
node_identities: []
|
||||
register: result
|
||||
check_mode: yes
|
||||
check_mode: true
|
||||
|
||||
- assert:
|
||||
that:
|
||||
|
|
|
@ -14,96 +14,96 @@
|
|||
consul_uri: https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_{{ ansible_system | lower }}_{{ consul_arch }}.zip
|
||||
consul_cmd: '{{ remote_tmp_dir }}/consul'
|
||||
block:
|
||||
- name: Install requests<2.20 (CentOS/RHEL 6)
|
||||
pip:
|
||||
name: requests<2.20
|
||||
extra_args: "-c {{ remote_constraints }}"
|
||||
register: result
|
||||
until: result is success
|
||||
when: ansible_distribution_file_variety|default() == 'RedHat' and ansible_distribution_major_version is version('6', '<=')
|
||||
- name: Install python-consul
|
||||
pip:
|
||||
name: python-consul
|
||||
extra_args: "-c {{ remote_constraints }}"
|
||||
register: result
|
||||
until: result is success
|
||||
- name: Generate privatekey
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
- name: Generate CSR
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
commonName: localhost
|
||||
- name: Generate selfsigned certificate
|
||||
register: selfsigned_certificate
|
||||
community.crypto.x509_certificate:
|
||||
path: '{{ remote_tmp_dir }}/cert.pem'
|
||||
csr_path: '{{ remote_tmp_dir }}/csr.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
provider: selfsigned
|
||||
selfsigned_digest: sha256
|
||||
- name: Install unzip
|
||||
package:
|
||||
name: unzip
|
||||
register: result
|
||||
until: result is success
|
||||
when: ansible_distribution != "MacOSX"
|
||||
- assert:
|
||||
that: ansible_architecture in ['i386', 'x86_64', 'amd64']
|
||||
- set_fact:
|
||||
consul_arch: '386'
|
||||
when: ansible_architecture == 'i386'
|
||||
- set_fact:
|
||||
consul_arch: amd64
|
||||
when: ansible_architecture in ['x86_64', 'amd64']
|
||||
- name: Download consul binary
|
||||
unarchive:
|
||||
src: '{{ consul_uri }}'
|
||||
dest: '{{ remote_tmp_dir }}'
|
||||
remote_src: true
|
||||
register: result
|
||||
until: result is success
|
||||
- vars:
|
||||
remote_dir: '{{ echo_remote_tmp_dir.stdout }}'
|
||||
block:
|
||||
- command: echo {{ remote_tmp_dir }}
|
||||
register: echo_remote_tmp_dir
|
||||
- name: Create configuration file
|
||||
template:
|
||||
src: consul_config.hcl.j2
|
||||
dest: '{{ remote_tmp_dir }}/consul_config.hcl'
|
||||
- name: Start Consul (dev mode enabled)
|
||||
shell: nohup {{ consul_cmd }} agent -dev -config-file {{ remote_tmp_dir }}/consul_config.hcl </dev/null >/dev/null 2>&1 &
|
||||
- name: Bootstrap ACL
|
||||
consul_acl_bootstrap:
|
||||
register: consul_bootstrap_result
|
||||
- name: Install requests<2.20 (CentOS/RHEL 6)
|
||||
pip:
|
||||
name: requests<2.20
|
||||
extra_args: "-c {{ remote_constraints }}"
|
||||
register: result
|
||||
until: result is success
|
||||
when: ansible_distribution_file_variety|default() == 'RedHat' and ansible_distribution_major_version is version('6', '<=')
|
||||
- name: Install python-consul
|
||||
pip:
|
||||
name: python-consul
|
||||
extra_args: "-c {{ remote_constraints }}"
|
||||
register: result
|
||||
until: result is success
|
||||
- name: Generate privatekey
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
- name: Generate CSR
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
commonName: localhost
|
||||
- name: Generate selfsigned certificate
|
||||
register: selfsigned_certificate
|
||||
community.crypto.x509_certificate:
|
||||
path: '{{ remote_tmp_dir }}/cert.pem'
|
||||
csr_path: '{{ remote_tmp_dir }}/csr.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
provider: selfsigned
|
||||
selfsigned_digest: sha256
|
||||
- name: Install unzip
|
||||
package:
|
||||
name: unzip
|
||||
register: result
|
||||
until: result is success
|
||||
when: ansible_distribution != "MacOSX"
|
||||
- assert:
|
||||
that: ansible_architecture in ['i386', 'x86_64', 'amd64']
|
||||
- set_fact:
|
||||
consul_management_token: '{{ consul_bootstrap_result.result.SecretID }}'
|
||||
- name: Create some data
|
||||
command: '{{ consul_cmd }} kv put -token={{consul_management_token}} data/value{{ item }} foo{{ item }}'
|
||||
loop:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- import_tasks: consul_general.yml
|
||||
- import_tasks: consul_kv.yml
|
||||
consul_arch: '386'
|
||||
when: ansible_architecture == 'i386'
|
||||
- set_fact:
|
||||
consul_arch: amd64
|
||||
when: ansible_architecture in ['x86_64', 'amd64']
|
||||
- name: Download consul binary
|
||||
unarchive:
|
||||
src: '{{ consul_uri }}'
|
||||
dest: '{{ remote_tmp_dir }}'
|
||||
remote_src: true
|
||||
register: result
|
||||
until: result is success
|
||||
- vars:
|
||||
remote_dir: '{{ echo_remote_tmp_dir.stdout }}'
|
||||
block:
|
||||
- command: echo {{ remote_tmp_dir }}
|
||||
register: echo_remote_tmp_dir
|
||||
- name: Create configuration file
|
||||
template:
|
||||
src: consul_config.hcl.j2
|
||||
dest: '{{ remote_tmp_dir }}/consul_config.hcl'
|
||||
- name: Start Consul (dev mode enabled)
|
||||
shell: nohup {{ consul_cmd }} agent -dev -config-file {{ remote_tmp_dir }}/consul_config.hcl </dev/null >/dev/null 2>&1 &
|
||||
- name: Bootstrap ACL
|
||||
consul_acl_bootstrap:
|
||||
register: consul_bootstrap_result
|
||||
- set_fact:
|
||||
consul_management_token: '{{ consul_bootstrap_result.result.SecretID }}'
|
||||
- name: Create some data
|
||||
command: '{{ consul_cmd }} kv put -token={{consul_management_token}} data/value{{ item }} foo{{ item }}'
|
||||
loop:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- import_tasks: consul_general.yml
|
||||
- import_tasks: consul_kv.yml
|
||||
|
||||
- block:
|
||||
- import_tasks: consul_session.yml
|
||||
- import_tasks: consul_policy.yml
|
||||
- import_tasks: consul_role.yml
|
||||
- import_tasks: consul_token.yml
|
||||
- import_tasks: consul_auth_method.yml
|
||||
- import_tasks: consul_binding_rule.yml
|
||||
- import_tasks: consul_agent_service.yml
|
||||
- import_tasks: consul_agent_check.yml
|
||||
module_defaults:
|
||||
group/community.general.consul:
|
||||
token: "{{ consul_management_token }}"
|
||||
- block:
|
||||
- import_tasks: consul_session.yml
|
||||
- import_tasks: consul_policy.yml
|
||||
- import_tasks: consul_role.yml
|
||||
- import_tasks: consul_token.yml
|
||||
- import_tasks: consul_auth_method.yml
|
||||
- import_tasks: consul_binding_rule.yml
|
||||
- import_tasks: consul_agent_service.yml
|
||||
- import_tasks: consul_agent_check.yml
|
||||
module_defaults:
|
||||
group/community.general.consul:
|
||||
token: "{{ consul_management_token }}"
|
||||
|
||||
always:
|
||||
always:
|
||||
- name: Kill consul process
|
||||
shell: kill $(cat {{ remote_tmp_dir }}/consul.pid)
|
||||
ignore_errors: true
|
|
@ -11,133 +11,133 @@
|
|||
or (ansible_os_family == 'RedHat' and ansible_distribution != 'Fedora'
|
||||
and ansible_distribution_major_version | int >= 8)
|
||||
block:
|
||||
- debug: var=copr_chroot
|
||||
- name: enable copr project
|
||||
copr:
|
||||
host: copr.fedorainfracloud.org
|
||||
state: enabled
|
||||
name: '{{ copr_fullname }}'
|
||||
chroot: "{{ copr_chroot }}"
|
||||
register: result
|
||||
- debug: var=copr_chroot
|
||||
- name: enable copr project
|
||||
copr:
|
||||
host: copr.fedorainfracloud.org
|
||||
state: enabled
|
||||
name: '{{ copr_fullname }}'
|
||||
chroot: "{{ copr_chroot }}"
|
||||
register: result
|
||||
|
||||
- name: assert that the copr project was enabled
|
||||
assert:
|
||||
that:
|
||||
- 'result is changed'
|
||||
- result.msg == 'enabled'
|
||||
- result.info == 'Please note that this repository is not part of the main distribution'
|
||||
- name: assert that the copr project was enabled
|
||||
assert:
|
||||
that:
|
||||
- 'result is changed'
|
||||
- result.msg == 'enabled'
|
||||
- result.info == 'Please note that this repository is not part of the main distribution'
|
||||
|
||||
- name: enable copr project
|
||||
check_mode: true
|
||||
copr:
|
||||
state: enabled
|
||||
name: '{{ copr_fullname }}'
|
||||
chroot: '{{ copr_chroot }}'
|
||||
register: result
|
||||
- name: enable copr project
|
||||
check_mode: true
|
||||
copr:
|
||||
state: enabled
|
||||
name: '{{ copr_fullname }}'
|
||||
chroot: '{{ copr_chroot }}'
|
||||
register: result
|
||||
|
||||
- name: assert that the copr project was enabled
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.msg == 'enabled'
|
||||
- name: assert that the copr project was enabled
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.msg == 'enabled'
|
||||
|
||||
- name: Ensure the repo is installed and enabled | slurp
|
||||
register: result
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ copr_repofile }}"
|
||||
- name: Ensure the repo is installed and enabled | slurp
|
||||
register: result
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ copr_repofile }}"
|
||||
|
||||
- name: Ensure the repo is installed and enabled
|
||||
vars:
|
||||
content: "{{ result.content | b64decode }}"
|
||||
_baseurl: "{{ 'https://download.copr.fedorainfracloud.org/results/gotmax23/community.general.copr_integration_tests' | regex_escape }}"
|
||||
baseurl: "{{ content | regex_search('baseurl=' ~ _baseurl) }}"
|
||||
block:
|
||||
- ansible.builtin.debug:
|
||||
var: content
|
||||
- ansible.builtin.debug:
|
||||
var: baseurl
|
||||
- name: Ensure the repo is installed and enabled
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'enabled=1' in content"
|
||||
- baseurl | length > 0
|
||||
- name: Ensure the repo is installed and enabled
|
||||
vars:
|
||||
content: "{{ result.content | b64decode }}"
|
||||
_baseurl: "{{ 'https://download.copr.fedorainfracloud.org/results/gotmax23/community.general.copr_integration_tests' | regex_escape }}"
|
||||
baseurl: "{{ content | regex_search('baseurl=' ~ _baseurl) }}"
|
||||
block:
|
||||
- ansible.builtin.debug:
|
||||
var: content
|
||||
- ansible.builtin.debug:
|
||||
var: baseurl
|
||||
- name: Ensure the repo is installed and enabled
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'enabled=1' in content"
|
||||
- baseurl | length > 0
|
||||
|
||||
- name: Install test package from Copr
|
||||
when:
|
||||
# Copr does not build new packages for EOL Fedoras.
|
||||
- >
|
||||
not (ansible_distribution == 'Fedora' and
|
||||
ansible_distribution_major_version | int < 35)
|
||||
block:
|
||||
- name: install test package from the copr
|
||||
ansible.builtin.package:
|
||||
update_cache: true
|
||||
name: copr-module-integration-dummy-package
|
||||
- name: Install test package from Copr
|
||||
when:
|
||||
# Copr does not build new packages for EOL Fedoras.
|
||||
- >
|
||||
not (ansible_distribution == 'Fedora' and
|
||||
ansible_distribution_major_version | int < 35)
|
||||
block:
|
||||
- name: install test package from the copr
|
||||
ansible.builtin.package:
|
||||
update_cache: true
|
||||
name: copr-module-integration-dummy-package
|
||||
|
||||
- name: uninstall test package
|
||||
register: result
|
||||
ansible.builtin.package:
|
||||
name: copr-module-integration-dummy-package
|
||||
state: absent
|
||||
- name: uninstall test package
|
||||
register: result
|
||||
ansible.builtin.package:
|
||||
name: copr-module-integration-dummy-package
|
||||
state: absent
|
||||
|
||||
- name: check uninstall test package
|
||||
ansible.builtin.assert:
|
||||
that: result.changed | bool
|
||||
- name: check uninstall test package
|
||||
ansible.builtin.assert:
|
||||
that: result.changed | bool
|
||||
|
||||
- name: remove copr project
|
||||
copr:
|
||||
state: absent
|
||||
name: '{{ copr_fullname }}'
|
||||
register: result
|
||||
- name: remove copr project
|
||||
copr:
|
||||
state: absent
|
||||
name: '{{ copr_fullname }}'
|
||||
register: result
|
||||
|
||||
- name: assert that the copr project was removed
|
||||
assert:
|
||||
that:
|
||||
- 'result is changed'
|
||||
- result.msg == 'absent'
|
||||
- name: assert that the copr project was removed
|
||||
assert:
|
||||
that:
|
||||
- 'result is changed'
|
||||
- result.msg == 'absent'
|
||||
|
||||
- name: Ensure the repo file was removed | stat
|
||||
register: result
|
||||
ansible.builtin.stat:
|
||||
dest: "{{ copr_repofile }}"
|
||||
- name: Ensure the repo file was removed | stat
|
||||
register: result
|
||||
ansible.builtin.stat:
|
||||
dest: "{{ copr_repofile }}"
|
||||
|
||||
- name: Ensure the repo file was removed
|
||||
ansible.builtin.assert:
|
||||
that: not result.stat.exists | bool
|
||||
- name: Ensure the repo file was removed
|
||||
ansible.builtin.assert:
|
||||
that: not result.stat.exists | bool
|
||||
|
||||
- name: disable copr project
|
||||
copr:
|
||||
state: disabled
|
||||
name: '{{ copr_fullname }}'
|
||||
chroot: '{{ copr_chroot }}'
|
||||
register: result
|
||||
- name: disable copr project
|
||||
copr:
|
||||
state: disabled
|
||||
name: '{{ copr_fullname }}'
|
||||
chroot: '{{ copr_chroot }}'
|
||||
register: result
|
||||
|
||||
- name: assert that the copr project was disabled
|
||||
assert:
|
||||
that:
|
||||
- 'result is changed'
|
||||
- result.msg == 'disabled'
|
||||
- name: assert that the copr project was disabled
|
||||
assert:
|
||||
that:
|
||||
- 'result is changed'
|
||||
- result.msg == 'disabled'
|
||||
|
||||
- name: Ensure the repo is installed but disabled | slurp
|
||||
register: result
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ copr_repofile }}"
|
||||
- name: Ensure the repo is installed but disabled | slurp
|
||||
register: result
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ copr_repofile }}"
|
||||
|
||||
- name: Ensure the repo is installed but disabled
|
||||
vars:
|
||||
content: "{{ result.content | b64decode }}"
|
||||
_baseurl: "{{ 'https://download.copr.fedorainfracloud.org/results/gotmax23/community.general.copr_integration_tests' | regex_escape }}"
|
||||
baseurl: "{{ content | regex_search('baseurl=' ~ _baseurl) }}"
|
||||
block:
|
||||
- ansible.builtin.debug:
|
||||
var: content
|
||||
- ansible.builtin.debug:
|
||||
var: baseurl
|
||||
- name: Ensure the repo is installed but disabled
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'enabled=0' in content"
|
||||
- baseurl | length > 0
|
||||
- name: Ensure the repo is installed but disabled
|
||||
vars:
|
||||
content: "{{ result.content | b64decode }}"
|
||||
_baseurl: "{{ 'https://download.copr.fedorainfracloud.org/results/gotmax23/community.general.copr_integration_tests' | regex_escape }}"
|
||||
baseurl: "{{ content | regex_search('baseurl=' ~ _baseurl) }}"
|
||||
block:
|
||||
- ansible.builtin.debug:
|
||||
var: content
|
||||
- ansible.builtin.debug:
|
||||
var: baseurl
|
||||
- name: Ensure the repo is installed but disabled
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'enabled=0' in content"
|
||||
- baseurl | length > 0
|
||||
|
||||
always:
|
||||
- name: clean up
|
||||
|
|
|
@ -16,43 +16,43 @@
|
|||
- name: Assert State=query with default parameters
|
||||
assert:
|
||||
that:
|
||||
- "'project_path' in deploy_helper"
|
||||
- "deploy_helper.current_path == deploy_helper.project_path ~ '/current'"
|
||||
- "deploy_helper.releases_path == deploy_helper.project_path ~ '/releases'"
|
||||
- "deploy_helper.shared_path == deploy_helper.project_path ~ '/shared'"
|
||||
- "deploy_helper.unfinished_filename == 'DEPLOY_UNFINISHED'"
|
||||
- "'previous_release' in deploy_helper"
|
||||
- "'previous_release_path' in deploy_helper"
|
||||
- "'new_release' in deploy_helper"
|
||||
- "'new_release_path' in deploy_helper"
|
||||
- "deploy_helper.new_release_path == deploy_helper.releases_path ~ '/' ~ deploy_helper.new_release"
|
||||
- "'project_path' in deploy_helper"
|
||||
- "deploy_helper.current_path == deploy_helper.project_path ~ '/current'"
|
||||
- "deploy_helper.releases_path == deploy_helper.project_path ~ '/releases'"
|
||||
- "deploy_helper.shared_path == deploy_helper.project_path ~ '/shared'"
|
||||
- "deploy_helper.unfinished_filename == 'DEPLOY_UNFINISHED'"
|
||||
- "'previous_release' in deploy_helper"
|
||||
- "'previous_release_path' in deploy_helper"
|
||||
- "'new_release' in deploy_helper"
|
||||
- "'new_release_path' in deploy_helper"
|
||||
- "deploy_helper.new_release_path == deploy_helper.releases_path ~ '/' ~ deploy_helper.new_release"
|
||||
|
||||
- name: State=query with relative overridden paths
|
||||
deploy_helper: path={{ deploy_helper_test_root }} current_path=CURRENT_PATH releases_path=RELEASES_PATH shared_path=SHARED_PATH state=query
|
||||
- name: Assert State=query with relative overridden paths
|
||||
assert:
|
||||
that:
|
||||
- "deploy_helper.current_path == deploy_helper.project_path ~ '/CURRENT_PATH'"
|
||||
- "deploy_helper.releases_path == deploy_helper.project_path ~ '/RELEASES_PATH'"
|
||||
- "deploy_helper.shared_path == deploy_helper.project_path ~ '/SHARED_PATH'"
|
||||
- "deploy_helper.new_release_path == deploy_helper.releases_path ~ '/' ~ deploy_helper.new_release"
|
||||
- "deploy_helper.current_path == deploy_helper.project_path ~ '/CURRENT_PATH'"
|
||||
- "deploy_helper.releases_path == deploy_helper.project_path ~ '/RELEASES_PATH'"
|
||||
- "deploy_helper.shared_path == deploy_helper.project_path ~ '/SHARED_PATH'"
|
||||
- "deploy_helper.new_release_path == deploy_helper.releases_path ~ '/' ~ deploy_helper.new_release"
|
||||
|
||||
- name: State=query with absolute overridden paths
|
||||
deploy_helper: path={{ deploy_helper_test_root }} current_path=/CURRENT_PATH releases_path=/RELEASES_PATH shared_path=/SHARED_PATH state=query
|
||||
- name: Assert State=query with absolute overridden paths
|
||||
assert:
|
||||
that:
|
||||
- "deploy_helper.current_path == '/CURRENT_PATH'"
|
||||
- "deploy_helper.releases_path == '/RELEASES_PATH'"
|
||||
- "deploy_helper.shared_path == '/SHARED_PATH'"
|
||||
- "deploy_helper.new_release_path == deploy_helper.releases_path ~ '/' ~ deploy_helper.new_release"
|
||||
- "deploy_helper.current_path == '/CURRENT_PATH'"
|
||||
- "deploy_helper.releases_path == '/RELEASES_PATH'"
|
||||
- "deploy_helper.shared_path == '/SHARED_PATH'"
|
||||
- "deploy_helper.new_release_path == deploy_helper.releases_path ~ '/' ~ deploy_helper.new_release"
|
||||
|
||||
- name: State=query with overridden unfinished_filename
|
||||
deploy_helper: path={{ deploy_helper_test_root }} unfinished_filename=UNFINISHED_DEPLOY state=query
|
||||
- name: Assert State=query with overridden unfinished_filename
|
||||
assert:
|
||||
that:
|
||||
- "'UNFINISHED_DEPLOY' == deploy_helper.unfinished_filename"
|
||||
- "'UNFINISHED_DEPLOY' == deploy_helper.unfinished_filename"
|
||||
|
||||
# Remove the root folder just in case it exists
|
||||
- file: path={{ deploy_helper_test_root }} state=absent
|
||||
|
@ -66,8 +66,8 @@
|
|||
- name: Assert State=present with default parameters
|
||||
assert:
|
||||
that:
|
||||
- "releases_path.stat.exists"
|
||||
- "shared_path.stat.exists"
|
||||
- "releases_path.stat.exists"
|
||||
- "shared_path.stat.exists"
|
||||
|
||||
# Setup older releases for tests
|
||||
- file: path={{ deploy_helper.releases_path }}/{{ item }} state=directory
|
||||
|
@ -88,9 +88,9 @@
|
|||
- name: Assert State=finalize with default parameters
|
||||
assert:
|
||||
that:
|
||||
- "current_path.stat.islnk"
|
||||
- "deploy_helper.new_release_path in current_path.stat.lnk_source"
|
||||
- "not current_path_unfinished_filename.stat.exists"
|
||||
- "current_path.stat.islnk"
|
||||
- "deploy_helper.new_release_path in current_path.stat.lnk_source"
|
||||
- "not current_path_unfinished_filename.stat.exists"
|
||||
- stat: path={{ deploy_helper.releases_path }}/third
|
||||
register: third_release_path
|
||||
- shell: "ls {{ deploy_helper.releases_path }} | wc -l"
|
||||
|
@ -98,13 +98,13 @@
|
|||
- name: Assert State=finalize with default parameters (clean=true checks)
|
||||
assert:
|
||||
that:
|
||||
- "not third_release_path.stat.exists"
|
||||
- "releases_count.stdout|trim == '6'"
|
||||
- "not third_release_path.stat.exists"
|
||||
- "releases_count.stdout|trim == '6'"
|
||||
- deploy_helper: path={{ deploy_helper_test_root }} release={{ deploy_helper.new_release }} state=query
|
||||
- name: Assert State=finalize with default parameters (previous_release checks)
|
||||
assert:
|
||||
that:
|
||||
- "deploy_helper.new_release == deploy_helper.previous_release"
|
||||
- "deploy_helper.new_release == deploy_helper.previous_release"
|
||||
|
||||
- name: State=absent with default parameters
|
||||
deploy_helper: path={{ deploy_helper_test_root }} state=absent
|
||||
|
@ -113,7 +113,7 @@
|
|||
- name: Assert State=absent with default parameters
|
||||
assert:
|
||||
that:
|
||||
- "not project_path.stat.exists"
|
||||
- "not project_path.stat.exists"
|
||||
|
||||
- debug: msg="Clearing all release data and facts ---------"
|
||||
|
||||
|
@ -127,8 +127,8 @@
|
|||
- name: Assert State=present with shared_path set to False
|
||||
assert:
|
||||
that:
|
||||
- "releases_path.stat.exists"
|
||||
- "deploy_helper.shared_path is falsy or not shared_path.stat.exists"
|
||||
- "releases_path.stat.exists"
|
||||
- "deploy_helper.shared_path is falsy or not shared_path.stat.exists"
|
||||
|
||||
# Setup older releases for tests
|
||||
- file: path={{ deploy_helper.releases_path }}/{{ item }} state=directory
|
||||
|
@ -151,9 +151,9 @@
|
|||
- name: Assert State=finalize with default parameters (clean=true checks)
|
||||
assert:
|
||||
that:
|
||||
- "not third_release_path.stat.exists"
|
||||
- "before_releases_count.stdout|trim == '6'"
|
||||
- "releases_count.stdout|trim == '3'"
|
||||
- "not third_release_path.stat.exists"
|
||||
- "before_releases_count.stdout|trim == '6'"
|
||||
- "releases_count.stdout|trim == '3'"
|
||||
|
||||
# Remove the root folder
|
||||
- file: path={{ deploy_helper_test_root }} state=absent
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
# 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
|
||||
|
||||
discord_id: 000
|
||||
discord_id: 0
|
||||
discord_token: xxx
|
||||
|
|
|
@ -177,7 +177,6 @@
|
|||
- filesize_stat_basic_14.stat.checksum == filesize_test_checksum
|
||||
|
||||
|
||||
|
||||
- name: Expand the file with 1 byte (57001B) (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
@ -253,7 +252,6 @@
|
|||
- filesize_stat_basic_24.stat.checksum != filesize_test_checksum
|
||||
|
||||
|
||||
|
||||
- name: Expand the file up to 2 MiB (2*1024*1024 bytes) (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
@ -327,7 +325,6 @@
|
|||
- filesize_stat_basic_34.stat.size == 2*1024**2
|
||||
|
||||
|
||||
|
||||
- name: Truncate the file to 57kB (57000B) (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
@ -404,7 +401,6 @@
|
|||
- filesize_stat_basic_44.stat.checksum == filesize_test_checksum
|
||||
|
||||
|
||||
|
||||
- name: Remove test file
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
|
|
@ -89,7 +89,6 @@
|
|||
- filesize_stat_float_04.stat.size == 512512
|
||||
|
||||
|
||||
|
||||
- name: Create a file with a size of 512.513kB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
@ -166,7 +165,6 @@
|
|||
- filesize_stat_float_14.stat.size == 512513
|
||||
|
||||
|
||||
|
||||
- name: Create a file with a size of 4.004MB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
|
|
@ -119,7 +119,6 @@
|
|||
- filesize_stat_sparse_06.stat.size == 2*1000**4
|
||||
|
||||
|
||||
|
||||
- name: Change sparse file size to 2TiB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
@ -198,7 +197,6 @@
|
|||
- filesize_stat_sparse_14.stat.size == 2199023255552
|
||||
|
||||
|
||||
|
||||
- name: Change sparse file size to 2.321TB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
@ -279,7 +277,6 @@
|
|||
- filesize_stat_sparse_24.stat.size == 2321000000000
|
||||
|
||||
|
||||
|
||||
- name: Remove test file
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
|
|
@ -13,14 +13,13 @@
|
|||
|
||||
- name: Create a broken symlink in the same directory
|
||||
ansible.builtin.file:
|
||||
src: "{{ filesize_testfile | basename }}"
|
||||
src: "{{ filesize_testfile | basename }}"
|
||||
dest: "{{ filesize_testlink }}"
|
||||
state: link
|
||||
force: true
|
||||
follow: false
|
||||
|
||||
|
||||
|
||||
- name: Create a file with a size of 512 kB (512000 bytes) (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testlink }}"
|
||||
|
@ -85,7 +84,6 @@
|
|||
- filesize_test_symlink_04.path != filesize_testlink
|
||||
|
||||
|
||||
|
||||
- name: Remove test file
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
|
|
|
@ -8,52 +8,52 @@
|
|||
- new_uuid | default(False)
|
||||
- not (ansible_system == "FreeBSD" and fstype == "xfs")
|
||||
block:
|
||||
- name: "Create filesystem ({{ fstype }})"
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
register: fs_result
|
||||
- name: "Create filesystem ({{ fstype }})"
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
register: fs_result
|
||||
|
||||
- name: "Get UUID of created filesystem"
|
||||
ansible.builtin.shell:
|
||||
cmd: "{{ get_uuid_cmd }}"
|
||||
changed_when: false
|
||||
register: uuid
|
||||
- name: "Get UUID of created filesystem"
|
||||
ansible.builtin.shell:
|
||||
cmd: "{{ get_uuid_cmd }}"
|
||||
changed_when: false
|
||||
register: uuid
|
||||
|
||||
- name: "Reset filesystem ({{ fstype }}) UUID"
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
uuid: "{{ new_uuid }}"
|
||||
register: fs_resetuuid_result
|
||||
|
||||
- name: "Get UUID of the filesystem"
|
||||
ansible.builtin.shell:
|
||||
cmd: "{{ get_uuid_cmd }}"
|
||||
changed_when: false
|
||||
register: uuid2
|
||||
|
||||
- name: "Assert that filesystem UUID is changed"
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- 'fs_resetuuid_result is changed'
|
||||
- 'fs_resetuuid_result is success'
|
||||
- 'uuid.stdout != uuid2.stdout'
|
||||
|
||||
- when:
|
||||
- (grow | bool and (fstype != "vfat" or resize_vfat)) or
|
||||
(fstype == "xfs" and ansible_system == "Linux" and
|
||||
ansible_distribution not in ["CentOS", "Ubuntu"])
|
||||
block:
|
||||
- name: "Reset filesystem ({{ fstype }}) UUID and resizefs"
|
||||
ignore_errors: true
|
||||
- name: "Reset filesystem ({{ fstype }}) UUID"
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
uuid: "{{ new_uuid }}"
|
||||
resizefs: true
|
||||
register: fs_resetuuid_and_resizefs_result
|
||||
register: fs_resetuuid_result
|
||||
|
||||
- name: "Assert that filesystem UUID reset and resizefs failed"
|
||||
- name: "Get UUID of the filesystem"
|
||||
ansible.builtin.shell:
|
||||
cmd: "{{ get_uuid_cmd }}"
|
||||
changed_when: false
|
||||
register: uuid2
|
||||
|
||||
- name: "Assert that filesystem UUID is changed"
|
||||
ansible.builtin.assert:
|
||||
that: fs_resetuuid_and_resizefs_result is failed
|
||||
that:
|
||||
- 'fs_resetuuid_result is changed'
|
||||
- 'fs_resetuuid_result is success'
|
||||
- 'uuid.stdout != uuid2.stdout'
|
||||
|
||||
- when:
|
||||
- (grow | bool and (fstype != "vfat" or resize_vfat)) or
|
||||
(fstype == "xfs" and ansible_system == "Linux" and
|
||||
ansible_distribution not in ["CentOS", "Ubuntu"])
|
||||
block:
|
||||
- name: "Reset filesystem ({{ fstype }}) UUID and resizefs"
|
||||
ignore_errors: true
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
uuid: "{{ new_uuid }}"
|
||||
resizefs: true
|
||||
register: fs_resetuuid_and_resizefs_result
|
||||
|
||||
- name: "Assert that filesystem UUID reset and resizefs failed"
|
||||
ansible.builtin.assert:
|
||||
that: fs_resetuuid_and_resizefs_result is failed
|
||||
|
|
|
@ -12,33 +12,33 @@
|
|||
- new_uuid | default(False)
|
||||
- not (ansible_system == "FreeBSD" and fstype == "xfs")
|
||||
block:
|
||||
- name: "Create filesystem ({{ fstype }}) with UUID"
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
uuid: '{{ random_uuid }}'
|
||||
register: fs_result
|
||||
- name: "Create filesystem ({{ fstype }}) with UUID"
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
uuid: '{{ random_uuid }}'
|
||||
register: fs_result
|
||||
|
||||
- name: "Get UUID of the created filesystem"
|
||||
ansible.builtin.shell:
|
||||
cmd: "{{ get_uuid_cmd }}"
|
||||
changed_when: false
|
||||
register: uuid
|
||||
- name: "Get UUID of the created filesystem"
|
||||
ansible.builtin.shell:
|
||||
cmd: "{{ get_uuid_cmd }}"
|
||||
changed_when: false
|
||||
register: uuid
|
||||
|
||||
- name: "Assert that filesystem UUID is the random UUID set on creation"
|
||||
ansible.builtin.assert:
|
||||
that: (random_uuid | replace('-','')) == ( uuid.stdout | replace('-',''))
|
||||
- name: "Assert that filesystem UUID is the random UUID set on creation"
|
||||
ansible.builtin.assert:
|
||||
that: (random_uuid | replace('-','')) == ( uuid.stdout | replace('-',''))
|
||||
|
||||
- when: not (new_uuid | default(False))
|
||||
block:
|
||||
- name: "Create filesystem ({{ fstype }}) without UUID support"
|
||||
ignore_errors: true
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
uuid: '{{ random_uuid }}'
|
||||
register: fs_result
|
||||
- name: "Create filesystem ({{ fstype }}) without UUID support"
|
||||
ignore_errors: true
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
uuid: '{{ random_uuid }}'
|
||||
register: fs_result
|
||||
|
||||
- name: "Assert that filesystem creation failed"
|
||||
ansible.builtin.assert:
|
||||
that: fs_result is failed
|
||||
- name: "Assert that filesystem creation failed"
|
||||
ansible.builtin.assert:
|
||||
that: fs_result is failed
|
||||
|
|
|
@ -9,25 +9,25 @@
|
|||
- fstype != "xfs"
|
||||
block:
|
||||
|
||||
- name: "Generate random UUIDs"
|
||||
ansible.builtin.set_fact:
|
||||
random_uuid: '{{ "first_random_uuid" | ansible.builtin.to_uuid }}'
|
||||
random_uuid2: '{{ "second_random_uuid" | ansible.builtin.to_uuid }}'
|
||||
- name: "Generate random UUIDs"
|
||||
ansible.builtin.set_fact:
|
||||
random_uuid: '{{ "first_random_uuid" | ansible.builtin.to_uuid }}'
|
||||
random_uuid2: '{{ "second_random_uuid" | ansible.builtin.to_uuid }}'
|
||||
|
||||
- name: "Create filesystem ({{ fstype }}) with fix UUID as opt"
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
opts: "{{ ((fstype == 'lvm') | ansible.builtin.ternary('--norestorefile --uuid ', '-U ')) + random_uuid2 }}"
|
||||
uuid: '{{ random_uuid }}'
|
||||
register: fs_result2
|
||||
- name: "Create filesystem ({{ fstype }}) with fix UUID as opt"
|
||||
community.general.filesystem:
|
||||
dev: '{{ dev }}'
|
||||
fstype: '{{ fstype }}'
|
||||
opts: "{{ ((fstype == 'lvm') | ansible.builtin.ternary('--norestorefile --uuid ', '-U ')) + random_uuid2 }}"
|
||||
uuid: '{{ random_uuid }}'
|
||||
register: fs_result2
|
||||
|
||||
- name: "Get UUID of the created filesystem"
|
||||
ansible.builtin.shell:
|
||||
cmd: "{{ get_uuid_cmd }}"
|
||||
changed_when: false
|
||||
register: uuid2
|
||||
- name: "Get UUID of the created filesystem"
|
||||
ansible.builtin.shell:
|
||||
cmd: "{{ get_uuid_cmd }}"
|
||||
changed_when: false
|
||||
register: uuid2
|
||||
|
||||
- name: "Assert that filesystem UUID is the one set on creation with opt"
|
||||
ansible.builtin.assert:
|
||||
that: (random_uuid2 | replace('-','')) == ( uuid2.stdout | replace('-',''))
|
||||
- name: "Assert that filesystem UUID is the one set on creation with opt"
|
||||
ansible.builtin.assert:
|
||||
that: (random_uuid2 | replace('-','')) == ( uuid2.stdout | replace('-',''))
|
||||
|
|
|
@ -11,8 +11,8 @@ tests:
|
|||
- {k0_x0: A0, k1_x1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {k0_x0: A1, k1_x1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
result:
|
||||
- {k0_x0: A0, k1_x1: B0}
|
||||
- {k0_x0: A1, k1_x1: B1}
|
||||
- {k0_x0: A0, k1_x1: B0}
|
||||
- {k0_x0: A1, k1_x1: B1}
|
||||
- template: mp.j2
|
||||
group:
|
||||
- {mp: equal, tt: [k0_x0, k1_x1], d: Match keys that equal any of the items in the target.}
|
||||
|
@ -24,8 +24,8 @@ tests:
|
|||
- {k0_x0: A0, k1_x1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {k0_x0: A1, k1_x1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
result:
|
||||
- {k0_x0: A0, k1_x1: B0}
|
||||
- {k0_x0: A1, k1_x1: B1}
|
||||
- {k0_x0: A0, k1_x1: B0}
|
||||
- {k0_x0: A1, k1_x1: B1}
|
||||
- template: mp.j2
|
||||
group:
|
||||
- {mp: equal, tt: k0_x0, d: Match keys that equal the target.}
|
||||
|
@ -36,5 +36,5 @@ tests:
|
|||
- {k0_x0: A0, k1_x1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {k0_x0: A1, k1_x1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
result:
|
||||
- {k0_x0: A0}
|
||||
- {k0_x0: A1}
|
||||
- {k0_x0: A0}
|
||||
- {k0_x0: A1}
|
||||
|
|
|
@ -45,15 +45,15 @@
|
|||
- _bad_random_mac_filter is failed
|
||||
- "_bad_random_mac_filter.msg is search('Invalid value (.*) for random_mac: 5 colon.* separated items max')"
|
||||
|
||||
- name: Verify random_mac filter
|
||||
- name: Verify random_mac filter
|
||||
assert:
|
||||
that:
|
||||
- "'00' | community.general.random_mac is match('^00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00' | community.general.random_mac is match('^00:00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00:00' | community.general.random_mac is match('^00:00:00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00:00:00' | community.general.random_mac is match('^00:00:00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00:00:00:00' | community.general.random_mac is match('^00:00:00:00:00:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00:00' | community.general.random_mac != '00:00:00' | community.general.random_mac"
|
||||
- "'00' | community.general.random_mac is match('^00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00' | community.general.random_mac is match('^00:00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00:00' | community.general.random_mac is match('^00:00:00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00:00:00' | community.general.random_mac is match('^00:00:00:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00:00:00:00' | community.general.random_mac is match('^00:00:00:00:00:[a-f0-9][a-f0-9]$')"
|
||||
- "'00:00:00' | community.general.random_mac != '00:00:00' | community.general.random_mac"
|
||||
|
||||
- name: Verify random_mac filter with seed
|
||||
assert:
|
||||
|
|
|
@ -14,8 +14,8 @@ tests:
|
|||
- {k0_x0: A0, k1_x1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {k0_x0: A1, k1_x1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
result:
|
||||
- {a0: A0, a1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {a0: A1, a1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
- {a0: A0, a1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {a0: A1, a1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
- template: mp.j2
|
||||
group:
|
||||
- d: Replace keys that starts with any of the attributes before.
|
||||
|
@ -37,8 +37,8 @@ tests:
|
|||
- {k0_x0: A0, k1_x1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {k0_x0: A1, k1_x1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
result:
|
||||
- {a0: A0, a1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {a0: A1, a1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
- {a0: A0, a1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {a0: A1, a1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
- template: mp.j2
|
||||
group:
|
||||
- d: If more keys match the same attribute before the last one will be used.
|
||||
|
@ -54,8 +54,8 @@ tests:
|
|||
- {k0_x0: A0, k1_x1: B0, k2_x2: [C0], k3_x3: foo}
|
||||
- {k0_x0: A1, k1_x1: B1, k2_x2: [C1], k3_x3: bar}
|
||||
result:
|
||||
- X: foo
|
||||
- X: bar
|
||||
- X: foo
|
||||
- X: bar
|
||||
- template: mp.j2
|
||||
group:
|
||||
- d: If there are more matches for a key the first one will be used.
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
assert:
|
||||
that: result == dtype
|
||||
success_msg: '"abc" is {{ dtype }}'
|
||||
fail_msg: '"abc" is {{ result }}, not {{ dtype }}'
|
||||
fail_msg: '"abc" is {{ result }}, not {{ dtype }}'
|
||||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
result: '{{ "abc" | community.general.reveal_ansible_type }}'
|
||||
|
@ -74,7 +74,7 @@
|
|||
assert:
|
||||
that: result == dtype
|
||||
success_msg: '123 is {{ dtype }}'
|
||||
fail_msg: '123 is {{ result }}, not {{ dtype }}'
|
||||
fail_msg: '123 is {{ result }}, not {{ dtype }}'
|
||||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
result: '{{ 123 | community.general.reveal_ansible_type }}'
|
||||
|
@ -84,7 +84,7 @@
|
|||
assert:
|
||||
that: result == dtype
|
||||
success_msg: '123.45 is {{ dtype }}'
|
||||
fail_msg: '123.45 is {{ result }}, not {{ dtype }}'
|
||||
fail_msg: '123.45 is {{ result }}, not {{ dtype }}'
|
||||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
result: '{{ 123.45 | community.general.reveal_ansible_type }}'
|
||||
|
@ -94,7 +94,7 @@
|
|||
assert:
|
||||
that: result == dtype
|
||||
success_msg: 'true is {{ dtype }}'
|
||||
fail_msg: 'true is {{ result }}, not {{ dtype }}'
|
||||
fail_msg: 'true is {{ result }}, not {{ dtype }}'
|
||||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
result: '{{ true | community.general.reveal_ansible_type }}'
|
||||
|
@ -104,7 +104,7 @@
|
|||
assert:
|
||||
that: result == dtype
|
||||
success_msg: '["a", "b", "c"] is {{ dtype }}'
|
||||
fail_msg: '["a", "b", "c"] is {{ result }}, not {{ dtype }}'
|
||||
fail_msg: '["a", "b", "c"] is {{ result }}, not {{ dtype }}'
|
||||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
result: '{{ ["a", "b", "c"] | community.general.reveal_ansible_type }}'
|
||||
|
@ -114,7 +114,7 @@
|
|||
assert:
|
||||
that: result == dtype
|
||||
success_msg: '[{"a": 1}, {"b": 2}] is {{ dtype }}'
|
||||
fail_msg: '[{"a": 1}, {"b": 2}] is {{ result }}, not {{ dtype }}'
|
||||
fail_msg: '[{"a": 1}, {"b": 2}] is {{ result }}, not {{ dtype }}'
|
||||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
result: '{{ [{"a": 1}, {"b": 2}] | community.general.reveal_ansible_type }}'
|
||||
|
@ -124,7 +124,7 @@
|
|||
assert:
|
||||
that: result == dtype
|
||||
success_msg: '{"a": 1} is {{ dtype }}'
|
||||
fail_msg: '{"a": 1} is {{ result }}, not {{ dtype }}'
|
||||
fail_msg: '{"a": 1} is {{ result }}, not {{ dtype }}'
|
||||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
result: '{{ {"a": 1} | community.general.reveal_ansible_type }}'
|
||||
|
@ -134,7 +134,7 @@
|
|||
assert:
|
||||
that: result == dtype
|
||||
success_msg: '{"a": 1, "b": 2} is {{ dtype }}'
|
||||
fail_msg: '{"a": 1, "b": 2} is {{ result }}, not {{ dtype }}'
|
||||
fail_msg: '{"a": 1, "b": 2} is {{ result }}, not {{ dtype }}'
|
||||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
result: '{{ {"a": 1, "b": 2} | community.general.reveal_ansible_type }}'
|
||||
|
@ -175,7 +175,7 @@
|
|||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
alias: {"AnsibleUnicode": "str", "_AnsibleTaggedStr": "str", "_AnsibleTaggedInt": "int", "_AnsibleTaggedFloat": "float"}
|
||||
data: {'a': 1, 'b': 1.1, 'c': 'abc', 'd': True, 'e': ['x', 'y', 'z'], 'f': {'x': 1, 'y': 2}}
|
||||
data: {'a': 1, 'b': 1.1, 'c': 'abc', 'd': true, 'e': ['x', 'y', 'z'], 'f': {'x': 1, 'y': 2}}
|
||||
result: '{{ data | community.general.reveal_ansible_type(alias) }}'
|
||||
dtype: dict[str, bool|dict|float|int|list|str]
|
||||
|
||||
|
@ -187,6 +187,6 @@
|
|||
quiet: '{{ quiet_test | default(true) | bool }}'
|
||||
vars:
|
||||
alias: {"AnsibleUnicode": "str", "_AnsibleTaggedStr": "str", "_AnsibleTaggedInt": "int", "_AnsibleTaggedFloat": "float"}
|
||||
data: [1, 2, 1.1, 'abc', True, ['x', 'y', 'z'], {'x': 1, 'y': 2}]
|
||||
data: [1, 2, 1.1, 'abc', true, ['x', 'y', 'z'], {'x': 1, 'y': 2}]
|
||||
result: '{{ data | community.general.reveal_ansible_type(alias) }}'
|
||||
dtype: list[bool|dict|float|int|list|str]
|
||||
|
|
|
@ -11,53 +11,53 @@
|
|||
|
||||
- block:
|
||||
|
||||
- import_tasks: setup.yml
|
||||
become: true
|
||||
- import_tasks: setup.yml
|
||||
become: true
|
||||
|
||||
# executable override
|
||||
# executable override
|
||||
|
||||
- name: Test executable override
|
||||
flatpak:
|
||||
name: com.dummy.App1
|
||||
remote: dummy-remote
|
||||
state: present
|
||||
executable: nothing-that-exists
|
||||
ignore_errors: true
|
||||
register: executable_override_result
|
||||
- name: Test executable override
|
||||
flatpak:
|
||||
name: com.dummy.App1
|
||||
remote: dummy-remote
|
||||
state: present
|
||||
executable: nothing-that-exists
|
||||
ignore_errors: true
|
||||
register: executable_override_result
|
||||
|
||||
- name: Verify executable override test result
|
||||
assert:
|
||||
that:
|
||||
- executable_override_result is failed
|
||||
- executable_override_result is not changed
|
||||
msg: "Specifying non-existing executable shall fail module execution"
|
||||
- name: Verify executable override test result
|
||||
assert:
|
||||
that:
|
||||
- executable_override_result is failed
|
||||
- executable_override_result is not changed
|
||||
msg: "Specifying non-existing executable shall fail module execution"
|
||||
|
||||
- import_tasks: check_mode.yml
|
||||
become: false
|
||||
- import_tasks: check_mode.yml
|
||||
become: false
|
||||
|
||||
- import_tasks: test.yml
|
||||
become: false
|
||||
vars:
|
||||
method: user
|
||||
- import_tasks: test.yml
|
||||
become: false
|
||||
vars:
|
||||
method: user
|
||||
|
||||
- import_tasks: test.yml
|
||||
become: true
|
||||
vars:
|
||||
method: system
|
||||
- import_tasks: test.yml
|
||||
become: true
|
||||
vars:
|
||||
method: system
|
||||
|
||||
always:
|
||||
|
||||
- name: Check HTTP server status
|
||||
async_status:
|
||||
jid: "{{ webserver_status.ansible_job_id }}"
|
||||
ignore_errors: true
|
||||
- name: Check HTTP server status
|
||||
async_status:
|
||||
jid: "{{ webserver_status.ansible_job_id }}"
|
||||
ignore_errors: true
|
||||
|
||||
- name: List processes
|
||||
command: ps aux
|
||||
- name: List processes
|
||||
command: ps aux
|
||||
|
||||
- name: Stop HTTP server
|
||||
command: >-
|
||||
pkill -f -- '{{ remote_tmp_dir }}/serve.py'
|
||||
- name: Stop HTTP server
|
||||
command: >-
|
||||
pkill -f -- '{{ remote_tmp_dir }}/serve.py'
|
||||
|
||||
when: |
|
||||
ansible_distribution == 'Fedora' or
|
||||
|
|
|
@ -11,17 +11,17 @@
|
|||
when: ansible_distribution == 'Fedora'
|
||||
|
||||
- block:
|
||||
- name: Activate flatpak ppa on Ubuntu
|
||||
apt_repository:
|
||||
repo: ppa:alexlarsson/flatpak
|
||||
state: present
|
||||
mode: '0644'
|
||||
when: ansible_lsb.major_release | int < 18
|
||||
- name: Activate flatpak ppa on Ubuntu
|
||||
apt_repository:
|
||||
repo: ppa:alexlarsson/flatpak
|
||||
state: present
|
||||
mode: '0644'
|
||||
when: ansible_lsb.major_release | int < 18
|
||||
|
||||
- name: Install flatpak package on Ubuntu
|
||||
apt:
|
||||
name: flatpak
|
||||
state: present
|
||||
- name: Install flatpak package on Ubuntu
|
||||
apt:
|
||||
name: flatpak
|
||||
state: present
|
||||
|
||||
when: ansible_distribution == 'Ubuntu'
|
||||
|
||||
|
|
|
@ -164,25 +164,25 @@
|
|||
- when: url_removal_result is not failed
|
||||
block:
|
||||
|
||||
- name: Verify removal test result - {{ method }}
|
||||
assert:
|
||||
that:
|
||||
- url_removal_result is changed
|
||||
msg: "state=absent with url as name shall remove flatpak when present"
|
||||
- name: Verify removal test result - {{ method }}
|
||||
assert:
|
||||
that:
|
||||
- url_removal_result is changed
|
||||
msg: "state=absent with url as name shall remove flatpak when present"
|
||||
|
||||
- name: Test idempotency of removal with url - {{ method }}
|
||||
flatpak:
|
||||
name: http://127.0.0.1:8000/repo/com.dummy.App1.flatpakref
|
||||
state: absent
|
||||
method: "{{ method }}"
|
||||
no_dependencies: true
|
||||
register: double_url_removal_result
|
||||
- name: Test idempotency of removal with url - {{ method }}
|
||||
flatpak:
|
||||
name: http://127.0.0.1:8000/repo/com.dummy.App1.flatpakref
|
||||
state: absent
|
||||
method: "{{ method }}"
|
||||
no_dependencies: true
|
||||
register: double_url_removal_result
|
||||
|
||||
- name: Verify idempotency of removal with url test result - {{ method }}
|
||||
assert:
|
||||
that:
|
||||
- double_url_removal_result is not changed
|
||||
msg: "state=absent with url as name shall not do anything when flatpak is not present"
|
||||
- name: Verify idempotency of removal with url test result - {{ method }}
|
||||
assert:
|
||||
that:
|
||||
- double_url_removal_result is not changed
|
||||
msg: "state=absent with url as name shall not do anything when flatpak is not present"
|
||||
|
||||
- name: Make sure flatpak is really gone - {{ method }}
|
||||
flatpak:
|
||||
|
|
|
@ -11,39 +11,39 @@
|
|||
|
||||
- block:
|
||||
|
||||
- import_tasks: setup.yml
|
||||
become: true
|
||||
- import_tasks: setup.yml
|
||||
become: true
|
||||
|
||||
# executable override
|
||||
# executable override
|
||||
|
||||
- name: Test executable override
|
||||
flatpak_remote:
|
||||
name: irrelevant
|
||||
remote: irrelevant
|
||||
state: present
|
||||
executable: nothing-that-exists
|
||||
ignore_errors: true
|
||||
register: executable_override_result
|
||||
- name: Test executable override
|
||||
flatpak_remote:
|
||||
name: irrelevant
|
||||
remote: irrelevant
|
||||
state: present
|
||||
executable: nothing-that-exists
|
||||
ignore_errors: true
|
||||
register: executable_override_result
|
||||
|
||||
- name: Verify executable override test result
|
||||
assert:
|
||||
that:
|
||||
- executable_override_result is failed
|
||||
- executable_override_result is not changed
|
||||
msg: "Specifying non-existing executable shall fail module execution"
|
||||
- name: Verify executable override test result
|
||||
assert:
|
||||
that:
|
||||
- executable_override_result is failed
|
||||
- executable_override_result is not changed
|
||||
msg: "Specifying non-existing executable shall fail module execution"
|
||||
|
||||
- import_tasks: check_mode.yml
|
||||
become: false
|
||||
- import_tasks: check_mode.yml
|
||||
become: false
|
||||
|
||||
- import_tasks: test.yml
|
||||
become: false
|
||||
vars:
|
||||
method: user
|
||||
- import_tasks: test.yml
|
||||
become: false
|
||||
vars:
|
||||
method: user
|
||||
|
||||
- import_tasks: test.yml
|
||||
become: true
|
||||
vars:
|
||||
method: system
|
||||
- import_tasks: test.yml
|
||||
become: true
|
||||
vars:
|
||||
method: system
|
||||
|
||||
when: |
|
||||
ansible_distribution == 'Fedora' or
|
||||
|
|
|
@ -9,16 +9,16 @@
|
|||
state: present
|
||||
when: ansible_distribution == 'Fedora'
|
||||
- block:
|
||||
- name: Activate flatpak ppa on Ubuntu versions older than 18.04/bionic
|
||||
apt_repository:
|
||||
repo: ppa:alexlarsson/flatpak
|
||||
state: present
|
||||
mode: '0644'
|
||||
when: ansible_lsb.major_release | int < 18
|
||||
- name: Install flatpak package on Ubuntu
|
||||
apt:
|
||||
name: flatpak
|
||||
state: present
|
||||
- name: Activate flatpak ppa on Ubuntu versions older than 18.04/bionic
|
||||
apt_repository:
|
||||
repo: ppa:alexlarsson/flatpak
|
||||
state: present
|
||||
mode: '0644'
|
||||
when: ansible_lsb.major_release | int < 18
|
||||
- name: Install flatpak package on Ubuntu
|
||||
apt:
|
||||
name: flatpak
|
||||
state: present
|
||||
when: ansible_distribution == 'Ubuntu'
|
||||
- name: Install flatpak remote for testing check mode
|
||||
flatpak_remote:
|
||||
|
|
|
@ -6,32 +6,32 @@
|
|||
gandi_livedns_domain_name: "ansible-tests.org"
|
||||
gandi_livedns_record_items:
|
||||
|
||||
# Single A record
|
||||
- record: test-www
|
||||
type: A
|
||||
values:
|
||||
# Single A record
|
||||
- record: test-www
|
||||
type: A
|
||||
values:
|
||||
- 10.10.10.10
|
||||
ttl: 400
|
||||
update_values:
|
||||
ttl: 400
|
||||
update_values:
|
||||
- 10.10.10.11
|
||||
update_ttl: 800
|
||||
update_ttl: 800
|
||||
|
||||
# Multiple A records
|
||||
- record: test-www-multiple
|
||||
type: A
|
||||
ttl: 3600
|
||||
values:
|
||||
# Multiple A records
|
||||
- record: test-www-multiple
|
||||
type: A
|
||||
ttl: 3600
|
||||
values:
|
||||
- 10.10.11.10
|
||||
- 10.10.11.10
|
||||
update_values:
|
||||
update_values:
|
||||
- 10.10.11.11
|
||||
- 10.10.11.13
|
||||
|
||||
# CNAME
|
||||
- record: test-cname
|
||||
type: CNAME
|
||||
ttl: 10800
|
||||
values:
|
||||
# CNAME
|
||||
- record: test-cname
|
||||
type: CNAME
|
||||
ttl: 10800
|
||||
values:
|
||||
- test-www2
|
||||
update_values:
|
||||
update_values:
|
||||
- test-www
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
- name: verify test absent dns record
|
||||
assert:
|
||||
that:
|
||||
- result is successful
|
||||
- result is successful
|
||||
|
||||
- name: test create a dns record in check mode
|
||||
community.general.gandi_livedns:
|
||||
|
@ -30,7 +30,7 @@
|
|||
- name: verify test create a dns record in check mode
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result is changed
|
||||
|
||||
- name: test create a dns record
|
||||
community.general.gandi_livedns:
|
||||
|
@ -44,11 +44,11 @@
|
|||
- name: verify test create a dns record
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.record['values'] == item['values']
|
||||
- result.record.record == item.record
|
||||
- result.record.type == item.type
|
||||
- result.record.ttl == item.ttl
|
||||
- result is changed
|
||||
- result.record['values'] == item['values']
|
||||
- result.record.record == item.record
|
||||
- result.record.type == item.type
|
||||
- result.record.ttl == item.ttl
|
||||
|
||||
- name: test create a dns record idempotence
|
||||
community.general.gandi_livedns:
|
||||
|
@ -62,11 +62,11 @@
|
|||
- name: verify test create a dns record idempotence
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.record['values'] == item['values']
|
||||
- result.record.record == item.record
|
||||
- result.record.type == item.type
|
||||
- result.record.ttl == item.ttl
|
||||
- result is not changed
|
||||
- result.record['values'] == item['values']
|
||||
- result.record.record == item.record
|
||||
- result.record.type == item.type
|
||||
- result.record.ttl == item.ttl
|
||||
|
||||
- name: test create a DNS record with personal access token
|
||||
community.general.gandi_livedns:
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
- name: verify test remove a dns record in check mode
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result is changed
|
||||
|
||||
- name: test remove a dns record
|
||||
community.general.gandi_livedns:
|
||||
|
@ -30,7 +30,7 @@
|
|||
- name: verify test remove a dns record
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result is changed
|
||||
|
||||
- name: test remove a dns record idempotence
|
||||
community.general.gandi_livedns:
|
||||
|
@ -44,7 +44,7 @@
|
|||
- name: verify test remove a dns record idempotence
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result is not changed
|
||||
|
||||
- name: test remove second dns record idempotence
|
||||
community.general.gandi_livedns:
|
||||
|
@ -58,4 +58,4 @@
|
|||
- name: verify test remove a dns record idempotence
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result is not changed
|
||||
|
|
|
@ -16,11 +16,11 @@
|
|||
- name: verify test update in check mode
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.record['values'] == (item.update_values | default(item['values']))
|
||||
- result.record.record == item.record
|
||||
- result.record.type == item.type
|
||||
- result.record.ttl == (item.update_ttl | default(item.ttl))
|
||||
- result is changed
|
||||
- result.record['values'] == (item.update_values | default(item['values']))
|
||||
- result.record.record == item.record
|
||||
- result.record.type == item.type
|
||||
- result.record.ttl == (item.update_ttl | default(item.ttl))
|
||||
|
||||
- name: test update or add another dns record
|
||||
community.general.gandi_livedns:
|
||||
|
@ -34,11 +34,11 @@
|
|||
- name: verify test update a dns record
|
||||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.record['values'] == (item.update_values | default(item['values']))
|
||||
- result.record.record == item.record
|
||||
- result.record.ttl == (item.update_ttl | default(item.ttl))
|
||||
- result.record.type == item.type
|
||||
- result is changed
|
||||
- result.record['values'] == (item.update_values | default(item['values']))
|
||||
- result.record.record == item.record
|
||||
- result.record.ttl == (item.update_ttl | default(item.ttl))
|
||||
- result.record.type == item.type
|
||||
|
||||
- name: test update or add another dns record idempotence
|
||||
community.general.gandi_livedns:
|
||||
|
@ -52,8 +52,8 @@
|
|||
- name: verify test update a dns record idempotence
|
||||
assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.record['values'] == (item.update_values | default(item['values']))
|
||||
- result.record.record == item.record
|
||||
- result.record.ttl == (item.update_ttl | default(item.ttl))
|
||||
- result.record.type == item.type
|
||||
- result is not changed
|
||||
- result.record['values'] == (item.update_values | default(item['values']))
|
||||
- result.record.record == item.record
|
||||
- result.record.ttl == (item.update_ttl | default(item.ttl))
|
||||
- result.record.type == item.type
|
||||
|
|
|
@ -13,202 +13,202 @@
|
|||
- not (ansible_os_family == 'Alpine') # TODO
|
||||
block:
|
||||
|
||||
- include_vars: '{{ item }}'
|
||||
with_first_found:
|
||||
- files:
|
||||
- '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml'
|
||||
- '{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml'
|
||||
- '{{ ansible_distribution }}.yml'
|
||||
- '{{ ansible_os_family }}.yml'
|
||||
- 'default.yml'
|
||||
paths: '../vars'
|
||||
- include_vars: '{{ item }}'
|
||||
with_first_found:
|
||||
- files:
|
||||
- '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml'
|
||||
- '{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml'
|
||||
- '{{ ansible_distribution }}.yml'
|
||||
- '{{ ansible_os_family }}.yml'
|
||||
- 'default.yml'
|
||||
paths: '../vars'
|
||||
|
||||
- name: Install dependencies for test
|
||||
package:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
loop: "{{ test_packages }}"
|
||||
when: ansible_distribution != "MacOSX"
|
||||
- name: Install dependencies for test
|
||||
package:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
loop: "{{ test_packages }}"
|
||||
when: ansible_distribution != "MacOSX"
|
||||
|
||||
- name: Install a gem
|
||||
gem:
|
||||
name: gist
|
||||
state: present
|
||||
register: install_gem_result
|
||||
ignore_errors: true
|
||||
|
||||
# when running as root on Fedora, '--install-dir' is set in the os defaults which is
|
||||
# incompatible with '--user-install', we ignore this error for this case only
|
||||
- name: fail if failed to install gem
|
||||
fail:
|
||||
msg: "failed to install gem: {{ install_gem_result.msg }}"
|
||||
when:
|
||||
- install_gem_result is failed
|
||||
- not (ansible_user_uid == 0 and "User --install-dir or --user-install but not both" not in install_gem_result.msg)
|
||||
|
||||
- block:
|
||||
- name: List gems
|
||||
command: gem list
|
||||
register: current_gems
|
||||
|
||||
- name: Ensure gem was installed
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- current_gems.stdout is search('gist\s+\([0-9.]+\)')
|
||||
|
||||
- name: Remove a gem
|
||||
- name: Install a gem
|
||||
gem:
|
||||
name: gist
|
||||
state: absent
|
||||
register: remove_gem_results
|
||||
state: present
|
||||
register: install_gem_result
|
||||
ignore_errors: true
|
||||
|
||||
- name: List gems
|
||||
command: gem list
|
||||
register: current_gems
|
||||
# when running as root on Fedora, '--install-dir' is set in the os defaults which is
|
||||
# incompatible with '--user-install', we ignore this error for this case only
|
||||
- name: fail if failed to install gem
|
||||
fail:
|
||||
msg: "failed to install gem: {{ install_gem_result.msg }}"
|
||||
when:
|
||||
- install_gem_result is failed
|
||||
- not (ansible_user_uid == 0 and "User --install-dir or --user-install but not both" not in install_gem_result.msg)
|
||||
|
||||
- name: Verify gem is not installed
|
||||
- block:
|
||||
- name: List gems
|
||||
command: gem list
|
||||
register: current_gems
|
||||
|
||||
- name: Ensure gem was installed
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- current_gems.stdout is search('gist\s+\([0-9.]+\)')
|
||||
|
||||
- name: Remove a gem
|
||||
gem:
|
||||
name: gist
|
||||
state: absent
|
||||
register: remove_gem_results
|
||||
|
||||
- name: List gems
|
||||
command: gem list
|
||||
register: current_gems
|
||||
|
||||
- name: Verify gem is not installed
|
||||
assert:
|
||||
that:
|
||||
- remove_gem_results is changed
|
||||
- current_gems.stdout is not search('gist\s+\([0-9.]+\)')
|
||||
when: not install_gem_result is failed
|
||||
|
||||
# install gem in --no-user-install
|
||||
- block:
|
||||
- name: Install a gem with --no-user-install
|
||||
gem:
|
||||
name: gist
|
||||
state: present
|
||||
user_install: false
|
||||
register: install_gem_result
|
||||
|
||||
- name: List gems
|
||||
command: gem list
|
||||
register: current_gems
|
||||
|
||||
- name: Ensure gem was installed
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- current_gems.stdout is search('gist\s+\([0-9.]+\)')
|
||||
|
||||
- name: Remove a gem
|
||||
gem:
|
||||
name: gist
|
||||
state: absent
|
||||
register: remove_gem_results
|
||||
|
||||
- name: List gems
|
||||
command: gem list
|
||||
register: current_gems
|
||||
|
||||
- name: Verify gem is not installed
|
||||
assert:
|
||||
that:
|
||||
- remove_gem_results is changed
|
||||
- current_gems.stdout is not search('gist\s+\([0-9.]+\)')
|
||||
when: ansible_user_uid == 0
|
||||
|
||||
# Check custom gem directory
|
||||
- name: Install gem in a custom directory with incorrect options
|
||||
gem:
|
||||
name: gist
|
||||
state: present
|
||||
install_dir: "{{ remote_tmp_dir }}/gems"
|
||||
ignore_errors: true
|
||||
register: install_gem_fail_result
|
||||
|
||||
- debug:
|
||||
var: install_gem_fail_result
|
||||
tags: debug
|
||||
|
||||
- name: Ensure previous task failed
|
||||
assert:
|
||||
that:
|
||||
- remove_gem_results is changed
|
||||
- current_gems.stdout is not search('gist\s+\([0-9.]+\)')
|
||||
when: not install_gem_result is failed
|
||||
- install_gem_fail_result is failed
|
||||
- install_gem_fail_result.msg == 'install_dir requires user_install=false'
|
||||
|
||||
# install gem in --no-user-install
|
||||
- block:
|
||||
- name: Install a gem with --no-user-install
|
||||
- name: Install a gem in a custom directory
|
||||
gem:
|
||||
name: gist
|
||||
state: present
|
||||
user_install: false
|
||||
install_dir: "{{ remote_tmp_dir }}/gems"
|
||||
register: install_gem_result
|
||||
|
||||
- name: List gems
|
||||
command: gem list
|
||||
register: current_gems
|
||||
- name: Find gems in custom directory
|
||||
find:
|
||||
paths: "{{ remote_tmp_dir }}/gems/gems"
|
||||
file_type: directory
|
||||
contains: gist
|
||||
register: gem_search
|
||||
|
||||
- name: Ensure gem was installed
|
||||
- name: Ensure gem was installed in custom directory
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- current_gems.stdout is search('gist\s+\([0-9.]+\)')
|
||||
- gem_search.files[0].path is search('gist-[0-9.]+')
|
||||
ignore_errors: true
|
||||
|
||||
- name: Remove a gem
|
||||
- name: Remove a gem in a custom directory
|
||||
gem:
|
||||
name: gist
|
||||
state: absent
|
||||
register: remove_gem_results
|
||||
user_install: false
|
||||
install_dir: "{{ remote_tmp_dir }}/gems"
|
||||
register: install_gem_result
|
||||
|
||||
- name: List gems
|
||||
command: gem list
|
||||
register: current_gems
|
||||
- name: Find gems in custom directory
|
||||
find:
|
||||
paths: "{{ remote_tmp_dir }}/gems/gems"
|
||||
file_type: directory
|
||||
contains: gist
|
||||
register: gem_search
|
||||
|
||||
- name: Verify gem is not installed
|
||||
- name: Ensure gem was removed in custom directory
|
||||
assert:
|
||||
that:
|
||||
- remove_gem_results is changed
|
||||
- current_gems.stdout is not search('gist\s+\([0-9.]+\)')
|
||||
when: ansible_user_uid == 0
|
||||
- install_gem_result is changed
|
||||
- gem_search.files | length == 0
|
||||
|
||||
# Check custom gem directory
|
||||
- name: Install gem in a custom directory with incorrect options
|
||||
gem:
|
||||
name: gist
|
||||
state: present
|
||||
install_dir: "{{ remote_tmp_dir }}/gems"
|
||||
ignore_errors: true
|
||||
register: install_gem_fail_result
|
||||
# Custom directory for executables (--bindir)
|
||||
- name: Install gem with custom bindir
|
||||
gem:
|
||||
name: gist
|
||||
state: present
|
||||
bindir: "{{ remote_tmp_dir }}/custom_bindir"
|
||||
norc: true
|
||||
user_install: false # Avoid conflicts between --install-dir and --user-install when running as root on CentOS / Fedora / RHEL
|
||||
register: install_gem_result
|
||||
|
||||
- debug:
|
||||
var: install_gem_fail_result
|
||||
tags: debug
|
||||
- name: Get stats of gem executable
|
||||
stat:
|
||||
path: "{{ remote_tmp_dir }}/custom_bindir/gist"
|
||||
register: gem_bindir_stat
|
||||
|
||||
- name: Ensure previous task failed
|
||||
assert:
|
||||
that:
|
||||
- install_gem_fail_result is failed
|
||||
- install_gem_fail_result.msg == 'install_dir requires user_install=false'
|
||||
- name: Ensure gem executable was installed in custom directory
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- gem_bindir_stat.stat.exists and gem_bindir_stat.stat.isreg
|
||||
|
||||
- name: Install a gem in a custom directory
|
||||
gem:
|
||||
name: gist
|
||||
state: present
|
||||
user_install: false
|
||||
install_dir: "{{ remote_tmp_dir }}/gems"
|
||||
register: install_gem_result
|
||||
- name: Remove gem with custom bindir
|
||||
gem:
|
||||
name: gist
|
||||
state: absent
|
||||
bindir: "{{ remote_tmp_dir }}/custom_bindir"
|
||||
norc: true
|
||||
user_install: false # Avoid conflicts between --install-dir and --user-install when running as root on CentOS / Fedora / RHEL
|
||||
register: install_gem_result
|
||||
|
||||
- name: Find gems in custom directory
|
||||
find:
|
||||
paths: "{{ remote_tmp_dir }}/gems/gems"
|
||||
file_type: directory
|
||||
contains: gist
|
||||
register: gem_search
|
||||
- name: Get stats of gem executable
|
||||
stat:
|
||||
path: "{{ remote_tmp_dir }}/custom_bindir/gist"
|
||||
register: gem_bindir_stat
|
||||
|
||||
- name: Ensure gem was installed in custom directory
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- gem_search.files[0].path is search('gist-[0-9.]+')
|
||||
ignore_errors: true
|
||||
|
||||
- name: Remove a gem in a custom directory
|
||||
gem:
|
||||
name: gist
|
||||
state: absent
|
||||
user_install: false
|
||||
install_dir: "{{ remote_tmp_dir }}/gems"
|
||||
register: install_gem_result
|
||||
|
||||
- name: Find gems in custom directory
|
||||
find:
|
||||
paths: "{{ remote_tmp_dir }}/gems/gems"
|
||||
file_type: directory
|
||||
contains: gist
|
||||
register: gem_search
|
||||
|
||||
- name: Ensure gem was removed in custom directory
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- gem_search.files | length == 0
|
||||
|
||||
# Custom directory for executables (--bindir)
|
||||
- name: Install gem with custom bindir
|
||||
gem:
|
||||
name: gist
|
||||
state: present
|
||||
bindir: "{{ remote_tmp_dir }}/custom_bindir"
|
||||
norc: true
|
||||
user_install: false # Avoid conflicts between --install-dir and --user-install when running as root on CentOS / Fedora / RHEL
|
||||
register: install_gem_result
|
||||
|
||||
- name: Get stats of gem executable
|
||||
stat:
|
||||
path: "{{ remote_tmp_dir }}/custom_bindir/gist"
|
||||
register: gem_bindir_stat
|
||||
|
||||
- name: Ensure gem executable was installed in custom directory
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- gem_bindir_stat.stat.exists and gem_bindir_stat.stat.isreg
|
||||
|
||||
- name: Remove gem with custom bindir
|
||||
gem:
|
||||
name: gist
|
||||
state: absent
|
||||
bindir: "{{ remote_tmp_dir }}/custom_bindir"
|
||||
norc: true
|
||||
user_install: false # Avoid conflicts between --install-dir and --user-install when running as root on CentOS / Fedora / RHEL
|
||||
register: install_gem_result
|
||||
|
||||
- name: Get stats of gem executable
|
||||
stat:
|
||||
path: "{{ remote_tmp_dir }}/custom_bindir/gist"
|
||||
register: gem_bindir_stat
|
||||
|
||||
- name: Ensure gem executable was removed from custom directory
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- not gem_bindir_stat.stat.exists
|
||||
- name: Ensure gem executable was removed from custom directory
|
||||
assert:
|
||||
that:
|
||||
- install_gem_result is changed
|
||||
- not gem_bindir_stat.stat.exists
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# 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
|
||||
|
||||
#- import_tasks: setup_no_value.yml
|
||||
# - import_tasks: setup_no_value.yml
|
||||
|
||||
- name: setting value
|
||||
git_config:
|
||||
|
|
|
@ -15,18 +15,27 @@
|
|||
- block:
|
||||
- include_tasks: get_simple_value.yml
|
||||
loop:
|
||||
- { import_file: setup_global.yml, git_scope: 'global' }
|
||||
- { import_file: setup_file.yml, git_scope: 'file', git_file: "{{ remote_tmp_dir }}/gitconfig_file" }
|
||||
- import_file: setup_global.yml
|
||||
git_scope: 'global'
|
||||
- import_file: setup_file.yml
|
||||
git_scope: 'file'
|
||||
git_file: "{{ remote_tmp_dir }}/gitconfig_file"
|
||||
|
||||
- include_tasks: get_multi_value.yml
|
||||
loop:
|
||||
- { import_file: setup_global.yml, git_scope: 'global' }
|
||||
- { import_file: setup_file.yml, git_scope: 'file', git_file: "{{ remote_tmp_dir }}/gitconfig_file" }
|
||||
- import_file: setup_global.yml
|
||||
git_scope: 'global'
|
||||
- import_file: setup_file.yml
|
||||
git_scope: 'file'
|
||||
git_file: "{{ remote_tmp_dir }}/gitconfig_file"
|
||||
|
||||
- include_tasks: get_all_values.yml
|
||||
loop:
|
||||
- { import_file: setup_global.yml, git_scope: 'global' }
|
||||
- { import_file: setup_file.yml, git_scope: 'file', git_file: "{{ remote_tmp_dir }}/gitconfig_file" }
|
||||
- import_file: setup_global.yml
|
||||
git_scope: 'global'
|
||||
- import_file: setup_file.yml
|
||||
git_scope: 'file'
|
||||
git_file: "{{ remote_tmp_dir }}/gitconfig_file"
|
||||
|
||||
- include_tasks: error_handling.yml
|
||||
when: git_installed is succeeded and git_version.stdout is version(git_version_supporting_includes, ">=")
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
- name: Install JWT
|
||||
ansible.builtin.pip:
|
||||
name:
|
||||
- jwt
|
||||
- jwt
|
||||
|
||||
- name: Read file
|
||||
ansible.builtin.set_fact:
|
||||
|
@ -26,5 +26,5 @@
|
|||
|
||||
- assert:
|
||||
that:
|
||||
- github_app_access_token is failed
|
||||
- '"Github return error" in github_app_access_token.msg'
|
||||
- github_app_access_token is failed
|
||||
- '"Github return error" in github_app_access_token.msg'
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
expires_at: '2025-01-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: create_pfail_token_status
|
||||
always:
|
||||
- name: Assert that token creation in nonexisting group failed
|
||||
|
@ -47,8 +47,8 @@
|
|||
expires_at: '2025-13-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: create_efail_token_status
|
||||
always:
|
||||
- name: Assert that token creation with invalid expires_at failed
|
||||
|
@ -68,8 +68,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: create_token_status
|
||||
- name: Assert that token creation with valid arguments is successfull
|
||||
assert:
|
||||
|
@ -88,8 +88,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: check_token_status
|
||||
- name: Assert that token creation without changes and recreate=never succeeds with status not changed
|
||||
assert:
|
||||
|
@ -108,8 +108,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
recreate: state_change
|
||||
register: check_recreate_token_status
|
||||
- name: Assert that token creation without changes and recreate=state_change succeeds with status not changed
|
||||
|
@ -130,8 +130,8 @@
|
|||
expires_at: '2025-01-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: change_token_status
|
||||
always:
|
||||
- name: Assert that token change with recreate=never fails
|
||||
|
@ -151,8 +151,8 @@
|
|||
expires_at: '2025-01-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
recreate: state_change
|
||||
register: change_recreate_token_status
|
||||
- name: Assert that token change with recreate=state_change succeeds
|
||||
|
@ -172,8 +172,8 @@
|
|||
expires_at: '2025-01-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
recreate: always
|
||||
register: change_recreate1_token_status
|
||||
- name: Assert that token change with recreate=always succeeds
|
||||
|
@ -193,8 +193,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: revoke_token_status
|
||||
- name: Assert that token revocation succeeds
|
||||
assert:
|
||||
|
@ -212,8 +212,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: revoke_token_status
|
||||
- name: Assert that token revocation succeeds with status not changed
|
||||
assert:
|
||||
|
|
|
@ -438,7 +438,7 @@
|
|||
- gitlab_instance_variable_state.instance_variable.removed|length == 0
|
||||
- gitlab_instance_variable_state.instance_variable.updated|length == 0
|
||||
# VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
|
||||
#- gitlab_instance_variable_state.instance_variable.added[0] == "my_test_var"
|
||||
# - gitlab_instance_variable_state.instance_variable.added[0] == "my_test_var"
|
||||
|
||||
- name: change variable_type attribute
|
||||
gitlab_instance_variable:
|
||||
|
|
|
@ -14,137 +14,137 @@
|
|||
state: present
|
||||
|
||||
- block:
|
||||
- name: Create {{ gitlab_project_name }} project
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
default_branch: "{{ gitlab_branch }}"
|
||||
initialize_with_readme: true
|
||||
state: present
|
||||
- name: Create {{ gitlab_project_name }} project
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
default_branch: "{{ gitlab_branch }}"
|
||||
initialize_with_readme: true
|
||||
state: present
|
||||
|
||||
- name: Create Issue
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
description: "Test description"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_create
|
||||
- name: Create Issue
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
description: "Test description"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_create
|
||||
|
||||
- name: Test Issue Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_create is changed
|
||||
- name: Test Issue Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_create is changed
|
||||
|
||||
- name: Create Issue ( Idempotency test )
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
description: "Test description"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_create_idempotence
|
||||
- name: Create Issue ( Idempotency test )
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
description: "Test description"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_create_idempotence
|
||||
|
||||
- name: Test Create Issue is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_create_idempotence is not changed
|
||||
- name: Test Create Issue is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_create_idempotence is not changed
|
||||
|
||||
- name: Update Issue Test ( Additions )
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
assignee_ids: "{{ gitlab_assignee_ids }}"
|
||||
description_path: "{{ gitlab_description_path }}"
|
||||
labels: "{{ gitlab_labels }}"
|
||||
milestone_search: "{{ gitlab_milestone_search }}"
|
||||
milestone_group_id: "{{ gitlab_milestone_group_id }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_update_additions
|
||||
- name: Update Issue Test ( Additions )
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
assignee_ids: "{{ gitlab_assignee_ids }}"
|
||||
description_path: "{{ gitlab_description_path }}"
|
||||
labels: "{{ gitlab_labels }}"
|
||||
milestone_search: "{{ gitlab_milestone_search }}"
|
||||
milestone_group_id: "{{ gitlab_milestone_group_id }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_update_additions
|
||||
|
||||
- name: Test Issue Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_update_additions.issue.labels[0] == "{{ gitlab_labels[0] }}"
|
||||
- gitlab_issue_update_additions.issue.assignees[0].username == "{{ gitlab_assignee_ids[0] }}"
|
||||
- "'### Description\n\nIssue test description' in gitlab_issue_update_additions.issue.description"
|
||||
- gitlab_issue_update_additions.issue.milestone.title == "{{ gitlab_milestone_search }}"
|
||||
- name: Test Issue Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_update_additions.issue.labels[0] == "{{ gitlab_labels[0] }}"
|
||||
- gitlab_issue_update_additions.issue.assignees[0].username == "{{ gitlab_assignee_ids[0] }}"
|
||||
- "'### Description\n\nIssue test description' in gitlab_issue_update_additions.issue.description"
|
||||
- gitlab_issue_update_additions.issue.milestone.title == "{{ gitlab_milestone_search }}"
|
||||
|
||||
- name: Update Issue Test ( Persistence )
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
description_path: "{{ gitlab_description_path }}"
|
||||
milestone_search: "{{ gitlab_milestone_search }}"
|
||||
milestone_group_id: "{{ gitlab_milestone_group_id }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_update_persistence
|
||||
- name: Update Issue Test ( Persistence )
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
description_path: "{{ gitlab_description_path }}"
|
||||
milestone_search: "{{ gitlab_milestone_search }}"
|
||||
milestone_group_id: "{{ gitlab_milestone_group_id }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_update_persistence
|
||||
|
||||
- name: Test issue Not Updated ( Persistence )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_update_persistence.issue.labels[0] == "{{ gitlab_labels[0] }}"
|
||||
- gitlab_issue_update_persistence.issue.assignees[0].username == "{{ gitlab_assignee_ids[0] }}"
|
||||
- name: Test issue Not Updated ( Persistence )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_update_persistence.issue.labels[0] == "{{ gitlab_labels[0] }}"
|
||||
- gitlab_issue_update_persistence.issue.assignees[0].username == "{{ gitlab_assignee_ids[0] }}"
|
||||
|
||||
- name: Update Issue Test ( Removals )
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
assignee_ids: []
|
||||
description_path: "{{ gitlab_description_path }}"
|
||||
labels: []
|
||||
milestone_search: ""
|
||||
milestone_group_id: ""
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_update_removal
|
||||
- name: Update Issue Test ( Removals )
|
||||
gitlab_issue:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
assignee_ids: []
|
||||
description_path: "{{ gitlab_description_path }}"
|
||||
labels: []
|
||||
milestone_search: ""
|
||||
milestone_group_id: ""
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
state: present
|
||||
title: "Ansible test issue"
|
||||
register: gitlab_issue_update_removal
|
||||
|
||||
- name: Test issue updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_update_removal.issue.labels == []
|
||||
- gitlab_issue_update_removal.issue.assignees == []
|
||||
- gitlab_issue_update_removal.issue.milestone == None
|
||||
- name: Test issue updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_update_removal.issue.labels == []
|
||||
- gitlab_issue_update_removal.issue.assignees == []
|
||||
- gitlab_issue_update_removal.issue.milestone == None
|
||||
|
||||
- name: Delete Issue
|
||||
gitlab_issue:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
title: "Ansible test issue"
|
||||
state: absent
|
||||
register: gitlab_issue_delete
|
||||
- name: Delete Issue
|
||||
gitlab_issue:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
title: "Ansible test issue"
|
||||
state: absent
|
||||
register: gitlab_issue_delete
|
||||
|
||||
- name: Test issue is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_delete is changed
|
||||
- name: Test issue is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_issue_delete is changed
|
||||
|
||||
always:
|
||||
- name: Delete Issue
|
||||
gitlab_issue:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
title: "Ansible test issue"
|
||||
state_filter: "opened"
|
||||
state: absent
|
||||
register: gitlab_issue_delete
|
||||
- name: Clean up {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: false
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
- name: Delete Issue
|
||||
gitlab_issue:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
title: "Ansible test issue"
|
||||
state_filter: "opened"
|
||||
state: absent
|
||||
register: gitlab_issue_delete
|
||||
- name: Clean up {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: false
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
|
|
|
@ -14,450 +14,450 @@
|
|||
state: present
|
||||
|
||||
- block:
|
||||
###
|
||||
### Group label
|
||||
###
|
||||
###
|
||||
### Group label
|
||||
###
|
||||
|
||||
- name: Create {{ gitlab_project_group }}
|
||||
gitlab_group:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_group }}"
|
||||
state: present
|
||||
- name: Create {{ gitlab_project_group }}
|
||||
gitlab_group:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_group }}"
|
||||
state: present
|
||||
|
||||
- name: Purge all group labels for check_mode test
|
||||
gitlab_label:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
- name: Purge all group labels for check_mode test
|
||||
gitlab_label:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
|
||||
- name: Group label - Add a label in check_mode
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
check_mode: true
|
||||
register: gitlab_group_label_state
|
||||
- name: Group label - Add a label in check_mode
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
check_mode: true
|
||||
register: gitlab_group_label_state
|
||||
|
||||
- name: Group label - Check_mode state must be changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_state is changed
|
||||
- name: Group label - Check_mode state must be changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_state is changed
|
||||
|
||||
- name: Group label - Create label {{ gitlab_first_label }} and {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_first_label_color }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_group_label_create
|
||||
- name: Group label - Create label {{ gitlab_first_label }} and {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_first_label_color }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_group_label_create
|
||||
|
||||
- name: Group label - Test Label Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_create is changed
|
||||
- gitlab_group_label_create.labels.added|length == 2
|
||||
- gitlab_group_label_create.labels.untouched|length == 0
|
||||
- gitlab_group_label_create.labels.removed|length == 0
|
||||
- gitlab_group_label_create.labels.updated|length == 0
|
||||
- gitlab_group_label_create.labels.added[0] == "{{ gitlab_first_label }}"
|
||||
- gitlab_group_label_create.labels.added[1] == "{{ gitlab_second_label }}"
|
||||
- name: Group label - Test Label Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_create is changed
|
||||
- gitlab_group_label_create.labels.added|length == 2
|
||||
- gitlab_group_label_create.labels.untouched|length == 0
|
||||
- gitlab_group_label_create.labels.removed|length == 0
|
||||
- gitlab_group_label_create.labels.updated|length == 0
|
||||
- gitlab_group_label_create.labels.added[0] == "{{ gitlab_first_label }}"
|
||||
- gitlab_group_label_create.labels.added[1] == "{{ gitlab_second_label }}"
|
||||
|
||||
- name: Group label - Create Label ( Idempotency test )
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_first_label_color }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
state: present
|
||||
register: gitlab_group_label_create_idempotence
|
||||
- name: Group label - Create Label ( Idempotency test )
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_first_label_color }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
state: present
|
||||
register: gitlab_group_label_create_idempotence
|
||||
|
||||
- name: Group label - Test Create Label is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_create_idempotence is not changed
|
||||
- name: Group label - Test Create Label is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_create_idempotence is not changed
|
||||
|
||||
- name: Group label - Update Label {{ gitlab_first_label }} changing color
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_group_label_update
|
||||
- name: Group label - Update Label {{ gitlab_first_label }} changing color
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_group_label_update
|
||||
|
||||
- name: Group label - Test Label Updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_update.labels.added|length == 0
|
||||
- gitlab_group_label_update.labels.untouched|length == 0
|
||||
- gitlab_group_label_update.labels.removed|length == 0
|
||||
- gitlab_group_label_update.labels.updated|length == 1
|
||||
- gitlab_group_label_update.labels.updated[0] == "{{ gitlab_first_label }}"
|
||||
- name: Group label - Test Label Updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_update.labels.added|length == 0
|
||||
- gitlab_group_label_update.labels.untouched|length == 0
|
||||
- gitlab_group_label_update.labels.removed|length == 0
|
||||
- gitlab_group_label_update.labels.updated|length == 1
|
||||
- gitlab_group_label_update.labels.updated[0] == "{{ gitlab_first_label }}"
|
||||
|
||||
- name: Group label - Change label {{ gitlab_second_label }} name to {{ gitlab_second_label_new_name }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
new_name: "{{ gitlab_second_label_new_name }}"
|
||||
state: present
|
||||
register: gitlab_group_label_new_name
|
||||
- name: Group label - Change label {{ gitlab_second_label }} name to {{ gitlab_second_label_new_name }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
new_name: "{{ gitlab_second_label_new_name }}"
|
||||
state: present
|
||||
register: gitlab_group_label_new_name
|
||||
|
||||
- name: Group label - Test Label name changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_new_name.labels.added|length == 0
|
||||
- gitlab_group_label_new_name.labels.untouched|length == 0
|
||||
- gitlab_group_label_new_name.labels.removed|length == 0
|
||||
- gitlab_group_label_new_name.labels.updated|length == 1
|
||||
- gitlab_group_label_new_name.labels.updated[0] == "{{ gitlab_second_label }}"
|
||||
- name: Group label - Test Label name changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_new_name.labels.added|length == 0
|
||||
- gitlab_group_label_new_name.labels.untouched|length == 0
|
||||
- gitlab_group_label_new_name.labels.removed|length == 0
|
||||
- gitlab_group_label_new_name.labels.updated|length == 1
|
||||
- gitlab_group_label_new_name.labels.updated[0] == "{{ gitlab_second_label }}"
|
||||
|
||||
- name: Group label - Change label name back to {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label_new_name }}"
|
||||
new_name: "{{ gitlab_second_label }}"
|
||||
state: present
|
||||
register: gitlab_group_label_orig_name
|
||||
- name: Group label - Change label name back to {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label_new_name }}"
|
||||
new_name: "{{ gitlab_second_label }}"
|
||||
state: present
|
||||
register: gitlab_group_label_orig_name
|
||||
|
||||
- name: Group label - Test Label name changed back
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_orig_name.labels.added|length == 0
|
||||
- gitlab_group_label_orig_name.labels.untouched|length == 0
|
||||
- gitlab_group_label_orig_name.labels.removed|length == 0
|
||||
- gitlab_group_label_orig_name.labels.updated|length == 1
|
||||
- gitlab_group_label_orig_name.labels.updated[0] == "{{ gitlab_second_label_new_name }}"
|
||||
- name: Group label - Test Label name changed back
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_orig_name.labels.added|length == 0
|
||||
- gitlab_group_label_orig_name.labels.untouched|length == 0
|
||||
- gitlab_group_label_orig_name.labels.removed|length == 0
|
||||
- gitlab_group_label_orig_name.labels.updated|length == 1
|
||||
- gitlab_group_label_orig_name.labels.updated[0] == "{{ gitlab_second_label_new_name }}"
|
||||
|
||||
- name: Group label - Update Label Test ( Additions )
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
state: present
|
||||
register: gitlab_group_label_update_additions
|
||||
- name: Group label - Update Label Test ( Additions )
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
state: present
|
||||
register: gitlab_group_label_update_additions
|
||||
|
||||
- name: Group label - Test Label Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_update_additions.labels.added|length == 0
|
||||
- gitlab_group_label_update_additions.labels.untouched|length == 0
|
||||
- gitlab_group_label_update_additions.labels.removed|length == 0
|
||||
- gitlab_group_label_update_additions.labels.updated|length == 1
|
||||
- gitlab_group_label_update_additions.labels.updated[0] == "{{ gitlab_second_label }}"
|
||||
- name: Group label - Test Label Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_update_additions.labels.added|length == 0
|
||||
- gitlab_group_label_update_additions.labels.untouched|length == 0
|
||||
- gitlab_group_label_update_additions.labels.removed|length == 0
|
||||
- gitlab_group_label_update_additions.labels.updated|length == 1
|
||||
- gitlab_group_label_update_additions.labels.updated[0] == "{{ gitlab_second_label }}"
|
||||
|
||||
- name: Group label - Delete Label {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
state: absent
|
||||
register: gitlab_group_label_delete
|
||||
- name: Group label - Delete Label {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
state: absent
|
||||
register: gitlab_group_label_delete
|
||||
|
||||
- name: Group label - Test label is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_delete is changed
|
||||
- gitlab_group_label_delete.labels.added|length == 0
|
||||
- gitlab_group_label_delete.labels.untouched|length == 0
|
||||
- gitlab_group_label_delete.labels.removed|length == 1
|
||||
- gitlab_group_label_delete.labels.updated|length == 0
|
||||
- gitlab_group_label_delete.labels.removed[0] == "{{ gitlab_second_label }}"
|
||||
- name: Group label - Test label is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_delete is changed
|
||||
- gitlab_group_label_delete.labels.added|length == 0
|
||||
- gitlab_group_label_delete.labels.untouched|length == 0
|
||||
- gitlab_group_label_delete.labels.removed|length == 1
|
||||
- gitlab_group_label_delete.labels.updated|length == 0
|
||||
- gitlab_group_label_delete.labels.removed[0] == "{{ gitlab_second_label }}"
|
||||
|
||||
- name: Group label - Create label {{ gitlab_second_label }} again purging the other
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_group_label_create_purging
|
||||
- name: Group label - Create label {{ gitlab_second_label }} again purging the other
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_group_label_create_purging
|
||||
|
||||
- name: Group label - Test Label Created again
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_create_purging is changed
|
||||
- gitlab_group_label_create_purging.labels.added|length == 1
|
||||
- gitlab_group_label_create_purging.labels.untouched|length == 0
|
||||
- gitlab_group_label_create_purging.labels.removed|length == 1
|
||||
- gitlab_group_label_create_purging.labels.updated|length == 0
|
||||
- gitlab_group_label_create_purging.labels.added[0] == "{{ gitlab_second_label }}"
|
||||
- gitlab_group_label_create_purging.labels.removed[0] == "{{ gitlab_first_label }}"
|
||||
- name: Group label - Test Label Created again
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_label_create_purging is changed
|
||||
- gitlab_group_label_create_purging.labels.added|length == 1
|
||||
- gitlab_group_label_create_purging.labels.untouched|length == 0
|
||||
- gitlab_group_label_create_purging.labels.removed|length == 1
|
||||
- gitlab_group_label_create_purging.labels.updated|length == 0
|
||||
- gitlab_group_label_create_purging.labels.added[0] == "{{ gitlab_second_label }}"
|
||||
- gitlab_group_label_create_purging.labels.removed[0] == "{{ gitlab_first_label }}"
|
||||
|
||||
###
|
||||
### Project label
|
||||
###
|
||||
###
|
||||
### Project label
|
||||
###
|
||||
|
||||
- name: Create {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
default_branch: "{{ gitlab_branch }}"
|
||||
initialize_with_readme: true
|
||||
state: present
|
||||
- name: Create {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
default_branch: "{{ gitlab_branch }}"
|
||||
initialize_with_readme: true
|
||||
state: present
|
||||
|
||||
- name: Purge all labels for check_mode test
|
||||
gitlab_label:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
- name: Purge all labels for check_mode test
|
||||
gitlab_label:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
|
||||
- name: Add a label in check_mode
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
check_mode: true
|
||||
register: gitlab_first_label_state
|
||||
- name: Add a label in check_mode
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
check_mode: true
|
||||
register: gitlab_first_label_state
|
||||
|
||||
- name: Check_mode state must be changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_state is changed
|
||||
- name: Check_mode state must be changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_state is changed
|
||||
|
||||
- name: Create label {{ gitlab_first_label }} and {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_first_label_color }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_first_label_create
|
||||
- name: Create label {{ gitlab_first_label }} and {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_first_label_color }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_first_label_create
|
||||
|
||||
- name: Test Label Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_create is changed
|
||||
- gitlab_first_label_create.labels.added|length == 2
|
||||
- gitlab_first_label_create.labels.untouched|length == 0
|
||||
- gitlab_first_label_create.labels.removed|length == 0
|
||||
- gitlab_first_label_create.labels.updated|length == 0
|
||||
- gitlab_first_label_create.labels.added[0] == "{{ gitlab_first_label }}"
|
||||
- gitlab_first_label_create.labels.added[1] == "{{ gitlab_second_label }}"
|
||||
- name: Test Label Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_create is changed
|
||||
- gitlab_first_label_create.labels.added|length == 2
|
||||
- gitlab_first_label_create.labels.untouched|length == 0
|
||||
- gitlab_first_label_create.labels.removed|length == 0
|
||||
- gitlab_first_label_create.labels.updated|length == 0
|
||||
- gitlab_first_label_create.labels.added[0] == "{{ gitlab_first_label }}"
|
||||
- gitlab_first_label_create.labels.added[1] == "{{ gitlab_second_label }}"
|
||||
|
||||
- name: Create Label ( Idempotency test )
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_first_label_color }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
state: present
|
||||
register: gitlab_first_label_create_idempotence
|
||||
- name: Create Label ( Idempotency test )
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_first_label_color }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
state: present
|
||||
register: gitlab_first_label_create_idempotence
|
||||
|
||||
- name: Test Create Label is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_create_idempotence is not changed
|
||||
- name: Test Create Label is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_create_idempotence is not changed
|
||||
|
||||
- name: Update Label {{ gitlab_first_label }} changing color
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_first_label_update
|
||||
- name: Update Label {{ gitlab_first_label }} changing color
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_first_label_update
|
||||
|
||||
- name: Test Label Updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_update.labels.added|length == 0
|
||||
- gitlab_first_label_update.labels.untouched|length == 0
|
||||
- gitlab_first_label_update.labels.removed|length == 0
|
||||
- gitlab_first_label_update.labels.updated|length == 1
|
||||
- gitlab_first_label_update.labels.updated[0] == "{{ gitlab_first_label }}"
|
||||
- name: Test Label Updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_update.labels.added|length == 0
|
||||
- gitlab_first_label_update.labels.untouched|length == 0
|
||||
- gitlab_first_label_update.labels.removed|length == 0
|
||||
- gitlab_first_label_update.labels.updated|length == 1
|
||||
- gitlab_first_label_update.labels.updated[0] == "{{ gitlab_first_label }}"
|
||||
|
||||
- name: Change label {{ gitlab_second_label }} name to {{ gitlab_second_label_new_name }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
new_name: "{{ gitlab_second_label_new_name }}"
|
||||
state: present
|
||||
register: gitlab_first_label_new_name
|
||||
- name: Change label {{ gitlab_second_label }} name to {{ gitlab_second_label_new_name }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
new_name: "{{ gitlab_second_label_new_name }}"
|
||||
state: present
|
||||
register: gitlab_first_label_new_name
|
||||
|
||||
- name: Test Label name changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_new_name.labels.added|length == 0
|
||||
- gitlab_first_label_new_name.labels.untouched|length == 0
|
||||
- gitlab_first_label_new_name.labels.removed|length == 0
|
||||
- gitlab_first_label_new_name.labels.updated|length == 1
|
||||
- gitlab_first_label_new_name.labels.updated[0] == "{{ gitlab_second_label }}"
|
||||
- name: Test Label name changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_new_name.labels.added|length == 0
|
||||
- gitlab_first_label_new_name.labels.untouched|length == 0
|
||||
- gitlab_first_label_new_name.labels.removed|length == 0
|
||||
- gitlab_first_label_new_name.labels.updated|length == 1
|
||||
- gitlab_first_label_new_name.labels.updated[0] == "{{ gitlab_second_label }}"
|
||||
|
||||
- name: Change label name back to {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label_new_name }}"
|
||||
new_name: "{{ gitlab_second_label }}"
|
||||
state: present
|
||||
register: gitlab_first_label_orig_name
|
||||
- name: Change label name back to {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label_new_name }}"
|
||||
new_name: "{{ gitlab_second_label }}"
|
||||
state: present
|
||||
register: gitlab_first_label_orig_name
|
||||
|
||||
- name: Test Label name changed back
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_orig_name.labels.added|length == 0
|
||||
- gitlab_first_label_orig_name.labels.untouched|length == 0
|
||||
- gitlab_first_label_orig_name.labels.removed|length == 0
|
||||
- gitlab_first_label_orig_name.labels.updated|length == 1
|
||||
- gitlab_first_label_orig_name.labels.updated[0] == "{{ gitlab_second_label_new_name }}"
|
||||
- name: Test Label name changed back
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_orig_name.labels.added|length == 0
|
||||
- gitlab_first_label_orig_name.labels.untouched|length == 0
|
||||
- gitlab_first_label_orig_name.labels.removed|length == 0
|
||||
- gitlab_first_label_orig_name.labels.updated|length == 1
|
||||
- gitlab_first_label_orig_name.labels.updated[0] == "{{ gitlab_second_label_new_name }}"
|
||||
|
||||
- name: Update Label Test ( Additions )
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
state: present
|
||||
register: gitlab_first_label_update_additions
|
||||
- name: Update Label Test ( Additions )
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
description: "{{ gitlab_first_label_description }}"
|
||||
priority: "{{ gitlab_first_label_priority }}"
|
||||
state: present
|
||||
register: gitlab_first_label_update_additions
|
||||
|
||||
- name: Test Label Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_update_additions.labels.added|length == 0
|
||||
- gitlab_first_label_update_additions.labels.untouched|length == 0
|
||||
- gitlab_first_label_update_additions.labels.removed|length == 0
|
||||
- gitlab_first_label_update_additions.labels.updated|length == 1
|
||||
- gitlab_first_label_update_additions.labels.updated[0] == "{{ gitlab_second_label }}"
|
||||
- name: Test Label Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_update_additions.labels.added|length == 0
|
||||
- gitlab_first_label_update_additions.labels.untouched|length == 0
|
||||
- gitlab_first_label_update_additions.labels.removed|length == 0
|
||||
- gitlab_first_label_update_additions.labels.updated|length == 1
|
||||
- gitlab_first_label_update_additions.labels.updated[0] == "{{ gitlab_second_label }}"
|
||||
|
||||
- name: Delete Label {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
state: absent
|
||||
register: gitlab_first_label_delete
|
||||
- name: Delete Label {{ gitlab_second_label }}
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
state: absent
|
||||
register: gitlab_first_label_delete
|
||||
|
||||
- name: Test label is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_delete is changed
|
||||
- gitlab_first_label_delete.labels.added|length == 0
|
||||
- gitlab_first_label_delete.labels.untouched|length == 0
|
||||
- gitlab_first_label_delete.labels.removed|length == 1
|
||||
- gitlab_first_label_delete.labels.updated|length == 0
|
||||
- gitlab_first_label_delete.labels.removed[0] == "{{ gitlab_second_label }}"
|
||||
- name: Test label is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_delete is changed
|
||||
- gitlab_first_label_delete.labels.added|length == 0
|
||||
- gitlab_first_label_delete.labels.untouched|length == 0
|
||||
- gitlab_first_label_delete.labels.removed|length == 1
|
||||
- gitlab_first_label_delete.labels.updated|length == 0
|
||||
- gitlab_first_label_delete.labels.removed[0] == "{{ gitlab_second_label }}"
|
||||
|
||||
- name: Create label {{ gitlab_second_label }} again purging the other
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_first_label_create_purging
|
||||
- name: Create label {{ gitlab_second_label }} again purging the other
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
labels:
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
color: "{{ gitlab_second_label_color }}"
|
||||
state: present
|
||||
register: gitlab_first_label_create_purging
|
||||
|
||||
- name: Test Label Created again
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_create_purging is changed
|
||||
- gitlab_first_label_create_purging.labels.added|length == 1
|
||||
- gitlab_first_label_create_purging.labels.untouched|length == 0
|
||||
- gitlab_first_label_create_purging.labels.removed|length == 1
|
||||
- gitlab_first_label_create_purging.labels.updated|length == 0
|
||||
- gitlab_first_label_create_purging.labels.added[0] == "{{ gitlab_second_label }}"
|
||||
- gitlab_first_label_create_purging.labels.removed[0] == "{{ gitlab_first_label }}"
|
||||
- name: Test Label Created again
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_create_purging is changed
|
||||
- gitlab_first_label_create_purging.labels.added|length == 1
|
||||
- gitlab_first_label_create_purging.labels.untouched|length == 0
|
||||
- gitlab_first_label_create_purging.labels.removed|length == 1
|
||||
- gitlab_first_label_create_purging.labels.updated|length == 0
|
||||
- gitlab_first_label_create_purging.labels.added[0] == "{{ gitlab_second_label }}"
|
||||
- gitlab_first_label_create_purging.labels.removed[0] == "{{ gitlab_first_label }}"
|
||||
|
||||
always:
|
||||
- name: Delete Labels
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
state: absent
|
||||
register: gitlab_first_label_always_delete
|
||||
- name: Delete Labels
|
||||
gitlab_label:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
labels:
|
||||
- name: "{{ gitlab_first_label }}"
|
||||
- name: "{{ gitlab_second_label }}"
|
||||
state: absent
|
||||
register: gitlab_first_label_always_delete
|
||||
|
||||
- name: Test label are deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_always_delete is changed
|
||||
- gitlab_first_label_always_delete.labels.added|length == 0
|
||||
- gitlab_first_label_always_delete.labels.untouched|length == 0
|
||||
- gitlab_first_label_always_delete.labels.removed|length > 0
|
||||
- gitlab_first_label_always_delete.labels.updated|length == 0
|
||||
- name: Test label are deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_label_always_delete is changed
|
||||
- gitlab_first_label_always_delete.labels.added|length == 0
|
||||
- gitlab_first_label_always_delete.labels.untouched|length == 0
|
||||
- gitlab_first_label_always_delete.labels.removed|length > 0
|
||||
- gitlab_first_label_always_delete.labels.updated|length == 0
|
||||
|
||||
- name: Clean up {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: false
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
- name: Clean up {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: false
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
|
||||
- name: Clean up {{ gitlab_project_group }}
|
||||
gitlab_group:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
- name: Clean up {{ gitlab_project_group }}
|
||||
gitlab_group:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
|
|
|
@ -14,116 +14,116 @@
|
|||
state: present
|
||||
|
||||
- block:
|
||||
- name: Create {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
default_branch: "{{ gitlab_target_branch }}"
|
||||
initialize_with_readme: true
|
||||
state: present
|
||||
- name: Create {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
default_branch: "{{ gitlab_target_branch }}"
|
||||
initialize_with_readme: true
|
||||
state: present
|
||||
|
||||
- name: Create branch {{ gitlab_source_branch }}
|
||||
gitlab_branch:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
branch: "{{ gitlab_source_branch }}"
|
||||
ref_branch: "{{ gitlab_target_branch }}"
|
||||
state: present
|
||||
- name: Create branch {{ gitlab_source_branch }}
|
||||
gitlab_branch:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
branch: "{{ gitlab_source_branch }}"
|
||||
ref_branch: "{{ gitlab_target_branch }}"
|
||||
state: present
|
||||
|
||||
- name: Create Merge Request
|
||||
gitlab_merge_request:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
source_branch: "{{gitlab_source_branch}}"
|
||||
target_branch: "{{gitlab_target_branch}}"
|
||||
title: "Ansible test merge request"
|
||||
description: "Test description"
|
||||
labels: ""
|
||||
state_filter: "opened"
|
||||
assignee_ids: ""
|
||||
reviewer_ids: ""
|
||||
remove_source_branch: True
|
||||
state: present
|
||||
register: gitlab_merge_request_create
|
||||
- name: Create Merge Request
|
||||
gitlab_merge_request:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
source_branch: "{{gitlab_source_branch}}"
|
||||
target_branch: "{{gitlab_target_branch}}"
|
||||
title: "Ansible test merge request"
|
||||
description: "Test description"
|
||||
labels: ""
|
||||
state_filter: "opened"
|
||||
assignee_ids: ""
|
||||
reviewer_ids: ""
|
||||
remove_source_branch: true
|
||||
state: present
|
||||
register: gitlab_merge_request_create
|
||||
|
||||
- name: Test Merge Request Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_merge_request_create is changed
|
||||
- name: Test Merge Request Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_merge_request_create is changed
|
||||
|
||||
- name: Create Merge Request ( Idempotency test )
|
||||
gitlab_merge_request:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
source_branch: "{{gitlab_source_branch}}"
|
||||
target_branch: "{{gitlab_target_branch}}"
|
||||
title: "Ansible test merge request"
|
||||
description: "Test description"
|
||||
labels: ""
|
||||
state_filter: "opened"
|
||||
assignee_ids: ""
|
||||
reviewer_ids: ""
|
||||
remove_source_branch: True
|
||||
state: present
|
||||
register: gitlab_merge_request_create_idempotence
|
||||
- name: Create Merge Request ( Idempotency test )
|
||||
gitlab_merge_request:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
source_branch: "{{gitlab_source_branch}}"
|
||||
target_branch: "{{gitlab_target_branch}}"
|
||||
title: "Ansible test merge request"
|
||||
description: "Test description"
|
||||
labels: ""
|
||||
state_filter: "opened"
|
||||
assignee_ids: ""
|
||||
reviewer_ids: ""
|
||||
remove_source_branch: true
|
||||
state: present
|
||||
register: gitlab_merge_request_create_idempotence
|
||||
|
||||
- name: Test module is idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_merge_request_create_idempotence is not changed
|
||||
- name: Test module is idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_merge_request_create_idempotence is not changed
|
||||
|
||||
- name: Update Merge Request Test
|
||||
gitlab_merge_request:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
source_branch: "{{gitlab_source_branch}}"
|
||||
target_branch: "{{gitlab_target_branch}}"
|
||||
title: "Ansible test merge request"
|
||||
description_path: "{{gitlab_description_path}}"
|
||||
labels: "{{ gitlab_labels }}"
|
||||
state_filter: "opened"
|
||||
assignee_ids: "{{ gitlab_assignee_ids }}"
|
||||
reviewer_ids: ""
|
||||
remove_source_branch: True
|
||||
state: present
|
||||
register: gitlab_merge_request_udpate
|
||||
- name: Update Merge Request Test
|
||||
gitlab_merge_request:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
source_branch: "{{gitlab_source_branch}}"
|
||||
target_branch: "{{gitlab_target_branch}}"
|
||||
title: "Ansible test merge request"
|
||||
description_path: "{{gitlab_description_path}}"
|
||||
labels: "{{ gitlab_labels }}"
|
||||
state_filter: "opened"
|
||||
assignee_ids: "{{ gitlab_assignee_ids }}"
|
||||
reviewer_ids: ""
|
||||
remove_source_branch: true
|
||||
state: present
|
||||
register: gitlab_merge_request_udpate
|
||||
|
||||
- name: Test merge request updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_merge_request_udpate.mr.labels[0] == "{{ gitlab_labels }}"
|
||||
- gitlab_merge_request_udpate.mr.assignees[0].username == "{{ gitlab_assignee_ids }}"
|
||||
- "'### Description\n\nMerge Request test description' in gitlab_merge_request_udpate.mr.description"
|
||||
- name: Test merge request updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_merge_request_udpate.mr.labels[0] == "{{ gitlab_labels }}"
|
||||
- gitlab_merge_request_udpate.mr.assignees[0].username == "{{ gitlab_assignee_ids }}"
|
||||
- "'### Description\n\nMerge Request test description' in gitlab_merge_request_udpate.mr.description"
|
||||
|
||||
- name: Delete Merge Request
|
||||
gitlab_merge_request:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
source_branch: "{{gitlab_source_branch}}"
|
||||
target_branch: "{{gitlab_target_branch}}"
|
||||
title: "Ansible test merge request"
|
||||
state: absent
|
||||
register: gitlab_merge_request_delete
|
||||
- name: Delete Merge Request
|
||||
gitlab_merge_request:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
source_branch: "{{gitlab_source_branch}}"
|
||||
target_branch: "{{gitlab_target_branch}}"
|
||||
title: "Ansible test merge request"
|
||||
state: absent
|
||||
register: gitlab_merge_request_delete
|
||||
|
||||
- name: Test merge request is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_merge_request_delete is changed
|
||||
- name: Test merge request is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_merge_request_delete is changed
|
||||
|
||||
always:
|
||||
- name: Clean up {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: false
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
- name: Clean up {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: false
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
|
|
|
@ -14,375 +14,375 @@
|
|||
state: present
|
||||
|
||||
- block:
|
||||
###
|
||||
### Group milestone
|
||||
###
|
||||
- name: Create {{ gitlab_project_group }}
|
||||
gitlab_group:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_group }}"
|
||||
state: present
|
||||
###
|
||||
### Group milestone
|
||||
###
|
||||
- name: Create {{ gitlab_project_group }}
|
||||
gitlab_group:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_group }}"
|
||||
state: present
|
||||
|
||||
- name: Purge all group milestones for check_mode test
|
||||
gitlab_milestone:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
- name: Purge all group milestones for check_mode test
|
||||
gitlab_milestone:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
|
||||
- name: Group milestone - Add a milestone in check_mode
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
check_mode: true
|
||||
register: gitlab_group_milestone_state
|
||||
- name: Group milestone - Add a milestone in check_mode
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
check_mode: true
|
||||
register: gitlab_group_milestone_state
|
||||
|
||||
- name: Group milestone - Check_mode state must be changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_state is changed
|
||||
- name: Group milestone - Check_mode state must be changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_state is changed
|
||||
|
||||
- name: Purge all group milestones for project milestone test - cannot exist with same name
|
||||
gitlab_milestone:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
register: gitlab_group_milestone_purged
|
||||
- name: Purge all group milestones for project milestone test - cannot exist with same name
|
||||
gitlab_milestone:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
register: gitlab_group_milestone_purged
|
||||
|
||||
- name: Group milestone - Create milestone {{ gitlab_first_milestone }} and {{ gitlab_second_milestone }}
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_due_date }}"
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_create
|
||||
- name: Group milestone - Create milestone {{ gitlab_first_milestone }} and {{ gitlab_second_milestone }}
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_due_date }}"
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_create
|
||||
|
||||
- name: Group milestone - Test milestone Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_create is changed
|
||||
- gitlab_group_milestone_create.milestones.added|length == 2
|
||||
- gitlab_group_milestone_create.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_create.milestones.removed|length == 0
|
||||
- gitlab_group_milestone_create.milestones.updated|length == 0
|
||||
- gitlab_group_milestone_create.milestones.added[0] == "{{ gitlab_first_milestone }}"
|
||||
- gitlab_group_milestone_create.milestones.added[1] == "{{ gitlab_second_milestone }}"
|
||||
- name: Group milestone - Test milestone Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_create is changed
|
||||
- gitlab_group_milestone_create.milestones.added|length == 2
|
||||
- gitlab_group_milestone_create.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_create.milestones.removed|length == 0
|
||||
- gitlab_group_milestone_create.milestones.updated|length == 0
|
||||
- gitlab_group_milestone_create.milestones.added[0] == "{{ gitlab_first_milestone }}"
|
||||
- gitlab_group_milestone_create.milestones.added[1] == "{{ gitlab_second_milestone }}"
|
||||
|
||||
- name: Group milestone - Create milestone ( Idempotency test )
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_due_date }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_create_idempotence
|
||||
- name: Group milestone - Create milestone ( Idempotency test )
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_due_date }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_create_idempotence
|
||||
|
||||
- name: Group milestone - Test Create milestone is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_create_idempotence is not changed
|
||||
- name: Group milestone - Test Create milestone is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_create_idempotence is not changed
|
||||
|
||||
- name: Group milestone - Update milestone {{ gitlab_first_milestone }} changing dates
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_new_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_new_due_date }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_update
|
||||
- name: Group milestone - Update milestone {{ gitlab_first_milestone }} changing dates
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_new_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_new_due_date }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_update
|
||||
|
||||
- name: Group milestone - Test milestone Updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_update.milestones.added|length == 0
|
||||
- gitlab_group_milestone_update.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_update.milestones.removed|length == 0
|
||||
- gitlab_group_milestone_update.milestones.updated|length == 1
|
||||
- gitlab_group_milestone_update.milestones.updated[0] == "{{ gitlab_first_milestone }}"
|
||||
- name: Group milestone - Test milestone Updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_update.milestones.added|length == 0
|
||||
- gitlab_group_milestone_update.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_update.milestones.removed|length == 0
|
||||
- gitlab_group_milestone_update.milestones.updated|length == 1
|
||||
- gitlab_group_milestone_update.milestones.updated[0] == "{{ gitlab_first_milestone }}"
|
||||
|
||||
- name: Group milestone - Update milestone Test ( Additions )
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
description: "{{ gitlab_first_milestone_description }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_update_additions
|
||||
- name: Group milestone - Update milestone Test ( Additions )
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
description: "{{ gitlab_first_milestone_description }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_update_additions
|
||||
|
||||
- name: Group milestone - Test milestone Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_update_additions.milestones.added|length == 0
|
||||
- gitlab_group_milestone_update_additions.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_update_additions.milestones.removed|length == 0
|
||||
- gitlab_group_milestone_update_additions.milestones.updated|length == 1
|
||||
- gitlab_group_milestone_update_additions.milestones.updated[0] == "{{ gitlab_second_milestone }}"
|
||||
- name: Group milestone - Test milestone Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_update_additions.milestones.added|length == 0
|
||||
- gitlab_group_milestone_update_additions.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_update_additions.milestones.removed|length == 0
|
||||
- gitlab_group_milestone_update_additions.milestones.updated|length == 1
|
||||
- gitlab_group_milestone_update_additions.milestones.updated[0] == "{{ gitlab_second_milestone }}"
|
||||
|
||||
- name: Group milestone - Delete milestone {{ gitlab_second_milestone }}
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: absent
|
||||
register: gitlab_group_milestone_delete
|
||||
- name: Group milestone - Delete milestone {{ gitlab_second_milestone }}
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: absent
|
||||
register: gitlab_group_milestone_delete
|
||||
|
||||
- name: Group milestone - Test milestone is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_delete is changed
|
||||
- gitlab_group_milestone_delete.milestones.added|length == 0
|
||||
- gitlab_group_milestone_delete.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_delete.milestones.removed|length == 1
|
||||
- gitlab_group_milestone_delete.milestones.updated|length == 0
|
||||
- gitlab_group_milestone_delete.milestones.removed[0] == "{{ gitlab_second_milestone }}"
|
||||
- name: Group milestone - Test milestone is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_delete is changed
|
||||
- gitlab_group_milestone_delete.milestones.added|length == 0
|
||||
- gitlab_group_milestone_delete.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_delete.milestones.removed|length == 1
|
||||
- gitlab_group_milestone_delete.milestones.updated|length == 0
|
||||
- gitlab_group_milestone_delete.milestones.removed[0] == "{{ gitlab_second_milestone }}"
|
||||
|
||||
- name: Group milestone - Create group milestone {{ gitlab_second_milestone }} again purging the other
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_create_purging
|
||||
- name: Group milestone - Create group milestone {{ gitlab_second_milestone }} again purging the other
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: present
|
||||
register: gitlab_group_milestone_create_purging
|
||||
|
||||
- name: Group milestone - Test milestone Created again
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_create_purging is changed
|
||||
- gitlab_group_milestone_create_purging.milestones.added|length == 1
|
||||
- gitlab_group_milestone_create_purging.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_create_purging.milestones.removed|length == 1
|
||||
- gitlab_group_milestone_create_purging.milestones.updated|length == 0
|
||||
- gitlab_group_milestone_create_purging.milestones.added[0] == "{{ gitlab_second_milestone }}"
|
||||
- gitlab_group_milestone_create_purging.milestones.removed[0] == "{{ gitlab_first_milestone }}"
|
||||
- name: Group milestone - Test milestone Created again
|
||||
assert:
|
||||
that:
|
||||
- gitlab_group_milestone_create_purging is changed
|
||||
- gitlab_group_milestone_create_purging.milestones.added|length == 1
|
||||
- gitlab_group_milestone_create_purging.milestones.untouched|length == 0
|
||||
- gitlab_group_milestone_create_purging.milestones.removed|length == 1
|
||||
- gitlab_group_milestone_create_purging.milestones.updated|length == 0
|
||||
- gitlab_group_milestone_create_purging.milestones.added[0] == "{{ gitlab_second_milestone }}"
|
||||
- gitlab_group_milestone_create_purging.milestones.removed[0] == "{{ gitlab_first_milestone }}"
|
||||
|
||||
###
|
||||
### Project milestone
|
||||
###
|
||||
- name: Purge all group milestones for project milestone test - cannot exist with same name
|
||||
gitlab_milestone:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
register: gitlab_group_milestone_purged
|
||||
###
|
||||
### Project milestone
|
||||
###
|
||||
- name: Purge all group milestones for project milestone test - cannot exist with same name
|
||||
gitlab_milestone:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
purge: true
|
||||
register: gitlab_group_milestone_purged
|
||||
|
||||
- name: Create {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
default_branch: "{{ gitlab_branch }}"
|
||||
initialize_with_readme: true
|
||||
state: present
|
||||
- name: Create {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
default_branch: "{{ gitlab_branch }}"
|
||||
initialize_with_readme: true
|
||||
state: present
|
||||
|
||||
- name: Purge all milestones for check_mode test
|
||||
gitlab_milestone:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
- name: Purge all milestones for check_mode test
|
||||
gitlab_milestone:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
|
||||
- name: Add a milestone in check_mode
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
description: "{{ gitlab_second_milestone_description }}"
|
||||
check_mode: true
|
||||
register: gitlab_first_milestone_state
|
||||
- name: Add a milestone in check_mode
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
description: "{{ gitlab_second_milestone_description }}"
|
||||
check_mode: true
|
||||
register: gitlab_first_milestone_state
|
||||
|
||||
- name: Check_mode state must be changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_state is changed
|
||||
- name: Check_mode state must be changed
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_state is changed
|
||||
|
||||
- name: Create milestone {{ gitlab_first_milestone }} and {{ gitlab_second_milestone }}
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_due_date }}"
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: present
|
||||
register: gitlab_milestones_create
|
||||
- name: Create milestone {{ gitlab_first_milestone }} and {{ gitlab_second_milestone }}
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_due_date }}"
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: present
|
||||
register: gitlab_milestones_create
|
||||
|
||||
- name: Test milestone Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_milestones_create is changed
|
||||
- gitlab_milestones_create.milestones.added|length == 2
|
||||
- gitlab_milestones_create.milestones.untouched|length == 0
|
||||
- gitlab_milestones_create.milestones.removed|length == 0
|
||||
- gitlab_milestones_create.milestones.updated|length == 0
|
||||
- gitlab_milestones_create.milestones.added[0] == "{{ gitlab_first_milestone }}"
|
||||
- gitlab_milestones_create.milestones.added[1] == "{{ gitlab_second_milestone }}"
|
||||
- name: Test milestone Created
|
||||
assert:
|
||||
that:
|
||||
- gitlab_milestones_create is changed
|
||||
- gitlab_milestones_create.milestones.added|length == 2
|
||||
- gitlab_milestones_create.milestones.untouched|length == 0
|
||||
- gitlab_milestones_create.milestones.removed|length == 0
|
||||
- gitlab_milestones_create.milestones.updated|length == 0
|
||||
- gitlab_milestones_create.milestones.added[0] == "{{ gitlab_first_milestone }}"
|
||||
- gitlab_milestones_create.milestones.added[1] == "{{ gitlab_second_milestone }}"
|
||||
|
||||
- name: Create milestone ( Idempotency test )
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_due_date }}"
|
||||
state: present
|
||||
register: gitlab_first_milestone_create_idempotence
|
||||
- name: Create milestone ( Idempotency test )
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_due_date }}"
|
||||
state: present
|
||||
register: gitlab_first_milestone_create_idempotence
|
||||
|
||||
- name: Test Create milestone is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_create_idempotence is not changed
|
||||
- name: Test Create milestone is Idempotent
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_create_idempotence is not changed
|
||||
|
||||
- name: Update milestone {{ gitlab_first_milestone }} changing dates
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_new_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_new_due_date }}"
|
||||
state: present
|
||||
register: gitlab_first_milestone_update
|
||||
- name: Update milestone {{ gitlab_first_milestone }} changing dates
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
start_date: "{{ gitlab_first_milestone_new_start_date }}"
|
||||
due_date: "{{ gitlab_first_milestone_new_due_date }}"
|
||||
state: present
|
||||
register: gitlab_first_milestone_update
|
||||
|
||||
- name: Test milestone Updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_update.milestones.added|length == 0
|
||||
- gitlab_first_milestone_update.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_update.milestones.removed|length == 0
|
||||
- gitlab_first_milestone_update.milestones.updated|length == 1
|
||||
- gitlab_first_milestone_update.milestones.updated[0] == "{{ gitlab_first_milestone }}"
|
||||
- name: Test milestone Updated
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_update.milestones.added|length == 0
|
||||
- gitlab_first_milestone_update.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_update.milestones.removed|length == 0
|
||||
- gitlab_first_milestone_update.milestones.updated|length == 1
|
||||
- gitlab_first_milestone_update.milestones.updated[0] == "{{ gitlab_first_milestone }}"
|
||||
|
||||
- name: Update milestone Test ( Additions )
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
description: "{{ gitlab_second_milestone_description }}"
|
||||
state: present
|
||||
register: gitlab_first_milestone_update_additions
|
||||
- name: Update milestone Test ( Additions )
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
description: "{{ gitlab_second_milestone_description }}"
|
||||
state: present
|
||||
register: gitlab_first_milestone_update_additions
|
||||
|
||||
- name: Test milestone Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_update_additions.milestones.added|length == 0
|
||||
- gitlab_first_milestone_update_additions.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_update_additions.milestones.removed|length == 0
|
||||
- gitlab_first_milestone_update_additions.milestones.updated|length == 1
|
||||
- gitlab_first_milestone_update_additions.milestones.updated[0] == "{{ gitlab_second_milestone }}"
|
||||
- name: Test milestone Updated ( Additions )
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_update_additions.milestones.added|length == 0
|
||||
- gitlab_first_milestone_update_additions.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_update_additions.milestones.removed|length == 0
|
||||
- gitlab_first_milestone_update_additions.milestones.updated|length == 1
|
||||
- gitlab_first_milestone_update_additions.milestones.updated[0] == "{{ gitlab_second_milestone }}"
|
||||
|
||||
- name: Delete milestone {{ gitlab_second_milestone }}
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: absent
|
||||
register: gitlab_first_milestone_delete
|
||||
- name: Delete milestone {{ gitlab_second_milestone }}
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: absent
|
||||
register: gitlab_first_milestone_delete
|
||||
|
||||
- name: Test milestone is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_delete is changed
|
||||
- gitlab_first_milestone_delete.milestones.added|length == 0
|
||||
- gitlab_first_milestone_delete.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_delete.milestones.removed|length == 1
|
||||
- gitlab_first_milestone_delete.milestones.updated|length == 0
|
||||
- gitlab_first_milestone_delete.milestones.removed[0] == "{{ gitlab_second_milestone }}"
|
||||
- name: Test milestone is deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_delete is changed
|
||||
- gitlab_first_milestone_delete.milestones.added|length == 0
|
||||
- gitlab_first_milestone_delete.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_delete.milestones.removed|length == 1
|
||||
- gitlab_first_milestone_delete.milestones.updated|length == 0
|
||||
- gitlab_first_milestone_delete.milestones.removed[0] == "{{ gitlab_second_milestone }}"
|
||||
|
||||
- name: Create milestone {{ gitlab_second_milestone }} again purging the other
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: present
|
||||
register: gitlab_first_milestone_create_purging
|
||||
- name: Create milestone {{ gitlab_second_milestone }} again purging the other
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
milestones:
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: present
|
||||
register: gitlab_first_milestone_create_purging
|
||||
|
||||
- name: Test milestone Created again
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_create_purging is changed
|
||||
- gitlab_first_milestone_create_purging.milestones.added|length == 1
|
||||
- gitlab_first_milestone_create_purging.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_create_purging.milestones.removed|length == 1
|
||||
- gitlab_first_milestone_create_purging.milestones.updated|length == 0
|
||||
- gitlab_first_milestone_create_purging.milestones.added[0] == "{{ gitlab_second_milestone }}"
|
||||
- gitlab_first_milestone_create_purging.milestones.removed[0] == "{{ gitlab_first_milestone }}"
|
||||
- name: Test milestone Created again
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_create_purging is changed
|
||||
- gitlab_first_milestone_create_purging.milestones.added|length == 1
|
||||
- gitlab_first_milestone_create_purging.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_create_purging.milestones.removed|length == 1
|
||||
- gitlab_first_milestone_create_purging.milestones.updated|length == 0
|
||||
- gitlab_first_milestone_create_purging.milestones.added[0] == "{{ gitlab_second_milestone }}"
|
||||
- gitlab_first_milestone_create_purging.milestones.removed[0] == "{{ gitlab_first_milestone }}"
|
||||
|
||||
always:
|
||||
- name: Delete milestones
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: absent
|
||||
register: gitlab_first_milestone_always_delete
|
||||
- name: Delete milestones
|
||||
gitlab_milestone:
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
api_url: "{{ gitlab_host }}"
|
||||
project: "{{ gitlab_project_group }}/{{ gitlab_project_name }}"
|
||||
purge: true
|
||||
milestones:
|
||||
- title: "{{ gitlab_first_milestone }}"
|
||||
- title: "{{ gitlab_second_milestone }}"
|
||||
state: absent
|
||||
register: gitlab_first_milestone_always_delete
|
||||
|
||||
- name: Test milestone are deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_always_delete is changed
|
||||
- gitlab_first_milestone_always_delete.milestones.added|length == 0
|
||||
- gitlab_first_milestone_always_delete.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_always_delete.milestones.removed|length > 0
|
||||
- gitlab_first_milestone_always_delete.milestones.updated|length == 0
|
||||
- name: Test milestone are deleted
|
||||
assert:
|
||||
that:
|
||||
- gitlab_first_milestone_always_delete is changed
|
||||
- gitlab_first_milestone_always_delete.milestones.added|length == 0
|
||||
- gitlab_first_milestone_always_delete.milestones.untouched|length == 0
|
||||
- gitlab_first_milestone_always_delete.milestones.removed|length > 0
|
||||
- gitlab_first_milestone_always_delete.milestones.updated|length == 0
|
||||
|
||||
- name: Clean up {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: false
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
- name: Clean up {{ gitlab_project_name }}
|
||||
gitlab_project:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: false
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_name }}"
|
||||
group: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
|
||||
- name: Clean up {{ gitlab_project_group }}
|
||||
gitlab_group:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_group }}"
|
||||
state: absent
|
||||
- name: Clean up {{ gitlab_project_group }}
|
||||
gitlab_group:
|
||||
api_url: "{{ gitlab_host }}"
|
||||
validate_certs: true
|
||||
api_token: "{{ gitlab_api_token }}"
|
||||
name: "{{ gitlab_project_group }}"
|
||||
state: absent
|
|
@ -25,8 +25,8 @@
|
|||
expires_at: '2025-01-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: create_pfail_token_status
|
||||
always:
|
||||
- name: Assert that token creation in nonexisting project failed
|
||||
|
@ -47,8 +47,8 @@
|
|||
expires_at: '2025-13-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: create_efail_token_status
|
||||
always:
|
||||
- name: Assert that token creation with invalid expires_at failed
|
||||
|
@ -68,8 +68,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: create_token_status
|
||||
- name: Assert that token creation with valid arguments is successfull
|
||||
assert:
|
||||
|
@ -88,8 +88,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: check_token_status
|
||||
- name: Assert that token creation without changes and recreate=never succeeds with status not changed
|
||||
assert:
|
||||
|
@ -108,8 +108,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
recreate: state_change
|
||||
register: check_recreate_token_status
|
||||
- name: Assert that token creation without changes and recreate=state_change succeeds with status not changed
|
||||
|
@ -130,8 +130,8 @@
|
|||
expires_at: '2025-01-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: change_token_status
|
||||
always:
|
||||
- name: Assert that token change with recreate=never fails
|
||||
|
@ -151,8 +151,8 @@
|
|||
expires_at: '2025-01-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
recreate: state_change
|
||||
register: change_recreate_token_status
|
||||
- name: Assert that token change with recreate=state_change succeeds
|
||||
|
@ -172,8 +172,8 @@
|
|||
expires_at: '2025-01-01'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
recreate: always
|
||||
register: change_recreate1_token_status
|
||||
- name: Assert that token change with recreate=always succeeds
|
||||
|
@ -193,8 +193,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: revoke_token_status
|
||||
- name: Assert that token revocation succeeds
|
||||
assert:
|
||||
|
@ -212,8 +212,8 @@
|
|||
expires_at: '2024-12-31'
|
||||
access_level: developer
|
||||
scopes:
|
||||
- api
|
||||
- read_api
|
||||
- api
|
||||
- read_api
|
||||
register: revoke_token_status
|
||||
- name: Assert that token revocation succeeds with status not changed
|
||||
assert:
|
||||
|
|
|
@ -479,7 +479,7 @@
|
|||
- gitlab_project_variable_state.project_variable.removed|length == 0
|
||||
- gitlab_project_variable_state.project_variable.updated|length == 0
|
||||
# VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
|
||||
#- gitlab_project_variable_state.project_variable.added[0] == "my_test_var"
|
||||
# - gitlab_project_variable_state.project_variable.added[0] == "my_test_var"
|
||||
|
||||
- name: change variable_type attribute
|
||||
gitlab_project_variable:
|
||||
|
|
|
@ -22,16 +22,16 @@
|
|||
when: (ansible_distribution == "Ubuntu" and ansible_distribution_version == "14.04") or ansible_python_version is version("2.7.9", "<")
|
||||
|
||||
- block:
|
||||
- name: install mercurial
|
||||
include_tasks: install.yml
|
||||
when: has_hg is failed
|
||||
- name: install mercurial
|
||||
include_tasks: install.yml
|
||||
when: has_hg is failed
|
||||
|
||||
- name: test mercurial
|
||||
include_tasks: run-tests.yml
|
||||
- name: test mercurial
|
||||
include_tasks: run-tests.yml
|
||||
|
||||
- name: uninstall mercurial
|
||||
include_tasks: uninstall.yml
|
||||
when: has_hg is failed
|
||||
- name: uninstall mercurial
|
||||
include_tasks: uninstall.yml
|
||||
when: has_hg is failed
|
||||
|
||||
# As per the bitbucket changes in https://bitbucket.org/blog/deprecating-tlsv1-tlsv1-1-2018-12-01 , this
|
||||
# test will fail under certain circumstances, to avoid false positives, we skip these tests under the following
|
||||
|
@ -41,5 +41,5 @@
|
|||
# - When ansible_python_version is not 2.7.9 or higher, mercurial is likely to also run using this same (old)
|
||||
# python version, which causes issues as per the link above.
|
||||
when:
|
||||
- not (ansible_distribution == "Ubuntu" and ansible_distribution_version == "14.04")
|
||||
- ansible_python_version is version("2.7.9", ">=")
|
||||
- not (ansible_distribution == "Ubuntu" and ansible_distribution_version == "14.04")
|
||||
- ansible_python_version is version("2.7.9", ">=")
|
||||
|
|
|
@ -18,89 +18,89 @@
|
|||
path: "{{ brew_which.stdout }}"
|
||||
register: brew_stat
|
||||
|
||||
#- name: Use ignored-pinned option while upgrading all
|
||||
# homebrew:
|
||||
# upgrade_all: true
|
||||
# upgrade_options: ignore-pinned
|
||||
# become: true
|
||||
# become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
# register: upgrade_option_result
|
||||
# environment:
|
||||
# HOMEBREW_NO_AUTO_UPDATE: True
|
||||
# - name: Use ignored-pinned option while upgrading all
|
||||
# homebrew:
|
||||
# upgrade_all: true
|
||||
# upgrade_options: ignore-pinned
|
||||
# become: true
|
||||
# become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
# register: upgrade_option_result
|
||||
# environment:
|
||||
# HOMEBREW_NO_AUTO_UPDATE: True
|
||||
|
||||
#- assert:
|
||||
# that:
|
||||
# - upgrade_option_result.changed
|
||||
# - assert:
|
||||
# that:
|
||||
# - upgrade_option_result.changed
|
||||
|
||||
- vars:
|
||||
package_name: kitty
|
||||
|
||||
block:
|
||||
- name: Make sure {{ package_name }} package is not installed
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Make sure {{ package_name }} package is not installed
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- name: Install {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: present
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Install {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: present
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
|
||||
- name: Again install {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: present
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Again install {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: present
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
|
||||
- name: Uninstall {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Uninstall {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
|
||||
- name: Again uninstall {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Again uninstall {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
|
||||
# This crashed on 4867eb4 - Ref: issue #9777
|
||||
- name: Install cask using homelab/cask syntax
|
||||
homebrew:
|
||||
package: "homebrew/cask/{{ package_name }}"
|
||||
state: present
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
# This crashed on 4867eb4 - Ref: issue #9777
|
||||
- name: Install cask using homelab/cask syntax
|
||||
homebrew:
|
||||
package: "homebrew/cask/{{ package_name }}"
|
||||
state: present
|
||||
update_homebrew: false
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
@ -18,150 +18,150 @@
|
|||
path: "{{ brew_which.stdout }}"
|
||||
register: brew_stat
|
||||
|
||||
#- name: Use ignored-pinned option while upgrading all
|
||||
# homebrew:
|
||||
# upgrade_all: true
|
||||
# upgrade_options: ignore-pinned
|
||||
# become: true
|
||||
# become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
# register: upgrade_option_result
|
||||
# environment:
|
||||
# HOMEBREW_NO_AUTO_UPDATE: True
|
||||
# - name: Use ignored-pinned option while upgrading all
|
||||
# homebrew:
|
||||
# upgrade_all: true
|
||||
# upgrade_options: ignore-pinned
|
||||
# become: true
|
||||
# become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
# register: upgrade_option_result
|
||||
# environment:
|
||||
# HOMEBREW_NO_AUTO_UPDATE: True
|
||||
|
||||
#- assert:
|
||||
# that:
|
||||
# - upgrade_option_result.changed
|
||||
# - assert:
|
||||
# that:
|
||||
# - upgrade_option_result.changed
|
||||
|
||||
- vars:
|
||||
package_name: gnu-tar
|
||||
|
||||
block:
|
||||
- name: Make sure {{ package_name }} package is not installed
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Make sure {{ package_name }} package is not installed
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- name: Install {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Install {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package installed: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package installed: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Again install {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Again install {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Package already installed: gnu-tar'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs == ['gnu-tar']"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Package already installed: gnu-tar'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs == ['gnu-tar']"
|
||||
|
||||
- name: Unlink {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: unlinked
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Unlink {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: unlinked
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package unlinked: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package unlinked: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Link {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: linked
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Link {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: linked
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package linked: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package linked: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Uninstall {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Uninstall {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package uninstalled: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package uninstalled: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Again uninstall {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Again uninstall {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Package already uninstalled: gnu-tar'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs == ['gnu-tar']"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Package already uninstalled: gnu-tar'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs == ['gnu-tar']"
|
||||
|
||||
- name: Upgrade {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: latest
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Upgrade {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: latest
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package upgraded: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Package upgraded: gnu-tar'"
|
||||
- "package_result.changed_pkgs == ['gnu-tar']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Again upgrade {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: latest
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Again upgrade {{ package_name }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_name }}"
|
||||
state: latest
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Package already upgraded: gnu-tar'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs == ['gnu-tar']"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Package already upgraded: gnu-tar'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs == ['gnu-tar']"
|
||||
|
||||
- vars:
|
||||
package_names:
|
||||
|
@ -169,313 +169,313 @@
|
|||
- gnu-time
|
||||
|
||||
block:
|
||||
- name: Make sure {{ package_names }} packages are not installed
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Make sure {{ package_names }} packages are not installed
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- name: Install only {{ package_names[0] }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names[0] }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Install only {{ package_names[0] }} package using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names[0] }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- name: Install {{ package_names }} packages using homebrew (one is already installed)
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Install {{ package_names }} packages using homebrew (one is already installed)
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 1, Unchanged: 1'"
|
||||
- "package_result.changed_pkgs == ['gnu-time']"
|
||||
- "package_result.unchanged_pkgs == ['gnu-tar']"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 1, Unchanged: 1'"
|
||||
- "package_result.changed_pkgs == ['gnu-time']"
|
||||
- "package_result.unchanged_pkgs == ['gnu-tar']"
|
||||
|
||||
- name: Again install {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Again install {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Changed: 0, Unchanged: 2'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Changed: 0, Unchanged: 2'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
|
||||
- name: Unlink {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: unlinked
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Unlink {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: unlinked
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 2, Unchanged: 0'"
|
||||
- "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 2, Unchanged: 0'"
|
||||
- "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Link {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: linked
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Link {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: linked
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 2, Unchanged: 0'"
|
||||
- "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 2, Unchanged: 0'"
|
||||
- "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Uninstall {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Uninstall {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 2, Unchanged: 0'"
|
||||
- "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 2, Unchanged: 0'"
|
||||
- "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Again uninstall {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Again uninstall {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Changed: 0, Unchanged: 2'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Changed: 0, Unchanged: 2'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
|
||||
- name: Upgrade {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: latest
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Upgrade {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: latest
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 2, Unchanged: 0'"
|
||||
- "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is changed
|
||||
- "package_result.msg == 'Changed: 2, Unchanged: 0'"
|
||||
- "package_result.changed_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- "package_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Again upgrade {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: latest
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
- name: Again upgrade {{ package_names }} packages using homebrew
|
||||
homebrew:
|
||||
name: "{{ package_names }}"
|
||||
state: latest
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: package_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Changed: 0, Unchanged: 2'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
- assert:
|
||||
that:
|
||||
- package_result is not changed
|
||||
- "package_result.msg == 'Changed: 0, Unchanged: 2'"
|
||||
- "package_result.changed_pkgs == []"
|
||||
- "package_result.unchanged_pkgs | sort == ['gnu-tar', 'gnu-time']"
|
||||
|
||||
# Test alias handling with sqlite (that is aliased to sqlite3)
|
||||
- block:
|
||||
- name: Make sure sqlite package is not installed
|
||||
homebrew:
|
||||
name: "sqlite"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Make sure sqlite package is not installed
|
||||
homebrew:
|
||||
name: "sqlite"
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- name: Install sqlite package using alias (sqlite3)
|
||||
homebrew:
|
||||
name: "sqlite3"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: install_result
|
||||
- name: Install sqlite package using alias (sqlite3)
|
||||
homebrew:
|
||||
name: "sqlite3"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: install_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- install_result is changed
|
||||
- "install_result.msg == 'Package installed: sqlite3'"
|
||||
- "install_result.changed_pkgs == ['sqlite3']"
|
||||
- "install_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- install_result is changed
|
||||
- "install_result.msg == 'Package installed: sqlite3'"
|
||||
- "install_result.changed_pkgs == ['sqlite3']"
|
||||
- "install_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Again install sqlite package using alias (sqlite3)
|
||||
homebrew:
|
||||
name: "sqlite3"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: reinstall_result
|
||||
- name: Again install sqlite package using alias (sqlite3)
|
||||
homebrew:
|
||||
name: "sqlite3"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: reinstall_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- reinstall_result is not changed
|
||||
- "reinstall_result.msg == 'Package already installed: sqlite3'"
|
||||
- "reinstall_result.changed_pkgs == []"
|
||||
- "reinstall_result.unchanged_pkgs == ['sqlite3']"
|
||||
- assert:
|
||||
that:
|
||||
- reinstall_result is not changed
|
||||
- "reinstall_result.msg == 'Package already installed: sqlite3'"
|
||||
- "reinstall_result.changed_pkgs == []"
|
||||
- "reinstall_result.unchanged_pkgs == ['sqlite3']"
|
||||
|
||||
# Test install from homebrew tap
|
||||
- block:
|
||||
- name: Tap hashicorp repository
|
||||
community.general.homebrew_tap:
|
||||
name: hashicorp/tap
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Tap hashicorp repository
|
||||
community.general.homebrew_tap:
|
||||
name: hashicorp/tap
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- name: Install terraform from tap
|
||||
community.general.homebrew:
|
||||
name: hashicorp/tap/terraform
|
||||
state: latest
|
||||
register: terraform_install_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Install terraform from tap
|
||||
community.general.homebrew:
|
||||
name: hashicorp/tap/terraform
|
||||
state: latest
|
||||
register: terraform_install_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- terraform_install_result is changed
|
||||
- "terraform_install_result.msg == 'Package upgraded: hashicorp/tap/terraform'"
|
||||
- "terraform_install_result.changed_pkgs == ['hashicorp/tap/terraform']"
|
||||
- "terraform_install_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- terraform_install_result is changed
|
||||
- "terraform_install_result.msg == 'Package upgraded: hashicorp/tap/terraform'"
|
||||
- "terraform_install_result.changed_pkgs == ['hashicorp/tap/terraform']"
|
||||
- "terraform_install_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Remove terraform
|
||||
homebrew:
|
||||
name: hashicorp/tap/terraform
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Remove terraform
|
||||
homebrew:
|
||||
name: hashicorp/tap/terraform
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
# Test irregular formulae name case
|
||||
- block:
|
||||
- name: Install terraform from full tap name with irregular case
|
||||
community.general.homebrew:
|
||||
name: HasHicorp/TAp/tErRaForm
|
||||
state: latest
|
||||
register: terraform_install_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Install terraform from full tap name with irregular case
|
||||
community.general.homebrew:
|
||||
name: HasHicorp/TAp/tErRaForm
|
||||
state: latest
|
||||
register: terraform_install_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- terraform_install_result is changed
|
||||
- "terraform_install_result.msg == 'Package upgraded: hashicorp/tap/terraform'"
|
||||
- "terraform_install_result.changed_pkgs == ['hashicorp/tap/terraform']"
|
||||
- "terraform_install_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- terraform_install_result is changed
|
||||
- "terraform_install_result.msg == 'Package upgraded: hashicorp/tap/terraform'"
|
||||
- "terraform_install_result.changed_pkgs == ['hashicorp/tap/terraform']"
|
||||
- "terraform_install_result.unchanged_pkgs == []"
|
||||
|
||||
# Test tap with no public fallback
|
||||
- block:
|
||||
- name: Tap ascii-image-converter homebrew repository
|
||||
community.general.homebrew_tap:
|
||||
name: TheZoraiz/ascii-image-converter
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Tap ascii-image-converter homebrew repository
|
||||
community.general.homebrew_tap:
|
||||
name: TheZoraiz/ascii-image-converter
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- name: Install ascii from full tap name
|
||||
community.general.homebrew:
|
||||
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
||||
state: latest
|
||||
register: ascii_install_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Install ascii from full tap name
|
||||
community.general.homebrew:
|
||||
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
||||
state: latest
|
||||
register: ascii_install_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- ascii_install_result is changed
|
||||
- "ascii_install_result.msg == 'Package upgraded: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
||||
- "ascii_install_result.changed_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
||||
- "ascii_install_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- ascii_install_result is changed
|
||||
- "ascii_install_result.msg == 'Package upgraded: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
||||
- "ascii_install_result.changed_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
||||
- "ascii_install_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Again install ascii from full tap name
|
||||
community.general.homebrew:
|
||||
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
||||
state: latest
|
||||
register: ascii_reinstall_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Again install ascii from full tap name
|
||||
community.general.homebrew:
|
||||
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
||||
state: latest
|
||||
register: ascii_reinstall_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- ascii_reinstall_result is not changed
|
||||
- "ascii_reinstall_result.msg == 'Package already upgraded: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
||||
- "ascii_reinstall_result.changed_pkgs == []"
|
||||
- "ascii_reinstall_result.unchanged_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
||||
- assert:
|
||||
that:
|
||||
- ascii_reinstall_result is not changed
|
||||
- "ascii_reinstall_result.msg == 'Package already upgraded: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
||||
- "ascii_reinstall_result.changed_pkgs == []"
|
||||
- "ascii_reinstall_result.unchanged_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
||||
|
||||
- name: Remove ascii from full tap name
|
||||
homebrew:
|
||||
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
||||
state: absent
|
||||
register: ascii_uninstall_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Remove ascii from full tap name
|
||||
homebrew:
|
||||
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
||||
state: absent
|
||||
register: ascii_uninstall_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- ascii_uninstall_result is changed
|
||||
- "ascii_uninstall_result.msg == 'Package uninstalled: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
||||
- "ascii_uninstall_result.changed_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
||||
- "ascii_uninstall_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- ascii_uninstall_result is changed
|
||||
- "ascii_uninstall_result.msg == 'Package uninstalled: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
||||
- "ascii_uninstall_result.changed_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
||||
- "ascii_uninstall_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Again remove ascii from full tap name
|
||||
homebrew:
|
||||
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
||||
state: absent
|
||||
register: ascii_again_uninstall_result
|
||||
- name: Again remove ascii from full tap name
|
||||
homebrew:
|
||||
name: TheZoraiz/ascii-image-converter/ascii-image-converter
|
||||
state: absent
|
||||
register: ascii_again_uninstall_result
|
||||
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- ascii_again_uninstall_result is not changed
|
||||
- "ascii_again_uninstall_result.msg == 'Package already uninstalled: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
||||
- "ascii_again_uninstall_result.changed_pkgs == []"
|
||||
- "ascii_again_uninstall_result.unchanged_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
||||
- assert:
|
||||
that:
|
||||
- ascii_again_uninstall_result is not changed
|
||||
- "ascii_again_uninstall_result.msg == 'Package already uninstalled: thezoraiz/ascii-image-converter/ascii-image-converter'"
|
||||
- "ascii_again_uninstall_result.changed_pkgs == []"
|
||||
- "ascii_again_uninstall_result.unchanged_pkgs == ['thezoraiz/ascii-image-converter/ascii-image-converter']"
|
||||
|
||||
- name: Install ascii from regular name
|
||||
community.general.homebrew:
|
||||
name: ascii-image-converter
|
||||
state: latest
|
||||
register: ascii_install_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Install ascii from regular name
|
||||
community.general.homebrew:
|
||||
name: ascii-image-converter
|
||||
state: latest
|
||||
register: ascii_install_result
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- ascii_install_result is changed
|
||||
- "ascii_install_result.msg == 'Package upgraded: ascii-image-converter'"
|
||||
- "ascii_install_result.changed_pkgs == ['ascii-image-converter']"
|
||||
- "ascii_install_result.unchanged_pkgs == []"
|
||||
- assert:
|
||||
that:
|
||||
- ascii_install_result is changed
|
||||
- "ascii_install_result.msg == 'Package upgraded: ascii-image-converter'"
|
||||
- "ascii_install_result.changed_pkgs == ['ascii-image-converter']"
|
||||
- "ascii_install_result.unchanged_pkgs == []"
|
||||
|
||||
- name: Remove ascii from regular name
|
||||
homebrew:
|
||||
name: ascii-image-converter
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
- name: Remove ascii from regular name
|
||||
homebrew:
|
||||
name: ascii-image-converter
|
||||
state: absent
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
|
|
|
@ -9,65 +9,65 @@
|
|||
# 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: Find brew binary
|
||||
command: which brew
|
||||
register: brew_which
|
||||
when: ansible_distribution in ['MacOSX']
|
||||
- name: Find brew binary
|
||||
command: which brew
|
||||
register: brew_which
|
||||
when: ansible_distribution in ['MacOSX']
|
||||
|
||||
- name: Get owner of brew binary
|
||||
stat:
|
||||
path: "{{ brew_which.stdout }}"
|
||||
register: brew_stat
|
||||
when: ansible_distribution in ['MacOSX']
|
||||
- name: Get owner of brew binary
|
||||
stat:
|
||||
path: "{{ brew_which.stdout }}"
|
||||
register: brew_stat
|
||||
when: ansible_distribution in ['MacOSX']
|
||||
|
||||
- block:
|
||||
- name: Install cask
|
||||
homebrew_cask:
|
||||
name: "{{ cask }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: cask_install_result
|
||||
- block:
|
||||
- name: Install cask
|
||||
homebrew_cask:
|
||||
name: "{{ cask }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: cask_install_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- cask_install_result is changed
|
||||
- "'Cask installed' in cask_install_result.msg"
|
||||
- assert:
|
||||
that:
|
||||
- cask_install_result is changed
|
||||
- "'Cask installed' in cask_install_result.msg"
|
||||
|
||||
- name: Install cask (idempotence)
|
||||
homebrew_cask:
|
||||
name: "{{ cask }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: cask_install_result
|
||||
- name: Install cask (idempotence)
|
||||
homebrew_cask:
|
||||
name: "{{ cask }}"
|
||||
state: present
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: cask_install_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- cask_install_result is not changed
|
||||
- "'Cask installed' not in cask_install_result.msg"
|
||||
- "'Cask already installed' in cask_install_result.msg"
|
||||
- assert:
|
||||
that:
|
||||
- cask_install_result is not changed
|
||||
- "'Cask installed' not in cask_install_result.msg"
|
||||
- "'Cask already installed' in cask_install_result.msg"
|
||||
|
||||
- name: Install cask with force install option
|
||||
homebrew_cask:
|
||||
name: "{{ cask }}"
|
||||
state: present
|
||||
install_options: force
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: cask_install_result
|
||||
- name: Install cask with force install option
|
||||
homebrew_cask:
|
||||
name: "{{ cask }}"
|
||||
state: present
|
||||
install_options: force
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
register: cask_install_result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- cask_install_result is changed
|
||||
- "'Cask installed' in cask_install_result.msg"
|
||||
- assert:
|
||||
that:
|
||||
- cask_install_result is changed
|
||||
- "'Cask installed' in cask_install_result.msg"
|
||||
|
||||
always:
|
||||
- name: Delete cask
|
||||
homebrew_cask:
|
||||
name: "{{ cask }}"
|
||||
state: absent
|
||||
install_options: force
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
ignore_errors: true
|
||||
always:
|
||||
- name: Delete cask
|
||||
homebrew_cask:
|
||||
name: "{{ cask }}"
|
||||
state: absent
|
||||
install_options: force
|
||||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
ignore_errors: true
|
||||
|
|
|
@ -20,67 +20,67 @@
|
|||
become: true
|
||||
become_user: "{{ brew_stat.stat.pw_name }}"
|
||||
block:
|
||||
- name: MACOS | Install black
|
||||
community.general.homebrew:
|
||||
name: black
|
||||
state: present
|
||||
register: install_result
|
||||
notify:
|
||||
- uninstall black
|
||||
- name: MACOS | Install black
|
||||
community.general.homebrew:
|
||||
name: black
|
||||
state: present
|
||||
register: install_result
|
||||
notify:
|
||||
- uninstall black
|
||||
|
||||
- name: Check the black service is installed
|
||||
assert:
|
||||
that:
|
||||
- install_result is success
|
||||
- name: Check the black service is installed
|
||||
assert:
|
||||
that:
|
||||
- install_result is success
|
||||
|
||||
- name: Start the black service
|
||||
community.general.homebrew_services:
|
||||
name: black
|
||||
state: present
|
||||
register: start_result
|
||||
environment:
|
||||
HOMEBREW_NO_ENV_HINTS: "1"
|
||||
- name: Start the black service
|
||||
community.general.homebrew_services:
|
||||
name: black
|
||||
state: present
|
||||
register: start_result
|
||||
environment:
|
||||
HOMEBREW_NO_ENV_HINTS: "1"
|
||||
|
||||
- name: Check the black service is running
|
||||
assert:
|
||||
that:
|
||||
- start_result is success
|
||||
- name: Check the black service is running
|
||||
assert:
|
||||
that:
|
||||
- start_result is success
|
||||
|
||||
- name: Start the black service when already started
|
||||
community.general.homebrew_services:
|
||||
name: black
|
||||
state: present
|
||||
register: start_result
|
||||
environment:
|
||||
HOMEBREW_NO_ENV_HINTS: "1"
|
||||
- name: Start the black service when already started
|
||||
community.general.homebrew_services:
|
||||
name: black
|
||||
state: present
|
||||
register: start_result
|
||||
environment:
|
||||
HOMEBREW_NO_ENV_HINTS: "1"
|
||||
|
||||
- name: Check for idempotency
|
||||
assert:
|
||||
that:
|
||||
- start_result.changed == 0
|
||||
- name: Check for idempotency
|
||||
assert:
|
||||
that:
|
||||
- start_result.changed == 0
|
||||
|
||||
- name: Restart the black service
|
||||
community.general.homebrew_services:
|
||||
name: black
|
||||
state: restarted
|
||||
register: restart_result
|
||||
environment:
|
||||
HOMEBREW_NO_ENV_HINTS: "1"
|
||||
- name: Restart the black service
|
||||
community.general.homebrew_services:
|
||||
name: black
|
||||
state: restarted
|
||||
register: restart_result
|
||||
environment:
|
||||
HOMEBREW_NO_ENV_HINTS: "1"
|
||||
|
||||
- name: Check the black service is restarted
|
||||
assert:
|
||||
that:
|
||||
- restart_result is success
|
||||
- name: Check the black service is restarted
|
||||
assert:
|
||||
that:
|
||||
- restart_result is success
|
||||
|
||||
- name: Stop the black service
|
||||
community.general.homebrew_services:
|
||||
name: black
|
||||
state: present
|
||||
register: stop_result
|
||||
environment:
|
||||
HOMEBREW_NO_ENV_HINTS: "1"
|
||||
- name: Stop the black service
|
||||
community.general.homebrew_services:
|
||||
name: black
|
||||
state: present
|
||||
register: stop_result
|
||||
environment:
|
||||
HOMEBREW_NO_ENV_HINTS: "1"
|
||||
|
||||
- name: Check the black service is stopped
|
||||
assert:
|
||||
that:
|
||||
- stop_result is success
|
||||
- name: Check the black service is stopped
|
||||
assert:
|
||||
that:
|
||||
- stop_result is success
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
root_volume:
|
||||
volume_type: "SAS"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a instance (check mode)
|
||||
hwc_ecs_instance:
|
||||
data_volumes:
|
||||
|
@ -90,7 +90,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a instance
|
||||
hwc_ecs_instance:
|
||||
data_volumes:
|
||||
|
@ -117,7 +117,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a instance (idemponent)
|
||||
hwc_ecs_instance:
|
||||
data_volumes:
|
||||
|
@ -173,7 +173,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a instance (check mode)
|
||||
hwc_ecs_instance:
|
||||
data_volumes:
|
||||
|
@ -201,7 +201,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a instance
|
||||
hwc_ecs_instance:
|
||||
data_volumes:
|
||||
|
@ -228,7 +228,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a instance (idemponent)
|
||||
hwc_ecs_instance:
|
||||
data_volumes:
|
||||
|
@ -283,7 +283,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#---------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
# Post-test teardown
|
||||
- name: delete a disk
|
||||
hwc_evs_disk:
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
volume_type: "SATA"
|
||||
size: 10
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a disk
|
||||
hwc_evs_disk:
|
||||
availability_zone: "cn-north-1a"
|
||||
|
@ -56,7 +56,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a disk (check mode)
|
||||
hwc_evs_disk:
|
||||
availability_zone: "cn-north-1a"
|
||||
|
@ -70,7 +70,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a disk
|
||||
hwc_evs_disk:
|
||||
availability_zone: "cn-north-1a"
|
||||
|
|
|
@ -24,27 +24,27 @@
|
|||
# Pre-test setup
|
||||
- name: delete a vpc
|
||||
hwc_network_vpc:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: absent
|
||||
# ----------------------------------------------------------
|
||||
- name: create a vpc
|
||||
hwc_network_vpc:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: present
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: present
|
||||
register: result
|
||||
- name: assert changed is true
|
||||
assert:
|
||||
|
@ -53,33 +53,33 @@
|
|||
# ----------------------------------------------------------------------------
|
||||
- name: create a vpc that already exists
|
||||
hwc_network_vpc:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: present
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: present
|
||||
register: result
|
||||
- name: assert changed is false
|
||||
assert:
|
||||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a vpc
|
||||
hwc_network_vpc:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: absent
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: absent
|
||||
register: result
|
||||
- name: assert changed is true
|
||||
assert:
|
||||
|
@ -88,15 +88,15 @@
|
|||
# ----------------------------------------------------------------------------
|
||||
- name: delete a vpc that does not exist
|
||||
hwc_network_vpc:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: absent
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "vpc_1"
|
||||
cidr: "192.168.100.0/24"
|
||||
state: absent
|
||||
register: result
|
||||
- name: assert changed is false
|
||||
assert:
|
||||
|
|
|
@ -10,25 +10,25 @@
|
|||
|
||||
- name: delete a smn topic
|
||||
hwc_smn_topic:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: absent
|
||||
# ----------------------------------------------------------
|
||||
- name: create a smn topic
|
||||
hwc_smn_topic:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: present
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: present
|
||||
register: result
|
||||
- name: assert changed is true
|
||||
assert:
|
||||
|
@ -37,31 +37,31 @@
|
|||
# ----------------------------------------------------------------------------
|
||||
- name: create a smn topic that already exists
|
||||
hwc_smn_topic:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: present
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: present
|
||||
register: result
|
||||
- name: assert changed is false
|
||||
assert:
|
||||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a smn topic
|
||||
hwc_smn_topic:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: absent
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: absent
|
||||
register: result
|
||||
- name: assert changed is true
|
||||
assert:
|
||||
|
@ -70,14 +70,14 @@
|
|||
# ----------------------------------------------------------------------------
|
||||
- name: delete a smn topic that does not exist
|
||||
hwc_smn_topic:
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: absent
|
||||
identity_endpoint: "{{ identity_endpoint }}"
|
||||
user: "{{ user }}"
|
||||
password: "{{ password }}"
|
||||
domain: "{{ domain }}"
|
||||
project: "{{ project }}"
|
||||
region: "{{ region }}"
|
||||
name: "ansible_smn_topic_test"
|
||||
state: absent
|
||||
register: result
|
||||
- name: assert changed is false
|
||||
assert:
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
size: 1
|
||||
port_id: "{{ port.id }}"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a eip (check mode)
|
||||
hwc_vpc_eip:
|
||||
type: "5_bgp"
|
||||
|
@ -55,7 +55,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a eip
|
||||
hwc_vpc_eip:
|
||||
type: "5_bgp"
|
||||
|
@ -70,7 +70,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a eip (idemponent)
|
||||
hwc_vpc_eip:
|
||||
type: "5_bgp"
|
||||
|
@ -102,7 +102,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a eip (check mode)
|
||||
hwc_vpc_eip:
|
||||
type: "5_bgp"
|
||||
|
@ -118,7 +118,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a eip
|
||||
hwc_vpc_eip:
|
||||
type: "5_bgp"
|
||||
|
@ -133,7 +133,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a eip (idemponent)
|
||||
hwc_vpc_eip:
|
||||
type: "5_bgp"
|
||||
|
@ -165,7 +165,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#---------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
# Post-test teardown
|
||||
- name: delete a port
|
||||
hwc_vpc_port:
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
peering_vpc:
|
||||
vpc_id: "{{ vpc2.id }}"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a peering connect (check mode)
|
||||
hwc_vpc_peering_connect:
|
||||
local_vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -43,7 +43,7 @@
|
|||
that:
|
||||
- not result.id
|
||||
- result.changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a peering connect
|
||||
hwc_vpc_peering_connect:
|
||||
local_vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -56,7 +56,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a peering connect (idemponent)
|
||||
hwc_vpc_peering_connect:
|
||||
local_vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -84,7 +84,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a peering connect (check mode)
|
||||
hwc_vpc_peering_connect:
|
||||
local_vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -98,7 +98,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a peering connect
|
||||
hwc_vpc_peering_connect:
|
||||
local_vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -111,7 +111,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a peering connect (idemponent)
|
||||
hwc_vpc_peering_connect:
|
||||
local_vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -139,7 +139,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#---------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
# Post-test teardown
|
||||
- name: delete a vpc
|
||||
hwc_network_vpc:
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
subnet_id: "{{ subnet.id }}"
|
||||
ip_address: "192.168.100.33"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a port (check mode)
|
||||
hwc_vpc_port:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -41,7 +41,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a port
|
||||
hwc_vpc_port:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -52,7 +52,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a port (idemponent)
|
||||
hwc_vpc_port:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -75,7 +75,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a port (check mode)
|
||||
hwc_vpc_port:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -87,7 +87,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a port
|
||||
hwc_vpc_port:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -98,7 +98,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a port (idemponent)
|
||||
hwc_vpc_port:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -122,7 +122,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#---------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
# Post-test teardown
|
||||
- name: delete a subnet
|
||||
hwc_vpc_subnet:
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
subnet_id: "{{ subnet.id }}"
|
||||
ip_address: "192.168.100.33"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a private ip (check mode)
|
||||
hwc_vpc_private_ip:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -41,7 +41,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a private ip
|
||||
hwc_vpc_private_ip:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -52,7 +52,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a private ip (idemponent)
|
||||
hwc_vpc_private_ip:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -76,7 +76,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a private ip (check mode)
|
||||
hwc_vpc_private_ip:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -88,7 +88,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a private ip
|
||||
hwc_vpc_private_ip:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -99,7 +99,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a private ip (idemponent)
|
||||
hwc_vpc_private_ip:
|
||||
subnet_id: "{{ subnet.id }}"
|
||||
|
@ -123,7 +123,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#---------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
# Post-test teardown
|
||||
- name: delete a subnet
|
||||
hwc_vpc_subnet:
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
destination: "192.168.0.0/16"
|
||||
next_hop: "{{ connect.id }}"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a route (check mode)
|
||||
hwc_vpc_route:
|
||||
vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -49,7 +49,7 @@
|
|||
that:
|
||||
- not result.id
|
||||
- result.changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a route
|
||||
hwc_vpc_route:
|
||||
vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -87,7 +87,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a route (check mode)
|
||||
hwc_vpc_route:
|
||||
vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -95,7 +95,7 @@
|
|||
next_hop: "{{ connect.id }}"
|
||||
state: absent
|
||||
check_mode: true
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a route
|
||||
hwc_vpc_route:
|
||||
vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -107,7 +107,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a (idemponent)
|
||||
hwc_vpc_route:
|
||||
vpc_id: "{{ vpc1.id }}"
|
||||
|
@ -133,7 +133,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#---------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
# Post-test teardown
|
||||
- name: delete a peering connect
|
||||
hwc_vpc_peering_connect:
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
hwc_vpc_security_group:
|
||||
name: "ansible_network_security_group_test"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a security group (check mode)
|
||||
hwc_vpc_security_group:
|
||||
name: "ansible_network_security_group_test"
|
||||
|
@ -25,7 +25,7 @@
|
|||
that:
|
||||
- not result.id
|
||||
- result.changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a security group
|
||||
hwc_vpc_security_group:
|
||||
name: "ansible_network_security_group_test"
|
||||
|
@ -35,7 +35,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a security group (idemponent)
|
||||
hwc_vpc_security_group:
|
||||
name: "ansible_network_security_group_test"
|
||||
|
@ -57,7 +57,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a security group (check mode)
|
||||
hwc_vpc_security_group:
|
||||
name: "ansible_network_security_group_test"
|
||||
|
@ -68,7 +68,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a security group
|
||||
hwc_vpc_security_group:
|
||||
name: "ansible_network_security_group_test"
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
port_range_min: 22
|
||||
remote_ip_prefix: "0.0.0.0/0"
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a security group rule (check mode)
|
||||
hwc_vpc_security_group_rule:
|
||||
direction: "ingress"
|
||||
|
@ -42,7 +42,7 @@
|
|||
that:
|
||||
- not result.id
|
||||
- result.changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a security group rule
|
||||
hwc_vpc_security_group_rule:
|
||||
direction: "ingress"
|
||||
|
@ -58,7 +58,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: create a security group rule (idemponent)
|
||||
hwc_vpc_security_group_rule:
|
||||
direction: "ingress"
|
||||
|
@ -91,7 +91,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a security group rule (check mode)
|
||||
hwc_vpc_security_group_rule:
|
||||
direction: "ingress"
|
||||
|
@ -108,7 +108,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a security group rule
|
||||
hwc_vpc_security_group_rule:
|
||||
direction: "ingress"
|
||||
|
@ -124,7 +124,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ----------------------------------------------------------
|
||||
- name: delete a security group rule (idemponent)
|
||||
hwc_vpc_security_group_rule:
|
||||
direction: "ingress"
|
||||
|
@ -157,7 +157,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#---------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
# Post-test teardown
|
||||
- name: delete a security group
|
||||
hwc_vpc_security_group:
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
name: "ansible_network_subnet_test"
|
||||
dhcp_enable: true
|
||||
state: absent
|
||||
#----------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
- name: create a subnet (check mode)
|
||||
hwc_vpc_subnet:
|
||||
vpc_id: "{{ vpc.id }}"
|
||||
|
@ -39,7 +39,7 @@
|
|||
that:
|
||||
- not result.id
|
||||
- result.changed
|
||||
#----------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
- name: create a subnet
|
||||
hwc_vpc_subnet:
|
||||
vpc_id: "{{ vpc.id }}"
|
||||
|
@ -53,7 +53,7 @@
|
|||
assert:
|
||||
that:
|
||||
result is changed
|
||||
#----------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
- name: create a subnet (idemponent)
|
||||
hwc_vpc_subnet:
|
||||
vpc_id: "{{ vpc.id }}"
|
||||
|
@ -83,7 +83,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#----------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
- name: delete a subnet (check mode)
|
||||
hwc_vpc_subnet:
|
||||
vpc_id: "{{ vpc.id }}"
|
||||
|
@ -98,7 +98,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
- name: delete a subnet
|
||||
hwc_vpc_subnet:
|
||||
vpc_id: "{{ vpc.id }}"
|
||||
|
@ -112,7 +112,7 @@
|
|||
assert:
|
||||
that:
|
||||
- result is changed
|
||||
#----------------------------------------------------------
|
||||
# ---------------------------------------------------------
|
||||
- name: delete a subnet (idemponent)
|
||||
hwc_vpc_subnet:
|
||||
vpc_id: "{{ vpc.id }}"
|
||||
|
@ -142,7 +142,7 @@
|
|||
that:
|
||||
- result is not failed
|
||||
- result is not changed
|
||||
#---------------------------------------------------------
|
||||
# --------------------------------------------------------
|
||||
# Post-test teardown
|
||||
- name: delete a vpc
|
||||
hwc_network_vpc:
|
||||
|
|
|
@ -4,21 +4,21 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- block: &prepare
|
||||
- name: Create the final file
|
||||
ansible.builtin.copy:
|
||||
content: |
|
||||
[main]
|
||||
foo=BAR
|
||||
dest: "{{ remote_tmp_dir }}/my_original_file.ini"
|
||||
- name: Clean up symlink.ini
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}/symlink.ini"
|
||||
state: absent
|
||||
- name: Create a symbolic link
|
||||
ansible.builtin.file:
|
||||
src: my_original_file.ini
|
||||
dest: "{{ remote_tmp_dir }}/symlink.ini"
|
||||
state: link
|
||||
- name: Create the final file
|
||||
ansible.builtin.copy:
|
||||
content: |
|
||||
[main]
|
||||
foo=BAR
|
||||
dest: "{{ remote_tmp_dir }}/my_original_file.ini"
|
||||
- name: Clean up symlink.ini
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}/symlink.ini"
|
||||
state: absent
|
||||
- name: Create a symbolic link
|
||||
ansible.builtin.file:
|
||||
src: my_original_file.ini
|
||||
dest: "{{ remote_tmp_dir }}/symlink.ini"
|
||||
state: link
|
||||
|
||||
- name: Set the proxy key on the symlink which will be converted as a file
|
||||
community.general.ini_file:
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
|
||||
- name: test-modify_inactive_option 2 - read content from output file
|
||||
slurp:
|
||||
src: "{{ output_file }}"
|
||||
src: "{{ output_file }}"
|
||||
register: output_content
|
||||
|
||||
- name: test-modify_inactive_option 2 - set expected content and get current ini file content
|
||||
|
@ -144,7 +144,7 @@
|
|||
|
||||
- name: test-modify_inactive_option 4 - read content from output file
|
||||
slurp:
|
||||
src: "{{ output_file }}"
|
||||
src: "{{ output_file }}"
|
||||
register: output_content
|
||||
|
||||
- name: test-modify_inactive_option 4 - set expected content and get current ini file content
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
- assert:
|
||||
that:
|
||||
- ifile_1 is changed
|
||||
- ifile_1 is changed
|
||||
|
||||
- name: Change IP address to 1.2.3.5 again
|
||||
community.general.interfaces_file:
|
||||
|
@ -36,7 +36,7 @@
|
|||
|
||||
- assert:
|
||||
that:
|
||||
- ifile_2 is not changed
|
||||
- ifile_2 is not changed
|
||||
|
||||
- name: 3841 - copy interfaces file
|
||||
copy:
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue