DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 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 |
jf9860 | 75010a4 | 2017-02-22 16:52:54 -0500 | [diff] [blame] | 17 | Resource ../aai/aai_interface.robot |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 18 | |
| 19 | *** Variables *** |
Jerry Flood | 8a6b0b5 | 2017-11-12 15:44:21 -0500 | [diff] [blame] | 20 | ${INDEX PATH} /aai/v11 |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 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= |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 26 | ${SERVCE INSTANCE TEMPLATE} robot/assets/templates/aai/service_subscription.template |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 27 | |
| 28 | ${GENERIC_VNF_PATH_TEMPLATE} /network/generic-vnfs/generic-vnf/\${vnf_id}/vf-modules/vf-module/\${vf_module_id} |
jf9860 | de6a6e2 | 2017-03-04 13:14:09 -0500 | [diff] [blame] | 29 | ${GENERIC_VNF_QUERY_TEMPLATE} /network/generic-vnfs/generic-vnf/\${vnf_id}/vf-modules/vf-module?vf-module-name=\${vf_module_name} |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 30 | ${VLB_CLOSED_LOOP_HACK_BODY} robot/assets/templates/aai/vlb_closed_loop_hack.template |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 31 | |
| 32 | #*************** Test Case Variables ************* |
jf9860 | 75010a4 | 2017-02-22 16:52:54 -0500 | [diff] [blame] | 33 | ${VLB_CLOSED_LOOP_DELETE} |
jf9860 | de6a6e2 | 2017-03-04 13:14:09 -0500 | [diff] [blame] | 34 | ${VLB_CLOSED_LOOP_VNF_ID} |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 35 | |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 36 | *** Keywords *** |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 37 | Validate Service Instance |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 38 | [Documentation] Query and Validates A&AI Service Instance |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 39 | [Arguments] ${service_instance_name} ${service_type} ${customer_name} |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 40 | ${cust_resp}= Run A&AI Get Request ${INDEX PATH}/business/customers?subscriber-name=${customer_name} |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 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} |
Jerry Flood | 80ff985 | 2017-08-11 06:47:14 -0400 | [diff] [blame] | 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 |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 45 | |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 46 | Validate Generic VNF |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 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} |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 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} |
Jerry Flood | fe79d7f | 2017-11-22 17:32:18 -0500 | [diff] [blame] | 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 |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 55 | [Return] ${generic_vnf.json()} |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 56 | |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 57 | VLB Closed Loop Hack |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 58 | [Arguments] ${service} ${generic_vnf} ${closedloop_vf_module} |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 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 |
jf9860 | de6a6e2 | 2017-03-04 13:14:09 -0500 | [diff] [blame] | 66 | ${dummy}= Catenate dummy_${vnf_id} |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 67 | ${dict}= Create Dictionary vnf_id=${vnf_id} vf_module_id=${dummy} persona_model_id=${persona_model_id} persona_model_version=${persona_model_version} |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 68 | ${datapath}= Template String ${GENERIC_VNF_PATH_TEMPLATE} ${dict} |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 69 | ${data}= Fill JSON Template File ${VLB_CLOSED_LOOP_HACK_BODY} ${dict} |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 70 | ${put_resp}= Run A&AI Put Request ${INDEX PATH}${datapath} ${data} |
| 71 | ${status_string}= Convert To String ${put_resp.status_code} |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 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} |
jf9860 | de6a6e2 | 2017-03-04 13:14:09 -0500 | [diff] [blame] | 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} |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 81 | ${query}= Template String ${GENERIC_VNF_QUERY_TEMPLATE} ${dict} |
jf9860 | de6a6e2 | 2017-03-04 13:14:09 -0500 | [diff] [blame] | 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} |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 87 | ${uri}= Template String ${GENERIC_VNF_PATH_TEMPLATE} ${dict} |
jf9860 | de6a6e2 | 2017-03-04 13:14:09 -0500 | [diff] [blame] | 88 | ${resp}= Run A&AI Put Request ${INDEX_PATH}${uri} ${json} |
| 89 | ${get_resp}= Run A&AI Get Request ${INDEX_PATH}${query} |
| 90 | |
jf9860 | 75010a4 | 2017-02-22 16:52:54 -0500 | [diff] [blame] | 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} |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 95 | |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 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 *** |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 105 | Create AAI Service Instance |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 106 | [Documentation] Query and Validates A&AI Service Instance |
| 107 | [Arguments] ${customer_id} ${service_type} ${service_instance_id} ${service_instance_name} |
DR695H | ccff30b | 2017-02-17 18:44:24 -0500 | [diff] [blame] | 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 |
jf9860 | 99c6329 | 2017-03-09 15:28:42 -0500 | [diff] [blame] | 111 | [Return] ${put_resp.status_code} |
| 112 | |