update Sliver admin
diff --git a/plstackapi/core/models/key.py b/plstackapi/core/models/key.py
index 080f211..5174ebb 100644
--- a/plstackapi/core/models/key.py
+++ b/plstackapi/core/models/key.py
@@ -8,7 +8,7 @@
class Key(PlCoreBase):
name = models.CharField(max_length=256, unique=True)
- key_id = models.CharField(max_length=256, unique=True, blank=True)
+ key_id = models.CharField(max_length=256, unique=True)
key = models.CharField(max_length=512)
type = models.CharField(max_length=256)
blacklisted = models.BooleanField(default=False)
diff --git a/plstackapi/core/models/role.py b/plstackapi/core/models/role.py
index 3efa7a1..4b4b2e4 100644
--- a/plstackapi/core/models/role.py
+++ b/plstackapi/core/models/role.py
@@ -9,14 +9,13 @@
class Role(PlCoreBase):
#ROLE_CHOICES = (('admin', 'Admin'), ('pi', 'Principle Investigator'), ('user','User'))
- role_id = models.CharField(max_length=256, unique=True, blank=True)
+ role_id = models.CharField(max_length=256, unique=True)
role_type = models.CharField(max_length=80, unique=True)
def __unicode__(self): return u'%s' % (self.role_type)
def save(self, *args, **kwds):
-
driver = OpenStackDriver()
if not self.role_id:
keystone_role = driver.create_role(name=self.role_type)
diff --git a/plstackapi/core/models/site.py b/plstackapi/core/models/site.py
index 2148e48..67257af 100644
--- a/plstackapi/core/models/site.py
+++ b/plstackapi/core/models/site.py
@@ -9,7 +9,7 @@
class Site(PlCoreBase):
- tenant_id = models.CharField(max_length=200, help_text="Keystone tenant id", blank=True)
+ tenant_id = models.CharField(max_length=200, help_text="Keystone tenant id")
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")
diff --git a/plstackapi/core/models/slice.py b/plstackapi/core/models/slice.py
index b080924..fe16402 100644
--- a/plstackapi/core/models/slice.py
+++ b/plstackapi/core/models/slice.py
@@ -10,7 +10,7 @@
# Create your models here.
class Slice(PlCoreBase):
- tenant_id = models.CharField(max_length=200, help_text="Keystone tenant id", blank=True)
+ tenant_id = models.CharField(max_length=200, help_text="Keystone tenant id")
name = models.CharField(unique=True, help_text="The Name of the Slice", max_length=80)
enabled = models.BooleanField(default=True, help_text="Status for this Slice")
SLICE_CHOICES = (('plc', 'PLC'), ('delegated', 'Delegated'), ('controller','Controller'), ('none','None'))
diff --git a/plstackapi/core/models/sliver.py b/plstackapi/core/models/sliver.py
index 1c4065f..27dda65 100644
--- a/plstackapi/core/models/sliver.py
+++ b/plstackapi/core/models/sliver.py
@@ -19,8 +19,26 @@
key = models.ForeignKey(Key, related_name='slivers')
slice = models.ForeignKey(Slice, related_name='slivers')
node = models.ForeignKey(Node, related_name='slivers')
- site = models.ForeignKey(Site, related_name='slivers')
+ #site = models.ForeignKey(Site, related_name='slivers')
deploymentNetwork = models.ForeignKey(DeploymentNetwork, related_name='sliver_deploymentNetwork')
def __unicode__(self): return u'%s::%s' % (self.slice, self.deploymentNetwork)
+ def save(self, *args, **kwds):
+ driver = OpenStackDriver()
+ if not self.instance_id:
+ 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
+
+ super(Sliver, self).save(*args, **kwds)
+
+ def delete(self, *args, **kwds):
+ driver = OpenStackDriver()
+ if self.instance_id:
+ driver.destroy_instance(self.instance_id)
+
+ super(Sliver, self).delete(*args, **kwds)
diff --git a/plstackapi/core/models/subnet.py b/plstackapi/core/models/subnet.py
index ae25b63..93a7ba5 100644
--- a/plstackapi/core/models/subnet.py
+++ b/plstackapi/core/models/subnet.py
@@ -8,7 +8,7 @@
# Create your models here.
class Subnet(PlCoreBase):
- subnet_id = models.CharField(max_length=256, unique=True, blank=True)
+ subnet_id = models.CharField(max_length=256, unique=True)
cidr = models.CharField(max_length=20)
ip_version = models.IntegerField()
start = models.IPAddressField()
diff --git a/plstackapi/core/models/user.py b/plstackapi/core/models/user.py
index c21601c..30bd2a9 100644
--- a/plstackapi/core/models/user.py
+++ b/plstackapi/core/models/user.py
@@ -9,7 +9,7 @@
# Create your models here.
class User(PlCoreBase):
- user_id = models.CharField(max_length=256, unique=True, blank=True)
+ user_id = models.CharField(max_length=256, unique=True)
firstname = models.CharField(help_text="person's given name", max_length=200)
lastname = models.CharField(help_text="person's surname", max_length=200)
email = models.EmailField(help_text="e-mail address", null=True)