Giter Site home page Giter Site logo

Comments (6)

mpenning avatar mpenning commented on May 14, 2024 1

The feature looks reasonably good for now. Please file a bug if you find a problem.

from ciscoconfparse.

mpenning avatar mpenning commented on May 14, 2024

Due to my schedule lately, it took a lot longer to respond, but please take a look sync_diff() in ciscoconfparse/master and let me know what you think. I have been tweaking this off and on for a while, and it seems to mostly behave the way I want (>80% of the time). For your use case, it looks good to me.

This is an example of the usage...

from ciscoconfparse import CiscoConfParse
#!!!!!!!!! Vlan test

BROKEN = """!
vlan 51
 state active
vlan 53
!""".splitlines()

WORKING = """!
vlan 51
 name SOME-VLAN
 state active
vlan 52
 name BLAH
 state active
!
""".splitlines()

linespec = r'vlan\s+\S+|name\s+\S+|state.+'
parse = CiscoConfParse(BROKEN)
diff = parse.sync_diff(WORKING, linespec, linespec)

When you run that, you'll get this in the diff variable...

['no vlan 53', 'vlan 51', ' name SOME-VLAN', 'vlan 52', ' name BLAH', ' state active']

Which is the config diff you need to sync those vlan configurations. Again, I'm not finished with this code, but I think it's good enough for your use case right now... frankly it's been that way for almost a week, but this fails in some of my corner cases and I was hoping to make one big commit that fixed everything.

Anyway, let me know whether this works for you.

from ciscoconfparse.

mpenning avatar mpenning commented on May 14, 2024

This feature is formally available in 1.2.11. Note that there is a bug in Python3, which breaks usage so for now sync_diff() requires Python2. I will file a bug in python.org tonight (US Time).

@CrackerJackMack, this might be useful for your config audits

from ciscoconfparse.

CrackerJackMack avatar CrackerJackMack commented on May 14, 2024

@mpenning nice!

from ciscoconfparse.

lingfish avatar lingfish commented on May 14, 2024

Hi, sorry for the delays.

I've been giving this a quick spin, and it seems mostly ok? The issues I think are potential difference in whitespace indentation etc (eg. one space from IOS, two from NXOS etc). If we then ignore whitespace, we kind of lose the "grouping" if you will of ^vlan [0-9]+ and ^ +name.

It almost needs to be a multiline, grouped diff, and not line by line.

from ciscoconfparse.

mpenning avatar mpenning commented on May 14, 2024

@lingfish,

Regarding whitespace, which version are you testing against, and what exactly failed? Please provide an explicit example. I just added explicit NXOS whitespace unit tests in 398da77 (to master, a few commits ahead of 1.2.14) and no unit tests are broken.

Regarding grouped diffs, I've started that, but I have a few more enhancements coming. It's still a bit dumb, but if you look at config_heirarchy(), you'll see that I'm already preparing to group diffs by oldest parent

from ciscoconfparse.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.