sbin/sync/ldt_fablib/__init__.py
changeset 24 6b79d5424407
parent 23 7df43b86c425
--- a/sbin/sync/ldt_fablib/__init__.py	Tue Dec 04 00:17:10 2012 +0100
+++ b/sbin/sync/ldt_fablib/__init__.py	Tue Dec 04 10:19:44 2012 +0100
@@ -3,6 +3,8 @@
 from fabric.contrib.files import exists, upload_template
 from fabric.contrib.project import rsync_project
 from mercurial import commands, ui, hg, cmdutil
+from fabric.tasks import Task
+from fabric.colors import green
 import config
 import imp
 import os
@@ -15,7 +17,8 @@
 
 __all__ = ["check_folder_access", "syncdb", "collectstatic", 
     "export_version", "do_sync_web", "create_config", "clean_export_folder", "relaunch_server", 
-    "do_sync_ldt", "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export"] 
+    "do_sync_ldt", "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export",
+    "SyncComp"] 
 
 def get_export_path(version):
     base_path = os.path.join(env.base_export_path,env.export_prefix).rstrip("/")
@@ -255,3 +258,36 @@
                 comp_versions[key] = version_req
     
     return comp_versions
+
+def do_relaunch_server(do_collectstatic, do_syncdb):
+    check_folder_access()
+    if do_syncdb:
+        syncdb(env.remote_path['src'], env.remote_path['virtualenv'])
+    if do_collectstatic:
+        collectstatic(env.remote_path['src'], env.remote_path['virtualenv'], env.platform_web_module)
+    sudo(env.web_relaunch_cmd, shell=False)
+
+
+class SyncComp(Task):
+    
+    def __init__(self, key):
+        self.key = key
+
+    def __get_name(self):
+        return "sync_" + self.key
+    
+    name = property(__get_name)
+    
+    def run(self, version):
+        print(green("sync ldt with version %s" % version))
+        export_path_web = export_version(web=version)    
+        export_path_web_full = os.path.join(export_path_web,'web')
+        comp_versions = get_comp_versions_dict(export_path_web_full)
+
+        export_path = export_version(**{self.key:comp_versions[self.key]})
+        export_path_full = os.path.join(export_path,self.key)
+        do_sync_comp(self.key, export_path_full)
+        clean_export_folder(export_path)
+        clean_export_folder(export_path_web)
+        
+        do_relaunch_server(do_collectstatic=True, do_syncdb=True)