Examples - leaf

Parsing metric style for junos ISIS level

Junos sometimes indicates the value of something not by using an element with a specific value but by the presence of it. For instance, the metric style of an ISIS level can either be NARROW or WIDE but instead of indicating explicitly junos will do it with the presence or not of the element </wide-metrics-only>.

Original data

<configuration>
    <isis>
        <level>
            <name>1</name>
            <wide-metrics-only/>
        </level>
        <level>
            <name>2</name>
            <preference>50</preference>
        </level>
        <interface>
            <name>ge-0/0/0.0</name>
            <point-to-point/>
        </interface>
        <interface>
            <name>ge-0/0/1.0</name>
            <point-to-point/>
        </interface>
        <interface>
            <name>ge-0/0/2.0</name>
            <point-to-point/>
        </interface>
        <interface>
            <name>ge-0/0/3.0</name>
            <point-to-point/>
        </interface>
        <interface>
            <name>lo0.0</name>
        </interface>
    </isis>
</configuration>

Parser rule

- default: NARROW_METRIC
  path: wide-metrics-only
  post: WIDE_METRIC
  present: true

Result

Example 1

extra_vars: {}
keys: {}
block value
<level> <name>1</name> <wide-metrics-only/> </level> WIDE_METRIC
<level> <name>2</name> <preference>50</preference> </level> NARROW_METRIC

Parse EOS privilege:role

The role in eos is the combination of the privilege level and the role itself. In this example we should how to use a regular expression to capture data and postprocess it to set the correct role.

Original data

username test1 privilege 1 nopassword
username test2 privilege 1 secret sha512 $6$WL/ibPpzPJ/C7c/E$.bVF08dYhlNp0rxER0P3SNdsA2wUtK2Ru1YuKkRRZQGl609DA1JvX.dSFgKXaq.LWjDRlZoHudfk7hamod0Th/
username test3 privilege 15 role network-operator secret sha512 $6$Vd6.7k2FybfsTKKp$S.AHfdwicaWEoA41sPd6ZXOOdruJMrKJh70WNfiX/eZKH1oYBtFz9VbrPlYNDkhM/pi54gcYKH2hviy/xrUav.
username test4 privilege 1 secret 5 $1$NKhJ$PUfYNtJF2tIneEBZztchy.
username test5 privilege 15 secret sha512 $6$d3fdbbZBrhplknVB$FILKNelLURwd/xT74ktjxJ4XP1vTfJ53H7OWJHgAqeuY/lF3BDyP3SWpH/MeBRnl7lLi8hU2oy6hkbnB7jvtA.
username test6 privilege 1 role network-admin secret sha512 $6$zaalm5RTm6/26XVS$I/f3kmOqfvTbjwjzepCe1O9eYfPJRdUrRLe9NoMsbgNz9T48nj0AlOsm2LmoFp6aI5B6Q/xlseJdNrTL/jiXH0
username test7 privilege 15 role network-admin secret 5 $1$NKhJ$PUfYNtJF2tIneEBZztchy.

Parser rule

- path: privilege
  post: '{{ extra_vars.privilege }}:{{ extra_vars.role }}'
  regexp: (?P<value>(?P<privilege>\d+).*role (?P<role>\S+)) secret
- path: privilege
  post: '{{ value }}:network-operator'
  regexp: (?P<value>\d+)

Result

Example 1

extra_vars: {}
keys: {}
block value
username test1 privilege 1 nopassword 1:network-operator
username test2 privilege 1 secret sha512 $6$WL/ibPpzPJ/C7c/E$.bVF08dYhlNp0rxER0P3SNdsA2wUtK2Ru1YuKkRRZQGl609DA1JvX.dSFgKXaq.LWjDRlZoHudfk7hamod0Th/ 1:network-operator
username test3 privilege 15 role network-operator secret sha512 $6$Vd6.7k2FybfsTKKp$S.AHfdwicaWEoA41sPd6ZXOOdruJMrKJh70WNfiX/eZKH1oYBtFz9VbrPlYNDkhM/pi54gcYKH2hviy/xrUav. 15:network-operator
username test4 privilege 1 secret 5 $1$NKhJ$PUfYNtJF2tIneEBZztchy. 1:network-operator
username test5 privilege 15 secret sha512 $6$d3fdbbZBrhplknVB$FILKNelLURwd/xT74ktjxJ4XP1vTfJ53H7OWJHgAqeuY/lF3BDyP3SWpH/MeBRnl7lLi8hU2oy6hkbnB7jvtA. 15:network-operator
username test6 privilege 1 role network-admin secret sha512 $6$zaalm5RTm6/26XVS$I/f3kmOqfvTbjwjzepCe1O9eYfPJRdUrRLe9NoMsbgNz9T48nj0AlOsm2LmoFp6aI5B6Q/xlseJdNrTL/jiXH0 1:network-admin
username test7 privilege 15 role network-admin secret 5 $1$NKhJ$PUfYNtJF2tIneEBZztchy. 15:network-admin