blob: 62de12adada1f82abf39e44907e1baddce561cbe [file] [log] [blame]
Jon Hall66e001c2015-11-12 09:45:10 -08001"""
2These functions are for use with the Network config system
3"""
4import time
5
Jon Hallbc080f92017-05-24 16:29:55 -07006
Jon Hall66e001c2015-11-12 09:45:10 -08007def compareCfg( main, gossipTime=None ):
8 """
9 Compare the network configurations across all nodes in the network
10 gossipTime is the number of seconds each gossip round take for the netCfg maps
11 """
12 main.step( "Check net config" )
13 if gossipTime:
14 time.sleep( gossipTime * len( main.nodes ) )
15 responses = []
Jeremy Ronquillo4a30ffe2017-06-07 11:36:35 -070016 result = utilities.retry( f=checkNodeResponses,
17 retValue=False,
18 kwargs={'main' : main,'responses' : responses},
19 sleep = main.retrysleep,
20 attempts = main.retrytimes )
21 utilities.assert_equals( expect=True,
22 actual=result,
23 onpass="Net Cfg is the same on all nodes",
24 onfail="Check Net Cfg failed. Check above messages." )
25
26
27def checkNodeResponses ( main, responses ):
28 numberOfFailedNodes = 0 # Tracks the number of nodes that failed to get net configuration
Jon Hall66e001c2015-11-12 09:45:10 -080029 for node in main.nodes:
Jeremy Ronquillo4a30ffe2017-06-07 11:36:35 -070030 response = node.getNetCfg( )
Jon Hall66e001c2015-11-12 09:45:10 -080031 responses.append( node.pprint( response ) )
32 if response == main.FALSE:
Jeremy Ronquillo4a30ffe2017-06-07 11:36:35 -070033 numberOfFailedNodes += 1
34
Jon Hallbc080f92017-05-24 16:29:55 -070035 compare = [ i == responses[ 0 ] for i in responses ]
Jeremy Ronquillo4a30ffe2017-06-07 11:36:35 -070036 if numberOfFailedNodes == 0 and all( compare ):
37 return True
38
39 # Failed, providing feedback on cli
40 if numberOfFailedNodes > 0:
41 main.log.warn( numberOfFailedNodes + " node(s) failed to GET Net Config" )
Jon Hall66e001c2015-11-12 09:45:10 -080042 if not all( compare ):
Jeremy Ronquillo4a30ffe2017-06-07 11:36:35 -070043 main.log.debug( "Net Cfg is different on some nodes. Net Config results:" )
Jon Hall66e001c2015-11-12 09:45:10 -080044 for i in responses:
45 main.log.debug( i )
Jeremy Ronquillo4a30ffe2017-06-07 11:36:35 -070046 return False