1 from fabric.api import task, env, sudo |
1 from fabric.api import task, env, sudo |
2 from fabric.colors import green |
2 from fabric.colors import green |
3 from fabric.tasks import Task |
|
4 from ldt_fablib import (check_folder_access, syncdb, collectstatic, |
3 from ldt_fablib import (check_folder_access, syncdb, collectstatic, |
5 export_version, do_sync_web, create_config, clean_export_folder, do_sync_comp, |
4 export_version, do_sync_web, create_config, clean_export_folder, do_sync_comp, |
6 sync_install_build, do_create_virtualenv, clean_rsync_folder, rsync_export, |
5 sync_install_build, do_create_virtualenv, clean_rsync_folder, rsync_export, |
7 get_comp_versions_dict) |
6 get_comp_versions_dict, SyncComp, do_relaunch_server) |
8 import imp |
7 import imp |
9 import os.path |
8 import os.path |
10 |
9 |
11 @task |
10 @task |
12 def relaunch_server(do_collectstatic=True, do_syncdb=True): |
11 def relaunch_server(do_collectstatic=True, do_syncdb=True): |
13 print("Relaunch server") |
12 print("Relaunch server") |
14 check_folder_access() |
13 do_relaunch_server(do_collectstatic, do_syncdb) |
15 if do_syncdb: |
|
16 syncdb(env.remote_path['src'], env.remote_path['virtualenv']) |
|
17 if do_collectstatic: |
|
18 collectstatic(env.remote_path['src'], env.remote_path['virtualenv'], env.platform_web_module) |
|
19 sudo(env.web_relaunch_cmd, shell=False) |
|
20 |
14 |
21 @task |
15 @task |
22 def sync_web(version): |
16 def sync_web(version): |
23 print(green("sync web with version %s" % version)) |
17 print(green("sync web with version %s" % version)) |
24 export_path = export_version(web=version) |
18 export_path = export_version(web=version) |
81 finally: |
75 finally: |
82 clean_export_folder(export_path) |
76 clean_export_folder(export_path) |
83 if venv_remote_export_path: |
77 if venv_remote_export_path: |
84 clean_rsync_folder(venv_remote_export_path) |
78 clean_rsync_folder(venv_remote_export_path) |
85 |
79 |
86 class SyncComp(Task): |
|
87 |
|
88 def __init__(self, key): |
|
89 self.key = key |
|
90 |
|
91 def __get_name(self): |
|
92 return "sync_" + self.key |
|
93 |
|
94 name = property(__get_name) |
|
95 |
|
96 def run(self, version): |
|
97 print(green("sync ldt with version %s" % version)) |
|
98 export_path_web = export_version(web=version) |
|
99 export_path_web_full = os.path.join(export_path_web,'web') |
|
100 comp_versions = get_comp_versions_dict(export_path_web_full) |
|
101 |
|
102 export_path = export_version(**{self.key:comp_versions[self.key]}) |
|
103 export_path_full = os.path.join(export_path,self.key) |
|
104 do_sync_comp(self.key, export_path_full) |
|
105 clean_export_folder(export_path) |
|
106 clean_export_folder(export_path_web) |
|
107 |
|
108 relaunch_server() |
|
109 |
80 |
110 for sync_name in [key for key in env.repos if key != 'web']: |
81 for sync_name in [key for key in env.repos if key != 'web']: |
111 globals()[sync_name] = SyncComp(sync_name) |
82 globals()[sync_name] = SyncComp(sync_name) |