subnets and slivers work when openstack is disable or unavailable
[plstackapi.git] / plstackapi / core / models / sliver.py
index 2eabf23..9a3ca81 100644 (file)
@@ -2,26 +2,26 @@ import os
 from django.db import models
 from django.core import exceptions
 from plstackapi.core.models import PlCoreBase
 from django.db import models
 from django.core import exceptions
 from plstackapi.core.models import PlCoreBase
-from plstackapi.core.models import Flavor
 from plstackapi.core.models import Image
 from plstackapi.core.models import Key
 from plstackapi.core.models import Slice
 from plstackapi.core.models import Node
 from plstackapi.core.models import Site
 from plstackapi.core.models import DeploymentNetwork
 from plstackapi.core.models import Image
 from plstackapi.core.models import Key
 from plstackapi.core.models import Slice
 from plstackapi.core.models import Node
 from plstackapi.core.models import Site
 from plstackapi.core.models import DeploymentNetwork
-from plstackapi.openstack.driver import OpenStackDriver
 
 # Create your models here.
 class Sliver(PlCoreBase):
     instance_id = models.CharField(max_length=200, help_text="Nova instance id")    
     name = models.CharField(max_length=200, help_text="Sliver name")
 
 # Create your models here.
 class Sliver(PlCoreBase):
     instance_id = models.CharField(max_length=200, help_text="Nova instance id")    
     name = models.CharField(max_length=200, help_text="Sliver name")
+    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)
     ip = models.GenericIPAddressField(help_text="Sliver ip address", blank=True, null=True)
-    flavor = models.ForeignKey(Flavor, related_name='slivers')
     image = models.ForeignKey(Image, related_name='slivers')
     key = models.ForeignKey(Key, related_name='slivers')
     slice = models.ForeignKey(Slice, related_name='slivers')
     node = models.ForeignKey(Node, related_name='slivers')
     image = models.ForeignKey(Image, related_name='slivers')
     key = models.ForeignKey(Key, related_name='slivers')
     slice = models.ForeignKey(Slice, related_name='slivers')
     node = models.ForeignKey(Node, related_name='slivers')
-    deploymentNetwork = models.ForeignKey(DeploymentNetwork, related_name='sliver_deploymentNetwork')
+    deploymentNetwork = models.ForeignKey(DeploymentNetwork, verbose_name='deployment', related_name='sliver_deploymentNetwork')
+    numberCores = models.IntegerField(verbose_name="Number of Cores", help_text="Number of cores for sliver", default=2)
+
 
     def __unicode__(self):  return u'%s::%s' % (self.slice, self.deploymentNetwork)
 
 
     def __unicode__(self):  return u'%s::%s' % (self.slice, self.deploymentNetwork)
 
@@ -29,20 +29,9 @@ class Sliver(PlCoreBase):
         if not self.slice.subnet.exists():
             raise exceptions.ValidationError, "Slice %s has no subnet" % self.slice.name
 
         if not self.slice.subnet.exists():
             raise exceptions.ValidationError, "Slice %s has no subnet" % self.slice.name
 
-        if not self.instance_id:
-            driver = OpenStackDriver()
-            instance = driver.spawn_instance(name=self.name,
-                                   key_name = self.key.name,
-                                   flavor_id = self.flavor.flavor_id,
-                                   image_id = self.image.image_id,
-                                   hostname = self.node.name )
-            self.instance_id = instance.id
-
+        self.os_manager.save_sliver(self)
         super(Sliver, self).save(*args, **kwds)
 
     def delete(self, *args, **kwds):
         super(Sliver, self).save(*args, **kwds)
 
     def delete(self, *args, **kwds):
-        driver = OpenStackDriver()
-        if self.instance_id:
-            driver.destroy_instance(self.instance_id)
-
+        self.os_manager.delete_sliver(self)
         super(Sliver, self).delete(*args, **kwds)
         super(Sliver, self).delete(*args, **kwds)