blob: cb4fb0350cf274c2126330579866b2cb5bca514a [file] [log] [blame]
peustermf27a5922017-05-17 08:48:54 +02001"""
2Copyright (c) 2015 SONATA-NFV
3ALL RIGHTS RESERVED.
4
5Licensed under the Apache License, Version 2.0 (the "License");
6you may not use this file except in compliance with the License.
7You may obtain a copy of the License at
8
9 http://www.apache.org/licenses/LICENSE-2.0
10
11Unless required by applicable law or agreed to in writing, software
12distributed under the License is distributed on an "AS IS" BASIS,
13WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14See the License for the specific language governing permissions and
15limitations under the License.
16
17Neither the name of the SONATA-NFV [, ANY ADDITIONAL AFFILIATION]
18nor the names of its contributors may be used to endorse or promote
19products derived from this software without specific prior written
20permission.
21
22This work has been performed in the framework of the SONATA project,
23funded by the European Commission under Grant number 671517 through
24the Horizon 2020 and 5G-PPP programmes. The authors would like to
25acknowledge the contributions of their colleagues of the SONATA
26partner consortium (www.sonata-nfv.eu).
27"""
28
29"""
30Test suite to automatically test emulator REST API endpoints.
31"""
32
33import os
34import unittest
35import requests
36import simplejson as json
peusterm861bad72017-05-18 14:55:27 +020037import time
peustermf27a5922017-05-17 08:48:54 +020038
39from emuvim.test.api_base_openstack import ApiBaseOpenStack
40
41
42class testRestApi(ApiBaseOpenStack):
43 """
44 Tests to check the REST API endpoints of the emulator.
45 """
46
47 def setUp(self):
48 # create network
49 self.createNet(nswitches=3, ndatacenter=2, nhosts=2, ndockers=0, autolinkswitches=True)
50
51 # setup links
52 self.net.addLink(self.dc[0], self.h[0])
53 self.net.addLink(self.h[1], self.dc[1])
54 self.net.addLink(self.dc[0], self.dc[1])
55
56 # start api
57 self.startApi()
peusterm861bad72017-05-18 14:55:27 +020058 time.sleep(2)
peustermf27a5922017-05-17 08:48:54 +020059
60 # start Mininet network
61 self.startNet()
peusterm861bad72017-05-18 14:55:27 +020062 time.sleep(2)
63
peustermf27a5922017-05-17 08:48:54 +020064 @unittest.skip("temporarily disabled")
65 def testChainingDummy(self):
66 print('->>>>>>> test Chaining Class->>>>>>>>>>>>>>>')
67 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
68 print(" ")
69
70 headers = {'Content-type': 'application/json'}
71 test_heatapi_template_create_stack = open(os.path.join(os.path.dirname(__file__), "test_heatapi_template_chaining.json")).read()
72 url = "http://0.0.0.0:8004/v1/tenantabc123/stacks"
73 requests.post(url, data=json.dumps(json.loads(test_heatapi_template_create_stack)), headers=headers)
74
75
76 print('->>>>>>> test Chaining Versions ->>>>>>>>>>>>>>>')
77 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
78 url = "http://0.0.0.0:4000/"
79 listapiversionstackresponse = requests.get(url, headers=headers)
80 self.assertEqual(listapiversionstackresponse.status_code, 200)
81 self.assertEqual(json.loads(listapiversionstackresponse.content)["versions"][0]["id"], "v1")
82 print(" ")
83
84 print('->>>>>>> test Chaining List ->>>>>>>>>>>>>>>')
85 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
86 url = "http://0.0.0.0:4000/v1/chain/list"
87 chainlistresponse = requests.get(url, headers=headers)
88 self.assertEqual(chainlistresponse.status_code, 200)
89 self.assertEqual(json.loads(chainlistresponse.content)["chains"], [])
90 print(" ")
91
92 print('->>>>>>> test Loadbalancing List ->>>>>>>>>>>>>>>')
93 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
94 url = "http://0.0.0.0:4000/v1/lb/list"
95 lblistresponse = requests.get(url, headers=headers)
96 self.assertEqual(lblistresponse.status_code, 200)
97 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"], [])
98 print(" ")
99
100 testchain = "dc0_s1_firewall1/fire-out-0/dc0_s1_iperf1/iper-in-0"
101 print('->>>>>>> test Chain VNF Interfaces ->>>>>>>>>>>>>>>')
102 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
103 url = "http://0.0.0.0:4000/v1/chain/%s" %(testchain)
104 chainvnfresponse = requests.put(url)
105 self.assertEqual(chainvnfresponse.status_code, 200)
106 self.assertGreaterEqual(json.loads(chainvnfresponse.content)["cookie"], 0)
107 print(" ")
108
109 print('->>>>>>> test Chaining List ->>>>>>>>>>>>>>>')
110 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
111 url = "http://0.0.0.0:4000/v1/chain/list"
112 chainlistresponse = requests.get(url, headers=headers)
113 self.assertEqual(chainlistresponse.status_code, 200)
114 self.assertEqual(json.loads(chainlistresponse.content)["chains"][0]["dst_vnf"], "dc0_s1_firewall1")
115 self.assertEqual(json.loads(chainlistresponse.content)["chains"][0]["dst_intf"], "fire-out-0")
116 self.assertEqual(json.loads(chainlistresponse.content)["chains"][0]["src_vnf"], "dc0_s1_iperf1")
117 self.assertEqual(json.loads(chainlistresponse.content)["chains"][0]["src_intf"], "iper-in-0")
118 print(" ")
119
120 print('->>>>>>> test Chain VNF Delete Chain ->>>>>>>>>>>>>>>')
121 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
122 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
123 deletechainvnfresponse = requests.delete(url)
124 self.assertEqual(deletechainvnfresponse.status_code, 200)
125 self.assertEqual(deletechainvnfresponse.content, "true")
126 print(" ")
127
128 print('->>>>>>> test Chaining List If Empty Again ->>>>>>>>>>>>>>>')
129 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
130 url = "http://0.0.0.0:4000/v1/chain/list"
131 chainlistresponse = requests.get(url, headers=headers)
132 self.assertEqual(chainlistresponse.status_code, 200)
133 self.assertEqual(json.loads(chainlistresponse.content)["chains"], [])
134 print(" ")
135
136 testchain = "dc0_s1_firewall1/fire-out-0/dc0_s1_iperf1/iper-in-0"
137 print('->>>>>>> test Stack Chain VNF Interfaces ->>>>>>>>>>>>>>>')
138 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
139 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
140 stackchainvnfresponse = requests.post(url, data=json.dumps(json.loads('{"path":["dc1.s1", "s1","s2","s3","s1","dc1.s1"]}')), headers=headers)
141 self.assertEqual(stackchainvnfresponse.status_code, 200)
142 print (stackchainvnfresponse.content)
143 self.assertGreaterEqual(json.loads(stackchainvnfresponse.content)["cookie"], 0)
144 print(" ")
145
146
147 print('->>>>>>> test Stack Chaining List ->>>>>>>>>>>>>>>')
148 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
149 url = "http://0.0.0.0:4000/v1/chain/list"
150 chainlistresponse = requests.get(url, headers=headers)
151 self.assertEqual(chainlistresponse.status_code, 200)
152 print (chainlistresponse.content)
153 self.assertEqual(json.loads(chainlistresponse.content)["chains"][0]["dst_vnf"], "dc0_s1_firewall1")
154 self.assertEqual(json.loads(chainlistresponse.content)["chains"][0]["dst_intf"], "fire-out-0")
155 self.assertEqual(json.loads(chainlistresponse.content)["chains"][0]["src_vnf"], "dc0_s1_iperf1")
156 self.assertEqual(json.loads(chainlistresponse.content)["chains"][0]["src_intf"], "iper-in-0")
157 self.assertItemsEqual(json.loads(chainlistresponse.content)["chains"][0]["path"],['dc1.s1', 's1', 's2', 's3', 's1', 'dc1.s1'])
158 print(" ")
159
160 print('->>>>>>> test Chain VNF Delete Chain ->>>>>>>>>>>>>>>')
161 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
162 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
163 deletechainvnfresponse = requests.delete(url)
164 self.assertEqual(deletechainvnfresponse.status_code, 200)
165 self.assertEqual(deletechainvnfresponse.content, "true")
166 print(" ")
167
168 print('->>>>>>> test Chaining List If Empty Again ->>>>>>>>>>>>>>>')
169 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
170 url = "http://0.0.0.0:4000/v1/chain/list"
171 chainlistresponse = requests.get(url, headers=headers)
172 self.assertEqual(chainlistresponse.status_code, 200)
173 self.assertEqual(json.loads(chainlistresponse.content)["chains"], [])
174 print(" ")
175
176
177 testchain = "dc0_s1_firewall1/non-existing-interface/dc0_s1_iperf1/iper-in-0"
178 print('->>>>>>> test Chain VNF Interfaces ->>>>>>>>>>>>>>>')
179 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
180 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
181 chainvnfresponse = requests.put(url)
182 self.assertEqual(chainvnfresponse.status_code, 501)
183 print(" ")
184
185 testchain = "dc0_s1_firewall1/fire-out-0/dc0_s1_iperf1/non-existing-interface"
186 print('->>>>>>> test Chain VNF Interfaces ->>>>>>>>>>>>>>>')
187 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
188 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
189 chainvnfresponse = requests.put(url)
190 self.assertEqual(chainvnfresponse.status_code, 501)
191 print(" ")
192
193 testchain = "dc0_s1_firewall1/non-existing-interface/dc0_s1_iperf1/iper-in-0"
194 print('->>>>>>> test Chain VNF Delete Chain ->>>>>>>>>>>>>>>')
195 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
196 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
197 deletechainvnfresponse = requests.delete(url)
198 self.assertEqual(deletechainvnfresponse.status_code, 501)
199 print(" ")
200
201 testchain = "dc0_s1_firewall1/fire-out-0/dc0_s1_iperf1/non-existing-interface"
202 print('->>>>>>> test Chain VNF Delete Chain ->>>>>>>>>>>>>>>')
203 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
204 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
205 deletechainvnfresponse = requests.delete(url)
206 self.assertEqual(deletechainvnfresponse.status_code, 501)
207 print(" ")
208
209 testchain = "non-existent-dc/s1/firewall1/firewall1:cp03:output/dc0/s1/iperf1/iperf1:cp02:input"
210 print('->>>>>>> test Chain VNF Non-Existing DC ->>>>>>>>>>>>>>>')
211 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
212 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
213 chainvnfresponse = requests.put(url)
214 self.assertEqual(chainvnfresponse.status_code, 500)
215 print(" ")
216
217
218 testchain = "dc0/s1/firewall1/non-existent:cp03:output/dc0/s1/iperf1/iperf1:cp02:input"
219 print('->>>>>>> test Chain VNF Non-Existing Interfaces ->>>>>>>>>>>>>>>')
220 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
221 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
222 chainvnfresponse = requests.put(url)
223 self.assertEqual(chainvnfresponse.status_code, 500)
224 print(" ")
225
226 testchain = "dc0/s1/firewall1/firewall1:cp03:output/dc0/s1/iperf1/non-existent:cp02:input"
227 print('->>>>>>> test Chain VNF Non-Existing Interfaces ->>>>>>>>>>>>>>>')
228 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
229 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
230 chainvnfresponse = requests.put(url)
231 self.assertEqual(chainvnfresponse.status_code, 500)
232 print(" ")
233
234 testchain = "dc0/s1/firewall1/firewall1:cp03:output/dc0/s1/iperf1/iperf1:cp02:input"
235 print('->>>>>>> test Chain VNF Interfaces ->>>>>>>>>>>>>>>')
236 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
237 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
238 chainvnfresponse = requests.put(url)
239 print (chainvnfresponse.content)
240 self.assertEqual(chainvnfresponse.status_code, 200)
241 self.assertGreaterEqual(json.loads(chainvnfresponse.content)["cookie"], 0)
242 print(" ")
243
244 print('->>>>>>> test Chain VNF Delete Chain ->>>>>>>>>>>>>>>')
245 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
246 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
247 deletechainvnfresponse = requests.delete(url)
248 self.assertEqual(deletechainvnfresponse.status_code, 200)
249 self.assertEqual(deletechainvnfresponse.content, "true")
250 print(" ")
251
252 print('->>>>>>> test Chaining List If Empty Again ->>>>>>>>>>>>>>>')
253 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
254 url = "http://0.0.0.0:4000/v1/chain/list"
255 chainlistresponse = requests.get(url, headers=headers)
256 self.assertEqual(chainlistresponse.status_code, 200)
257 self.assertEqual(json.loads(chainlistresponse.content)["chains"], [])
258 print(" ")
259
260 testchain = "dc0/s1/firewall1/firewall1:cp03:output/dc0/s1/iperf1/iperf1:cp02:input"
261 print('->>>>>>> test Stack Chain VNF Interfaces ->>>>>>>>>>>>>>>')
262 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
263 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
264 stackchainvnfresponse = requests.post(url, data=json.dumps(
265 json.loads('{"path":["dc1.s1", "s1","s2","s3","s1","dc1.s1"]}')), headers=headers)
266 self.assertEqual(stackchainvnfresponse.status_code, 200)
267 print (stackchainvnfresponse.content)
268 self.assertGreaterEqual(json.loads(stackchainvnfresponse.content)["cookie"], 0)
269 print(" ")
270
271 testchain = "dc0/s1/firewall1/firewall1:cp03:output/dc0/s1/iperf1/iperf1:cp02:input"
272 print('->>>>>>> test Stack Chain VNF Interfaces ->>>>>>>>>>>>>>>')
273 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
274 url = "http://0.0.0.0:4000/v1/chain/%s" % (testchain)
275 stackchainvnfresponse = requests.delete(url, headers=headers)
276 self.assertEqual(stackchainvnfresponse.status_code, 200)
277 print(" ")
278
279
280 print('->>>>>>> test Loadbalancing ->>>>>>>>>>>>>>>')
281 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
282 url = "http://0.0.0.0:4000/v1/lb/dc0/s1/firewall1/firewall1:cp03:output"
283 lblistresponse = requests.post(url, data=json.dumps(
284 {"dst_vnf_interfaces":[{"pop":"dc0","stack":"s1","server":"iperf1","port":"iperf1:cp02:input"}]})
285 , headers=headers)
286 print (lblistresponse.content)
287 self.assertEqual(lblistresponse.status_code, 200)
288 self.assertIn("dc0_s1_firewall1:fire-out-0", lblistresponse.content)
289 print(" ")
290
291 print('->>>>>>> test Loadbalancing List ->>>>>>>>>>>>>>>')
292 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
293 url = "http://0.0.0.0:4000/v1/lb/list"
294 lblistresponse = requests.get(url, headers=headers)
295 self.assertEqual(lblistresponse.status_code, 200)
296 print (lblistresponse.content )
297 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"][0]["paths"][0]["dst_vnf"], "dc0_s1_iperf1")
298 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"][0]["paths"][0]["dst_intf"], "iper-in-0")
299 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"][0]["src_vnf"], "dc0_s1_firewall1")
300 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"][0]["src_intf"],"fire-out-0")
301 print(" ")
302
303 print('->>>>>>> test delete Loadbalancing ->>>>>>>>>>>>>>>')
304 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
305 url = "http://0.0.0.0:4000/v1/lb/dc0/s1/firewall1/firewall1:cp03:output"
306 lbdeleteresponse = requests.delete(url, headers=headers)
307 print (lbdeleteresponse.content)
308 self.assertEqual(lbdeleteresponse.status_code, 200)
309 print(" ")
310
311 print('->>>>>>> testFloatingLoadbalancer ->>>>>>>>>>>>>>>')
312 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
313 url = "http://0.0.0.0:4000/v1/lb/dc0/floating/bla/blubb"
314 lblistresponse = requests.post(url, data=json.dumps(
315 {"dst_vnf_interfaces":[{"pop":"dc0","stack":"s1","server":"iperf1","port":"iperf1:cp02:input"}]})
316 , headers=headers)
317 print (lblistresponse.content)
318 self.assertEqual(lblistresponse.status_code, 200)
319 resp = json.loads(lblistresponse.content)
320 self.assertIsNotNone(resp.get('cookie'))
321 self.assertIsNotNone(resp.get('floating_ip'))
322 cookie = resp.get('cookie')
323 print(" ")
324
325 print('->>>>>>> testDeleteFloatingLoadbalancer ->>>>>>>>>>>>>>>')
326 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
327 url = "http://0.0.0.0:4000/v1/lb/dc0/floating/%s/blubb" % cookie
328 lblistresponse = requests.delete(url, headers=headers)
329 print (lblistresponse.content)
330 self.assertEqual(lblistresponse.status_code, 200)
331 print(" ")
332
333 print('->>>>>>> testLoadbalancingCustomPath ->>>>>>>>>>>>>>>')
334 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
335 url = "http://0.0.0.0:4000/v1/lb/dc0_s1_firewall1/fire-out-0"
336 lblistresponse = requests.post(url, data=json.dumps(
337 {"dst_vnf_interfaces":{"dc0_s1_iperf1":"iper-in-0"},
338 "path": {"dc0_s1_iperf1": {"iper-in-0": ["dc1.s1", "s1","s2","s3","s1","dc1.s1"]}}}), headers=headers)
339 print (lblistresponse.content)
340 self.assertEqual(lblistresponse.status_code, 200)
341 self.assertIn("dc0_s1_firewall1:fire-out-0", lblistresponse.content)
342 print(" ")
343
344 print('->>>>>>> testLoadbalancingListCustomPath ->>>>>>>>>>>>>>>')
345 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
346 url = "http://0.0.0.0:4000/v1/lb/list"
347 lblistresponse = requests.get(url, headers=headers)
348 self.assertEqual(lblistresponse.status_code, 200)
349 print (lblistresponse.content )
350 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"][0]["paths"][0]["dst_vnf"], "dc0_s1_iperf1")
351 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"][0]["paths"][0]["dst_intf"], "iper-in-0")
352 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"][0]["paths"][0]["path"],
353 ["dc1.s1", "s1","s2","s3","s1","dc1.s1"] )
354 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"][0]["src_vnf"], "dc0_s1_firewall1")
355 self.assertEqual(json.loads(lblistresponse.content)["loadbalancers"][0]["src_intf"],"fire-out-0")
356 print(" ")
357
358
359 print('->>>>>>> test Delete Loadbalancing ->>>>>>>>>>>>>>>')
360 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
361 url = "http://0.0.0.0:4000/v1/lb/dc0_s1_firewall1/fire-out-0"
362 lblistresponse = requests.delete(url, headers=headers)
363 self.assertEqual(lblistresponse.status_code, 200)
364 print(" ")
365
366 print('->>>>>>> test Query Topology ->>>>>>>>>>>>>>>')
367 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
368 url = "http://0.0.0.0:4000/v1/topo"
369 topolistresponse = requests.get(url, headers=headers)
370 print(topolistresponse.content)
371 self.assertEqual(topolistresponse.status_code, 200)
372 print(" ")
373
374
peustermf27a5922017-05-17 08:48:54 +0200375 def testNovaDummy(self):
376 print('->>>>>>> test Nova Dummy Class->>>>>>>>>>>>>>>')
377 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
378 print(" ")
379
380 headers = {'Content-type': 'application/json'}
381 test_heatapi_template_create_stack = open(os.path.join(os.path.dirname(__file__), "test_heatapi_template_create_stack.json")).read()
peusterme22979a2017-05-18 13:28:38 +0200382 url = "http://0.0.0.0:18004/v1/tenantabc123/stacks"
peustermf27a5922017-05-17 08:48:54 +0200383 requests.post(url, data=json.dumps(json.loads(test_heatapi_template_create_stack)),
384 headers=headers)
385
386 print('->>>>>>> test Nova List Versions ->>>>>>>>>>>>>>>')
387 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200388 url = "http://0.0.0.0:18774/"
peustermf27a5922017-05-17 08:48:54 +0200389 listapiversionnovaresponse = requests.get(url, headers=headers)
390 self.assertEqual(listapiversionnovaresponse.status_code, 200)
391 self.assertEqual(json.loads(listapiversionnovaresponse.content)["versions"][0]["id"], "v2.1")
392 self.assertEqual(json.loads(listapiversionnovaresponse.content)["versions"][0]["status"], "CURRENT")
393 self.assertEqual(json.loads(listapiversionnovaresponse.content)["versions"][0]["version"], "2.38")
394 self.assertEqual(json.loads(listapiversionnovaresponse.content)["versions"][0]["min_version"], "2.1")
395 self.assertEqual(json.loads(listapiversionnovaresponse.content)["versions"][0]["updated"], "2013-07-23T11:33:21Z")
396 print(" ")
397
398 print('->>>>>>> test Nova Version Show ->>>>>>>>>>>>>>>')
399 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200400 url = "http://0.0.0.0:18774/v2.1/id_bla"
peustermf27a5922017-05-17 08:48:54 +0200401 listapiversion21novaresponse = requests.get(url, headers=headers)
402 self.assertEqual(listapiversion21novaresponse.status_code, 200)
403 self.assertEqual(json.loads(listapiversion21novaresponse.content)["version"]["id"], "v2.1")
404 self.assertEqual(json.loads(listapiversion21novaresponse.content)["version"]["status"], "CURRENT")
405 self.assertEqual(json.loads(listapiversion21novaresponse.content)["version"]["version"], "2.38")
406 self.assertEqual(json.loads(listapiversion21novaresponse.content)["version"]["min_version"], "2.1")
407 self.assertEqual(json.loads(listapiversion21novaresponse.content)["version"]["updated"], "2013-07-23T11:33:21Z")
408 print(" ")
409
410 print('->>>>>>> test Nova Version List Server APIs ->>>>>>>>>>>>>>>')
411 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200412 url = "http://0.0.0.0:18774/v2.1/id_bla/servers"
peustermf27a5922017-05-17 08:48:54 +0200413 listserverapisnovaresponse = requests.get(url, headers=headers)
414 self.assertEqual(listserverapisnovaresponse.status_code, 200)
415 self.assertNotEqual(json.loads(listserverapisnovaresponse.content)["servers"][0]["name"], "")
416 print(" ")
417
418 print('->>>>>>> test Nova Delete Server APIs ->>>>>>>>>>>>>>>')
419 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200420 url = "http://0.0.0.0:18774/v2.1/id_bla/servers/%s" % (json.loads(listserverapisnovaresponse.content)["servers"][0]["id"])
peustermf27a5922017-05-17 08:48:54 +0200421 deleteserverapisnovaresponse = requests.delete(url, headers=headers)
422 self.assertEqual(deleteserverapisnovaresponse.status_code, 204)
423 print(" ")
424
425 print('->>>>>>> test Nova Delete Non-Existing Server APIs ->>>>>>>>>>>>>>>')
426 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200427 url = "http://0.0.0.0:18774/v2.1/id_bla/servers/non-existing-ix"
peustermf27a5922017-05-17 08:48:54 +0200428 deleteserverapisnovaresponse = requests.delete(url, headers=headers)
429 self.assertEqual(deleteserverapisnovaresponse.status_code, 404)
430 print(" ")
431
432
433 print('->>>>>>> testNovaVersionListServerAPIs_withPortInformation ->>>>>>>>>>>>>>>')
434 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200435 url = "http://0.0.0.0:18774/v2.1/id_bla/servers/andPorts"
peustermf27a5922017-05-17 08:48:54 +0200436 listserverapisnovaresponse = requests.get(url, headers=headers)
437 self.assertEqual(listserverapisnovaresponse.status_code, 200)
438 self.assertNotEqual(json.loads(listserverapisnovaresponse.content)["servers"][0]["name"], "")
439 print(" ")
440
441 print('->>>>>>> test Nova List Flavors ->>>>>>>>>>>>>>>')
442 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200443 url = "http://0.0.0.0:18774/v2.1/id_bla/flavors"
peustermf27a5922017-05-17 08:48:54 +0200444 listflavorsresponse = requests.get(url, headers=headers)
445 self.assertEqual(listflavorsresponse.status_code, 200)
446 self.assertIn(json.loads(listflavorsresponse.content)["flavors"][0]["name"], ["m1.nano", "m1.tiny", "m1.micro", "m1.small"])
447 self.assertIn(json.loads(listflavorsresponse.content)["flavors"][1]["name"], ["m1.nano", "m1.tiny", "m1.micro", "m1.small"])
448 self.assertIn(json.loads(listflavorsresponse.content)["flavors"][2]["name"], ["m1.nano", "m1.tiny", "m1.micro", "m1.small"])
449 print(" ")
450
451 print('->>>>>>> testNovaAddFlavors ->>>>>>>>>>>>>>>')
452 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200453 url = "http://0.0.0.0:18774/v2.1/id_bla/flavors"
peustermf27a5922017-05-17 08:48:54 +0200454 addflavorsresponse = requests.post(url,
455 data='{"flavor":{"name": "testFlavor", "vcpus": "test_vcpus", "ram": 1024, "disk": 10}}',
456 headers=headers)
457 self.assertEqual(addflavorsresponse.status_code, 200)
458 self.assertIsNotNone(json.loads(addflavorsresponse.content)["flavor"]["id"])
459 self.assertIsNotNone(json.loads(addflavorsresponse.content)["flavor"]["links"][0]['href'])
460 print(" ")
461
462 print('->>>>>>> test Nova List Flavors Detail ->>>>>>>>>>>>>>>')
463 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200464 url = "http://0.0.0.0:18774/v2.1/id_bla/flavors/detail"
peustermf27a5922017-05-17 08:48:54 +0200465 listflavorsdetailresponse = requests.get(url, headers=headers)
466 self.assertEqual(listflavorsdetailresponse.status_code, 200)
467 self.assertIn(json.loads(listflavorsdetailresponse.content)["flavors"][0]["name"],["m1.nano", "m1.tiny", "m1.micro", "m1.small"])
468 self.assertIn(json.loads(listflavorsdetailresponse.content)["flavors"][1]["name"],["m1.nano", "m1.tiny", "m1.micro", "m1.small"])
469 self.assertIn(json.loads(listflavorsdetailresponse.content)["flavors"][2]["name"],["m1.nano", "m1.tiny", "m1.micro", "m1.small"])
470 print(" ")
471
472 print('->>>>>>> testNovaAddFlavors ->>>>>>>>>>>>>>>')
473 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200474 url = "http://0.0.0.0:18774/v2.1/id_bla/flavors/detail"
peustermf27a5922017-05-17 08:48:54 +0200475 addflavorsresponse = requests.post(url,
476 data='{"flavor":{"name": "testFlavor", "vcpus": "test_vcpus", "ram": 1024, "disk": 10}}',
477 headers=headers)
478 self.assertEqual(addflavorsresponse.status_code, 200)
479 self.assertIsNotNone(json.loads(addflavorsresponse.content)["flavor"]["id"])
480 self.assertIsNotNone(json.loads(addflavorsresponse.content)["flavor"]["links"][0]['href'])
481 print(" ")
482
483 print('->>>>>>> test Nova List Flavor By Id ->>>>>>>>>>>>>>>')
484
485 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200486 url = "http://0.0.0.0:18774/v2.1/id_bla/flavors/%s" % (json.loads(listflavorsdetailresponse.content)["flavors"][0]["name"])
peustermf27a5922017-05-17 08:48:54 +0200487 listflavorsbyidresponse = requests.get(url, headers=headers)
488 self.assertEqual(listflavorsbyidresponse.status_code, 200)
489 self.assertEqual(json.loads(listflavorsbyidresponse.content)["flavor"]["id"], json.loads(listflavorsdetailresponse.content)["flavors"][0]["id"])
490 print(" ")
491
492 print('->>>>>>> test Nova List Images ->>>>>>>>>>>>>>>')
493 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200494 url = "http://0.0.0.0:18774/v2.1/id_bla/images"
peustermf27a5922017-05-17 08:48:54 +0200495 listimagesresponse = requests.get(url, headers=headers)
496 self.assertEqual(listimagesresponse.status_code, 200)
497 print(listimagesresponse.content)
498 # deactivated: highly depends on the environment in which the tests are executed. one cannot make such an assumption.
499 #self.assertIn(json.loads(listimagesresponse.content)["images"][0]["name"],["google/cadvisor:latest", "ubuntu:trusty", "prom/pushgateway:latest"])
500 #self.assertIn(json.loads(listimagesresponse.content)["images"][1]["name"],["google/cadvisor:latest", "ubuntu:trusty", "prom/pushgateway:latest"])
501 #self.assertIn(json.loads(listimagesresponse.content)["images"][2]["name"],["google/cadvisor:latest", "ubuntu:trusty", "prom/pushgateway:latest"])
502 print(" ")
503
504 print('->>>>>>> test Nova List Images Details ->>>>>>>>>>>>>>>')
505 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200506 url = "http://0.0.0.0:18774/v2.1/id_bla/images/detail"
peustermf27a5922017-05-17 08:48:54 +0200507 listimagesdetailsresponse = requests.get(url, headers=headers)
508 self.assertEqual(listimagesdetailsresponse.status_code, 200)
509 # deactivated: highly depends on the environment in which the tests are executed. one cannot make such an assumption.
510 #self.assertIn(json.loads(listimagesdetailsresponse.content)["images"][0]["name"],["google/cadvisor:latest", "ubuntu:trusty", "prom/pushgateway:latest"])
511 #self.assertIn(json.loads(listimagesdetailsresponse.content)["images"][1]["name"],["google/cadvisor:latest", "ubuntu:trusty", "prom/pushgateway:latest"])
512 #self.assertIn(json.loads(listimagesdetailsresponse.content)["images"][2]["name"],["google/cadvisor:latest", "ubuntu:trusty", "prom/pushgateway:latest"])
513 self.assertEqual(json.loads(listimagesdetailsresponse.content)["images"][0]["metadata"]["architecture"],"x86_64")
514 print(" ")
515
516 print('->>>>>>> test Nova List Image By Id ->>>>>>>>>>>>>>>')
517 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200518 url = "http://0.0.0.0:18774/v2.1/id_bla/images/%s" % (json.loads(listimagesdetailsresponse.content)["images"][0]["id"])
peustermf27a5922017-05-17 08:48:54 +0200519 listimagebyidresponse = requests.get(url, headers=headers)
520 self.assertEqual(listimagebyidresponse.status_code, 200)
521 self.assertEqual(json.loads(listimagebyidresponse.content)["image"]["id"],json.loads(listimagesdetailsresponse.content)["images"][0]["id"])
522 print(" ")
523
524 print('->>>>>>> test Nova List Image By Non-Existend Id ->>>>>>>>>>>>>>>')
525 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200526 url = "http://0.0.0.0:18774/v2.1/id_bla/images/non_existing_id"
peustermf27a5922017-05-17 08:48:54 +0200527 listimagebynonexistingidresponse = requests.get(url, headers=headers)
528 self.assertEqual(listimagebynonexistingidresponse.status_code, 404)
529 print(" ")
530
531 #find ubuntu id
532 for image in json.loads(listimagesresponse.content)["images"]:
533 if image["name"] == "ubuntu:trusty":
534 ubuntu_image_id = image["id"]
535
536
537
538 print('->>>>>>> test Nova Create Server Instance ->>>>>>>>>>>>>>>')
539 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200540 url = "http://0.0.0.0:18774/v2.1/id_bla/servers"
peustermf27a5922017-05-17 08:48:54 +0200541 data = '{"server": {"name": "X", "flavorRef": "%s", "imageRef":"%s"}}' % (json.loads(listflavorsresponse.content)["flavors"][0]["id"], ubuntu_image_id)
542 createserverinstance = requests.post(url, data=data, headers=headers)
543 self.assertEqual(createserverinstance.status_code, 200)
544 self.assertEqual(json.loads(createserverinstance.content)["server"]["image"]["id"], ubuntu_image_id)
545 print(" ")
546
547 print('->>>>>>> test Nova Create Server Instance With Already Existing Name ->>>>>>>>>>>>>>>')
548 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200549 url = "http://0.0.0.0:18774/v2.1/id_bla/servers"
peustermf27a5922017-05-17 08:48:54 +0200550 data = '{"server": {"name": "X", "flavorRef": "%s", "imageRef":"%s"}}' % (json.loads(listflavorsresponse.content)["flavors"][0]["id"], ubuntu_image_id)
551 createserverinstance = requests.post(url, data=data, headers=headers)
552 self.assertEqual(createserverinstance.status_code, 409)
553 print(" ")
554
555 print('->>>>>>> test Nova Version List Server APIs Detailed ->>>>>>>>>>>>>>>')
556 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200557 url = "http://0.0.0.0:18774/v2.1/id_bla/servers/detail"
peustermf27a5922017-05-17 08:48:54 +0200558 listserverapisdetailedresponse = requests.get(url, headers=headers)
559 self.assertEqual(listserverapisdetailedresponse.status_code, 200)
560 self.assertEqual(json.loads(listserverapisdetailedresponse.content)["servers"][0]["status"], "ACTIVE")
561 print(" ")
562
563 print('->>>>>>> test Nova Show Server Details ->>>>>>>>>>>>>>>')
564 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200565 url = "http://0.0.0.0:18774/v2.1/id_bla/servers/%s" % (json.loads(listserverapisdetailedresponse.content)["servers"][0]["id"])
peustermf27a5922017-05-17 08:48:54 +0200566 listserverdetailsresponse = requests.get(url, headers=headers)
567 self.assertEqual(listserverdetailsresponse.status_code, 200)
568 self.assertEqual(json.loads(listserverdetailsresponse.content)["server"]["flavor"]["links"][0]["rel"], "bookmark")
569 print(" ")
570
571 print('->>>>>>> test Nova Show Non-Existing Server Details ->>>>>>>>>>>>>>>')
572 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200573 url = "http://0.0.0.0:18774/v2.1/id_bla/servers/non_existing_server_id"
peustermf27a5922017-05-17 08:48:54 +0200574 listnonexistingserverdetailsresponse = requests.get(url, headers=headers)
575 self.assertEqual(listnonexistingserverdetailsresponse.status_code, 404)
576 print(" ")
577
578
579
580 def testNeutronDummy(self):
581 print('->>>>>>> test Neutron Dummy Class->>>>>>>>>>>>>>>')
582 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
583 print(" ")
584
585 headers = {'Content-type': 'application/json'}
586 test_heatapi_template_create_stack = open(os.path.join(os.path.dirname(__file__), "test_heatapi_template_create_stack.json")).read()
peusterme22979a2017-05-18 13:28:38 +0200587 url = "http://0.0.0.0:18004/v1/tenantabc123/stacks"
peustermf27a5922017-05-17 08:48:54 +0200588 requests.post(url, data=json.dumps(json.loads(test_heatapi_template_create_stack)), headers=headers)
589 # test_heatapi_keystone_get_token = open("test_heatapi_keystone_get_token.json").read()
590
591 print('->>>>>>> test Neutron List Versions ->>>>>>>>>>>>>>>')
592 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200593 url = "http://0.0.0.0:19696/"
peustermf27a5922017-05-17 08:48:54 +0200594 listapiversionstackresponse = requests.get(url, headers=headers)
595 self.assertEqual(listapiversionstackresponse.status_code, 200)
596 self.assertEqual(json.loads(listapiversionstackresponse.content)["versions"][0]["id"], "v2.0")
597 print(" ")
598
599 print('->>>>>>> test Neutron Show API v2.0 ->>>>>>>>>>>>>>>')
600 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200601 url = "http://0.0.0.0:19696/v2.0"
peustermf27a5922017-05-17 08:48:54 +0200602 listapiversionv20response = requests.get(url, headers=headers)
603 self.assertEqual(listapiversionv20response.status_code, 200)
604 self.assertEqual(json.loads(listapiversionv20response.content)["resources"][0]["name"], "subnet")
605 self.assertEqual(json.loads(listapiversionv20response.content)["resources"][1]["name"], "network")
606 self.assertEqual(json.loads(listapiversionv20response.content)["resources"][2]["name"], "ports")
607 print(" ")
608
609 print('->>>>>>> test Neutron List Networks ->>>>>>>>>>>>>>>')
610 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200611 url = "http://0.0.0.0:19696/v2.0/networks"
peustermf27a5922017-05-17 08:48:54 +0200612 listnetworksesponse1 = requests.get(url, headers=headers)
613 self.assertEqual(listnetworksesponse1.status_code, 200)
614 self.assertEqual(json.loads(listnetworksesponse1.content)["networks"][0]["status"], "ACTIVE")
615 listNetworksId = json.loads(listnetworksesponse1.content)["networks"][0]["id"]
616 listNetworksName = json.loads(listnetworksesponse1.content)["networks"][0]["name"]
617 listNetworksId2 = json.loads(listnetworksesponse1.content)["networks"][1]["id"]
618 print(" ")
619
620 print('->>>>>>> test Neutron List Non-Existing Networks ->>>>>>>>>>>>>>>')
621 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200622 url = "http://0.0.0.0:19696/v2.0/networks?name=non_existent_network_name"
peustermf27a5922017-05-17 08:48:54 +0200623 listnetworksesponse2 = requests.get(url,headers=headers)
624 self.assertEqual(listnetworksesponse2.status_code, 404)
625 print(" ")
626
627 print('->>>>>>> test Neutron List Networks By Name ->>>>>>>>>>>>>>>')
628 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200629 url = "http://0.0.0.0:19696/v2.0/networks?name=" + listNetworksName #tcpdump-vnf:input:net:9df6a98f-9e11-4cb7-b3c0-InAdUnitTest
peustermf27a5922017-05-17 08:48:54 +0200630 listnetworksesponse3 = requests.get(url, headers=headers)
631 self.assertEqual(listnetworksesponse3.status_code, 200)
632 self.assertEqual(json.loads(listnetworksesponse3.content)["networks"][0]["name"], listNetworksName)
633 print(" ")
634
635 print('->>>>>>> test Neutron List Networks By Id ->>>>>>>>>>>>>>>')
636 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200637 url = "http://0.0.0.0:19696/v2.0/networks?id=" + listNetworksId # tcpdump-vnf:input:net:9df6a98f-9e11-4cb7-b3c0-InAdUnitTest
peustermf27a5922017-05-17 08:48:54 +0200638 listnetworksesponse4 = requests.get(url, headers=headers)
639 self.assertEqual(listnetworksesponse4.status_code, 200)
640 self.assertEqual(json.loads(listnetworksesponse4.content)["networks"][0]["id"], listNetworksId)
641 print(" ")
642
643 print('->>>>>>> test Neutron List Networks By Multiple Ids ->>>>>>>>>>>>>>>')
644 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200645 url = "http://0.0.0.0:19696/v2.0/networks?id=" + listNetworksId + "&id="+ listNetworksId2 # tcpdump-vnf:input:net:9df6a98f-9e11-4cb7-b3c0-InAdUnitTest
peustermf27a5922017-05-17 08:48:54 +0200646 listnetworksesponse5 = requests.get(url, headers=headers)
647 self.assertEqual(listnetworksesponse5.status_code, 200)
648 self.assertEqual(json.loads(listnetworksesponse5.content)["networks"][0]["id"], listNetworksId)
649 self.assertEqual(json.loads(listnetworksesponse5.content)["networks"][1]["id"], listNetworksId2)
650 print(" ")
651
652 print('->>>>>>> test Neutron Show Network ->>>>>>>>>>>>>>>')
653 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200654 url = "http://0.0.0.0:19696/v2.0/networks/"+listNetworksId
peustermf27a5922017-05-17 08:48:54 +0200655 shownetworksesponse = requests.get(url, headers=headers)
656 self.assertEqual(shownetworksesponse.status_code, 200)
657 self.assertEqual(json.loads(shownetworksesponse.content)["network"]["status"], "ACTIVE")
658 print(" ")
659
660 print('->>>>>>> test Neutron Show Network Non-ExistendNetwork ->>>>>>>>>>>>>>>')
661 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200662 url = "http://0.0.0.0:19696/v2.0/networks/non_existent_network_id"
peustermf27a5922017-05-17 08:48:54 +0200663 shownetworksesponse2 = requests.get(url, headers=headers)
664 self.assertEqual(shownetworksesponse2.status_code, 404)
665 print(" ")
666
667 print('->>>>>>> test Neutron Create Network ->>>>>>>>>>>>>>>')
668 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200669 url = "http://0.0.0.0:19696/v2.0/networks"
peustermf27a5922017-05-17 08:48:54 +0200670 createnetworkresponse = requests.post(url, data='{"network": {"name": "sample_network","admin_state_up": true}}', headers=headers)
671 self.assertEqual(createnetworkresponse.status_code, 201)
672 self.assertEqual(json.loads(createnetworkresponse.content)["network"]["status"], "ACTIVE")
673 print(" ")
674
675 print('->>>>>>> test Neutron Create Network With Existing Name ->>>>>>>>>>>>>>>')
676 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200677 url = "http://0.0.0.0:19696/v2.0/networks"
peustermf27a5922017-05-17 08:48:54 +0200678 createnetworkresponsefailure = requests.post(url,data='{"network": {"name": "sample_network","admin_state_up": true}}',headers=headers)
679 self.assertEqual(createnetworkresponsefailure.status_code, 400)
680 print(" ")
681
682 print('->>>>>>> test Neutron Update Network ->>>>>>>>>>>>>>>')
683 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200684 url = "http://0.0.0.0:19696/v2.0/networks/%s" % (json.loads(createnetworkresponse.content)["network"]["id"])
peustermf27a5922017-05-17 08:48:54 +0200685 updatenetworkresponse = requests.put(url, data='{"network": {"status": "ACTIVE", "admin_state_up":true, "tenant_id":"abcd123", "name": "sample_network_new_name", "shared":false}}' , headers=headers)
686 self.assertEqual(updatenetworkresponse.status_code, 200)
687 self.assertEqual(json.loads(updatenetworkresponse.content)["network"]["name"], "sample_network_new_name")
688 self.assertEqual(json.loads(updatenetworkresponse.content)["network"]["tenant_id"], "abcd123")
689 print(" ")
690
691 print('->>>>>>> test Neutron Update Non-Existing Network ->>>>>>>>>>>>>>>')
692 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200693 url = "http://0.0.0.0:19696/v2.0/networks/non-existing-name123"
peustermf27a5922017-05-17 08:48:54 +0200694 updatenetworkresponse = requests.put(url, data='{"network": {"name": "sample_network_new_name"}}', headers=headers)
695 self.assertEqual(updatenetworkresponse.status_code, 404)
696 print(" ")
697
698 print('->>>>>>> test Neutron List Subnets ->>>>>>>>>>>>>>>')
699 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200700 url = "http://0.0.0.0:19696/v2.0/subnets"
peustermf27a5922017-05-17 08:48:54 +0200701 listsubnetsresponse = requests.get(url, headers=headers)
702 listSubnetName = json.loads(listsubnetsresponse.content)["subnets"][0]["name"]
703 listSubnetId = json.loads(listsubnetsresponse.content)["subnets"][0]["id"]
704 listSubnetId2 = json.loads(listsubnetsresponse.content)["subnets"][1]["id"]
705 self.assertEqual(listsubnetsresponse.status_code, 200)
706 self.assertNotIn('None', listSubnetName)
707 print(" ")
708
709 print('->>>>>>> test Neutron List Subnets By Name ->>>>>>>>>>>>>>>')
710 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200711 url = "http://0.0.0.0:19696/v2.0/subnets?name="+listSubnetName
peustermf27a5922017-05-17 08:48:54 +0200712 listsubnetByNameresponse = requests.get(url, headers=headers)
713 self.assertEqual(listsubnetByNameresponse.status_code, 200)
714 self.assertNotIn('None', json.loads(listsubnetByNameresponse.content)["subnets"][0]["name"])
715 print(" ")
716
717 print('->>>>>>> test Neutron List Subnets By Id ->>>>>>>>>>>>>>>')
718 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200719 url = "http://0.0.0.0:19696/v2.0/subnets?id=" + listSubnetId
peustermf27a5922017-05-17 08:48:54 +0200720 listsubnetsbyidresponse = requests.get(url, headers=headers)
721 self.assertEqual(listsubnetsbyidresponse.status_code, 200)
722 self.assertNotIn("None", json.loads(listsubnetsbyidresponse.content)["subnets"][0]["name"])
723 print(" ")
724
725 print('->>>>>>> test Neutron List Subnets By Multiple Id ->>>>>>>>>>>>>>>')
726 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200727 url = "http://0.0.0.0:19696/v2.0/subnets?id=" + listSubnetId +"&id="+listSubnetId2
peustermf27a5922017-05-17 08:48:54 +0200728 listsubnetsbymultipleidsresponse = requests.get(url, headers=headers)
729 self.assertEqual(listsubnetsbymultipleidsresponse.status_code, 200)
730 self.assertNotIn("None", json.loads(listsubnetsbymultipleidsresponse.content)["subnets"][0]["name"])
731 print(" ")
732
733
734
735 print('->>>>>>> test Neutron Show Subnet->>>>>>>>>>>>>>>')
736 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200737 url = "http://0.0.0.0:19696/v2.0/subnets/%s" % (json.loads(listsubnetsresponse.content)["subnets"][0]["id"])
peustermf27a5922017-05-17 08:48:54 +0200738 showsubnetsresponse = requests.get(url, headers=headers)
739 self.assertEqual(showsubnetsresponse.status_code, 200)
740 self.assertNotIn("None", json.loads(showsubnetsresponse.content)["subnet"]["name"])
741 print(" ")
742
743 print('->>>>>>> test Neutron Show Non-Existing Subnet->>>>>>>>>>>>>>>')
744 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200745 url = "http://0.0.0.0:19696/v2.0/subnets/non-existing-id123"
peustermf27a5922017-05-17 08:48:54 +0200746 showsubnetsresponse = requests.get(url, headers=headers)
747 self.assertEqual(showsubnetsresponse.status_code, 404)
748 print(" ")
749
750
751 print('->>>>>>> test Neutron Create Subnet ->>>>>>>>>>>>>>>')
752 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200753 url = "http://0.0.0.0:19696/v2.0/subnets"
peustermf27a5922017-05-17 08:48:54 +0200754 createsubnetdata = '{"subnet": {"name": "new_subnet", "network_id": "%s","ip_version": 4,"cidr": "10.0.0.1/24"} }' % (json.loads(createnetworkresponse.content)["network"]["id"])
755 createsubnetresponse = requests.post(url, data=createsubnetdata, headers=headers)
756 self.assertEqual(createsubnetresponse.status_code, 201)
757 self.assertEqual(json.loads(createsubnetresponse.content)["subnet"]["name"], "new_subnet")
758 print(" ")
759
760 print('->>>>>>> test Neutron Create Second Subnet ->>>>>>>>>>>>>>>')
761 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200762 url = "http://0.0.0.0:19696/v2.0/subnets"
peustermf27a5922017-05-17 08:48:54 +0200763 createsubnetdata = '{"subnet": {"name": "new_subnet", "network_id": "%s","ip_version": 4,"cidr": "10.0.0.1/24"} }' % (json.loads(createnetworkresponse.content)["network"]["id"])
764 createsubnetfailureresponse = requests.post(url, data=createsubnetdata, headers=headers)
765 self.assertEqual(createsubnetfailureresponse.status_code, 409)
766 print(" ")
767
768 print('->>>>>>> test Neutron Update Subnet ->>>>>>>>>>>>>>>')
769 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200770 url = "http://0.0.0.0:19696/v2.0/subnets/%s" % (json.loads(createsubnetresponse.content)["subnet"]["id"])
peustermf27a5922017-05-17 08:48:54 +0200771 updatesubnetdata = '{"subnet": {"name": "new_subnet_new_name", "network_id":"some_id", "tenant_id":"new_tenant_id", "allocation_pools":"change_me", "gateway_ip":"192.168.1.120", "ip_version":4, "cidr":"10.0.0.1/24", "id":"some_new_id", "enable_dhcp":true} }'
772 updatesubnetresponse = requests.put(url, data=updatesubnetdata, headers=headers)
773 self.assertEqual(updatesubnetresponse.status_code, 200)
774 self.assertEqual(json.loads(updatesubnetresponse.content)["subnet"]["name"], "new_subnet_new_name")
775 print(" ")
776
777 print('->>>>>>> test Neutron Update Non-Existing Subnet ->>>>>>>>>>>>>>>')
778 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200779 url = "http://0.0.0.0:19696/v2.0/subnets/non-existing-subnet-12345"
peustermf27a5922017-05-17 08:48:54 +0200780 updatenonexistingsubnetdata = '{"subnet": {"name": "new_subnet_new_name"} }'
781 updatenonexistingsubnetresponse = requests.put(url, data=updatenonexistingsubnetdata, headers=headers)
782 self.assertEqual(updatenonexistingsubnetresponse.status_code, 404)
783 print(" ")
784
785
786
787 print('->>>>>>> test Neutron List Ports ->>>>>>>>>>>>>>>')
788 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200789 url = "http://0.0.0.0:19696/v2.0/ports"
peustermf27a5922017-05-17 08:48:54 +0200790 listportsesponse = requests.get(url, headers=headers)
791 self.assertEqual(listportsesponse.status_code, 200)
792 self.assertEqual(json.loads(listportsesponse.content)["ports"][0]["status"], "ACTIVE")
793 listPortsName = json.loads(listportsesponse.content)["ports"][0]["name"]
794 listPortsId1 = json.loads(listportsesponse.content)["ports"][0]["id"]
795 listPortsId2 = json.loads(listportsesponse.content)["ports"][1]["id"]
796 print(" ")
797
798 print('->>>>>>> test Neutron List Ports By Name ->>>>>>>>>>>>>>>')
799 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200800 url = "http://0.0.0.0:19696/v2.0/ports?name=" + listPortsName
peustermf27a5922017-05-17 08:48:54 +0200801 listportsbynameesponse = requests.get(url, headers=headers)
802 self.assertEqual(listportsbynameesponse.status_code, 200)
803 self.assertEqual(json.loads(listportsbynameesponse.content)["ports"][0]["name"], listPortsName)
804 print(" ")
805
806 print('->>>>>>> test Neutron List Ports By Id ->>>>>>>>>>>>>>>')
807 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200808 url = "http://0.0.0.0:19696/v2.0/ports?id=" + listPortsId1
peustermf27a5922017-05-17 08:48:54 +0200809 listportsbyidesponse = requests.get(url, headers=headers)
810 self.assertEqual(listportsbyidesponse.status_code, 200)
811 self.assertEqual(json.loads(listportsbyidesponse.content)["ports"][0]["id"], listPortsId1)
812 print(" ")
813
814 print('->>>>>>> test Neutron List Ports By Multiple Ids ->>>>>>>>>>>>>>>')
815 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200816 url = "http://0.0.0.0:19696/v2.0/ports?id=" + listPortsId1 +"&id="+listPortsId2
peustermf27a5922017-05-17 08:48:54 +0200817 listportsbymultipleidsesponse = requests.get(url, headers=headers)
818 self.assertEqual(listportsbymultipleidsesponse.status_code, 200)
819 self.assertEqual(json.loads(listportsbymultipleidsesponse.content)["ports"][0]["id"], listPortsId1)
820 print(" ")
821
822 print('->>>>>>> test Neutron List Non-Existing Ports ->>>>>>>>>>>>>>>')
823 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200824 url = "http://0.0.0.0:19696/v2.0/ports?id=non-existing-port-id"
peustermf27a5922017-05-17 08:48:54 +0200825 listportsbynonexistingidsesponse = requests.get(url, headers=headers)
826 self.assertEqual(listportsbynonexistingidsesponse.status_code, 404)
827 print(" ")
828
829 print('->>>>>>> test Neutron Show Port ->>>>>>>>>>>>>>>')
830 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200831 url = "http://0.0.0.0:19696/v2.0/ports/%s" % (json.loads(listportsesponse.content)["ports"][0]["id"])
peustermf27a5922017-05-17 08:48:54 +0200832 showportresponse = requests.get(url, headers=headers)
833 self.assertEqual(showportresponse.status_code, 200)
834 self.assertEqual(json.loads(showportresponse.content)["port"]["status"], "ACTIVE")
835 print(" ")
836
837 print('->>>>>>> test Neutron Show Non-Existing Port ->>>>>>>>>>>>>>>')
838 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200839 url = "http://0.0.0.0:19696/v2.0/ports/non-existing-portid123"
peustermf27a5922017-05-17 08:48:54 +0200840 shownonexistingportresponse = requests.get(url, headers=headers)
841 self.assertEqual(shownonexistingportresponse.status_code, 404)
842 print(" ")
843
844 print('->>>>>>> test Neutron Create Port In Non-Existing Network ->>>>>>>>>>>>>>>')
845 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200846 url = "http://0.0.0.0:19696/v2.0/ports"
peustermf27a5922017-05-17 08:48:54 +0200847 createnonexistingportdata = '{"port": {"name": "new_port", "network_id": "non-existing-id"} }'
848 createnonexistingnetworkportresponse = requests.post(url, data=createnonexistingportdata, headers=headers)
849 self.assertEqual(createnonexistingnetworkportresponse.status_code, 404)
850 print(" ")
851
852 print('->>>>>>> test Neutron Create Port ->>>>>>>>>>>>>>>')
853 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200854 url = "http://0.0.0.0:19696/v2.0/ports"
peustermf27a5922017-05-17 08:48:54 +0200855 createportdata = '{"port": {"name": "new_port", "network_id": "%s", "admin_state_up":true, "device_id":"device_id123", "device_owner":"device_owner123", "fixed_ips":"change_me","id":"new_id1234", "mac_address":"12:34:56:78:90", "status":"change_me", "tenant_id":"tenant_id123"} }' % (json.loads(createnetworkresponse.content)["network"]["id"])
856 createportresponse = requests.post(url, data=createportdata, headers=headers)
857 self.assertEqual(createportresponse.status_code, 201)
858 print (createportresponse.content)
859 self.assertEqual(json.loads(createportresponse.content)["port"]["name"], "new_port")
860 print(" ")
861
862 print('->>>>>>> test Neutron Create Port With Existing Name ->>>>>>>>>>>>>>>')
863 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200864 url = "http://0.0.0.0:19696/v2.0/ports"
peustermf27a5922017-05-17 08:48:54 +0200865 createportwithexistingnamedata = '{"port": {"name": "new_port", "network_id": "%s"} }' % (json.loads(createnetworkresponse.content)["network"]["id"])
866 createportwithexistingnameresponse = requests.post(url, data=createportwithexistingnamedata, headers=headers)
867 self.assertEqual(createportwithexistingnameresponse.status_code, 500)
868 print(" ")
869
870 print('->>>>>>> test Neutron Create Port Without Name ->>>>>>>>>>>>>>>')
871 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200872 url = "http://0.0.0.0:19696/v2.0/ports"
peustermf27a5922017-05-17 08:48:54 +0200873 createportdatawithoutname = '{"port": {"network_id": "%s"} }' % (json.loads(createnetworkresponse.content)["network"]["id"])
874 createportwithoutnameresponse = requests.post(url, data=createportdatawithoutname, headers=headers)
875 self.assertEqual(createportwithoutnameresponse.status_code, 201)
876 self.assertIn("port:cp", json.loads(createportwithoutnameresponse.content)["port"]["name"])
877 print(" ")
878
879 print('->>>>>>> test Neutron Update Port ->>>>>>>>>>>>>>>')
880 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
881 print(json.loads(createportresponse.content)["port"]["name"])
peusterme22979a2017-05-18 13:28:38 +0200882 url = "http://0.0.0.0:19696/v2.0/ports/%s" % (json.loads(createportresponse.content)["port"]["name"])
peustermf27a5922017-05-17 08:48:54 +0200883 updateportdata = '{"port": {"name": "new_port_new_name", "admin_state_up":true, "device_id":"device_id123", "device_owner":"device_owner123", "fixed_ips":"change_me","mac_address":"12:34:56:78:90", "status":"change_me", "tenant_id":"tenant_id123", "network_id":"network_id123"} }'
884 updateportresponse = requests.put(url, data=updateportdata, headers=headers)
885 self.assertEqual(updateportresponse.status_code, 200)
886 self.assertEqual(json.loads(updateportresponse.content)["port"]["name"], "new_port_new_name")
887 print(" ")
888
889 print('->>>>>>> test Neutron Update Non-Existing Port ->>>>>>>>>>>>>>>')
890 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200891 url = "http://0.0.0.0:19696/v2.0/ports/non-existing-port-ip"
peustermf27a5922017-05-17 08:48:54 +0200892 updatenonexistingportdata = '{"port": {"name": "new_port_new_name"} }'
893 updatenonexistingportresponse = requests.put(url, data=updatenonexistingportdata, headers=headers)
894 self.assertEqual(updatenonexistingportresponse.status_code, 404)
895 print(" ")
896
897 print('->>>>>>> test Neutron Delete Port ->>>>>>>>>>>>>>>')
898 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200899 righturl = "http://0.0.0.0:19696/v2.0/ports/%s" % (json.loads(createportresponse.content)["port"]["id"])
peustermf27a5922017-05-17 08:48:54 +0200900 deleterightportresponse = requests.delete(righturl, headers=headers)
901 self.assertEqual(deleterightportresponse.status_code, 204)
902 print(" ")
903
904
905 print('->>>>>>> test Neutron Delete Non-Existing Port ->>>>>>>>>>>>>>>')
906 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200907 wrongurl = "http://0.0.0.0:19696/v2.0/ports/unknownid"
peustermf27a5922017-05-17 08:48:54 +0200908 deletewrongportresponse = requests.delete(wrongurl, headers=headers)
909 self.assertEqual(deletewrongportresponse.status_code, 404)
910 print(" ")
911
912 print('->>>>>>> test Neutron Delete Subnet ->>>>>>>>>>>>>>>')
913 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200914 wrongurl = "http://0.0.0.0:19696/v2.0/subnets/unknownid"
915 righturl = "http://0.0.0.0:19696/v2.0/subnets/%s" % (json.loads(updatesubnetresponse.content)["subnet"]["id"])
peustermf27a5922017-05-17 08:48:54 +0200916 deletewrongsubnetresponse = requests.delete(wrongurl, headers=headers)
917 deleterightsubnetresponse = requests.delete(righturl, headers=headers)
918 self.assertEqual(deletewrongsubnetresponse.status_code, 404)
919 self.assertEqual(deleterightsubnetresponse.status_code, 204)
920 print(" ")
921
922 print('->>>>>>> test Neutron Delete Network ->>>>>>>>>>>>>>>')
923 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200924 righturl = "http://0.0.0.0:19696/v2.0/networks/%s" % (json.loads(createnetworkresponse.content)["network"]["id"])
peustermf27a5922017-05-17 08:48:54 +0200925 deleterightnetworkresponse = requests.delete(righturl, headers=headers)
926 self.assertEqual(deleterightnetworkresponse.status_code, 204)
927 print(" ")
928
929 print('->>>>>>> test Neutron Delete Non-Existing Network ->>>>>>>>>>>>>>>')
930 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200931 wrongurl = "http://0.0.0.0:19696/v2.0/networks/unknownid"
peustermf27a5922017-05-17 08:48:54 +0200932 deletewrongnetworkresponse = requests.delete(wrongurl, headers=headers)
933 self.assertEqual(deletewrongnetworkresponse.status_code, 404)
934 print(" ")
935
936 def testKeystomeDummy(self):
937 print('->>>>>>> test Keystone Dummy Class->>>>>>>>>>>>>>>')
938 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
939 print(" ")
940
941 headers = {'Content-type': 'application/json'}
942 test_heatapi_keystone_get_token = open(os.path.join(os.path.dirname(__file__), "test_heatapi_keystone_get_token.json")).read()
943
944 print('->>>>>>> test Keystone List Versions ->>>>>>>>>>>>>>>')
945 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200946 url = "http://0.0.0.0:15000/"
peustermf27a5922017-05-17 08:48:54 +0200947 listapiversionstackresponse = requests.get(url, headers=headers)
948 self.assertEqual(listapiversionstackresponse.status_code, 200)
949 self.assertEqual(json.loads(listapiversionstackresponse.content)["versions"]["values"][0]["id"], "v2.0")
950 print(" ")
951
952 print('->>>>>>> test Keystone Show ApiV2 ->>>>>>>>>>>>>>>')
953 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200954 url = "http://0.0.0.0:15000/v2.0"
peustermf27a5922017-05-17 08:48:54 +0200955 showapiversionstackresponse = requests.get(url, headers=headers)
956 self.assertEqual(showapiversionstackresponse.status_code, 200)
957 self.assertEqual(json.loads(showapiversionstackresponse.content)["version"]["id"], "v2.0")
958 print(" ")
959
960 print('->>>>>>> test Keystone Get Token ->>>>>>>>>>>>>>>')
961 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200962 url = "http://0.0.0.0:15000/v2.0/tokens"
peustermf27a5922017-05-17 08:48:54 +0200963 gettokenstackresponse = requests.post(url, data=json.dumps(json.loads(test_heatapi_keystone_get_token)), headers=headers)
964 self.assertEqual(gettokenstackresponse.status_code, 200)
965 self.assertEqual(json.loads(gettokenstackresponse.content)["access"]["user"]["name"], "tenantName")
966 print(" ")
967
968
969 def testHeatDummy(self):
970 print('->>>>>>> test Heat Dummy Class->>>>>>>>>>>>>>>')
971 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
972 print(" ")
973
974 headers = {'Content-type': 'application/json'}
975 test_heatapi_template_create_stack = open(os.path.join(os.path.dirname(__file__), "test_heatapi_template_create_stack.json")).read()
976 test_heatapi_template_update_stack = open(os.path.join(os.path.dirname(__file__), "test_heatapi_template_update_stack.json")).read()
977
978 print('->>>>>>> test Heat List API Versions Stack ->>>>>>>>>>>>>>>')
979 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200980 url = "http://0.0.0.0:18004/"
peustermf27a5922017-05-17 08:48:54 +0200981 listapiversionstackresponse = requests.get(url, headers=headers)
982 self.assertEqual(listapiversionstackresponse.status_code, 200)
983 self.assertEqual(json.loads(listapiversionstackresponse.content)["versions"][0]["id"], "v1.0")
984 print(" ")
985
986 print('->>>>>>> test Create Stack ->>>>>>>>>>>>>>>')
987 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200988 url = "http://0.0.0.0:18004/v1/tenantabc123/stacks"
peustermf27a5922017-05-17 08:48:54 +0200989 createstackresponse = requests.post(url, data=json.dumps(json.loads(test_heatapi_template_create_stack)), headers=headers)
990 self.assertEqual(createstackresponse.status_code, 201)
991 self.assertNotEqual(json.loads(createstackresponse.content)["stack"]["id"], "")
992 print(" ")
993
994 print('->>>>>>> test Create Stack With Existing Name ->>>>>>>>>>>>>>>')
995 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +0200996 url = "http://0.0.0.0:18004/v1/tenantabc123/stacks"
peustermf27a5922017-05-17 08:48:54 +0200997 createstackwithexistingnameresponse = requests.post(url, data='{"stack_name" : "s1"}', headers=headers)
998 self.assertEqual(createstackwithexistingnameresponse.status_code, 409)
999 print(" ")
1000
1001 print('->>>>>>> test Create Stack With Unsupported Version ->>>>>>>>>>>>>>>')
1002 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001003 url = "http://0.0.0.0:18004/v1/tenantabc123/stacks"
peustermf27a5922017-05-17 08:48:54 +02001004 createstackwitheunsupportedversionresponse = requests.post(url, data='{"stack_name" : "stackname123", "template" : {"heat_template_version": "2015-04-29"}}', headers=headers)
1005 self.assertEqual(createstackwitheunsupportedversionresponse.status_code, 400)
1006 print(" ")
1007
1008
1009 print('->>>>>>> test List Stack ->>>>>>>>>>>>>>>')
1010 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001011 url = "http://0.0.0.0:18004/v1/tenantabc123/stacks"
peustermf27a5922017-05-17 08:48:54 +02001012 liststackresponse = requests.get(url, headers=headers)
1013 self.assertEqual(liststackresponse.status_code, 200)
1014 self.assertEqual(json.loads(liststackresponse.content)["stacks"][0]["stack_status"], "CREATE_COMPLETE")
1015 print(" ")
1016
1017
1018 print('->>>>>>> test Show Stack ->>>>>>>>>>>>>>>')
1019 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001020 url = "http://0.0.0.0:18004/v1/tenantabc123showStack/stacks/%s"% json.loads(createstackresponse.content)['stack']['id']
peustermf27a5922017-05-17 08:48:54 +02001021 liststackdetailsresponse = requests.get(url, headers=headers)
1022 self.assertEqual(liststackdetailsresponse.status_code, 200)
1023 self.assertEqual(json.loads(liststackdetailsresponse.content)["stack"]["stack_status"], "CREATE_COMPLETE")
1024 print(" ")
1025
1026 print('->>>>>>> test Show Non-Exisitng Stack ->>>>>>>>>>>>>>>')
1027 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001028 url = "http://0.0.0.0:18004/v1/tenantabc123showStack/stacks/non_exisitng_id123"
peustermf27a5922017-05-17 08:48:54 +02001029 listnonexistingstackdetailsresponse = requests.get(url, headers=headers)
1030 self.assertEqual(listnonexistingstackdetailsresponse.status_code, 404)
1031 print(" ")
1032
1033 print('->>>>>>> test Update Stack ->>>>>>>>>>>>>>>')
1034 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001035 url = "http://0.0.0.0:18004/v1/tenantabc123updateStack/stacks/%s"% json.loads(createstackresponse.content)['stack']['id']
peustermf27a5922017-05-17 08:48:54 +02001036 updatestackresponse = requests.put(url, data=json.dumps(json.loads(test_heatapi_template_update_stack)),
1037 headers=headers)
1038 self.assertEqual(updatestackresponse.status_code, 202)
1039 liststackdetailsresponse = requests.get(url, headers=headers)
1040 self.assertEqual(json.loads(liststackdetailsresponse.content)["stack"]["stack_status"], "UPDATE_COMPLETE")
1041 print(" ")
1042
1043 print('->>>>>>> test Update Non-Existing Stack ->>>>>>>>>>>>>>>')
1044 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001045 url = "http://0.0.0.0:18004/v1/tenantabc123updateStack/stacks/non_existing_id_1234"
peustermf27a5922017-05-17 08:48:54 +02001046 updatenonexistingstackresponse = requests.put(url, data={"non": "sense"}, headers=headers)
1047 self.assertEqual(updatenonexistingstackresponse.status_code, 404)
1048 print(" ")
1049
1050 print('->>>>>>> test Delete Stack ->>>>>>>>>>>>>>>')
1051 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001052 url = "http://0.0.0.0:18004/v1/tenantabc123showStack/stacks/%s" % \
peustermf27a5922017-05-17 08:48:54 +02001053 json.loads(createstackresponse.content)['stack']['id']
1054 deletestackdetailsresponse = requests.delete(url, headers=headers)
1055 self.assertEqual(deletestackdetailsresponse.status_code, 204)
1056 print(" ")
1057
1058
1059 def test_CombinedTesting(self):
1060 print('->>>>>>> test Combinded tests->>>>>>>>>>>>>>>')
1061 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
1062 print(" ")
1063
1064 headers = {'Content-type': 'application/json'}
1065 test_heatapi_template_create_stack = open(os.path.join(os.path.dirname(__file__),
1066 "test_heatapi_template_create_stack.json")).read()
1067 test_heatapi_template_update_stack = open(os.path.join(os.path.dirname(__file__),
1068 "test_heatapi_template_update_stack.json")).read()
1069
1070 print('->>>>>>> test Combined Create Stack ->>>>>>>>>>>>>>>')
1071 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001072 url = "http://0.0.0.0:18004/v1/tenantabc123/stacks"
peustermf27a5922017-05-17 08:48:54 +02001073 createstackresponse = requests.post(url,
1074 data=json.dumps(json.loads(test_heatapi_template_create_stack)),
1075 headers=headers)
1076 self.assertEqual(createstackresponse.status_code, 201)
1077 self.assertNotEqual(json.loads(createstackresponse.content)["stack"]["id"], "")
1078 print(" ")
1079
1080 print('->>>>>>> test Combined Neutron List Ports ->>>>>>>>>>>>>>>')
1081 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001082 url = "http://0.0.0.0:19696/v2.0/ports"
peustermf27a5922017-05-17 08:48:54 +02001083 listportsesponse = requests.get(url, headers=headers)
1084 self.assertEqual(listportsesponse.status_code, 200)
1085 self.assertEqual(len(json.loads(listportsesponse.content)["ports"]), 9)
1086 for port in json.loads(listportsesponse.content)["ports"]:
1087 self.assertEqual(len(str(port['fixed_ips'][0]['subnet_id'])), 36)
1088 print(" ")
1089
1090 print('->>>>>>> test Combined Neutron List Networks ->>>>>>>>>>>>>>>')
1091 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001092 url = "http://0.0.0.0:19696/v2.0/networks"
peustermf27a5922017-05-17 08:48:54 +02001093 listnetworksesponse = requests.get(url, headers=headers)
1094 self.assertEqual(listnetworksesponse.status_code, 200)
1095 self.assertEqual(len(json.loads(listnetworksesponse.content)["networks"]), 10)
1096 for net in json.loads(listnetworksesponse.content)["networks"]:
1097 self.assertEqual(len(str(net['subnets'][0])), 36)
1098 print(" ")
1099
1100 print('->>>>>>> test Combined Update Stack ->>>>>>>>>>>>>>>')
1101 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001102 url = "http://0.0.0.0:18004/v1/tenantabc123updateStack/stacks/%s"% \
peustermf27a5922017-05-17 08:48:54 +02001103 json.loads(createstackresponse.content)['stack']['id']
1104 updatestackresponse = requests.put(url,
1105 data=json.dumps(json.loads(test_heatapi_template_update_stack)),
1106 headers=headers)
1107 self.assertEqual(updatestackresponse.status_code, 202)
1108 liststackdetailsresponse = requests.get(url, headers=headers)
1109 self.assertEqual(json.loads(liststackdetailsresponse.content)["stack"]["stack_status"], "UPDATE_COMPLETE")
1110 print(" ")
1111
1112 print('->>>>>>> test Combined Neutron List Ports ->>>>>>>>>>>>>>>')
1113 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001114 url = "http://0.0.0.0:19696/v2.0/ports"
peustermf27a5922017-05-17 08:48:54 +02001115 listportsesponse = requests.get(url, headers=headers)
1116 self.assertEqual(listportsesponse.status_code, 200)
1117 self.assertEqual(len(json.loads(listportsesponse.content)["ports"]), 18)
1118 for port in json.loads(listportsesponse.content)["ports"]:
1119 self.assertEqual(len(str(port['fixed_ips'][0]['subnet_id'])), 36)
1120 print(" ")
1121
1122 print('->>>>>>> test Combined Neutron List Networks ->>>>>>>>>>>>>>>')
1123 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001124 url = "http://0.0.0.0:19696/v2.0/networks"
peustermf27a5922017-05-17 08:48:54 +02001125 listnetworksesponse = requests.get(url, headers=headers)
1126 self.assertEqual(listnetworksesponse.status_code, 200)
1127 self.assertEqual(len(json.loads(listnetworksesponse.content)["networks"]), 14)
1128 for net in json.loads(listnetworksesponse.content)["networks"]:
1129 self.assertEqual(len(str(net['subnets'][0])), 36)
1130 print(" ")
1131
1132
1133 # workflow create floating ip and assign it to a server
1134
1135 print('->>>>>>> CombinedNeutronCreateFloatingIP ->>>>>>>>>>>>>>>')
1136 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001137 url = "http://0.0.0.0:19696/v2.0/floatingips"
peustermf27a5922017-05-17 08:48:54 +02001138 createflip = requests.post(url, headers=headers,
1139 data='{"floatingip":{"floating_network_id":"default"}}')
1140 self.assertEqual(createflip.status_code, 200)
1141 self.assertIsNotNone(json.loads(createflip.content)["floatingip"].get("port_id"))
1142 port_id = json.loads(createflip.content)["floatingip"].get("port_id")
1143 print(" ")
1144
1145 print('->>>>>>> CombinedNovaGetServer ->>>>>>>>>>>>>>>')
1146 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001147 url = "http://0.0.0.0:18774/v2.1/id_bla/servers/detail"
peustermf27a5922017-05-17 08:48:54 +02001148 listserverapisdetailedresponse = requests.get(url, headers=headers)
1149 self.assertEqual(listserverapisdetailedresponse.status_code, 200)
1150 self.assertEqual(json.loads(listserverapisdetailedresponse.content)["servers"][0]["status"], "ACTIVE")
1151 server_id = json.loads(listserverapisdetailedresponse.content)["servers"][0]["id"]
1152 print(" ")
1153
1154 print('->>>>>>> CombinedNovaAssignInterface ->>>>>>>>>>>>>>>')
1155 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001156 url = "http://0.0.0.0:18774/v2.1/id_bla/servers/%s/os-interface" % server_id
peustermf27a5922017-05-17 08:48:54 +02001157 assign = requests.post(url, headers=headers,
1158 data='{"interfaceAttachment":{"net_id": "default"}}')
1159 self.assertEqual(assign.status_code, 202)
1160 self.assertIsNotNone(json.loads(assign.content)["interfaceAttachment"].get("port_id"))
1161 port_id = json.loads(assign.content)["interfaceAttachment"].get("port_id")
1162 print(" ")
1163
1164 print('->>>>>>> CombinedNovaDeleteInterface ->>>>>>>>>>>>>>>')
1165 print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
peusterme22979a2017-05-18 13:28:38 +02001166 url = "http://0.0.0.0:18774/v2.1/id_bla/servers/%s/os-interface/%s" % (server_id, port_id)
peustermf27a5922017-05-17 08:48:54 +02001167 getintfs = requests.delete(url, headers=headers)
1168 self.assertEqual(getintfs.status_code, 202)
1169 print(" ")
1170
1171
1172if __name__ == '__main__':
1173 unittest.main()