70 def migrate(remotepath, remotevirtualenvpath, platform_web_module): |
70 def migrate(remotepath, remotevirtualenvpath, platform_web_module): |
71 print("migrate in %s with %s" % (remotepath, remotevirtualenvpath)) |
71 print("migrate in %s with %s" % (remotepath, remotevirtualenvpath)) |
72 activate_path = os.path.join(remotevirtualenvpath, "bin/activate") |
72 activate_path = os.path.join(remotevirtualenvpath, "bin/activate") |
73 with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath): |
73 with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath): |
74 #remocve old files optio -c of collect static fail ! |
74 #remocve old files optio -c of collect static fail ! |
75 run("python manage.py migrate --noinput") |
75 run("python manage.py syncdb --migrate --noinput") |
76 |
76 |
77 def create_config(export_path): |
77 def create_config(export_path, key): |
78 print("Create config from %s" % (export_path,)) |
78 print("Create config from %s with key %s" % (export_path,key)) |
79 remotepath = env.remote_web_path |
79 remotepath = env.remote_web_path[key] |
80 remote_config_path = os.path.join(remotepath, env.platform_web_module, "config.py") |
80 remote_config_path = os.path.join(remotepath, env.web_module[key], "config.py") |
81 template_path = os.path.join(export_path, env.local_folders.get("web","web"), env.platform_web_module, "config.py.tmpl") |
81 template_path = os.path.join(export_path, env.local_folders[key], env.web_module[key], "config.py.tmpl") |
82 |
82 |
83 context = { |
83 context = env.config[key] |
84 'base_dir': os.path.join(remotepath, env.platform_web_module).rstrip("/")+"/", |
84 context['base_dir'] = os.path.join(remotepath, env.web_module[key]).rstrip("/")+"/" |
85 'base_url': env.base_url, |
|
86 'web_url': env.web_url, |
|
87 'stream_url': env.stream_url, |
|
88 'stream_src_prefix': env.stream_src_prefix, |
|
89 'ffmpeg_path': env.ffmpeg_path, |
|
90 'db_engine': env.db_engine, |
|
91 'db_name': env.db_name, |
|
92 'db_user': env.db_user, |
|
93 'db_password': env.db_password, |
|
94 'db_host': env.db_host, |
|
95 'db_port': env.db_port, |
|
96 'log_file': env.log_file, |
|
97 'google_analytics_code': env.google_analytics_code, |
|
98 'email_use_tls': env.email_use_tls, |
|
99 'email_host': env.email_host, |
|
100 'email_host_user': env.email_host_user, |
|
101 'email_host_user': env.email_host_user, |
|
102 'email_port': env.email_port, |
|
103 'forbidden_stream_url': env.forbidden_stream_url, |
|
104 } |
|
105 |
85 |
106 if not exists(remote_config_path, verbose=True): |
86 if not exists(remote_config_path, verbose=True): |
107 upload_template(template_path, remote_config_path, context=context) |
87 upload_template(template_path, remote_config_path, context=context) |
108 |
88 |
109 def export_version(version): |
89 def export_version(version): |
131 run("python project-boot.py \"%s\"" % remotevirtualenvpath) |
111 run("python project-boot.py \"%s\"" % remotevirtualenvpath) |
132 with prefix("source \"%s\"" % activate_path): |
112 with prefix("source \"%s\"" % activate_path): |
133 run("pip install -r \"%s\"" % os.path.join(remote_venv_export_path,"virtualenv","web","res","srvr_requirements.txt")) |
113 run("pip install -r \"%s\"" % os.path.join(remote_venv_export_path,"virtualenv","web","res","srvr_requirements.txt")) |
134 |
114 |
135 |
115 |
136 def do_sync_web(version, export_path): |
116 def do_sync_web(version, export_path, key): |
137 print("do_sync_web with version %s and path %s" % (version,export_path)) |
117 print("do_sync_web with version %s and path %s and key %s" % (version,export_path, key)) |
138 web_path = os.path.join(export_path,env.local_folders.get("web","web").rstrip("/")+"/") |
118 web_path = os.path.join(export_path,env.local_folders[key].rstrip("/")+"/") |
139 rsync_export(web_path, env.remote_web_path, env.web_rsync_filters) |
119 rsync_export(web_path, env.remote_web_path[key], env.web_rsync_filters[key]) |
140 |
120 |
141 def remove_lib(path): |
121 def remove_lib(path): |
142 print("remove build build %s" % path) |
122 print("remove build build %s" % path) |
143 run("rm \"%s\"" % path) |
123 run("rm \"%s\"" % path) |
144 |
124 |
167 finally: |
147 finally: |
168 if res_trans: |
148 if res_trans: |
169 remove_lib(res_trans[0]) |
149 remove_lib(res_trans[0]) |
170 |
150 |
171 |
151 |
172 def check_folder_access(): |
152 def check_folder_access(key): |
173 print("Check folder access") |
153 print("Check folder access") |
174 # get remote user |
154 # get remote user |
175 for folder_path in env.folders: |
155 for folder_path in env.folders[key]: |
176 if not os.path.isabs(folder_path): |
156 if not os.path.isabs(folder_path): |
177 folder_path = env.remote_web_path.rstrip("/")+ "/" + folder_path |
157 folder_path = env.remote_web_path[key].rstrip("/")+ "/" + folder_path |
178 with settings(warn_only=True): |
158 with settings(warn_only=True): |
179 if not exists(folder_path): |
159 if not exists(folder_path): |
180 run("mkdir -p \"%s\"" % folder_path) |
160 run("mkdir -p \"%s\"" % folder_path) |
181 run("chown -R -c :%s \"%s\"" % (env.web_group, folder_path)) |
161 run("chown -R -c :%s \"%s\"" % (env.web_group, folder_path)) |
182 run("chmod -R -c g+w \"%s\"" % folder_path) |
162 run("chmod -R -c g+w \"%s\"" % folder_path) |
183 @task |
163 @task |
184 def relaunch_server(do_collectstatic=True, do_migrate=True): |
164 def relaunch_server(key,do_collectstatic=True, do_migrate=True): |
185 print("Relaunch server") |
165 print("Relaunch server") |
186 check_folder_access() |
166 check_folder_access(key) |
187 if do_collectstatic: |
167 if do_collectstatic: |
188 collectstatic(env.remote_web_path, env.remote_virtualenv_path, env.platform_web_module) |
168 collectstatic(env.remote_web_path[key], env.remote_virtualenv_path, env.web_module[key]) |
189 if do_migrate: |
169 if do_migrate: |
190 migrate(env.remote_web_path, env.remote_virtualenv_path, env.platform_web_module) |
170 migrate(env.remote_web_path[key], env.remote_virtualenv_path, env.web_module[key]) |
191 sudo(env.web_relaunch_cmd, shell=False) |
171 sudo(env.relaunch_cmd[key], shell=False) |
192 |
172 |
193 @task |
173 |
194 def sync_web(version): |
174 @task |
|
175 def sync_web(version, key): |
195 print(green("sync web with version %s" % version)) |
176 print(green("sync web with version %s" % version)) |
196 export_path = export_version(version) |
177 export_path = export_version(version) |
197 do_sync_web(version, export_path) |
178 do_sync_web(version, export_path, key) |
198 create_config(export_path) |
179 create_config(export_path, key) |
199 clean_export_folder(export_path) |
180 clean_export_folder(export_path) |
200 relaunch_server() |
181 relaunch_server(key) |
201 |
182 |
202 @task |
183 @task |
203 def update_lib(version, package): |
184 def update_lib(version, package): |
204 print(green("update ldt with version %s" % version)) |
185 print(green("update ldt with version %s" % version)) |
205 export_path = export_version(version) |
186 export_path = export_version(version) |