X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fvim-emu.git;a=blobdiff_plain;f=emuvim%2Fcli%2Fnetwork.py;h=fd7851a76c830c6b36cd98fec63ba64a74c7a6f1;hp=080b0ac60f956647db31ed219382aa2b7cb7e58c;hb=c5a536a1796846be97e5ba6ce9c20d73b6fd0052;hpb=a29c50cffd72de2f5533bb4f294adfe9a0f655d5 diff --git a/emuvim/cli/network.py b/emuvim/cli/network.py index 080b0ac..fd7851a 100755 --- a/emuvim/cli/network.py +++ b/emuvim/cli/network.py @@ -1,9 +1,64 @@ -""" -son-emu network CLI -(c) 2016 by Manuel Peuster -""" - - -def main(argv): - print "This is the son-emu network CLI." - print "Arguments: %s" % str(argv) +""" +son-emu network CLI +(c) 2016 by Manuel Peuster +""" + +import argparse +import pprint +from tabulate import tabulate +import zerorpc + + +pp = pprint.PrettyPrinter(indent=4) + +class ZeroRpcClient(object): + + def __init__(self): + self.c = zerorpc.Client() + # TODO connect to DCNetwork API + #self.c.connect("tcp://127.0.0.1:4242") # TODO hard coded for now. we'll change this later + self.c.connect("tcp://127.0.0.1:5151") + self.cmds = {} + + def execute_command(self, args): + if getattr(self, args["command"]) is not None: + # call the local method with the same name as the command arg + getattr(self, args["command"])(args) + else: + print "Command not implemented." + + def add(self, args): + r = self.c.network_action_start( + #args.get("datacenter"), + args.get("source"), + args.get("destination")) + pp.pprint(r) + + def remove(self, args): + r = self.c.network_action_stop( + #args.get("datacenter"), + args.get("source"), + args.get("destination")) + pp.pprint(r) + + +parser = argparse.ArgumentParser(description='son-emu network') +parser.add_argument( + "command", + help="Action to be executed: add|remove") +parser.add_argument( + "--datacenter", "-d", dest="datacenter", + help="Data center to in which the network action should be initiated") +parser.add_argument( + "--source", "-src", dest="source", + help="vnf name of the source of the chain") +parser.add_argument( + "--destination", "-dst", dest="destination", + help="vnf name of the destination of the chain") + +def main(argv): + print "This is the son-emu network CLI." + print "Arguments: %s" % str(argv) + args = vars(parser.parse_args(argv)) + c = ZeroRpcClient() + c.execute_command(args)