Bug 160 Fix SO restart with running NS instances
[osm/SO.git] / models / openmano / python / rift / openmano / openmano_client.py
index bd34be1..09fb43d 100755 (executable)
@@ -198,6 +198,7 @@ class OpenmanoCliAPI(object):
             output_lines = self._openmano_cmd(
                     ["vnf-list"],
                     )
+
         except OpenmanoCommandFailed as e:
             self._log.warning("Vnf listing returned an error: %s", str(e))
             return {}
@@ -206,8 +207,9 @@ class OpenmanoCliAPI(object):
         for line in output_lines:
             line = line.strip()
             uuid, name = line.split(" ", 1)
-            name_uuid_map[name] = uuid
+            name_uuid_map[name.strip()] = uuid.strip()
 
+        self._log.debug("VNF list: {}".format(name_uuid_map))
         return name_uuid_map
 
     def ns_create(self, ns_yaml_str, name=None):
@@ -249,8 +251,9 @@ class OpenmanoCliAPI(object):
         for line in output_lines:
             line = line.strip()
             uuid, name = line.split(" ", 1)
-            name_uuid_map[name] = uuid
+            name_uuid_map[name.strip()] = uuid.strip()
 
+        self._log.debug("Scenario list: {}".format(name_uuid_map))
         return name_uuid_map
 
     def ns_delete(self, ns_uuid):
@@ -282,8 +285,9 @@ class OpenmanoCliAPI(object):
         for line in output_lines:
             line = line.strip()
             uuid, name = line.split(" ", 1)
-            name_uuid_map[name] = uuid
+            name_uuid_map[name.strip()] = uuid.strip()
 
+        self._log.debug("Instance Scenario list: {}".format(name_uuid_map))
         return name_uuid_map
 
     def ns_instance_scenario_create(self, instance_yaml_str):
@@ -309,6 +313,44 @@ class OpenmanoCliAPI(object):
 
         return uuid
 
+
+    def ns_vim_network_create(self, net_create_yaml_str,datacenter_name):
+        """ Create a Openmano VIM network from input YAML string """
+
+        self._log.debug("Creating VIM network instance: %s, DC %s", net_create_yaml_str,datacenter_name)
+
+        with tempfile.NamedTemporaryFile() as net_create_file_hdl:
+            net_create_file_hdl.write(net_create_yaml_str.encode())
+            net_create_file_hdl.flush()
+
+            try:
+                output_lines = self._openmano_cmd(
+                        ["vim-net-create","--datacenter", datacenter_name, net_create_file_hdl.name],
+                        expected_lines=1
+                        )
+            except OpenmanoCommandFailed as e:
+                raise
+
+        uuid, _ = output_lines[0].split(" ", 1)
+
+        self._log.info("VIM Networks created in DC %s with ID: %s", datacenter_name, uuid)
+
+        return uuid
+
+    def ns_vim_network_delete(self, network_name,datacenter_name):
+        """ Delete a Openmano VIM network with given name """
+
+        self._log.debug("Deleting VIM network instance: %s, DC %s", network_name,datacenter_name)
+        try:
+            output_lines = self._openmano_cmd(
+                    ["vim-net-delete","--datacenter", datacenter_name, network_name],
+                    expected_lines=1
+                    )
+        except OpenmanoCommandFailed as e:
+            raise
+        self._log.info("VIM Network deleted in DC %s with name: %s", datacenter_name, network_name)
+
+
     def ns_instantiate(self, scenario_name, instance_name, datacenter_name=None):
         self._log.info(
                 "Instantiating NS %s using instance name %s",
@@ -428,6 +470,10 @@ def parse_args(argv=sys.argv[1:]):
             type=valid_uuid,
             )
 
+    _ = subparsers.add_parser(
+            'vnf-list',
+            help="List all the openmano VNFs in the catalog",
+            )
 
     ns_create_parser = subparsers.add_parser(
             'scenario-create',
@@ -449,6 +495,10 @@ def parse_args(argv=sys.argv[1:]):
             type=valid_uuid,
             )
 
+    _ = subparsers.add_parser(
+            'scenario-list',
+            help="List all the openmano scenarios in the catalog",
+            )
 
     ns_instance_create_parser = subparsers.add_parser(
             'scenario-deploy',
@@ -474,8 +524,14 @@ def parse_args(argv=sys.argv[1:]):
             )
 
 
+    _ = subparsers.add_parser(
+            'instance-scenario-list',
+            help="List all the openmano scenario instances in the catalog",
+            )
+
     _ = subparsers.add_parser(
             'datacenter-list',
+            help="List all the openmano datacenters",
             )
 
     args = parser.parse_args(argv)
@@ -500,18 +556,30 @@ def main():
     elif args.command == "vnf-delete":
         openmano_cli.vnf_delete(args.uuid)
 
+    elif args.command == "vnf-list":
+        for uuid, name in openmano_cli.vnf_list().items():
+            print("{} {}".format(uuid, name))
+
     elif args.command == "scenario-create":
         openmano_cli.ns_create(args.file.read())
 
     elif args.command == "scenario-delete":
         openmano_cli.ns_delete(args.uuid)
 
+    elif args.command == "scenario-list":
+        for uuid, name in openmano_cli.ns_list().items():
+            print("{} {}".format(uuid, name))
+
     elif args.command == "scenario-deploy":
         openmano_cli.ns_instantiate(args.scenario_name, args.instance_name)
 
     elif args.command == "instance-scenario-delete":
         openmano_cli.ns_terminate(args.instance_name)
 
+    elif args.command == "instance-scenario-list":
+        for uuid, name in openmano_cli.ns_instance_list().items():
+            print("{} {}".format(uuid, name))
+
     elif args.command == "datacenter-list":
         for uuid, name in openmano_cli.datacenter_list():
             print("{} {}".format(uuid, name))