2 Documentation Validate A&AI Serivce Instance
4 ... Validate A&AI Serivce Instance
6 Resource aai_interface.robot
8 Library OperatingSystem
9 Library RequestsLibrary
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
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
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 ${VLB_CLOSED_LOOP_DELETE}
32 ${VLB_CLOSED_LOOP_VNF_ID}
35 Validate Service Instance
36 [Documentation] Query and Validates A&AI Service Instance
37 [Arguments] ${service_instance_name} ${service_type} ${customer_name}
38 ${cust_resp}= Run A&AI Get Request ${INDEX PATH}/business/customers?subscriber-name=${customer_name}
39 ${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}
40 Dictionary Should Contain Value ${resp.json()['service-instance'][0]} ${service_instance_name}
41 Dictionary Should Contain Key ${resp.json()['service-instance'][0]} persona-model-id
42 Dictionary Should Contain Key ${resp.json()['service-instance'][0]} persona-model-version
45 [Documentation] Query and Validates A&AI Service Instance
46 [Arguments] ${vnf_name} ${vnf_type} ${service_instance_id}
47 ${generic_vnf}= Run A&AI Get Request ${INDEX PATH}/network/generic-vnfs/generic-vnf?vnf-name=${vnf_name}
48 Dictionary Should Contain Value ${generic_vnf.json()} ${vnf_name}
49 ${returned_vnf_type}= Get From Dictionary ${generic_vnf.json()} vnf-type
50 Should Contain ${returned_vnf_type} ${vnf_type}
51 [Return] ${generic_vnf.json()}
54 [Arguments] ${service} ${generic_vnf} ${closedloop_vf_module}
55 Return From Keyword If '${service}' != 'vLB'
56 ${vnf_id}= Get From Dictionary ${generic_vnf} vnf-id
57 ${vf_modules}= Get From Dictionary ${generic_vnf} vf-modules
58 ${list}= Get From Dictionary ${vf_modules} vf-module
59 ${vfmodule}= Get From List ${list} 0
60 ${persona_model_id}= Get From Dictionary ${closedloop_vf_module} invariantUUID
61 ${persona_model_version}= Get From Dictionary ${closedloop_vf_module} version
62 ${dummy}= Catenate dummy_${vnf_id}
63 ${dict}= Create Dictionary vnf_id=${vnf_id} vf_module_id=${dummy} persona_model_id=${persona_model_id} persona_model_version=${persona_model_version}
64 ${datapath}= Template String ${GENERIC_VNF_PATH_TEMPLATE} ${dict}
65 ${data}= Fill JSON Template File ${VLB_CLOSED_LOOP_HACK_BODY} ${dict}
66 ${put_resp}= Run A&AI Put Request ${INDEX PATH}${datapath} ${data}
67 ${status_string}= Convert To String ${put_resp.status_code}
68 Should Match Regexp ${status_string} ^(201|412)$
69 Set Test Variable ${VLB_CLOSED_LOOP_DELETE} ${datapath}
70 Set Test Variable ${VLB_CLOSED_LOOP_VNF_ID} ${vnf_id}
73 VLB Closed Loop Hack Update
74 [Documentation] Update the A&AI vDNS scaling vf module to have persona-model-version 1 rather than 1.0
75 [Arguments] ${stack_name}
76 ${dict}= Create Dictionary vnf_id=${VLB_CLOSED_LOOP_VNF_ID} vf_module_name=${stack_name}
77 ${query}= Template String ${GENERIC_VNF_QUERY_TEMPLATE} ${dict}
78 ${get_resp}= Run A&AI Get Request ${INDEX_PATH}${query}
79 ${json}= Set Variable ${get_resp.json()}
80 Set to Dictionary ${json} persona-model-version 1
81 ${vf_module_id}= Get From Dictionary ${json} vf-module-id
82 Set to Dictionary ${dict} vf_module_id=${vf_module_id}
83 ${uri}= Template String ${GENERIC_VNF_PATH_TEMPLATE} ${dict}
84 ${resp}= Run A&AI Put Request ${INDEX_PATH}${uri} ${json}
85 ${get_resp}= Run A&AI Get Request ${INDEX_PATH}${query}
88 Teardown VLB Closed Loop Hack
89 Return From Keyword If ' ${VLB_CLOSED_LOOP_DELETE}' == ''
90 Delete A&AI Entity ${VLB_CLOSED_LOOP_DELETE}
94 [Documentation] Query and Validates A&AI Service Instance
95 [Arguments] ${vf_module_name} ${stack_type}
96 Run Keyword If '${stack_type}'=='vLB' Validate vLB Stack ${vf_module_name}
97 Run Keyword If '${stack_type}'=='vFW' Validate Firewall Stack ${vf_module_name}
98 Run Keyword If '${stack_type}'=='vVG' Validate vVG Stack ${vf_module_name}
101 Create AAI Service Instance
102 [Documentation] Query and Validates A&AI Service Instance
103 [Arguments] ${customer_id} ${service_type} ${service_instance_id} ${service_instance_name}
104 ${json_string}= Catenate { "service-type": "VDNS" , "service-subscriptions":[{"service-instance-id":"instanceid123","service-instance-name":"VDNS"}]}
105 ${put_resp}= Run A&AI Put Request ${INDEX PATH}${CUSTOMER SPEC PATH}${CUSTOMER ID}${SERVICE SUBSCRIPTIONS}/{service_type} ${json_string}
106 Should Be Equal As Strings ${put_resp.status_code} 201
107 [Return] ${put_resp.status_code}