*** Settings *** Documentation Policy Closed Loop Test cases Resource ../stack_validation/policy_check_vfw.robot Library String Library Process Library ONAPLibrary.Templating WITH NAME Templating Library ONAPLibrary.Utilities *** Variables *** ${RESOURCE_PATH_CREATE} /pdp/createPolicy ${RESOURCE_PATH_CREATE_PUSH} /pdp/pushPolicy ${RESOURCE_PATH_CREATE_DELETE} /pdp/deletePolicy ${RESOURCE_PATH_GET_CONFIG} /pdp/getConfig ${CREATE_CONFIG_TEMPLATE} policy/closedloop_configpolicy.jinja ${CREATE_OPS_TEMPLATE} policy/closedloop_opspolicy.jinja ${PUSH_POLICY_TEMPLATE} policy/closedloop_pushpolicy.jinja ${DEL_POLICY_TEMPLATE} policy/closedloop_deletepolicy.jinja ${GECONFIG_VFW_TEMPLATE} policy/closedloop_getconfigpolicy.jinja # 'Normal' number of pg streams that will be set when policy is triggered ${VFWPOLICYRATE} 5 # Max nslookup requests per second before triggering event. ${VLBPOLICYRATE} 20 ${CONFIG_POLICY_NAME} vFirewall ${CONFIG_POLICY_TYPE} Unknown ${OPS_POLICY_TYPE} BRMS_PARAM # VFW low threshold ${Expected_Severity_1} MAJOR ${Expected_Threshold_1} 300 ${Expected_Direction_1} LESS_OR_EQUAL # VFW high threshold ${Expected_Severity_2} CRITICAL ${Expected_Threshold_2} 700 ${Expected_Direction_2} GREATER_OR_EQUAL # VDNS High threshold ${Expected_Severity_3} MAJOR ${Expected_Threshold_3} 200 ${Expected_Direction_3} GREATER_OR_EQUAL *** Keywords *** VFW Policy Log Suite name ${SUITE NAME} ${TEST NAME} ${PREV TEST NAME} Initialize VFW Policy ${stackname} ${generic_vnfs} ${server_id} ${service_instance_id} ${customer_name} ${uris_to_delete}= Orchestrate VNF vFW closedloop Policy Check FirewallCL Stack ${stackname} ${VFWPOLICYRATE} Delete VNF ${None} ${server_id} ${customer_name} ${service_instance_id} ${stackname} ${uris_to_delete} VDNS Policy Initialize VDNS Policy ${stackname} ${generic_vnfs} ${server_id} ${service_instance_id} ${customer_name} ${uris_to_delete}= Orchestrate VNF vDNS closedloop ${dnsscaling}= Policy Check vLB Stack ${stackname} ${VLBPOLICYRATE} Delete VNF ${None} ${server_id} ${customer_name} ${service_instance_id} ${stackname} ${uris_to_delete} Initialize VFW Policy Get Configs VFW Policy Initialize VDNS Policy Get Configs VDNS Policy Get Configs VFW Policy [Documentation] Get Config Policy for VFW ${getconfigpolicy}= Catenate .*${CONFIG_POLICY_NAME}* ${configpolicy_name}= Create Dictionary config_policy_name=${getconfigpolicy} Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER} ${output}= Templating.Apply Template cl ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name} ${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output} Should Be Equal As Strings ${get_resp.status_code} 200 ${config}= Catenate ${get_resp.json()[0]["config"]} ${thresholds}= Get Variable Value ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"]} # Extract object1 from Array Should Be Equal ${thresholds[0]["severity"]} ${Expected_Severity_1} Should Be Equal As Integers ${thresholds[0]["thresholdValue"]} ${Expected_Threshold_1} Should Be Equal ${thresholds[0]["direction"]} ${Expected_Direction_1} # Extract object2 from Array Should Be Equal ${thresholds[1]["severity"]} ${Expected_Severity_2} Should Be Equal As Integers ${thresholds[1]["thresholdValue"]} ${Expected_Threshold_2} Should Be Equal ${thresholds[1]["direction"]} ${Expected_Direction_2} Get Configs VDNS Policy [Documentation] Get Config Policy for VDNS ${getconfigpolicy}= Catenate .*MicroServicevDNS* ${configpolicy_name}= Create Dictionary config_policy_name=${getconfigpolicy} Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER} ${output}= Templating.Apply Template cl ${GECONFIG_VFW_TEMPLATE} ${configpolicy_name} ${get_resp} = Run Policy Get Configs Request ${RESOURCE_PATH_GET_CONFIG} ${output} Should Be Equal As Strings ${get_resp.status_code} 200 ${config}= Catenate ${get_resp.json()[0]["config"]} ${thresholds}= Get Variable Value ${config["content"]["tca_policy"]["metricsPerEventName"][0]["thresholds"]} # Extract object1 from Array Should Be Equal ${thresholds[0]["severity"]} ${Expected_Severity_2} Should Be Equal As Integers ${thresholds[0]["thresholdValue"]} ${Expected_Threshold_1} Should Be Equal ${thresholds[0]["direction"]} ${Expected_Direction_3} Teardown Closed Loop [Documentation] Tear down a closed loop test case [Arguments] ${customer_name} ${catalog_service_id} ${catalog_resource_ids} Terminate All Processes Teardown VNF ${customer_name} ${catalog_service_id} ${catalog_resource_ids} Log Teardown complete Create Config Policy [Documentation] Create Config Policy ${randompolicyname} = Create Policy Name ${policyname1}= Catenate com.${randompolicyname} ${CONFIG_POLICY_NAME}= Catenate ${policyname1} ${configpolicy}= Create Dictionary policy_name=${CONFIG_POLICY_NAME} Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER} ${output}= Templating.Apply Template cl ${CREATE_CONFIG_TEMPLATE} ${configpolicy} ${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE} ${output} Should Be Equal As Strings ${put_resp.status_code} 200 Create Policy Name [Documentation] Generate Policy Name [Arguments] ${prefix}=ETE_ ${random}= Generate Random String 15 [LOWER][NUMBERS] ${policyname}= Catenate ${prefix}${random} [Return] ${policyname} Create Ops Policy [Documentation] Create Opertional Policy ${randompolicyname} = Create Policy Name ${policyname1}= Catenate com.${randompolicyname} ${dict}= Create Dictionary policy_name=${policyname1} Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER} ${output}= Templating.Apply Template cl ${CREATE_OPS_TEMPLATE} ${dict} ${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE} ${output} Log ${put_resp} Should Be Equal As Strings ${put_resp.status_code} 200 Push Ops Policy [Documentation] Push Ops Policy [Arguments] ${policyname} ${policytype} ${dict}= Create Dictionary policy_name=${policyname} policy_type=${policytype} Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER} ${output}= Templating.Apply Template cl ${PUSH_POLICY_TEMPLATE} ${dict} ${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE_PUSH} ${output} Should Be Equal As Strings ${put_resp.status_code} 200 Push Config Policy [Documentation] Push Config Policy [Arguments] ${policyname} ${policytype} ${dict}= Create Dictionary policy_name=${policyname} policy_type=${policytype} Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER} ${output}= Templating.Apply Template cl ${PUSH_POLICY_TEMPLATE} ${dict} ${put_resp} = Run Policy Put Request ${RESOURCE_PATH_CREATE_PUSH} ${output} Should Be Equal As Strings ${put_resp.status_code} 200 Delete Config Policy [Documentation] Delete Config Policy [Arguments] ${policy_name} ${policyname3}= Catenate com.Config_BRMS_Param_${policyname}.1.xml ${dict}= Create Dictionary policy_name=${policyname3} Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER} ${output}= Templating.Apply Template cl ${DEL_POLICY_TEMPLATE} ${dict} ${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output} Should Be Equal As Strings ${put_resp.status_code} 200 Delete Ops Policy [Documentation] Delete Ops Policy [Arguments] ${policy_name} ${policyname3}= Catenate com.Config_MS_com.vFirewall.1.xml ${dict}= Create Dictionary policy_name=${policyname3} Templating.Create Environment cl ${GLOBAL_TEMPLATE_FOLDER} ${output}= Templating.Apply Template cl ${DEL_POLICY_TEMPLATE} ${dict} ${put_resp} = Run Policy Delete Request ${RESOURCE_PATH_CREATE_DELETE} ${output} Should Be Equal As Strings ${put_resp.status_code} 200 Orchestrate VNF vFW closedloop [Documentation] VNF Orchestration for vFW Log VNF Orchestration flow TEST NAME=${TEST NAME} ${tenant_id} ${tenant_name}= Setup Orchestrate VNF ${GLOBAL_AAI_CLOUD_OWNER} SharedNode OwnerType v1 CloudZone ${uuid}= Generate UUID4 ${vf_module_name_list} ${generic_vnfs} ${server_id} ${service_instance_id} ${catalog_resource_ids} ${catalog_service_id} ${uris_to_delete}= Orchestrate VNF ETE_CLP_${uuid} vFWCL vFWCL ${tenant_id} ${tenant_name} ${customer_name}= Catenate ETE_CLP_${uuid} [Return] ${vf_module_name_list} ${generic_vnfs} ${server_id} ${service_instance_id} ${customer_name} ${uris_to_delete} Orchestrate VNF vDNS closedloop [Documentation] VNF Orchestration for vLB Log VNF Orchestration flow TEST NAME=${TEST NAME} ${tenant_id} ${tenant_name}= Setup Orchestrate VNF ${GLOBAL_AAI_CLOUD_OWNER} SharedNode OwnerType v1 CloudZone ${uuid}= Generate UUID4 ${vf_module_name_list} ${generic_vnfs} ${server_id} ${service_instance_id} ${catalog_resource_ids} ${catalog_service_id} ${uris_to_delete}= Orchestrate VNF ETE_CLP_${uuid} vLB vLB ${tenant_id} ${tenant_name} ${customer_name}= Catenate ETE_CLP_${uuid} [Return] ${vf_module_name_list} ${generic_vnfs} ${server_id} ${service_instance_id} ${customer_name} ${uris_to_delete} VFWCL High Test [Documentation] Test Control Loop for High Traffic [Arguments] ${pkg_host} Enable Streams V2 ${pkg_host} 10 Log Set number of streams to 10 :FOR ${i} IN RANGE 12 \ Sleep 15s \ ${resp}= Get List Of Enabled Streams V2 ${pkg_host} \ ${stream_count}= Set Variable ${resp['stream-count']['streams']['active-streams']} \ Log Number of streams: ${stream_count} \ Exit For Loop If '${stream_count}'=='5' Should Be Equal As Integers ${stream_count} 5 VFWCL Low Test [Documentation] Test Control Loop for Low Traffic [Arguments] ${pkg_host} Enable Streams V2 ${pkg_host} 1 Log Set number of streams to 1 :FOR ${i} IN RANGE 12 \ Sleep 15s \ ${resp}= Get List Of Enabled Streams V2 ${pkg_host} \ ${stream_count}= Set Variable ${resp['stream-count']['streams']['active-streams']} \ Log Number of streams: ${stream_count} \ Exit For Loop If '${stream_count}'=='5' Should Be Equal As Integers ${stream_count} 5 VFWCL Set To Medium [Documentation] Set flows to Medium to turn off control loop [Arguments] ${pkg_host} Enable Streams V2 ${pkg_host} 5