Small cleanup in return values (#28693)

pull/28701/head
Dag Wieers 7 years ago committed by GitHub
parent 05722dad35
commit 9b31ca8d16

@ -221,7 +221,7 @@ EXAMPLES = r'''
y: http://y.test y: http://y.test
z: http://z.test z: http://z.test
attribute: z:my_namespaced_attribute attribute: z:my_namespaced_attribute
value: "false" value: 'false'
''' '''
RETURN = r''' RETURN = r'''
@ -307,7 +307,8 @@ def do_print_match(module, tree, xpath, namespaces):
def count_nodes(module, tree, xpath, namespaces): def count_nodes(module, tree, xpath, namespaces):
""" Return the count of nodes matching the xpath """ """ Return the count of nodes matching the xpath """
hits = tree.xpath("count(/%s)" % xpath, namespaces=namespaces) hits = tree.xpath("count(/%s)" % xpath, namespaces=namespaces)
finish(module, tree, xpath, namespaces, changed=False, msg=int(hits), hitcount=int(hits)) msg = "found %d nodes" % hits
finish(module, tree, xpath, namespaces, changed=False, msg=msg, hitcount=int(hits))
def is_node(tree, xpath, namespaces): def is_node(tree, xpath, namespaces):
@ -643,7 +644,7 @@ def children_to_nodes(module=None, children=[], type='yaml'):
return [child_to_element(module, child, type) for child in children] return [child_to_element(module, child, type) for child in children]
def pretty(module, tree): def make_pretty(module, tree):
xml_string = etree.tostring(tree, xml_declaration=True, encoding='UTF-8', pretty_print=module.params['pretty_print']) xml_string = etree.tostring(tree, xml_declaration=True, encoding='UTF-8', pretty_print=module.params['pretty_print'])
result = dict( result = dict(
@ -652,16 +653,13 @@ def pretty(module, tree):
if module.params['path']: if module.params['path']:
xml_file = module.params['path'] xml_file = module.params['path']
xml_content = open(xml_file) with open(xml_file, 'rb') as xml_content:
try:
if xml_string != xml_content.read(): if xml_string != xml_content.read():
result['changed'] = True result['changed'] = True
if not module.check_mode: if not module.check_mode:
if module.params['backup']: if module.params['backup']:
result['backup_file'] = module.backup_local(module.params['path']) result['backup_file'] = module.backup_local(module.params['path'])
tree.write(xml_file, xml_declaration=True, encoding='UTF-8', pretty_print=module.params['pretty_print']) tree.write(xml_file, xml_declaration=True, encoding='UTF-8', pretty_print=module.params['pretty_print'])
finally:
xml_content.close()
elif module.params['xmlstring']: elif module.params['xmlstring']:
result['xmlstring'] = xml_string result['xmlstring'] = xml_string
@ -672,16 +670,26 @@ def pretty(module, tree):
module.exit_json(**result) module.exit_json(**result)
def finish(module, tree, xpath, namespaces, changed=False, msg="", hitcount=0, matches=tuple()): def finish(module, tree, xpath, namespaces, changed=False, msg='', hitcount=0, matches=tuple()):
result = dict( result = dict(
actions=dict(xpath=xpath, namespaces=namespaces, state=module.params['state']), actions=dict(
xpath=xpath,
namespaces=namespaces,
state=module.params['state']
),
changed=has_changed(tree), changed=has_changed(tree),
count=hitcount,
matches=matches,
msg=msg,
) )
if module.params['count'] or hitcount:
result['count'] = hitcount
if module.params['print_match'] or matches:
result['matches'] = matches
if msg:
result['msg'] = msg
if result['changed']: if result['changed']:
if module._diff: if module._diff:
result['diff'] = dict( result['diff'] = dict(
@ -797,24 +805,19 @@ def main():
if print_match: if print_match:
do_print_match(module, doc, xpath, namespaces) do_print_match(module, doc, xpath, namespaces)
# exit
if count: if count:
count_nodes(module, doc, xpath, namespaces) count_nodes(module, doc, xpath, namespaces)
# exit
if content == 'attribute': if content == 'attribute':
get_element_attr(module, doc, xpath, namespaces) get_element_attr(module, doc, xpath, namespaces)
# exit
elif content == 'text': elif content == 'text':
get_element_text(module, doc, xpath, namespaces) get_element_text(module, doc, xpath, namespaces)
# exit
# File exists: # File exists:
if state == 'absent': if state == 'absent':
# - absent: delete xpath target # - absent: delete xpath target
delete_xpath_target(module, doc, xpath, namespaces) delete_xpath_target(module, doc, xpath, namespaces)
# exit
# - present: carry on # - present: carry on
@ -824,30 +827,24 @@ def main():
# set_children set? # set_children set?
if set_children: if set_children:
set_target_children(module, doc, xpath, namespaces, set_children, input_type) set_target_children(module, doc, xpath, namespaces, set_children, input_type)
# exit
# add_children set? # add_children set?
if add_children: if add_children:
add_target_children(module, doc, xpath, namespaces, add_children, input_type) add_target_children(module, doc, xpath, namespaces, add_children, input_type)
# exit
# No?: Carry on # No?: Carry on
# Is the xpath target an attribute selector? # Is the xpath target an attribute selector?
if value is not None: if value is not None:
set_target(module, doc, xpath, namespaces, attribute, value) set_target(module, doc, xpath, namespaces, attribute, value)
# exit
# If an xpath was provided, we need to do something with the data # If an xpath was provided, we need to do something with the data
if xpath is not None: if xpath is not None:
ensure_xpath_exists(module, doc, xpath, namespaces) ensure_xpath_exists(module, doc, xpath, namespaces)
# exit
# Otherwise only reformat the xml data? # Otherwise only reformat the xml data?
if pretty_print: if pretty_print:
xpath = '/' make_pretty(module, doc)
pretty(module, doc)
# exit
module.fail_json(msg="Don't know what to do") module.fail_json(msg="Don't know what to do")

Loading…
Cancel
Save