Revision 5ce3ce4f snf-astakos-app/astakos/im/migrations/0017_populate_resource_data.py

b/snf-astakos-app/astakos/im/migrations/0017_populate_resource_data.py
3 3
from south.v2 import DataMigration
4 4

  
5 5
d = {
6
        'cyclades' : { 'vm' : 2 },
7
        'pithos+': {'diskspace' : 10  } 
8
    }
6
    'cyclades': {'vm': 2},
7
    'pithos+': {'diskspace': 10}
8
}
9

  
10

  
9 11
class Migration(DataMigration):
10 12

  
11 13
    def forwards(self, orm):
12 14
        "Write your forwards methods here."
13
        
15

  
14 16
        try:
15 17
            default = orm.AstakosGroup.objects.get(name='default')
16 18
        except orm.AstakosGroup.DoesNotExist:
17 19
            return
18
        
20

  
19 21
        def create_policies(args):
20 22
            sn, policy = args
21
            s, created = orm.Service.objects.get_or_create(name = sn)
22
            
23
            s, created = orm.Service.objects.get_or_create(name=sn)
24

  
23 25
            for rn, l in policy.iteritems():
24 26
                try:
25 27
                    r, created = orm.Resource.objects.get_or_create(
26
                        service = s,
27
                        name = rn
28
                        service=s,
29
                        name=rn
28 30
                    )
29 31
                except Exception, e:
30 32
                    print "Cannot create policy ", policy
31 33
                    continue
32
                
34

  
33 35
                q, created = orm.AstakosGroupQuota.objects.get_or_create(
34
                    group = default,
35
                    resource = r,
36
                    limit = l
36
                    group=default,
37
                    resource=r,
38
                    limit=l
37 39
                )
38 40
        map(create_policies, d.iteritems())
39
            
41

  
40 42
    def backwards(self, orm):
41 43
        try:
42 44
            default = orm.AstakosGroup.objects.get(name='default')
43 45
        except orm.AstakosGroup.DoesNotExist:
44 46
            return
45
        
47

  
46 48
        def destroy_policies(args):
47 49
            sn, policy = args
48 50
            for rn, l in policy.iteritems():
......
54 56
                    if q.limit == l:
55 57
                        q.delete()
56 58
                except orm.AstakosGroupQuota.DoesNotExist:
57
                    return
58
                
59
                    continue
60

  
59 61
        map(destroy_policies, d.iteritems())
60
    
62

  
61 63
    models = {
62 64
        'auth.group': {
63 65
            'Meta': {'object_name': 'Group'},

Also available in: Unified diff