X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fvim-emu.git;a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Frest%2Fnetwork.py;h=c4ab23f26ee466be4b1b167a1f0c9930e0a21994;hp=68256f59f650760db0ce0381c39b80a406618446;hb=8f2063d50f6d8520ca5f960c65e5eed2c5cd7bee;hpb=ff6b404f001a0460252a29051bc34c07c91e4cf1 diff --git a/src/emuvim/api/rest/network.py b/src/emuvim/api/rest/network.py index 68256f5..c4ab23f 100755 --- a/src/emuvim/api/rest/network.py +++ b/src/emuvim/api/rest/network.py @@ -38,7 +38,9 @@ from flask import request import json logging.basicConfig(level=logging.INFO) +CORS_HEADER = {'Access-Control-Allow-Origin': '*'} +# the global net is set from the topology file, and connected via connectDCNetwork function in rest_api_endpoint.py net = None @@ -53,6 +55,10 @@ class NetworkAction(Resource): :param match: OpenFlow match format of the flow entry :param bidirectional: boolean value if the link needs to be implemented from src to dst and back :param cookie: cookie value, identifier of the flow entry to be installed. + :param priority: integer indicating the priority of the flow entry + :param skip_vlan_tag: boolean to indicate whether a new vlan tag should be created for this chain + :param monitor: boolean to indicate whether a new vlan tag should be created for this chain + :param monitor_placement: 'tx'=place the monitoring flowrule at the beginning of the chain, 'rx'=place at the end of the chain :return: message string indicating if the chain action is succesful or not """ @@ -74,7 +80,9 @@ class NetworkAction(Resource): try: # check if json data is a dict data = request.json - if type(data) is not dict: + if data is None: + data = {} + elif type(data) is not dict: data = json.loads(request.json) vnf_src_interface = data.get("vnf_src_interface") @@ -83,6 +91,11 @@ class NetworkAction(Resource): match = data.get("match") bidirectional = data.get("bidirectional") cookie = data.get("cookie") + priority = data.get("priority") + skip_vlan_tag = data.get("skip_vlan_tag") + monitor = data.get("monitor") + monitor_placement = data.get("monitor_placement") + c = net.setChain( vnf_src_name, vnf_dst_name, vnf_src_interface=vnf_src_interface, @@ -91,9 +104,13 @@ class NetworkAction(Resource): weight=weight, match=match, bidirectional=bidirectional, - cookie=cookie) + cookie=cookie, + priority=priority, + skip_vlan_tag=skip_vlan_tag, + monitor=monitor, + monitor_placement=monitor_placement) # return setChain response - return str(c), 200 + return str(c), 200, CORS_HEADER except Exception as ex: logging.exception("API error.") - return ex.message, 500 \ No newline at end of file + return ex.message, 500, CORS_HEADER