update check_status to check switch status'
diff --git a/cluster-mgmt/bin/check_status.py b/cluster-mgmt/bin/check_status.py
index 434bb33..baca785 100755
--- a/cluster-mgmt/bin/check_status.py
+++ b/cluster-mgmt/bin/check_status.py
@@ -13,41 +13,60 @@
#nr_links=(switch[1]+switch[2]+switch[3]+switch[4]+switch[5]+switch[6]+switch[7]+len(switch)-1+8)*2
nr_links= (49 + 24 * 6 + 7 + 8) * 2
-def check_switch():
+def get_json(url):
+ print url
try:
- command = "curl -s \'http://%s:%s/wm/core/topology/switches/all/json\'" % (RestIP, RestPort)
- print command
+ command = "curl -s %s" % (url)
result = os.popen(command).read()
+ parsedResult = json.loads(result)
except:
- print "REST IF has issue"
- exit
+ print "REST IF %s has issue" % command
+ parsedResult = ""
- parsedResult = json.loads(result)
+ if type(parsedResult) == 'dict' and parsedResult.has_key('code'):
+ print "REST %s returned code %s" % (command, parsedResult['code'])
+ parsedResult = ""
+
+ return parsedResult
+
+def check_switch():
+ url="http://%s:%s/wm/core/topology/switches/all/json" % (RestIP, RestPort)
+ parsedResult = get_json(url)
+
+ if parsedResult == "":
+ return
+
print "switch: total %d switches" % len(parsedResult)
cnt = []
+ active = []
for r in range(8):
cnt.append(0)
+ active.append(0)
for s in parsedResult:
- nw =int(s['dpid'].split(':')[-2], 16)
- if nw >= 2 and nw <=8:
- cnt[nw-1] = cnt[nw-1] + 1
+ if s['dpid'] in core_switches:
+ nw_index = 0
else:
- cnt[0] = cnt[0] + 1
+ nw_index =int(s['dpid'].split(':')[-2], 16) - 1
+ cnt[nw_index] += 1
+
+ if s['state'] == "ACTIVE":
+ active[nw_index] += 1
+
for r in range(8):
- print "switch: network %d %d switches" % (r+1, cnt[r])
+ print "switch: network %d : %d switches %d active" % (r+1, cnt[r], active[r])
if correct_nr_switch[r] != cnt[r]:
print "switch fail: network %d should have %d switches but has %d" % (r+1, correct_nr_switch[r], cnt[r])
- break
+
+ if correct_nr_switch[r] != active[r]:
+ print "switch fail: network %d should have %d active switches but has %d" % (r+1, correct_nr_switch[r], active[r])
def check_link():
- try:
- command = "curl -s \'http://%s:%s/wm/core/topology/links/json\'" % (RestIP, RestPort)
- print command
- result = os.popen(command).read()
- except:
- print "REST IF has issue"
- exit
- parsedResult = json.loads(result)
+ url = "http://%s:%s/wm/core/topology/links/json" % (RestIP, RestPort)
+ parsedResult = get_json(url)
+
+ if parsedResult == "":
+ return
+
print "link: total %d links (correct : %d)" % (len(parsedResult), nr_links)
intra = []
for r in range(8):
@@ -74,14 +93,12 @@
print "link fail: network %d should have %d intra links but has %d" % (r+1, correct_intra_link[r], intra[r])
def check_mastership():
- try:
- command = "curl -s \'http://%s:%s/wm/registry/switches/json\'" % (RestIP, RestPort)
- print command
- result = os.popen(command).read()
- except:
- print "REST IF has issue"
- exit
- parsedResult = json.loads(result)
+ url = "http://%s:%s/wm/registry/switches/json" % (RestIP, RestPort)
+ parsedResult = get_json(url)
+
+ if parsedResult == "":
+ return
+
for s in parsedResult:
#print s,len(s),s[0]['controllerId']
ctrl=parsedResult[s][0]['controllerId']
@@ -96,15 +113,12 @@
print "ownership fail: switch %s is owened by %s" % (s, ctrl)
def check_controllers():
- try:
- command = "curl -s \'http://%s:%s/wm/registry/controllers/json\'" % (RestIP, RestPort)
- print command
- result = os.popen(command).read()
- except:
- print "REST IF has issue"
- exit
+ url = "http://%s:%s/wm/registry/controllers/json" % (RestIP, RestPort)
+ parsedResult = get_json(url)
- parsedResult = json.loads(result)
+ if parsedResult == "":
+ return
+
unique=list(set(parsedResult))
if len(unique) != 8:
print "controller fail: there are %d controllers" % (len(parsedResult))