Commit 03eddeb6 authored by Victor Nikulshin's avatar Victor Nikulshin
Browse files

Merge branch 'feature/coding-style' into '2.x'

Reformat code to match Python coding standards



See merge request !17
parents 4821cbb4 dd737731
Loading
Loading
Loading
Loading
Loading
+30 −46
Original line number Diff line number Diff line
from fabric.api import task, env, execute
from fabric.colors import red
from fabric.contrib.console import confirm

import behat
import deploy
import docker
from deploy  import *
import drush
import behat
import patternlab

from .environments import e
from deploy import migrate, provision, push

from fabric.api import task, env, execute

from fabric.colors import red
from fabric.contrib.console import confirm

@task
def init():
    """
    Complete local installation process, used generally when building the docker image for install and configure Drupal.
    """

    execute(docker.image_create)
    execute(docker.container_start)

    execute(drush.make, 'install')
    execute(drush.site_install, host='root@{}'.format(env.container_ip))
    execute(drush.aliases)

    execute(behat.init, host='root@{}'.format(env.container_ip))


@task
def install():
    """
    Run the full installation process.
    """
    execute(drush.make, 'install')
    execute(drush.site_install)
    execute(behat.init)


@task
def release():
    """
    Generate all artefacts related to a release process or a deployment process.
    """
    execute(drush.archive_dump)
    execute(drush.gen_doc)


@task
def test(tags=''):
@@ -32,57 +53,20 @@ def test(tags=''):
    The JUnit report file is specified in the Behat configuration file. Default: tests/behat/out/behat.junit.xml.

    :param tags Specific Behat tests tags to run.

    """
    execute(behat.init)

    if not tags:
        execute(behat.run)
    else:
        execute(behat.run, tags='{}'.format(tags))



@task
def install():

    """
    Run the full installation process.
    """

    execute(drush.make, 'install')
    execute(drush.site_install)
    execute(behat.init)



@task
def update():

    """
    Update the full codebase and run the availabe database updates.
    """

    execute(drush.make, 'update')
    execute(drush.updatedb)
    execute(behat.init)


@task
def release():

    """
    Generate all artefacts related to a release process or a deployment process.
    """

    execute(drush.archive_dump)
    execute(drush.gen_doc)


@task
def deploy(environment):
    """Deploy code and run database updates on a target Drupal environment.
    """

    execute(provision, environment)
    execute(push, environment, hosts=env.hosts)
    execute(migrate, environment, hosts=env.hosts)
+8 −6
Original line number Diff line number Diff line
from __future__ import unicode_literals

from fabric.api import task, roles, env
from fabric.colors import green

import helpers as h


@task
@roles('docker')
def init(rewrite=True):
@@ -12,7 +14,6 @@ def init(rewrite=True):
    :param role Default 'role' where to run the task
    :param rewrite If the behat.yml file should be rewrited or not.
    """
    
    role = 'docker'
    workspace = env.docker_workspace
    host = env.site_hostname
@@ -24,18 +25,18 @@ def init(rewrite=True):
            h.fab_run(role, 'sed -i "s@%DRUPAL_ROOT@{}@g" behat.yml'.format(site_root))
            h.fab_run(role, 'sed -i "s@%URL@http://{}@g" behat.yml'.format(host))
            h.fab_run(role, 'echo "127.0.0.1  {}" >> /etc/hosts'.format(host))

        print green('Behat is now properly configured. The configuration file is {}/tests/behat/behat.yml'.format(workspace))
    else:
        print green('{}/tests/behat/behat.yml is already created.'.format(workspace))


@task()
@task
@roles('docker')
def install():
    """
    Install behat
    """

    role = 'docker'
    workspace = env.docker_workspace

@@ -44,6 +45,7 @@ def install():
            h.fab_run(role, 'curl -s https://getcomposer.org/installer | php')
            h.fab_run(role, 'php composer.phar install')
            h.fab_run(role, 'ln -s bin/behat /usr/local/bin/behat')

        print green('Behat has been properly installed with Composer in /usr/local/bin')
    else:
        print(green('Behat is already installed, no need for a new installation'))
@@ -56,7 +58,6 @@ def run(tags='~@wip&&~@disabled&&~@test'):
    Execute the complete Behat tests suite.
    :param role Default 'role' where to run the task
    """

    role = 'docker'
    workspace = env.docker_workspace

@@ -64,9 +65,10 @@ def run(tags='~@wip&&~@disabled&&~@test'):
    # In the container behat is installed globaly, so check before install it inside the tests directory
    if not h.fab_exists(role, '/usr/local/bin/behat') or not h.fab_exists(role, '../tests/behat/bin/behat'):
        install()

    # If the configuration file behat.yml doesn't exist, call behat_init before run the test.
    if not h.fab_exists(role, '{}/tests/behat/behat.yml'.format(workspace)):
        init()

    with h.fab_cd(role, '{}/tests/behat'.format(workspace)):
        h.fab_run(role, 'behat --format junit --format pretty --tags "{}" --colors'.format(tags))
+2 −1
Original line number Diff line number Diff line
from __future__ import unicode_literals

from fabric.api import task, roles, env
from fabric.colors import red, green

import helpers as h


@task
@roles('docker')
def db_import(filename, role='docker'):
@@ -13,7 +15,6 @@ def db_import(filename, role='docker'):

    :param filename: a full path to a gzipped sql dump.
    """

    if h.fab_exists(role, filename):
        print green('Database dump {} found.'.format(filename))
        h.fab_run(role, 'zcat {} | mysql -u{} -p{} {}'.format(filename, env.site_db_user, env.site_db_pass, env.site_db_name))
+3 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ env.site_languages = 'fr'
# PatternLab

# Specify the PatternLab dir is you want the style guide to be generated

env.patternlab_dir = ''


@@ -41,6 +42,7 @@ env.patternlab_dir = ''

env.db_dump = False


# Docker

env.docker_workspace = '/opt/sfl'
@@ -49,6 +51,7 @@ env.bind_port = 8001
env.apache_user = 'www-data'

# Docker auto-added container IP

env.container_ip = '172.17.0.0'


+24 −6
Original line number Diff line number Diff line
@@ -17,13 +17,15 @@
#

from __future__ import unicode_literals

import glob
import os

from fabric.api import task, env, local, run
from fabric.colors import green
from fabric.utils import abort

import helpers as h
import os
import glob


def _set_hosts(environment):
@@ -51,7 +53,9 @@ def _aegir_platform_name(target, environment):
    """
    if 'aegir_platform' not in target:
        abort('Aegir needs a unique platform name to function properly. Check your aegir_platform key in your aliases.')

    aegir_platform = target.get('aegir_platform')

    return aegir_platform.format(name=env.project_name, env=environment, build=env.build_number)


@@ -61,8 +65,10 @@ def _target_dir(environment):
    :param environment
    """
    target = env.aliases.get(environment)

    if _is_aegir_deployment(target):
        return target.get('root') + _aegir_platform_name(target, environment)

    return target.get('root')


@@ -98,7 +104,6 @@ def _clear_site_cache(target, environment):
    Helper function to clear site cache.
    :param environment
    """

    run('drush --yes --root={} cache-clear all'.format(target.get('root')))
    print(green('The cache have been cleared on the target environment {}.'.format(environment)))

@@ -109,10 +114,13 @@ def _get_archive_from_dir(directory):
    :param directory The directory used to untar the artefact.
    """
    files = glob.glob1(directory, '*.tar.gz')

    if len(files) == 0:
        abort('No tarball found in {}'.format(directory))

    if len(files) > 1:
        abort('More than one tarball has been found in {}. Can not decide which one to deploy.'.format(directory))

    return files[0]


@@ -132,6 +140,7 @@ def _aegir_provision_platform(platform, aegir_path, aegir_destsrv):
    """
    run('drush --root="{}/platforms/{}" provision-save "@platform_{}" --context_type="platform" --web_server=@{}'
        .format(aegir_path, platform, platform, aegir_destsrv))

    run('drush @hostmaster hosting-import platform_{}'.format(platform))
    run('drush @hostmaster hosting-dispatch')

@@ -156,6 +165,15 @@ def _aegir_remove_platform_without_sites(target, environment, platform):
    run('{}/remove-platforms {} {}'.format(aegir_path, environment, platform))


@task(default=True)
def deploy(environment):
    """Deploy code and run database updates on a target Drupal environment.
    """
    execute(provision, environment)
    execute(push, environment, hosts=env.hosts)
    execute(migrate, environment, hosts=env.hosts)


@task
def provision(environment, role='local'):
    """
@@ -169,10 +187,10 @@ def provision(environment, role='local'):
    artefact = _get_archive_from_dir(env.builddir)

    with h.fab_cd(role, '{}/src'.format(env.workspace)):

        # Clear the currently installed platform
        if h.fab_exists(role, env.site_root):
            h.fab_run(role, 'rm -rf {}'.format(env.site_root))

        # Extract the platform to deploy
        h.fab_run(role, 'tar -xzf {}/{}'.format(env.builddir, artefact))

@@ -186,7 +204,6 @@ def provision(environment, role='local'):
        print(green('The platform {} is now ready to be deployed to the target environment {}.'.format(artefact,
                                                                                                       environment)))


@task
def push(environment):
    """
@@ -217,6 +234,7 @@ def migrate(environment):
    if _is_aegir_deployment(target):
        # Deploy to Aegir server.
        platform = _aegir_platform_name(target, environment)

        if env.get('migrate', "false") == "true":
            _aegir_migrate_sites(target, environment, platform)

Loading