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 6
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 6
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} ${target-field} ${underlay_topo2}
114 [Documentation] Prepare topology request for unification on two topologies from template
115 ${request_template} Set Element Text ${request_template} ${underlay_topo2} xpath=.//correlation/aggregation/mapping[2]/underlay-topology
116 ${request_template} Set Element Text ${request_template} ${target-field} xpath=.//correlation/aggregation/mapping[2]/target-field[1]/target-field-path
117 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlation/aggregation/mapping[2]/input-model
118 ${request_template} Element to String ${request_template}
119 [Return] ${request_template}
121 Prepare Unification Filtration Inside Topology Request
122 [Arguments] ${request_template} ${model} ${correlation_item} ${target-field} ${underlay_topo}
123 [Documentation] Prepare topology request for unification filtration inside from template
124 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlations/output-model
125 ${request_template} Set Element Text ${request_template} filtration-aggregation xpath=.//correlations/correlation/type
126 ${request_template} Set Element Text ${request_template} ${correlation_item} xpath=.//correlation/correlation-item
127 ${request_template} Set Element Text ${request_template} unification xpath=.//correlation/aggregation/aggregation-type
128 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlation/aggregation/mapping[1]/input-model
129 ${request_template} Set Element Text ${request_template} ${underlay_topo} xpath=.//correlation/aggregation/mapping[1]/underlay-topology
130 ${request_template} Set Element Text ${request_template} ${target-field} xpath=.//correlation/aggregation/mapping[1]/target-field[1]/target-field-path
131 ${request_template} Set Element Text ${request_template} ${underlay_topo} xpath=.//correlation/filtration/underlay-topology
132 ${request_template} Element to String ${request_template}
133 [Return] ${request_template}
135 Prepare Filtration Topology Request
136 [Arguments] ${request_template} ${model} ${correlation_item} ${underlay_topo}
137 [Documentation] Prepare topology request for filtration from template
138 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlations/output-model
139 ${request_template} Set Element Text ${request_template} ${correlation_item} xpath=.//correlation/correlation-item
140 ${request_template} Set Element Text ${request_template} ${underlay_topo} xpath=.//correlation/filtration/underlay-topology
141 [Return] ${request_template}
144 [Arguments] ${request_template} ${mapping_index} ${target_field_path} ${matching_key}
145 [Documentation] Add target field to request
146 ${target_field_template} Set Element Text ${TARGET_FIELD} ${target_field_path} xpath=.//target-field-path
147 ${target_field_template} Set Element Text ${target_field_template} ${matching_key} xpath=.//matching-key
148 ${request_template} Add Element ${request_template} ${target_field_template} xpath=.//correlation/aggregation/mapping[${mapping_index}]
149 ${request_template} Element to String ${request_template}
150 [Return] ${request_template}
153 [Arguments] ${request_template} ${filter_template} ${target_field}
154 [Documentation] Add filter to filtration
155 ${request_template} Add Element ${request_template} ${filter_template} xpath=.//correlation/filtration
156 ${model} Get Element Text ${request_template} xpath=.//correlations/output-model
157 ${request_template} Set Element Text ${request_template} ${model} xpath=.//correlation/filtration/filter/input-model
158 ${request_template} Set Element Text ${request_template} ${target_field} xpath=.//correlation/filtration/filter/target-field
159 [Return] ${request_template}
162 [Arguments] ${request_template} ${ip_address}
163 [Documentation] Set filter ipv4 address
164 ${request_template} Set Element Text ${request_template} ${ip_address} xpath=.//correlation/filtration/filter/ipv4-address-filter/ipv4-address
165 ${request_template} Element to String ${request_template}
166 [Return] ${request_template}
168 Set Range Number Filter
169 [Arguments] ${request_template} ${min_number} ${max_number}
170 [Documentation] Set filter minimum and maximum number values
171 ${request_template} Set Element Text ${request_template} ${min_number} xpath=.//correlation/filtration/filter/range-number-filter/min-number-value
172 ${request_template} Set Element Text ${request_template} ${max_number} xpath=.//correlation/filtration/filter/range-number-filter/max-number-value
173 ${request_template} Element to String ${request_template}
174 [Return] ${request_template}
176 Set Range String Filter
177 [Arguments] ${request_template} ${min_value} ${max_value}
178 [Documentation] Set filter minimum and maximum string values
179 ${request_template} Set Element Text ${request_template} ${min_value} xpath=.//correlation/filtration/filter/range-string-filter/min-string-value
180 ${request_template} Set Element Text ${request_template} ${max_value} xpath=.//correlation/filtration/filter/range-string-filter/max-string-value
181 ${request_template} Element to String ${request_template}
182 [Return] ${request_template}
184 Set Specific Number Filter
185 [Arguments] ${request_template} ${number}
186 [Documentation] Set filter number value
187 ${request_template} Set Element Text ${request_template} ${number} xpath=.//correlation/filtration/filter/specific-number-filter/specific-number
188 ${request_template} Element to String ${request_template}
189 [Return] ${request_template}
191 Set Specific String Filter
192 [Arguments] ${request_template} ${string_value}
193 [Documentation] Set filter string value
194 ${request_template} Set Element Text ${request_template} ${string_value} xpath=.//correlation/filtration/filter/specific-string-filter/specific-string
195 ${request_template} Element to String ${request_template}
196 [Return] ${request_template}
199 [Arguments] ${request_template} ${ip_address}
200 [Documentation] Set filter ipv6 address
201 ${request_template} Set Element Text ${request_template} ${ip_address} xpath=.//correlation/filtration/filter/ipv6-address-filter/ipv6-address
202 ${request_template} Element to String ${request_template}
203 [Return] ${request_template}
206 [Arguments] ${request_template} ${script_language} ${script}
207 [Documentation] Set filter script
208 ${request_template} Set Element Text ${request_template} ${script_language} xpath=.//correlation/filtration/filter/script-filter/scripting/language
209 ${request_template} Set Element Text ${request_template} ${script} xpath=.//correlation/filtration/filter/script-filter/scripting/script
210 ${request_template} Element to String ${request_template}
211 [Return] ${request_template}
213 Insert Link Computation Inside
214 [Arguments] ${request_template} ${link_computation_template} ${input_model} ${underlay_topology}
215 [Documentation] Add link computation to request
216 ${request_template} Add Element ${request_template} ${link_computation_template} xpath=.
217 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/node-info/input-model
218 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/link-info/input-model
219 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/output-model
220 ${request_template} Set Element Text ${request_template} ${underlay_topology} xpath=.//link-computation/link-info/link-topology
221 ${request_template} Set Element Attribute ${request_template} xmlns:n urn:opendaylight:topology:correlation xpath=./link-computation
222 ${request_template} Element to String ${request_template}
223 [Return] ${request_template}
225 Insert Link Computation
226 [Arguments] ${request_template} ${link_computation_template} ${input_model} ${underlay_topology_1} ${underlay_topology_2}
227 [Documentation] Add link computation to request
228 ${request_template} Add Element ${request_template} ${link_computation_template} xpath=.
229 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/node-info/input-model
230 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/link-info[1]/input-model
231 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/link-info[2]/input-model
232 ${request_template} Set Element Text ${request_template} ${input_model} xpath=.//link-computation/output-model
233 ${request_template} Set Element Text ${request_template} ${underlay_topology_1} xpath=.//link-computation/link-info[1]/link-topology
234 ${request_template} Set Element Text ${request_template} ${underlay_topology_2} xpath=.//link-computation/link-info[2]/link-topology
235 ${request_template} Set Element Attribute ${request_template} xmlns:n urn:opendaylight:topology:correlation xpath=./link-computation
236 ${request_template} Element to String ${request_template}
237 [Return] ${request_template}
239 Insert Scripting into Request
240 [Arguments] ${request} ${language} ${script}
241 [Documentation] Insert Scripting into Request under aggregation node
242 ${request} Add Element ${request} ${SCRIPTING} xpath=.//correlation/aggregation
243 ${request} Set Element Text ${request} ${script} xpath=.//correlation/aggregation/scripting/script
244 ${request} Set Element Text ${request} ${language} xpath=.//correlation/aggregation/scripting/language
245 ${request} Element to String ${request}