9fb91cb05597d24113167aec0517b555ee0f632d
[groupbasedpolicy.git] / demos / gbpsfc-env / demo-asymmetric-chain / get-nsps.py
1 #!/usr/bin/python
2 import socket
3 import requests,json
4 from requests.auth import HTTPBasicAuth
5 import sys
6 import os
7 from subprocess import check_output
8 from infrastructure_config import *
9
10
11 DEFAULT_PORT='8181'
12 USERNAME='admin'
13 PASSWORD='admin'
14
15 def get(host, port, uri):
16     url='http://'+host+":"+port+uri
17     #print url
18     r = requests.get(url, auth=HTTPBasicAuth(USERNAME, PASSWORD))
19     jsondata=json.loads(r.text)
20     return jsondata
21
22
23 def get_rsps_uri():
24         return "/restconf/operational/rendered-service-path:rendered-service-paths"
25
26 def doCmd(cmd):
27     listcmd=cmd.split()
28     print check_output(listcmd)
29
30 if __name__ == "__main__":
31     # Launch main menu
32
33
34     # Some sensible defaults
35     controller=os.environ.get('ODL')
36     if controller == None:
37         sys.exit("No controller set.")
38     #else:
39         #print "Contacting controller at %s" % controller
40
41     resp=get(controller,DEFAULT_PORT,get_rsps_uri())
42     if len(resp['rendered-service-paths']) > 0:
43        paths=resp['rendered-service-paths']['rendered-service-path']
44
45        nsps=[]
46        for path in paths:
47            nsps.append(path['path-id'])
48        if len(nsps) > 0:
49            sw_index=int(socket.gethostname().split("gbpsfc",1)[1])-1
50            if sw_index in range(0,len(switches)+1):
51
52               controller=os.environ.get('ODL')
53               sw_type = switches[sw_index]['type']
54               sw_name = switches[sw_index]['name']
55               if sw_type == 'sf':
56                   print "******************************"
57                   print "Adding flows for %s as an SF." % sw_name
58                   print "******************************"
59                   doCmd('sudo /vagrant/demo-asymmetric-chain/sf-flows.sh %s' % min(nsps))
60