root / aquarium / models.py @ ab23d6dd
History | View | Annotate | Download (2.6 kB)
1 |
# vim: ts=4 sts=4 et ai sw=4 fileencoding=utf-8
|
---|---|
2 |
|
3 |
from django.db import models |
4 |
from django.contrib.auth.models import User |
5 |
|
6 |
class Limit(models.Model): |
7 |
description = models.CharField(max_length=45)
|
8 |
|
9 |
def __unicode__(self): |
10 |
return self.description |
11 |
|
12 |
class OceanUser(models.Model): |
13 |
name = models.CharField(max_length=255)
|
14 |
credit = models.IntegerField() |
15 |
quota = models.IntegerField() |
16 |
created = models.DateField() |
17 |
monthly_rate = models.IntegerField() |
18 |
user = models.ForeignKey(User, unique=True)
|
19 |
limits = models.ManyToManyField(Limit, through='UserLimit')
|
20 |
|
21 |
def __unicode__(self): |
22 |
return self.name |
23 |
|
24 |
class UserLimit(models.Model): |
25 |
user = models.ForeignKey(OceanUser) |
26 |
limit = models.ForeignKey(Limit) |
27 |
value = models.IntegerField() |
28 |
|
29 |
class Meta: |
30 |
unique_together = ('user', 'limit') |
31 |
|
32 |
def __unicode__(self): |
33 |
return u'Limit %s for user %s: %d' % (self.limit, self.user, self.value) |
34 |
|
35 |
|
36 |
class Flavor(models.Model): |
37 |
name = models.CharField(max_length=255, unique=True) |
38 |
description = models.CharField(max_length=1000)
|
39 |
cost_active = models.PositiveIntegerField() |
40 |
cost_inactive = models.PositiveIntegerField() |
41 |
|
42 |
def __unicode__(self): |
43 |
return self.name |
44 |
|
45 |
class VirtualMachine(models.Model): |
46 |
STATES = ( |
47 |
(0, 'VM_STOPPED'), |
48 |
(1, 'VM_RUNNING'), |
49 |
(2, 'VM_PAUSED'), |
50 |
(3, 'VM_INTERNAL'), |
51 |
# FIXME
|
52 |
) |
53 |
|
54 |
name = models.CharField(max_length=255)
|
55 |
created = models.DateTimeField() |
56 |
state = models.IntegerField(choices=STATES, default=0)
|
57 |
started = models.DateTimeField() |
58 |
vmid = models.IntegerField() |
59 |
imageid = models.IntegerField() |
60 |
hostid = models.CharField(max_length=100)
|
61 |
server_label = models.CharField(max_length=100)
|
62 |
image_version = models.CharField(max_length=100)
|
63 |
owner = models.ForeignKey(OceanUser) |
64 |
flavor = models.ForeignKey(Flavor) |
65 |
|
66 |
class Meta: |
67 |
verbose_name = u'Virtual machine'
|
68 |
get_latest_by = 'created'
|
69 |
|
70 |
def __unicode__(self): |
71 |
return self.name |
72 |
|
73 |
class VirtualMachineAddress(models.Model): |
74 |
ipfour = models.CharField(max_length=15)
|
75 |
ipsix = models.CharField(max_length=100)
|
76 |
public = models.BooleanField() |
77 |
vmachine = models.ForeignKey(VirtualMachine) |
78 |
|
79 |
class Meta: |
80 |
verbose_name = u'Virtual Machine Network Address'
|
81 |
|
82 |
def __unicode__(self): |
83 |
return u'%s address for vm named' % ( self.ipfour, self.vm_id.name ) |
84 |
|
85 |
class ChargingLog(models.Model): |
86 |
vm = models.ForeignKey(VirtualMachine) |
87 |
date = models.DateTimeField() |
88 |
credit = models.IntegerField() |
89 |
message = models.CharField(max_length=1000)
|
90 |
|
91 |
class Meta: |
92 |
verbose_name = u'Charging log'
|