blob: ea7b0f9209e123d3c6c4c349a13c581a4e3a2f2b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
*** 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}
# APPC max is 50 characters
\ ${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 #####
|