blob: e4f75a5f20df6af4b0369de5c84e2aac9fe52340 [file] [log] [blame]
Murat Parlakisik66fde4d2016-09-22 13:28:13 -07001# models.py - vSGW Models
2
Saleil Bhat42e8c5e2017-02-01 15:59:54 -08003from core.models import Service, TenantWithContainer, Image
JianHaoce45e042017-01-16 11:06:29 +00004from django.db import models, transaction
5
6MCORD_KIND = 'EPC'
7
Murat Parlakisik66fde4d2016-09-22 13:28:13 -07008SERVICE_NAME = 'vsgw'
9SERVICE_NAME_VERBOSE = 'Virtual SGW Service'
10SERVICE_NAME_VERBOSE_PLURAL = 'Virtual SGW Services'
11TENANT_NAME_VERBOSE = 'Virtual SGW Tenant'
12TENANT_NAME_VERBOSE_PLURAL = 'Virtual SGW Tenants'
13
14class VSGWService(Service):
15
16 KIND = SERVICE_NAME
17
18 class Meta:
JianHaoce45e042017-01-16 11:06:29 +000019 proxy = True
Murat Parlakisik66fde4d2016-09-22 13:28:13 -070020 app_label = SERVICE_NAME
21 verbose_name = SERVICE_NAME_VERBOSE
22
Murat Parlakisik66fde4d2016-09-22 13:28:13 -070023class VSGWTenant(TenantWithContainer):
24
25 KIND = SERVICE_NAME
26
27 class Meta:
28 verbose_name = TENANT_NAME_VERBOSE
29
30 tenant_message = models.CharField(max_length=254, help_text="Tenant Message to Display")
Saleil Bhat42e8c5e2017-02-01 15:59:54 -080031 image_name = models.CharField(max_length=254, help_text="Name of VM image")
Murat Parlakisik66fde4d2016-09-22 13:28:13 -070032
33 def __init__(self, *args, **kwargs):
34 vsgw_service = VSGWService.get_service_objects().all()
35 if vsgw_service:
36 self._meta.get_field('provider_service').default = vsgw_service[0].id
JianHaoce45e042017-01-16 11:06:29 +000037 super(VSGWTenant, self).__init__(*args, **kwargs)
Murat Parlakisik66fde4d2016-09-22 13:28:13 -070038
39 def save(self, *args, **kwargs):
40 super(VSGWTenant, self).save(*args, **kwargs)
JianHaoce45e042017-01-16 11:06:29 +000041 model_policy_vsgwtenant(self.pk)
Murat Parlakisik66fde4d2016-09-22 13:28:13 -070042
43 def delete(self, *args, **kwargs):
44 self.cleanup_container()
45 super(VSGWTenant, self).delete(*args, **kwargs)
46
Saleil Bhat42e8c5e2017-02-01 15:59:54 -080047 @property
48 def image(self):
49 img = self.image_name.strip()
50 if img.lower() != "default":
51 return Image.objects.get(name=img)
52 else:
53 return super(VSGWTenant, self).image
54
JianHaoce45e042017-01-16 11:06:29 +000055def model_policy_vsgwtenant(pk):
Murat Parlakisik66fde4d2016-09-22 13:28:13 -070056 with transaction.atomic():
57 tenant = VSGWTenant.objects.select_for_update().filter(pk=pk)
58 if not tenant:
59 return
60 tenant = tenant[0]
JianHaoce45e042017-01-16 11:06:29 +000061 tenant.manage_container()