sbin/sync/fabfile.py
changeset 50 4dd7fa373ed6
parent 27 4b8a549d6399
child 82 fa141523769a
equal deleted inserted replaced
49:6e41cd2b4b83 50:4dd7fa373ed6
    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)
   230         do_create_virtualenv(venv_remote_export_path, env.remote_virtualenv_path)
   211         do_create_virtualenv(venv_remote_export_path, env.remote_virtualenv_path)
   231     finally:
   212     finally:
   232         clean_export_folder(export_path)
   213         clean_export_folder(export_path)
   233         if venv_remote_export_path:
   214         if venv_remote_export_path:
   234             clean_rsync_folder(venv_remote_export_path)
   215             clean_rsync_folder(venv_remote_export_path)
       
   216 
       
   217 
       
   218 #sync hp
       
   219 # sync files
       
   220 # create virtualenv
       
   221 # create config
       
   222 # syncdb + migrate
       
   223 # collectstatic
       
   224 # relaunch web
       
   225 
       
   226 #sync ldt
       
   227 # sync files
       
   228 # create virtualenv
       
   229 # create config
       
   230 # syncdb + migrate
       
   231 # collectstatic
       
   232 # relaunch web