Merge "update csit test for modeling/etsicatalog project"
[integration/csit.git] / tests / so / orchestration / resources / bpmn-infra / aLaCarte / Create / ServiceInstance.robot
1 *** Settings ***
2 Library    Collections
3 Library    RequestsLibrary
4 Library    HttpLibrary.HTTP
5 Library    OperatingSystem
6 Library    BuiltIn
7 Library    String
8 Library    CSVLibrary
9 Resource    ../../../json_templater.robot
10 Resource    ../../../SoKeywords.robot
11 Resource    ../../../common/SoVariables.robot
12 Resource    ../../../so_interface.robot
13 Resource    ../../../aai/service_instance.robot
14 Resource    ../../../common/Variables.robot
15 Resource          ../../../properties/tenant.robot
16 Resource          ../../../properties/cloudRegion.robot
17
18 *** Variables ***
19 ${data_file}                                     ../../../../data/bpmn-infra/aLaCarte/ServiceInstance.csv
20 ${create_customer_template_file}                 tests/so/orchestration/assets/templates/aai/add_customer_required_fields.template
21 ${create_service_subscription_template_file}     tests/so/orchestration/assets/templates/aai/service_subscription_required_fields.template
22 ${create_service_model_template_file}            tests/so/orchestration/assets/templates/aai/service_model.template
23 ${serviceInstanceDictionary}
24 ${serv_inst_id}
25 ${serv_inst_tc_code}
26 ${SUBSCRIBER_TYPE}    CUST
27 ${EXPECTED_ORCHESTRATION_STATUS}    Active
28 ${tenant_json}    tests/so/orchestration/assets/templates/setup_tenant.json
29 ${cloud_region_json}    tests/so/orchestration/assets/templates/setup_cloud_region.json
30 ${NOT_APPLICABLE}    NA
31
32 *** Keywords ***
33     
34 Setup GR Create Service Instance
35     [Arguments]    ${serv_inst_tc_code}
36     ${serviceInstanceDictionary}    Read CSV Data And Create Dictionary    ${CURDIR}/${data_file}
37     Set Suite Variable    ${serviceInstanceDictionary}
38     Set Suite Variable    ${serv_inst_tc_code}
39
40     Setup Cloud Region
41     Setup Tenant in AAI
42     
43     ${create_service_instance_data}         Get From Dictionary    ${serviceInstanceDictionary}    ${serv_inst_tc_code}
44     
45     ${SUBSCRIBER_ID}    Get From Dictionary    ${create_service_instance_data}   subscriberId
46     Setup Customer    ${SUBSCRIBER_ID}
47     ${SUBSCRIPTION_SERVICE_TYPE}    Get From Dictionary    ${create_service_instance_data}   serviceType
48     Setup Service Subscription    ${SUBSCRIBER_ID}    ${SUBSCRIPTION_SERVICE_TYPE}
49
50     Setup Service Model in A&AI    ${serviceInstanceDictionary}    ${serv_inst_tc_code}
51
52 Teardown GR Create Service Instance
53     [Arguments]    ${service_instance_id}
54     Delete Service Instance by Id    ${service_instance_id}
55
56       
57 Setup Cloud Region
58     [Documentation]    Setup the cloud region in AAI
59     
60     ${cloud_region_data}    Create Dictionary    cloudOwner=${cloudOwner}    cloudRegionId=${cloudRegionId}    cloudType=${cloudType}
61                                           ...    ownerDefinedType=${ownerDefinedType}    cloudRegionVersion=${cloudRegionVersion}    cloudZone=${cloudZone}
62                                           ...    complexName=${complexName}    sriovAutomation=${sriovAutomation}
63     ${create_cloud_region_json}    Fill JSON Template File    ${cloud_region_json}    ${cloud_region_data}
64     Run A&AI Put Request    ${VERSIONED_INDEX_PATH}/cloud-infrastructure/cloud-regions/cloud-region/${cloudOwner}/${cloudRegionId}    ${create_cloud_region_json}
65     
66     ${json}=    OperatingSystem.Get File    tests/so/orchestration/assets/templates/gr-api/PhysicalServerCreate.json
67     ${returned_json}=  To Json    ${json}
68     Run A&AI Put Request    aai/v14/cloud-infrastructure/pservers/pserver/rdm52r19c001    ${returned_json}
69     
70 Setup Tenant in AAI
71     [Documentation]    Setup the tenant in AAI
72     
73     ${tenant_data}    Create Dictionary    tenantId=${aai_tenant_Id}    tenantName=${aai_tenant_name}    
74     ${create_tenant_json}    Fill JSON Template File    ${tenant_json}    ${tenant_data}    
75     Run A&AI Put Request    ${VERSIONED_INDEX_PATH}/cloud-infrastructure/cloud-regions/cloud-region/${cloudOwner}/${cloudRegionId}/tenants/tenant/${aai_tenant_Id}    ${create_tenant_json}
76
77 Setup Customer
78     [Documentation]    Creates customer for use in tests
79     [Arguments]    ${SUBSCRIBER_ID}
80     
81     ${create_customer_data}    Create Dictionary    global_customer_id=${SUBSCRIBER_ID}    subscriber_name=${SUBSCRIBER_ID}    subscriber_type=${SUBSCRIBER_TYPE}
82     Set Suite Variable    ${create_customer_data}
83     ${create_customer_json}    Fill JSON Template File    ${create_customer_template_file}    ${create_customer_data}
84
85     Run A&AI Put Request    ${VERSIONED_INDEX_PATH}/business/customers/customer/${SUBSCRIBER_ID}    ${create_customer_json}
86
87 Setup Service Subscription
88     [Documentation]    Creates service subscription for use in tests
89     [Arguments]    ${SUBSCRIBER_ID}    ${SUBSCRIPTION_SERVICE_TYPE}
90     ${create_service_subscription_data}    Create Dictionary    service_type=${SUBSCRIPTION_SERVICE_TYPE}
91     Set Suite Variable    ${create_service_subscription_data}
92     ${create_service_subscription_json}    Fill JSON Template File    ${create_service_subscription_template_file}    ${create_service_subscription_data}
93
94     Run A&AI Put Request    ${VERSIONED_INDEX_PATH}/business/customers/customer/${SUBSCRIBER_ID}/service-subscriptions/service-subscription/${SUBSCRIPTION_SERVICE_TYPE}    ${create_service_subscription_json}
95
96 Setup Service Model in A&AI
97     [Arguments]    ${serviceeDictionary}    ${serv_inst_tc_code}
98
99     ${create_service_instance_data}         Get From Dictionary    ${serviceInstanceDictionary}    ${serv_inst_tc_code}
100     ${modelInvariantId}    Get From Dictionary    ${create_service_instance_data}   serviceInstModelInvariantId
101     ${modelVersionId}    Get From Dictionary    ${create_service_instance_data}   serviceInstModelNameVersionId
102     ${modelName}    Get From Dictionary    ${create_service_instance_data}   serviceInstModelName
103     ${modelType}    Get From Dictionary    ${create_service_instance_data}   serviceInstModelType
104     ${modelVersion}    Get From Dictionary    ${create_service_instance_data}   serviceInstModelVersion
105     ${modelDescription}    Get From Dictionary    ${create_service_instance_data}   serviceInstModelDescription
106     Setup Model in AAI    ${modelInvariantId}    ${modelType}    ${modelVersionId}    ${modelName}    ${modelVersion}    ${modelDescription}
107   
108 Setup Model in AAI
109     [Documentation]    Setup Model in AAI for use in tests
110     [Arguments]    ${modelInvariantId}    ${modelType}    ${modelVersionId}    ${modelName}    ${modelVersion}    ${modelDescription}
111     ${create_service_model_data}    Create Dictionary    modelInvariantId=${modelInvariantId}    modelType=${modelType}    modelVersionId=${modelVersionId}
112                                                         ...    modelName=${modelName}    modelVersion=${modelVersion}    modelDescription=${modelDescription}
113     ${create_service_model_json}    Fill JSON Template File    ${create_service_model_template_file}    ${create_service_model_data}
114
115     Run A&AI Put Request    ${VERSIONED_INDEX_PATH}/service-design-and-creation/models/model/${modelInvariantId}    ${create_service_model_json}
116   
117    
118 Create Service Instance
119     [Documentation]    Test Template for CreateServiceInstanceInfra
120     [Arguments]    ${serv_inst_tc_code}    ${payload_template}
121     log    in create si sub
122     Log    ${serv_inst_tc_code}
123     Log    ${payload_template}
124     ${create_service_instance_data}         Get From Dictionary    ${serviceInstanceDictionary}    ${serv_inst_tc_code}
125     Log    create si data
126     Log    ${create_service_instance_data}
127     Log    ${CURDIR}/${payload_template}
128     Log    ${create_service_instance_data}
129     Log    ready to fill
130     ${service_body}=    Fill JSON Template File    ${CURDIR}/${payload_template}    ${create_service_instance_data}
131     Log    got service body
132     Log    ${service_body}
133     Log    after service body
134     ${serv_inst_id}    ${request_id}    ${request_completion_status}    ${status_code}    Invoke Create Service Instance Flow    ${service_body}
135     [Return]    ${serv_inst_id}    ${request_id}    ${request_completion_status}    ${status_code}    ${service_body}
136
137
138
139 Invoke Create Service Instance Flow
140     [Documentation]    Create Service Instance
141     [Arguments]    ${service_body}
142     log    invoking
143     ${create_service_response}  Run SO Post request    ${SO_REST_URI_CREATE_SERVICE}    ${service_body}
144     log    retunred ${create_service_response}
145     Return From Keyword If    ${create_service_response.status_code} != ${HTTP_ACCEPTED}    ${EMPTY}    ${EMPTY}    ${EMPTY}    ${create_service_response.status_code}
146     ${request_id_string}    Get Json Value    ${create_service_response.content}    /requestReferences/requestId
147     ${request_id}    Get Substring    ${request_id_string}    1    -1
148     ${instance_id_string}    Get Json Value    ${create_service_response.content}    /requestReferences/instanceId
149     ${instance_id}    Get Substring    ${instance_id_string}    1    -1
150     Log    ${instance_id}
151     ${request_completion_status}    ${orchestration_failure_message}    Run Keyword If    ${create_service_response.status_code} == ${HTTP_ACCEPTED}
152                                                    ...    Poll Orchestration Request    ${request_id}
153
154     [Return]    ${instance_id}    ${request_id}    ${request_completion_status}    ${create_service_response.status_code}
155  
156  Invoke Delete Service Instance Flow
157     [Documentation]    Delete a service instance.
158     [Arguments]    ${service_body}    ${service_instance}
159
160     ${delete_service_response}    Run SO Delete request    ${SO_REST_URI_DELETE_SERVICE}/${service_instance}    data=${service_body}
161
162     Return From Keyword If    ${delete_service_response.status_code} != ${HTTP_ACCEPTED}    ${EMPTY}    ${EMPTY}    ${EMPTY}    ${delete_service_response.status_code}
163
164     ${request_id_string}    Get Json Value    ${delete_service_response.content}    /requestReferences/requestId
165     ${request_id}    Get Substring    ${request_id_string}    1    -1
166     ${instance_id_string}    Get Json Value    ${delete_service_response.content}    /requestReferences/instanceId
167     ${instance_id}    Get Substring    ${instance_id_string}    1    -1
168
169     ${request_completion_status}    ${orchestration_failure_message}    Run Keyword If    ${delete_service_response.status_code} == ${HTTP_ACCEPTED}
170                                                    ...    Poll Orchestration Request    ${request_id}
171
172     [Return]    ${instance_id}    ${request_id}    ${request_completion_status}    ${delete_service_response.status_code}