Changes for the checking intent changes
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index d7f57d3..d2761f0 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -337,8 +337,68 @@
main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
main.cleanup()
main.exit()
+#**********************************************************************************************
+#**********************************************************************************************
+# The purpose of comp_intents is to find if the high level intents have changed. preIntents
+# and postIntents should be the output of curl of the intents. preIntents being the original
+# and postIntents being the later. We are looking at the intents with the same id from both
+# and comparing the dst and src DPIDs and macs, and the state. If any of these are changed
+# we print that there are changes, then return a list of the intents that have changes`
+#**********************************************************************************************
+#**********************************************************************************************
+ def comp_intents(self,preIntents,postIntents):
+ import json
+ preDecoded = json.loads(preIntents)
+ postDecoded = json.loads(postIntents)
+ changes = []
+ if not preDecoded:
+ if postDecoded:
+ print "THERE ARE CHANGES TO THE HIGH LEVEL INTENTS!!!!"
+ return postDecoded
+ for k in preDecoded:
+ for l in postDecoded:
+ if l['id']==k['id']:
+ if k['dstSwitchDpid']==l['dstSwitchDpid'] and k['srcMac']==l['srcMac'] and k['dstMac']==l['dstMac'] and k['srcSwitchDpid']==l['srcSwitchDpid'] and k['state']==l['state']:
+ postDecoded.remove(l)
+ else:
+ changes.append(k)
+ print ("THERE ARE CHANGES TO THE HIGH LEVEL INTENTS!!!")
+ return changes
-
+#**********************************************************************************************
+#**********************************************************************************************
+# the purpose of comp_low is to find if the low level intents have changed. The main idea
+# is to determine if the path has changed. Again, like with the comp_intents function, the
+# pre and post Intents variables are the json dumps of wm/onos/intent/low. The variables
+# that will be compared are the state, and the path.
+#**********************************************************************************************
+#**********************************************************************************************
+ def comp_low(self, preIntents,postIntents):
+ import json
+ preDecoded = json.loads(preIntents)
+ postDecoded = json.loads(postIntents)
+ changes = []
+ if not preDecoded:
+ if postDecoded:
+ print "THERE ARE CHANGES TO THE LOW LEVEL INTENTS!!!"
+ return postDecoded
+ for k in preDecoded:
+ for l in postDecoded:
+ if l['id']==k['id']:
+ if l['path']!=k['path']:
+ changes.append(l)
+ print "\n\n\n\nTHERE ARE CHANGES TO THE LOW LEVEL INTENTS!!!"
+ else:
+ if k['state']!=l['state']:
+ changes.append(l)
+ print "\n\n\n\nTHERE ARE CHANGES TO THE LOW LEVEL INTENTS!!!"
+ else:
+ print "NO CHANGES SO FAR\n\n\n"
+
+
+ return changes
+
+
def rest_stop(self):
'''
Runs ./start-rest.sh stop to stop ONOS rest server
@@ -1278,6 +1338,7 @@
i = self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT],timeout=120)
#main.log.warn("third expect response: " +str(i))
response = self.handle.before
+ print response
count = 0
print response
for line in response.splitlines():
diff --git a/TestON/drivers/common/cli/zookeeperclidriver.py b/TestON/drivers/common/cli/zookeeperclidriver.py
index 5d9396e..736a5a1 100644
--- a/TestON/drivers/common/cli/zookeeperclidriver.py
+++ b/TestON/drivers/common/cli/zookeeperclidriver.py
@@ -131,28 +131,27 @@
main.log.error(self.name + ": Connection failed to the host")
response = main.FALSE
return response
-
- def findMaster(self, switchDPID, ip="localhost"):
+
+#**********************************************************************************************
+#**********************************************************************************************
+# findMaster is used to determine the master controller of a switch.
+# it uses the switchList which is a json dict, and finds the first controller of
+# each switch
+#**********************************************************************************************
+#**********************************************************************************************
+
+
+ def findMaster(self, switchDPID, switchList,ip="localhost"):
import json
- time.sleep(1)
- command = "curl "+ip+":8080/wm/onos/registry/switches/json > master.txt"
- response = self.execute(cmd=command,prompt="\$",timeout=10)
- self.handle.sendline("cat master.txt")
- response = self.execute(cmd=command,prompt="\$",timeout=10)
- self.handle.expect(["cat master.txt",pexpect.EOF,pexpect.TIMEOUT])
- self.handle.expect(["admin",pexpect.EOF,pexpect.TIMEOUT])
- response = self.handle.before
- decoded = json.loads(response)
+ decoded = json.loads(switchList)
for k in decoded.iteritems():
k2 = json.dumps(k)
if re.search(switchDPID,k2):
k3 = k2.split(',')
k4 = k3[1].split()
k5 = k4[1].split('"')
- print k5[1]
return k5[1]
- else:
- return "NO SWITCH WITH THIS DPID!"
+ return "NO SWITCH FOUND"
def isup(self):
'''