Revision 670de92a snf-astakos-app/astakos/im/migrations/0017_populate_resource_data.py

b/snf-astakos-app/astakos/im/migrations/0017_populate_resource_data.py
2 2

  
3 3
from south.v2 import DataMigration
4 4

  
5
d = {
6
    'cyclades': {'vm': 2},
7
    'pithos+': {'diskspace': 50 * 1024 * 1024 * 1024} # 5 GB
8
}
9

  
10

  
11 5
class Migration(DataMigration):
12 6

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

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

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

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

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

  
8
        "Obsolete migration."
9
        return
10
    
42 11
    def backwards(self, orm):
43
        try:
44
            default = orm.AstakosGroup.objects.get(name='default')
45
        except orm.AstakosGroup.DoesNotExist:
46
            return
47

  
48
        def destroy_policies(args):
49
            sn, policy = args
50
            for rn, l in policy.iteritems():
51
                try:
52
                    q = orm.AstakosGroupQuota.objects.get(
53
                        group=default,
54
                        resource__name=rn
55
                    )
56
                    if q.limit == l:
57
                        q.delete()
58
                except orm.AstakosGroupQuota.DoesNotExist:
59
                    continue
60

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

  
12
        "Obsolete migration."
13
        return
14
    
63 15
    models = {
64 16
        'auth.group': {
65 17
            'Meta': {'object_name': 'Group'},

Also available in: Unified diff