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