7e7db158d138066580b1b776074c58660ff1e393
[integration/test.git] / csit / suites / topoprocessing / basic-topology-operations / 070_Underlay_update.robot
1 *** Settings ***
2 Documentation     Test suite to verify update behaviour during different topoprocessing operations on NT and inventory models.
3 ...               Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIG_API to OPERATIONAL_API.
4 ...               Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
5 ...               Suite setup also installs features required for tested models and clears karaf logs for further synchronization. Tests themselves send configurational
6 ...               xmls and verify output. Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
7 Suite Setup       Setup Environment
8 Suite Teardown    Clean Environment
9 Test Teardown     Refresh Underlay Topologies And Delete Overlay Topology    ${OVERLAY_TOPO_URL}
10 Library           RequestsLibrary
11 Library           SSHLibrary
12 Library           XML
13 Variables         ../../../variables/topoprocessing/TopologyRequests.py
14 Variables         ../../../variables/topoprocessing/TargetFields.py
15 Variables         ../../../variables/Variables.py
16 Resource          ../../../libraries/KarafKeywords.robot
17 Resource          ../../../libraries/Utils.robot
18 Resource          ../../../libraries/TopoprocessingKeywords.robot
19
20 *** Variables ***
21 ${OVERLAY_TOPO_URL}    ${TOPOLOGY_URL}/topo:1
22
23 *** Test Cases ***
24 Unification Node Update
25     [Documentation]    Test processing of updates using unification operation on Network Topology model
26     #Create the original topology
27     ${model}    Set Variable    network-topology-model
28     ${request}    Prepare Unification Topology Request    ${UNIFICATION_NT}    ${model}    node    network-topo:1    network-topo:2
29     ${request}    Insert Target Field    ${request}    0    ${ISIS_NODE_TE_ROUTER_ID_IPV4}    0
30     ${request}    Insert Target Field    ${request}    1    ${ISIS_NODE_TE_ROUTER_ID_IPV4}    0
31     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <node-id>node:    8
32     #Update a node, expecting a unification of two nodes into one
33     ${node}    Create Isis Node    bgp:1    router-id-ipv4=192.168.1.2
34     Basic Request Put    ${node}    network-topology:network-topology/topology/network-topo:1/node/bgp:1
35     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <node-id>node:    7
36     : FOR    ${index}    IN RANGE    1    11
37     \    Should Contain X Times    ${resp.content}    <node-ref>bgp:${index}</node-ref>    1
38     Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:2    bgp:1
39     #Update a unified node, expecting creation of a new overlay node
40     ${node}    Create Isis Node    bgp:3    router-id-ipv4=192.168.3.1
41     Basic Request Put    ${node}    network-topology:network-topology/topology/network-topo:1/node/bgp:3
42     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <node-id>node:    8
43     : FOR    ${index}    IN RANGE    1    11
44     \    Should Contain X Times    ${resp.content}    <node-ref>bgp:${index}</node-ref>    1
45
46 Unification Node Inventory
47     [Documentation]    Test processing of updates using unification operation on Inventory model
48     ${model}    Set Variable    opendaylight-inventory-model
49     ${request}    Prepare Unification Topology Request    ${UNIFICATION_NT}    ${model}    node    openflow-topo:1    openflow-topo:2
50     ${request}    Insert Target Field    ${request}    0    ${OPENFLOW_NODE_IP_ADDRESS}    0
51     ${request}    Insert Target Field    ${request}    1    ${OPENFLOW_NODE_IP_ADDRESS}    0
52     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <node-id>node:    7
53     #Update a node, expecting unification of two nodes into one
54     ${node}    Create Openflow Node    openflow:2    192.168.1.1
55     Basic Request Put    ${node}    opendaylight-inventory:nodes/node/openflow:2
56     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <node-id>node:    6
57     : FOR    ${index}    IN RANGE    1    11
58     \    Should Contain X Times    ${resp.content}    <node-ref>of-node:${index}</node-ref>    1
59     Check Aggregated Node in Topology    ${model}    ${resp.content}    5    of-node:2    of-node:6    of-node:1
60     #Update a unified node, expecting creation of a new overlay node
61     ${node}    Create Openflow Node    openflow:4    192.168.3.1
62     Basic Request Put    ${node}    opendaylight-inventory:nodes/node/openflow:4
63     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <node-id>node:    7
64     : FOR    ${index}    IN RANGE    1    11
65     \    Should Contain X Times    ${resp.content}    <node-ref>of-node:${index}</node-ref>    1
66
67 Filtration Range Number Node Update Network Topology Model
68     ${model}    Set Variable    network-topology-model
69     ${request}    Prepare Filtration Topology Request    ${FILTRATION_NT}    ${model}    node    network-topo:2
70     ${request}    Insert Filter    ${request}    ${FILTER_RANGE_NUMBER}    ${OVSDB_OVS_VERSION}
71     ${request}    Set Range Number Filter    ${request}    20    25
72     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <node-id>node:    4
73     ${request}    Create Isis Node    bgp:7    17
74     Basic Request Put    ${request}    network-topology:network-topology/topology/network-topo:2/node/bgp:7
75     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
76     Should Contain    ${resp.content}    <topology-id>topo:1</topology-id>
77     : FOR    ${index}    IN RANGE    8    11
78     \    Should Contain X Times    ${resp.content}    <node-ref>bgp:${index}</node-ref>    1
79     Should Contain X Times    ${resp.content}    <termination-point>    3
80     Should Not Contain    ${resp.content}    <node-ref>bgp:7</node-ref>
81     ${topology_id}    Set Variable    network-topo:2
82     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    ${topology_id}    bgp:8    tp:8:1    tp:8:1
83     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    ${topology_id}    bgp:9    tp:9:1    tp:9:1
84     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    ${topology_id}    bgp:10    tp:10:1    tp:10:1
85     ${request}    Create Isis Node    bgp:7    23
86     Basic Request Put    ${request}    network-topology:network-topology/topology/network-topo:2/node/bgp:7
87     ${request}    Create OVSDB Termination Point    tp:7:1    1119
88     Basic Request Put    ${request}    network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:1
89     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
90     : FOR    ${index}    IN RANGE    7    11
91     \    Should Contain X Times    ${resp.content}    <node-ref>bgp:${index}</node-ref>    1
92     Should Contain X Times    ${resp.content}    <termination-point>    4
93     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    ${topology_id}    bgp:7    tp:7:1    tp:7:1
94     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    ${topology_id}    bgp:8    tp:8:1    tp:8:1
95     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    ${topology_id}    bgp:9    tp:9:1    tp:9:1
96     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    ${topology_id}    bgp:10    tp:10:1    tp:10:1
97
98 Filtration Range Number Node Update Inventory Model
99     ${request}    Prepare Filtration Topology Request    ${FILTRATION_NT}    opendaylight-inventory-model    node    openflow-topo:2
100     ${request}    Insert Filter    ${request}    ${FILTER_RANGE_NUMBER}    ${OPENFLOW_NODE_SERIAL_NUMBER}
101     ${request}    Set Range Number Filter    ${request}    20    25
102     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <node-id>node:    3
103     Should Contain    ${resp.content}    <topology-id>topo:1</topology-id>
104     ${request}    Create Openflow Node    openflow:7    192.168.2.3    23
105     Basic Request Put    ${request}    opendaylight-inventory:nodes/node/openflow:7
106     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
107     : FOR    ${index}    IN RANGE    7    11
108     \    Should Contain X Times    ${resp.content}    <node-ref>of-node:${index}</node-ref>    1
109     ${request}    Create Openflow Node    openflow:7    192.168.2.3    17
110     Basic Request Put    ${request}    opendaylight-inventory:nodes/node/openflow:7
111     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
112     : FOR    ${index}    IN RANGE    8    11
113     \    Should Contain X Times    ${resp.content}    <node-ref>of-node:${index}</node-ref>    1
114     Should Not Contain    ${resp.content}    <node-ref>of-node:7</node-ref>
115
116 Filtration Range Number Termination Point Update NT
117     [Documentation]    Test processing of updates using range number type of filtration operation on Network Topology model
118     ${model}    Set Variable    network-topology-model
119     ${request}    Prepare Filtration Topology Request    ${FILTRATION_NT}    ${model}    termination-point    network-topo:2
120     ${request}    Insert Filter    ${request}    ${FILTER_RANGE_NUMBER}    ${OVSDB_OFPORT}
121     ${request}    Set Range Number Filter    ${request}    1115    1119
122     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <node-id>node:    5
123     #Update a previously out-of-range termination point, so it passes filtration
124     ${terminationPoint}    Create OVSDB Termination Point    tp:8:1    1115
125     Basic Request Put    ${terminationPoint}    network-topology:network-topology/topology/network-topo:2/node/bgp:8/termination-point/tp:8:1
126     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <node-id>node:    5
127     Should Contain X Times    ${resp.content}    <termination-point>    4
128     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    network-topo:2    bgp:8    tp:8:1    tp:8:1
129     #Update a previsouly in-range termination point, so it is filtered out
130     ${terminationPoint}    Create OVSDB Termination Point    tp:7:2    1110
131     Basic Request Put    ${terminationPoint}    network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:2
132     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <node-id>node:    5
133     Should Contain X Times    ${resp.content}    <termination-point>    3
134     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    network-topo:2    bgp:7    tp:7:1    tp:7:1
135
136 Filtration Range Number Termination Point Update Inventory
137     [Documentation]    Test processing of updates using range number type of filtration operation on Inventory model
138     ${model}    Set Variable    opendaylight-inventory-model
139     ${request}    Prepare Filtration Topology Request    ${FILTRATION_NT}    ${model}    termination-point    openflow-topo:1
140     ${request}    Insert Filter    ${request}    ${FILTER_RANGE_NUMBER}    ${OPENFLOW_NODE_CONNECTOR_PORT_NUMBER}
141     ${request}    Set Range Number Filter    ${request}    2    4
142     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <node-id>node:    5
143     Should Contain X Times    ${resp.content}    <termination-point>    5
144     #Update a previously out-of-range termination point, so it passes filtration
145     ${nodeConnector}    Create Openflow Node Connector    openflow:2:1    3
146     Basic Request Put    ${nodeConnector}    opendaylight-inventory:nodes/node/openflow:2/node-connector/openflow:2:1
147     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <node-id>node:    5
148     Should Contain X Times    ${resp.content}    <termination-point>    6
149     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    openflow-topo:1    of-node:2    tp:2:1    tp:2:1
150     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    openflow-topo:1    of-node:2    tp:2:2    tp:2:2
151     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    openflow-topo:1    of-node:2    tp:2:3    tp:2:3
152     #Update an in-range termination point, so it is filtered out
153     ${nodeConnector}    Create Openflow Node Connector    openflow:3:2    5
154     Basic Request Put    ${nodeConnector}    opendaylight-inventory:nodes/node/openflow:3/node-connector/openflow:3:2
155     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <node-id>node:    5
156     Should Contain X Times    ${resp.content}    <termination-point>    5
157     Check Aggregated Termination Point in Node    ${model}    ${resp.content}    openflow-topo:1    of-node:3    tp:3:1    tp:3:1
158
159 Filtration Range Number Link Update Network Topology Model
160     [Documentation]    Tests the processing of link update requests when using a range-number filtration on NT model
161     ${request}    Prepare Filtration Topology Request    ${FILTRATION_NT}    network-topology-model    link    network-topo:1
162     ${request}    Insert Filter    ${request}    ${FILTER_RANGE_NUMBER}    ${IGP_LINK_METRIC}
163     ${request}    Set Range Number Filter    ${request}    11    13
164     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <link-id>link:    3
165     Should Contain    ${resp.content}    <topology-id>topo:1</topology-id>
166     #Filter a link out
167     ${request}    Create Link    link:1:4    bgp:1    bgp:4    linkA    15
168     Basic Request Put    ${request}    network-topology:network-topology/topology/network-topo:1/link/link:1:4
169     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <link-id>    2
170     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/network-topo:1/link/link:1:3</link-ref>    1
171     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/network-topo:1/link/link:1:2-1</link-ref>    1
172     Should Not Contain    ${resp.content}    network-topology/topology/network-topo:1/link/link:1:4
173     #Put the link back in
174     ${request}    Create Link    link:1:4    bgp:1    bgp:4    linkA    12
175     Basic Request Put    ${request}    network-topology:network-topology/topology/network-topo:1/link/link:1:4
176     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <link-id>    3
177     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/network-topo:1/link/link:1:4</link-ref>    1
178     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/network-topo:1/link/link:1:3</link-ref>    1
179     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/network-topo:1/link/link:1:2-1</link-ref>    1
180
181 Filtration Range Number Link Update Inventory Model
182     [Documentation]    Tests the processing of link update requests when using a range-number filtration on Inventory model
183     ${request}    Prepare Filtration Topology Request    ${FILTRATION_NT}    opendaylight-inventory-model    link    openflow-topo:3
184     ${request}    Insert Filter    ${request}    ${FILTER_RANGE_NUMBER}    ${IGP_LINK_METRIC}
185     ${request}    Set Range Number Filter    ${request}    14    15
186     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <link-id>link:    2
187     Should Contain    ${resp.content}    <topology-id>topo:1</topology-id>
188     ${request}    Create Link    link:11:12    of-node:11    of-node:12    linkB    14
189     Basic Request Put    ${request}    network-topology:network-topology/topology/openflow-topo:3/link/link:11:12
190     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <link-id>    3
191     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/openflow-topo:3/link/link:14:12</link-ref>    1
192     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/openflow-topo:3/link/link:15:13</link-ref>    1
193     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/openflow-topo:3/link/link:11:12</link-ref>    1
194     ${request}    Create Link    link:11:12    of-node:11    of-node:12    linkB    13
195     Basic Request Put    ${request}    network-topology:network-topology/topology/openflow-topo:3/link/link:11:12
196     ${resp}    Basic Request Get And Test    ${OVERLAY_TOPO_URL}    <link-id>    2
197     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/openflow-topo:3/link/link:14:12</link-ref>    1
198     Should Contain X Times    ${resp.content}    <link-ref>/network-topology/topology/openflow-topo:3/link/link:15:13</link-ref>    1
199
200 Unification Filtration Node Update Inside Network Topology model
201     ${model}    Set Variable    network-topology-model
202     ${request}    Prepare Unification Filtration Inside Topology Request    ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE}    ${model}    node    ${ISIS_NODE_TE_ROUTER_ID_IPV4}    network-topo:4
203     ${request}    Insert Filter With ID    ${request}    ${FILTER_IPV4}    ${ISIS_NODE_TE_ROUTER_ID_IPV4}    1
204     ${request}    Insert Apply Filters    ${request}    1    1
205     ${request}    Set IPV4 Filter    ${request}    192.168.2.1/24
206     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <node-id>node:    2
207     Should Contain    ${resp.content}    <topology-id>topo:1</topology-id>
208     Should Contain    ${resp.content}    <node-ref>bgp:    3
209     ${request}    Create Isis Node    bgp:17    10    192.168.2.1
210     Basic Request Put    ${request}    network-topology:network-topology/topology/network-topo:4/node/bgp:17
211     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
212     : FOR    ${index}    IN RANGE    17    21
213     \    Should Contain X Times    ${resp.content}    <node-ref>bgp:${index}</node-ref>    1
214     Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:18    bgp:17    bgp:20
215     ${request}    Create Isis Node    bgp:17    10    192.168.1.2
216     Basic Request Put    ${request}    network-topology:network-topology/topology/network-topo:4/node/bgp:17
217     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
218     : FOR    ${index}    IN RANGE    18    21
219     \    Should Contain X Times    ${resp.content}    <node-ref>bgp:${index}</node-ref>    1
220     Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:18    bgp:20
221
222 Unification Filtration Node Update Inside Inventory model
223     ${model}    Set Variable    opendaylight-inventory-model
224     ${request}    Prepare Unification Filtration Inside Topology Request    ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE}    ${model}    node    ${OPENFLOW_NODE_IP_ADDRESS}    openflow-topo:4
225     ${request}    Insert Filter With ID    ${request}    ${FILTER_IPV4}    ${OPENFLOW_NODE_IP_ADDRESS}    1
226     ${request}    Insert Apply Filters    ${request}    1    1
227     ${request}    Set IPV4 Filter    ${request}    192.168.2.1/24
228     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <node-id>node:    2
229     Should Contain    ${resp.content}    <topology-id>topo:1</topology-id>
230     Should Contain    ${resp.content}    <node-ref>of-node:    4
231     ${request}    Create Openflow Node    openflow:17    192.168.1.2
232     Basic Request Put    ${request}    opendaylight-inventory:nodes/node/openflow:17
233     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
234     Should Contain    ${resp.content}    <topology-id>topo:1</topology-id>
235     Should Contain    ${resp.content}    <node-ref>of-node:    3
236     : FOR    ${index}    IN RANGE    18    21
237     \    Should Contain X Times    ${resp.content}    <node-ref>of-node:${index}</node-ref>    1
238     ${node}    Get Element    ${resp.content}    xpath=.//node/supporting-node[node-ref='of-node:19']/..
239     ${node}    Element to String    ${node}
240     Should Contain X Times    ${node}    <supporting-node>    2
241     Should Contain    ${node}    <node-ref>of-node:19</node-ref>
242     Should Contain    ${node}    <node-ref>of-node:20</node-ref>
243     Should Not Contain    ${node}    <node-ref>of-node:17</node-ref>
244     ${request}    Create Openflow Node    openflow:17    192.168.2.3
245     Basic Request Put    ${request}    opendaylight-inventory:nodes/node/openflow:17
246     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
247     : FOR    ${index}    IN RANGE    17    21
248     \    Should Contain X Times    ${resp.content}    <node-ref>of-node:${index}</node-ref>    1
249     Check Aggregated Node in Topology    ${model}    ${resp.content}    0    of-node:17    of-node:19    of-node:20
250
251 Link Computation Aggregation Inside Update NT
252     [Documentation]    Test of link computation with unification type of aggregation inside on updated nodes from network-topology model
253     ${model}    Set Variable    network-topology-model
254     ${request}    Prepare Unification Inside Topology Request    ${UNIFICATION_NT_AGGREGATE_INSIDE}    ${model}    node    network-topo:6
255     ${request}    Insert Target Field    ${request}    0    ${ISIS_NODE_TE_ROUTER_ID_IPV4}    0
256     ${request}    Insert Link Computation Inside    ${request}    ${LINK_COMPUTATION_INSIDE}    n:network-topology-model    network-topo:6
257     ${resp}    Send Basic Request And Test If Contain X Times    ${request}    ${OVERLAY_TOPO_URL}    <node-id>node:    4
258     #Divide double nodes from overlay topology
259     ${request}    Create Isis Node    bgp:29    router-id-ipv4=192.168.1.3
260     Basic Request Put    ${request}    network-topology:network-topology/topology/network-topo:6/node/bgp:29
261     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
262     Should Contain    ${resp.content}    <topology-id>topo:1</topology-id>
263     Should Contain X Times    ${resp.content}    <link-id>    4
264     ${node_26}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:26
265     ${node_27}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:27
266     ${node_28}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:28
267     ${node_29}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:29
268     ${node_30}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:30
269     ${topo_id}    Set Variable    network-topo:6
270     Check Overlay Link Source And Destination    ${model}    ${resp.content}    ${topo_id}    link:28:29    ${node_28}    ${node_29}
271     Check Overlay Link Source And Destination    ${model}    ${resp.content}    ${topo_id}    link:26:28    ${node_26}    ${node_28}
272     Check Overlay Link Source And Destination    ${model}    ${resp.content}    ${topo_id}    link:29:30-2    ${node_29}    ${node_30}
273     Check Overlay Link Source And Destination    ${model}    ${resp.content}    ${topo_id}    link:29:30-1    ${node_29}    ${node_30}
274     #Update link to node out of topology
275     ${request}    Create Link    link:28:29    bgp:28    bgp:31    linkB    11
276     Basic Request Put    ${request}    network-topology:network-topology/topology/network-topo:6/link/link:28:29
277     ${resp}    Basic Request Get    ${OVERLAY_TOPO_URL}
278     Should Contain    ${resp.content}    <topology-id>topo:1</topology-id>
279     Should Contain X Times    ${resp.content}    <link-id>    3
280     #Refresh node IDs
281     ${node_26}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:26
282     ${node_27}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:27
283     ${node_28}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:28
284     ${node_29}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:29
285     ${node_30}    Check Aggregated Node in Topology    ${model}    ${resp.content}    0    bgp:30
286     Should Not Contain    ${resp.content}    /network-topology/topology/network-topo:6/link/link:28:29
287     Check Overlay Link Source And Destination    ${model}    ${resp.content}    ${topo_id}    link:26:28    ${node_26}    ${node_28}
288     Check Overlay Link Source And Destination    ${model}    ${resp.content}    ${topo_id}    link:29:30-2    ${node_29}    ${node_30}
289     Check Overlay Link Source And Destination    ${model}    ${resp.content}    ${topo_id}    link:29:30-1    ${node_29}    ${node_30}
290     Check Overlay Link Source And Destination    ${model}    ${resp.content}    ${topo_id}    link:29:30-1    ${node_29}    ${node_30}