+ # network related actions (setup chaining between VNFs)
+ self.api.add_resource(NetworkAction,
+ "/restapi/network")
+ self.api.add_resource(DrawD3jsgraph,
+ "/restapi/network/d3jsgraph")
+
+ # monitoring related actions
+ # export a network interface traffic rate counter
+ self.api.add_resource(MonitorInterfaceAction,
+ "/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")
+ # 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")
+ # install skewness monitor of resource usage disribution
+ # the skewness metric is exported
+ self.api.add_resource(MonitorSkewAction,
+ "/restapi/monitor/skewness")
+ # start a terminal window for the specified vnfs
+ self.api.add_resource(MonitorTerminal,
+ "/restapi/monitor/term")
+
+ logging.debug("Created API endpoint %s(%s:%d)" %
+ (self.__class__.__name__, self.ip, self.port))
+
+ def get_dashboard_path(self):
+ """
+ Return absolute path to dashboard files.
+ """
+ db_file = pkg_resources.resource_filename(
+ 'emuvim.dashboard', "index.html")
+ db_dir = path.dirname(db_file)
+ logging.info("[DB] Serving emulator dashboard from: {} and {}"
+ .format(db_dir, db_file))
+ return db_dir, db_file