Added support for Generic Tags. Tags can be applied to Node, Site, Slice, Sliver...
[plstackapi.git] / planetstack / core / models / sliver.py
index 03fa1d8..44a6af1 100644 (file)
@@ -3,11 +3,13 @@ from django.db import models
 from django.core import exceptions
 from core.models import PlCoreBase
 from core.models import Image
 from django.core import exceptions
 from core.models import PlCoreBase
 from core.models import Image
-from core.models import Key
 from core.models import Slice
 from core.models import Node
 from core.models import Site
 from core.models import Deployment
 from core.models import Slice
 from core.models import Node
 from core.models import Site
 from core.models import Deployment
+from core.models import User
+from core.models import Tag
+from django.contrib.contenttypes import generic
 
 # Create your models here.
 class Sliver(PlCoreBase):
 
 # Create your models here.
 class Sliver(PlCoreBase):
@@ -16,27 +18,19 @@ class Sliver(PlCoreBase):
     instance_name = models.CharField(blank=True, null=True, max_length=200, help_text="OpenStack generated name")
     ip = models.GenericIPAddressField(help_text="Sliver ip address", blank=True, null=True)
     image = models.ForeignKey(Image, related_name='slivers')
     instance_name = models.CharField(blank=True, null=True, max_length=200, help_text="OpenStack generated name")
     ip = models.GenericIPAddressField(help_text="Sliver ip address", blank=True, null=True)
     image = models.ForeignKey(Image, related_name='slivers')
-    key = models.ForeignKey(Key, related_name='slivers')
+    #key = models.ForeignKey(Key, related_name='slivers')
+    creator = models.ForeignKey(User, related_name='slivers', blank=True, null=True)
     slice = models.ForeignKey(Slice, related_name='slivers')
     node = models.ForeignKey(Node, related_name='slivers')
     deploymentNetwork = models.ForeignKey(Deployment, verbose_name='deployment', related_name='sliver_deploymentNetwork')
     numberCores = models.IntegerField(verbose_name="Number of Cores", help_text="Number of cores for sliver", default=0)
     slice = models.ForeignKey(Slice, related_name='slivers')
     node = models.ForeignKey(Node, related_name='slivers')
     deploymentNetwork = models.ForeignKey(Deployment, verbose_name='deployment', related_name='sliver_deploymentNetwork')
     numberCores = models.IntegerField(verbose_name="Number of Cores", help_text="Number of cores for sliver", default=0)
-
+    tags = generic.GenericRelation(Tag)
 
     def __unicode__(self):  return u'%s' % (self.instance_name)
 
     def save(self, *args, **kwds):
         if not self.name:
             self.name = self.slice.name
 
     def __unicode__(self):  return u'%s' % (self.instance_name)
 
     def save(self, *args, **kwds):
         if not self.name:
             self.name = self.slice.name
-        if not hasattr(self, 'os_manager'):
-            from openstack.manager import OpenStackManager
-            setattr(self, 'os_manager', OpenStackManager())
-        self.os_manager.save_sliver(self)
+        if not self.creator and hasattr(self, 'caller'):
+            self.creator = self.caller
         super(Sliver, self).save(*args, **kwds)
         super(Sliver, self).save(*args, **kwds)
-
-    def delete(self, *args, **kwds):
-        if not hasattr(self, 'os_manager'):
-            from openstack.manager import OpenStackManager
-            setattr(self, 'os_manager', OpenStackManager())
-        self.os_manager.delete_sliver(self)
-        super(Sliver, self).delete(*args, **kwds)