blob: 71f079b3df40ddbf80ded5f6433b32893cbc4352 [file] [log] [blame]
*** Settings ***
Documentation This test can be used for an arbitrary VNF.
Resource ../vid/vid_interface.robot
Resource ../vid/create_vid_vnf.robot
Resource ../sdnc_interface.robot
Library ONAPLibrary.Openstack
Library SeleniumLibrary
Library Collections
Library ONAPLibrary.Utilities
Library ONAPLibrary.JSON
Library ONAPLibrary.ServiceMapping WITH NAME ServiceMapping
*** Keywords ***
Instantiate VNF
[Documentation] Log into VID, create service instance, vnf instance, and module. This handles an arbitrary, single VNF service w/ volume modules.
[Arguments] ${customer_name} ${service} ${service_type} ${service_name} ${service_model_type} ${vnf_type} ${vf_modules} ${catalog_resources} ${product_family} ${tenant_name} ${lcp_region} ${cloud_owner} ${project_name} ${owning_entity} ${api_type} ${line_of_business}=LOB-Demonstration ${platform}=Platform-Demonstration
${uuid}= Generate UUID4
${list}= Create List
${report_data}= Create List
Setup Browser
Login To VID GUI api_type=${api_type}
Log Creating ${service_name} in VID console=yes
${service_instance_id}= Wait Until Keyword Succeeds 900s 5s Create VID Service Instance ${customer_name} ${service_model_type} ${service_type} ${service_name} ${project_name} ${owning_entity}
Validate Service Instance ${service_instance_id} ${service_type} ${customer_name}
ServiceMapping.Set Directory default ${GLOBAL_SERVICE_MAPPING_DIRECTORY}
${vnflist}= ServiceMapping.Get Service Vnf Mapping default ${service}
${vnf_name_index}= Set Variable 0
${vf_module_name_list}= Create List
${uuid}= Evaluate str("${uuid}")[:8]
##### INSTANTIATING VNF IN VID #####
:FOR ${vnf} IN @{vnflist}
\ ${vnf_name}= Catenate Ete_${vnf}_${uuid}_${vnf_name_index}
\ ${generic_vnf_type}= Set Variable ${service_name}/${vnf_type} ${vnf_name_index}
\ ${vnf_name_index}= Evaluate ${vnf_name_index} + 1
\ Log Creating VNF ${vnf_name} in VID console=yes
\ Wait Until Keyword Succeeds 900s 5s Create VID VNF ${service_instance_id} ${vnf_name} ${product_family} ${lcp_region} ${tenant_name} ${vnf_type} ${CUSTOMER_NAME} line_of_business=${line_of_business} platform=${platform} cloud_owner_uc=${cloud_owner}
#### Calling Keyword To Create Each Module ####
\ ${report_data}= Loop and Create Modules in VID ${vf_modules} ${vnf_name} ${generic_vnf_type} ${service_instance_id} ${lcp_region} ${tenant_name} ${cloud_owner} ${customer_name} ${vnf} ${catalog_resources}
[Return] ${report_data}
Loop and Create Modules in VID
[Documentation] Loops through the VF modules in a VNF and instantiates in VID
[Arguments] ${vf_modules} ${vnf_name} ${generic_vnf_type} ${service_instance_id} ${lcp_region} ${tenant_name} ${cloud_owner} ${customer_name} ${vnf} ${resources}
${temp_list_for_report} Create List
### Base Module
:FOR ${module} IN @{vf_modules}
\ ${vf_module_type}= Get From Dictionary ${module} name
\ ${template_name}= Get Heat Template Name From Catalog Resource ${resources} ${vnf} ${vf_module_type}
\ ${preload_file} ${isBase}= Retrieve Module Preload and isBase ${template_name}
\ ${temp_dict_for_report} = Run Keyword If "${isBase}"=="true" Create Module in VID ${vnf_name} ${template_name} ${vf_module_type} ${generic_vnf_type} ${preload_file} ${service_instance_id} ${lcp_region} ${tenant_name} ${customer_name} ${cloud_owner}
\ Run Keyword If "${isBase}"=="true" Append To List ${temp_list_for_report} ${temp_dict_for_report}
### Incremental Modules
:FOR ${module} IN @{vf_modules}
\ ${vf_module_type}= Get From Dictionary ${module} name
\ ${template_name}= Get Heat Template Name From Catalog Resource ${resources} ${vnf} ${vf_module_type}
\ ${preload_file} ${isBase}= Retrieve Module Preload and isBase ${template_name}
\ ${temp_dict_for_report} = Run Keyword If "${isBase}"=="false" Create Module in VID ${vnf_name} ${template_name} ${vf_module_type} ${generic_vnf_type} ${preload_file} ${service_instance_id} ${lcp_region} ${tenant_name} ${customer_name} ${cloud_owner}
\ Run Keyword If "${isBase}"=="false" Append To List ${temp_list_for_report} ${temp_dict_for_report}
[Return] ${temp_list_for_report}
Create Module in VID
[Arguments] ${vnf_name} ${template_name} ${vf_module_type} ${generic_vnf_type} ${preload_file} ${service_instance_id} ${lcp_region} ${tenant_name} ${customer_name} ${cloud_owner}
${vf_module_name}= Catenate Vfmodule_${vnf_name}_${template_name}
${vf_module_name}= Remove String ${vf_module_name} .yaml .yml
${Module_name}= Set Variable
${api_type}= Retrieve Manifest Data api_type
Create Preload From JSON ${BUILD_DIR}/preloads/${preload_file} ${api_type} ${vf_module_name} ${vf_module_type} ${vnf_name} ${generic_vnf_type}
${temp_dict_for_report} Create Dictionary stack_name=${vf_module_name} template_name=${BUILD_DIR}/templates/${template_name} preload_name=${BUILD_DIR}/preloads/${preload_file}
Log Creating ${vf_module_name} in VID console=yes
${vf_module_id}= Create VID VNF module ${service_instance_id} ${vf_module_name} ${lcp_region} ${tenant_name} ${vf_module_type} ${customer_name} ${vnf_name} cloud_owner_uc=${cloud_owner}
[Return] ${temp_dict_for_report}
Retrieve Module Preload and isBase
[Arguments] ${file_name}
${json}= OperatingSystem.Get File ${BUILD_DIR}/vnf-details.json
${object}= Evaluate json.loads('''${json}''') json
:FOR ${vnf} IN @{object["modules"]}
\ ${module_present}= set variable True
\ ${file_name_m}= set variable ${vnf["filename"]}
\ ${preload_name}= set variable if '${file_name_m}' == '${file_name}' ${vnf["preload"]}
\ ${isBase}= set variable if '${file_name_m}' == '${file_name}' ${vnf["isBase"]}
\ Exit For Loop If '${file_name_m}' == '${file_name}'
\ ${module_present}= set variable False
Return From Keyword If ${module_present}==True ${preload_name} ${isBase}
Fail msg=ERROR: A module with the file name: ${file_name} is not present.
##### Getting The Heat Template Name From the Module ID, using the catalog data #####
Get Heat Template Name From Catalog Resource
[Documentation] Searching through the catalog resources looking for the heat template name
[Arguments] ${resources} ${vnf} ${module_id}
${keys}= Get Dictionary Keys ${resources}
${artifact_ids}= Get Artifact IDs From CSAR ${resources} ${vnf} ${module_id}
:FOR ${key} IN @{keys}
\ ${cr}= Get From Dictionary ${resources} ${key}
\ ${artifacts}= Set Variable ${cr['allArtifacts']}
\ ${artifactName}= Get Artifact Name From Artifacts ${artifacts} ${artifact_ids}
\ Return From Keyword If "${artifactName}" != "NOTFOUND" ${artifactName}
Get Artifact Name From Artifacts
[Arguments] ${artifacts} ${artifact_ids}
${keys}= Get Dictionary Keys ${artifacts}
:FOR ${key} IN @{keys}
\ ${artifact}= Get From Dictionary ${artifacts} ${key}
\ ${artifactType}= Get From Dictionary ${artifact} artifactType
\ ${csar_id}= Set Variable ''
\ ${csar_id}= Run Keyword If "${artifactType}"=="HEAT" Get From Dictionary ${artifact} artifactUUID
\ ${artifactName}= Run Keyword If $csar_id in $artifact_ids Get From Dictionary ${artifact} artifactName
\ Return From Keyword If $csar_id in $artifact_ids ${artifactName}
[Return] NOTFOUND
Get Artifact IDs From CSAR
[Documentation] Looking for the artifact ID for a given module
[Arguments] ${resources} ${vnf} ${module_id}
${keys}= Get Dictionary Keys ${resources}
:FOR ${key} IN @{keys}
\ ${cr}= Get From Dictionary ${resources} ${key}
\ ${groups}= Set Variable ${cr['groups']}
\ ${artifact_ids}= Get Artifact IDs From Module ${groups} ${module_id}
\ Return From Keyword If ${artifact_ids} is not None ${artifact_ids}
${empty_list}= Create List
[Return] ${empty_list}
Get Artifact IDs From Module
[Arguments] ${groups} ${module_id}
:FOR ${group} IN @{groups}
\ ${invariant_name}= Get From Dictionary ${group} invariantName
\ ${artifact_ids}= Create List
\ ${artifact_ids}= Run Keyword If "${invariant_name}"== "${module_id}" Get From Dictionary ${group} artifactsUuid
\ Return From Keyword If ${artifact_ids} is not None ${artifact_ids}
${empty_list}= Create List
[Return] ${empty_list}
##### End of catalog manipulation #####