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