sbin/sync/fabfile.py
author rougeronj
Wed, 19 Sep 2012 18:16:19 +0200
changeset 789 d92d032a6d78
parent 769 a49769a3088d
child 829 0dccd715b007
permissions -rw-r--r--
Commit Julien: Champ de recherche de users et groups dans l'ajout de content, amélioré pour que le mot "recherche" disparaisse au moment ou l'on clique sur le champ. Meme modification dans la page "groups". Permettre à un user qui a le droit de creer un group, d'en creer un (le label de la permission est "auth.add_group").
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
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
    if filters:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
        filter_option_str = " ".join(["--filter \"%s\"" % (f) for f in filters])
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    else:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
        filter_option_str =""
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    run("mkdir -p \"%s\"" % remotepath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    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
    57
    print("Rsync %s to %s done",(path,remotepath))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
def clean_rsync_folder(remotepath):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    print("clean rsync folder %s" % remotepath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    run("rm -fr \"%s\"" % remotepath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
def build_src(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
    print("Build source dist at %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
    f = None
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
    try:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
        f, pathname, description = imp.find_module("setup", [path])
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
        print(" 2 Build source dist at %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
        setup_mod = imp.load_module("setup", f, pathname, description)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
        print(" 3 Build source dist at %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    finally:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
        if f:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
            f.close()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
        
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
    setup_mod.launch_setup("setup.py", ['sdist'])
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
    print("Build source dist at %s done" % path)
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
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
def get_src_version(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    print("get src version at %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    f = None
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    try:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
        f, pathname, description = imp.find_module("ldt", [path])
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
        ldt_mod = imp.load_module("ldt", f, pathname, description)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
    finally:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
        if f:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
            f.close()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
    version = ldt_mod.VERSION
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
    version_str = ldt_mod.get_version()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
    return (version, version_str) 
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
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
def sync_build(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
    print("Sync build %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
    with cd(env.remote_ldt_base_path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
        filename = os.path.basename(path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
        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
   100
        print("Sync build %s to %s" % (path,repr(res_trans)))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
        return res_trans
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
def remove_build(path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
    print("remove build build %s" % path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
    run("rm \"%s\"" % path)
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
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
def install_build(remotepath, remotevirtualenvpath):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
    print("Install build %s in %s" % (remotepath, remotevirtualenvpath))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
    activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
    with prefix("source %s" % activate_path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
        run("pip install \"%s\"" % remotepath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   115
def collectstatic(remotepath, remotevirtualenvpath, platform_web_module):
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
    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
   117
    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
   118
    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
   119
    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
   120
        #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
   121
        run("rm -fr \"%s\"" % (remotestaticsitepath))
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   122
        run("python manage.py collectstatic --noinput")
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
        
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   124
def create_config(export_path):    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   125
    print("Create config from %s" % (export_path,))
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   126
    remotepath = env.remote_web_path
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   127
    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
   128
    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
   129
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   130
    context = {
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   131
     '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
   132
     'base_url': env.base_url,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   133
     'web_url': env.web_url,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   134
     'stream_url': env.stream_url,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   135
     'stream_src_prefix': env.stream_src_prefix,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   136
     'ffmpeg_path': env.ffmpeg_path,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   137
     'db_engine': env.db_engine,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   138
     'db_name': env.db_name,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   139
     'db_user': env.db_user,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   140
     'db_password': env.db_password,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   141
     'db_host': env.db_host,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   142
     'db_port': env.db_port,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   143
     'log_file': env.log_file,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   144
     'google_analytics_code': env.google_analytics_code,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   145
     'email_use_tls': env.email_use_tls,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   146
     'email_host': env.email_host,
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_host_user': env.email_host_user,
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   149
     '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
   150
     'forbidden_stream_url': env.forbidden_stream_url,
668
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
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   153
    if not exists(remote_config_path, verbose=True):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   154
        upload_template(template_path, remote_config_path, context=context)
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
def export_version(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
    print("export version %s" % str(version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
    export_path = get_export_path(version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
    clean_export_folder(export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
    do_export_version(export_path,version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
    return export_path
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
def do_create_virtualenv(remote_venv_export_path, remotevirtualenvpath):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
    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
   168
    activate_path = os.path.join(remotevirtualenvpath, "bin/activate")
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
    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
   170
        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
   171
    else:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
        prefix_str = "echo"
677
fe9cfbb91909 reinstall distribute
ymh <ymh.work@gmail.com>
parents: 668
diff changeset
   173
    with settings(warn_only=True):
fe9cfbb91909 reinstall distribute
ymh <ymh.work@gmail.com>
parents: 668
diff changeset
   174
        run("rm -fr \"%s\"" % remotevirtualenvpath)
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
    run("mkdir -p \"%s\"" % remotevirtualenvpath)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
    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
   177
        run("python create_python_env.py")
677
fe9cfbb91909 reinstall distribute
ymh <ymh.work@gmail.com>
parents: 668
diff changeset
   178
        run("python project-boot.py \"%s\"" % remotevirtualenvpath)
641
7d5640606813 add missing icons + correct virtualenv creation
ymh <ymh.work@gmail.com>
parents: 632
diff changeset
   179
    with prefix("source \"%s\"" % activate_path):
7d5640606813 add missing icons + correct virtualenv creation
ymh <ymh.work@gmail.com>
parents: 632
diff changeset
   180
        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
   181
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
def do_sync_ldt(version, export_path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
    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
   184
    src_path = export_path + "/src/ldt"
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
    build_src(src_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
    (_,version_str) = get_src_version(src_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
    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
   188
    sync_install_build(build_path)
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
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   191
def sync_install_build(build_path):
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
    res_trans = None
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
    try:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
        res_trans = sync_build(build_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
        install_build(res_trans[0], env.remote_virtualenv_path)        
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
    finally:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
        if res_trans:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
            remove_build(res_trans[0])
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   200
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
def do_sync_web(version, export_path):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
    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
   203
    web_path = os.path.join(export_path,"web/") 
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
    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
   205
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   206
def check_folder_access():
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   207
    print("Check folder access")
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   208
    # get remote user
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   209
    for folder_path in env.folders:
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   210
        if not os.path.isabs(folder_path):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   211
            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
   212
            with settings(warn_only=True):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   213
                if not exists(folder_path):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   214
                    run("mkdir -p \"%s\"" % folder_path)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   215
                run("chown -R -c :%s \"%s\"" % (env.web_group, folder_path))
688
619222c32ade correct chmod
ymh <ymh.work@gmail.com>
parents: 686
diff changeset
   216
                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
   217
@task
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   218
def relaunch_server(do_collectstatic=True):
686
ad47b20c737f check folder access
ymh <ymh.work@gmail.com>
parents: 677
diff changeset
   219
    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
   220
    check_folder_access()
759
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   221
    if do_collectstatic:
6d341beaf632 improve fabfile to correct problem with collect static
ymh <ymh.work@gmail.com>
parents: 694
diff changeset
   222
        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
   223
    sudo(env.web_relaunch_cmd, shell=False)
ad47b20c737f check folder access
ymh <ymh.work@gmail.com>
parents: 677
diff changeset
   224
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
@task
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
def sync_web(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
    print(green("sync web with version %s" % version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
    export_path = export_version(version)
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   229
    do_sync_web(version, export_path)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   230
    create_config(export_path)
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
    clean_export_folder(export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
    relaunch_server()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
@task
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
def sync_ldt(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
    print(green("sync ldt with version %s" % version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
    export_path = export_version(version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
    do_sync_ldt(version, export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
    clean_export_folder(export_path)
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   240
    relaunch_server()
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   241
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   242
@task
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   243
def update_lib(version, package):
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   244
    print(green("update ldt with version %s" % version))
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   245
    export_path = export_version(version)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   246
    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
   247
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   248
    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
   249
    patch = imp.load_module("patch", f, pathname, description)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   250
    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
   251
    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
   252
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   253
    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
   254
    
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   255
    sync_install_build(package_path)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   256
    clean_export_folder(export_path)
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   257
    relaunch_server()
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   258
    
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
@task
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
def sync_platform(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
    print(green("sync platform with version %s" % version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
    export_path = export_version(version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
    do_sync_ldt(version, export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
    do_sync_web(version, export_path)
668
b52724db32ab improve sync script and virtualenv creation
ymh <ymh.work@gmail.com>
parents: 642
diff changeset
   265
    create_config(export_path)
632
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
    clean_export_folder(export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
    relaunch_server()
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
@task
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
def create_virtualenv(version):
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
    print(green("create virtualenv with version %s" % version))
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
    export_path = export_version(version)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
    venv_remote_export_path = ""
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
    try:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
        virtualenv_path = os.path.join(export_path, "virtualenv")
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
    
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
        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
   278
        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
   279
        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
   280
    finally:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
        clean_export_folder(export_path)
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
        if venv_remote_export_path:
e85856bfd59b new sync script using fabric
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
            clean_rsync_folder(venv_remote_export_path)