update Site admin
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Sun, 14 Apr 2013 17:51:19 +0000 (13:51 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Sun, 14 Apr 2013 17:51:19 +0000 (13:51 -0400)
plstackapi/core/models/site.py

index a2903f9..2148e48 100644 (file)
@@ -2,7 +2,6 @@ import os
 from django.db import models
 from plstackapi.core.models import PlCoreBase
 from plstackapi.core.models import DeploymentNetwork
-
 from plstackapi.openstack.driver import OpenStackDriver
 
 # Create your models here.
@@ -10,7 +9,7 @@ from plstackapi.openstack.driver import OpenStackDriver
 
 class Site(PlCoreBase):
 
-    tenant_id = models.CharField(max_length=200, help_text="Keystone tenant id")
+    tenant_id = models.CharField(max_length=200, help_text="Keystone tenant id", blank=True)
     name = models.CharField(max_length=200, help_text="Name for this Site")
     site_url = models.URLField(null=True, blank=True, max_length=512, help_text="Site's Home URL Page")
     enabled = models.BooleanField(default=True, help_text="Status for this Site")
@@ -24,6 +23,30 @@ class Site(PlCoreBase):
 
     def __unicode__(self):  return u'%s' % (self.name)
 
+    def save(self, *args, **kwds):
+        driver  = OpenStackDriver()
+        if not self.tenant_id:
+            tenant = driver.create_tenant(tenant_name=self.login_base, 
+                                          description=self.name, 
+                                          enabled=self.enabled)
+            self.tenant_id = tenant.id
+        # update the record
+        if self.id:
+            driver.update_tenant(self.tenant_id, 
+                                 name=self.login_base,
+                                 description=self.name,
+                                 enabled=self.enabled)
+
+        super(Site, self).save(*args, **kwds)               
+
+
+    def delete(self, *args, **kwds):
+        driver = OpenStackDriver()
+        if self.tenant_id:
+            driver.delete_tenant(self.tenant_id)
+        super(Site, self).delete(*args, **kwds)         
+        
+
 class SitePrivilege(PlCoreBase):
 
     user = models.ForeignKey('User', related_name='site_privileges')