<doc>
This template produces one dictionary item per ip address configured on device's interfaces including secondary and VRRP IPs. Output is a list of dictionaries.

Sample data::

    r1#show run | sec interface
    interface GigabitEthernet1
     vrf forwarding MGMT
     ip address 10.223.89.55 255.255.255.0
     negotiation auto
     no mop enabled
    interface GigabitEthernet1
     vrf forwarding MGMT
     ip address 10.223.89.56 255.255.255.0
     negotiation auto
     no mop enabled
     no mop sysid
     
Sample results, structure="flat_list"::

    [
        {
            "description": "description",
            "hostname": "r1",
            "interface": "GigabitEthernet1",
            "ip": "10.223.89.55",
            "mask": "255.255.255.0",
            "vrf": "MGMT"
        },
        {
            "description": "description",
            "hostname": "r1",
            "interface": "GigabitEthernet1",
            "ip": "10.223.89.56",
            "mask": "255.255.255.0",
            "vrf": "MGMT"
        }
    ]
    
How to use::

    from ttp import ttp
	from ttp_templates import get_template
    from pprint import pprint
    
	data = "text output from device"
	
    parser = ttp(
		template=get_template(misc="ttp_templates_tests/cisco_ios_interfaces_cfg_per_ip.txt")
	)
    parser.add_input(data, template_name="interfaces")
    parser.parse()
    pprint(parser.result())
	
</doc>



<template name="interfaces" results="per_template">
<input>
commands = [
    "show run | sec interface"
]
</input>

<vars>
hostname="gethostname"

record_all = [
    "record(interface)",
    "record(description)",
    "record(vrf)",
    "void()"
]

set_all = [
    "set(interface)",
    "set(description)",
    "set(vrf)",
    "set(hostname)"
]
</vars>

<group name="intf_cfg" chain="record_all">
interface {{ interface }}
 description {{ description | ORPHRASE }}
 vrf forwarding {{ vrf }}
 <group name="/" chain="set_all" method="table">
 ip address {{ ip }} {{ mask }}
 ip address {{ ip | let("secondary", True) }} {{ mask }} secondary
 vrrp 1 ip {{ ip | let("vrrp vip", True) }}
 vrrp 1 ip {{ ip | let("vrrp vip", True) | let("secondary", True) }} secondary
 </group>
</group>
</template>