blob: 6f7aabe352afde8895df54d65ecda4070984cddc [file] [log] [blame]
Siobhan Tully4bc09f22013-04-10 21:15:21 -04001import os
2from django.db import models
3from plstackapi.core.models import PlCoreBase
4from plstackapi.core.models import Flavor
5from plstackapi.core.models import Image
6from plstackapi.core.models import Key
7from plstackapi.core.models import Slice
8from plstackapi.core.models import Node
9from plstackapi.core.models import Site
10from plstackapi.core.models import DeploymentNetwork
11from plstackapi.openstack.driver import OpenStackDriver
12
13# Create your models here.
14class Sliver(PlCoreBase):
15 instance_id = models.CharField(max_length=200, help_text="Nova instance id")
16 name = models.CharField(max_length=200, help_text="Sliver name")
17 flavor = models.ForeignKey(Flavor, related_name='sliver_flavor')
18 image = models.ForeignKey(Image, related_name='sliver_image')
19 key = models.ForeignKey(Key, related_name='sliver_key')
20 slice = models.ForeignKey(Slice, related_name='sliver_slice')
21 node = models.ForeignKey(Node, related_name='sliver_node')
22 site = models.ForeignKey(Site, related_name='sliver_site')
23 deploymentNetwork = models.ForeignKey(DeploymentNetwork, related_name='sliver_deploymentNetwork')
24
25 def __unicode__(self): return u'%s::%s' % (self.slice, self.siteDeploymentNetwork)
26
27 def save(self, *args, **kwds):
28 driver = OpenStackDriver()
29 instance = driver.spawn_instances(name=self.name,
30 keyname=self.name,
31 hostnames=self.node.name,
32 flavor=self.flavor.name,
33 image=self.image.name)
34 self.instance_id = instance.id
35 super(Sliver, self).save(*args, **kwds)
36
37 def delete(self, *args, **kwds):
38 driver = OpenStackDriver()
39 driver.destroy_instance(name=self.name, id=self.instance_id)
40 super(Sliver, self).delete(*args, **kwds)
41