88f2b6f89d6ab78bfac5e0f55ee2e0ea1bea1733
[testsuite.git] / robot / resources / policy_interface.robot
1 *** Settings ***
2 Documentation     The main interface for interacting with Policy. It handles low level stuff like managing the http request library and Policy required fields
3 Library           RequestsClientCert
4 Library               RequestsLibrary
5 Library           String
6 Library           JSONUtils
7 Library           Collections
8 Resource          global_properties.robot
9
10 *** Variables ***
11 ${POLICY_HEALTH_CHECK_PATH}        /healthcheck
12 ${POLICY_ENDPOINT}     ${GLOBAL_POLICY_SERVER_PROTOCOL}://${GLOBAL_INJECTED_POLICY_IP_ADDR}:${GLOBAL_POLICY_SERVER_PORT}
13 ${POLICY_HEALTHCHECK_ENDPOINT}     ${GLOBAL_POLICY_SERVER_PROTOCOL}://${GLOBAL_INJECTED_POLICY_HEALTHCHECK_IP_ADDR}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
14 ${POLICY_TEMPLATES}        robot/assets/templates/policy
15 ${DROOLS_ENDPOINT}     ${GLOBAL_POLICY_SERVER_PROTOCOL}://${GLOBAL_INJECTED_POLICY_IP_ADDR}:${GLOBAL_DROOLS_SERVER_PORT}
16 ${POLICY_API_IP}    ${GLOBAL_INJECTED_POLICY_API_IP_ADDR}
17 ${POLICY_PAP_IP}    ${GLOBAL_INJECTED_POLICY_PAP_IP_ADDR}
18 ${POLICY_DISTRIBUTION_IP}   ${GLOBAL_INJECTED_POLICY_DISTRIBUTION_IP_ADDR}
19 ${POLICY_PDPX_IP}       ${GLOBAL_INJECTED_POLICY_PDPX_IP_ADDR}
20 ${POLICY_APEX_PDP_IP}       ${GLOBAL_INJECTED_POLICY_APEX_PDP_IP_ADDR}
21 ${POLICY_HEALTHCHECK_USERNAME}          ${GLOBAL_POLICY_HEALTHCHECK_USERNAME}
22 ${POLICY_HEALTHCHECK_PASSWORD}          ${GLOBAL_POLICY_HEALTHCHECK_PASSWORD}
23
24 *** Keywords ***
25
26 Run Policy Health Check
27      [Documentation]    Runs Policy Health check
28      ${auth}=    Create List    ${GLOBAL_POLICY_USERNAME}    ${GLOBAL_POLICY_PASSWORD}
29      Log    Creating session ${POLICY_ENDPOINT}
30      ${session}=    Create Session      policy  ${POLICY_HEALTHCHECK_ENDPOINT}   auth=${auth}
31      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
32      ${resp}=   Get Request     policy  ${POLICY_HEALTH_CHECK_PATH}     headers=${headers}
33      Log    Received response from policy ${resp.text}
34      Should Be Equal As Strings         ${resp.status_code}     200
35      Should Be True     ${resp.json()['healthy']}
36      @{ITEMS}=    Copy List    ${resp.json()['details']}
37      :FOR    ${ELEMENT}    IN    @{ITEMS}
38      \    Should Be Equal As Strings    ${ELEMENT['code']}      200
39      \    Should Be True    ${ELEMENT['healthy']}
40
41 Run Drools Get Request
42      [Documentation]    Runs Drools Get Request
43      [Arguments]    ${data_path}
44      ${auth}=    Create List    ${GLOBAL_DROOLS_USERNAME}    ${GLOBAL_DROOLS_PASSWORD}
45      Log    Creating session ${POLICY_ENDPOINT}
46      ${session}=    Create Session      policy  ${DROOLS_ENDPOINT}   auth=${auth}
47      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
48      ${resp}=   Get Request     policy  ${data_path}     headers=${headers}
49      Log    Received response from policy ${resp.text}
50      Should Be Equal As Strings         ${resp.status_code}     200
51      [Return]   ${resp}
52
53 Run Policy Put Request
54      [Documentation]    Runs Policy Put request
55      [Arguments]    ${data_path}  ${data}
56      Log    Creating session ${POLICY_ENDPOINT}
57      ${session}=    Create Session      policy  ${POLICY_ENDPOINT}
58      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    Authorization=Basic ${GLOBAL_POLICY_AUTH}   ClientAuth=${GLOBAL_POLICY_CLIENTAUTH}    Environment=TEST
59      ${resp}=   Put Request     policy  ${data_path}     data=${data}    headers=${headers}
60      Log    Received response from policy ${resp.text}
61      [Return]    ${resp}
62
63 Run Policy Get Request
64      [Documentation]    Runs Policy Get request
65      [Arguments]    ${data_path}
66      Log    Creating session ${POLICY_ENDPOINT}
67      ${session}=    Create Session      policy  ${POLICY_ENDPOINT}
68      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    Authorization=Basic ${GLOBAL_POLICY_AUTH}   ClientAuth=${GLOBAL_POLICY_CLIENTAUTH}    Environment=TEST
69      ${resp}=   Get Request     policy   ${data_path}     headers=${headers}
70      Log    Received response from policy ${resp.text}
71
72 Run Policy Pap Get Request
73      [Documentation]    Runs Policy Pap Get request
74      [Arguments]    ${data_path}
75      ${auth}=    Create List   ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
76      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
77      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}  disable_warnings=1
78      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
79      ${resp}=   Get Request     policy   ${data_path}     headers=${headers}
80      Log    Received response from Policy Pap ${resp.text}
81      [Return]   ${resp}
82
83
84 Run Policy Post Request
85      [Documentation]    Runs Policy Post request
86      [Arguments]    ${data_path}  ${data}
87      Log    Creating session ${POLICY_ENDPOINT}
88      ${session}=    Create Session      policy  ${POLICY_ENDPOINT}
89      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    Authorization=Basic ${GLOBAL_POLICY_AUTH}   ClientAuth=${GLOBAL_POLICY_CLIENTAUTH}    Environment=TEST
90      ${resp}=   Post Request    policy   ${data_path}     data=${data}    headers=${headers}
91      Log    Received response from policy ${resp.text}
92      [Return]    ${resp}
93
94 Run Policy Api Post Request
95      [Documentation]    Runs Policy Api Post request
96      [Arguments]    ${data_path}  ${data}
97      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
98      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_API_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}  disable_warnings=1
99      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_API_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
100      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
101      ${resp}=   Post Request    policy   ${data_path}     data=${data}    headers=${headers}
102      Log    Received response from policy ${resp.text}
103      [Return]    ${resp}
104
105
106 Run Policy Pap Post Request
107      [Documentation]    Runs Policy Pap Post request
108      [Arguments]    ${data_path}  ${data}
109      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
110      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}  disable_warnings=1
111      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
112      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
113      ${resp}=   Post Request    policy   ${data_path}     data=${data}    headers=${headers}
114      Log    Received response from policy ${resp.text}
115      [Return]    ${resp}
116
117
118 Run Policy Delete Request
119      [Documentation]    Runs Policy Delete request
120      [Arguments]    ${data_path}  ${data}
121      Log    Creating session ${POLICY_ENDPOINT}
122      ${session}=    Create Session      policy  ${POLICY_ENDPOINT}
123      ${headers}=    Create Dictionary     Accept=application/json    Content-Type=application/json    Authorization=Basic ${GLOBAL_POLICY_AUTH}   ClientAuth=${GLOBAL_POLICY_CLIENTAUTH}    Environment=TEST
124      ${resp}=   Delete Request  policy  ${data_path}    data=${data}    headers=${headers}
125      Log    Received response from policy ${resp.text}
126      [Return]    ${resp}
127
128 Run Policy Get Configs Request
129     [Documentation]    Runs Policy Get Configs request
130     [Arguments]    ${data_path}  ${data}
131     Log    Creating session ${POLICY_ENDPOINT}
132     ${session}=    Create Session       policy  ${POLICY_ENDPOINT}
133     ${headers}=    Create Dictionary     Accept=application/json    Content-Type=application/json    Authorization=Basic ${GLOBAL_POLICY_AUTH}   ClientAuth=${GLOBAL_POLICY_CLIENTAUTH}
134     ${resp}=    Post Request    policy  ${data_path}    data=${data}    headers=${headers}
135     Log    Received response from policy ${resp.text}
136     [Return]    ${resp}
137
138
139
140 Update vVFWCL Policy Old
141     [Arguments]   ${resource_id}
142     Run Keyword and Ignore Error    Delete vFWCL Policy
143     Sleep    20s
144     Log To Console   Create vFWCL Policy
145     Create vFWCL Policy     ${resource_id}
146     Sleep    5s
147     Log To Console   Push vFWCL Policy
148     Push vFWCL Policy
149     Sleep    20s
150     Log To Console   Reboot Drools
151     Reboot Drools
152     Sleep    20s
153     Log To Console   Validate vFWCL Policy
154     Validate the vFWCL Policy Old
155
156 Update vVFWCL Policy
157     [Arguments]   ${resource_id}
158     Log To Console   Create vFWCL Monitoring Policy
159     Create vFirewall Monitoring Policy
160     Sleep   5s
161     Log To Console   Create vFWCL Operational Policy
162     Create vFirewall Operational Policy   ${resource_id}
163     Sleep   5s
164     Log To Console   Push vFWCL To PDP Group
165     Push vFirewall Policies To PDP Group
166     Sleep    20s
167     Log To Console   Validate vFWCL Policy
168     Validate the vFWCL Policy
169
170
171 Delete vFWCL Policy
172      ${data}=   OperatingSystem.Get File    ${POLICY_TEMPLATES}/FirewallPolicy_delete.template
173      ${resp}=   Run Policy Delete Request    /pdp/api/deletePolicy    ${data}
174      Should Be Equal As Strings         ${resp.status_code}     200
175
176 Create vFWCL Policy
177     [Arguments]   ${resource_id}
178     ${dict}=   Create Dictionary   RESOURCE_ID=${resource_id}
179     ${data}=   Fill JSON Template File    ${POLICY_TEMPLATES}/FirewallPolicy_update.template   ${dict}
180     ${resp}=   Run Policy Put Request    /pdp/api/updatePolicy    ${data}
181     Should Be Equal As Strings  ${resp.status_code}     200
182
183 Push vFWCL Policy
184      ${dict}=   Create Dictionary
185      ${data}=   Fill JSON Template File    ${POLICY_TEMPLATES}/FirewallPolicy_push.template   ${dict}
186      ${resp}=   Run Policy Put Request    /pdp/api/pushPolicy    ${data}
187      Should Be Equal As Strings         ${resp.status_code}     200
188
189 Reboot Drools
190     ${stop}=   Catenate   docker exec -t -u policy drools bash -c "source /opt/app/policy/etc/profile.d/env.sh; policy stop"
191     ${start}=   Catenate   docker exec -t -u policy drools bash -c "source /opt/app/policy/etc/profile.d/env.sh; policy start"
192     Wait Until Keyword Succeeds    120    5 sec    Open Connection And Log In    ${GLOBAL_INJECTED_POLICY_IP_ADDR}    root    ${GLOBAL_VM_PRIVATE_KEY}
193     Write    ${stop}
194     ${status}   ${stdout}=       Run Keyword And Ignore Error    SSHLibrary.Read Until Regexp    has stopped
195     Log   ${status}: stdout=${stdout}
196     ${ctrlc}=    Evaluate   '\x03'
197     Run Keyword If   '${status}' == 'FAIL'   Write   ${ctrlc}
198     Sleep    5s
199     Write    ${start}
200     ${stdout}=   SSHLibrary.Read Until Regexp    is running
201     Log   stdout=${stdout}
202     Should Contain     ${stdout}    is running
203
204 Validate the vFWCL Policy Old
205     ${resp}=   Run Drools Get Request   /policy/pdp/engine/controllers/amsterdam/drools
206     Should Be Equal As Strings  ${resp.status_code}     200
207     ${resp}=   Run Drools Get Request   /policy/pdp/engine/controllers/amsterdam/drools/facts/closedloop-amsterdam/org.onap.policy.controlloop.Params
208     Should Be Equal As Strings  ${resp.status_code}     200
209
210 Validate the vFWCL Policy
211     ${resp}=   Run Policy Pap Get Request   /policy/pap/v1/pdps
212     Log    Received response from policy ${resp.text}
213     Should Be Equal As Strings         ${resp.status_code}     200
214
215 Create vFirewall Monitoring Policy
216      ${dict}=   Create Dictionary
217      ${data}=   Fill JSON Template File    ${POLICY_TEMPLATES}/vFirewall_policy_monitoring_input_tosca.template    ${dict}
218      ${resp}=   Run Policy Api Post Request    /policy/api/v1/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies     ${data}
219      Should Be Equal As Strings         ${resp.status_code}     200
220
221
222 Create vFirewall Operational Policy
223      [Arguments]   ${resource_id}
224      ${dict}=   Create Dictionary   RESOURCE_ID=${resource_id}
225      ${data}=   Fill JSON Template File    ${POLICY_TEMPLATES}/vFirewall_policy_operational_input.template    ${dict}
226      ${resp}=   Run Policy Api Post Request    /policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies    ${data}
227      Should Be Equal As Strings         ${resp.status_code}     200
228
229
230 Push vFirewall Policies To PDP Group
231      ${dict}=   Create Dictionary
232      ${data}=   Fill JSON Template File    ${POLICY_TEMPLATES}/vFirewall_push.template    ${dict}
233      #${resp}=   Run Policy Post Request    /policy/pap/v1/pdps/policies   ${data}
234      ${resp}=   Run Policy Pap Post Request    /policy/pap/v1/pdps/policies   ${data}
235      #Should Be Equal As Strings        ${resp.status_code}     200
236
237 Run Policy API Healthcheck
238      [Documentation]    Runs Policy Api Health check
239      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
240      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_API_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
241      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_API_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}  disable_warnings=1
242      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
243      ${resp}=   Get Request     policy  /policy/api/v1/healthcheck     headers=${headers}
244      Log    Received response from policy ${resp.text}
245      Should Be Equal As Strings    ${resp.status_code}     200
246      Should Be Equal As Strings    ${resp.json()['code']}  200
247
248 Run Policy PAP Healthcheck
249      [Documentation]    Runs Policy PAP Health check
250      ${auth}=    Create List   ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
251      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
252      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}  disable_warnings=1
253      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
254      ${resp}=   Get Request     policy  /policy/pap/v1/healthcheck     headers=${headers}
255      Log    Received response from policy ${resp.text}
256      Should Be Equal As Strings    ${resp.status_code}     200
257      Should Be Equal As Strings    ${resp.json()['code']}  200
258
259 Run Policy Distribution Healthcheck
260      [Documentation]    Runs Policy Distribution Health check
261      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
262      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_DISTRIBUTION_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
263      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_DISTRIBUTION_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}  disable_warnings=1
264      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
265      ${resp}=   Get Request     policy  /healthcheck     headers=${headers}
266      Log    Received response from policy ${resp.text}
267      Should Be Equal As Strings    ${resp.status_code}     200
268      Should Be Equal As Strings    ${resp.json()['code']}  200
269
270 Run Policy XACML PDP Healthcheck
271      [Documentation]    Runs Policy Xacml PDP Health check
272      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
273      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PDPX_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
274      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PDPX_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
275      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
276      ${resp}=   Get Request     policy  /policy/pdpx/v1/healthcheck     headers=${headers}
277      Log    Received response from policy ${resp.text}
278      Should Be Equal As Strings    ${resp.status_code}     200
279      Should Be Equal As Strings    ${resp.json()['code']}  200
280
281 Run Policy APEX PDP Healthcheck
282      [Documentation]    Runs Policy Apex PDP Health check
283      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
284      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_APEX_PDP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
285      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_APEX_PDP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}   disable_warnings=1
286      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
287      ${resp}=   Get Request     policy  /policy/apex-pdp/v1/healthcheck     headers=${headers}
288      Log    Received response from policy ${resp.text}
289      Should Be Equal As Strings    ${resp.status_code}     200
290      Should Be Equal As Strings    ${resp.json()['code']}  200
291