Fabric deployment tool ====================== Introduction ------------ It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution. Typical use involves creating a Python module containing one or more functions, then executing them via the fab command-line tool. Configuration ------------- To configure Fabric for Socraticqs2 project you need to copy ``fab_settings.py.example`` file to ``fab_settings.py``:: cp fab_settings.py.example fab_settings.py Then you need to specify virtualenv name by setting ``env.venv_name`` variable. By default it is setted to ``_ve_socraticqs2``. Example fab_settings.py file:: """Settings for Fabric. Params: - env.venv_name: name of the current virtualenv """ from fabric.api import env env.venv_name = '_ve_socraticqs2' Fabric database tasks --------------------- Database tasks are tasks that help to automate typical database actions. There are three DB tasks: * db.init * db.backup * db.restore To list all available tasks:: fab --list All tasks makes decision about DB engine given from Django settings and performs appropriate actions. Init DB task ------------ Usage:: fab db.init This task performs following actions: 1. DROP database given from Django settings 2. CREATE new database with name given from Django settings 3. Apply all migrations 4. Load fixture data 5. Deploy FSMs Backup DB task -------------- Usage:: fab db.backup[:custom_branch_name] This task performs following actions: 1. DROP database given from Django settings 2. CREATE new database with name given from Django settings 3. ``psql pg_dump > backup.postgres.custom_branch_name`` action for PostgreSQL and ``cp mysite.db backup.sqlite.custom_branch_name`` action for SQLite DB. If ``custom_branch_name`` param is not presented task gets current git branch name and using it as a custom suffix for backup files. Restore DB task --------------- Usage:: fab db.restore[:custom_branch_name] This task performs following actions: 1. DROP database given from Django settings 2. CREATE new database with name given from Django settings 3. ``psql < backup.postgres.custom_branch_name`` action for PostgreSQL and ``cp backup.sqlite.custom_branch_name mysite.db`` action for SQLite DB. If ``custom_branch_name`` param is not presented task get current git branch name and using it as a suffix for backup files. If task can not find backup file it will list for you all backup files available with specific DB engine given from Django settings, e.g.:: $ fab db.restore:custom_branch_name ................................... [localhost] local: ls /path/to/proj/backups/backup.postgres.custom_branch_name ls: cannot access /path/to/proj/backups/backup.postgres.custom_branch_name: No such file or directory ================================ There is no requested backup file. [localhost] local: ls backups Below you can find available backup files: backup.postgres.branch_1 backup.postgres.branch_2 backup.postgres.branch_3 ................................... Done.