Example #1
0
def __config_shredder():
    require("user")
    env.appenv = 'default' # default packages  
    env.apprepo = 'ssh://%[email protected]//home/ecsdev/hg-projects/ecs' % env.user
    env.appbranch = "default" # default branch
    (env.appname, env.appwsgi, env.apacheconf) =  ("ecs", "main.wsgi", "apache.conf")
    # FIXME: is hardcoded, should go to ecs/application
    env.appconfdir = "config"
    env.appenvdir = "environment"
    env.appbaselinedir = "baseline"
    env.appsrcdir = "src"
    env.apphostname = "s.ecsdev.ep3.at"
    env.targetjoin = posixpath.join
    env.targetbasedir = env.targetjoin("/home", env.user)
    __config_common()
Example #2
0
def __config_common():
    '''
    common to all config 
    '''
    env.targetconfdir = env.targetjoin(env.targetbasedir,env.appconfdir)
    env.targetenvdir = env.targetjoin(env.targetbasedir,env.appenvdir)
    env.targetbaselinedir = env.targetjoin(env.targetbasedir,env.appbaselinedir)
    env.targetsrcdir = env.targetjoin(env.targetbasedir,env.appsrcdir)
    env.targetappdir = env.targetjoin(env.targetsrcdir,env.appname)
    env.initialized = env.targetjoin(env.targetconfdir,"env.initialized")
 
    if env.targetjoin == ntpath.join:
        env.activate = "%s\\Scripts\\activate.bat" % env.targetenvdir
        env.manage = "python .\\manage.py" 
    else:
        env.activate = ". %s/bin/activate" % env.targetenvdir
        env.manage = "./manage.py"
Example #3
0
def __update(components=None):
    ''' 
    __update[:component[(,components)+]], see fab help_update for details
    '''
    with settings(warn_only=True):
        if not components:
            components = C_default_update
            warn("no components specified, using default: %s" % str(components))
            
        if 'daemonsstop' in components:
            run("sudo /sbin/stop %s" % env.appname+ "-mailserver-"+ env.user)
            run("sudo /sbin/stop %s" % env.appname+ "-mainapp_celeryd-"+ env.user)
            
        if 'makedir' in components:
            if not exists(env.initialized):
                with cd(env.targetbasedir):
                    run("mkdir %s; touch %s" % (env.targetconfdir, env.initialized))
                    run("mkdir %s; mkdir %s; mkdir log; mkdir public_html; mkdir .python-eggs" % \
                        (env.targetjoin(env.targetconfdir,"apache.wsgi"), env.targetjoin(env.targetconfdir,"apache.conf")))
                        
        if 'source' in components:
            # TODO: is hardcoded major version, autovm makes same thing in a different place, violates "single source"
            stampversion="""python -c "import sys; id,num,branch=sys.argv[1:4]; print ('ECS_VERSION= \\'0.9-%s-%s-%s\\'' % (num,id,branch))" `hg -q identify --id --num --branch` > ecs/version.py"""
            _repo_clone (env.targetbasedir, env.targetsrcdir, env.apprepo, env.appbranch, stampversion)

        if ('envbaseline' in components):
            abort("unfinished")

        if ('envclear' in components):
            # TODO: refactor whole function to object and run envboot,envupdate after envclear
            run("if test -d %s; then rm -r %s; fi" % (env.targetenvdir, env.targetenvdir))
            run("if test -d %s; then rm -r %s; fi" % (env.targetjoin(env.targetsrcdir, 'download-cache'), env.targetjoin(env.targetsrcdir, 'download-cache')))

        with cd(env.targetsrcdir):
            if ('envboot' in components):               
                run("./bootstrap.py %s" % env.targetenvdir)
            if ('envupdate' in components):
                run("%s; fab appreq:ecs,flavor=%s,only_list=True; fab appenv:ecs,flavor=%s" % (env.activate, env.appenv, env.appenv))
            if ('envupgrade' in components):
                run("%s; fab appenv:ecs,flavor=%s,upgrade=True" % (env.activate, env.appenv))
        
        if 'daemonsconfig' in components:
            abort("unimplemented")
        
        if ('apacheconfig' in components): 
            abort("needs refactoring")
            with cd(env.targetconfdir):
                # FIXME: apache.conf and apache.wsgi should be rendered as template and updated every time we get called here
                run("if test ! -e apache.conf/%s; then cp %s apache.conf/%s; fi" % \
                    ("".join((env.appname,'-',env.apacheconf)), env.targetjoin(env.targetappdir, env.apacheconf), "".join((env.appname,'-',env.apacheconf))))
                # FIXME if we override apache.wsgi, we should think of a safe way to touch the wsgi for reloading the app
                run("if test ! -e apache.wsgi/%s; then cd apache.wsgi; ln -s %s/%s %s; fi" % \
                    ("".join((env.appname,"-",env.appwsgi)), env.targetappdir, env.appwsgi, "".join((env.appname, "-", env.appwsgi))))
 
        if ('wsgiconfig' in components):
            run("%s; cd %s; fab app:ecs,wsgi_config,ecs" % (env.activate, env.targetappdir))
            
        if ('searchconfig' in components):
            with cd(env.targetsrcdir):
                run("%s; cd %s; %s build_solr_schema > %s" % (env.activate, env.targetappdir, env.manage, env.targetjoin(env.targetconfdir, "solr-schema.xml")))
                sudo("cp %s %s" % (env.targetjoin(env.targetconfdir, "solr-schema.xml"), env.targetjoin("/", "etc", "solr", "schema.xml")))
            
        if ('dbclear' in components):
            run("dropdb %s; createdb %s" % (env.user, env.user))
            
        if 'dbupdate' in components:
            with cd(env.targetconfdir):
                run("%s; cd %s; ./manage.py syncdb --noinput; ./manage.py migrate --noinput --all; ./manage.py bootstrap" % (env.activate, env.targetappdir))

        if 'searchupdate' in components:
            with cd(env.targetconfdir):
                run("%s; cd %s; if test -d woosh_index; then rm -rf woosh_index; fi; ./manage.py rebuild_index" % (env.activate, env.targetappdir))

        if 'massimport' in components:
            with cd(env.targetconfdir):
                run("%s; cd %s; ./manage.py massimport -t ../docs/incoming/ethikkommission/legacy_import/mai-meeting.doc", (env.activate, env.targetappdir))
                run("%s; cd %s; ./manage.py massimport -c ../docs/incoming/ethikkommission/legacy_import/mai-meeting.categorize", (env.activate, env.targetappdir))

        if 'daemonsstart' in components:
            run("sudo /sbin/start %s" % env.appname+ "-mainapp_celeryd-"+ env.user)
            run("sudo /sbin/start %s" % env.appname+ "-mailserver-"+ env.user)
            
        if 'wsgireload' in components:
            run("touch %s" % (env.targetjoin(env.targetconfdir,"apache.wsgi","".join((env.appname,"-", env.appwsgi)))))

        if 'apacherestart' in components:
            with cd(env.targetsrcdir):
                run("%s; fab apache:restart" % (env.activate))