Revision 244c552b snf-app/synnefo/db/models.py

b/snf-app/synnefo/db/models.py
1
# Copyright 2011 GRNET S.A. All rights reserved.
1
# Copyright 2011-2012 GRNET S.A. All rights reserved.
2 2
#
3 3
# Redistribution and use in source and binary forms, with or without
4 4
# modification, are permitted provided that the following conditions
......
33 33
from django.db import models
34 34

  
35 35

  
36
class SynnefoUser(models.Model):
37
    #TODO: Amend this when we have groups
38
    ACCOUNT_TYPE = (
39
        ('STUDENT', 'Student'),
40
        ('PROFESSOR', 'Professor'),
41
        ('USER', 'Generic User'),
42
        ('HELPDESK', 'Helpdesk User'),
43
        ('ADMIN', 'Admin User')
44
    )
45
    
46
    ACCOUNT_STATE = (
47
        ('ACTIVE', 'Active'),
48
        ('DELETED', 'Deleted'),
49
        ('SUSPENDED', 'Suspended')
50
    )
51
    
52
    name = models.CharField('Synnefo Username', max_length=255, default='')
53
    realname = models.CharField('Real Name', max_length=255, default='')
54
    uniq = models.CharField('External Unique ID', max_length=255,null=True)
55
    auth_token = models.CharField('Authentication Token', max_length=32,
56
            null=True)
57
    auth_token_created = models.DateTimeField('Time of auth token creation',
58
            auto_now_add=True, null=True)
59
    auth_token_expires = models.DateTimeField('Time of auth token expiration',
60
            auto_now_add=True, null=True)
61
    tmp_auth_token = models.CharField('Temporary authentication token',
62
            max_length=32, null=True)
63
    tmp_auth_token_expires = models.DateTimeField('Time of temporary auth '
64
            'token expiration', auto_now_add=True, null=True)
65
    type = models.CharField('Account type', choices=ACCOUNT_TYPE,
66
            max_length=30)
67
    state = models.CharField('Account state', choices=ACCOUNT_STATE,
68
            max_length=30, default='ACTIVE')
69
    created = models.DateTimeField('Time of creation', auto_now_add=True)
70
    updated = models.DateTimeField('Time of last update', auto_now=True)
71
    
72
    def __unicode__(self):
73
        return self.name
74

  
75

  
76 36
class Image(models.Model):
77 37
    IMAGE_STATES = (
78 38
        ('ACTIVE', 'Active'),
......
92 52

  
93 53
    name = models.CharField('Image name', max_length=255)
94 54
    state = models.CharField('Current Image State', choices=IMAGE_STATES,
95
            max_length=30)
96
    owner = models.ForeignKey(SynnefoUser, blank=True, null=True)
55
                             max_length=30)
56
    userid = models.CharField('User ID of the owner', max_length=100, 
57
                              null=True)
97 58
    created = models.DateTimeField('Time of creation', auto_now_add=True)
98 59
    updated = models.DateTimeField('Time of last update', auto_now=True)
99 60
    sourcevm = models.ForeignKey('VirtualMachine', null=True)
......
226 187
    }
227 188

  
228 189
    name = models.CharField('Virtual Machine Name', max_length=255)
229
    owner = models.ForeignKey(SynnefoUser)
190
    userid = models.CharField('User ID of the owner', max_length=100)
230 191
    created = models.DateTimeField(auto_now_add=True)
231 192
    updated = models.DateTimeField(auto_now=True)
232 193
    charged = models.DateTimeField(default=datetime.datetime.now())
......
235 196
    flavor = models.ForeignKey(Flavor)
236 197
    deleted = models.BooleanField('Deleted', default=False)
237 198
    suspended = models.BooleanField('Administratively Suspended',
238
            default=False)
199
                                    default=False)
239 200

  
240 201
    # VM State 
241 202
    # The following fields are volatile data, in the sense
......
324 285
        return u'%s: %s' % (self.meta_key, self.meta_value)
325 286

  
326 287

  
327
class Disk(models.Model):
328
    name = models.CharField(max_length=255)
329
    created = models.DateTimeField('Time of creation', auto_now_add=True)
330
    updated = models.DateTimeField('Time of last update', auto_now=True)
331
    size = models.PositiveIntegerField('Disk size in GBs')
332
    vm = models.ForeignKey(VirtualMachine, blank=True, null=True)
333
    owner = models.ForeignKey(SynnefoUser, blank=True, null=True)  
334

  
335
    class Meta:
336
        verbose_name = u'Disk instance'
337

  
338
    def __unicode__(self):
339
        return self.name
340

  
341

  
342 288
class Network(models.Model):
343 289
    NETWORK_STATES = (
344 290
        ('ACTIVE', 'Active'),
......
348 294
    name = models.CharField(max_length=255)
349 295
    created = models.DateTimeField(auto_now_add=True)
350 296
    updated = models.DateTimeField(auto_now=True)
351
    owner = models.ForeignKey(SynnefoUser, null=True)
297
    userid = models.CharField('User ID of the owner', max_length=100,
298
                              null=True)
352 299
    state = models.CharField(choices=NETWORK_STATES, max_length=30)
353 300
    public = models.BooleanField(default=False)
354 301
    link = models.ForeignKey('NetworkLink', related_name='+')
355 302
    machines = models.ManyToManyField(VirtualMachine,
356
            through='NetworkInterface')
303
                                      through='NetworkInterface')
357 304
    
358 305
    def __unicode__(self):
359 306
        return self.name
......
375 322
    ipv4 = models.CharField(max_length=15, null=True)
376 323
    ipv6 = models.CharField(max_length=100, null=True)
377 324
    firewall_profile = models.CharField(choices=FIREWALL_PROFILES,
378
            max_length=30, null=True)
325
                                        max_length=30, null=True)
379 326
    
380 327
    def __unicode__(self):
381 328
        return '%s@%s' % (self.machine.name, self.network.name)

Also available in: Unified diff