onap on kubernetes source files
[oom.git] / kubernetes / config / docker / init / src / config / robot / robot / resources / test_templates / vnf_orchestration_test_template.robot
diff --git a/kubernetes/config/docker/init/src/config/robot/robot/resources/test_templates/vnf_orchestration_test_template.robot b/kubernetes/config/docker/init/src/config/robot/robot/resources/test_templates/vnf_orchestration_test_template.robot
new file mode 100644 (file)
index 0000000..df1f123
--- /dev/null
@@ -0,0 +1,160 @@
+*** Settings ***
+Documentation    This test template encapsulates the VNF Orchestration use case.
+
+Resource        ../vid/create_service_instance.robot
+Resource        ../vid/vid_interface.robot
+Resource        ../aai/service_instance.robot
+Resource        ../vid/create_vid_vnf.robot
+Resource        ../vid/teardown_vid.robot
+Resource        ../sdngc_interface.robot
+Resource        model_test_template.robot
+
+Resource        ../aai/create_customer.robot
+Resource        ../aai/create_tenant.robot
+Resource        ../aai/create_service.robot
+Resource        ../openstack/neutron_interface.robot
+Resource        ../heatbridge.robot
+
+
+Library         OpenstackLibrary
+Library            ExtendedSelenium2Library
+Library                UUID
+Library                Collections
+
+
+
+*** Variables ***
+
+#**************** TEST CASE VARIABLES **************************
+${TENANT_NAME}
+${TENANT_ID}
+${REGIONS}
+${CUSTOMER_NAME}
+${STACK_NAME}
+${SERVICE}
+${VVG_SERVER_ID}
+${SERVICE_INSTANCE_ID}
+
+*** Keywords ***
+
+Orchestrate VNF
+    [Documentation]   Use openECOMP to Orchestrate a service.
+    [Arguments]    ${customer_name}    ${service}    ${product_family}    ${tenant}
+    ${lcp_region}=   Get Openstack Region
+    ${uuid}=    Generate UUID
+    Set Test Variable    ${CUSTOMER_NAME}    ${customer_name}_${uuid}
+    Set Test Variable    ${SERVICE}    ${service}
+    ${vnf_name}=    Catenate    Vnf_Ete_Name${uuid}
+    ${service_name}=    Catenate    Service_Ete_Name${uuid}
+    ${service_type}=    Set Variable    ${service}
+    ${vf_module_name}=    Catenate    Vfmodule_Ete_Name${uuid}
+    ${service_model_type}     ${vnf_type}    ${vf_modules} =    Model Distribution For Directory    ${service}
+    Run Keyword If   '${service}' == 'vVG'    Create VVG Server    ${uuid}
+    Create Customer For VNF    ${CUSTOMER_NAME}    ${CUSTOMER_NAME}    INFRA    ${service_type}    ${GLOBAL_AAI_CLOUD_OWNER}
+    Setup Browser
+    Login To VID GUI
+    ${service_instance_id}=    Create VID Service Instance    ${customer_name}    ${service_model_type}    ${service}     ${service_name}
+    Set Test Variable   ${SERVICE_INSTANCE_ID}   ${service_instance_id}
+    Validate Service Instance    ${service_instance_id}    ${service}      ${customer_name}
+    Create VID VNF    ${service_instance_id}    ${vnf_name}    ${product_family}    ${lcp_region}    ${tenant}    ${vnf_type}
+    ${vf_module_type}   ${closedloop_vf_module}=   Preload Vnf    ${service_instance_id}   ${vnf_name}   ${vnf_type}   ${vf_module_name}    ${vf_modules}    ${service}    ${uuid}
+    ${vf_module_id}=   Create VID VNF module    ${service_instance_id}    ${vf_module_name}    ${lcp_region}    ${tenant}     ${vf_module_type}
+    ${generic_vnf}=   Validate Generic VNF    ${vnf_name}    ${vnf_type}    ${service_instance_id}
+    VLB Closed Loop Hack   ${service}   ${generic_vnf}   ${closedloop_vf_module}
+    Set Test Variable    ${STACK_NAME}   ${vf_module_name}
+    Execute Heatbridge    ${vf_module_name}    ${service_instance_id}    ${service}
+    Validate VF Module      ${vf_module_name}    ${service}
+    [Return]     ${vf_module_name}    ${service}
+
+
+Create Customer For VNF
+    [Documentation]    VNF Orchestration Test setup....
+    ...                Create Tenant if not exists, Create Customer, Create Service and related relationships
+    [Arguments]    ${customer_name}    ${customer_id}    ${customer_type}    ${service_type}    ${cloud_owner}
+    ${cloud_region_id}=   Get Openstack Region
+    ${resp}=    Create Customer    ${customer_name}    ${customer_id}    ${customer_type}    ${service_type}   ${cloud_owner}  ${cloud_region_id}    ${TENANT_ID}
+       Should Be Equal As Strings      ${resp}         201
+    Create Service If Not Exists    ${service_type}
+
+Setup Orchestrate VNF
+    [Documentation]    Called before each test case to ensure tenant and region data
+    ...                required by the Orchstrate VNF exists in A&AI
+    [Arguments]        ${cloud_owner}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}
+    Initialize Tenant From Openstack
+    Initialize Regions From Openstack
+    :FOR    ${region}    IN    @{REGIONS}
+    \    Inventory Tenant If Not Exists    ${cloud_owner}  ${region}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}    ${TENANT_ID}    ${TENANT_NAME}
+    Log   Orchestrate VNF setup complete
+
+Initialize Tenant From Openstack
+    [Documentation]    Initialize the tenant test variables
+    Run Openstack Auth Request    auth
+    ${tenants}=    Get Current Openstack Tenant     auth
+    ${tenant_name}=    Evaluate    $tenants.get("name")
+    ${tenant_id}=     Evaluate    $tenants.get("id")
+    Set Test Variable  ${TENANT_NAME}   ${tenant_name}
+    Set Test Variable  ${TENANT_ID}     ${tenant_id}
+
+Initialize Regions From Openstack
+    [Documentation]    Initialize the regions test variable
+    Run Openstack Auth Request    auth
+    ${regs}=    Get Openstack Regions    auth
+    Set Test Variable  ${REGIONS}     ${regs}
+
+Create VVG Server
+    [Documentation]    For the VolumeGroup test case, create a server to attach the volume group to be orchestrated.
+    [Arguments]    ${uuid}
+    Run Openstack Auth Request    auth
+    ${vvg_server_name}=    Catenate   vVG_${uuid}
+    ${server}=   Add Server For Image Name  auth    ${vvg_server_name}   ${GLOBAL_VVGSERVER_IMAGE}   ${GLOBAL_VVGSERVER_FLAVOR}
+    ${server}=       Get From Dictionary   ${server}   server
+    ${server_id}=    Get From Dictionary   ${server}   id
+    Set Test Variable    ${VVG_SERVER_ID}   ${server_id}
+    ${vvg_params}=    Get VVG Preload Parameters
+    Set To Dictionary   ${vvg_params}   nova_instance   ${server_id}
+    Wait for Server to Be Active    auth    ${server_id}
+
+Get VVG Preload Parameters
+    [Documentation]   Get preload parameters for the VVG test case so we can include
+    ...               the nova_instance id of the attached server
+    ${test_dict}=    Get From Dictionary    ${GLOBAL_PRELOAD_PARAMETERS}    Vnf-Orchestration
+    ${vvg_params}   Get From Dictionary    ${test_dict}    vvg_preload.template
+    [Return]    ${vvg_params}
+
+Teardown VNF
+    [Documentation]    Called at the end of a test case to tear down the VNF created by Orchestrate VNF
+    ${lcp_region}=   Get Openstack Region
+    Teardown VVG Server
+    Run Keyword If   '${TEST STATUS}' == 'PASS'   Teardown VLB Closed Loop Hack
+    Run Keyword If   '${TEST STATUS}' == 'PASS'   Teardown VID   ${SERVICE_INSTANCE_ID}   ${lcp_region}   ${TENANT_ID}
+    Run Keyword If   '${TEST STATUS}' == 'PASS'   Teardown Model Distribution
+    Run Keyword If   '${TEST STATUS}' == 'PASS'   Clean A&AI Inventory
+    Close All Browsers
+    Log    Teardown VNF implemented for successful tests only
+
+Teardown VVG Server
+    [Documentation]   Teardown the server created as a place to mount the Volume Group.
+    Return From Keyword if   '${VVG_SERVER_ID}' == ''
+    Delete Server   auth   ${VVG_SERVER_ID}
+    Wait for Server To Be Deleted    auth    ${VVG_SERVER_ID}
+    ${vvg_params}=    Get VVG Preload Parameters
+    Remove from Dictionary   ${vvg_params}   nova_instance
+    Log    Teardown VVG Server Completed
+
+Teardown Stack
+    [Documentation]    OBSOLETE - Called at the end of a test case to tear down the Stack created by Orchestrate VNF
+    [Arguments]   ${stack}
+    Run Openstack Auth Request    auth
+    ${stack_info}=    Get Stack Details    auth    ${stack}
+    Log    ${stack_info}
+    ${stack_id}=    Get From Dictionary    ${stack_info}    id
+    ${key_pair_status}   ${keypair_name}=   Run Keyword And Ignore Error   Get From Dictionary    ${stack_info}    key_name
+    Delete Openstack Stack      auth    ${stack}    ${stack_id}
+    Log    Deleted ${stack} ${stack_id}
+    Run Keyword If   '${key_pair_status}' == 'PASS'   Delete Openstack Keypair    auth    ${keypair_name}
+    Teardown VLB Closed Loop Hack
+
+Clean A&AI Inventory
+    [Documentation]    Clean up Tenant in A&AI, Create Customer, Create Service and related relationships
+    Delete Customer    ${CUSTOMER_NAME}
+