Statistics
| Branch: | Tag: | Revision:

root / docs / upgrade / upgrade-0.14.rst @ 857383e3

History | View | Annotate | Download (2.9 kB)

1 857383e3 Giorgos Korfiatis
Upgrade to Synnefo v0.14
2 857383e3 Giorgos Korfiatis
^^^^^^^^^^^^^^^^^^^^^^^^
3 857383e3 Giorgos Korfiatis
4 857383e3 Giorgos Korfiatis
The bulk of the upgrade to v0.14 is about resource and quota migrations.
5 857383e3 Giorgos Korfiatis
6 857383e3 Giorgos Korfiatis
7 857383e3 Giorgos Korfiatis
.. warning::
8 857383e3 Giorgos Korfiatis
9 857383e3 Giorgos Korfiatis
    It is strongly suggested that you keep separate database backups
10 857383e3 Giorgos Korfiatis
    for each service after the completion of each of step.
11 857383e3 Giorgos Korfiatis
12 857383e3 Giorgos Korfiatis
1. Bring web services down, backup databases
13 857383e3 Giorgos Korfiatis
============================================
14 857383e3 Giorgos Korfiatis
15 857383e3 Giorgos Korfiatis
1. All web services must be brought down so that the database maintains a
16 857383e3 Giorgos Korfiatis
   predictable and consistent state during the migration process::
17 857383e3 Giorgos Korfiatis
18 857383e3 Giorgos Korfiatis
    # service gunicorn stop
19 857383e3 Giorgos Korfiatis
    # service snf-dispatcher stop
20 857383e3 Giorgos Korfiatis
    # etc.
21 857383e3 Giorgos Korfiatis
22 857383e3 Giorgos Korfiatis
2. Backup databases for recovery to a pre-migration state.
23 857383e3 Giorgos Korfiatis
24 857383e3 Giorgos Korfiatis
3. Keep the database servers running during the migration process
25 857383e3 Giorgos Korfiatis
26 857383e3 Giorgos Korfiatis
27 857383e3 Giorgos Korfiatis
2. Upgrade Synnefo and configure settings
28 857383e3 Giorgos Korfiatis
=========================================
29 857383e3 Giorgos Korfiatis
30 857383e3 Giorgos Korfiatis
2.2 Sync and migrate Django DB
31 857383e3 Giorgos Korfiatis
------------------------------
32 857383e3 Giorgos Korfiatis
33 857383e3 Giorgos Korfiatis
.. note::
34 857383e3 Giorgos Korfiatis
35 857383e3 Giorgos Korfiatis
   If you are asked about stale content types during the migration process,
36 857383e3 Giorgos Korfiatis
   answer 'no' and let the migration finish.
37 857383e3 Giorgos Korfiatis
38 857383e3 Giorgos Korfiatis
::
39 857383e3 Giorgos Korfiatis
40 857383e3 Giorgos Korfiatis
    astakos-host$ snf-manage syncdb
41 857383e3 Giorgos Korfiatis
    astakos-host$ snf-manage migrate quotaholder_app 0001 --fake
42 857383e3 Giorgos Korfiatis
    astakos-host$ snf-manage migrate quotaholder_app
43 857383e3 Giorgos Korfiatis
    astakos-host$ snf-manage migrate im
44 857383e3 Giorgos Korfiatis
45 857383e3 Giorgos Korfiatis
    cyclades-host$ snf-manage syncdb
46 857383e3 Giorgos Korfiatis
    cyclades-host$ snf-manage migrate
47 857383e3 Giorgos Korfiatis
48 857383e3 Giorgos Korfiatis
49 857383e3 Giorgos Korfiatis
3 Quota-related steps
50 857383e3 Giorgos Korfiatis
=====================
51 857383e3 Giorgos Korfiatis
52 857383e3 Giorgos Korfiatis
3.1 Set services and resources
53 857383e3 Giorgos Korfiatis
------------------------------
54 857383e3 Giorgos Korfiatis
55 857383e3 Giorgos Korfiatis
Astakos and its resources should also get registered, so that they can
56 857383e3 Giorgos Korfiatis
be known to the quota system.
57 857383e3 Giorgos Korfiatis
58 857383e3 Giorgos Korfiatis
Run::
59 857383e3 Giorgos Korfiatis
60 857383e3 Giorgos Korfiatis
    astakos-host$ snf-manage service-add astakos service_url api_url
61 857383e3 Giorgos Korfiatis
    astakos-host$ snf-manage resource-export-astakos > astakos.json
62 857383e3 Giorgos Korfiatis
    astakos-host$ snf-manage resource-import --json astakos.json
63 857383e3 Giorgos Korfiatis
    astakos-host$ snf-manage resource-modify astakos.pending_app --limit <num>
64 857383e3 Giorgos Korfiatis
65 857383e3 Giorgos Korfiatis
The last command will set the limit of max pending project applications
66 857383e3 Giorgos Korfiatis
per user. This replaces setting ASTAKOS_PENDING_APPLICATION_LIMIT.
67 857383e3 Giorgos Korfiatis
68 857383e3 Giorgos Korfiatis
In order to migrate the user-specific limits, run
69 857383e3 Giorgos Korfiatis
(script: ``migrate_pending_app.py``)::
70 857383e3 Giorgos Korfiatis
71 857383e3 Giorgos Korfiatis
    import os
72 857383e3 Giorgos Korfiatis
    os.environ['DJANGO_SETTINGS_MODULE'] = 'synnefo.settings'
73 857383e3 Giorgos Korfiatis
    from astakos.im.models import UserSetting, AstakosUserQuota, Resource
74 857383e3 Giorgos Korfiatis
75 857383e3 Giorgos Korfiatis
    SETTING = 'PENDING_APPLICATION_LIMIT'
76 857383e3 Giorgos Korfiatis
    RESOURCE = 'astakos.pending_app'
77 857383e3 Giorgos Korfiatis
78 857383e3 Giorgos Korfiatis
    try:
79 857383e3 Giorgos Korfiatis
        resource = Resource.objects.get(name=RESOURCE)
80 857383e3 Giorgos Korfiatis
    except Resource.DoesNotExist:
81 857383e3 Giorgos Korfiatis
        print "Resource 'astakos.pending_app' not found."
82 857383e3 Giorgos Korfiatis
        exit()
83 857383e3 Giorgos Korfiatis
84 857383e3 Giorgos Korfiatis
    settings = UserSetting.objects.filter(setting=SETTING)
85 857383e3 Giorgos Korfiatis
    for setting in settings:
86 857383e3 Giorgos Korfiatis
        user = setting.user
87 857383e3 Giorgos Korfiatis
        value = setting.value
88 857383e3 Giorgos Korfiatis
        q, created = AstakosUserQuota.objects.get_or_create(
89 857383e3 Giorgos Korfiatis
            user=user, resource=resource, capacity=value)
90 857383e3 Giorgos Korfiatis
        if not created:
91 857383e3 Giorgos Korfiatis
            print "Base quota already exists: %s %s" % (user.uuid, RESOURCE)
92 857383e3 Giorgos Korfiatis
            continue
93 857383e3 Giorgos Korfiatis
        print "Migrated base quota: %s %s %s" % (user.uuid, RESOURCE, value)
94 857383e3 Giorgos Korfiatis
95 857383e3 Giorgos Korfiatis
with::
96 857383e3 Giorgos Korfiatis
97 857383e3 Giorgos Korfiatis
    astakos-host$ python ./migrate_pending_app.py
98 857383e3 Giorgos Korfiatis
99 857383e3 Giorgos Korfiatis
followed by::
100 857383e3 Giorgos Korfiatis
101 857383e3 Giorgos Korfiatis
    astakos-host$ snf-manage reconcile-resources-astakos