Browse code

Fix ignore diff lines issue for lines in ios, eos, nxos (#43889)

* Fix ignore diff lines issue in ios_config

* Pass `diff_ignore_lines` while creating
candidate and running configuration object

* Add fix for other platforms

* Fix ignore limes for block

* Update changelog

Ganesh Nalawade authored on 2018/09/05 07:59:37
Showing 5 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,3 @@
0
+---
1
+bugfixes:
2
+  - Fix network config diff issue for lines (https://github.com/ansible/ansible/pull/43889)
... ...
@@ -372,6 +372,8 @@ class NetworkConfig(object):
372 372
         # global config command
373 373
         if not parents:
374 374
             for line in lines:
375
+                if ignore_line(line):
376
+                    continue
375 377
                 item = ConfigLine(line)
376 378
                 item.raw = line
377 379
                 if item not in self.items:
... ...
@@ -397,6 +399,8 @@ class NetworkConfig(object):
397 397
 
398 398
             # add child objects
399 399
             for line in lines:
400
+                if ignore_line(line):
401
+                    continue
400 402
                 # check if child already exists
401 403
                 for child in ancestors[-1]._children:
402 404
                     if child.text == line:
... ...
@@ -273,7 +273,7 @@ from ansible.module_utils.network.eos.eos import check_args
273 273
 
274 274
 
275 275
 def get_candidate(module):
276
-    candidate = NetworkConfig(indent=3)
276
+    candidate = NetworkConfig(indent=3, ignore_lines=module.params['diff_ignore_lines'])
277 277
     if module.params['src']:
278 278
         candidate.load(module.params['src'])
279 279
     elif module.params['lines']:
... ...
@@ -292,7 +292,7 @@ def get_running_config(module, config=None):
292 292
             if module.params['defaults']:
293 293
                 flags.append('all')
294 294
             contents = get_config(module, flags=flags)
295
-    return NetworkConfig(indent=3, contents=contents)
295
+    return NetworkConfig(indent=3, contents=contents, ignore_lines=module.params['diff_ignore_lines'])
296 296
 
297 297
 
298 298
 def save_config(module, result):
... ...
@@ -364,10 +364,11 @@ def main():
364 364
         result['warnings'] = warnings
365 365
 
366 366
     config = None
367
+    diff_ignore_lines = module.params['diff_ignore_lines']
367 368
 
368 369
     if module.params['backup'] or (module._diff and module.params['diff_against'] == 'running'):
369 370
         contents = get_config(module)
370
-        config = NetworkConfig(indent=3, contents=contents)
371
+        config = NetworkConfig(indent=3, contents=contents, ignore_lines=diff_ignore_lines)
371 372
         if module.params['backup']:
372 373
             result['__backup__'] = contents
373 374
 
... ...
@@ -379,7 +380,7 @@ def main():
379 379
 
380 380
         if match != 'none' and replace != 'config':
381 381
             config_text = get_running_config(module)
382
-            config = NetworkConfig(indent=3, contents=config_text)
382
+            config = NetworkConfig(indent=3, contents=config_text, ignore_lines=diff_ignore_lines)
383 383
             path = module.params['parents']
384 384
             configobjs = candidate.difference(config, match=match, replace=replace, path=path)
385 385
         else:
... ...
@@ -413,8 +414,6 @@ def main():
413 413
     running_config = module.params['running_config']
414 414
     startup_config = None
415 415
 
416
-    diff_ignore_lines = module.params['diff_ignore_lines']
417
-
418 416
     if module.params['save_when'] == 'always' or module.params['save']:
419 417
         save_config(module, result)
420 418
     elif module.params['save_when'] == 'modified':
... ...
@@ -360,11 +360,11 @@ def get_running_config(module, current_config=None, flags=None):
360 360
         else:
361 361
             contents = get_config(module, flags=flags)
362 362
     contents, banners = extract_banners(contents)
363
-    return NetworkConfig(indent=1, contents=contents), banners
363
+    return NetworkConfig(indent=1, contents=contents, ignore_lines=module.params['diff_ignore_lines']), banners
364 364
 
365 365
 
366 366
 def get_candidate(module):
367
-    candidate = NetworkConfig(indent=1)
367
+    candidate = NetworkConfig(indent=1, ignore_lines=module.params['diff_ignore_lines'])
368 368
     banners = {}
369 369
 
370 370
     if module.params['src']:
... ...
@@ -445,11 +445,13 @@ def main():
445 445
     result['warnings'] = warnings
446 446
 
447 447
     config = None
448
+    diff_ignore_lines = module.params['diff_ignore_lines']
449
+
448 450
     flags = get_defaults_flag(module) if module.params['defaults'] else []
449 451
 
450 452
     if module.params['backup'] or (module._diff and module.params['diff_against'] == 'running'):
451 453
         contents = get_config(module, flags=flags)
452
-        config = NetworkConfig(indent=1, contents=contents)
454
+        config = NetworkConfig(indent=1, contents=contents, ignore_lines=diff_ignore_lines)
453 455
         if module.params['backup']:
454 456
             result['__backup__'] = contents
455 457
 
... ...
@@ -496,8 +498,6 @@ def main():
496 496
     running_config = module.params['running_config']
497 497
     startup_config = None
498 498
 
499
-    diff_ignore_lines = module.params['diff_ignore_lines']
500
-
501 499
     if module.params['save_when'] == 'always' or module.params['save']:
502 500
         save_config(module, result)
503 501
     elif module.params['save_when'] == 'modified':
... ...
@@ -296,11 +296,11 @@ def get_running_config(module, config=None):
296 296
         else:
297 297
             flags = ['all']
298 298
             contents = get_config(module, flags=flags)
299
-    return NetworkConfig(indent=2, contents=contents)
299
+    return NetworkConfig(indent=2, contents=contents, ignore_lines=module.params['diff_ignore_lines'])
300 300
 
301 301
 
302 302
 def get_candidate(module):
303
-    candidate = NetworkConfig(indent=2)
303
+    candidate = NetworkConfig(indent=2, ignore_lines=module.params['diff_ignore_lines'])
304 304
     if module.params['src']:
305 305
         if module.params['replace'] != 'config':
306 306
             candidate.load(module.params['src'])