Revision 6ef51e9f snf-app/synnefo/db/models.py
b/snf-app/synnefo/db/models.py | ||
---|---|---|
27 | 27 |
# those of the authors and should not be interpreted as representing official |
28 | 28 |
# policies, either expressed or implied, of GRNET S.A. |
29 | 29 |
|
30 |
import datetime |
|
31 |
|
|
32 | 30 |
from django.conf import settings |
33 | 31 |
from django.db import models |
34 | 32 |
|
35 | 33 |
|
36 |
class Image(models.Model): |
|
37 |
IMAGE_STATES = ( |
|
38 |
('ACTIVE', 'Active'), |
|
39 |
('SAVING', 'Saving'), |
|
40 |
('DELETED', 'Deleted') |
|
41 |
) |
|
42 |
|
|
43 |
# The list of supported Image formats |
|
44 |
FORMATS = ( |
|
45 |
('dump', 'ext3 dump'), |
|
46 |
('extdump', 'Raw ext2/3/4 dump'), |
|
47 |
('lvm', 'lvm snapshot'), |
|
48 |
('ntfsclone', 'Windows Image produced by ntfsclone'), |
|
49 |
('ntfsdump', 'Raw NTFS dump'), |
|
50 |
('diskdump', 'Raw dump of a hard disk') |
|
51 |
) |
|
52 |
|
|
53 |
name = models.CharField('Image name', max_length=255) |
|
54 |
state = models.CharField('Current Image State', choices=IMAGE_STATES, |
|
55 |
max_length=30) |
|
56 |
userid = models.CharField('User ID of the owner', max_length=100, |
|
57 |
null=True) |
|
58 |
created = models.DateTimeField('Time of creation', auto_now_add=True) |
|
59 |
updated = models.DateTimeField('Time of last update', auto_now=True) |
|
60 |
sourcevm = models.ForeignKey('VirtualMachine', null=True) |
|
61 |
backend_id = models.CharField(max_length=50, default='debian_base') |
|
62 |
format = models.CharField(choices=FORMATS, max_length=30, default='dump') |
|
63 |
public = models.BooleanField(default=False) |
|
64 |
|
|
65 |
def __unicode__(self): |
|
66 |
return self.name |
|
67 |
|
|
68 |
|
|
69 |
class ImageMetadata(models.Model): |
|
70 |
meta_key = models.CharField('Image metadata key name', max_length=50) |
|
71 |
meta_value = models.CharField('Image metadata value', max_length=500) |
|
72 |
image = models.ForeignKey(Image, related_name='metadata') |
|
73 |
|
|
74 |
class Meta: |
|
75 |
unique_together = (('meta_key', 'image'),) |
|
76 |
verbose_name = u'Key-value pair of Image metadata.' |
|
77 |
|
|
78 |
def __unicode__(self): |
|
79 |
return u'%s: %s' % (self.meta_key, self.meta_value) |
|
80 |
|
|
81 |
|
|
82 | 34 |
class Flavor(models.Model): |
83 | 35 |
cpu = models.IntegerField('Number of CPUs', default=0) |
84 | 36 |
ram = models.IntegerField('RAM size in MiB', default=0) |
... | ... | |
190 | 142 |
userid = models.CharField('User ID of the owner', max_length=100) |
191 | 143 |
created = models.DateTimeField(auto_now_add=True) |
192 | 144 |
updated = models.DateTimeField(auto_now=True) |
193 |
charged = models.DateTimeField(default=datetime.datetime.now()) |
|
194 | 145 |
imageid = models.CharField(max_length=100, null=False) |
195 | 146 |
hostid = models.CharField(max_length=100) |
196 | 147 |
flavor = models.ForeignKey(Flavor) |
Also available in: Unified diff