summaryrefslogtreecommitdiffstats
path: root/robot/resources/so/direct_instantiate.robot
blob: 15f583ade471376100daa8c61e02e01df39a8764 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
*** Settings ***
Documentation     Instantiate VNF

Library    OperatingSystem
Library    Collections
Library    String
Library    DateTime
Library    SoUtils
Library    RequestsLibrary
Library    ONAPLibrary.PreloadData    WITH NAME     PreloadData
Library    ONAPLibrary.Utilities
Library    ONAPLibrary.JSON
Library    ONAPLibrary.ServiceMapping    WITH NAME     ServiceMapping
Library    ONAPLibrary.Templating    WITH NAME     Templating
Library    ONAPLibrary.SO    WITH NAME    SO
Resource       ../global_properties.robot


***Variables ***
${SO_TEMPLATE_PATH}        so
${SO_CATALOGDB_PATH}  /ecomp/mso/catalog/v2/serviceVnfs?serviceModelName
${SO_APIHANDLER_PATH}    /onap/so/infra/serviceInstantiation/v7/serviceInstances
${CDS_BOOTSTRAP_PATH}    /api/v1/blueprint-model/bootstrap

*** Keywords ***
Instantiate Service Direct To SO
    [Documentation]    Creates an entire service from a CSAR
    [Arguments]    ${service}   ${csar_file}   ${vnf_template_file}
    # Example: ${csar_file}=  Set Variable   /tmp/csar/service-Vfw20190413133734-csar.csar
    # Example: ${vnf_template_file}=  Set Variable   /var/opt/ONAP/testsuite/vcpeutils/preload_templates/template.vfw_vfmodule.json
    PreloadData.Set Directory    preload    ./demo/preload_data
    ${preload_dict}=       Get Default Preload Data    preload
    ${template}=   Create Dictionary
    @{keys}=    Get Dictionary Keys    ${preload_dict}
    ${parameters}=    Get Globally Injected Parameters
    :FOR   ${key}   IN   @{keys}
    \    ${value}=   Get From Dictionary    ${preload_dict}    ${key}
    \    ${tmp_value}=   Set Variable If   'GLOBAL_' in $value     ${value}
    \    ${tmp_value}=   Run Keyword If  'GLOBAL_' in $value  Replace String  ${tmp_value}    \$      ${EMPTY}
    \    ${tmp_value}=   Run Keyword If  'GLOBAL_' in $value  Replace String  ${tmp_value}    {      ${EMPTY}
    \    ${tmp_value}=   Run Keyword If  'GLOBAL_' in $value  Replace String  ${tmp_value}    }      ${EMPTY}
    \    ${value}=   Set Variable If   'GLOBAL_' in $value    ${parameters["${tmp_value}"]}     ${value}
    \    ${new_key}=   Catenate    \$   {   ${key}   }
    \    ${new_key}=     Evaluate  '${new_key}'.replace(' ','')
    \    Set To Dictionary    ${template}   ${new_key}    ${value}

    ${tmp_key1}=   Catenate  \$  {   ecompnet  }
    ${tmp_key1}=     Evaluate  '${tmp_key1}'.replace(' ','')
    ${tmp_key2}=   Catenate  \$  {   GLOBAL_INJECTED_UBUNTU_1404_IMAGE  }
    ${tmp_key2}=     Evaluate  '${tmp_key2}'.replace(' ','')
    # ecompnet  13 , 14, 15
    # use same method as sdnc preload robot script
    ${ecompnet}=    Evaluate    str((${GLOBAL_BUILD_NUMBER}%128)+128)

    Set To Dictionary   ${template}    ${tmp_key1}     ${ecompnet}     ${tmp_key2}     ${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}

    Log    ${preload_dict}
    Log    ${template}
    ${service_instance_id}=   Create Entire Service   ${csar_file}    ${vnf_template_file}   ${template}   ${GLOBAL_INJECTED_REGION}  ${GLOBAL_INJECTED_OPENSTACK_TENANT_ID}    ${GLOBAL_INJECTED_PUBLIC_KEY}
    Log     ServiceInstanceId:${service_instance_id}
    Should Not Be Equal As Strings  ${service_instance_id}   None


CDS Service Instantiate
    [Arguments]  ${cds_service_model}  ${service_uuid}  ${service_invariantUUID}
    ${auth}=  Create List  ${GLOBAL_SO_CATDB_USERNAME}  ${GLOBAL_SO_PASSWORD}
    ${resp}=  SO.Run Get Request  ${GLOBAL_SO_CATDB_ENDPOINT}  ${SO_CATALOGDB_PATH}=${cds_service_model}  auth=${auth}
    Should Be Equal As Strings  ${resp.status_code}  200
    ${session}=  Create Session  cds  ${GLOBAL_CCSDK_CDS_SERVER_PROTOCOL}://${GLOBAL_INJECTED_CCSDK_CDS_BLUEPRINT_PROCESSOR_IP_ADDR}:${GLOBAL_CCSDK_CDS_HEALTH_SERVER_PORT}
    ${data}=  Create Dictionary  loadModelType=true  loadResourceDictionary=true  loadCBA=true
    ${headers}=  Create Dictionary  Content-Type=application/json  Authorization=Basic ${GLOBAL_CDS_AUTH}
    ${resp}=  Post Request  cds  ${CDS_BOOTSTRAP_PATH}  data=${data}  headers=${headers}
    ${status_string}=    Convert To String    ${resp.status_code}
    Should Match Regexp    ${status_string}    ^(200|201|202)$
    ${time_now}=  Get Time
    @{date_time}=  Split String  ${time_now}
    ${time_stamp}=  Catenate  SEPARATOR=_  @{date_time}[0]  @{date_time}[1]
    ${customized_time_stamp}=  Remove String  ${time_stamp}  :
    ${cds_instance_name}=   Set Variable   cds_vlb_svc_${customized_time_stamp}
    ${global_parameters}=  Get Globally Injected Parameters
    ${owning_entity_id}=  Get OwningEntity Id  OE-Demonstration
    ${dict}=   Set To Dictionary  ${global_parameters}  dcae_collector_ip=${GLOBAL_DCAE_COLLECTOR_IP}  dcae_collector_port=${GLOBAL_DCAE_COLLECTOR_PORT}  vlb_0_int_pktgen_private_port_0_mac=${GLOBAL_VLB_0_INT_PKTGEN_PRIVATE_PORT_0_MAC}  vpg_0_int_pktgen_private_port_0_mac=${GLOBAL_VPG_0_INT_PKTGEN_PRIVATE_PORT_0_MAC}  service_instance_name=${cds_instance_name}  owning_entity=OE-Demonstration    homing_solution=none    owning_entity_id=${owning_entity_id}    subscriber_id=Demonstration  cloud_owner=${GLOBAL_AAI_CLOUD_OWNER}  subscription_service_type=vLB  service_model_name=${cds_service_model}  service_model_uuid=${service_uuid}  service_model_invariantuuid=${service_invariantUUID}  resp=${resp.json()}
    Templating.Create Environment    cds    ${GLOBAL_TEMPLATE_FOLDER}
    ${data}=   Templating.Apply Template    cds    ${SO_TEMPLATE_PATH}/cds_service_template.jinja    ${dict}
    Log  ${data}
    ${auth}=  Create List  ${GLOBAL_SO_USERNAME}  ${GLOBAL_SO_PASSWORD}
    ${resp}=  SO.Run Post Request  ${GLOBAL_SO_APIHAND_ENDPOINT}  ${SO_APIHANDLER_PATH}  ${data}  auth=${auth}
    Should Be Equal As Strings  ${resp.status_code}  202
    [Return]  ${resp.json()['requestReferences']['requestId']}