2 Variables ../variables/Variables.py
3 Variables ../variables/topoprocessing/Topologies.py
4 Variables ../variables/topoprocessing/TopologyRequests.py
5 Library RequestsLibrary
8 Resource KarafKeywords.robot
12 ${CONFIGURATION_XML} ${CURDIR}/../suites/topoprocessing/configuration.xml
13 ${OPERATIONAL_XML} ${CURDIR}/../suites/topoprocessing/operational.xml
14 ${REMOTE_FILE} ${WORKSPACE}/${BUNDLEFOLDER}/etc/opendaylight/karaf/80-topoprocessing-config.xml
18 [Arguments] ${request} ${overlay_topology_url}
19 [Documentation] Test basic aggregation
20 ${resp} Put Request session ${CONFIG_API}/${overlay_topology_url} data=${request}
21 Log ${CONFIG_API}/${overlay_topology_url}
22 Should Be Equal As Strings ${resp.status_code} 200
23 Wait For Karaf Log Correlation configuration successfully read
24 Wait For Karaf Log Transaction successfully written
25 ${resp} Get Request session ${OPERATIONAL_API}/${overlay_topology_url}
26 Should Be Equal As Strings ${resp.status_code} 200
31 [Documentation] Setup karaf enviroment for following tests
32 Log ---- Setup Environment ----
33 Open Connection ${ODL_SYSTEM_IP}
34 Flexible Controller Login
35 Put File ${CONFIGURATION_XML} ${REMOTE_FILE}
37 Issue Command On Karaf Console log:set DEBUG org.opendaylight.topoprocessing
38 Install a Feature odl-restconf-noauth timeout=30
39 Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${SEND_ACCEPT_XML_HEADERS}
40 ${features} Issue Command On Karaf Console feature:list -i
41 ${lines} Get Lines Containing String ${features} odl-topoprocessing-framework
42 ${length} Get Length ${lines}
43 Install a Feature odl-openflowplugin-nsf-model-li odl-topoprocessing-framework odl-topoprocessing-network-topology odl-topoprocessing-inventory odl-mdsal-models odl-ovsdb-southbound-impl timeout=120
44 Run Keyword If ${length} == 0 Wait For Karaf Log Registering Topology Request Listener 60
45 Prepare New Feature Installation
46 Insert Underlay topologies
49 [Documentation] Revert startup changes
50 Log ---- Clean Environment ----
51 Open Connection ${ODL_SYSTEM_IP}
52 Flexible Controller Login
53 Put File ${OPERATIONAL_XML} ${REMOTE_FILE}
58 [Arguments] ${overlay_topology}
59 [Documentation] Delete overlay topologies from datastore
60 Log ---- Test Teardown ----
61 Log Deleting overlay topology from ${CONFIG_API}/${overlay_topology}
62 ${resp} Delete Request session ${CONFIG_API}/${overlay_topology}
63 Should Be Equal As Strings ${resp.status_code} 200
65 Prepare New Feature Installation
66 [Documentation] Clears karaf logs and CONFIGURATION datastore
67 ${resp} Delete Request session ${CONFIG_API}/network-topology:network-topology
68 ${resp} Delete Request session ${CONFIG_API}/opendaylight-inventory:nodes
69 Issue Command On Karaf Console log:clear
71 Insert Underlay Topologies
72 [Documentation] Insert underlay topologies used by following tests
73 Log Inserting underlay topologies
74 # Network underlay topologies
75 : FOR ${index} IN RANGE 1 7
76 \ ${resp} Put Request session ${CONFIG_API}/${TOPOLOGY_URL}/network-topo:${index} data=${NETWORK_UNDERLAY_TOPOLOGY_${index}}
78 \ Should Be Equal As Strings ${resp.status_code} 200
79 # Openflow underlay nodes
80 ${resp} Put Request session ${CONFIG_API}/opendaylight-inventory:nodes data=${OPENFLOW_UNDERLAY_NODES}
82 Should Be Equal As Strings ${resp.status_code} 200
83 # Openflow underlay topologies
84 : FOR ${index} IN RANGE 1 7
85 \ ${resp} Put Request session ${CONFIG_API}/${TOPOLOGY_URL}/openflow-topo:${index} data=${OPENFLOW_UNDERLAY_TOPOLOGY_${index}}
87 \ Should Be Equal As Strings ${resp.status_code} 200
88 Issue Command On Karaf Console log:clear
91 Prepare Unification Inside Topology Request
92 [Arguments] ${request_template} ${model} ${correlation_item} ${underlay_topo1}
93 [Documentation] Prepare topology request for unification inside from template
94 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlations/output-model
95 ${request_template} Set Element Text ${request_template} aggregation-only xpath=.//correlations/correlation/type
96 ${request_template} Set Element Text ${request_template} ${correlation_item} xpath=.//correlation/correlation-item
97 ${request_template} Set Element Text ${request_template} unification xpath=.//correlation/aggregation/aggregation-type
98 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlation/aggregation/mapping[1]/input-model
99 ${request_template} Set Element Text ${request_template} ${underlay_topo1} xpath=.//correlation/aggregation/mapping[1]/underlay-topology
100 ${request_template} Element to String ${request_template}
101 [Return] ${request_template}
103 Prepare Unification Topology Request
104 [Arguments] ${request_template} ${model} ${correlation_item} ${underlay_topo1} ${underlay_topo2}
105 [Documentation] Prepare topology request for unification on two topologies from template
106 ${request_template} Prepare Unification Inside Topology Request ${request_template} ${model} ${correlation_item} ${underlay_topo1}
107 ${request_template} Set Element Text ${request_template} ${underlay_topo2} xpath=.//correlation/aggregation/mapping[2]/underlay-topology
108 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlation/aggregation/mapping[2]/input-model
109 ${request_template} Element to String ${request_template}
110 [Return] ${request_template}
112 Prepare Unification Filtration Topology Request
113 [Arguments] ${request_template} ${model} ${correlation_item} ${target_field1} ${underlay_topo1} ${target_field2}
114 ... ${underlay_topo2}
115 [Documentation] Prepare topology request for unification on two topologies from template
116 ${request_template} Prepare Unification Filtration Inside Topology Request ${request_template} ${model} ${correlation_item} ${target_field1} ${underlay_topo1}
117 ${request_template} Set Element Text ${request_template} ${underlay_topo2} xpath=.//correlation/aggregation/mapping[2]/underlay-topology
118 Insert Target Field ${request_template} 2 ${target_field2} 1
119 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlation/aggregation/mapping[2]/input-model
120 ${request_template} Element to String ${request_template}
121 [Return] ${request_template}
123 Prepare Unification Filtration Inside Topology Request
124 [Arguments] ${request_template} ${model} ${correlation_item} ${target-field} ${underlay_topo}
125 [Documentation] Prepare topology request for unification filtration inside from template
126 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlations/output-model
127 ${request_template} Set Element Text ${request_template} filtration-aggregation xpath=.//correlations/correlation/type
128 ${request_template} Set Element Text ${request_template} ${correlation_item} xpath=.//correlation/correlation-item
129 ${request_template} Set Element Text ${request_template} unification xpath=.//correlation/aggregation/aggregation-type
130 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlation/aggregation/mapping[1]/input-model
131 ${request_template} Set Element Text ${request_template} ${underlay_topo} xpath=.//correlation/aggregation/mapping[1]/underlay-topology
132 Insert Target Field ${request_template} 1 ${target-field} 1
133 ${request_template} Set Element Text ${request_template} ${underlay_topo} xpath=.//correlation/filtration/underlay-topology
134 ${request_template} Element to String ${request_template}
135 [Return] ${request_template}
138 [Arguments] ${request_template} ${mapping} ${filter_id}
139 ${request_template} Add Element ${request_template} ${APPLY_FILTERS} xpath=.//correlation/aggregation/mapping[${mapping}]
140 ${request_template} Set Element Text ${request_template} ${filter_id} xpath=.//correlation/aggregation/mapping[${mapping}]/apply-filters
141 [Return] ${request_template}
143 Prepare Filtration Topology Request
144 [Arguments] ${request_template} ${model} ${correlation_item} ${underlay_topo}
145 [Documentation] Prepare topology request for filtration from template
146 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlations/output-model
147 ${request_template} Set Element Text ${request_template} ${correlation_item} xpath=.//correlation/correlation-item
148 ${request_template} Set Element Text ${request_template} ${underlay_topo} xpath=.//correlation/filtration/underlay-topology
149 [Return] ${request_template}
152 [Arguments] ${request_template} ${mapping_index} ${target_field_path} ${matching_key}
153 [Documentation] Add target field to request
154 ${target_field_template} Set Element Text ${TARGET_FIELD} ${target_field_path} xpath=.//target-field-path
155 ${target_field_template} Set Element Text ${target_field_template} ${matching_key} xpath=.//matching-key
156 ${request_template} Add Element ${request_template} ${target_field_template} xpath=.//correlation/aggregation/mapping[${mapping_index}]
157 ${request_template} Element to String ${request_template}
158 [Return] ${request_template}
161 [Arguments] ${request_template} ${filter_template} ${target_field}
162 [Documentation] Add filter to filtration
163 ${request_template} Add Element ${request_template} ${filter_template} xpath=.//correlation/filtration
164 ${model} Get Element Text ${request_template} xpath=.//correlations/output-model
165 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlation/filtration/filter/input-model
166 ${request_template} Set Element Text ${request_template} ${target_field} xpath=.//correlation/filtration/filter/target-field
167 [Return] ${request_template}
169 Insert Filter With ID
170 [Arguments] ${request_template} ${filter_template} ${target_field} ${filter_id}
171 [Documentation] Add filter to filtration with specified id
172 ${request_template} Insert Filter ${request_template} ${filter_template} ${target_field}
173 ${request_template} Set Element Text ${request_template} ${filter_id} xpath=.//correlation/filtration/filter/filter-id
174 [Return] ${request_template}
177 [Arguments] ${request_template} ${ip_address}
178 [Documentation] Set filter ipv4 address
179 ${request_template} Set Element Text ${request_template} ${ip_address} xpath=.//correlation/filtration/filter/ipv4-address-filter/ipv4-address
180 ${request_template} Element to String ${request_template}
181 [Return] ${request_template}
183 Set Range Number Filter
184 [Arguments] ${request_template} ${min_number} ${max_number}
185 [Documentation] Set filter minimum and maximum number values
186 ${request_template} Set Element Text ${request_template} ${min_number} xpath=.//correlation/filtration/filter/range-number-filter/min-number-value
187 ${request_template} Set Element Text ${request_template} ${max_number} xpath=.//correlation/filtration/filter/range-number-filter/max-number-value
188 ${request_template} Element to String ${request_template}
189 [Return] ${request_template}
191 Set Range String Filter
192 [Arguments] ${request_template} ${min_value} ${max_value}
193 [Documentation] Set filter minimum and maximum string values
194 ${request_template} Set Element Text ${request_template} ${min_value} xpath=.//correlation/filtration/filter/range-string-filter/min-string-value
195 ${request_template} Set Element Text ${request_template} ${max_value} xpath=.//correlation/filtration/filter/range-string-filter/max-string-value
196 ${request_template} Element to String ${request_template}
197 [Return] ${request_template}
199 Set Specific Number Filter
200 [Arguments] ${request_template} ${number}
201 [Documentation] Set filter number value
202 ${request_template} Set Element Text ${request_template} ${number} xpath=.//correlation/filtration/filter/specific-number-filter/specific-number
203 ${request_template} Element to String ${request_template}
204 [Return] ${request_template}
206 Set Specific String Filter
207 [Arguments] ${request_template} ${string_value}
208 [Documentation] Set filter string value
209 ${request_template} Set Element Text ${request_template} ${string_value} xpath=.//correlation/filtration/filter/specific-string-filter/specific-string
210 ${request_template} Element to String ${request_template}
211 [Return] ${request_template}
214 [Arguments] ${request_template} ${ip_address}
215 [Documentation] Set filter ipv6 address
216 ${request_template} Set Element Text ${request_template} ${ip_address} xpath=.//correlation/filtration/filter/ipv6-address-filter/ipv6-address
217 ${request_template} Element to String ${request_template}
218 [Return] ${request_template}
221 [Arguments] ${request_template} ${script_language} ${script}
222 [Documentation] Set filter script
223 ${request_template} Set Element Text ${request_template} ${script_language} xpath=.//correlation/filtration/filter/script-filter/scripting/language
224 ${request_template} Set Element Text ${request_template} ${script} xpath=.//correlation/filtration/filter/script-filter/scripting/script
225 ${request_template} Element to String ${request_template}
226 [Return] ${request_template}
228 Insert Link Computation Inside
229 [Arguments] ${request_template} ${link_computation_template} ${input_model} ${underlay_topology}
230 [Documentation] Add link computation to request
231 ${request_template} Add Element ${request_template} ${link_computation_template} xpath=.
232 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/node-info/input-model
233 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/link-info/input-model
234 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/output-model
235 ${request_template} Set Element Text ${request_template} ${underlay_topology} xpath=.//link-computation/link-info/link-topology
236 ${request_template} Set Element Attribute ${request_template} xmlns:n urn:opendaylight:topology:correlation xpath=./link-computation
237 ${request_template} Element to String ${request_template}
238 [Return] ${request_template}
240 Insert Link Computation
241 [Arguments] ${request_template} ${link_computation_template} ${input_model} ${underlay_topology_1} ${underlay_topology_2}
242 [Documentation] Add link computation to request
243 ${request_template} Add Element ${request_template} ${link_computation_template} xpath=.
244 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/node-info/input-model
245 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/link-info[1]/input-model
246 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/link-info[2]/input-model
247 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/output-model
248 ${request_template} Set Element Text ${request_template} ${underlay_topology_1} xpath=.//link-computation/link-info[1]/link-topology
249 ${request_template} Set Element Text ${request_template} ${underlay_topology_2} xpath=.//link-computation/link-info[2]/link-topology
250 ${request_template} Set Element Attribute ${request_template} xmlns:n urn:opendaylight:topology:correlation xpath=./link-computation
251 ${request_template} Element to String ${request_template}
252 [Return] ${request_template}
254 Insert Scripting into Request
255 [Arguments] ${request} ${language} ${script}
256 [Documentation] Insert Scripting into Request under aggregation node
257 ${request} Add Element ${request} ${SCRIPTING} xpath=.//correlation/aggregation
258 ${request} Set Element Text ${request} ${script} xpath=.//correlation/aggregation/scripting/script
259 ${request} Set Element Text ${request} ${language} xpath=.//correlation/aggregation/scripting/language
260 ${request} Element to String ${request}