xml module: Add backup support (#28595)

This fixes #27949
This commit is contained in:
Dag Wieers 2017-08-24 15:20:59 +02:00 committed by GitHub
parent 6fc8899290
commit 967fbcb662

View file

@ -91,6 +91,12 @@ options:
- Type of input for C(add_children) and C(set_children).
choices: [ xml, yaml ]
default: yaml
backup:
description:
- Create a backup file including the timestamp information so you can get
the original file back if you somehow clobbered it incorrectly.
type: bool
default: 'no'
requirements:
- lxml >= 2.3.0
notes:
@ -192,6 +198,11 @@ actions:
type: dict
returned: success
sample: {xpath: xpath, namespaces: [namespace1, namespace2], state=present}
backup_file:
description: The name of the backup file that was created
type: str
returned: when backup=yes
sample: /path/to/file.xml.1942.2017-08-24@14:16:01~
count:
description: The count of xpath matches.
type: int
@ -638,6 +649,9 @@ def finish(module, tree, xpath, namespaces, changed=False, msg="", hitcount=0, m
if module.params['path']:
if not module.check_mode:
if module.params['backup']:
result['backup_file'] = module.backup_local(module.params['path'])
tree.write(module.params['path'], xml_declaration=True, encoding='UTF-8', pretty_print=module.params['pretty_print'])
if module.params['xmlstring']:
@ -662,7 +676,8 @@ def main():
print_match=dict(type='bool', default=False),
pretty_print=dict(type='bool', default=False),
content=dict(type='str', choices=['attribute', 'text']),
input_type=dict(type='str', default='yaml', choices=['xml', 'yaml'])
input_type=dict(type='str', default='yaml', choices=['xml', 'yaml']),
backup=dict(type='bool', default=False),
),
supports_check_mode=True,
mutually_exclusive=[
@ -690,6 +705,7 @@ def main():
input_type = module.params['input_type']
print_match = module.params['print_match']
count = module.params['count']
backup = module.params['backup']
# Check if we have lxml 2.3.0 or newer installed
if not HAS_LXML: