create-flow.py 1.29 KB
#! /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)