1 | from django.db import models
|
---|
2 | from django.db.models import Q
|
---|
3 |
|
---|
4 | # Create your models here.
|
---|
5 |
|
---|
6 | MODE_CHOICES = (
|
---|
7 | ('master', 'master'),
|
---|
8 | ('managed','managed'),
|
---|
9 | )
|
---|
10 |
|
---|
11 | PORT_CHOICES = (
|
---|
12 | ('vr0','vr0'),
|
---|
13 | ('vr1','vr1'),
|
---|
14 | ('vr2','vr2'),
|
---|
15 | ('ue0','ue0'),
|
---|
16 | ('ue1','ue1'),
|
---|
17 | ('sis0','sis0'),
|
---|
18 | ('sis1','sis1'),
|
---|
19 | )
|
---|
20 |
|
---|
21 | MODEL_CHOICES = (
|
---|
22 | ('Ethernet', 'Ethernet'),
|
---|
23 | ('Bullet2', 'NanoStation2'),
|
---|
24 | ('NanoStation2', 'NanoStation2'),
|
---|
25 | ('NanoStationM2', 'NanoStationM2'),
|
---|
26 | ('NanoStation5', 'NanoStation5'),
|
---|
27 | ('NanoStationM5', 'NanoStationM5'),
|
---|
28 | )
|
---|
29 |
|
---|
30 | NETMASK_CHOICES = zip(range(12,31),range(12,31))
|
---|
31 | class IPBlock(models.Model):
|
---|
32 | network = models.IPAddressField(default="172.16.",unique=True)
|
---|
33 | netmask = models.IntegerField(choices=NETMASK_CHOICES,default=29)
|
---|
34 | def __unicode__(self):
|
---|
35 | return "%s/%s" % (self.network, self.netmask)
|
---|
36 |
|
---|
37 | DEFAULT_IPBLOCK = lambda: IPBlock.objects.get_or_create(network='0.0.0.0',netmask=0)[0].id
|
---|
38 |
|
---|
39 | class Node(models.Model):
|
---|
40 | name = models.CharField(max_length="100")
|
---|
41 | def __unicode__(self):
|
---|
42 | return self.name
|
---|
43 |
|
---|
44 |
|
---|
45 | class Interface(models.Model):
|
---|
46 | node = models.ForeignKey(Node)
|
---|
47 | port = models.CharField(max_length="100", choices=PORT_CHOICES, default="vr0")
|
---|
48 | model = models.CharField(max_length="100", choices=MODEL_CHOICES, default="Ethernet")
|
---|
49 | mode = models.CharField(max_length="100", choices=MODE_CHOICES, default="master")
|
---|
50 | def __unicode__(self):
|
---|
51 | return "%s - %s - %s - %s" % (self.node, self.port, self.model, self.mode)
|
---|
52 |
|
---|
53 | class Link(models.Model):
|
---|
54 | ip_block = models.ForeignKey(IPBlock,unique=True,default=DEFAULT_IPBLOCK)
|
---|
55 | interfaces = models.ManyToManyField(Interface)
|
---|
56 | def __unicode__(self):
|
---|
57 | return "%s : %s" % (self.ip_block, '|'.join(map(str,self.interfaces.all())))
|
---|
58 |
|
---|
59 |
|
---|