| #! /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) |
| payload = {'appId': 'org.onosproject.cli'} |
| flowRequest = requests.post('http://' + node + ':8181/onos/v1/flows/' + device, |
| auth=HTTPBasicAuth('onos', 'rocks'), |
| data=flowJson, |
| params=payload) |
| |
| if flowRequest.status_code != 201: |
| print flowRequest.text |
| sys.exit(1) |
| |
| location = flowRequest.headers["location"] |
| print "@stc " + name + "Location=" + location |
| sys.exit(0) |
| |
| |
| |