From d24823b2c319b46c178676dabe97dc05dfc4a5a9 Mon Sep 17 00:00:00 2001 From: Alexander Burdeiny Date: Wed, 6 Jul 2016 17:48:03 +0300 Subject: [PATCH] fabfile updated for STAGE 5 --- fabfile.py | 248 ++++++++++++++++++++++++++++------------------------- 1 file changed, 132 insertions(+), 116 deletions(-) diff --git a/fabfile.py b/fabfile.py index 0237ff20..d6d010e3 100644 --- a/fabfile.py +++ b/fabfile.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- from os.path import join, basename -from collections import namedtuple +from collections import namedtuple, OrderedDict from fabric.api import * + env.roledefs = { 'dev': ['root@176.121.11.165'], 'prod': ['root@176.121.11.162'], @@ -21,15 +22,18 @@ apache2_conf = '/etc/apache2/sites-available/proj.com' settings_conf = join(REMOTE_HOME_DIR, 'proj/settings.py') services = ['nginx', 'apache2'] -ticket_functions = {} - +stages = {} +tickets = {} -def ticket(func): - if not callable(func): - raise NotImplementedError('func must be a callable') - ticket_functions[func.__name__] = func - return func +def stage(stage_num): + def ticket(func): + if not callable(func): + raise NotImplementedError('func must be a callable') + stages.setdefault(stage_num, OrderedDict()).update({func.__name__: func}) + tickets.update({func.__name__: func}) + return func + return ticket def set_host(host): env.hosts = env.roledefs.get(host) @@ -84,120 +88,132 @@ def pull(with_configs=False, func=None): run('git pull') if with_configs: put_configs() - if func is not None and func in ticket_functions and callable(ticket_functions[func]): - ticket_functions[func]() + if func is not None and func in tickets and callable(tickets[func]): + tickets[func]() call_state('start', only='apache2') -def stage3_pre_final(): - with cd(REMOTE_HOME_DIR): - run('pip install pandas') - run('pip install django-rosetta==0.7.6') - run('git checkout master') - run('git pull') - call_state('stop') - put_configs() - run('python manage.py migrate conference 0001 --fake') - run('python manage.py migrate conference') - run('python manage.py migrate expobanner') - run('python manage.py migrate theme 0001 --fake') - run('python manage.py migrate theme 0002') - run('python manage.py migrate article 0001 --fake') - run('python manage.py migrate article 0002') - run('python manage.py migrate stats_collector') - run('python manage.py crontab remove') - run('python manage.py crontab add') - chown() - call_state('start') - - -def stage3_release(): - call_state('stop') - with cd(REMOTE_HOME_DIR): - # run('python manage.py themeblog_to_blog') - run('git fetch') - run('git checkout stage3_release') - run('git pull') - # run('python manage.py migrate settings 0002 --fake') - run('python manage.py migrate settings') - run('python manage.py migrate article 0003') - chown() - call_state('start') - - -def c_fix(): +def stage_init(stage_num): with cd(REMOTE_HOME_DIR): call_state('stop', only='apache2') + run('git fetch') + run('git checkout stage{stage_num}'.format(stage_num=stage_num)) run('git pull') - run('python manage.py migrate expobanner') + if stage_num in stages and isinstance(stages[stage_num], dict): + for func_name, func in stages[stage_num].iteritems(): + func() call_state('start', only='apache2') -def stage4_firstrun(): - with cd(REMOTE_HOME_DIR): - call_state('stop') - run('git fetch') - run('git checkout stage4') - # run('git checkout -- proj/settings.py') - pull(with_configs=True) - run('python manage.py syncdb') - ticket1374() - ticket1393() - ticket1392() - ticket1384() - ticket1395() - ticket1384_p1() - ticket1384_p2() - t1443() - call_state('start') - - -@ticket -def ticket1395(): - with cd(REMOTE_HOME_DIR): - run('python manage.py accounts_check_url') - - -@ticket -def ticket1374(): - with cd(REMOTE_HOME_DIR): - run('python manage.py migrate theme') - - -@ticket -def ticket1393(): - with cd(REMOTE_HOME_DIR): - run('python manage.py migrate newsletter 0001 --fake') - run('python manage.py migrate newsletter') - - -@ticket -def ticket1392(): - with cd(REMOTE_HOME_DIR): - run('python manage.py migrate newsletter') - - -@ticket -def ticket1384(): - with cd(REMOTE_HOME_DIR): - run('python manage.py migrate exposition 0001 --fake') - run('python manage.py migrate exposition') - run('python manage.py migrate conference') - - -@ticket -def ticket1384_p1(): - with cd(REMOTE_HOME_DIR): - run('python manage.py check_url') - - -@ticket -def ticket1384_p2(): - with cd(REMOTE_HOME_DIR): - run('python manage.py check_translation') - - -@ticket -def t1443(): - with cd(REMOTE_HOME_DIR): - run('chown -Rv www-data:www-data locale') +# def stage3_pre_final(): +# with cd(REMOTE_HOME_DIR): +# run('pip install pandas') +# run('pip install django-rosetta==0.7.6') +# run('git checkout master') +# run('git pull') +# call_state('stop') +# put_configs() +# run('python manage.py migrate conference 0001 --fake') +# run('python manage.py migrate conference') +# run('python manage.py migrate expobanner') +# run('python manage.py migrate theme 0001 --fake') +# run('python manage.py migrate theme 0002') +# run('python manage.py migrate article 0001 --fake') +# run('python manage.py migrate article 0002') +# run('python manage.py migrate stats_collector') +# run('python manage.py crontab remove') +# run('python manage.py crontab add') +# chown() +# call_state('start') + + +# def stage3_release(): +# call_state('stop') +# with cd(REMOTE_HOME_DIR): +# # run('python manage.py themeblog_to_blog') +# run('git fetch') +# run('git checkout stage3_release') +# run('git pull') +# # run('python manage.py migrate settings 0002 --fake') +# run('python manage.py migrate settings') +# run('python manage.py migrate article 0003') +# chown() +# call_state('start') + + +# def c_fix(): +# with cd(REMOTE_HOME_DIR): +# call_state('stop', only='apache2') +# run('git pull') +# run('python manage.py migrate expobanner') +# call_state('start', only='apache2') + + +# def stage4_firstrun(): +# with cd(REMOTE_HOME_DIR): +# call_state('stop') +# run('git fetch') +# run('git checkout stage4') +# # run('git checkout -- proj/settings.py') +# pull(with_configs=True) +# run('python manage.py syncdb') +# ticket1374() +# ticket1393() +# ticket1392() +# ticket1384() +# ticket1395() +# ticket1384_p1() +# ticket1384_p2() +# t1443() +# call_state('start') + + +# @ticket +# def ticket1395(): +# with cd(REMOTE_HOME_DIR): +# run('python manage.py accounts_check_url') + + +# @ticket +# def ticket1374(): +# with cd(REMOTE_HOME_DIR): +# run('python manage.py migrate theme') + + +# @ticket +# def ticket1393(): +# with cd(REMOTE_HOME_DIR): +# run('python manage.py migrate newsletter 0001 --fake') +# run('python manage.py migrate newsletter') + + +# @ticket +# def ticket1392(): +# with cd(REMOTE_HOME_DIR): +# run('python manage.py migrate newsletter') + + +# @ticket +# def ticket1384(): +# with cd(REMOTE_HOME_DIR): +# run('python manage.py migrate exposition 0001 --fake') +# run('python manage.py migrate exposition') +# run('python manage.py migrate conference') + + +# @ticket +# def ticket1384_p1(): +# with cd(REMOTE_HOME_DIR): +# run('python manage.py check_url') + + +# @ticket +# def ticket1384_p2(): +# with cd(REMOTE_HOME_DIR): +# run('python manage.py check_translation') + + +# @ticket +# def t1443(): +# with cd(REMOTE_HOME_DIR): +# run('chown -Rv www-data:www-data locale')