Revision be7b8d37 db/models.py
b/db/models.py | ||
---|---|---|
2 | 2 |
|
3 | 3 |
from django.db import models |
4 | 4 |
from django.contrib.auth.models import User |
5 |
import synnefo.vocabs
|
|
5 |
import vocabs |
|
6 | 6 |
|
7 | 7 |
class Limit(models.Model): |
8 | 8 |
description = models.CharField(max_length=45) |
9 |
|
|
10 |
class Meta:
|
|
11 |
verbose_name = u'Available limits for users'
|
|
12 |
|
|
9 |
|
|
10 |
class Meta:
|
|
11 |
verbose_name = u'Available limits for users'
|
|
12 |
|
|
13 | 13 |
def __unicode__(self): |
14 | 14 |
return self.description |
15 | 15 |
|
... | ... | |
20 | 20 |
quota = models.IntegerField() |
21 | 21 |
created = models.DateField() |
22 | 22 |
monthly_rate = models.IntegerField() |
23 |
user = models.ForeignKey(User, unique=True)
|
|
23 |
user = models.ForeignKey(User, unique=True) |
|
24 | 24 |
limits = models.ManyToManyField(Limit, through='UserLimit') |
25 |
|
|
26 |
class Meta:
|
|
27 |
verbose_name = u'Ocean User'
|
|
28 |
|
|
25 |
|
|
26 |
class Meta:
|
|
27 |
verbose_name = u'Ocean User'
|
|
28 |
|
|
29 | 29 |
def __unicode__(self): |
30 | 30 |
return self.name |
31 | 31 |
|
... | ... | |
34 | 34 |
user = models.ForeignKey(OceanUser) |
35 | 35 |
limit = models.ForeignKey(Limit) |
36 | 36 |
value = models.IntegerField() |
37 |
|
|
37 |
|
|
38 | 38 |
class Meta: |
39 | 39 |
unique_together = ('user', 'limit') |
40 |
verbose_name = u'Enforced limits for each user'
|
|
41 |
|
|
40 |
verbose_name = u'Enforced limits for each user'
|
|
41 |
|
|
42 | 42 |
def __unicode__(self): |
43 | 43 |
return u'Limit %s for user %s: %d' % (self.limit, self.user, self.value) |
44 | 44 |
|
45 | 45 |
|
46 | 46 |
class Flavor(models.Model): |
47 |
name = property(_get_name) |
|
48 |
cpu = models.IntegerField(default=0) |
|
49 |
ram = models.IntegerField(default=0) |
|
50 |
disk = models.IntegerField(default=0) |
|
47 |
cpu = models.IntegerField(default=0) |
|
48 |
ram = models.IntegerField(default=0) |
|
49 |
disk = models.IntegerField(default=0) |
|
51 | 50 |
cost_active = models.PositiveIntegerField() |
52 | 51 |
cost_inactive = models.PositiveIntegerField() |
52 |
|
|
53 |
class Meta: |
|
54 |
verbose_name = u'Virtual Machine flavors' |
|
55 |
|
|
56 |
def _get_name(self): |
|
57 |
return u'c%dr%dd%d' % ( self.cpu, self.ram, self.disk ) |
|
53 | 58 |
|
54 |
class Meta: |
|
55 |
verbose_name = u'Virtual Machine flavors' |
|
56 |
|
|
57 |
def _get_name(self): |
|
58 |
return u'c%dr%dd%d' % ( cpu, ram, disk ) |
|
59 |
name = property(_get_name) |
|
59 | 60 |
|
60 | 61 |
def __unicode__(self): |
61 | 62 |
return self.name |
... | ... | |
64 | 65 |
class VirtualMachine(models.Model): |
65 | 66 |
name = models.CharField(max_length=255) |
66 | 67 |
created = models.DateTimeField() |
67 |
state = models.CharField(choices=vocabs.STATES, default=0)
|
|
68 |
started = models.DateTimeField()
|
|
68 |
state = models.CharField(choices=vocabs.STATES, max_length=30)
|
|
69 |
charged = models.DateTimeField()
|
|
69 | 70 |
imageid = models.IntegerField() |
70 | 71 |
hostid = models.CharField(max_length=100) |
71 | 72 |
server_label = models.CharField(max_length=100) |
72 | 73 |
image_version = models.CharField(max_length=100) |
73 |
ipfour = models.IPAddressField()
|
|
74 |
ipsix = models.CharField(max_length=100)
|
|
74 |
ipfour = models.IPAddressField()
|
|
75 |
ipsix = models.CharField(max_length=100)
|
|
75 | 76 |
owner = models.ForeignKey(OceanUser) |
76 | 77 |
flavor = models.ForeignKey(Flavor) |
77 |
|
|
78 |
|
|
78 | 79 |
class Meta: |
79 | 80 |
verbose_name = u'Virtual machine instances' |
80 | 81 |
get_latest_by = 'created' |
81 |
|
|
82 |
|
|
82 | 83 |
def __unicode__(self): |
83 | 84 |
return self.name |
84 | 85 |
|
85 | 86 |
|
87 |
class VirtualMachineMetadata(models.Model): |
|
88 |
meta_key = models.CharField(max_length=50) |
|
89 |
meta_value = models.CharField(max_length=500) |
|
90 |
vm = models.ForeignKey(VirtualMachine) |
|
91 |
|
|
92 |
class Meta: |
|
93 |
verbose_name = u'Metadata for virtual machine instances' |
|
94 |
|
|
95 |
def __unicode__(self): |
|
96 |
return u'%s, %s for %s' % ( self.key, self.value, self.vm.name ) |
|
97 |
|
|
98 |
|
|
86 | 99 |
class AccountingLog(models.Model): |
87 | 100 |
vm = models.ForeignKey(VirtualMachine) |
88 | 101 |
date = models.DateTimeField() |
89 |
state = models.CharField(choices=vocabs.STATES, default=0)
|
|
90 |
|
|
102 |
state = models.CharField(choices=vocabs.STATES, max_length=30)
|
|
103 |
|
|
91 | 104 |
class Meta: |
92 | 105 |
verbose_name = u'Charging log' |
106 |
|
|
107 |
def __unicode__(self): |
|
108 |
return u'%s %s %s' % ( self.vm.name, self.date, self.state ) |
Also available in: Unified diff