Merge "Add support for testing of local SDC images"
[integration/csit.git] / tests / so / orchestration / resources / SoKeywords.robot
1 *** Settings ***
2 Library StringTemplater
3 Library Collections
4 Library RequestsLibrary
5 Library HttpLibrary.HTTP
6 Library OperatingSystem
7 Library BuiltIn
8 Library String
9 Library XML
10 Resource    common/Variables.robot
11 Resource        SoVariables.robot
12 Resource    global_properties.robot
13 Resource    so_interface.robot
14
15 ***Variables***
16 ${SO_REST_URL}    ${GLOBAL_SO_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SO_IP_ADDR}:${GLOBAL_SO_SERVER_PORT}
17
18 *** Keywords ***
19 Wait To Poll
20         [Documentation] Sleep the execution for the specified time (in seconds).
21         Sleep   ${POLL_WAIT_TIME}
22
23 Poll Orchestration Request
24         [Documentation] Poll the service orchestration request for the completion. Uses MAX_POLL_COUNT to specify the maximum number of polling attempts.
25         [Arguments]     ${request_id}
26         : FOR   ${INDEX}        IN RANGE        1       ${MAX_POLL_COUNT}
27         \       Log         'Poll Count :'
28         \       Log     ${INDEX}
29         \       ${orchestration_request_response}=      Get Orchestration Request Status        ${request_id}
30
31         #       First check request status code
32         \       ${orch_request_status_code}=    Set Variable    ${orchestration_request_response.status_code}
33         \       ${orchestration_failure_message}=       Run Keyword If  ${orch_request_status_code} != ${HTTP_OK}       Catenate        Error Code      ${orch_request_status_code}
34         \       ${request_completion_status}=   Run Keyword If  ${orch_request_status_code} != ${HTTP_OK}       Set Variable    '${ORCH_REQUEST_FAILED}'
35         \       Exit For Loop If        ${orch_request_status_code} != ${HTTP_OK}
36
37         #       Get Status of Orchestration request
38         \       Log     ${orchestration_request_response.content}
39         \       ${request_completion_status}    Get Json Value  ${orchestration_request_response.content}       /request/requestStatus/requestState
40         \       ${orchestration_status_message}=        Run Keyword If  ${request_completion_status} != '${ORCH_REQUEST_IN_PROGRESS}'   Get Json Value  ${orchestration_request_response.content}       /request/requestStatus/statusMessage
41         \       Log     ${request_completion_status}
42
43         #       Check for FAILED status
44         \       ${orchestration_failure_message}=       Run Keyword If  ${request_completion_status} == '${ORCH_REQUEST_FAILED}'        Set Variable    ${orchestration_status_message}
45         \       Exit For Loop If        ${request_completion_status} == '${ORCH_REQUEST_FAILED}'
46
47         #       Check for COMPLETE status
48         \       Exit For Loop If        ${request_completion_status} == '${ORCH_REQUEST_COMPLETE}'
49
50         #       Check for MAX NO OF POLL count, and exit if it has reached the maximum poll count
51         \       ${orchestration_failure_message}=       Run Keyword If  ${INDEX} == ${MaxPollCount}-1   Set Variable    ${TIME_OUT_MESSAGE}
52         \       Exit For Loop If        ${INDEX} == ${MaxPollCount}-1
53         \       Wait To Poll
54         LOG     ${orchestration_failure_message}
55         ${request_completion_status}    Get Substring   ${request_completion_status}    1       -1
56         [Return]        ${request_completion_status}    ${orchestration_failure_message}
57
58 Get Orchestration Request Status
59         [Documentation] Get the status of the orchestrated service request.
60         [Arguments]     ${request_id}
61         
62         ${url}= Catenate        SEPARATOR=/     ${SO_ORCHESTRATION_REQUESTS_URI}        ${request_id}
63         ${orchestration_request_response}       Run SO Get Request    ${url}
64         [Return]        ${orchestration_request_response}
65         
66 Get Orchestration Request Status with parameters
67         [Documentation] Get the status of the orchestrated service request.
68         [Arguments]     ${request_id}    ${parameter}
69         
70         ${url}= Catenate        ${SO_ORCHESTRATION_REQUESTS_URI}/${request_id}?${parameter}
71         ${orchestration_request_response}       Run SO Get Request    ${url}
72         [Return]        ${orchestration_request_response}
73         
74 Get ExtSystemErrorSource
75     [Documentation]         Return ExtSystemErrorSource from Get Orchestration Request
76     [Arguments]             ${request_id}
77     
78     ${orchestration_request_response}    Get Orchestration Request Status with parameters    ${request_id}    format=statusdetail
79     ${orchestration_request_response_json}    Parse Json    ${orchestration_request_response.content}
80     ${extSystemErrorSource}    Convert to String    ${orchestration_request_response_json['request']['requestStatus']['extSystemErrorSource']}
81         
82     [Return]    ${extSystemErrorSource}
83     
84 Get RollbackExtSystemErrorSource
85     [Documentation]         Return ExtSystemErrorSource from Get Orchestration Request
86     [Arguments]             ${request_id}
87     
88     ${orchestration_request_response}    Get Orchestration Request Status with parameters    ${request_id}    format=statusdetail
89     ${orchestration_request_response_json}    Parse Json    ${orchestration_request_response.content}
90     ${rollbackExtSystemErrorSource}    Convert to String    ${orchestration_request_response_json['request']['requestStatus']['rollbackExtSystemErrorSource']}
91         
92     [Return]    ${rollbackExtSystemErrorSource}
93     
94 Get FlowStatus
95     [Documentation]         Return Flow Status from Get Orchestration Request
96     [Arguments]             ${request_id}
97     
98     ${orchestration_request_response}    Get Orchestration Request Status with parameters    ${request_id}    format=statusdetail
99     ${orchestration_request_response_json}    Parse Json    ${orchestration_request_response.content}
100     Log    ${orchestration_request_response_json} 
101     ${flow_status}    Convert to String    ${orchestration_request_response_json['request']['requestStatus']['flowStatus']}
102         
103     [Return]    ${flow_status}