sbin/sync/ldt_fablib/__init__.py
changeset 24 6b79d5424407
parent 23 7df43b86c425
equal deleted inserted replaced
23:7df43b86c425 24:6b79d5424407
     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)