network-engine icon indicating copy to clipboard operation
network-engine copied to clipboard

add # of successful matches to verbose output of textfsm and text_parser

Open acozine opened this issue 6 years ago • 0 comments

As a user, If I make a mistake in a matching directive or in the content: parameter, I may end up with one or more null values in the final variable output. For example, this playbook:

---
- hosts: ios
  connection: network_cli
  gather_facts: no

  tasks:
  - name: Collect version information from device
    ios_command:
      commands: "show version"
    register: ios_version_output

  - import_role:
      name: ansible-network.network-engine

  - name: Generate version facts as JSON
    text_parser:
      file: "my_parsers/ios_show_version.yaml"
      content: ios_version_output['stdout_lines'][0]
#  in case anyone find this while looking for a *correct* example
#  the correct formulation would be 
# content: "{{ ios_version_output.stdout.0 }}"

  - name: Display matches (system_facts)
    debug:
      var: system_facts 

succeeds, but returns this final variable:

ok: [ios01] => {
    "system_facts": {
        "image_file": null, 
        "memory": {
            "free": null, 
            "total": null
        }, 
        "model": null, 
        "uptime": null, 
        "version": "null"
    }
}

The error in this example is in the content line, but a similar situation could occur if one or more match rules were incorrect. If I run the playbook with -vvvv I can see the directives:

processing directive: match version
processing directive: match model
processing directive: match image
processing directive: match uptime
processing directive: match total memory
processing directive: match free memory
processing directive: export system facts to playbook

but there's no information about which ones find matches.

To help debug issues with content lines and issues with match definitions, could we:

  • [ ] add "found match" or "no match" to verbose output for each directive processed
  • [ ] add information on total matches (for example, "7 matches found out of 8 match directives processed" - I'm not sure what level of verbosity should be required for this

acozine avatar May 01 '18 16:05 acozine