create OSModelAdmin. Update some Admin definitions to subclass OSModelAdmin
[plstackapi.git] / plstackapi / core / models / subnet.py
1 import os
2 import commands    
3 from django.db import models
4 from plstackapi.core.models import PlCoreBase
5 from plstackapi.core.models import Slice
6
7 # Create your models here.
8
9 class 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='subnet')
16
17     def __unicode__(self):  return u'%s' % (self.slice.name)
18
19     def save(self, *args, **kwds):
20         if not self.subnet_id:
21             quantum_subnet = self.driver.create_subnet(name= self.slice.name,
22                                           network_id=self.slice.network_id,
23                                           cidr_ip = self.cidr,
24                                           ip_version=self.ip_version,
25                                           start = self.start,
26                                           end = self.end)
27             self.subnet_id = quantum_subnet['id']
28             # add subnet as interface to slice's router
29             self.driver.add_router_interface(self.slice.router_id, self.subnet_id)
30             #add_route = 'route add -net %s dev br-ex gw 10.100.0.5' % self.cidr
31             #commands.getstatusoutput(add_route)
32
33         super(Subnet, self).save(*args, **kwds)
34
35     def delete(self, *args, **kwds):
36         if self.subnet_id:
37             self.driver.delete_router_interface(self.slice.router_id, self.subnet_id) 
38             self.driver.delete_subnet(self.subnet_id)
39             #del_route = 'route del -net %s' % self.cidr 
40             #commands.getstatusoutput(del_route)
41         super(Subnet, self).delete(*args, **kwds)