blob: 54a6ec3002e118d7237b1e76e60b58df258c91b9 [file] [log] [blame]
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +02001def __init__(self, *args, **kwargs):
Scott Bakerea848b22017-05-25 09:13:47 -07002 volt_services = VOLTService.objects.all()
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +02003 if volt_services:
Scott Bakerd7590f72017-07-18 11:37:22 -07004 self._meta.get_field("owner").default = volt_services[0].id
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +02005 super(VOLTTenant, self).__init__(*args, **kwargs)
6 self.cached_vcpe = None
7
8@property
9def vcpe(self):
Scott Bakerd7590f72017-07-18 11:37:22 -070010 # TODO: hardcoded service dependency
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +020011 from services.vsg.models import VSGTenant
Scott Bakerd7590f72017-07-18 11:37:22 -070012
13 vsg = None
14 for link in self.subscribed_links:
15 # cast from base class to derived class
16 vsgs = VSGTenant.objects.filter(serviceinstance_ptr=link.provider_service_instance)
17 if vsgs:
18 vsg = vsgs[0]
19
20 if not vsg:
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +020021 return None
22
23 # always return the same object when possible
Scott Bakerd7590f72017-07-18 11:37:22 -070024 if (self.cached_vcpe) and (self.cached_vcpe.id == vsg.id):
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +020025 return self.cached_vcpe
26
Scott Bakerd7590f72017-07-18 11:37:22 -070027 vsg.caller = self.creator
28 self.cached_vcpe = vsg
29 return vsg
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +020030
31@vcpe.setter
32def vcpe(self, value):
33 raise XOSConfigurationError("vOLT.vCPE cannot be set this way -- create a new vCPE object and set its subscriber_tenant instead")
34
35@property
36def subscriber(self):
Scott Bakerd7590f72017-07-18 11:37:22 -070037 for link in self.provided_links:
38 # cast from base class to derived class
39 roots = CordSubscriberRoot.objects.filter(serviceinstance_ptr=link.subscriber_service_instance)
40 if roots:
41 return roots[0]
42 return None
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +020043
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +020044def save(self, *args, **kwargs):
Sapan Bhatia8fc7eb32017-05-05 20:43:43 +020045 if not self.creator:
46 if not getattr(self, "caller", None):
47 # caller must be set when creating a vCPE since it creates a slice
48 raise XOSProgrammingError("VOLTTenant's self.caller was not set")
49 self.creator = self.caller
50 if not self.creator:
51 raise XOSProgrammingError("VOLTTenant's self.creator was not set")
52
53 super(VOLTTenant, self).save(*args, **kwargs)