08e70ce74227da370fb06d237ef083de182c7ed8
[testsuite.git] / robot / resources / aai / create_tenant.robot
1 *** Settings ***
2 Documentation     Create A&AI Customer API.
3
4 Resource    aai_interface.robot
5 Library    Collections
6 Library    ONAPLibrary.Templating    WITH NAME    Templating
7 Library    ONAPLibrary.AAI    WITH NAME    AAI
8
9
10 *** Variables ***
11 ${INDEX PATH}     /aai/v11
12 ${ROOT_TENANT_PATH}  /cloud-infrastructure/cloud-regions/cloud-region/
13
14 ${AAI_ADD_TENANT_BODY}=    aai/add_tenant_body.jinja
15
16 *** Keywords ***
17 Inventory Tenant If Not Exists
18     [Documentation]    Creates a service in A&AI if it doesn't exist
19     [Arguments]    ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}    ${tenant_id}    ${tenant_name}
20     ${dict}=    Get Tenants    ${cloud_owner}   ${cloud_region_id}
21     ${status}    ${value}=    Run Keyword And Ignore Error    Dictionary Should Contain Key    ${dict}    ${tenant_id}
22     Run Keyword If    '${status}' == 'FAIL'    Inventory Tenant    ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}    ${tenant_id}    ${tenant_name}
23
24 Inventory Tenant
25     [Documentation]    Inventorys a Tenant in A&AI
26     [Arguments]    ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}    ${tenant_id}    ${tenant_name}
27     ${json_resource_version}=   Get Resource Version If Exists   ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}
28     ${arguments}=    Create Dictionary     cloud_owner=${cloud_owner}  cloud_region_id=${cloud_region_id}  cloud_type=${cloud_type}    owner_defined_type=${owner_defined_type}    cloud_region_version=${cloud_region_version}    cloud_zone=${cloud_zone}    tenant_id=${tenant_id}    tenant_name=${tenant_name}   resource_version=${json_resource_version}
29     Templating.Create Environment    aai    ${GLOBAL_TEMPLATE_FOLDER}
30     ${data}=   Templating.Apply Template    aai   ${AAI_ADD_TENANT_BODY}    ${arguments}
31     ${auth}=  Create List  ${GLOBAL_AAI_USERNAME}    ${GLOBAL_AAI_PASSWORD}
32         ${put_resp}=    AAI.Run Put Request     ${AAI_FRONTEND_ENDPOINT}    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}     ${data}        auth=${auth}
33     ${status_string}=    Convert To String    ${put_resp.status_code}
34     Should Match Regexp    ${status_string}     ^(201|200)$
35
36 Get Resource Version If Exists
37     [Documentation]    Creates a service in A&AI if it doesn't exist
38     [Arguments]    ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}
39     ${resource_version}=   Set Variable
40     ${resp}=    Get Cloud Region    ${cloud_owner}   ${cloud_region_id}
41     Return from Keyword if   '${resp.status_code}' != '200'   ${resource_version}
42     ${json}=   Set Variable   ${resp.json()}
43     ${resource_version}=   Catenate   ${json['resource-version']}
44     [Return]   "resource-version":"${resource_version}",
45
46
47 Delete Tenant
48     [Documentation]    Removes both Tenant
49     [Arguments]    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}
50     ${auth}=  Create List  ${GLOBAL_AAI_USERNAME}    ${GLOBAL_AAI_PASSWORD}
51     ${get_resp}=    AAI.Run Get Request     ${AAI_FRONTEND_ENDPOINT}    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}/tenants/tenant/${tenant_id}        auth=${auth}
52     Run Keyword If    '${get_resp.status_code}' == '200'    Delete Tenant Exists    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}    ${get_resp.json()['resource-version']}
53
54 Delete Tenant Exists
55     [Arguments]    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}    ${resource_version}
56     ${auth}=  Create List  ${GLOBAL_AAI_USERNAME}    ${GLOBAL_AAI_PASSWORD}
57     ${put_resp}=    AAI.Run Delete Request    ${AAI_FRONTEND_ENDPOINT}    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}/tenants/tenant/${tenant_id}    ${resource_version}        auth=${auth}
58     Should Be Equal As Strings  ${put_resp.status_code}         204
59
60 Delete Cloud Region
61     [Documentation]    Removes both Tenant and Cloud Region in A&AI
62     [Arguments]    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}
63     ${auth}=  Create List  ${GLOBAL_AAI_USERNAME}    ${GLOBAL_AAI_PASSWORD}
64     ${get_resp}=    AAI.Run Get Request     ${AAI_FRONTEND_ENDPOINT}    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}        auth=${auth}
65         Run Keyword If    '${get_resp.status_code}' == '200'    Delete Cloud Region Exists   ${tenant_id}    ${cloud_owner}    ${cloud_region_id}    ${get_resp.json()['resource-version']}
66
67 Delete Cloud Region Exists
68     [Documentation]   Delete may get status 400 (Bad Request) if the region is still referenced
69     [Arguments]    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}    ${resource_version}
70     ${auth}=  Create List  ${GLOBAL_AAI_USERNAME}    ${GLOBAL_AAI_PASSWORD}
71     ${put_resp}=    AAI.Run Delete Request    ${AAI_FRONTEND_ENDPOINT}    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}   ${resource_version}        auth=${auth}
72     ${status_string}=    Convert To String    ${put_resp.status_code}
73     Should Match Regexp    ${status_string}    ^(204|400)$
74
75 Get Tenants
76     [Documentation]   Return list of tenants for this cloud owner/region
77     [Arguments]    ${cloud_owner}    ${cloud_region_id}
78     ${auth}=  Create List  ${GLOBAL_AAI_USERNAME}    ${GLOBAL_AAI_PASSWORD}
79         ${resp}=    AAI.Run Get Request     ${AAI_FRONTEND_ENDPOINT}    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}/tenants        auth=${auth}
80         ${dict}=    Create Dictionary
81     ${status}    ${value}=    Run Keyword And Ignore Error    Should Be Equal As Strings        ${resp.status_code}     200
82     Run Keyword If    '${status}' == 'PASS'    Update Tenant Dictionary    ${dict}    ${resp.json()}
83         [Return]  ${dict}
84
85 Get Cloud Region
86     [Documentation]   Returns the Cloud Region if it exists
87     [Arguments]    ${cloud_owner}    ${cloud_region_id}
88     ${auth}=  Create List  ${GLOBAL_AAI_USERNAME}    ${GLOBAL_AAI_PASSWORD}
89         ${resp}=    AAI.Run Get Request     ${AAI_FRONTEND_ENDPOINT}    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}        auth=${auth}
90         [Return]  ${resp}
91
92 Update Tenant Dictionary
93     [Arguments]    ${dict}    ${json}
94     @{list}=  Copy List      ${json['tenant']}
95     :FOR   ${map}    IN    @{list}
96     \    ${status}    ${tenant_id}=     Run Keyword And Ignore Error    Get From Dictionary    ${map}    tenant-id
97     \    Run Keyword If    '${status}' == 'PASS'    Set To Dictionary    ${dict}    ${tenant_id}=${map}
98     Log    ${dict}
99
100
101