blob: 291ffe8ee6a77c09b6d54675bce86edddbb1992e [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 Slice
5from plstackapi.openstack.driver import OpenStackDriver
6
7# Create your models here.
8
9class Subnet(PlCoreBase):
10 subnet_id = models.CharField(max_length=256, unique=True)
11 cidr = models.CharField(max_length=20)
12 ip_version = models.IntegerField()
13 start = models.IPAddressField()
14 end = models.IPAddressField()
15 slice = models.ForeignKey(Slice, related_name='slice_subnet')
16
17 def __unicode__(self): return u'%s' % (self.name)
18
19 def save(self, *args, **kwargs):
20 driver = OpenStackDriver()
21 if not self.id:
22 subnet = driver.create_subnet(network_name=self.slice.name,
23 cidr_ip = self.cidr,
24 ip_version=self.ip_version,
25 start = self.start,
26 end = self.end)
27
28 self.subnet_id = subnet.id
29
30 # add subnet as interface to slice router
31 driver.add_router_interface(self.slice.router_id, subnet.id)
32
33 super(Subnet, self).save(*args, **kwargs)
34
35
36 def delete(self, *args, **kwargs):
37 # delete quantum network
38 driver = OpenStackDriver()
39 driver.delete_subnet(self.subnet_id)
40 driver.delete_router_interface(self.slice.router_id, self.subnet.id)
41 super(Subnet, self).delete(*args, **kwargs)