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