1 from fabric.api import run, local, env, cd, put, prefix, sudo, lcd |
1 from fabric.api import run, local, env, cd, put, prefix, sudo, lcd |
2 from fabric.context_managers import settings |
2 from fabric.context_managers import settings |
3 from fabric.contrib.files import exists, upload_template |
3 from fabric.contrib.files import exists, upload_template |
4 from fabric.contrib.project import rsync_project |
4 from fabric.contrib.project import rsync_project |
5 from mercurial import commands, ui, hg, cmdutil |
5 from mercurial import commands, ui, hg, cmdutil |
|
6 from fabric.tasks import Task |
|
7 from fabric.colors import green |
6 import config |
8 import config |
7 import imp |
9 import imp |
8 import os |
10 import os |
9 import os.path |
11 import os.path |
10 import re |
12 import re |
13 |
15 |
14 |
16 |
15 |
17 |
16 __all__ = ["check_folder_access", "syncdb", "collectstatic", |
18 __all__ = ["check_folder_access", "syncdb", "collectstatic", |
17 "export_version", "do_sync_web", "create_config", "clean_export_folder", "relaunch_server", |
19 "export_version", "do_sync_web", "create_config", "clean_export_folder", "relaunch_server", |
18 "do_sync_ldt", "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export"] |
20 "do_sync_ldt", "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export", |
|
21 "SyncComp"] |
19 |
22 |
20 def get_export_path(version): |
23 def get_export_path(version): |
21 base_path = os.path.join(env.base_export_path,env.export_prefix).rstrip("/") |
24 base_path = os.path.join(env.base_export_path,env.export_prefix).rstrip("/") |
22 return os.path.expanduser(base_path) + "_%s" % (str(version)) |
25 return os.path.expanduser(base_path) + "_%s" % (str(version)) |
23 |
26 |
253 if "." in version_req: |
256 if "." in version_req: |
254 version_req = "V" + ".".join(["%02d" % (int(s)) if s.isdigit() else s for s in version_req.split(".")]) |
257 version_req = "V" + ".".join(["%02d" % (int(s)) if s.isdigit() else s for s in version_req.split(".")]) |
255 comp_versions[key] = version_req |
258 comp_versions[key] = version_req |
256 |
259 |
257 return comp_versions |
260 return comp_versions |
|
261 |
|
262 def do_relaunch_server(do_collectstatic, do_syncdb): |
|
263 check_folder_access() |
|
264 if do_syncdb: |
|
265 syncdb(env.remote_path['src'], env.remote_path['virtualenv']) |
|
266 if do_collectstatic: |
|
267 collectstatic(env.remote_path['src'], env.remote_path['virtualenv'], env.platform_web_module) |
|
268 sudo(env.web_relaunch_cmd, shell=False) |
|
269 |
|
270 |
|
271 class SyncComp(Task): |
|
272 |
|
273 def __init__(self, key): |
|
274 self.key = key |
|
275 |
|
276 def __get_name(self): |
|
277 return "sync_" + self.key |
|
278 |
|
279 name = property(__get_name) |
|
280 |
|
281 def run(self, version): |
|
282 print(green("sync ldt with version %s" % version)) |
|
283 export_path_web = export_version(web=version) |
|
284 export_path_web_full = os.path.join(export_path_web,'web') |
|
285 comp_versions = get_comp_versions_dict(export_path_web_full) |
|
286 |
|
287 export_path = export_version(**{self.key:comp_versions[self.key]}) |
|
288 export_path_full = os.path.join(export_path,self.key) |
|
289 do_sync_comp(self.key, export_path_full) |
|
290 clean_export_folder(export_path) |
|
291 clean_export_folder(export_path_web) |
|
292 |
|
293 do_relaunch_server(do_collectstatic=True, do_syncdb=True) |