예제 #1
0
def zinuit_command(zinuit_path='.'):
    """Zinuit manager for Metel"""
    import zinuit
    from zinuit.utils import setup_logging

    zinuit.set_metel_version(zinuit_path=zinuit_path)
    setup_logging(zinuit_path=zinuit_path)
예제 #2
0
def backup_site(site, zinuit_path='.'):
    zinuit.set_metel_version(zinuit_path=zinuit_path)

    if zinuit.METEL_VERSION == 0:
        exec_cmd("{metel} --backup {site}".format(
            metel=get_metel(zinuit_path=zinuit_path), site=site),
                 cwd=os.path.join(zinuit_path, 'sites'))
    else:
        run_metel_cmd('--site', site, 'backup', zinuit_path=zinuit_path)
예제 #3
0
def build_assets(zinuit_path='.'):
    zinuit.set_metel_version(zinuit_path=zinuit_path)

    if zinuit.METEL_VERSION == 0:
        exec_cmd(
            "{metel} --build".format(metel=get_metel(zinuit_path=zinuit_path)),
            cwd=os.path.join(zinuit_path, 'sites'))
    else:
        run_metel_cmd('build', zinuit_path=zinuit_path)
예제 #4
0
def patch_sites(zinuit_path='.'):
    zinuit.set_metel_version(zinuit_path=zinuit_path)

    try:
        if zinuit.METEL_VERSION == 0:
            exec_cmd("{metel} --latest all".format(metel=get_metel(
                zinuit_path=zinuit_path)),
                     cwd=os.path.join(zinuit_path, 'sites'))
        else:
            run_metel_cmd('--site', 'all', 'migrate', zinuit_path=zinuit_path)
    except subprocess.CalledProcessError:
        raise PatchError
예제 #5
0
def new_app(app, zinuit_path='.'):
    # For backwards compatibility
    app = app.lower().replace(" ", "_").replace("-", "_")
    logger.info('creating new app {}'.format(app))
    apps = os.path.abspath(os.path.join(zinuit_path, 'apps'))
    zinuit.set_metel_version(zinuit_path=zinuit_path)

    if zinuit.METEL_VERSION == 0:
        exec_cmd("{metel} --make_app {apps} {app}".format(
            metel=get_metel(zinuit_path=zinuit_path), apps=apps, app=app))
    else:
        run_metel_cmd('make-app', apps, app, zinuit_path=zinuit_path)
    install_app(app, zinuit_path=zinuit_path)
예제 #6
0
def setup_backups(zinuit_path='.'):
    logger.info('setting up backups')
    zinuit_dir = get_zinuit_dir(zinuit_path=zinuit_path)
    zinuit.set_metel_version(zinuit_path=zinuit_path)

    if zinuit.METEL_VERSION == 0:
        backup_command = "cd {sites_dir} && {metel} --backup all".format(
            metel=get_metel(zinuit_path=zinuit_path), )
    else:
        backup_command = "cd {zinuit_dir} && {zinuit} --site all backup".format(
            zinuit_dir=zinuit_dir, zinuit=sys.argv[0])

    add_to_crontab('0 */6 * * *  {backup_command} >> {logfile} 2>&1'.format(
        backup_command=backup_command,
        logfile=os.path.join(get_zinuit_dir(zinuit_path=zinuit_path), 'logs',
                             'backup.log')))
예제 #7
0
def init(path,
         apps_path=None,
         no_procfile=False,
         no_backups=False,
         no_auto_update=False,
         metel_path=None,
         metel_branch=None,
         wheel_cache_dir=None,
         verbose=False,
         clone_from=None,
         skip_redis_config_generation=False,
         clone_without_update=False,
         ignore_exist=False,
         python='python'):  # Let's change when we're ready. - <Administrator>
    from .app import get_app, install_apps_from_path
    from .config.common_site_config import make_config
    from .config import redis
    from .config.procfile import setup_procfile
    from zinuit.patches import set_all_patches_executed

    import os.path as osp

    if osp.exists(path):
        if not ignore_exist:
            raise ValueError(
                'Zinuit Instance {path} already exists.'.format(path=path))
    else:
        os.makedirs(path)

    for dirname in folders_in_zinuit:
        try:
            os.makedirs(os.path.join(path, dirname))
        except OSError as e:
            if e.errno == os.errno.EEXIST:
                pass

    setup_logging()

    setup_env(zinuit_path=path, python=python)

    make_config(path)

    if clone_from:
        clone_apps_from(zinuit_path=path,
                        clone_from=clone_from,
                        update_app=not clone_without_update)
    else:
        if not metel_path:
            metel_path = 'https://github.com/amonak/metel.git'

        get_app(metel_path,
                branch=metel_branch,
                zinuit_path=path,
                build_asset_files=False,
                verbose=verbose)

        if apps_path:
            install_apps_from_path(apps_path, zinuit_path=path)

    zinuit.set_metel_version(zinuit_path=path)
    if zinuit.METEL_VERSION > 1:
        update_node_packages(zinuit_path=path)

    set_all_patches_executed(zinuit_path=path)
    build_assets(zinuit_path=path)

    if not skip_redis_config_generation:
        redis.generate_config(path)

    if not no_procfile:
        setup_procfile(path)
    if not no_backups:
        setup_backups(zinuit_path=path)
    if not no_auto_update:
        setup_auto_update(zinuit_path=path)
    copy_patches_txt(path)