Remove the copyright in the license
[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/vnf_orchestration_test_template.robot
6 Resource        asdc_interface.robot
7 Resource        vid/vid_interface.robot
8
9 Library         UUID
10 Library         Collections
11 Library         OperatingSystem
12 Library         HttpLibrary.HTTP
13 Library         ExtendedSelenium2Library
14 Library         RequestsLibrary
15
16 *** Variables ***
17
18 ${ADD_DEMO_CUSTOMER_BODY}   robot/assets/templates/aai/add_demo_customer.template
19 ${AAI_INDEX_PATH}     /aai/v8
20 ${VF_MODULES_NAME}     _Demo_VFModules.json
21 ${FILE_CACHE}    /share/
22 ${DEMO_PREFIX}   demo
23
24
25 *** Keywords ***
26 Load Customer And Models
27     [Documentation]   Use openECOMP to Orchestrate a service.
28     [Arguments]    ${customer_name}
29     Load Customer  ${customer_name}
30     Load Models  ${customer_name}
31
32 Load Customer
33     [Documentation]   Use openECOMP to Orchestrate a service.
34     [Arguments]    ${customer_name}
35     Setup Orchestrate VNF   ${GLOBAL_AAI_CLOUD_OWNER}   SharedNode    OwnerType    v1    CloudZone
36     Set Test Variable    ${CUSTOMER_NAME}    ${customer_name}
37     ${region}=   Get Openstack Region
38     Create Customer For VNF Demo    ${CUSTOMER_NAME}    ${CUSTOMER_NAME}    INFRA    ${GLOBAL_AAI_CLOUD_OWNER}    ${region}   ${TENANT_ID}
39
40 Load Models
41     [Documentation]   Use openECOMP to Orchestrate a service.
42     [Arguments]    ${customer_name}
43     Set Test Variable    ${CUSTOMER_NAME}    ${customer_name}
44     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vFW   ${DEMO_PREFIX}VFW
45     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vLB   ${DEMO_PREFIX}VLB
46     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPE   ${DEMO_PREFIX}VCPE
47     ##${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vIMS   ${DEMO_PREFIX}VIMS
48
49 Distribute Model
50     [Arguments]   ${service}   ${modelName}
51     ${service_model_type}     ${vnf_type}    ${vf_modules}=   Model Distribution For Directory    ${service}   ${modelName}
52
53 Create Customer For VNF Demo
54     [Documentation]    Create demo customer for the demo
55     [Arguments]    ${customer_name}   ${customer_id}   ${customer_type}    ${clouder_owner}    ${cloud_region_id}    ${tenant_id}
56     ${data_template}=    OperatingSystem.Get File    ${ADD_DEMO_CUSTOMER_BODY}
57     ${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}
58     Set To Dictionary   ${arguments}       service1=vFW       service2=vLB   service3=vCPE   service4=vIMS
59     ${data}=    Fill JSON Template    ${data_template}    ${arguments}
60     ${put_resp}=    Run A&AI Put Request     ${INDEX PATH}${ROOT_CUSTOMER_PATH}${customer_id}    ${data}
61     ${status_string}=    Convert To String    ${put_resp.status_code}
62     Should Match Regexp    ${status_string}    ^(200|201|412)$
63     Create Service If Not Exists    vFW
64     Create Service If Not Exists    vLB
65     Create Service If Not Exists    vCPE
66     Create Service If Not Exists    vIMS
67
68 Preload User Model
69     [Documentation]   Preload the demo data for the passed VNF with the passed module name
70     [Arguments]   ${vnf_name}   ${vf_module_name}
71     # Go to A&AI and get information about the VNF we need to preload
72     ${status}  ${generic_vnf}=   Run Keyword And Ignore Error   Get Service Instance    ${vnf_name}
73     Run Keyword If   '${status}' == 'FAIL'   FAIL   VNF Name: ${vnf_name} is not found.
74     ${vnf_type}=   Set Variable   ${generic_vnf['vnf-type']}
75     ${relationships}=   Set Variable   ${generic_vnf['relationship-list']['relationship']}
76     ${relationship_data}=    Get Relationship Data   ${relationships}
77     ${customer_id}=   Catenate
78     :for    ${r}   in   @{relationship_data}
79     \   ${service}=   Set Variable If    '${r['relationship-key']}' == 'service-subscription.service-type'   ${r['relationship-value']}    ${service}
80     \   ${service_instance_id}=   Set Variable If    '${r['relationship-key']}' == 'service-instance.service-instance-id'   ${r['relationship-value']}   ${service_instance_id}
81     \   ${customer_id}=    Set Variable If   '${r['relationship-key']}' == 'customer.global-customer-id'   ${r['relationship-value']}   ${customer_id}
82     ${invariantUUID}=   Get Persona Model Id     ${service_instance_id}    ${service}    ${customer_id}
83
84     # We still need the vf module names. We can get them from VID using the persona_model_id (invariantUUID) from A&AI
85     Setup Browser
86     Login To VID GUI
87     ${vf_modules}=   Get Module Names from VID    ${invariantUUID}
88     Log    ${generic_vnf}
89     Log   ${service_instance_id},${vnf_name},${vnf_type},${vf_module_name},${vf_modules},${service}
90     Preload Vnf    ${service_instance_id}   ${vnf_name}   ${vnf_type}   ${vf_module_name}    ${vf_modules}    ${service}    demo
91     [Teardown]    Close All Browsers
92
93
94 Get Relationship Data
95     [Arguments]   ${relationships}
96     :for    ${r}   in   @{relationships}
97     \     ${status}   ${relationship_data}   Run Keyword And Ignore Error    Set Variable   ${r['relationship-data']}
98     \     Return From Keyword If    '${status}' == 'PASS'   ${relationship_data}
99
100
101 Get Service Instance
102     [Arguments]   ${vnf_name}
103     ${resp}=    Run A&AI Get Request      ${AAI_INDEX PATH}/network/generic-vnfs/generic-vnf?vnf-name=${vnf_name}
104     Should Be Equal As Strings  ${resp.status_code}     200
105     [Return]   ${resp.json()}
106
107 Get Persona Model Id
108     [Documentation]    Query and Validates A&AI Service Instance
109     [Arguments]    ${service_instance_id}    ${service_type}   ${customer_id}
110     ${resp}=    Run A&AI Get Request      ${INDEX PATH}${CUSTOMER SPEC PATH}${customer_id}${SERVICE SUBSCRIPTIONS}${service_type}${SERVICE INSTANCE}${service_instance_id}
111     ${persona_model_id}=   Get From DIctionary   ${resp.json()['service-instance'][0]}    persona-model-id
112     [Return]   ${persona_model_id}
113
114 APPC Mount Point
115     [Arguments]   ${vf_module_name}
116     Run Openstack Auth Request    auth
117     ${status}   ${stack_info}=   Run Keyword and Ignore Error    Wait for Stack to Be Deployed    auth    ${vf_module_name}   timeout=120s
118     Run Keyword if   '${status}' == 'FAIL'   FAIL   ${vf_module_name} Stack is not found
119     ${stack_id}=    Get From Dictionary    ${stack_info}    id
120     ${server_list}=    Get Openstack Servers    auth
121     ${vpg_name_0}=    Get From Dictionary    ${stack_info}    vpg_name_0
122     ${vpg_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vpg_name_0    network_name=public
123     ${vpg_oam_ip}=    Get From Dictionary    ${stack_info}    vpg_private_ip_1
124     ${appc}=    Create Mount Point In APPC    ${vpg_name_0}    ${vpg_oam_ip}
125
126 Instantiate VNF
127     [Arguments]   ${service}
128     Setup Orchestrate VNF    ${GLOBAL_AAI_CLOUD_OWNER}    SharedNode    OwnerType    v1    CloudZone
129     ${vf_module_name}    ${service}=    Orchestrate VNF    DemoCust    ${service}   ${service}    ${TENANT_NAME}
130     Save For Delete
131     Log to Console   Customer Name=${CUSTOMER_NAME}
132     Log to Console   VNF Module Name=${vf_module_name}
133
134 Save For Delete
135     [Documentation]   Create a variable file to be loaded for save for delete
136     ${dict}=    Create Dictionary
137     Set To Dictionary   ${dict}   TENANT_NAME=${TENANT_NAME}
138     Set To Dictionary   ${dict}   TENANT_ID=${TENANT_ID}
139     Set To Dictionary   ${dict}   CUSTOMER_NAME=${CUSTOMER_NAME}
140     Set To Dictionary   ${dict}   STACK_NAME=${STACK_NAME}
141     Set To Dictionary   ${dict}   SERVICE=${SERVICE}
142     Set To Dictionary   ${dict}   VVG_SERVER_ID=${VVG_SERVER_ID}
143     Set To Dictionary   ${dict}   SERVICE_INSTANCE_ID=${SERVICE_INSTANCE_ID}
144
145     Set To Dictionary   ${dict}   VLB_CLOSED_LOOP_DELETE=${VLB_CLOSED_LOOP_DELETE}
146     Set To Dictionary   ${dict}   VLB_CLOSED_LOOP_VNF_ID=${VLB_CLOSED_LOOP_VNF_ID}
147
148     Set To Dictionary   ${dict}   CATALOG_SERVICE_ID=${CATALOG_SERVICE_ID}
149
150     ${vars}=    Catenate
151     ${keys}=   Get Dictionary Keys    ${dict}
152     :for   ${key}   in   @{keys}
153     \    ${value}=   Get From Dictionary   ${dict}   ${key}
154     \    ${vars}=   Catenate   ${vars}${key} = "${value}"\n
155
156     ${comma}=   Catenate
157     ${vars}=    Catenate   ${vars}CATALOG_RESOURCE_IDS = [
158     :for   ${id}   in    @{CATALOG_RESOURCE_IDS}
159     \    ${vars}=    Catenate  ${vars}${comma} "${id}"
160     \    ${comma}=   Catenate   ,
161     ${vars}=    Catenate  ${vars}]\n
162     OperatingSystem.Create File   ${FILE_CACHE}/${STACK_NAME}.py   ${vars}
163
164