mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-03 06:53:21 -07:00
[PR #10413/3b09e9d9 backport][stable-11] pacemaker_resource: add cleanup state (#10750)
pacemaker_resource: add cleanup state (#10413)
* refactor(deprecate): Add cleanup deprecations for pacemaker_cluster
* Additional code review changes
* Add changelog fragment
(cherry picked from commit 3b09e9d9ed
)
Co-authored-by: Dexter <45038532+munchtoast@users.noreply.github.com>
This commit is contained in:
parent
ddc546596e
commit
22946365fc
3 changed files with 95 additions and 6 deletions
|
@ -0,0 +1,3 @@
|
||||||
|
minor_changes:
|
||||||
|
- pacemaker_resource - add ``state=cleanup`` for cleaning up pacemaker resources (https://github.com/ansible-collections/community.general/pull/10413)
|
||||||
|
- pacemaker_resource - the parameter ``name`` is no longer a required parameter in community.general 11.3.0 (https://github.com/ansible-collections/community.general/pull/10413)
|
|
@ -27,13 +27,14 @@ options:
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- Indicate desired state for cluster resource.
|
- Indicate desired state for cluster resource.
|
||||||
choices: [present, absent, enabled, disabled]
|
- The state V(cleanup) has been added in community.general 11.3.0.
|
||||||
|
choices: [present, absent, enabled, disabled, cleanup]
|
||||||
default: present
|
default: present
|
||||||
type: str
|
type: str
|
||||||
name:
|
name:
|
||||||
description:
|
description:
|
||||||
- Specify the resource name to create.
|
- Specify the resource name to create.
|
||||||
required: true
|
- This is required if O(state=present), O(state=absent), O(state=enabled), or O(state=disabled).
|
||||||
type: str
|
type: str
|
||||||
resource_type:
|
resource_type:
|
||||||
description:
|
description:
|
||||||
|
@ -141,8 +142,8 @@ class PacemakerResource(StateModuleHelper):
|
||||||
module = dict(
|
module = dict(
|
||||||
argument_spec=dict(
|
argument_spec=dict(
|
||||||
state=dict(type='str', default='present', choices=[
|
state=dict(type='str', default='present', choices=[
|
||||||
'present', 'absent', 'enabled', 'disabled']),
|
'present', 'absent', 'enabled', 'disabled', 'cleanup']),
|
||||||
name=dict(type='str', required=True),
|
name=dict(type='str'),
|
||||||
resource_type=dict(type='dict', options=dict(
|
resource_type=dict(type='dict', options=dict(
|
||||||
resource_name=dict(type='str'),
|
resource_name=dict(type='str'),
|
||||||
resource_standard=dict(type='str'),
|
resource_standard=dict(type='str'),
|
||||||
|
@ -160,7 +161,12 @@ class PacemakerResource(StateModuleHelper):
|
||||||
)),
|
)),
|
||||||
wait=dict(type='int', default=300),
|
wait=dict(type='int', default=300),
|
||||||
),
|
),
|
||||||
required_if=[('state', 'present', ['resource_type', 'resource_option'])],
|
required_if=[
|
||||||
|
('state', 'present', ['resource_type', 'resource_option', 'name']),
|
||||||
|
('state', 'absent', ['name']),
|
||||||
|
('state', 'enabled', ['name']),
|
||||||
|
('state', 'disabled', ['name']),
|
||||||
|
],
|
||||||
supports_check_mode=True,
|
supports_check_mode=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -208,6 +214,13 @@ class PacemakerResource(StateModuleHelper):
|
||||||
with self.runner('cli_action state name', output_process=self._process_command_output(True, "Stopped"), check_mode_skip=True) as ctx:
|
with self.runner('cli_action state name', output_process=self._process_command_output(True, "Stopped"), check_mode_skip=True) as ctx:
|
||||||
ctx.run(cli_action='resource')
|
ctx.run(cli_action='resource')
|
||||||
|
|
||||||
|
def state_cleanup(self):
|
||||||
|
runner_args = ['cli_action', 'state']
|
||||||
|
if self.module.params['name']:
|
||||||
|
runner_args.append('name')
|
||||||
|
with self.runner(runner_args, output_process=self._process_command_output(True, "Clean"), check_mode_skip=True) as ctx:
|
||||||
|
ctx.run(cli_action='resource')
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
PacemakerResource.execute()
|
PacemakerResource.execute()
|
||||||
|
|
|
@ -11,7 +11,7 @@ test_cases:
|
||||||
input: {}
|
input: {}
|
||||||
output:
|
output:
|
||||||
failed: true
|
failed: true
|
||||||
msg: "missing required arguments: name"
|
msg: "state is present but all of the following are missing: resource_type, name"
|
||||||
- id: test_present_minimal_input_resource_not_exist
|
- id: test_present_minimal_input_resource_not_exist
|
||||||
input:
|
input:
|
||||||
state: present
|
state: present
|
||||||
|
@ -423,3 +423,76 @@ test_cases:
|
||||||
rc: 0
|
rc: 0
|
||||||
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Stopped (disabled)"
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Stopped (disabled)"
|
||||||
err: ""
|
err: ""
|
||||||
|
- id: test_cleanup_minimal_input_initial_resources_not_exist
|
||||||
|
input:
|
||||||
|
state: cleanup
|
||||||
|
output:
|
||||||
|
changed: false
|
||||||
|
previous_value: "NO resources configured"
|
||||||
|
value: "NO resources configured"
|
||||||
|
mocks:
|
||||||
|
run_command:
|
||||||
|
- command: [/testbin/pcs, resource, status]
|
||||||
|
environ: *env-def
|
||||||
|
rc: 0
|
||||||
|
out: "NO resources configured"
|
||||||
|
err: ""
|
||||||
|
- command: [/testbin/pcs, resource, cleanup]
|
||||||
|
environ: *env-def
|
||||||
|
rc: 0
|
||||||
|
out: "Cleaned up all resources on all nodes"
|
||||||
|
err: ""
|
||||||
|
- command: [/testbin/pcs, resource, status]
|
||||||
|
environ: *env-def
|
||||||
|
rc: 0
|
||||||
|
out: "NO resources configured"
|
||||||
|
err: ""
|
||||||
|
- id: test_cleanup_minimal_input_initial_resources_exists
|
||||||
|
input:
|
||||||
|
state: cleanup
|
||||||
|
output:
|
||||||
|
changed: true
|
||||||
|
previous_value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
||||||
|
value: "NO resources configured"
|
||||||
|
mocks:
|
||||||
|
run_command:
|
||||||
|
- command: [/testbin/pcs, resource, status]
|
||||||
|
environ: *env-def
|
||||||
|
rc: 0
|
||||||
|
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
||||||
|
err: ""
|
||||||
|
- command: [/testbin/pcs, resource, cleanup]
|
||||||
|
environ: *env-def
|
||||||
|
rc: 0
|
||||||
|
out: "Cleaned up all resources on all nodes"
|
||||||
|
err: ""
|
||||||
|
- command: [/testbin/pcs, resource, status]
|
||||||
|
environ: *env-def
|
||||||
|
rc: 0
|
||||||
|
out: "NO resources configured"
|
||||||
|
err: ""
|
||||||
|
- id: test_cleanup_specific_minimal_input_initial_resources_exists
|
||||||
|
input:
|
||||||
|
state: cleanup
|
||||||
|
name: virtual-ip
|
||||||
|
output:
|
||||||
|
changed: true
|
||||||
|
previous_value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
|
||||||
|
value: "NO resources configured"
|
||||||
|
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, cleanup, virtual-ip]
|
||||||
|
environ: *env-def
|
||||||
|
rc: 0
|
||||||
|
out: "Cleaned up virtual-ip on X"
|
||||||
|
err: ""
|
||||||
|
- command: [/testbin/pcs, resource, status, virtual-ip]
|
||||||
|
environ: *env-def
|
||||||
|
rc: 0
|
||||||
|
out: "NO resources configured"
|
||||||
|
err: ""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue