1 | # -*- coding: utf-8 -*- |
---|
2 | from datetime import datetime |
---|
3 | |
---|
4 | db.define_table('pre_reserves', |
---|
5 | Field('lab_id', 'integer', required = True, readable = False), |
---|
6 | Field('ou_id', required=True, readable = False), |
---|
7 | Field('lab_name', required = True), |
---|
8 | Field('image_id', required=True, readable = False), |
---|
9 | Field('image_name', required=True), |
---|
10 | Field('protocol', 'reference services', required=True, |
---|
11 | requires = IS_IN_DB(db, db.services.id, '%(name)s', zero=None), |
---|
12 | represent=lambda id, result: db.services[id].name |
---|
13 | ), |
---|
14 | Field('init_time', 'datetime', required=True, widget=SQLFORM.widgets.string.widget), |
---|
15 | Field('finish_time', 'datetime', required=True, widget=SQLFORM.widgets.string.widget), |
---|
16 | Field('last_decreased_time', 'datetime', readable=False, writable=False), |
---|
17 | Field('attempted_boots', 'integer', required=True, default=0, readable=False, writable=False), |
---|
18 | Field('num_reserves', 'integer', required=True, label="Hosts en espera") |
---|
19 | ) |
---|
20 | |
---|
21 | |
---|
22 | def set_last_decreased(row, id): |
---|
23 | db(db.pre_reserves.id == id).update(last_decreased_time=datetime.now()) |
---|
24 | |
---|
25 | db.pre_reserves._after_insert.append(lambda row, id: set_last_decreased(row, id)) |
---|
26 | |
---|
27 | db.define_table('reserves', |
---|
28 | Field('user_id', 'reference auth_user', required=True, |
---|
29 | requires = IS_IN_DB(db, db.auth_user.id, '%(first_name)s'), |
---|
30 | represent=lambda id, result: db.auth_user[id].first_name + " " + |
---|
31 | db.auth_user[id].last_name |
---|
32 | ), |
---|
33 | Field('ou_id', required=True), |
---|
34 | Field('lab_id', required=True), |
---|
35 | Field('pc_id', required=True), |
---|
36 | Field('pc_name', required=True), |
---|
37 | Field('image_id', required=True), |
---|
38 | Field('expiration_time', 'datetime', required=True), |
---|
39 | Field('ip', required=True, unique=True), |
---|
40 | Field('mac', required=True, unique=True), |
---|
41 | Field('protocol', required=True), |
---|
42 | Field('port', required=True), |
---|
43 | Field('is_running', 'boolean', default=False), |
---|
44 | Field('is_assigned', 'boolean', default=True), |
---|
45 | Field('prereserve_id', 'reference pre_reserves', default=None), |
---|
46 | Field('assigned_init_time', 'datetime'), |
---|
47 | Field('reserved_init_time', 'datetime', required=True), |
---|
48 | ) |
---|
49 | |
---|
50 | # Remove all expired reserves |
---|
51 | #db(db.reserves.expiration_time < datetime.now()).delete() |
---|
52 | |
---|
53 | rs = db(db.reserves.expiration_time < datetime.now()).select() |
---|
54 | for r in rs: |
---|
55 | if r['prereserve_id'] == None: |
---|
56 | r.delete_record() |
---|