server/sbin/sync/fabfile.py
changeset 141 0d0883c6ec09
parent 123 bd83fbd445ca
equal deleted inserted replaced
140:d0fb57986ddc 141:0d0883c6ec09
       
     1 from distutils.util import strtobool
       
     2 import os
       
     3 import shutil
       
     4 import settings
       
     5 import tempfile
       
     6 
     1 from fabric.api import env, local, put, run, lcd, task, prefix, sudo
     7 from fabric.api import env, local, put, run, lcd, task, prefix, sudo
     2 from fabric.contrib.files import exists, append, upload_template
     8 from fabric.contrib.files import exists, append, upload_template
     3 from fabric.colors import green
     9 from fabric.colors import green
     4 import tempfile
    10 
     5 import shutil
    11 def _prep_bool_arg(arg):
     6 import os
    12     return bool(strtobool(str(arg)))
     7 import settings
    13 
     8 
    14 
     9 current_path = os.path.dirname(os.path.realpath(__file__))
    15 current_path = os.path.dirname(os.path.realpath(__file__))
       
    16 
       
    17 #TODO: add collectatic
    10 
    18 
    11 def __init():
    19 def __init():
    12     if not env.get('temp_folder', None):
    20     if not env.get('temp_folder', None):
    13         env['temp_folder'] = tempfile.mkdtemp()
    21         env['temp_folder'] = tempfile.mkdtemp()
    14         print(green("working folder is %s" % env['temp_folder']))
    22         print(green("working folder is %s" % env['temp_folder']))
    44         append(os.path.join(env.srv_venv_path, "bin/activate"), "export DJANGO_SETTINGS_MODULE="+env.srv_django_settings_module)
    52         append(os.path.join(env.srv_venv_path, "bin/activate"), "export DJANGO_SETTINGS_MODULE="+env.srv_django_settings_module)
    45 
    53 
    46         run('rm -fr %s' % tmpd)
    54         run('rm -fr %s' % tmpd)
    47 
    55 
    48 
    56 
    49 def deploy():
    57 def deploy(installonly=False):
    50     # figure out the release name and version
    58     # figure out the release name and version
    51     with lcd(os.path.join(get_version_path(),env.source_rel_path)):
    59     with lcd(os.path.join(get_version_path(),env.source_rel_path)):
    52         dist = local('python setup.py --fullname', capture=True).strip()
    60         dist = local('python setup.py --fullname', capture=True).strip()
    53         print(green("dist is %s" % dist))
    61         print(green("dist is %s" % dist))
    54 
    62 
    61         with prefix('source %s/bin/activate' % env.srv_venv_path):
    69         with prefix('source %s/bin/activate' % env.srv_venv_path):
    62             run('pip install -U --force-reinstall /tmp/%s.tar.gz' % dist)
    70             run('pip install -U --force-reinstall /tmp/%s.tar.gz' % dist)
    63         # now that all is set up, delete the folder again
    71         # now that all is set up, delete the folder again
    64 
    72 
    65         run('rm -rf /tmp/%s.tar.gz' % dist)
    73         run('rm -rf /tmp/%s.tar.gz' % dist)
    66         sudo(env.srv_restart_cmd, shell=False)
    74 
       
    75 def restart_srv():
       
    76     sudo(env.srv_restart_cmd, shell=False)
       
    77 
       
    78 def apply_deploy():
       
    79     with prefix('source %s/bin/activate' % env.srv_venv_path):
       
    80         run("django-admin migrate --noinput")
       
    81         run("django-admin collectstatic --noinput --clear")
       
    82 
    67 
    83 
    68 @task(default=True)
    84 @task(default=True)
    69 def deploy_version(version='tip'):
    85 def deploy_version(version='tip', installonly=False):
    70     env['version'] = version
    86     env['version'] = version
    71     __init()
    87     __init()
    72     export()
    88     export()
    73     pack()
    89     pack()
    74     if not exists(env.srv_venv_path):
    90     if not exists(env.srv_venv_path):
    75         create_virtualenv()
    91         create_virtualenv()
    76     deploy()
    92     deploy()
       
    93     if not _prep_bool_arg(installonly):
       
    94         apply_deploy()
       
    95     restart_srv()
    77     __clean()
    96     __clean()