sbin/sync/fabfile.py
author grandjoncl
Thu, 11 Oct 2012 16:39:05 +0200
changeset 842 ca38abd140b3
parent 829 0dccd715b007
permissions -rw-r--r--
Corrections of the code for the embed popup. Functions are now in the embed_popup.js With chrome the player used to play the video even when it wasn't supposed to be displayed and kept playing when we hid the player. When we changed between div and iframe the player started even when it was suppose to be hidden. It's now solved.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
from fabric.api import task, run, local, env, cd, put, prefix, sudo
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
from fabric.colors import green
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
from fabric.contrib.project import rsync_project
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
     4
from fabric.contrib.files import exists, upload_template
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
     5
from fabric.context_managers import settings 
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
from mercurial import commands, ui, hg, cmdutil
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
import imp
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
import os, os.path
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
import shutil
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
import sys
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
import config
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
def get_export_path(version):
769
a49769a3088d clean config file and do some correction in the sync script.
ymh <ymh.work@gmail.com>
parents: 761
diff changeset
    15
    base_path = os.path.join(env.base_export_path,env.export_prefix).rstrip("/")
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
    return os.path.expanduser(base_path) + "_%s" % (str(version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
def clean_export_folder(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
    print("Removing %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
    if os.path.isdir(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
        shutil.rmtree(path, ignore_errors=True)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
def do_export_version(path, version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    print("Export version %s"%str(version))
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    25
        
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    local("hg archive -r \'%s\' \"%s\"" % (str(version),path))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    print("Export version %s done"%str(version))
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    28
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    29
    
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    30
def get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, settings_key):
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    31
    activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    32
    res = ""
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    33
    with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath):
769
a49769a3088d clean config file and do some correction in the sync script.
ymh <ymh.work@gmail.com>
parents: 761
diff changeset
    34
        tempfilepath = run("mktemp -t ldtplatform.XXXXXX")
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    35
        with settings(warn_only=True):
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    36
            run("echo \"import os\" > %s" % (tempfilepath))
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    37
            map(lambda str: run("echo \"%s\" >> %s" % (str, tempfilepath)),
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    38
                ["os.environ.setdefault('DJANGO_SETTINGS_MODULE', '%s.settings')" % (platform_web_module),
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    39
                 "from django.conf import settings",
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    40
                 "print settings.%s" % (settings_key)])
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    41
            res = run("python < %s" % (tempfilepath))
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    42
        run("rm -f \"%s\"" % (tempfilepath))
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    43
    return res
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    44
    
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
    45
    
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
def rsync_export(path, remotepath, filters):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
    print("Rsync %s to %s",(path,remotepath))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    
829
0dccd715b007 update virtualenv
ymh <ymh.work@gmail.com>
parents: 769
diff changeset
    50
    filter_option_str = "--progress --stats"
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    if filters:
829
0dccd715b007 update virtualenv
ymh <ymh.work@gmail.com>
parents: 769
diff changeset
    52
        filter_option_str += " " + " ".join(["--filter \"%s\"" % (f) for f in filters])
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    run("mkdir -p \"%s\"" % remotepath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    rsync_project(remotepath, local_dir=path, extra_opts=filter_option_str, delete=True)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    print("Rsync %s to %s done",(path,remotepath))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
def clean_rsync_folder(remotepath):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    print("clean rsync folder %s" % remotepath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    run("rm -fr \"%s\"" % remotepath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
def build_src(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
    print("Build source dist at %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
    f = None
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
    try:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
        f, pathname, description = imp.find_module("setup", [path])
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
        print(" 2 Build source dist at %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
        setup_mod = imp.load_module("setup", f, pathname, description)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
        print(" 3 Build source dist at %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    finally:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
        if f:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
            f.close()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
        
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    setup_mod.launch_setup("setup.py", ['sdist'])
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
    print("Build source dist at %s done" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
def get_src_version(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
    print("get src version at %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    f = None
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    try:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
        f, pathname, description = imp.find_module("ldt", [path])
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
        ldt_mod = imp.load_module("ldt", f, pathname, description)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
    finally:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
        if f:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
            f.close()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    version = ldt_mod.VERSION
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
    version_str = ldt_mod.get_version()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
    return (version, version_str) 
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
def sync_build(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
    print("Sync build %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
    with cd(env.remote_ldt_base_path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
        filename = os.path.basename(path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
        res_trans = put(path, os.path.join(env.remote_ldt_base_path, filename))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
        print("Sync build %s to %s" % (path,repr(res_trans)))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
        return res_trans
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
def remove_build(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
    print("remove build build %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
    run("rm \"%s\"" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
        
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
def install_build(remotepath, remotevirtualenvpath):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
    print("Install build %s in %s" % (remotepath, remotevirtualenvpath))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
    activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
    with prefix("source %s" % activate_path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
        run("pip install \"%s\"" % remotepath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   114
def collectstatic(remotepath, remotevirtualenvpath, platform_web_module):
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
    print("Collect static in %s with %s" % (remotepath, remotevirtualenvpath))
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   116
    remotestaticsitepath = get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, "STATIC_ROOT")
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
    activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   118
    with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath):
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   119
        #remocve old files optio -c of collect static fail !
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   120
        run("rm -fr \"%s\"" % (remotestaticsitepath))
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   121
        run("python manage.py collectstatic --noinput")
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
        
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   123
def create_config(export_path):    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   124
    print("Create config from %s" % (export_path,))
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   125
    remotepath = env.remote_web_path
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   126
    remote_config_path = os.path.join(remotepath, env.platform_web_module, "config.py")
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   127
    template_path = os.path.join(export_path, "web", env.platform_web_module, "config.py.tmpl")
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   128
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   129
    context = {
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   130
     'base_dir': os.path.join(remotepath, env.platform_web_module).rstrip("/")+"/",
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   131
     'base_url': env.base_url,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   132
     'web_url': env.web_url,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   133
     'stream_url': env.stream_url,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   134
     'stream_src_prefix': env.stream_src_prefix,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   135
     'ffmpeg_path': env.ffmpeg_path,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   136
     'db_engine': env.db_engine,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   137
     'db_name': env.db_name,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   138
     'db_user': env.db_user,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   139
     'db_password': env.db_password,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   140
     'db_host': env.db_host,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   141
     'db_port': env.db_port,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   142
     'log_file': env.log_file,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   143
     'google_analytics_code': env.google_analytics_code,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   144
     'email_use_tls': env.email_use_tls,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   145
     'email_host': env.email_host,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   146
     'email_host_user': env.email_host_user,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   147
     'email_host_user': env.email_host_user,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   148
     'email_port': env.email_port,
769
a49769a3088d clean config file and do some correction in the sync script.
ymh <ymh.work@gmail.com>
parents: 761
diff changeset
   149
     'forbidden_stream_url': env.forbidden_stream_url,
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   150
    }
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   151
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   152
    if not exists(remote_config_path, verbose=True):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   153
        upload_template(template_path, remote_config_path, context=context)
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
def export_version(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
    print("export version %s" % str(version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
    export_path = get_export_path(version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
    clean_export_folder(export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
    do_export_version(export_path,version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
    return export_path
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
def do_create_virtualenv(remote_venv_export_path, remotevirtualenvpath):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
    print("Create virtualenv export_path : %s - remote venvpath : %s" % (remote_venv_export_path, remotevirtualenvpath))
641
7d5640606813 add missing icons + correct virtualenv creation
ymh <ymh.work@gmail.com>
parents: 632
diff changeset
   167
    activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
    if "remote_baseline_venv" in env and env.remote_baseline_venv:
642
b419e891b0bd correct virtualenv install + sync files
ymh <ymh.work@gmail.com>
parents: 641
diff changeset
   169
        prefix_str = "source \"%s\"" % os.path.join(env.remote_baseline_venv, "bin/activate")
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
    else:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
        prefix_str = "echo"
677
fe9cfbb91909 reinstall distribute
ymh <ymh.work@gmail.com>
parents: 668
diff changeset
   172
    with settings(warn_only=True):
fe9cfbb91909 reinstall distribute
ymh <ymh.work@gmail.com>
parents: 668
diff changeset
   173
        run("rm -fr \"%s\"" % remotevirtualenvpath)
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
    run("mkdir -p \"%s\"" % remotevirtualenvpath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
    with prefix(prefix_str), cd(os.path.join(remote_venv_export_path,"virtualenv","web")):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
        run("python create_python_env.py")
677
fe9cfbb91909 reinstall distribute
ymh <ymh.work@gmail.com>
parents: 668
diff changeset
   177
        run("python project-boot.py \"%s\"" % remotevirtualenvpath)
641
7d5640606813 add missing icons + correct virtualenv creation
ymh <ymh.work@gmail.com>
parents: 632
diff changeset
   178
    with prefix("source \"%s\"" % activate_path):
7d5640606813 add missing icons + correct virtualenv creation
ymh <ymh.work@gmail.com>
parents: 632
diff changeset
   179
        run("pip install -r \"%s\"" % os.path.join(remote_venv_export_path,"virtualenv","web","res","srvr_requirements.txt"))
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
def do_sync_ldt(version, export_path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
    print("do_sync_ldt with version %s and path %s" % (version,export_path))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
    src_path = export_path + "/src/ldt"
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
    build_src(src_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
    (_,version_str) = get_src_version(src_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
    build_path = os.path.join(src_path,"dist","ldt-%s.tar.gz" % version_str)
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   187
    sync_install_build(build_path)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   188
        
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   189
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   190
def sync_install_build(build_path):
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
    res_trans = None
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
    try:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
        res_trans = sync_build(build_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
        install_build(res_trans[0], env.remote_virtualenv_path)        
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
    finally:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
        if res_trans:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
            remove_build(res_trans[0])
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   199
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
def do_sync_web(version, export_path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
    print("do_sync_web with version %s and path %s" % (version,export_path))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
    web_path = os.path.join(export_path,"web/") 
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
    rsync_export(web_path, env.remote_web_path, env.web_rsync_filters)    
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   204
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   205
def check_folder_access():
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   206
    print("Check folder access")
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   207
    # get remote user
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   208
    for folder_path in env.folders:
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   209
        if not os.path.isabs(folder_path):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   210
            folder_path = env.remote_web_path.rstrip("/")+ "/" + folder_path
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   211
            with settings(warn_only=True):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   212
                if not exists(folder_path):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   213
                    run("mkdir -p \"%s\"" % folder_path)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   214
                run("chown -R -c :%s \"%s\"" % (env.web_group, folder_path))
688
619222c32ade correct chmod
ymh <ymh.work@gmail.com>
parents: 686
diff changeset
   215
                run("chmod -R -c g+w \"%s\"" % folder_path)
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   216
@task
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   217
def relaunch_server(do_collectstatic=True):
686
ad47b20c737f check folder access
ymh <ymh.work@gmail.com>
parents: 677
diff changeset
   218
    print("Relaunch server")
769
a49769a3088d clean config file and do some correction in the sync script.
ymh <ymh.work@gmail.com>
parents: 761
diff changeset
   219
    check_folder_access()
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   220
    if do_collectstatic:
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   221
        collectstatic(env.remote_web_path, env.remote_virtualenv_path, env.platform_web_module)
686
ad47b20c737f check folder access
ymh <ymh.work@gmail.com>
parents: 677
diff changeset
   222
    sudo(env.web_relaunch_cmd, shell=False)
ad47b20c737f check folder access
ymh <ymh.work@gmail.com>
parents: 677
diff changeset
   223
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
@task
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
def sync_web(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
    print(green("sync web with version %s" % version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
    export_path = export_version(version)
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   228
    do_sync_web(version, export_path)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   229
    create_config(export_path)
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
    clean_export_folder(export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
    relaunch_server()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
@task
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
def sync_ldt(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
    print(green("sync ldt with version %s" % version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
    export_path = export_version(version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
    do_sync_ldt(version, export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
    clean_export_folder(export_path)
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   239
    relaunch_server()
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   240
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   241
@task
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   242
def update_lib(version, package):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   243
    print(green("update ldt with version %s" % version))
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   244
    export_path = export_version(version)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   245
    lib_path = os.path.join(export_path, "virtualenv", "res", "lib")
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   246
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   247
    f, pathname, description = imp.find_module("patch", [lib_path])
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   248
    patch = imp.load_module("patch", f, pathname, description)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   249
    f, pathname, description = imp.find_module("lib_create_env", [lib_path])
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   250
    lib_create_env = imp.load_module("lib_create_env", f, pathname, description)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   251
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   252
    package_path = os.path.join(export_path, "virtualenv", "res", "src", lib_create_env.URLS[package]['local'])
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   253
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   254
    sync_install_build(package_path)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   255
    clean_export_folder(export_path)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   256
    relaunch_server()
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   257
    
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
@task
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
def sync_platform(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
    print(green("sync platform with version %s" % version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
    export_path = export_version(version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
    do_sync_ldt(version, export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
    do_sync_web(version, export_path)
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   264
    create_config(export_path)
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
    clean_export_folder(export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
    relaunch_server()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
@task
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
def create_virtualenv(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
    print(green("create virtualenv with version %s" % version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
    export_path = export_version(version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
    venv_remote_export_path = ""
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
    try:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
        virtualenv_path = os.path.join(export_path, "virtualenv")
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
        venv_remote_export_path = os.path.join(env.remote_venv_export_path, env.export_prefix, version,"virtualenv")
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
        rsync_export(virtualenv_path, venv_remote_export_path, env.venv_rsync_filters)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
        do_create_virtualenv(venv_remote_export_path, env.remote_virtualenv_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
    finally:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
        clean_export_folder(export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
        if venv_remote_export_path:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
            clean_rsync_folder(venv_remote_export_path)