onos_flows.py 1.84 KB
Newer Older
#!/usr/bin/python
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# -*- coding: utf-8 -*-

import requests
from requests.auth import HTTPBasicAuth
import json

IP='localhost'
PORT='8181'
USER='onos'
PASSWORD='rocks'

URL = 'http://' + IP + ':' + PORT + '/onos/v1/flows/'

def insertFlow( nodeId, priority, inport, outport ):

    flow='{ "priority": '+priority+', "timeout": 0, "isPermanent": true, "deviceId": "'+nodeId+'", "treatment": { "instructions": [ { "type": "OUTPUT", "port": "'+outport+'" } ] }, "selector": { "criteria": [ { "type": "IN_PORT", "port": "'+inport+'" } ] } }'


    print ("Flow: " + flow)
    url = URL + nodeId + '?appId=tuto' 
    headers = {'content-type': 'application/json'}
    print (url)
    response = requests.post(url, data=flow,
	                    headers=headers, auth=HTTPBasicAuth(USER,
	                    PASSWORD))
    print (response)
    return response.status_code

def deleteFlows():
    
    url = URL + '' + 'application/'+'tuto' 
    response = requests.delete(url, auth=HTTPBasicAuth(USER, PASSWORD))
    print (response)
    return response.status_code



if __name__ == "__main__":

    print ("Setting flow")
    
    res = insertFlow(nodeId="of:0000000000000001", priority="40001", inport="1", outport="2")
    print (res)
 
    #deleteFlows()