Change ecomp/mso to onap/so
[testsuite.git] / robot / resources / so_interface.robot
1 *** Settings ***
2 Documentation     The main interface for interacting with MSO. It handles low level stuff like managing the http request library and MSO required fields
3 Library               RequestsLibrary
4 Library           UUID
5 Library           OperatingSystem
6 Library           Collections
7 Resource          global_properties.robot
8 Resource          ../resources/json_templater.robot
9 *** Variables ***
10 ${MSO_HEALTH_CHECK_PATH}    /manage/health
11 ${MSO_ENDPOINT}     ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_SERVER_PORT}
12 ${SO_APIHAND_ENDPOINT}     ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_APIHAND_SERVER_PORT}
13 ${SO_ASDCHAND_ENDPOINT}     ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO__ASDCHAND_SERVER_PORT}
14 ${SO_BPMN_ENDPOINT}     ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_BPMN_SERVER_PORT}
15 ${SO_CATDB_ENDPOINT}     ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO__CATDB_SERVER_PORT}
16 ${SO_OPENSTACK_ENDPOINT}     ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_OPENSTACK_SERVER_PORT}
17 ${SO_REQDB_ENDPOINT}     ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_REQDB_SERVER_PORT}
18 ${SO_SDNC_ENDPOINT}     ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_SDNC_SERVER_PORT}
19 ${SO_VFC_ENDPOINT}     ${GLOBAL_MSO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_MSO_VFC_SERVER_PORT}
20
21 *** Keywords ***
22 Run SO Global Health Check
23     Run SO Container Health Check    API_HANDLER  ${SO_APIHAND_ENDPOINT}     
24     Run SO Container Health Check    ASDC_HANDLER  ${SO_ASDCHAND_ENDPOINT}     
25     Run SO Container Health Check    BPMN_INFRA    ${SO_BPMN_ENDPOINT}     
26     Run SO Container Health Check    CATALOG_DB    ${SO_CATDB_ENDPOINT}     
27     Run SO Container Health Check    OPENSTACK_INFRA   ${SO_OPENSTACK_ENDPOINT}     
28     Run SO Container Health Check    REQUEST_DB    ${SO_REQDB_ENDPOINT}     
29     Run SO Container Health Check    SDNC_INFRA  ${SO_SDNC_ENDPOINT}     
30     Run SO Container Health Check    VFC_INFRA  ${SO_VFC_ENDPOINT}     
31
32
33 Run SO Container Health Check
34     [Documentation]    Runs an MSO global health check
35     [Arguments]    ${so_endpoint_label}    ${so_endpoint}  
36     ${auth}=  Create List  ${GLOBAL_MSO_USERNAME}    ${GLOBAL_MSO_PASSWORD}
37     ${session}=    Create Session       mso     ${so_endpoint}
38     ${uuid}=    Generate UUID
39     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json   X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
40     ${resp}=    Get Request     mso     ${MSO_HEALTH_CHECK_PATH}     headers=${headers}
41     Should Be Equal As Strings  ${resp.status_code}     200
42
43 Run MSO Get ModelInvariantId
44     [Documentation]    Runs an MSO Get ModelInvariantID for ClosedLoop Polieis 
45     [Arguments]    ${service_model_name}   ${vf_module_label}=NULL
46     ${param_dict}=    Create Dictionary    serviceModelName    ${service_model_name}
47     ${param}=   Evaluate   urllib.urlencode(${param_dict})    urllib
48     ${data_path}=   Catenate   SEPARATOR=     /onap/so/catalog/v2/serviceVnfs?  ${param}
49     ${resp}=    Run MSO Get Request    ${data_path}
50     Log    ${resp.json()}
51     # ${resp.json()['serviceVnfs'][0]['vfModules'][0]['vfModuleLabel'] should be 'base_vpkg'
52     ${model_invariant_id}=   Set Variable   NULL
53     @{ITEMS}=    Copy List    ${resp.json()['serviceVnfs']}
54     :FOR    ${ELEMENT}    IN    @{ITEMS}
55     \    Log    ${ELEMENT['vfModules']}
56     \    ${model_invariant_id}  Set Variable If   ('${vf_module_label}' in '${ELEMENT['vfModules'][0]['vfModuleLabel']}')   ${ELEMENT['modelInfo']['modelInvariantUuid']}  NULL
57     \    Exit For Loop If  '${model_invariant_id}' != 'NULL'
58     [Return]   ${model_invariant_id}
59     
60 Run MSO Get Request
61     [Documentation]    Runs an MSO get request
62     [Arguments]    ${data_path}    ${accept}=application/json
63     ${auth}=  Create List  ${GLOBAL_MSO_USERNAME}    ${GLOBAL_MSO_PASSWORD}
64     Log    Creating session ${MSO_ENDPOINT}
65     ${session}=    Create Session       mso     ${MSO_ENDPOINT}    auth=${auth}
66     ${uuid}=    Generate UUID
67     ${headers}=  Create Dictionary     Accept=${accept}    Content-Type=application/json    X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
68     ${resp}=    Get Request     mso     ${data_path}     headers=${headers}
69     Log    Received response from mso ${resp.text}
70     [Return]    ${resp}
71
72 Poll MSO Get Request
73     [Documentation]    Runs an MSO get request until a certain status is received. valid values are COMPLETE
74     [Arguments]    ${data_path}     ${status}
75     ${auth}=  Create List  ${GLOBAL_MSO_USERNAME}    ${GLOBAL_MSO_PASSWORD}
76     Log    Creating session ${MSO_ENDPOINT}
77     ${session}=    Create Session       mso     ${MSO_ENDPOINT}    auth=${auth}
78     ${uuid}=    Generate UUID
79     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
80     #do this until it is done
81     :FOR    ${i}    IN RANGE    20
82     \    ${resp}=       Get Request     mso     ${data_path}     headers=${headers}
83     \    Should Not Contain    ${resp.text}    FAILED
84     \    Log    ${resp.json()['request']['requestStatus']['requestState']}
85     \    ${exit_loop}=    Evaluate    "${resp.json()['request']['requestStatus']['requestState']}" == "${status}"
86     \    Exit For Loop If  ${exit_loop}
87     \    Sleep    15s
88     Log    Received response from mso ${resp.text}
89     [Return]    ${resp}
90
91 Run MSO Post request
92     [Documentation]    Runs an MSO post request
93     [Arguments]  ${data_path}  ${data}
94     ${auth}=  Create List  ${GLOBAL_MSO_USERNAME}    ${GLOBAL_MSO_PASSWORD}
95     Log    Creating session ${MSO_ENDPOINT}
96     ${session}=    Create Session       mso     ${MSO_ENDPOINT}    auth=${auth}
97     ${uuid}=    Generate UUID
98     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
99         ${resp}=        Post Request    mso     ${data_path}     data=${data}   headers=${headers}
100         Log    Received response from mso ${resp.text}
101         [Return]  ${resp}
102
103 Run MSO Delete request
104     [Documentation]    Runs an MSO Delete request
105     [Arguments]  ${data_path}  ${data}
106     ${auth}=    Create List    ${GLOBAL_MSO_USERNAME}    ${GLOBAL_MSO_PASSWORD}
107     Log    Creating session ${MSO_ENDPOINT}
108     ${session}=    Create Session    mso    ${MSO_ENDPOINT}    auth=${auth}
109     ${uuid}=    Generate UUID
110     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json    X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
111     ${resp}=    Delete Request    mso    ${data_path}    ${data}    headers=${headers}
112     Log    Received response from mso ${resp.text}
113     [Return]    ${resp}