8df85c7786cc16ca840d70440b6b54d98171bd3f
[integration/test.git] / test / csit / suites / ovsdb / Openstack_Neutron / 010__ovsdb_flow.robot
1 *** Settings ***
2 Documentation     Checking Network created in OVSDB are pushed to OpenDaylight
3 Suite Setup       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
4 Suite Teardown    Delete All Sessions
5 Library           SSHLibrary
6 Library           Collections
7 Library           OperatingSystem
8 Library           String
9 Library           DateTime
10 Library           RequestsLibrary
11 Library           ../../../libraries/Common.py
12 Variables         ../../../variables/Variables.py
13 Resource          ../../../libraries/Utils.txt
14
15 *** Variables ***
16 ${ODLREST}        /controller/nb/v2/neutron
17 ${OVSDB_CONFIG_DIR}    ${CURDIR}/../../../variables/ovsdb
18 ${TNT1_ID}        cde2563ead464ffa97963c59e002c0cf
19 ${EXT_NET1_ID}    7da709ff-397f-4778-a0e8-994811272fdb
20 ${EXT_SUBNET1_ID}    00289199-e288-464a-ab2f-837ca67101a7
21 ${TNT1_RTR_ID}    e09818e7-a05a-4963-9927-fc1dc6f1e844
22 ${NEUTRON_PORT_TNT1_RTR_GW}    8ddd29db-f417-4917-979f-b01d4b1c3e0d
23 ${NEUTRON_PORT_TNT1_RTR_NET1}    9cc1af22-108f-40bb-b938-f1da292236bf
24 ${TNT1_NET1_NAME}    net1
25 ${TNT1_NET1_SEGM}    1062
26 ${TNT1_NET1_ID}    12809f83-ccdf-422c-a20a-4ddae0712655
27 ${TNT1_SUBNET1_NAME}    subnet1
28 ${TNT1_SUBNET1_ID}    6c496958-a787-4d8c-9465-f4c4176652e8
29 ${TNT1_NET1_DHCP_PORT_ID}    79adcba5-19e0-489c-9505-cc70f9eba2a1
30 ${TNT1_NET1_DHCP_MAC}    FA:16:3E:8F:70:A9
31 ${TNT1_NET1_DHCP_DEVICE_ID}    dhcp58155ae3-f2e7-51ca-9978-71c513ab02ee-${TNT1_NET1_ID}
32 ${TNT1_NET1_DHCP_OVS_PORT}    tap79adcba5-19
33 ${TNT1_VM1_PORT_ID}    341ceaca-24bf-4017-9b08-c3180e86fd24
34 ${TNT1_VM1_MAC}    FA:16:3E:8E:B8:05
35 ${TNT1_VM1_DEVICE_ID}    20e500c3-41e1-4be0-b854-55c710a1cfb2
36 ${TNT1_NET1_VM1_OVS_PORT}    tap341ceaca-24
37 ${TNT1_VM1_VM_ID}    20e500c3-41e1-4be0-b854-55c710a1cfb2
38 ${FLOAT_IP1_ID}    f013bef4-9468-494d-9417-c9d9e4abb97c
39 ${FLOAT_IP1_PORT_ID}    01671703-695e-4497-8a11-b5da989d2dc3
40 ${FLOAT_IP1_MAC}    FA:16:3E:3F:37:BB
41 ${FLOAT_IP1_DEVICE_ID}    f013bef4-9468-494d-9417-c9d9e4abb97c
42 ${FLOAT_IP1_ADDRESS}    192.168.111.22
43 @{node_list}      ovsdb://uuid/
44
45 *** Test Cases ***
46 Add variables to controller custom.properties
47     [Documentation]    Add variables to custom.properties
48     [Tags]    Enable l3 forwarding
49     Run Command On Remote System    ${CONTROLLER}    echo 'ovsdb.l3.fwd.enabled=yes' >> ${WORKSPACE}/${BUNDLEFOLDER}/etc/custom.properties
50     Run Command On Remote System    ${CONTROLLER}    echo 'ovsdb.l3gateway.mac=00:00:5E:00:02:01' >> ${WORKSPACE}/${BUNDLEFOLDER}/etc/custom.properties
51     ${controller_pid_1}=    Get Process ID Based On Regex On Remote System    ${CONTROLLER}    java.*distribution.*karaf
52     Run Command On Remote System    ${CONTROLLER}    kill -SIGTERM ${controller_pid_1}
53     Run Command On Remote System    ${CONTROLLER}    ${WORKSPACE}/${BUNDLEFOLDER}/bin/start
54     ${controller_pid_2}=    Get Process ID Based On Regex On Remote System    ${CONTROLLER}    java.*distribution.*karaf
55     Should Not be Equal As Numbers    ${controller_pid_1}    ${controller_pid_2}
56
57 Ensure controller is running
58     [Documentation]    Check if the controller is running before sending restconf requests
59     [Tags]    Check controller reachability
60     Wait Until Keyword Succeeds    300s    2s    Check For Elements At URI    ${OPERATIONAL_TOPO_API}    ${node_list}
61
62 Check External Net for Tenant
63     [Documentation]    Check External Net for Tenant
64     [Tags]    OpenStack Call Flow
65     ${resp}    RequestsLibrary.Get    session    ${ODLREST}/networks
66     Log    ${resp.content}
67     Should Be Equal As Strings    ${resp.status_code}    200
68
69 Create External Net for Tenant
70     [Documentation]    Create External Net for Tenant
71     [Tags]    OpenStack Call Flow
72     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_ext_net.json
73     ${Data}    Replace String    ${Data}    {netId}    ${EXT_NET1_ID}
74     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
75     Log    ${Data}
76     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/networks    data=${Data}    headers=${HEADERS}
77     Log    ${resp.content}
78     Should Be Equal As Strings    ${resp.status_code}    201
79
80 Create External Subnet
81     [Documentation]    Create External Subnet
82     [Tags]    OpenStack Call Flow
83     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_ext_subnet.json
84     ${Data}    Replace String    ${Data}    {netId}    ${EXT_NET1_ID}
85     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
86     ${Data}    Replace String    ${Data}    {subnetId}    ${EXT_SUBNET1_ID}
87     Log    ${Data}
88     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/subnets    ${Data}
89     Should Be Equal As Strings    ${resp.status_code}    201
90
91 Create Tenant Router
92     [Documentation]    Create Tenant Router
93     [Tags]    OpenStack Call Flow
94     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_router.json
95     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
96     ${Data}    Replace String    ${Data}    {rtrId}    ${TNT1_RTR_ID}
97     Log    ${Data}
98     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/routers    ${Data}
99     Should Be Equal As Strings    ${resp.status_code}    201
100
101 Set Router Gateway
102     [Documentation]    Set Router Gateway
103     [Tags]    OpenStack Call Flow
104     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_port_rtr_gateway.json
105     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
106     ${Data}    Replace String    ${Data}    {rtrId}    ${TNT1_RTR_ID}
107     ${Data}    Replace String    ${Data}    {netId}    ${EXT_NET1_ID}
108     ${Data}    Replace String    ${Data}    {subnetId}    ${EXT_SUBNET1_ID}
109     ${Data}    Replace String    ${Data}    {portId}    ${NEUTRON_PORT_TNT1_RTR_GW}
110     Log    ${Data}
111     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/ports    ${Data}
112     Should Be Equal As Strings    ${resp.status_code}    201
113
114 Update Router Port Gateway
115     [Documentation]    Update Router Port Gateway
116     [Tags]    OpenStack Call Flow
117     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/update_router_port_gateway.json
118     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
119     ${Data}    Replace String    ${Data}    {netId}    ${EXT_NET1_ID}
120     ${Data}    Replace String    ${Data}    {subnetId}    ${EXT_SUBNET1_ID}
121     ${Data}    Replace String    ${Data}    {portId}    ${NEUTRON_PORT_TNT1_RTR_GW}
122     Log    ${Data}
123     ${resp}    RequestsLibrary.Put    session    ${ODLREST}/routers/${TNT1_RTR_ID}    ${Data}
124     Should Be Equal As Strings    ${resp.status_code}    200
125
126 Create Tenant Internal Net
127     [Documentation]    Create Tenant Internal Net
128     [Tags]    OpenStack Call Flow
129     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_tnt_net.json
130     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
131     ${Data}    Replace String    ${Data}    {netId}    ${TNT1_NET1_ID}
132     ${Data}    Replace String    ${Data}    {netName}    ${TNT1_NET1_NAME}
133     ${Data}    Replace String    ${Data}    {netSegm}    ${TNT1_NET1_SEGM}
134     Log    ${Data}
135     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/networks    ${Data}
136     Should Be Equal As Strings    ${resp.status_code}    201
137
138 Create Tenant Internal Subnet
139     [Documentation]    Create Tenant Internal Subnet
140     [Tags]    OpenStack Call Flow
141     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_tnt_subnet.json
142     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
143     ${Data}    Replace String    ${Data}    {netId}    ${TNT1_NET1_ID}
144     ${Data}    Replace String    ${Data}    {subnetId}    ${TNT1_SUBNET1_ID}
145     ${Data}    Replace String    ${Data}    {subnetName}    ${TNT1_SUBNET1_NAME}
146     Log    ${Data}
147     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/subnets    ${Data}
148     Should Be Equal As Strings    ${resp.status_code}    201
149
150 Create Port DHCP
151     [Documentation]    Create Port DHCP
152     [Tags]    OpenStack Call Flow
153     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_port_dhcp.json
154     ${Data}    Replace String    ${Data}    {BIND_HOST_ID}    ${CONTROLLER}
155     ${Data}    Replace String    ${Data}    {subnetId}    ${TNT1_SUBNET1_ID}
156     ${Data}    Replace String    ${Data}    {dhcpDeviceId}    ${TNT1_NET1_DHCP_DEVICE_ID}
157     ${Data}    Replace String    ${Data}    {netId}    ${TNT1_NET1_ID}
158     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
159     ${Data}    Replace String    ${Data}    {dhcpMac}    ${TNT1_NET1_DHCP_MAC}
160     ${Data}    Replace String    ${Data}    {dhcpId}    ${TNT1_NET1_DHCP_PORT_ID}
161     Log    ${Data}
162     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/ports    ${Data}
163     Should Be Equal As Strings    ${resp.status_code}    201
164
165 Update Port DHCP
166     [Documentation]    Update Port DHCP
167     [Tags]    OpenStack Call Flow
168     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/update_port_dhcp.json
169     ${Data}    Replace String    ${Data}    {BIND_HOST_ID}    ${CONTROLLER}
170     ${Data}    Replace String    ${Data}    {dhcpDeviceId}    ${TNT1_NET1_DHCP_DEVICE_ID}
171     Log    ${Data}
172     ${resp}    RequestsLibrary.Put    session    ${ODLREST}/ports/${TNT1_NET1_DHCP_PORT_ID}    ${Data}
173     Should Be Equal As Strings    ${resp.status_code}    200
174
175 Create Router Interface on Tenant Internal Subnet
176     [Documentation]    Create Router Interface on Tenant Internal Subnet
177     [Tags]    OpenStack Call Flow
178     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_port_rtr_interface.json
179     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
180     ${Data}    Replace String    ${Data}    {rtrId}    ${TNT1_RTR_ID}
181     ${Data}    Replace String    ${Data}    {netId}    ${TNT1_NET1_ID}
182     ${Data}    Replace String    ${Data}    {subnetId}    ${TNT1_SUBNET1_ID}
183     ${Data}    Replace String    ${Data}    {portId}    ${NEUTRON_PORT_TNT1_RTR_NET1}
184     Log    ${Data}
185     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/ports    ${Data}
186     Should Be Equal As Strings    ${resp.status_code}    201
187
188 Update Router Interface on Tenant Internal Subnet
189     [Documentation]    Update Router Interface on Tenant Internal Subnet
190     [Tags]    OpenStack Call Flow
191     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/update_router_interface.json
192     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
193     ${Data}    Replace String    ${Data}    {rtrId}    ${TNT1_RTR_ID}
194     ${Data}    Replace String    ${Data}    {subnetId}    ${TNT1_SUBNET1_ID}
195     ${Data}    Replace String    ${Data}    {portId}    ${NEUTRON_PORT_TNT1_RTR_NET1}
196     Log    ${Data}
197     ${resp}    RequestsLibrary.Put    session    ${ODLREST}/routers/${TNT1_RTR_ID}/add_router_interface    ${Data}
198     Should Be Equal As Strings    ${resp.status_code}    200
199
200 Create Port VM
201     [Documentation]    Create Port VM
202     [Tags]    OpenStack Call Flow
203     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_port_vm.json
204     ${Data}    Replace String    ${Data}    {BIND_HOST_ID}    ${CONTROLLER}
205     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
206     ${Data}    Replace String    ${Data}    {netId}    ${TNT1_NET1_ID}
207     ${Data}    Replace String    ${Data}    {subnetId}    ${TNT1_SUBNET1_ID}
208     ${Data}    Replace String    ${Data}    {portId}    ${TNT1_VM1_PORT_ID}
209     ${Data}    Replace String    ${Data}    {macAddr}    ${TNT1_VM1_MAC}
210     ${Data}    Replace String    ${Data}    {deviceId}    ${TNT1_VM1_DEVICE_ID}
211     Log    ${Data}
212     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/ports    ${Data}
213     Should Be Equal As Strings    ${resp.status_code}    201
214
215 Create Port Floating IP
216     [Documentation]    Create Port Floating IP
217     [Tags]    OpenStack Call Flow
218     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_port_floating_ip.json
219     ${Data}    Replace String    ${Data}    {netId}    ${EXT_NET1_ID}
220     ${Data}    Replace String    ${Data}    {subnetId}    ${EXT_SUBNET1_ID}
221     ${Data}    Replace String    ${Data}    {portId}    ${FLOAT_IP1_PORT_ID}
222     ${Data}    Replace String    ${Data}    {macAddress}    ${FLOAT_IP1_MAC}
223     ${Data}    Replace String    ${Data}    {deviceId}    ${FLOAT_IP1_DEVICE_ID}
224     Log    ${Data}
225     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/ports    ${Data}
226     Should Be Equal As Strings    ${resp.status_code}    201
227
228 Create Floating IP
229     [Documentation]    Create Floating IP
230     [Tags]    OpenStack Call Flow
231     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/create_floating_ip.json
232     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
233     ${Data}    Replace String    ${Data}    {netId}    ${EXT_NET1_ID}
234     ${Data}    Replace String    ${Data}    {floatIpId}    ${FLOAT_IP1_ID}
235     ${Data}    Replace String    ${Data}    {floatIpAddress}    ${FLOAT_IP1_ADDRESS}
236     Log    ${Data}
237     ${resp}    RequestsLibrary.Post    session    ${ODLREST}/floatingips    ${Data}
238     Should Be Equal As Strings    ${resp.status_code}    201
239
240 Associate the Floating IP with Tenant VM
241     [Documentation]    Associate the Floating IP with Tenant VM
242     [Tags]    OpenStack Call Flow
243     ${Data}    OperatingSystem.Get File    ${OVSDB_CONFIG_DIR}/associate_floating_ip.json
244     ${Data}    Replace String    ${Data}    {tntId}    ${TNT1_ID}
245     ${Data}    Replace String    ${Data}    {netId}    ${EXT_NET1_ID}
246     ${Data}    Replace String    ${Data}    {rtrId}    ${TNT1_RTR_ID}
247     ${Data}    Replace String    ${Data}    {floatIpId}    ${FLOAT_IP1_ID}
248     ${Data}    Replace String    ${Data}    {floatIpAddress}    ${FLOAT_IP1_ADDRESS}
249     ${Data}    Replace String    ${Data}    {vmPortId}    ${TNT1_VM1_PORT_ID}
250     Log    ${Data}
251     ${resp}    RequestsLibrary.Put    session    ${ODLREST}/floatingips/${FLOAT_IP1_ID}    ${Data}
252     Should Be Equal As Strings    ${resp.status_code}    201