blob: 2a38d7ae0061b8a8220f047b1659da1d840e6f58 [file] [log] [blame]
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -07001import dredd_hooks as hooks
2import sys
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -07003
teonea0c50f12016-04-07 13:43:33 -04004# HELPERS
Matteo Scandoloc6103aa2016-04-07 14:38:54 -07005# NOTE move in separated module
6import os
7import sys
8sys.path.append("/opt/xos")
9os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
10import django
11from core.models import *
12from services.cord.models import *
Matteo Scandolo7ec36232016-04-07 16:36:23 -070013from services.vtr.models import *
Matteo Scandolo7ef1bee2016-04-08 14:22:39 -070014import urllib2
15import json
Matteo Scandolod9f92a72016-05-05 15:44:13 -070016from django.utils import timezone
Matteo Scandoloc6103aa2016-04-07 14:38:54 -070017django.setup()
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -070018
Matteo Scandoloc6103aa2016-04-07 14:38:54 -070019
Matteo Scandolo7ef1bee2016-04-08 14:22:39 -070020def doLogin(username, password):
21 url = "http://127.0.0.1:8000/xoslib/login?username=%s&password=%s" % (username, password)
22 res = urllib2.urlopen(url).read()
23 parsed = json.loads(res)
24 return {'token': parsed['xoscsrftoken'], 'sessionid': parsed['xossessionid']}
25
26
Matteo Scandoloc6103aa2016-04-07 14:38:54 -070027def cleanDB():
28 # deleting all subscribers
29 for s in CordSubscriberRoot.objects.all():
30 s.delete(purge=True)
31
32 # deleting all slices
33 for s in Slice.objects.all():
34 s.delete(purge=True)
35
36 # deleting all Services
37 for s in Service.objects.all():
38 s.delete(purge=True)
39
40 # deleting all Tenants
41 for s in Tenant.objects.all():
42 s.delete(purge=True)
43
44 # deleting all Networks
45 for s in Network.objects.all():
46 s.delete(purge=True)
47
48 # deleting all NetworkTemplates
49 for s in NetworkTemplate.objects.all():
50 s.delete(purge=True)
51
52 for s in NetworkSlice.objects.all():
53 s.delete(purge=True)
54
Matteo Scandolob645ce92016-04-18 09:18:43 -070055 for s in AddressPool.objects.all():
56 s.delete(purge=True)
57
Matteo Scandolofd3330c2016-05-02 14:42:01 -070058 for s in Flavor.objects.all():
59 s.delete(purge=True)
60
Matteo Scandoloc41467a2016-05-02 18:15:57 -070061 for s in Image.objects.all():
62 s.delete(purge=True)
63
Matteo Scandolo4f972e72016-04-11 09:59:23 -070064 # print 'DB Cleaned'
Matteo Scandolo7ef1bee2016-04-08 14:22:39 -070065
Matteo Scandoloc6103aa2016-04-07 14:38:54 -070066
67def createTestSubscriber():
68
69 cleanDB()
Matteo Scandolob82a85d2016-05-02 15:29:37 -070070 createFlavors()
Matteo Scandolofd3330c2016-05-02 14:42:01 -070071
Matteo Scandoloc6103aa2016-04-07 14:38:54 -070072 # load user
73 user = User.objects.get(email="padmin@vicci.org")
74
75 # network template
76 private_template = NetworkTemplate()
77 private_template.name = 'Private Network'
78 private_template.save()
79
80 # creating the test subscriber
81 subscriber = CordSubscriberRoot(name='Test Subscriber 1', id=1)
Matteo Scandolod9f92a72016-05-05 15:44:13 -070082 subscriber.created = timezone.now()
Matteo Scandoloc6103aa2016-04-07 14:38:54 -070083 subscriber.save()
84
Matteo Scandolob645ce92016-04-18 09:18:43 -070085 # vRouter service
86 vrouter_service = VRouterService()
87 vrouter_service.name = 'service_vrouter'
88 vrouter_service.save()
89
Matteo Scandolo19093042016-04-18 08:03:38 -070090 # address pools
91 ap_vsg = AddressPool()
Matteo Scandolob645ce92016-04-18 09:18:43 -070092 ap_vsg.service = vrouter_service
93 ap_vsg.name = 'addresses_vsg'
94 ap_vsg.addresses = '10.168.0.0'
Matteo Scandolo19093042016-04-18 08:03:38 -070095 ap_vsg.gateway_ip = '10.168.0.1'
96 ap_vsg.gateway_mac = '02:42:0a:a8:00:01'
97 ap_vsg.save()
98
Matteo Scandoloec95cb42016-04-18 14:51:44 -070099 # print 'vRouter created'
Matteo Scandolob645ce92016-04-18 09:18:43 -0700100
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700101 # Site
102 site = Site.objects.get(name='MySite')
103
104 # vSG service
105 vsg_service = VSGService()
106 vsg_service.name = 'service_vsg'
107
108 # vSG slice
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700109 vsg_slice = Slice(id=2)
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700110 vsg_slice.name = site.login_base + "_testVsg"
111 vsg_slice.service = vsg_service.id
112 vsg_slice.site = site
113 vsg_slice.caller = user
114
115 vsg_slice.save()
116
117 vsg_service.save()
118
119 # volt service
120 volt_service = VOLTService()
121 volt_service.name = 'service_volt'
122 volt_service.save()
123
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700124 # cvpe image
125 createImage('ubuntu-vcpe4')
126
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700127 # vcpe slice
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700128 vcpe_slice = Slice(id=3)
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700129 vcpe_slice.name = site.login_base + "_testVcpe"
130 vcpe_slice.service = Service.objects.get(kind='vCPE')
131 vcpe_slice.site = site
132 vcpe_slice.caller = user
133 vcpe_slice.save()
134
Matteo Scandolo4f972e72016-04-11 09:59:23 -0700135 # print 'vcpe_slice created'
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700136
137 # create a lan network
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700138 lan_net = Network(id=1)
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700139 lan_net.name = 'lan_network'
140 lan_net.owner = vcpe_slice
141 lan_net.template = private_template
142 lan_net.save()
143
Matteo Scandolo4f972e72016-04-11 09:59:23 -0700144 # print 'lan_network created'
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700145
146 # add relation between vcpe slice and lan network
147 vcpe_network = NetworkSlice()
148 vcpe_network.network = lan_net
149 vcpe_network.slice = vcpe_slice
150 vcpe_network.save()
151
Matteo Scandolo4f972e72016-04-11 09:59:23 -0700152 # print 'vcpe network relation added'
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700153
154 # vbng service
155 vbng_service = VBNGService()
156 vbng_service.name = 'service_vbng'
157 vbng_service.save()
158
Matteo Scandolo4f972e72016-04-11 09:59:23 -0700159 # print 'vbng_service creater'
Matteo Scandolo0dedf332016-04-08 16:38:15 -0700160
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700161 # volt tenant
162 vt = VOLTTenant(subscriber=subscriber.id, id=1)
163 vt.s_tag = "222"
164 vt.c_tag = "432"
165 vt.provider_service_id = volt_service.id
166 vt.caller = user
167 vt.save()
168
Matteo Scandolo4f972e72016-04-11 09:59:23 -0700169 # print "Subscriber Created"
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700170
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -0700171
Matteo Scandolo7ec36232016-04-07 16:36:23 -0700172def deleteTruckrolls():
173 for s in VTRTenant.objects.all():
174 s.delete(purge=True)
175
176
177def setUpTruckroll():
178 service_vtr = VTRService()
179 service_vtr.name = 'service_vtr'
180 service_vtr.save()
181
182
183def createTruckroll():
184 setUpTruckroll()
185 tn = VTRTenant(id=1)
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700186 tn.created = timezone.now()
Matteo Scandolo7ec36232016-04-07 16:36:23 -0700187 tn.save()
188
189
Matteo Scandolob82a85d2016-05-02 15:29:37 -0700190def createFlavors():
191 small = Flavor(id=1)
192 small.name = "m1.small"
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700193 small.created = timezone.now()
Matteo Scandolob82a85d2016-05-02 15:29:37 -0700194 small.save()
195
196 medium = Flavor(id=2)
197 medium.name = "m1.medium"
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700198 medium.created = timezone.now()
Matteo Scandolob82a85d2016-05-02 15:29:37 -0700199 medium.save()
200
201 large = Flavor(id=3)
202 large.name = "m1.large"
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700203 large.created = timezone.now()
Matteo Scandolob82a85d2016-05-02 15:29:37 -0700204 large.save()
205
206
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700207def createSlice():
208 site = Site.objects.get(name='MySite')
209 user = User.objects.get(email="padmin@vicci.org")
210
211 sl = Slice(id=1)
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700212 sl.created = timezone.now()
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700213 sl.name = site.login_base + "_testSlice"
214 sl.site = site
215 sl.caller = user
216 sl.save()
217 return sl
218
219
Matteo Scandolob82a85d2016-05-02 15:29:37 -0700220def createDeployment():
221 deployment = Deployment(id=1)
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700222 deployment.created = timezone.now()
Matteo Scandolob82a85d2016-05-02 15:29:37 -0700223 deployment.name = 'MyTestDeployment'
224 deployment.save()
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700225 return deployment
226
227
228def createImage(name):
229 img = Image(id=1)
230 img.name = name
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700231 img.created = timezone.now()
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700232 img.disk_format = 'QCOW2'
233 img.kind = 'vm'
234 img.save()
235 return img
236
237
238def createNode(deployment):
239 site = Site.objects.get(name='MySite')
240
241 site_deployment = SiteDeployment(id=1)
242 site_deployment.site = site
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700243 site_deployment.created = timezone.now()
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700244 site_deployment.deployment = deployment
245 site_deployment.save()
246
247 node = Node(id=1)
248 node.name = 'test-node'
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700249 node.created = timezone.now()
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700250 node.site = site
251 node.site_deployment = site_deployment
252 node.save()
253 return node
254
255
256def setupInstance():
257 deployment = createDeployment()
258 sl = createSlice()
259 node = createNode(deployment)
260 img = createImage('test-image')
261 # print {'image': img.id, 'deployment': deployment.id, 'slice': sl.id}
262 return {'image': img, 'deployment': deployment, 'slice': sl}
263
264
265def createInstance():
266 requirements = setupInstance()
267 user = User.objects.get(email="padmin@vicci.org")
268
269 instance = Instance(id=1)
270 instance.name = 'test-instance'
Matteo Scandolod9f92a72016-05-05 15:44:13 -0700271 instance.created = timezone.now()
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700272 instance.node = Node.objects.all()[0]
273 instance.image = requirements['image']
274 instance.slice = requirements['slice']
275 instance.deployment = requirements['deployment']
276 instance.caller = user
277 instance.save()
Matteo Scandolod7d70472016-04-29 09:56:48 -0700278
279
Matteo Scandolo0dedf332016-04-08 16:38:15 -0700280@hooks.before_all
281def my_before_all_hook(transactions):
Matteo Scandolo4f972e72016-04-11 09:59:23 -0700282 # print "-------------------------------- Before All Hook --------------------------------"
Matteo Scandolo0dedf332016-04-08 16:38:15 -0700283 cleanDB()
284
285
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -0700286@hooks.before_each
287def my_before_each_hook(transaction):
Matteo Scandolo4f972e72016-04-11 09:59:23 -0700288 # print "-------------------------------- Before Each Hook --------------------------------"
Matteo Scandoloec95cb42016-04-18 14:51:44 -0700289 # print transaction['name']
Matteo Scandolo7ef1bee2016-04-08 14:22:39 -0700290 auth = doLogin('padmin@vicci.org', 'letmein')
291 transaction['request']['headers']['X-CSRFToken'] = auth['token']
292 transaction['request']['headers']['Cookie'] = "xossessionid=%s; xoscsrftoken=%s" % (auth['sessionid'], auth['token'])
Matteo Scandoloc6103aa2016-04-07 14:38:54 -0700293 createTestSubscriber()
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700294 setupInstance()
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -0700295 sys.stdout.flush()
296
297
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700298# @hooks.after_each
299# def my_after_each(transaction):
300# print "-------------------------------- Test end --------------------------------"
301
302
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -0700303@hooks.before("Truckroll > Truckroll Collection > Create a Truckroll")
Matteo Scandolo7ec36232016-04-07 16:36:23 -0700304def test1(transaction):
305 setUpTruckroll()
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -0700306
307
Matteo Scandolo4b3bf7f2016-04-12 11:38:40 -0700308@hooks.before("Truckroll > Truckroll Collection > View a Truckroll Detail")
Matteo Scandolo7ec36232016-04-07 16:36:23 -0700309def test2(transaction):
310 deleteTruckrolls()
311 createTruckroll()
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -0700312
313
Matteo Scandolo4b3bf7f2016-04-12 11:38:40 -0700314@hooks.before("Truckroll > Truckroll Collection > Delete a Truckroll Detail")
Matteo Scandolo7ec36232016-04-07 16:36:23 -0700315def test3(transaction):
316 deleteTruckrolls()
317 createTruckroll()
Matteo Scandolo3ba6aff2016-04-06 14:44:56 -0700318
319
320@hooks.before("vOLT > vOLT Collection > Create a vOLT")
Matteo Scandolo7ec36232016-04-07 16:36:23 -0700321def test4(transaction):
Matteo Scandolo7ef1bee2016-04-08 14:22:39 -0700322 # transaction['skip'] = True
323 VOLTTenant.objects.get(kind='vOLT').delete()
Matteo Scandoloec95cb42016-04-18 14:51:44 -0700324
325
Matteo Scandolod7d70472016-04-29 09:56:48 -0700326@hooks.before("Flavors > Flavors > View a Flavors Detail")
327def test5(transaction):
Matteo Scandolob82a85d2016-05-02 15:29:37 -0700328 createFlavors()
329
330
331@hooks.before("Deployments > Deployments > View a Deployment Detail")
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700332def get_deployments(transaction):
Matteo Scandolob82a85d2016-05-02 15:29:37 -0700333 createDeployment()
Matteo Scandolod7d70472016-04-29 09:56:48 -0700334
335
Matteo Scandoloc41467a2016-05-02 18:15:57 -0700336@hooks.before("Deployments > Deployments > Delete a Deployment")
337def delete_deployments(transaction):
338 createDeployment()
339
340
341@hooks.before("Instances > Instances Collection > Create an Instance")
342def create_instance(transaction):
343 setupInstance()
344 transaction['skip'] = True
345
346
347@hooks.before("Instances > Instances Detail > Get instance details")
348def get_instance(transaction):
349 createInstance()
350
351
352@hooks.before("Instances > Instances Detail > Delete instance")
353def delete_instance(transaction):
354 createInstance()
355
356
Matteo Scandoloec95cb42016-04-18 14:51:44 -0700357@hooks.before("Example > Example Services Collection > List all Example Services")
358def exampleTest(transaction):
359 transaction['skip'] = True
Matteo Scandolocb151a72016-04-30 16:28:09 -0700360
361
362@hooks.before("Utility > Login > Log a user in the system")
363def before_logout_hook(transaction):
364 transaction['skip'] = True
365 # auth = doLogin('padmin@vicci.org', 'letmein')
366 # transaction['request']['body'] = {}
367 # transaction['request']['body']['xossessionid'] = auth['sessionid']
368
369
370@hooks.before("Utility > Logout > Log a user out of the system")
371def skip_for_now(transaction):
372 transaction['skip'] = True