#! /usr/bin/env python import requests from requests.auth import HTTPBasicAuth import sys if len(sys.argv) != 6: print "usage: create-flow onos-node name device in-port out-port" sys.exit(1) node = sys.argv[1] name = sys.argv[2] device = sys.argv[3] inPort = sys.argv[4] outPort = sys.argv[5] flowJsonTemplate = \ '{{' + \ '"priority": 1,' + \ '"isPermanent": true,' + \ '"treatment": {{' + \ '"instructions": [' + \ '{{' + \ '"type": "OUTPUT",' + \ '"port": {}' + \ '}}' + \ ']' + \ '}},' + \ '"selector": {{' + \ '"criteria": [' + \ '{{' + \ '"type": "IN_PORT",' + \ '"port": {}' + \ '}}' + \ ']' + \ '}}' + \ '}}' flowJson = flowJsonTemplate.format(inPort, outPort) intentRequest = requests.post('http://' + node + ':8181/onos/v1/flows/' + device, auth=HTTPBasicAuth('onos', 'rocks'), data=flowJson) if intentRequest.status_code != 201: print intentRequest.text sys.exit(1) location = intentRequest.headers["location"] print "@stc " + name + "Location=" + location sys.exit(0)