9 |
9 |
|
10 |
10 |
from optparse import OptionParser
|
11 |
11 |
|
|
12 |
from mandaye import config
|
12 |
13 |
from mandaye.log import logger
|
13 |
14 |
|
14 |
15 |
def get_cmd_options():
|
15 |
|
usage = "usage: %prog --createdb|--upgradedb"
|
|
16 |
usage = "usage: %prog --createdb|--upgradedb|--sql2ldap=SQL_SCHEMA"
|
16 |
17 |
parser = OptionParser(usage=usage)
|
17 |
18 |
parser.add_option("--createdb",
|
18 |
19 |
dest="createdb",
|
19 |
20 |
default=False,
|
20 |
21 |
action="store_true",
|
21 |
|
help="Create Mandaye database"
|
|
22 |
help="Create SQL Mandaye database"
|
22 |
23 |
)
|
23 |
24 |
parser.add_option("--upgradedb",
|
24 |
25 |
dest="upgradedb",
|
25 |
26 |
default=False,
|
26 |
27 |
action="store_true",
|
27 |
|
help="Upgrade Mandaye database"
|
|
28 |
help="Upgrade SQL Mandaye database"
|
28 |
29 |
)
|
|
30 |
parser.add_option("--sql2ldap",
|
|
31 |
dest="sql_schema",
|
|
32 |
default="",
|
|
33 |
type="string",
|
|
34 |
help="SQL_SCHEMA: sqlalchemy schema (ex postgresql://mandaye@/mandayeold)")
|
29 |
35 |
(options, args) = parser.parse_args()
|
30 |
36 |
return options
|
31 |
37 |
|
... | ... | |
40 |
46 |
alembic_cfg.set_main_option("script_location", global_config.alembic_script_path)
|
41 |
47 |
command.upgrade(alembic_cfg, "head")
|
42 |
48 |
logger.info("Database upgraded")
|
|
49 |
if options.sql_schema:
|
|
50 |
import ldap
|
|
51 |
import ldap.modlist
|
|
52 |
from sqlalchemy import create_engine
|
|
53 |
from sqlalchemy.orm import sessionmaker, scoped_session
|
|
54 |
from mandaye.models import SPUser
|
|
55 |
logger.info("Migrate from %r to %r", options.sql_schema, config.ldap_url)
|
|
56 |
sql_session = scoped_session(sessionmaker(
|
|
57 |
bind=create_engine(options.sql_schema)))
|
|
58 |
ldap_conn = ldap.initialize(config.ldap_url)
|
|
59 |
ldap_conn.protocol_version = ldap.VERSION3
|
|
60 |
ldap_conn.simple_bind(config.ldap_bind_dn, config.ldap_bind_password)
|
|
61 |
for sp_user in sql_session.query(SPUser).all():
|
|
62 |
association = {
|
|
63 |
'spName': str(sp_user.service_provider.name),
|
|
64 |
'spLogin': str(sp_user.login),
|
|
65 |
'spPostValues': str(sp_user.post_values),
|
|
66 |
'idpUniqueID': str(sp_user.idp_user.unique_id),
|
|
67 |
'idpName': str(sp_user.idp_user.idp_id),
|
|
68 |
'creationDate': sp_user.creation_date.strftime("%Y%m%d%H%M%SZ"),
|
|
69 |
'lastConnectionDate': sp_user.last_connection.strftime("%Y%m%d%H%M%SZ"),
|
|
70 |
'objectClass': 'MandayeUser'
|
|
71 |
}
|
|
72 |
mod_list = ldap.modlist.addModlist(association)
|
|
73 |
dn = "uniqueID=%s,%s" % (sp_user.id, config.ldap_base_dn)
|
|
74 |
logger.debug("Adding %r in ldap server", dn)
|
|
75 |
result = ldap_conn.add_s(dn, mod_list)
|
43 |
76 |
|
44 |
77 |
if __name__ == "__main__":
|
45 |
78 |
main()
|
46 |
|
-
|