blob: f36af40c22ff21b8fe75cdc465ea9a8d7346c761 [file] [log] [blame]
Omar Abdelkaderde59b9c2017-06-29 18:15:37 -07001# models.py - VHSSService Models
2
3from core.models import Service, TenantWithContainer, Image
4from django.db import models, transaction
5
6MCORD_KIND = "EPC" # added from vBBU
7
8# these macros are currently not used, names hard-coded manually
9SERVICE_NAME = 'vhss'
10SERVICE_NAME_VERBOSE = 'VHSS Service'
11SERVICE_NAME_VERBOSE_PLURAL = 'VHSS Services'
12TENANT_NAME_VERBOSE = 'VHSS Service Tenant'
13TENANT_NAME_VERBOSE_PLURAL = 'VHSS Service Tenants'
14
15
16class VHSSService(Service):
17 KIND = MCORD_KIND
18
19 class Meta:
20 proxy = True
21 app_label = "vhss"
22 verbose_name = "VHSS Service"
23
24
25class VHSSTenant(TenantWithContainer):
26 KIND = 'vhss'
27
28 class Meta:
29 verbose_name = "VHSS Service Tenant"
30
31 tenant_message = models.CharField(max_length=254, help_text="vHSS message")
32 image_name = models.CharField(max_length=254, help_text="Name of VM image")
33
34 def __init__(self, *args, **kwargs):
35 vhss_services = VHSSService.get_service_objects().all()
36 if vhss_services:
37 self._meta.get_field('provider_service').default = vhss_services[0].id
38 super(VHSSTenant, self).__init__(*args, **kwargs)
39
40 def save(self, *args, **kwargs):
41 super(VHSSTenant, self).save(*args, **kwargs)
42 model_policy_vhsstenant(self.pk) # defined below
43
44 def delete(self, *args, **kwargs):
45 self.cleanup_container()
46 super(VHSSTenant, self).delete(*args, **kwargs)
47
48 @property
49 def image(self):
50 img = self.image_name.strip()
51 if img.lower() != "default":
52 return Image.objects.get(name=img)
53 else:
54 return super(VHSSTenant, self).image
55
56
57def model_policy_vhsstenant(pk):
58 with transaction.atomic():
59 tenant = VHSSTenant.objects.select_for_update().filter(pk=pk)
60 if not tenant:
61 return
62 tenant = tenant[0]
63 tenant.manage_container()
64