Projet

Général

Profil

0001-manager-add-a-command-to-migrate-from-sql-to-ldap.patch

Jérôme Schneider, 16 septembre 2014 21:09

Télécharger (2,55 ko)

Voir les différences:

Subject: [PATCH] manager: add a command to migrate from sql to ldap

Closes #547
 mandaye_vincennes_manager | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)
mandaye_vincennes_manager
9 9

  
10 10
from optparse import OptionParser
11 11

  
12
from mandaye import config
13
from mandaye.backends.default import Association
12 14
from mandaye.log import logger
13 15

  
14 16
def get_cmd_options():
15
    usage = "usage: %prog --createdb|--upgradedb"
17
    usage = "usage: %prog --createdb|--upgradedb|--sql2ldap=SQL_SCHEMA"
16 18
    parser = OptionParser(usage=usage)
17 19
    parser.add_option("--createdb",
18 20
            dest="createdb",
19 21
            default=False,
20 22
            action="store_true",
21
            help="Create Mandaye database"
23
            help="Create SQL Mandaye database"
22 24
            )
23 25
    parser.add_option("--upgradedb",
24 26
            dest="upgradedb",
25 27
            default=False,
26 28
            action="store_true",
27
            help="Upgrade Mandaye database"
29
            help="Upgrade SQL Mandaye database"
28 30
            )
31
    parser.add_option("--sql2ldap",
32
            dest="sql_schema",
33
            default="",
34
            type="string",
35
            help="SQL_SCHEMA: sqlalchemy schema (ex postgresql://mandaye@/mandayeold)")
29 36
    (options, args) = parser.parse_args()
30 37
    return options
31 38

  
......
40 47
        alembic_cfg.set_main_option("script_location", global_config.alembic_script_path)
41 48
        command.upgrade(alembic_cfg, "head")
42 49
        logger.info("Database upgraded")
50
    if options.sql_schema:
51
        logger.info("Migrate from %r to %r", options.sql_schema, config.ldap_url)
52
        from sqlalchemy import create_engine
53
        from sqlalchemy.orm import sessionmaker, scoped_session
54
        from mandaye.models import SPUser
55
        sql_session = scoped_session(sessionmaker(
56
            bind=create_engine(options.sql_schema)))
57
        for sp_user in sql_session.query(SPUser).all():
58
            Association.update_or_create(sp_user.service_provider.name,
59
                    sp_user.login, sp_user.post_values,
60
                    sp_user.idp_user.unique_id, sp_user.idp_user.idp_id)
43 61

  
44 62
if __name__ == "__main__":
45 63
    main()
46
-