remove some global variables
[testsuite.git] / robot / resources / demo_preload.robot
1 *** Settings ***
2 Documentation     This test template encapsulates the VNF Orchestration use case.
3
4 Resource        test_templates/model_test_template.robot
5 Resource        test_templates/model_test_template_vcperescust.robot
6 Resource        test_templates/vnf_orchestration_test_template.robot
7 Resource        asdc_interface.robot
8 Resource        so_interface.robot
9 Resource        vid/vid_interface.robot
10 Resource        consul_interface.robot
11 Resource        policy_interface.robot
12 Resource        aai/create_availability_zone.robot
13
14 Library         ONAPLibrary.Utilities
15 Library         Collections
16 Library         OperatingSystem
17 Library         SeleniumLibrary
18 Library         RequestsLibrary
19 Library         ONAPLibrary.Templating
20
21 *** Variables ***
22
23 ${ADD_DEMO_CUSTOMER_BODY}   aai/add_demo_customer.jinja
24 ${AAI_INDEX_PATH}     /aai/v8
25 ${VF_MODULES_NAME}     _Demo_VFModules.json
26 ${FILE_CACHE}    /share/
27 ${DEMO_PREFIX}   demo
28 ${VPKG_MODULE_LABEL}    base_vpkg
29
30
31 *** Keywords ***
32 Load Customer And Models
33     [Documentation]   Use openECOMP to Orchestrate a service.
34     [Arguments]    ${customer_name}
35     Load OwningEntity  lineOfBusiness  LOB-${customer_name}
36     Load OwningEntity  platform  Platform-${customer_name}
37     Load OwningEntity  project  Project-${customer_name}
38     Load OwningEntity  owningEntity  OE-${customer_name}
39     Load Customer  ${customer_name}
40     Load Models  ${customer_name}
41
42 Load OwningEntity
43     [Documentation]   Use openECOMP to Orchestrate a service.
44     [Arguments]    ${parameter}   ${name}
45     ${data_path}=  Set Variable  /maintenance/category_parameter/${parameter}
46     ${vid_data}=  Set Variable  {"options":["${name}"]}
47     ${auth}=  Create List  ${GLOBAL_VID_USERNAME}    ${GLOBAL_VID_PASSWORD}
48     Log    Creating session ${data_path}
49     ${session}=    Create Session       vid    ${VID_ENDPOINT}${VID_ENV}     auth=${auth}
50     ${uuid}=    Generate UUID4
51     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    USER_ID=${GLOBAL_VID_USERNAME}    X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
52     ${resp}=    Post Request    vid     ${data_path}   data=${vid_data}    headers=${headers}
53         
54 Load Customer
55     [Documentation]   Use openECOMP to Orchestrate a service.
56     [Arguments]    ${customer_name}
57     ${tenant_id}    ${tenant_name}=    Setup Orchestrate VNF   ${GLOBAL_AAI_CLOUD_OWNER}   SharedNode    OwnerType    v1    CloudZone
58     Set Test Variable    ${CUSTOMER_NAME}    ${customer_name}
59     ${region}=   Get Openstack Region
60     Create Customer For VNF Demo    ${CUSTOMER_NAME}    ${CUSTOMER_NAME}    INFRA    ${GLOBAL_AAI_CLOUD_OWNER}    ${region}   ${tenant_id}
61     Create Customer For VNF Demo    ${CUSTOMER_NAME}    ${CUSTOMER_NAME}    INFRA    ${GLOBAL_AAI_CLOUD_OWNER}    RegionTlab  50b190410b2a4c229d8a6044a80ab7c1 
62     Create Availability Zone If Not Exists    ${GLOBAL_AAI_CLOUD_OWNER}    ${region}   ${GLOBAL_AAI_AVAILABILITY_ZONE_NAME}
63
64 Load Models
65     [Documentation]   Use openECOMP to Orchestrate a service.
66     [Arguments]    ${customer_name}
67     Set Test Variable    ${CUSTOMER_NAME}    ${customer_name}
68     Log   ${\n}Distributing vFWCL
69     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vFWCL   ${DEMO_PREFIX}VFWCL
70     Log   Distibuting vLB
71     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vLB   ${DEMO_PREFIX}VLB
72     ##${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPE   ${DEMO_PREFIX}VCPE
73     ##${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vIMS   ${DEMO_PREFIX}VIMS
74     Log   Distibuting vCPEInfra
75     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEInfra   ${DEMO_PREFIX}VCPEInfra
76     Log   Distibuting vCPEvBNG
77     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEvBNG   ${DEMO_PREFIX}VCPEvBNG
78     Log   Distibuting vCPEvBRGEMU
79     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEvBRGEMU   ${DEMO_PREFIX}VCPEvBRGEMU 
80     Log   Distibuting vCPEvGMUX
81     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEvGMUX    ${DEMO_PREFIX}VCPEvGMUX
82     Log   Distibuting vCPEvGW (this is not vCPEResCust service)
83     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEvGW    ${DEMO_PREFIX}VCPEvGW
84
85 Distribute Model
86     [Arguments]   ${service}   ${modelName}
87     ${service_model_type}     ${vnf_type}    ${vf_modules}   ${catalog_resources}=   Model Distribution For Directory    ${service}   ${modelName}
88
89 Distribute vCPEResCust Model
90     [Arguments]   ${service}   ${modelName}
91     ${service_model_type}     ${vnf_type}    ${vf_modules}   ${catalog_resources}=   Model Distribution For vCPEResCust Directory    ${service}   ${modelName}
92
93
94 Create Customer For VNF Demo
95     [Documentation]    Create demo customer for the demo
96     [Arguments]    ${customer_name}   ${customer_id}   ${customer_type}    ${clouder_owner}    ${cloud_region_id}    ${tenant_id}
97     Create Service If Not Exists    vFW
98     Create Service If Not Exists    vFWCL
99     Create Service If Not Exists    vLB
100     Create Service If Not Exists    vCPE
101     Create Service If Not Exists    vIMS
102     Create Service If Not Exists    gNB
103     ${arguments}=    Create Dictionary    subscriber_name=${customer_name}    global_customer_id=${customer_id}    subscriber_type=${customer_type}     cloud_owner=${clouder_owner}  cloud_region_id=${cloud_region_id}    tenant_id=${tenant_id}
104     Set To Dictionary   ${arguments}       service1=vFWCL       service2=vLB   service3=vCPE   service4=vIMS  service5=gNB   service6=vFW
105     Create Environment    aai    ${GLOBAL_TEMPLATE_FOLDER}
106     ${data}=   Apply Template    aai   ${ADD_DEMO_CUSTOMER_BODY}    ${arguments}
107     ${put_resp}=    Run A&AI Put Request     ${INDEX PATH}${ROOT_CUSTOMER_PATH}${customer_id}    ${data}
108     ${status_string}=    Convert To String    ${put_resp.status_code}
109     Should Match Regexp    ${status_string}    ^(200|201|412)$
110
111 Preload User Model
112     [Documentation]   Preload the demo data for the passed VNF with the passed module name
113     [Arguments]   ${vnf_name}   ${vf_module_name}    ${service}
114     # Go to A&AI and get information about the VNF we need to preload
115     ${status}  ${generic_vnf}=   Run Keyword And Ignore Error   Get Service Instance    ${vnf_name}
116     Run Keyword If   '${status}' == 'FAIL'   FAIL   VNF Name: ${vnf_name} is not found.
117     ${vnf_type}=   Set Variable   ${generic_vnf['vnf-type']}
118     ${relationships}=   Set Variable   ${generic_vnf['relationship-list']['relationship']}
119     ${relationship_data}=    Get Relationship Data   ${relationships}
120     ${customer_id}=   Catenate
121     :FOR    ${r}   IN   @{relationship_data}
122     \   ${service}=   Set Variable If    '${r['relationship-key']}' == 'service-subscription.service-type'   ${r['relationship-value']}    ${service}
123     \   ${service_instance_id}=   Set Variable If    '${r['relationship-key']}' == 'service-instance.service-instance-id'   ${r['relationship-value']}   ${service_instance_id}
124     \   ${customer_id}=    Set Variable If   '${r['relationship-key']}' == 'customer.global-customer-id'   ${r['relationship-value']}   ${customer_id}
125     ${invariantUUID}=   Get Persona Model Id     ${service_instance_id}    ${service}    ${customer_id}
126
127     # We still need the vf module names. We can get them from VID using the persona_model_id (invariantUUID) from A&AI
128     Setup Browser
129     Login To VID GUI
130     ${vf_modules}=   Get Module Names from VID    ${invariantUUID}
131     Log    ${generic_vnf}
132     Log   ${service_instance_id},${vnf_name},${vnf_type},${vf_module_name},${vf_modules},${service}
133     Preload Vnf    ${service_instance_id}   ${vnf_name}   ${vnf_type}   ${vf_module_name}    ${vf_modules}    ${service}    demo
134     [Teardown]    Close All Browsers
135
136
137 Get Relationship Data
138     [Arguments]   ${relationships}
139     :FOR    ${r}   IN   @{relationships}
140     \     ${status}   ${relationship_data}   Run Keyword And Ignore Error    Set Variable   ${r['relationship-data']}
141     \     Return From Keyword If    '${status}' == 'PASS'   ${relationship_data}
142
143
144 Get Generic VNF By ID
145     [Arguments]   ${vnf_id}
146     ${resp}=    Run A&AI Get Request      ${AAI_INDEX PATH}/network/generic-vnfs/generic-vnf?vnf-id=${vnf_id}
147     Should Be Equal As Strings  ${resp.status_code}     200
148     [Return]   ${resp.json()}
149
150 Get Service Instance
151     [Arguments]   ${vnf_name}
152     ${resp}=    Run A&AI Get Request      ${AAI_INDEX PATH}/network/generic-vnfs/generic-vnf?vnf-name=${vnf_name}
153     Should Be Equal As Strings  ${resp.status_code}     200
154     [Return]   ${resp.json()}
155
156 Get Persona Model Id
157     [Documentation]    Query and Validates A&AI Service Instance
158     [Arguments]    ${service_instance_id}    ${service_type}   ${customer_id}
159     ${resp}=    Run A&AI Get Request      ${INDEX PATH}${CUSTOMER SPEC PATH}${customer_id}${SERVICE SUBSCRIPTIONS}${service_type}${SERVICE INSTANCE}${service_instance_id}
160     ${persona_model_id}=   Get From DIctionary   ${resp.json()['service-instance'][0]}    model-invariant-id
161     [Return]   ${persona_model_id}
162
163 APPC Mount Point
164     [Arguments]   ${vf_module_name}
165     Run Openstack Auth Request    auth
166     ${status}   ${stack_info}=   Run Keyword and Ignore Error    Wait for Stack to Be Deployed    auth    ${vf_module_name}   timeout=120s
167     Run Keyword if   '${status}' == 'FAIL'   FAIL   ${vf_module_name} Stack is not found
168     ${stack_id}=    Get From Dictionary    ${stack_info}    id
169     ${server_list}=    Get Openstack Servers    auth
170     ${vpg_name_0}=    Get From Dictionary    ${stack_info}    vpg_name_0
171     ${vnf_id}=    Get From Dictionary    ${stack_info}    vnf_id
172     ${vpg_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vpg_name_0    network_name=${GLOBAL_INJECTED_OPENSTACK_PUBLIC_NETWORK}
173     ${appc}=    Create Mount Point In APPC    ${vnf_id}    ${vpg_public_ip}
174
175 Instantiate VNF
176     [Arguments]   ${service}   ${vf_module_label}=NULL
177     ${tenant_id}    ${tenant_name}=    Setup Orchestrate VNF    ${GLOBAL_AAI_CLOUD_OWNER}    SharedNode    OwnerType    v1    CloudZone
178     ${vf_module_name_list}    ${generic_vnfs}    ${vvg_server_id}=    Orchestrate VNF    DemoCust    ${service}   ${service}    ${tenant_id}    ${tenant_name}
179     Save For Delete    ${tenant_id}    ${tenant_name}    ${vvg_server_id}
180     Log   Customer Name=${CUSTOMER_NAME}
181     :FOR  ${vf_module_name}  IN   @{vf_module_name_list}
182     \   Log   VNF Module Name=${vf_module_name}
183     # Don't get from MSO for now due to SO-1186
184     # ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
185     ${model_invariant_id}=   Set Variable   ${EMPTY}
186     :FOR    ${vf_module}    IN    @{generic_vnfs}
187     \    ${generic_vnf}=    Get From Dictionary    ${generic_vnfs}    ${vf_module}
188     \    ${model_invariant_id}=    Set Variable If    '${vf_module_label}' in '${vf_module}'   ${generic_vnf['model-invariant-id']}    ${model_invariant_id}
189     Log   Update old vFWCL Policy for ModelInvariantID=${model_invariant_id}
190     ${status}   ${value}=   Run Keyword And Ignore Error  Update vVFWCL Policy   ${model_invariant_id}
191     :FOR  ${vf_module_name}  IN   @{vf_module_name_list}
192     \   Log   APPC Mount Point for VNF Module Name=${vf_module_name}
193     \   ${status}   ${value}=   Run Keyword And Ignore Error  APPC Mount Point    ${vf_module_name}
194     Log   Update Tca ControlLoopName
195     Update Tca ControlLoopName    ${model_invariant_id}
196
197 Instantiate Demo VNF
198     [Arguments]   ${service}   ${vf_module_label}=NULL
199     ${tenant_id}    ${tenant_name}=    Setup Orchestrate VNF    ${GLOBAL_AAI_CLOUD_OWNER}    SharedNode    OwnerType    v1    CloudZone
200     ${vf_module_name}    ${service}    ${generic_vnfs}=   Orchestrate Demo VNF    Demonstration    ${service}   ${service}    ${tenant_id}    ${tenant_name}
201     Log   Customer Name=${CUSTOMER_NAME}
202     Log   VNF Module Name=${vf_module_name}
203     # Don't get from MSO for now due to SO-1186
204     # ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
205     ${model_invariant_id}=   Set Variable   ${EMPTY}
206     :FOR    ${vf_module}    IN    @{generic_vnfs}
207     \    ${generic_vnf}=    Get From Dictionary    ${generic_vnfs}    ${vf_module}
208     \    ${model_invariant_id}=    Set Variable If    '${vf_module_label}' in '${vf_module}'   ${generic_vnf['model-invariant-id']}    ${model_invariant_id}
209     Log   ModelInvariantID=${model_invariant_id}
210     ${status}   ${value}=   Run Keyword And Ignore Error  Update vVFWCL Policy   ${model_invariant_id}
211     ${status}   ${value}=   Run Keyword And Ignore Error  APPC Mount Point    ${vf_module_name}
212
213
214 Save For Delete
215     [Documentation]   Create a variable file to be loaded for save for delete
216     [Arguments]    ${tenant_id}    ${tenant_name}    ${vvg_server_id}
217     ${dict}=    Create Dictionary
218     Set To Dictionary   ${dict}   TENANT_NAME=${tenant_name}
219     Set To Dictionary   ${dict}   TENANT_ID=${tenant_id}
220     Set To Dictionary   ${dict}   CUSTOMER_NAME=${CUSTOMER_NAME}
221     Set To Dictionary   ${dict}   STACK_NAME=${STACK_NAME}
222     Set To Dictionary   ${dict}   VVG_SERVER_ID=${vvg_server_id}
223     Set To Dictionary   ${dict}   SERVICE_INSTANCE_ID=${SERVICE_INSTANCE_ID}
224
225     Set To Dictionary   ${dict}   VLB_CLOSED_LOOP_DELETE=${VLB_CLOSED_LOOP_DELETE}
226     Set To Dictionary   ${dict}   VLB_CLOSED_LOOP_VNF_ID=${VLB_CLOSED_LOOP_VNF_ID}
227
228     Set To Dictionary   ${dict}   CATALOG_SERVICE_ID=${CATALOG_SERVICE_ID}
229
230     ${vars}=    Catenate
231     ${keys}=   Get Dictionary Keys    ${dict}
232     :FOR   ${key}   IN   @{keys}
233     \    ${value}=   Get From Dictionary   ${dict}   ${key}
234     \    ${vars}=   Catenate   ${vars}${key} = "${value}"\n
235
236     ${comma}=   Catenate
237     ${vars}=    Catenate   ${vars}CATALOG_RESOURCE_IDS = [
238     :FOR   ${id}   IN    @{CATALOG_RESOURCE_IDS}
239     \    ${vars}=    Catenate  ${vars}${comma} "${id}"
240     \    ${comma}=   Catenate   ,
241     ${vars}=    Catenate  ${vars}]\n
242     OperatingSystem.Create File   ${FILE_CACHE}/${STACK_NAME}.py   ${vars}
243     OperatingSystem.Create File   ${FILE_CACHE}/lastVNF4HEATBRIGE.py   ${vars}
244
245