mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-09-10 07:01:06 -07:00
pacemaker_resource: add cleanup state (#10413)
* refactor(deprecate): Add cleanup deprecations for pacemaker_cluster * Additional code review changes * Add changelog fragment
This commit is contained in:
parent
6332175493
commit
3b09e9d9ed
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:
|
||||
description:
|
||||
- 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
|
||||
type: str
|
||||
name:
|
||||
description:
|
||||
- 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
|
||||
resource_type:
|
||||
description:
|
||||
|
@ -141,8 +142,8 @@ class PacemakerResource(StateModuleHelper):
|
|||
module = dict(
|
||||
argument_spec=dict(
|
||||
state=dict(type='str', default='present', choices=[
|
||||
'present', 'absent', 'enabled', 'disabled']),
|
||||
name=dict(type='str', required=True),
|
||||
'present', 'absent', 'enabled', 'disabled', 'cleanup']),
|
||||
name=dict(type='str'),
|
||||
resource_type=dict(type='dict', options=dict(
|
||||
resource_name=dict(type='str'),
|
||||
resource_standard=dict(type='str'),
|
||||
|
@ -160,7 +161,12 @@ class PacemakerResource(StateModuleHelper):
|
|||
)),
|
||||
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,
|
||||
)
|
||||
|
||||
|
@ -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:
|
||||
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():
|
||||
PacemakerResource.execute()
|
||||
|
|
|
@ -11,7 +11,7 @@ test_cases:
|
|||
input: {}
|
||||
output:
|
||||
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
|
||||
input:
|
||||
state: present
|
||||
|
@ -423,3 +423,76 @@ test_cases:
|
|||
rc: 0
|
||||
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Stopped (disabled)"
|
||||
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