"""
import logging
-from flask_restful import Resource
+from flask_restful import Resource, reqparse
from flask import request
import json
"""
global net
- def put(self, vnf_name, vnf_interface=None, metric='tx_packets', cookie=None):
+ def put(self):
logging.debug("REST CALL: start monitor VNF interface")
+ # get URL parameters
+ data = request.args
+ if data is None:
+ data = {}
+ vnf_name = data.get("vnf_name")
+ vnf_interface = data.get("vnf_interface", None)
+ metric = data.get("metric", 'tx_packets')
+ cookie = data.get("cookie")
+
try:
if cookie:
c = net.monitor_agent.setup_flow(vnf_name, vnf_interface, metric, cookie)
logging.exception("API error.")
return ex.message, 500, CORS_HEADER
- def delete(self, vnf_name, vnf_interface=None, metric='tx_packets', cookie=None):
+ def delete(self):
logging.debug("REST CALL: stop monitor VNF interface")
+ # get URL parameters
+ data = request.args
+ if data is None:
+ data = {}
+ vnf_name = data.get("vnf_name")
+ vnf_interface = data.get("vnf_interface", None)
+ metric = data.get("metric", 'tx_packets')
+ cookie = data.get("cookie")
+
try:
if cookie:
c = net.monitor_agent.stop_flow(vnf_name, vnf_interface, metric, cookie)
"""
global net
- def put(self, vnf_name, vnf_interface=None, metric='tx_packets', cookie=0):
+ def put(self):
logging.debug("REST CALL: start monitor VNF interface")
+ # get URL parameters
+ data = request.args
+ if data is None:
+ data = {}
+ vnf_name = data.get("vnf_name")
+ vnf_interface = data.get("vnf_interface", None)
+ metric = data.get("metric", 'tx_packets')
+ cookie = data.get("cookie", 0)
+
try:
c = net.monitor_agent.setup_flow(vnf_name, vnf_interface, metric, cookie)
# return monitor message response
logging.exception("API error.")
return ex.message, 500, CORS_HEADER
- def delete(self, vnf_name, vnf_interface=None, metric='tx_packets', cookie=0):
+ def delete(self):
logging.debug("REST CALL: stop monitor VNF interface")
+ # get URL parameters
+ data = request.args
+ if data is None:
+ data = {}
+ vnf_name = data.get("vnf_name")
+ vnf_interface = data.get("vnf_interface", None)
+ metric = data.get("metric", 'tx_packets')
+ cookie = data.get("cookie", 0)
+
try:
c = net.monitor_agent.stop_flow(vnf_name, vnf_interface, metric, cookie)
# return monitor message response
# the global net is set from the topology file, and connected via connectDCNetwork function in rest_api_endpoint.py
global net
- def put(self, vnf_src_name, vnf_dst_name):
+ def put(self):
logging.debug("REST CALL: monitor link flow add")
try:
command = 'add-flow'
- return self._MonitorLinkAction(vnf_src_name, vnf_dst_name, command=command)
+ return self._MonitorLinkAction(command=command)
except Exception as ex:
logging.exception("API error.")
return ex.message, 500, CORS_HEADER
- def delete(self, vnf_src_name, vnf_dst_name):
+ def delete(self):
logging.debug("REST CALL: monitor link flow remove")
try:
command = 'del-flows'
- return self._MonitorLinkAction(vnf_src_name, vnf_dst_name, command=command)
+ return self._MonitorLinkAction(command=command)
except Exception as ex:
logging.exception("API error.")
return ex.message, 500, CORS_HEADER
- def _MonitorLinkAction(self, vnf_src_name, vnf_dst_name, command=None):
+ def _MonitorLinkAction(self, command=None):
# call DCNetwork method, not really datacenter specific API for now...
# no check if vnfs are really connected to this datacenter...
+
try:
- # check if json data is a dict
- data = request.json
+ # get URL parameters
+ data = request.args
+ #then no data
if data is None:
data = {}
- elif type(data) is not dict:
- data = json.loads(request.json)
+
+ vnf_src_name = data.get("vnf_src_name")
+ vnf_dst_name = data.get("vnf_dst_name")
vnf_src_interface = data.get("vnf_src_interface")
vnf_dst_interface = data.get("vnf_dst_interface")
weight = data.get("weight")
"""
global net
- def put(self, vnf_name, resource_name='cpu'):
+ def put(self):
logging.debug("REST CALL: start monitor skewness")
+ # get URL parameters
+ data = request.args
+ if data is None:
+ data = {}
+ vnf_name = data.get("vnf_name")
+ resource_name = data.get("resource_name", 'cpu')
try:
# configure skewmon
c = net.monitor_agent.update_skewmon(vnf_name, resource_name, action='start')
logging.exception("API error.")
return ex.message, 500
- def delete(self, vnf_name, resource_name='cpu'):
+ def delete(self):
logging.debug("REST CALL: stop monitor skewness")
+ # get URL parameters
+ data = request.args
+ if data is None:
+ data = {}
+ vnf_name = data.get("vnf_name")
+ resource_name = data.get("resource_name", 'cpu')
try:
# configure skewmon
c = net.monitor_agent.update_skewmon(vnf_name, resource_name, action='stop')
global net
- def put(self, vnf_src_name, vnf_dst_name):
+ def put(self):
logging.debug("REST CALL: network chain add")
command = 'add-flow'
- return self._NetworkAction(vnf_src_name, vnf_dst_name, command=command)
+ return self._NetworkAction(command=command)
- def delete(self, vnf_src_name, vnf_dst_name):
+ def delete(self):
logging.debug("REST CALL: network chain remove")
command = 'del-flows'
- return self._NetworkAction(vnf_src_name, vnf_dst_name, command=command)
+ return self._NetworkAction(command=command)
- def _NetworkAction(self, vnf_src_name, vnf_dst_name, command=None):
+ def _NetworkAction(self, command=None):
# call DCNetwork method, not really datacenter specific API for now...
# no check if vnfs are really connected to this datacenter...
try:
# check if json data is a dict
- data = request.json
+ data = request.args
+ # try json payload
+ if data is None:
+ data = request.json
+ # then no data
if data is None:
data = {}
elif type(data) is not dict:
data = json.loads(request.json)
+ vnf_src_name = data.get("vnf_src_name")
+ vnf_dst_name = data.get("vnf_dst_name")
vnf_src_interface = data.get("vnf_src_interface")
vnf_dst_interface = data.get("vnf_dst_interface")
weight = data.get("weight")
# network related actions (setup chaining between VNFs)
self.api.add_resource(NetworkAction,
- "/restapi/network/<vnf_src_name>/<vnf_dst_name>")
+ "/restapi/network")
# monitoring related actions
# export a network interface traffic rate counter
self.api.add_resource(MonitorInterfaceAction,
- "/restapi/monitor/interface/<vnf_name>/<metric>",
- "/restapi/monitor/interface/<vnf_name>/<vnf_interface>/<metric>",
- "/restapi/monitor/interface/<vnf_name>/<vnf_interface>/<metric>/<cookie>")
+ "/restapi/monitor/interface")
# export flow traffic counter, of a manually pre-installed flow entry, specified by its cookie
self.api.add_resource(MonitorFlowAction,
- "/restapi/monitor/flow/<vnf_name>/<metric>/<cookie>",
- "/restapi/monitor/flow/<vnf_name>/<vnf_interface>/<metric>/<cookie>")
+ "/restapi/monitor/flow")
# install monitoring of a specific flow on a pre-existing link in the service.
# the traffic counters of the newly installed monitor flow are exported
self.api.add_resource(MonitorLinkAction,
- "/restapi/monitor/link/<vnf_src_name>/<vnf_dst_name>")
+ "/restapi/monitor/link")
# install skewness monitor of resource usage disribution
# the skewness metric is exported
self.api.add_resource(MonitorSkewAction,