X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=models%2Fopenmano%2Fpython%2Frift%2Fopenmano%2Fopenmano_client.py;h=834eea519176dd5f7ac383845a9e487437815e3c;hb=f86250edb1140b551886b6a184ad9963696bf72f;hp=bd34be17bb1f6030cfecae8eaf6f37ec4ff3a632;hpb=6f07e6f33f751ab4ffe624f6037f887b243bece2;p=osm%2FSO.git diff --git a/models/openmano/python/rift/openmano/openmano_client.py b/models/openmano/python/rift/openmano/openmano_client.py index bd34be17..834eea51 100755 --- a/models/openmano/python/rift/openmano/openmano_client.py +++ b/models/openmano/python/rift/openmano/openmano_client.py @@ -96,7 +96,7 @@ class OpenmanoHttpAPI(object): class OpenmanoCliAPI(object): """ This class implements the necessary funtionality to interact with """ - CMD_TIMEOUT = 30 + CMD_TIMEOUT = 120 def __init__(self, log, host, port, tenant): self._log = log @@ -143,8 +143,8 @@ class OpenmanoCliAPI(object): if proc.returncode != 0: self._log.error( - "Openmano command failed (rc=%s) with stdout: %s", - proc.returncode, stdout + "Openmano command %s failed (rc=%s) with stdout: %s", + cmd_args[1], proc.returncode, stdout ) raise OpenmanoCommandFailed(stdout) @@ -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))