mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-23 20:44:00 -07:00
Some checks are pending
EOL CI / EOL Sanity (Ⓐ2.16) (push) Waiting to run
EOL CI / EOL Units (Ⓐ2.16+py2.7) (push) Waiting to run
EOL CI / EOL Units (Ⓐ2.16+py3.11) (push) Waiting to run
EOL CI / EOL Units (Ⓐ2.16+py3.6) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/1/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/2/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+alpine3+py:azp/posix/3/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/1/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/2/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+fedora38+py:azp/posix/3/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/1/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/2/) (push) Waiting to run
EOL CI / EOL I (Ⓐ2.16+opensuse15+py:azp/posix/3/) (push) Waiting to run
nox / Run extra sanity tests (push) Waiting to run
* feat(initial): Add unit tests and rewrite pacemaker_cluster This commit introduces unit tests and pacemaker_cluster module rewrite to use the pacemaker module utils. * feat(cleanup): Various fixes and add resource state This commit migrates the pacemaker_cluster's cleanup state to the pacemaker_resource module. Additionally, the unit tests for pacemaker_cluster have been corrected to proper mock run command order. * doc(botmeta): Add author to pacemaker_cluster * style(whitespace): Cleanup test files * refactor(cleanup): Remove unused state value * bug(fix): Parse apply_all as separate option * refactor(review): Apply code review suggestions This commit refactors breaking changes in pacemaker_cluster module into deprecated features. The following will be scheduled for deprecation: `state: cleanup` and `state: None`. * Apply suggestions from code review Co-authored-by: Felix Fontein <felix@fontein.de> * refactor(review): Additional review suggestions * refactor(deprecations): Remove all deprecation changes * refactor(review): Enhance rename changelog entry and fix empty string logic * refactor(cleanup): Remove from pacemaker_resource * Apply suggestions from code review Co-authored-by: Felix Fontein <felix@fontein.de> * refactor(review): Add changelog and revert required name * revert(default): Use default state=present * Update changelogs/fragments/10227-pacemaker-cluster-and-resource-enhancement.yml Co-authored-by: Felix Fontein <felix@fontein.de> * Update changelog fragment. --------- Co-authored-by: Felix Fontein <felix@fontein.de>
383 lines
13 KiB
YAML
383 lines
13 KiB
YAML
# -*- coding: utf-8 -*-
|
|
# Copyright (c) Dexter Le (dextersydney2001@gmail.com)
|
|
# 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
|
|
|
|
---
|
|
anchors:
|
|
environ: &env-def {environ_update: {LANGUAGE: C, LC_ALL: C}, check_rc: false}
|
|
test_cases:
|
|
- id: test_missing_input
|
|
input: {}
|
|
output:
|
|
failed: true
|
|
msg: "missing required arguments: name"
|
|
- id: test_present_minimal_input_resource_not_exist
|
|
input:
|
|
state: present
|
|
name: virtual-ip
|
|
resource_type:
|
|
resource_name: IPaddr2
|
|
resource_option:
|
|
- "ip=[192.168.2.1]"
|
|
output:
|
|
changed: true
|
|
previous_value: null
|
|
value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: resource or tag id 'virtual-ip' not found"
|
|
- command: [/testbin/pcs, property, config]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: |
|
|
Cluster Properties: cib-bootstrap-options
|
|
cluster-infrastructure=corosync
|
|
cluster-name=hacluster
|
|
dc-version=2.1.9-1.fc41-7188dbf
|
|
have-watchdog=false
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, create, virtual-ip, IPaddr2, "ip=[192.168.2.1]", --wait=300]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: "Assumed agent name 'ocf:heartbeat:IPaddr2' (deduced from 'IPAddr2')"
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
err: ""
|
|
- id: test_present_filled_input_resource_not_exist
|
|
input:
|
|
state: present
|
|
name: virtual-ip
|
|
resource_type:
|
|
resource_name: IPaddr2
|
|
resource_option:
|
|
- "ip=[192.168.2.1]"
|
|
resource_operation:
|
|
- operation_action: start
|
|
operation_option:
|
|
- timeout=1200
|
|
- operation_action: stop
|
|
operation_option:
|
|
- timeout=1200
|
|
- operation_action: monitor
|
|
operation_option:
|
|
- timeout=1200
|
|
resource_meta:
|
|
- test_meta1=123
|
|
- test_meta2=456
|
|
resource_argument:
|
|
argument_action: group
|
|
argument_option:
|
|
- test_group
|
|
wait: 200
|
|
output:
|
|
changed: true
|
|
previous_value: null
|
|
value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: resource or tag id 'virtual-ip' not found"
|
|
- command: [/testbin/pcs, property, config]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: |
|
|
Cluster Properties: cib-bootstrap-options
|
|
cluster-infrastructure=corosync
|
|
cluster-name=hacluster
|
|
dc-version=2.1.9-1.fc41-7188dbf
|
|
have-watchdog=false
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, create, virtual-ip, IPaddr2, "ip=[192.168.2.1]", op, start, timeout=1200, op, stop, timeout=1200, op, monitor, timeout=1200, meta, test_meta1=123, meta, test_meta2=456, --group, test_group, --wait=200]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: "Assumed agent name 'ocf:heartbeat:IPaddr2' (deduced from 'IPAddr2')"
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
err: ""
|
|
- id: test_present_minimal_input_resource_exists
|
|
input:
|
|
state: present
|
|
name: virtual-ip
|
|
resource_type:
|
|
resource_name: IPaddr2
|
|
resource_option:
|
|
- "ip=[192.168.2.1]"
|
|
output:
|
|
changed: false
|
|
previous_value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
err: ""
|
|
- command: [/testbin/pcs, property, config]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: |
|
|
Cluster Properties: cib-bootstrap-options
|
|
cluster-infrastructure=corosync
|
|
cluster-name=hacluster
|
|
dc-version=2.1.9-1.fc41-7188dbf
|
|
have-watchdog=false
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, create, virtual-ip, IPaddr2, "ip=[192.168.2.1]", --wait=300]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: 'virtual-ip' already exists\n"
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
err: ""
|
|
- id: test_present_minimal_input_resource_maintenance_mode
|
|
input:
|
|
state: present
|
|
name: virtual-ip
|
|
resource_type:
|
|
resource_name: IPaddr2
|
|
resource_option:
|
|
- "ip=[192.168.2.1]"
|
|
output:
|
|
changed: true
|
|
previous_value: null
|
|
value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Stopped"
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: ""
|
|
- command: [/testbin/pcs, property, config]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: |
|
|
Cluster Properties: cib-bootstrap-options
|
|
cluster-infrastructure=corosync
|
|
cluster-name=hacluster
|
|
dc-version=2.1.9-1.fc41-7188dbf
|
|
have-watchdog=false
|
|
maintenance-mode=true
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, create, virtual-ip, IPaddr2, "ip=[192.168.2.1]", --wait=300]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: resource 'virtual-ip' is not running on any node"
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Stopped"
|
|
err: ""
|
|
- id: test_absent_minimal_input_resource_not_exist
|
|
input:
|
|
state: absent
|
|
name: virtual-ip
|
|
output:
|
|
changed: false
|
|
previous_value: null
|
|
value: null
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: resource or tag id 'virtual-ip' not found"
|
|
- command: [/testbin/pcs, property, config]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: |
|
|
Cluster Properties: cib-bootstrap-options
|
|
cluster-infrastructure=corosync
|
|
cluster-name=hacluster
|
|
dc-version=2.1.9-1.fc41-7188dbf
|
|
have-watchdog=false
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, remove, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: Resource 'virtual-ip' does not exist.\n"
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: resource or tag id 'virtual-ip' not found"
|
|
- id: test_absent_minimal_input_resource_exists
|
|
input:
|
|
state: absent
|
|
name: virtual-ip
|
|
output:
|
|
changed: true
|
|
previous_value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
value: null
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
err: ""
|
|
- command: [/testbin/pcs, property, config]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: |
|
|
Cluster Properties: cib-bootstrap-options
|
|
cluster-infrastructure=corosync
|
|
cluster-name=hacluster
|
|
dc-version=2.1.9-1.fc41-7188dbf
|
|
have-watchdog=false
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, remove, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: ""
|
|
err: "Attempting to stop: virtual-ip... Stopped\n"
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: resource or tag id 'virtual-ip' not found"
|
|
- id: test_absent_minimal_input_maintenance_mode
|
|
input:
|
|
state: absent
|
|
name: virtual-ip
|
|
output:
|
|
changed: true
|
|
previous_value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
value: null
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
err: ""
|
|
- command: [/testbin/pcs, property, config]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: |
|
|
Cluster Properties: cib-bootstrap-options
|
|
cluster-infrastructure=corosync
|
|
cluster-name=hacluster
|
|
dc-version=2.1.9-1.fc41-7188dbf
|
|
have-watchdog=false
|
|
maintenance-mode=true
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, remove, virtual-ip, --force]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: ""
|
|
err: "Deleting Resource (and group) - virtual-ip"
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: resource or tag id 'virtual-ip' not found"
|
|
- id: test_enabled_minimal_input_resource_not_exists
|
|
input:
|
|
state: enabled
|
|
name: virtual-ip
|
|
output:
|
|
failed: true
|
|
msg: "pcs failed with error (rc=1): bundle/clone/group/resource/tag 'virtual-ip' does not exist"
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: resource or tag id 'virtual-ip' not found"
|
|
- command: [/testbin/pcs, resource, enable, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "bundle/clone/group/resource/tag 'virtual-ip' does not exist"
|
|
- id: test_enabled_minimal_input_resource_exists
|
|
input:
|
|
state: enabled
|
|
name: virtual-ip
|
|
output:
|
|
changed: true
|
|
previous_value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Stopped (disabled)"
|
|
value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Starting"
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Stopped (disabled)"
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, enable, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: ""
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Starting"
|
|
err: ""
|
|
- id: test_disable_minimal_input_resource_not_exists
|
|
input:
|
|
state: disabled
|
|
name: virtual-ip
|
|
output:
|
|
failed: true
|
|
msg: "pcs failed with error (rc=1): bundle/clone/group/resource/tag 'virtual-ip' does not exist"
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "Error: resource or tag id 'virtual-ip' not found"
|
|
- command: [/testbin/pcs, resource, disable, virtual-ip]
|
|
environ: *env-def
|
|
rc: 1
|
|
out: ""
|
|
err: "bundle/clone/group/resource/tag 'virtual-ip' does not exist"
|
|
- id: test_disable_minimal_input_resource_exists
|
|
input:
|
|
state: disabled
|
|
name: virtual-ip
|
|
output:
|
|
changed: true
|
|
previous_value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Stopped (disabled)"
|
|
mocks:
|
|
run_command:
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, disable, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: ""
|
|
err: ""
|
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
|
environ: *env-def
|
|
rc: 0
|
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Stopped (disabled)"
|
|
err: ""
|