f03ebb85b3036e84c08dda51a5576fa528b8db83
[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               RequestsLibrary
4 Library           String
5 Library           Collections
6 Library           SSHLibrary
7 Library           OperatingSystem
8 Library           ONAPLibrary.Templating    WITH NAME    Templating
9 Resource          global_properties.robot
10 Resource          ssh/files.robot
11
12 *** Variables ***
13 ${POLICY_HEALTH_CHECK_PATH}        /healthcheck
14 ${POLICY_NEW_HEALTHCHECK_PATH}        /policy/pap/v1/components/healthcheck
15 ${POLICY_ENDPOINT}     ${GLOBAL_POLICY_SERVER_PROTOCOL}://${GLOBAL_INJECTED_POLICY_IP_ADDR}:${GLOBAL_POLICY_SERVER_PORT}
16 ${POLICY_HEALTHCHECK_ENDPOINT}     ${GLOBAL_POLICY_SERVER_PROTOCOL}://${GLOBAL_INJECTED_POLICY_DROOLS_IP_ADDR}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
17 ${POLICY_NEW_HEALTHCHECK_ENDPOINT}     ${GLOBAL_POLICY_SERVER_PROTOCOL}://${GLOBAL_INJECTED_POLICY_PAP_IP_ADDR}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
18 ${POLICY_TEMPLATES}        policy
19 ${DROOLS_ENDPOINT}     ${GLOBAL_POLICY_SERVER_PROTOCOL}://${GLOBAL_INJECTED_POLICY_DROOLS_IP_ADDR}:${GLOBAL_DROOLS_SERVER_PORT}
20 ${POLICY_API_IP}    ${GLOBAL_INJECTED_POLICY_API_IP_ADDR}
21 ${POLICY_PAP_IP}    ${GLOBAL_INJECTED_POLICY_PAP_IP_ADDR}
22 ${POLICY_DISTRIBUTION_IP}   ${GLOBAL_INJECTED_POLICY_DISTRIBUTION_IP_ADDR}
23 ${POLICY_PDPX_IP}       ${GLOBAL_INJECTED_POLICY_PDPX_IP_ADDR}
24 ${POLICY_APEX_PDP_IP}       ${GLOBAL_INJECTED_POLICY_APEX_PDP_IP_ADDR}
25 ${POLICY_HEALTHCHECK_USERNAME}          ${GLOBAL_POLICY_HEALTHCHECK_USERNAME}
26 ${POLICY_HEALTHCHECK_PASSWORD}          ${GLOBAL_POLICY_HEALTHCHECK_PASSWORD}
27
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 Policy New Healthcheck
47      [Documentation]    Runs New Policy Health check
48      ${auth}=    Create List     ${GLOBAL_POLICY_HEALTHCHECK_USERNAME}   ${GLOBAL_POLICY_HEALTHCHECK_PASSWORD}
49      Log    Creating session ${POLICY_NEW_HEALTHCHECK_ENDPOINT}
50      ${session}=    Create Session  policy  ${POLICY_NEW_HEALTHCHECK_ENDPOINT}   auth=${auth}
51      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
52      ${resp}=   Get Request   policy  ${POLICY_NEW_HEALTHCHECK_PATH}    headers=${headers}
53      Log    Received response from policy ${resp.text}
54      Should Be Equal As Strings   ${resp.status_code}   200
55      Should Be True   ${resp.json()['healthy']}
56
57 Run Drools Get Request
58      [Documentation]    Runs Drools Get Request
59      [Arguments]    ${data_path}
60      Log    Creating session ${DROOLS_ENDPOINT}
61      ${session}=    Create Session      policy  ${DROOLS_ENDPOINT}   auth=${GLOBAL_DROOLS_AUTHENTICATION}
62      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
63      ${resp}=   Get Request     policy  ${data_path}     headers=${headers}
64      Log    Received response from policy ${resp.text}
65      Should Be Equal As Strings         ${resp.status_code}     200
66      [Return]   ${resp}
67
68 Run Policy Put Request
69      [Documentation]    Runs Policy Put request
70      [Arguments]    ${data_path}  ${data}
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}=   Put Request     policy  ${data_path}     data=${data}    headers=${headers}
75      Log    Received response from policy ${resp.text}
76      [Return]    ${resp}
77
78 Run Policy Get Request
79      [Documentation]    Runs Policy Get request
80      [Arguments]    ${data_path}
81      Log    Creating session ${POLICY_ENDPOINT}
82      ${session}=    Create Session      policy  ${POLICY_ENDPOINT}
83      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    Authorization=Basic ${GLOBAL_POLICY_AUTH}   ClientAuth=${GLOBAL_POLICY_CLIENTAUTH}    Environment=TEST
84      ${resp}=   Get Request     policy   ${data_path}     headers=${headers}
85      Log    Received response from policy ${resp.text}
86
87 Run Policy Pap Get Request
88      [Documentation]    Runs Policy Pap Get request
89      [Arguments]    ${data_path}
90      ${auth}=    Create List   ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
91      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
92      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
93      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
94      ${resp}=   Get Request     policy   ${data_path}     headers=${headers}
95      Log    Received response from Policy Pap ${resp.text}
96      [Return]   ${resp}
97
98
99 Run Policy Post Request
100      [Documentation]    Runs Policy Post request
101      [Arguments]    ${data_path}  ${data}
102      Log    Creating session ${POLICY_ENDPOINT}
103      ${session}=    Create Session      policy  ${POLICY_ENDPOINT}
104      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    Authorization=Basic ${GLOBAL_POLICY_AUTH}   ClientAuth=${GLOBAL_POLICY_CLIENTAUTH}    Environment=TEST
105      ${resp}=   Post Request    policy   ${data_path}     data=${data}    headers=${headers}
106      Log    Received response from policy ${resp.text}
107      [Return]    ${resp}
108
109 Run Policy Api Post Request
110      [Documentation]    Runs Policy Api Post request
111      [Arguments]    ${data_path}  ${data}
112      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
113      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_API_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
114      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_API_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
115      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
116      ${resp}=   Post Request    policy   ${data_path}     data=${data}    headers=${headers}
117      Log    Received response from policy ${resp.text}
118      [Return]    ${resp}
119
120
121 Run Policy Pap Post Request
122      [Documentation]    Runs Policy Pap Post request
123      [Arguments]    ${data_path}  ${data}
124      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
125      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
126      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
127      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
128      ${resp}=   Post Request    policy   ${data_path}     data=${data}    headers=${headers}
129      Log    Received response from policy ${resp.text}
130      [Return]    ${resp}
131
132 Undeploy Policy
133      [Documentation]    Runs Policy PAP Undeploy a Policy from PDP Groups
134      [Arguments]    ${policy_name}
135      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
136      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
137      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
138      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
139      ${resp}=   Delete Request     policy  /policy/pap/v1/pdps/policies/${policy_name}     headers=${headers}
140      Log    Received response from policy ${resp.text}
141      Should Be Equal As Strings    ${resp.status_code}     200
142
143
144 Run Policy Delete Request
145      [Documentation]    Runs Policy Delete request
146      [Arguments]    ${data_path}  ${data}
147      Log    Creating session ${POLICY_ENDPOINT}
148      ${session}=    Create Session      policy  ${POLICY_ENDPOINT}
149      ${headers}=    Create Dictionary     Accept=application/json    Content-Type=application/json    Authorization=Basic ${GLOBAL_POLICY_AUTH}   ClientAuth=${GLOBAL_POLICY_CLIENTAUTH}    Environment=TEST
150      ${resp}=   Delete Request  policy  ${data_path}    data=${data}    headers=${headers}
151      Log    Received response from policy ${resp.text}
152      [Return]    ${resp}
153
154 Run Policy Get Configs Request
155     [Documentation]    Runs Policy Get Configs request
156     [Arguments]    ${data_path}  ${data}
157     Log    Creating session ${POLICY_ENDPOINT}
158     ${session}=    Create Session       policy  ${POLICY_ENDPOINT}
159     ${headers}=    Create Dictionary     Accept=application/json    Content-Type=application/json    Authorization=Basic ${GLOBAL_POLICY_AUTH}   ClientAuth=${GLOBAL_POLICY_CLIENTAUTH}
160     ${resp}=    Post Request    policy  ${data_path}    data=${data}    headers=${headers}
161     Log    Received response from policy ${resp.text}
162     [Return]    ${resp}
163
164 Update vVFWCL Policy
165     [Arguments]   ${resource_id}
166     Log   Create vFWCL Monitoring Policy
167     Create vFirewall Monitoring Policy
168     Sleep   5s
169     Log   Create vFWCL Operational Policy
170     ${op_policy_version}=   Create vFirewall Operational Policy   ${resource_id}
171     Sleep   5s
172     Log   Push vFWCL To PDP Group
173     Push vFirewall Policies To PDP Group    ${op_policy_version}
174     Sleep    20s
175     Log   Validate vFWCL Policy
176     Validate the vFWCL Policy
177
178
179 Delete vFWCL Policy
180     Templating.Create Environment    policy    ${GLOBAL_TEMPLATE_FOLDER}
181     ${dict}=   Create Dictionary   policyName=com.BRMSParamvFirewall
182         ${data}=   Templating.Apply Template    policy    ${POLICY_TEMPLATES}/FirewallPolicy_delete.jinja    ${dict}
183     ${resp}=   Run Policy Delete Request    /pdp/api/deletePolicy    ${data}
184     Should Be Equal As Strings  ${resp.status_code}     200
185
186 Create vFWCL Policy
187     [Arguments]   ${resource_id}
188     ${dict}=   Create Dictionary   RESOURCE_ID=${resource_id}
189     Templating.Create Environment    policy    ${GLOBAL_TEMPLATE_FOLDER}
190     ${data}=   Templating.Apply Template    policy    ${POLICY_TEMPLATES}/FirewallPolicy_update.jinja   ${dict}
191     ${resp}=   Run Policy Put Request    /pdp/api/updatePolicy    ${data}
192     Should Be Equal As Strings  ${resp.status_code}     200
193
194 Push vFWCL Policy
195     Templating.Create Environment    policy    ${GLOBAL_TEMPLATE_FOLDER}
196     ${dict}=   Create Dictionary
197     ${data}=   Templating.Apply Template    policy    ${POLICY_TEMPLATES}/FirewallPolicy_push.jinja   ${dict}
198     ${resp}=   Run Policy Put Request    /pdp/api/pushPolicy    ${data}
199     Should Be Equal As Strings  ${resp.status_code}     200
200
201 Validate the vFWCL Policy Old
202     ${resp}=   Run Drools Get Request   /policy/pdp/engine/controllers/amsterdam/drools
203     Should Be Equal As Strings  ${resp.status_code}     200
204     ${resp}=   Run Drools Get Request   /policy/pdp/engine/controllers/amsterdam/drools/facts/closedloop-amsterdam/org.onap.policy.controlloop.Params
205     Should Be Equal As Strings  ${resp.status_code}     200
206
207 Validate the vFWCL Policy
208     ${resp}=   Run Policy Pap Get Request   /policy/pap/v1/pdps
209     Log    Received response from policy ${resp.text}
210     Should Be Equal As Strings         ${resp.status_code}     200
211
212 Create vFirewall Monitoring Policy
213      ${dict}=   Create Dictionary
214     Templating.Create Environment    policy    ${GLOBAL_TEMPLATE_FOLDER}
215      ${data}=   Templating.Apply Template    policy    ${POLICY_TEMPLATES}/vFirewall_policy_monitoring_input_tosca.jinja    ${dict}
216      ${resp}=   Run Policy Api Post Request    /policy/api/v1/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0/policies     ${data}
217      Should Be Equal As Strings         ${resp.status_code}     200
218
219 Create vFirewall Operational Policy
220     [Arguments]   ${resource_id}
221     ${dict}=   Create Dictionary   RESOURCE_ID=${resource_id}
222     Templating.Create Environment    policy    ${GLOBAL_TEMPLATE_FOLDER}
223     ${content_data}    OperatingSystem.Get File    ${GLOBAL_TEMPLATE_FOLDER}/${POLICY_TEMPLATES}/vFirewall_policy_operational_content.yaml
224     ${content_data}=    Replace String Using Regexp   ${content_data}    __RESOURCE_ID__     ${resource_id}
225     ${encoded_content_data}=    Evaluate    urllib.quote_plus('''${content_data}''')   urllib
226     ${content_dictionary}=   Create Dictionary    URL_ENCODED_CONTENT    ${encoded_content_data}
227     ${data_2}=   Templating.Apply Template    policy    ${POLICY_TEMPLATES}/vFirewall_policy_operational_url_enc_content_input.jinja   ${content_dictionary}
228     Log    ${data_2}
229     ${resp}=   Run Policy Api Post Request    /policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies    ${data_2}
230     Should Be Equal As Strings         ${resp.status_code}     200
231     [Return]    ${resp.json()['policy-version']}
232
233 Push vFirewall Policies To PDP Group
234     [Arguments]    ${op_policy_version}
235     ${dict}=   Create Dictionary    OP_POLICY_VERSION=${op_policy_version}
236     Templating.Create Environment    policy    ${GLOBAL_TEMPLATE_FOLDER}
237     ${data}=   Templating.Apply Template    policy    ${POLICY_TEMPLATES}/vFirewall_push.jinja    ${dict}
238     ${resp}=   Run Policy Pap Post Request    /policy/pap/v1/pdps/policies   ${data}
239     Should Be Equal As Strings    ${resp.status_code}     200
240
241 Run Policy API Healthcheck
242      [Documentation]    Runs Policy Api Health check
243      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
244      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_API_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
245      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_API_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
246      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
247      ${resp}=   Get Request     policy  /policy/api/v1/healthcheck     headers=${headers}
248      Log    Received response from policy ${resp.text}
249      Should Be Equal As Strings    ${resp.status_code}     200
250      Should Be Equal As Strings    ${resp.json()['code']}  200
251
252 Run Policy PAP Healthcheck
253      [Documentation]    Runs Policy PAP Health check
254      ${auth}=    Create List   ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
255      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
256      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PAP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
257      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
258      ${resp}=   Get Request     policy  /policy/pap/v1/healthcheck     headers=${headers}
259      Log    Received response from policy ${resp.text}
260      Should Be Equal As Strings    ${resp.status_code}     200
261      Should Be Equal As Strings    ${resp.json()['code']}  200
262
263 Run Policy Distribution Healthcheck
264      [Documentation]    Runs Policy Distribution Health check
265      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
266      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_DISTRIBUTION_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
267      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_DISTRIBUTION_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
268      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
269      ${resp}=   Get Request     policy  /healthcheck     headers=${headers}
270      Log    Received response from policy ${resp.text}
271      Should Be Equal As Strings    ${resp.status_code}     200
272      Should Be Equal As Strings    ${resp.json()['code']}  200
273
274 Run Policy XACML PDP Healthcheck
275      [Documentation]    Runs Policy Xacml PDP Health check
276      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
277      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PDPX_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
278      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_PDPX_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
279      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
280      ${resp}=   Get Request     policy  /policy/pdpx/v1/healthcheck     headers=${headers}
281      Log    Received response from policy ${resp.text}
282      Should Be Equal As Strings    ${resp.status_code}     200
283      Should Be Equal As Strings    ${resp.json()['code']}  200
284
285 Run Policy APEX PDP Healthcheck
286      [Documentation]    Runs Policy Apex PDP Health check
287      ${auth}=    Create List    ${POLICY_HEALTHCHECK_USERNAME}    ${POLICY_HEALTHCHECK_PASSWORD}
288      Log    Creating session ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_APEX_PDP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}
289      ${session}=    Create Session      policy  ${GLOBAL_POLICY_SERVER_PROTOCOL}://${POLICY_APEX_PDP_IP}:${GLOBAL_POLICY_HEALTHCHECK_PORT}   auth=${auth}
290      ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json
291      ${resp}=   Get Request     policy  /policy/apex-pdp/v1/healthcheck     headers=${headers}
292      Log    Received response from policy ${resp.text}
293      Should Be Equal As Strings    ${resp.status_code}     200
294      Should Be Equal As Strings    ${resp.json()['code']}  200