X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_ro%2Fnfvo.py;h=d8cd9803742316f97c310d8fc42fa87b9ea894b7;hb=a357269d27ddc4853a32f571acac07781230ded7;hp=19af225652aeb4571ab2d4b56f95f6fa192bd81f;hpb=8f79ea1c5c0115c4799a31d35bd3b49e006fed04;p=osm%2FRO.git diff --git a/osm_ro/nfvo.py b/osm_ro/nfvo.py index 19af2256..d8cd9803 100644 --- a/osm_ro/nfvo.py +++ b/osm_ro/nfvo.py @@ -372,7 +372,10 @@ def get_vim(mydb, nfvo_tenant=None, datacenter_id=None, datacenter_name=None, da config=extra, persistent_info=persistent_info ) except Exception as e: - raise NfvoException("Error at VIM {}; {}: {}".format(vim["type"], type(e).__name__, str(e)), HTTP_Internal_Server_Error) + http_code = HTTP_Internal_Server_Error + if isinstance(e, vimconn.vimconnException): + http_code = e.http_code + raise NfvoException("Error at VIM {}; {}: {}".format(vim["type"], type(e).__name__, str(e)), http_code) return vim_dict except db_base_Exception as e: raise NfvoException(str(e) + " at nfvo.get_vim", e.http_code) @@ -2240,7 +2243,8 @@ def new_nsd_v3(mydb, tenant_id, nsd_descriptor): db_sce_vnf = { "uuid": sce_vnf_uuid, "scenario_id": scenario_uuid, - "name": get_str(vnf, "member-vnf-index", 255), + # "name": get_str(vnf, "member-vnf-index", 255), + "name": existing_vnf[0]["name"][:200] + "." + get_str(vnf, "member-vnf-index", 50), "vnf_id": existing_vnf[0]["uuid"], "member_vnf_index": str(vnf["member-vnf-index"]), # TODO 'start-by-default': True @@ -2991,11 +2995,11 @@ def create_instance(mydb, tenant_id, instance_dict): for vnf_name, vnf_instance_desc in instance_dict.get("vnfs",{}).iteritems(): found = False for scenario_vnf in scenarioDict['vnfs']: - if vnf_name == scenario_vnf['name']: + if vnf_name == scenario_vnf['name'] or vnf_name == scenario_vnf['member_vnf_index']: found = True break if not found: - raise NfvoException("Invalid vnf name '{}' at instance:vnfs".format(vnf_instance_desc), HTTP_Bad_Request) + raise NfvoException("Invalid vnf name '{}' at instance:vnfs".format(vnf_name), HTTP_Bad_Request) if "datacenter" in vnf_instance_desc: # Add this datacenter to myvims vnf_instance_desc["datacenter"] = get_datacenter_uuid(mydb, tenant_id, vnf_instance_desc["datacenter"]) @@ -4199,16 +4203,16 @@ def instance_action(mydb,nfvo_tenant,instance_id, action_dict): input_vnfs = action_dict.pop("vnfs", []) input_vms = action_dict.pop("vms", []) - action_over_all = True if len(input_vnfs)==0 and len (input_vms)==0 else False + action_over_all = True if not input_vnfs and not input_vms else False vm_result = {} vm_error = 0 vm_ok = 0 for sce_vnf in instanceDict['vnfs']: for vm in sce_vnf['vms']: - if not action_over_all: - if sce_vnf['uuid'] not in input_vnfs and sce_vnf['vnf_name'] not in input_vnfs and \ - vm['uuid'] not in input_vms and vm['name'] not in input_vms: - continue + if not action_over_all and sce_vnf['uuid'] not in input_vnfs and sce_vnf['vnf_name'] not in input_vnfs and \ + sce_vnf['member_vnf_index'] not in input_vnfs and \ + vm['uuid'] not in input_vms and vm['name'] not in input_vms: + continue try: if "add_public_key" in action_dict: mgmt_access = {} @@ -4580,9 +4584,10 @@ def deassociate_datacenter_to_tenant(mydb, tenant_id, datacenter, vim_tenant_id= logger.error("Cannot delete datacenter_tenants " + str(e)) pass # the error will be caused because dependencies, vim_tenant can not be deleted thread_id = tenant_datacenter_item["datacenter_tenant_id"] - thread = vim_threads["running"][thread_id] - thread.insert_task("exit") - vim_threads["deleting"][thread_id] = thread + thread = vim_threads["running"].get(thread_id) + if thread: + thread.insert_task("exit") + vim_threads["deleting"][thread_id] = thread return "datacenter {} detached. {}".format(datacenter_id, warning)