1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 from __future__ import print_function
17 from __future__ import unicode_literals
18 from __future__ import division
19 from __future__ import absolute_import
20
21 import os
22 here = os.path.dirname(os.path.realpath(__file__))
23 import sys
24 sys.path.append(os.path.dirname(here))
25
26 import argparse
27 import flask
28 from flask_sqlalchemy import SQLAlchemy
29 from coprs import app, models, db, logic, helpers
30 from coprs.logic.coprs_logic import CoprsLogic
31 from coprs.logic.packages_logic import PackagesLogic
32
33
34 DSTDB_CONFIG = {"username": "copr-fe", "password": "coprpass", "host": "127.0.0.1", "database": "coprdbnew"}
35 srcdb = db
36
37 dstapp = flask.Flask(__name__)
38 dstapp.config.from_object("coprs.config.DevelopmentConfig")
39 dstapp.config["SQLALCHEMY_DATABASE_URI"] = "postgresql://{username}:{password}@{host}/{database}".format(**DSTDB_CONFIG)
40 dstdb = SQLAlchemy(dstapp)
41
42
43 parser = argparse.ArgumentParser(prog = "migrate-copr")
44 parser.add_argument("-s", "--stage", dest="stage", type=int, default=-1)
45 args = parser.parse_args()
46
47
49 """ Return all coprs without those which are deleted. """
50 return CoprsLogic.get_all()
51
52
56
58 arguments = {}
59 for name, column in from_object.__mapper__.columns.items():
60 if not name in exclude:
61 arguments[name] = getattr(from_object, name)
62 return clazz(**arguments)
63
68
74
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 mods = [
96 models.User,
97 models.Group,
98 models.Copr,
99 models.LegalFlag,
100 models.CoprPermission,
101 models.CoprChroot,
102 models.CounterStat,
103 models.MockChroot,
104 ]
105
106 clean_mods = [
107 models.BuildChroot,
108 models.Build,
109 models.Package,
110 ] + list(reversed(mods))
111
112
113
117
118
119
128
129
130
134
135
136
142
143
145 if args.stage in [-1, 0]:
146
147 print("### Stage 0 - Cleaning ###################################")
148 clean(dstdb)
149 dstdb.session.commit()
150
151 if args.stage in [-1, 1]:
152
153 print("### Stage 1 - Copy data ##################################")
154 cp = Copying(dstdb)
155 copy_data(cp)
156 dstdb.session.commit()
157
158 if args.stage in [-1, 2]:
159
160 print("### Stage 2 - succeeded -> [pending|importing] ###########")
161 ensure_rebuild(dstdb)
162 dstdb.session.commit()
163
164 if args.stage in [-1, 3]:
165
166 print("### Stage 3 - failed -> pending (repeat ##################")
167 rebuild_failed(dstdb)
168 dstdb.session.commit()
169
170 if args.stage not in range(-1, 4):
171 print("No such stage. See the code for possible values :-P")
172
173
174 if __name__ == "__main__":
175 main()
176