Comments (6)
The feature looks reasonably good for now. Please file a bug if you find a problem.
from ciscoconfparse.
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.
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.
@mpenning nice!
from ciscoconfparse.
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.
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)
- Github automated unit test failures (Python3.10) HOT 1
- [Bug]: IOSIntfLine object incorrectly parses an interface description containing a single character HOT 3
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 HOT 2
- [Bug]: CiscoConfParse cannot import dnspython during Github Automated test runs. HOT 2
- [Bug]: ModuleNotFoundError: No module named 'deprecat' HOT 1
- [Bug]: ModuleNotFoundError: No module named 'deprecat' persists on python 3.6 HOT 2
- Versions 1.7.21-1.7.23 are broken and should be yanked HOT 9
- [Feature]: IOS-XR Route-policy processed incorrectly HOT 4
- [Bug]: Seeing double entries on sync_diff() and order of negation reversed HOT 8
- [Bug]: dev_tools/deploy_docs does not 'make' HOT 1
- [Bug]: endless loop parsing (as factory=True) Dell FTOS9 ip/ipv6 static route with vlan HOT 1
- [Bug]: Issue parsing F5 BigIP config file HOT 6
- Documentation for syntax='nxos' HOT 1
- [Bug]: Version 1.6.41 is broken and should be yanked from pypi HOT 1
- [Bug]: Using append_line() causes issues HOT 1
- [Feature]: CiscoInterface() fails to parse IOS XR interface names (under factory=True) HOT 6
- [Feature]: Add IOS XR Factory parsing HOT 3
- [FEATURE]: IOS diffs via ciscoconfparse.ciscoconfparse.Diff()
- Simplify API / remove legacy functions / methods HOT 2
- class CiscoConfParse has mutually exclusive parameters, factory = False, ignore_blank_lines = True HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ciscoconfparse.