Skip to content

ceph_config: add support for removing config options#29

Open
dagaaryan011 wants to merge 1 commit into
ceph:mainfrom
dagaaryan011:main
Open

ceph_config: add support for removing config options#29
dagaaryan011 wants to merge 1 commit into
ceph:mainfrom
dagaaryan011:main

Conversation

@dagaaryan011

Copy link
Copy Markdown

This PR adds support for removing Ceph configuration overrides via the
ceph_config Ansible module by introducing a new action: remove, which
invokes ceph config rm under the hood.

This allows users to explicitly delete existing configuration overrides
instead of overwriting them, enabling clean rollbacks to inherited or
default configuration values. The removal operation is implemented in an
idempotent manner: if no override exists for the given daemon and option,
the task is a no-op.

The implementation is consistent with existing command construction logic
(using build_base_cmd_shell) and fully respects Ansible check mode semantics,
ensuring that configuration removals can be safely previewed without
mutating cluster state.

Fixes #28.

- whether to get, set, or remove the parameter specified in 'option'
type: str
choices: ['get', 'set']
choices: ['get', 'set','remove']

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
choices: ['get', 'set','remove']
choices: ['get', 'set', 'remove']

Missing space

argument_spec=dict(
who=dict(type='str', required=True),
action=dict(type='str', required=False, choices=['get', 'set'], default='set'),
action=dict(type='str', required=False, choices=['get', 'set','remove'], default='set'),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
action=dict(type='str', required=False, choices=['get', 'set','remove'], default='set'),
action=dict(type='str', required=False, choices=['get', 'set', 'remove'], default='set'),

Missing space, PEP8 will complain

rc, out, err = module.run_command(cmd)

return rc, cmd, out.strip(), err
def remove_option(module: "AnsibleModule",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing space above that line

else:
rc, cmd, out, err = set_option(module, who, option, value)
changed = True
if module.check_mode:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ansible expects the out variable (and other outputs) to be identical between check mode and real execution. Your outputs are different between a dry-run and a real execution which is expected.

It breaks Ansible's idempotency model and causes unexpected behavior in playbooks that check task outputs or use conditional logic based on module results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add suport for parameter removal to "ceph_config" module.

2 participants