blob: e7ba7053ec2037977e7dd96540fea352309b3bec [file] [log] [blame]
Matteo Scandoloa6658422016-04-06 14:44:56 -07001import dredd_hooks as hooks
2import sys
Matteo Scandoloa6658422016-04-06 14:44:56 -07003
teone7d1c1272016-04-07 13:43:33 -04004# HELPERS
Matteo Scandoloc916b5e2016-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 *
Scott Bakerb19c2a02016-06-13 11:48:41 -070012from services.volt.models import *
13from services.vsg.models import *
Matteo Scandolo336dda12016-04-07 16:36:23 -070014from services.vtr.models import *
Matteo Scandoloaf4c2382016-04-08 14:22:39 -070015import urllib2
16import json
Matteo Scandolo8d650c52016-05-05 15:44:13 -070017from django.utils import timezone
Matteo Scandoloc916b5e2016-04-07 14:38:54 -070018django.setup()
Matteo Scandoloa6658422016-04-06 14:44:56 -070019
Matteo Scandoloc916b5e2016-04-07 14:38:54 -070020
Matteo Scandoloaf4c2382016-04-08 14:22:39 -070021def doLogin(username, password):
Scott Bakerc3a4d1d2016-06-15 19:08:16 -070022 url = "http://127.0.0.1:9999/xoslib/login?username=%s&password=%s" % (username, password)
Matteo Scandoloaf4c2382016-04-08 14:22:39 -070023 res = urllib2.urlopen(url).read()
24 parsed = json.loads(res)
25 return {'token': parsed['xoscsrftoken'], 'sessionid': parsed['xossessionid']}
26
27
Matteo Scandoloc916b5e2016-04-07 14:38:54 -070028def cleanDB():
29 # deleting all subscribers
30 for s in CordSubscriberRoot.objects.all():
31 s.delete(purge=True)
32
33 # deleting all slices
34 for s in Slice.objects.all():
35 s.delete(purge=True)
36
37 # deleting all Services
38 for s in Service.objects.all():
39 s.delete(purge=True)
40
41 # deleting all Tenants
42 for s in Tenant.objects.all():
43 s.delete(purge=True)
44
45 # deleting all Networks
46 for s in Network.objects.all():
47 s.delete(purge=True)
48
49 # deleting all NetworkTemplates
50 for s in NetworkTemplate.objects.all():
51 s.delete(purge=True)
52
53 for s in NetworkSlice.objects.all():
54 s.delete(purge=True)
55
Matteo Scandolodeafe642016-04-18 09:18:43 -070056 for s in AddressPool.objects.all():
57 s.delete(purge=True)
58
Matteo Scandolod8a700f2016-05-02 14:42:01 -070059 for s in Flavor.objects.all():
60 s.delete(purge=True)
61
Matteo Scandolo4b2db532016-05-02 18:15:57 -070062 for s in Image.objects.all():
63 s.delete(purge=True)
64
Matteo Scandolof2bb5592016-04-11 09:59:23 -070065 # print 'DB Cleaned'
Matteo Scandoloaf4c2382016-04-08 14:22:39 -070066
Matteo Scandoloc916b5e2016-04-07 14:38:54 -070067
68def createTestSubscriber():
69
70 cleanDB()
Matteo Scandolod5f3d052016-05-02 15:29:37 -070071 createFlavors()
Matteo Scandolod8a700f2016-05-02 14:42:01 -070072
Matteo Scandoloc916b5e2016-04-07 14:38:54 -070073 # load user
74 user = User.objects.get(email="padmin@vicci.org")
75
76 # network template
77 private_template = NetworkTemplate()
78 private_template.name = 'Private Network'
79 private_template.save()
80
81 # creating the test subscriber
82 subscriber = CordSubscriberRoot(name='Test Subscriber 1', id=1)
Matteo Scandolo8d650c52016-05-05 15:44:13 -070083 subscriber.created = timezone.now()
Matteo Scandoloc916b5e2016-04-07 14:38:54 -070084 subscriber.save()
85
Matteo Scandolodeafe642016-04-18 09:18:43 -070086 # vRouter service
87 vrouter_service = VRouterService()
88 vrouter_service.name = 'service_vrouter'
89 vrouter_service.save()
90
Matteo Scandolof4ce5562016-04-18 08:03:38 -070091 # address pools
92 ap_vsg = AddressPool()
Matteo Scandolodeafe642016-04-18 09:18:43 -070093 ap_vsg.service = vrouter_service
94 ap_vsg.name = 'addresses_vsg'
95 ap_vsg.addresses = '10.168.0.0'
Matteo Scandolof4ce5562016-04-18 08:03:38 -070096 ap_vsg.gateway_ip = '10.168.0.1'
97 ap_vsg.gateway_mac = '02:42:0a:a8:00:01'
98 ap_vsg.save()
99
Matteo Scandoloc98cdd92016-04-18 14:51:44 -0700100 # print 'vRouter created'
Matteo Scandolodeafe642016-04-18 09:18:43 -0700101
Scott Bakerdd454672016-05-20 12:12:28 -0700102 # cvpe image
103 vsg_img = createImage('ubuntu-vcpe4')
104
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700105 # Site
106 site = Site.objects.get(name='MySite')
107
108 # vSG service
109 vsg_service = VSGService()
110 vsg_service.name = 'service_vsg'
111
112 # vSG slice
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700113 vsg_slice = Slice(id=2)
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700114 vsg_slice.name = site.login_base + "_testVsg"
115 vsg_slice.service = vsg_service.id
116 vsg_slice.site = site
117 vsg_slice.caller = user
Scott Bakerdd454672016-05-20 12:12:28 -0700118 vsg_slice.default_image = vsg_img
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700119 vsg_slice.save()
120
121 vsg_service.save()
122
123 # volt service
124 volt_service = VOLTService()
125 volt_service.name = 'service_volt'
126 volt_service.save()
127
128 # vcpe slice
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700129 vcpe_slice = Slice(id=3)
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700130 vcpe_slice.name = site.login_base + "_testVcpe"
131 vcpe_slice.service = Service.objects.get(kind='vCPE')
132 vcpe_slice.site = site
133 vcpe_slice.caller = user
Scott Bakerdd454672016-05-20 12:12:28 -0700134 vcpe_slice.default_image = vsg_img
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700135 vcpe_slice.save()
136
Matteo Scandolof2bb5592016-04-11 09:59:23 -0700137 # print 'vcpe_slice created'
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700138
139 # create a lan network
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700140 lan_net = Network(id=1)
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700141 lan_net.name = 'lan_network'
142 lan_net.owner = vcpe_slice
143 lan_net.template = private_template
144 lan_net.save()
145
Matteo Scandolof2bb5592016-04-11 09:59:23 -0700146 # print 'lan_network created'
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700147
148 # add relation between vcpe slice and lan network
149 vcpe_network = NetworkSlice()
150 vcpe_network.network = lan_net
151 vcpe_network.slice = vcpe_slice
152 vcpe_network.save()
153
Matteo Scandolof2bb5592016-04-11 09:59:23 -0700154 # print 'vcpe network relation added'
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700155
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700156 # volt tenant
157 vt = VOLTTenant(subscriber=subscriber.id, id=1)
158 vt.s_tag = "222"
159 vt.c_tag = "432"
160 vt.provider_service_id = volt_service.id
161 vt.caller = user
162 vt.save()
163
Matteo Scandolof2bb5592016-04-11 09:59:23 -0700164 # print "Subscriber Created"
Matteo Scandoloc916b5e2016-04-07 14:38:54 -0700165
Matteo Scandoloa6658422016-04-06 14:44:56 -0700166
Matteo Scandolo336dda12016-04-07 16:36:23 -0700167def deleteTruckrolls():
168 for s in VTRTenant.objects.all():
169 s.delete(purge=True)
170
171
172def setUpTruckroll():
173 service_vtr = VTRService()
174 service_vtr.name = 'service_vtr'
175 service_vtr.save()
176
177
178def createTruckroll():
179 setUpTruckroll()
180 tn = VTRTenant(id=1)
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700181 tn.created = timezone.now()
Matteo Scandolo336dda12016-04-07 16:36:23 -0700182 tn.save()
183
184
Matteo Scandolod5f3d052016-05-02 15:29:37 -0700185def createFlavors():
186 small = Flavor(id=1)
187 small.name = "m1.small"
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700188 small.created = timezone.now()
Matteo Scandolod5f3d052016-05-02 15:29:37 -0700189 small.save()
190
191 medium = Flavor(id=2)
192 medium.name = "m1.medium"
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700193 medium.created = timezone.now()
Matteo Scandolod5f3d052016-05-02 15:29:37 -0700194 medium.save()
195
196 large = Flavor(id=3)
197 large.name = "m1.large"
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700198 large.created = timezone.now()
Matteo Scandolod5f3d052016-05-02 15:29:37 -0700199 large.save()
200
201
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700202def createSlice():
203 site = Site.objects.get(name='MySite')
204 user = User.objects.get(email="padmin@vicci.org")
205
206 sl = Slice(id=1)
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700207 sl.created = timezone.now()
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700208 sl.name = site.login_base + "_testSlice"
209 sl.site = site
210 sl.caller = user
211 sl.save()
212 return sl
213
214
Matteo Scandolod5f3d052016-05-02 15:29:37 -0700215def createDeployment():
216 deployment = Deployment(id=1)
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700217 deployment.created = timezone.now()
Matteo Scandolod5f3d052016-05-02 15:29:37 -0700218 deployment.name = 'MyTestDeployment'
219 deployment.save()
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700220 return deployment
221
222
223def createImage(name):
224 img = Image(id=1)
225 img.name = name
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700226 img.created = timezone.now()
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700227 img.disk_format = 'QCOW2'
228 img.kind = 'vm'
229 img.save()
230 return img
231
232
233def createNode(deployment):
234 site = Site.objects.get(name='MySite')
235
236 site_deployment = SiteDeployment(id=1)
237 site_deployment.site = site
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700238 site_deployment.created = timezone.now()
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700239 site_deployment.deployment = deployment
240 site_deployment.save()
241
242 node = Node(id=1)
243 node.name = 'test-node'
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700244 node.created = timezone.now()
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700245 node.site = site
246 node.site_deployment = site_deployment
247 node.save()
248 return node
249
250
251def setupInstance():
252 deployment = createDeployment()
253 sl = createSlice()
254 node = createNode(deployment)
255 img = createImage('test-image')
256 # print {'image': img.id, 'deployment': deployment.id, 'slice': sl.id}
257 return {'image': img, 'deployment': deployment, 'slice': sl}
258
259
260def createInstance():
261 requirements = setupInstance()
262 user = User.objects.get(email="padmin@vicci.org")
263
264 instance = Instance(id=1)
265 instance.name = 'test-instance'
Matteo Scandolo8d650c52016-05-05 15:44:13 -0700266 instance.created = timezone.now()
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700267 instance.node = Node.objects.all()[0]
268 instance.image = requirements['image']
269 instance.slice = requirements['slice']
270 instance.deployment = requirements['deployment']
271 instance.caller = user
272 instance.save()
Matteo Scandolob71510b2016-04-29 09:56:48 -0700273
274
Matteo Scandolodb20d5a2016-05-16 10:31:32 -0700275def createService():
276 service = Service(id=1)
277 service.name = 'test-service'
278 service.save()
279
Matteo Scandolob94d7ab2016-04-08 16:38:15 -0700280@hooks.before_all
281def my_before_all_hook(transactions):
Matteo Scandolof2bb5592016-04-11 09:59:23 -0700282 # print "-------------------------------- Before All Hook --------------------------------"
Matteo Scandolob94d7ab2016-04-08 16:38:15 -0700283 cleanDB()
284
285
Matteo Scandoloa6658422016-04-06 14:44:56 -0700286@hooks.before_each
287def my_before_each_hook(transaction):
Matteo Scandolof2bb5592016-04-11 09:59:23 -0700288 # print "-------------------------------- Before Each Hook --------------------------------"
Matteo Scandoloc98cdd92016-04-18 14:51:44 -0700289 # print transaction['name']
Matteo Scandoloaf4c2382016-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 Scandoloc916b5e2016-04-07 14:38:54 -0700293 createTestSubscriber()
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700294 setupInstance()
Matteo Scandoloa6658422016-04-06 14:44:56 -0700295 sys.stdout.flush()
296
297
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700298# @hooks.after_each
299# def my_after_each(transaction):
300# print "-------------------------------- Test end --------------------------------"
301
302
Matteo Scandolodb20d5a2016-05-16 10:31:32 -0700303@hooks.before("Services > Services > View a Service Detail")
304def get_service(transaction):
305 createService()
306
307
308@hooks.before("Services > Services > Delete a Service")
309def delete_service(transaction):
310 createService()
311
312
Matteo Scandoloa6658422016-04-06 14:44:56 -0700313@hooks.before("Truckroll > Truckroll Collection > Create a Truckroll")
Matteo Scandolo336dda12016-04-07 16:36:23 -0700314def test1(transaction):
315 setUpTruckroll()
Matteo Scandoloa6658422016-04-06 14:44:56 -0700316
317
Matteo Scandoloc7987cd2016-04-12 11:38:40 -0700318@hooks.before("Truckroll > Truckroll Collection > View a Truckroll Detail")
Matteo Scandolo336dda12016-04-07 16:36:23 -0700319def test2(transaction):
320 deleteTruckrolls()
321 createTruckroll()
Matteo Scandoloa6658422016-04-06 14:44:56 -0700322
323
Matteo Scandoloc7987cd2016-04-12 11:38:40 -0700324@hooks.before("Truckroll > Truckroll Collection > Delete a Truckroll Detail")
Matteo Scandolo336dda12016-04-07 16:36:23 -0700325def test3(transaction):
326 deleteTruckrolls()
327 createTruckroll()
Matteo Scandoloa6658422016-04-06 14:44:56 -0700328
329
330@hooks.before("vOLT > vOLT Collection > Create a vOLT")
Matteo Scandolo336dda12016-04-07 16:36:23 -0700331def test4(transaction):
Matteo Scandoloaf4c2382016-04-08 14:22:39 -0700332 # transaction['skip'] = True
333 VOLTTenant.objects.get(kind='vOLT').delete()
Matteo Scandoloc98cdd92016-04-18 14:51:44 -0700334
335
Matteo Scandolob71510b2016-04-29 09:56:48 -0700336@hooks.before("Flavors > Flavors > View a Flavors Detail")
337def test5(transaction):
Matteo Scandolod5f3d052016-05-02 15:29:37 -0700338 createFlavors()
339
340
341@hooks.before("Deployments > Deployments > View a Deployment Detail")
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700342def get_deployments(transaction):
Matteo Scandolod5f3d052016-05-02 15:29:37 -0700343 createDeployment()
Matteo Scandolob71510b2016-04-29 09:56:48 -0700344
345
Matteo Scandolo4b2db532016-05-02 18:15:57 -0700346@hooks.before("Deployments > Deployments > Delete a Deployment")
347def delete_deployments(transaction):
348 createDeployment()
349
350
351@hooks.before("Instances > Instances Collection > Create an Instance")
352def create_instance(transaction):
353 setupInstance()
354 transaction['skip'] = True
355
356
357@hooks.before("Instances > Instances Detail > Get instance details")
358def get_instance(transaction):
359 createInstance()
360
361
362@hooks.before("Instances > Instances Detail > Delete instance")
363def delete_instance(transaction):
364 createInstance()
365
366
Matteo Scandoloc98cdd92016-04-18 14:51:44 -0700367@hooks.before("Example > Example Services Collection > List all Example Services")
368def exampleTest(transaction):
369 transaction['skip'] = True
Matteo Scandolo2dc0a9b2016-04-30 16:28:09 -0700370
371
372@hooks.before("Utility > Login > Log a user in the system")
373def before_logout_hook(transaction):
374 transaction['skip'] = True
375 # auth = doLogin('padmin@vicci.org', 'letmein')
376 # transaction['request']['body'] = {}
377 # transaction['request']['body']['xossessionid'] = auth['sessionid']
378
379
380@hooks.before("Utility > Logout > Log a user out of the system")
381def skip_for_now(transaction):
Scott Bakerc3a4d1d2016-06-15 19:08:16 -0700382 transaction['skip'] = True