CORD-879 eliminate proxy models in vRouter
Change-Id: I3587ba971b63c0498c6f7c7b915f291d30ba5d5b
diff --git a/xos/models.py b/xos/models.py
index 8396d3e..016cb3d 100644
--- a/xos/models.py
+++ b/xos/models.py
@@ -32,46 +32,14 @@
class Meta:
app_label = APP_LABEL
verbose_name = "vRouter Service"
- proxy = True
- default_attributes = {
- "rest_hostname": "",
- "rest_port": "8181",
- "rest_user": "onos",
- "rest_pass": "rocks"
- }
+ # Are rest_hostname and rest_port redundant with ONOS service?
+ # Should ONOSService be augmented with rest_user and rest_pass?
- @property
- def rest_hostname(self):
- return self.get_attribute("rest_hostname", self.default_attributes["rest_hostname"])
-
- @rest_hostname.setter
- def rest_hostname(self, value):
- self.set_attribute("rest_hostname", value)
-
- @property
- def rest_port(self):
- return self.get_attribute("rest_port", self.default_attributes["rest_port"])
-
- @rest_port.setter
- def rest_port(self, value):
- self.set_attribute("rest_port", value)
-
- @property
- def rest_user(self):
- return self.get_attribute("rest_user", self.default_attributes["rest_user"])
-
- @rest_user.setter
- def rest_user(self, value):
- self.set_attribute("rest_user", value)
-
- @property
- def rest_pass(self):
- return self.get_attribute("rest_pass", self.default_attributes["rest_pass"])
-
- @rest_pass.setter
- def rest_pass(self, value):
- self.set_attribute("rest_pass", value)
+ rest_hostname = StrippedCharField(max_length=255, null=True, blank=True)
+ rest_port = models.IntegerField(default=8181)
+ rest_user = StrippedCharField(max_length=255, default="onos")
+ rest_pass = StrippedCharField(max_length=255, default="rocks")
def ip_to_mac(self, ip):
(a, b, c, d) = ip.split('.')
@@ -112,16 +80,13 @@
class VRouterTenant(Tenant):
class Meta:
- proxy = True
verbose_name = "vRouter Tenant"
KIND = VROUTER_KIND
- simple_attributes = (
- ("public_ip", None),
- ("public_mac", None),
- ("address_pool_id", None),
- )
+ public_ip = StrippedCharField(max_length = 30, null=True, blank=True)
+ public_mac = StrippedCharField(max_length = 30, null=True, blank=True)
+ address_pool = models.ForeignKey(AddressPool, related_name='vrouter_tenants', blank=True, null=True)
@property
def gateway_ip(self):
@@ -150,30 +115,9 @@
return int(parts[1].strip())
return None
- @property
- def address_pool(self):
- if getattr(self, "cached_address_pool", None):
- return self.cached_address_pool
- if not self.address_pool_id:
- return None
- aps = AddressPool.objects.filter(id=self.address_pool_id)
- if not aps:
- return None
- ap = aps[0]
- self.cached_address_pool = ap
- return ap
-
- @address_pool.setter
- def address_pool(self, value):
- if value:
- value = value.id
- if (value != self.get_attribute("address_pool_id", None)):
- self.cached_address_pool = None
- self.set_attribute("address_pool_id", value)
-
def cleanup_addresspool(self):
- if self.address_pool_id:
- ap = AddressPool.objects.filter(id=self.address_pool_id)
+ if self.address_pool:
+ ap = self.address_pool
if ap:
ap[0].put_address(self.public_ip)
self.public_ip = None
@@ -182,8 +126,6 @@
self.cleanup_addresspool()
super(VRouterTenant, self).delete(*args, **kwargs)
-VRouterTenant.setup_simple_attributes()
-
# DEVICES
class VRouterDevice(PlCoreBase):