fix network definition when starting container
[osm/vim-emu.git] / src / emuvim / cli / compute.py
index 70de20a..6423917 100755 (executable)
@@ -29,15 +29,17 @@ class ZeroRpcClient(object):
     def start(self, args):
         nw_list = list()
         if args.get("network") is not None:
-            networks = args.get("network").split(",")
-            for nw in networks:
-                nw_list.append({"ip": nw})
+            nw_list = self._parse_network(args.get("network"))
+
+        pp.pprint('nwlist1: {0}'.format(nw_list))
+
         r = self.c.compute_action_start(
             args.get("datacenter"),
             args.get("name"),
             args.get("image"),
-            args.get("docker_command"),
-            nw_list)
+            nw_list,
+            args.get("docker_command")
+            )
         pp.pprint(r)
 
     def stop(self, args):
@@ -79,6 +81,37 @@ class ZeroRpcClient(object):
             args.get("datacenter"), args.get("name"))
         pp.pprint(r)
 
+    def profile(self, args):
+        nw_list = list()
+        if args.get("network") is not None:
+            nw_list = self._parse_network(args.get("network"))
+            logging.info('nwlist: {0}'.format(nw_list))
+        r = self.c.compute_profile(
+            args.get("datacenter"),
+            args.get("name"),
+            args.get("image"),
+            network=nw_list,
+            command=args.get("docker_command"),
+            input=args.get("input"),
+            output=args.get("output")
+        )
+        pp.pprint(r)
+
+    def _parse_network(self, network_str):
+        '''
+        parse the options for all network interfaces of the vnf
+        :param network_str: (id=x,ip=x.x.x.x/x), ...
+        :return: list of dicts [{"id":x,"ip":"x.x.x.x/x"}, ...]
+        '''
+        nw_list = list()
+        networks = network_str[1:-1].split('),(')
+        for nw in networks:
+            nw_dict = dict(tuple(e.split('=')) for e in nw.split(','))
+            nw_list.append(nw_dict)
+
+        return nw_list
+
+
 
 parser = argparse.ArgumentParser(description='son-emu compute')
 parser.add_argument(
@@ -93,7 +126,7 @@ parser.add_argument(
     help="Name of compute instance e.g. 'vnf1'")
 parser.add_argument(
     "--image","-i", dest="image",
-    help="Name of container image to be used e.g. 'ubuntu'")
+    help="Name of container image to be used e.g. 'ubuntu:trusty'")
 parser.add_argument(
     "--dcmd", "-c", dest="docker_command",
     help="Startup command of the container e.g. './start.sh'")
@@ -101,6 +134,12 @@ parser.add_argument(
     "--net", dest="network",
     help="Network properties of compute instance e.g. \
           '10.0.0.123/8' or '10.0.0.123/8,11.0.0.123/24' for multiple interfaces.")
+parser.add_argument(
+    "--input", "-in", dest="input",
+    help="input interface of the vnf to profile")
+parser.add_argument(
+    "--output", "-out", dest="output",
+    help="output interface of the vnf to profile")
 
 
 def main(argv):