X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fcli%2Fmonitor.py;h=123abe5121daef3513ae0635313b60c5b50defe2;hb=78f01d36a61761680c74af6fb8ae91a2b4315406;hp=6885a3c55096f072ad35d6ef386fd1726f081695;hpb=7f89ec08278873d335e15a9cf39034692c666bff;p=osm%2Fvim-emu.git diff --git a/src/emuvim/cli/monitor.py b/src/emuvim/cli/monitor.py index 6885a3c..123abe5 100755 --- a/src/emuvim/cli/monitor.py +++ b/src/emuvim/cli/monitor.py @@ -1,5 +1,5 @@ """ -son-emu network CLI +son-emu monitor CLI (c) 2016 by Manuel Peuster """ @@ -7,6 +7,7 @@ import argparse import pprint from tabulate import tabulate import zerorpc +import time pp = pprint.PrettyPrinter(indent=4) @@ -27,27 +28,80 @@ class ZeroRpcClient(object): else: print "Command not implemented." - def get_rate(self, args): - r = self.c.monitor_get_rate( - args.get("vnf_name"), - args.get("direction")) + def setup_metric(self, args): + vnf_name = self._parse_vnf_name(args.get("vnf_name")) + vnf_interface = self._parse_vnf_interface(args.get("vnf_name")) + r = self.c.setup_metric( + vnf_name, + vnf_interface, + args.get("metric")) + pp.pprint(r) + + def stop_metric(self, args): + vnf_name = self._parse_vnf_name(args.get("vnf_name")) + vnf_interface = self._parse_vnf_interface(args.get("vnf_name")) + r = self.c.stop_metric( + vnf_name, + vnf_interface, + args.get("metric")) + pp.pprint(r) + + def setup_flow(self, args): + vnf_name = self._parse_vnf_name(args.get("vnf_name")) + vnf_interface = self._parse_vnf_interface(args.get("vnf_name")) + r = self.c.setup_flow( + vnf_name, + vnf_interface, + args.get("metric"), + args.get("cookie")) + pp.pprint(r) + + def prometheus(self, args): + vnf_name = self._parse_vnf_name(args.get("vnf_name")) + vnf_interface = self._parse_vnf_interface(args.get("vnf_name")) + r = self.c.prometheus( + args.get("datacenter"), + vnf_name, + vnf_interface, + args.get("query")) pp.pprint(r) -parser = argparse.ArgumentParser(description='son-emu network') + def _parse_vnf_name(self, vnf_name_str): + vnf_name = vnf_name_str.split(':')[0] + return vnf_name + + def _parse_vnf_interface(self, vnf_name_str): + try: + vnf_interface = vnf_name_str.split(':')[1] + except: + vnf_interface = None + + return vnf_interface + +parser = argparse.ArgumentParser(description='son-emu monitor') parser.add_argument( "command", - help="Action to be executed: get_rate") + help="Action to be executed") parser.add_argument( "--vnf_name", "-vnf", dest="vnf_name", - help="vnf name to be monitored") + help="vnf name:interface to be monitored") +parser.add_argument( + "--metric", "-m", dest="metric", + help="tx_bytes, rx_bytes, tx_packets, rx_packets") +parser.add_argument( + "--cookie", "-c", dest="cookie", + help="flow cookie to monitor") +parser.add_argument( + "--query", "-q", dest="query", + help="prometheus query") parser.add_argument( - "--direction", "-d", dest="direction", - help="in (ingress rate) or out (egress rate)") + "--datacenter", "-d", dest="datacenter", + help="Data center where the vnf is deployed") def main(argv): - print "This is the son-emu monitor CLI." - print "Arguments: %s" % str(argv) + #print "This is the son-emu monitor CLI." + #print "Arguments: %s" % str(argv) args = vars(parser.parse_args(argv)) c = ZeroRpcClient() c.execute_command(args)