sbin/sync/fabfile.py
changeset 86 bb39eafd5293
parent 82 cb842369c5ca
child 96 900b29a370ae
equal deleted inserted replaced
85:42393fa72f0e 86:bb39eafd5293
     1 from fabric.api import task, run, local, env, cd, put, prefix, sudo
     1 from fabric.api import task, run, local, env, cd, put, prefix, sudo
     2 from fabric.colors import green
     2 from fabric.colors import green
     3 from fabric.contrib.project import rsync_project
     3 from fabric.contrib.project import rsync_project
     4 from fabric.contrib.files import exists, upload_template
     4 from fabric.contrib.files import exists, upload_template
       
     5 from fabric.context_managers import settings 
     5 from mercurial import commands, ui, hg, cmdutil
     6 from mercurial import commands, ui, hg, cmdutil
     6 import imp
     7 import imp
     7 import os, os.path
     8 import os, os.path
     8 import shutil
     9 import shutil
     9 import sys
    10 import sys
    99 
   100 
   100 def collectstatic(remotepath, remotevirtualenvpath):
   101 def collectstatic(remotepath, remotevirtualenvpath):
   101     print("Collect static in %s with %s" % (remotepath, remotevirtualenvpath))
   102     print("Collect static in %s with %s" % (remotepath, remotevirtualenvpath))
   102     activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
   103     activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
   103     with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath):
   104     with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath):
   104         run("python manage.py collectstatic --noinput")
   105         run("python manage.py collectstatic -c --noinput")
   105         
   106         
   106 def create_config(export_path):    
   107 def create_config(export_path):    
   107     print("Create config from %s" % (export_path,))
   108     print("Create config from %s" % (export_path,))
   108     remotepath = env.remote_web_path
   109     remotepath = env.remote_web_path
   109     remote_config_path = os.path.join(remotepath, env.platform_web_module, "config.py")
   110     remote_config_path = os.path.join(remotepath, env.platform_web_module, "config.py")
   185 
   186 
   186 def relaunch_server():
   187 def relaunch_server():
   187     print("Relaunch server")
   188     print("Relaunch server")
   188     collectstatic(env.remote_web_path, env.remote_virtualenv_path)
   189     collectstatic(env.remote_web_path, env.remote_virtualenv_path)
   189     sudo(env.web_relaunch_cmd, shell=False)
   190     sudo(env.web_relaunch_cmd, shell=False)
       
   191     
       
   192 def check_folder_access():
       
   193     print("Check folder access")
       
   194     # get remote user
       
   195     for folder_path in env.folders:
       
   196         if not os.path.isabs(folder_path):
       
   197             folder_path = env.remote_web_path.rstrip("/")+ "/" + folder_path
       
   198             with settings(warn_only=True):
       
   199                 if not exists(folder_path):
       
   200                     run("mkdir -p \"%s\"" % folder_path)
       
   201                 run("chown -R -c :%s \"%s\"" % (env.web_group, folder_path))
       
   202                 run("chown -R -c g+w \"%s\"" % folder_path)
   190 
   203 
   191 @task
   204 @task
   192 def sync_web(version):
   205 def sync_web(version):
   193     print(green("sync web with version %s" % version))
   206     print(green("sync web with version %s" % version))
   194     export_path = export_version(version)
   207     export_path = export_version(version)
   195     do_sync_web(version, export_path)
   208     do_sync_web(version, export_path)
   196     create_config(export_path)    
   209     check_folder_access()
       
   210     create_config(export_path)
   197     clean_export_folder(export_path)
   211     clean_export_folder(export_path)
   198     relaunch_server()
   212     relaunch_server()
   199 
   213 
   200 @task
   214 @task
   201 def sync_ldt(version):
   215 def sync_ldt(version):
   226 def sync_platform(version):
   240 def sync_platform(version):
   227     print(green("sync platform with version %s" % version))
   241     print(green("sync platform with version %s" % version))
   228     export_path = export_version(version)
   242     export_path = export_version(version)
   229     do_sync_ldt(version, export_path)
   243     do_sync_ldt(version, export_path)
   230     do_sync_web(version, export_path)
   244     do_sync_web(version, export_path)
       
   245     check_folder_access()
       
   246     create_config(export_path)
   231     clean_export_folder(export_path)
   247     clean_export_folder(export_path)
   232     relaunch_server()
   248     relaunch_server()
   233 
   249 
   234 @task
   250 @task
   235 def create_virtualenv(version):
   251 def create_virtualenv(version):