Report test failure when Delete VNF fails
[testsuite.git] / robot / resources / aai / service_instance.robot
1 *** Settings ***
2 Documentation     Validate A&AI Serivce Instance
3 ...
4 ...                   Validate A&AI Serivce Instance
5
6 Resource          aai_interface.robot
7 Library    Collections
8 Library    OperatingSystem
9 Library    RequestsLibrary
10 Library    JSONUtils
11 Library    HttpLibrary.HTTP
12 Library    StringTemplater
13 Resource          ../json_templater.robot
14 Resource          ../stack_validation/validate_vlb.robot
15 Resource          ../stack_validation/validate_vfw.robot
16 Resource          ../stack_validation/validate_vvg.robot
17 Resource          ../aai/aai_interface.robot
18
19 *** Variables ***
20 ${INDEX PATH}     /aai/v11
21 ${GENERIC_QUERY_PATH}  /search/generic-query?
22 ${SYSTEM USER}    robot-ete
23 ${CUSTOMER SPEC PATH}    /business/customers/customer/
24 ${SERVICE SUBSCRIPTIONS}    /service-subscriptions/service-subscription/
25 ${SERVICE INSTANCE}    /service-instances?service-instance-id=
26 ${SERVCE INSTANCE TEMPLATE}    robot/assets/templates/aai/service_subscription.template
27
28 ${GENERIC_VNF_PATH_TEMPLATE}   /network/generic-vnfs/generic-vnf/\${vnf_id}/vf-modules/vf-module/\${vf_module_id}
29 ${GENERIC_VNF_QUERY_TEMPLATE}   /network/generic-vnfs/generic-vnf/\${vnf_id}/vf-modules/vf-module?vf-module-name=\${vf_module_name}
30 ${VLB_CLOSED_LOOP_HACK_BODY}    robot/assets/templates/aai/vlb_closed_loop_hack.template
31
32 #*************** Test Case Variables *************
33 ${VLB_CLOSED_LOOP_DELETE}
34 ${VLB_CLOSED_LOOP_VNF_ID}
35
36 *** Keywords ***
37 Validate Service Instance
38     [Documentation]    Query and Validates A&AI Service Instance
39     [Arguments]    ${service_instance_name}    ${service_type}  ${customer_name}
40     ${cust_resp}=    Run A&AI Get Request      ${INDEX PATH}/business/customers?subscriber-name=${customer_name}
41         ${resp}=    Run A&AI Get Request      ${INDEX PATH}${CUSTOMER SPEC PATH}${cust_resp.json()['customer'][0]['global-customer-id']}${SERVICE SUBSCRIPTIONS}${service_type}${SERVICE INSTANCE}${service_instance_name}
42     Dictionary Should Contain Value     ${resp.json()['service-instance'][0]}    ${service_instance_name}
43     #Dictionary Should Contain Key      ${resp.json()['service-instance'][0]}    persona-model-id
44     #Dictionary Should Contain Key      ${resp.json()['service-instance'][0]}    persona-model-version
45
46 Validate Generic VNF
47     [Documentation]    Query and Validates A&AI Service Instance
48     [Arguments]    ${vnf_name}  ${vnf_type}    ${service_instance_id}
49     ${generic_vnf}=    Run A&AI Get Request      ${INDEX PATH}/network/generic-vnfs/generic-vnf?vnf-name=${vnf_name}
50     Dictionary Should Contain Value     ${generic_vnf.json()}    ${vnf_name}
51     ${returned_vnf_type}=    Get From Dictionary    ${generic_vnf.json()}    vnf-type
52     Should Contain      ${returned_vnf_type}    ${vnf_type}
53     ${vnf_id}=    Get From Dictionary    ${generic_vnf.json()}    vnf-id
54     ${generic_vnf}=    Run A&AI Get Request      ${INDEX PATH}/network/generic-vnfs/generic-vnf/${vnf_id}?depth=all
55     [Return]    ${generic_vnf.json()}
56
57 VLB Closed Loop Hack
58     [Arguments]    ${service}    ${generic_vnf}   ${closedloop_vf_module}
59     Return From Keyword If    '${service}' != 'vLB'
60     ${vnf_id}=     Get From Dictionary    ${generic_vnf}    vnf-id
61     ${vf_modules}=    Get From Dictionary    ${generic_vnf}    vf-modules
62     ${list}=    Get From Dictionary    ${vf_modules}   vf-module
63     ${vfmodule}=    Get From List    ${list}    0
64     ${persona_model_id}=    Get From Dictionary    ${closedloop_vf_module}    invariantUUID
65     ${persona_model_version}=   Get From Dictionary    ${closedloop_vf_module}    version
66     ${dummy}=    Catenate   dummy_${vnf_id}
67     ${dict}=    Create Dictionary   vnf_id=${vnf_id}   vf_module_id=${dummy}   persona_model_id=${persona_model_id}   persona_model_version=${persona_model_version}
68     ${datapath}=    Template String    ${GENERIC_VNF_PATH_TEMPLATE}    ${dict}
69     ${data}=    Fill JSON Template File    ${VLB_CLOSED_LOOP_HACK_BODY}    ${dict}
70         ${put_resp}=    Run A&AI Put Request     ${INDEX PATH}${datapath}   ${data}
71     ${status_string}=    Convert To String    ${put_resp.status_code}
72     Should Match Regexp    ${status_string}    ^(201|412)$
73     Set Test Variable   ${VLB_CLOSED_LOOP_DELETE}    ${datapath}
74     Set Test Variable   ${VLB_CLOSED_LOOP_VNF_ID}    ${vnf_id}
75
76
77 VLB Closed Loop Hack Update
78     [Documentation]   Update the A&AI vDNS scaling vf module to have persona-model-version 1 rather than 1.0
79     [Arguments]   ${stack_name}
80     ${dict}=    Create Dictionary   vnf_id=${VLB_CLOSED_LOOP_VNF_ID}   vf_module_name=${stack_name}
81     ${query}=   Template String   ${GENERIC_VNF_QUERY_TEMPLATE}   ${dict}
82     ${get_resp}=    Run A&AI Get Request     ${INDEX_PATH}${query}
83     ${json}=   Set Variable   ${get_resp.json()}
84     Set to Dictionary    ${json}   persona-model-version   1
85     ${vf_module_id}=   Get From Dictionary   ${json}   vf-module-id
86     Set to Dictionary   ${dict}   vf_module_id=${vf_module_id}
87     ${uri}=   Template String   ${GENERIC_VNF_PATH_TEMPLATE}   ${dict}
88     ${resp}=   Run A&AI Put Request    ${INDEX_PATH}${uri}   ${json}
89     ${get_resp}=    Run A&AI Get Request     ${INDEX_PATH}${query}
90
91
92 Teardown VLB Closed Loop Hack
93     Return From Keyword If    ' ${VLB_CLOSED_LOOP_DELETE}' == ''
94         Delete A&AI Entity    ${VLB_CLOSED_LOOP_DELETE}
95
96
97 Validate VF Module
98     [Documentation]    Query and Validates A&AI Service Instance
99     [Arguments]    ${vf_module_name}    ${stack_type}
100         Run Keyword If    '${stack_type}'=='vLB'    Validate vLB Stack    ${vf_module_name}
101         Run Keyword If    '${stack_type}'=='vFW'    Validate Firewall Stack    ${vf_module_name}
102         Run Keyword If    '${stack_type}'=='vVG'    Validate vVG Stack    ${vf_module_name}
103
104 *** Keywords ***
105 Create AAI Service Instance
106     [Documentation]    Query and Validates A&AI Service Instance
107     [Arguments]    ${customer_id}    ${service_type}    ${service_instance_id}    ${service_instance_name}
108     ${json_string}=    Catenate     { "service-type": "VDNS" , "service-subscriptions":[{"service-instance-id":"instanceid123","service-instance-name":"VDNS"}]}
109         ${put_resp}=    Run A&AI Put Request     ${INDEX PATH}${CUSTOMER SPEC PATH}${CUSTOMER ID}${SERVICE SUBSCRIPTIONS}/{service_type}   ${json_string}
110     Should Be Equal As Strings  ${put_resp.status_code}         201
111         [Return]  ${put_resp.status_code}
112