Example #1
0
def _(s, **kwargs):
    if kwargs:
        params = dict((k,v) for (k,v) in env.items() + kwargs.items())    
    else:
        params = env

    return s.format(**params)
Example #2
0
def app_settings(**kwargs):
    """ Manages django settings file """

    settings_present = fabtools.files.is_file(path=env.previous_settings_file, use_sudo=True)

    # if values are set within the --set option on command line
    kwargs.update({key: value for key, value in env.items() if key in env.map_settings})

    if settings_present:
        fabric.api.execute(extract_settings)

    else:
        if "secret_key" in env.map_settings:
            fabric.api.execute(generate_secret_key)

    for map_setting, setting_value in kwargs.items():
        if setting_value:
            setattr(env, map_setting, setting_value)

    fabric.api.require(*env.map_settings.keys())
    settings_dir = os.path.join(env.local_tmp_root_app_package, "settings")

    fabtools.files.upload_template(
        "%s.py" % env.goal,
        env.remote_settings_file,
        template_dir=settings_dir,
        context=env,
        use_sudo=True,
        user=env.remote_owner,
        mode="644",
        chown=True,
        use_jinja=True,
    )
 def wrapper(*args, **kwargs):
     setattr(env, host_type, {})
     for k, v in env.items():
         if k.startswith(host_type):
             getattr(env, host_type)[k.replace('%s_' % host_type, '')] = v
     with settings(**getattr(env, host_type)):
         return func(*args, **kwargs)
Example #4
0
def app_settings(**kwargs):
    """ Manages django settings file """

    settings_present = fabtools.files.is_file(path=env.previous_settings_file,
                                              use_sudo=True)

    # if values are set within the --set option on command line
    kwargs.update(
        {key: value
         for key, value in env.items() if key in env.map_settings})

    if settings_present:
        fabric.api.execute(extract_settings)

    else:
        if "secret_key" in env.map_settings:
            fabric.api.execute(generate_secret_key)

    for map_setting, setting_value in kwargs.items():
        if setting_value:
            setattr(env, map_setting, setting_value)

    fabric.api.require(*env.map_settings.keys())
    settings_dir = os.path.join(env.local_tmp_root_app_package, 'settings')

    fabtools.files.upload_template('%s.py' % env.goal,
                                   env.remote_settings_file,
                                   template_dir=settings_dir,
                                   context=env,
                                   use_sudo=True,
                                   user=env.remote_owner,
                                   mode='644',
                                   chown=True,
                                   use_jinja=True)
Example #5
0
def zappa_env():
    orig_shell = env['shell']
    env_vars_str = ' '.join('{0}={1}'.format(key, value)
                            for key, value in env.items())
    env['shell'] = '{0} {1}'.format(env_vars_str, orig_shell)
    yield
    env['shell'] = orig_shell
Example #6
0
def vacuum_indexes(apps):
    """
    Vacuum indexes for apps.
    """
    app_defns = get_app_definitions(apps.split(';'))
    for app_defn in app_defns:
        local("%(appcfg)s --oauth2 -A %(application)s vacuum_indexes ." %
              (dict(env.items() + app_defn.items())))
Example #7
0
def vacuum_indexes(apps):
    """
    Vacuum indexes for apps.
    """
    app_defns = get_app_definitions(apps.split(';'))
    for app_defn in app_defns:
        local("%(appcfg)s --oauth2 -A %(application)s vacuum_indexes ." % (
            dict(env.items() + app_defn.items()))
        )
Example #8
0
def get_vars(prefix=None):
    rv = {}
    for key, value in env.items():
        if not prefix:
            rv[key] = value
            continue
        if key.startswith(prefix):
            rv[key.replace(prefix, '')] = value
    return rv
Example #9
0
def envs():
    ''' 环境变量 '''
    from prettytable import PrettyTable
    tab = PrettyTable(["KEY", "VALUE"])
    tab.align["KEY"] = "l"
    tab.align["VALUE"] = "l"
    tab.padding_width = 1

    _ = [tab.add_row([k, v]) for k, v in env.items() if k != 'excludes']
    print(tab)
def printenv():
    """
    Print out the Fabric env settings.
    """
    # Load settings from the config file
    loadconfig()

    # Loop through the Fabric env
    for k, v in sorted(env.items()):
        # Print out each setting
        print("{}:{}".format(k, v))
Example #11
0
 def wrapper(*args, **kwargs):
     setattr(env, host_type, {})
     for k, v in env.items():
         if k.startswith(host_type):
             key = k.replace('%s_' % host_type, '')
             if key in BOOLEAN_SETTINGS and isinstance(v, basestring):
                 v = eval(v)
             getattr(env, host_type)[key] = v
     for default in DEFAULTS:
         if not hasattr(env, default):
             setattr(env, default, DEFAULTS[default])
     with settings(**getattr(env, host_type)):
         return func(*args, **kwargs)
Example #12
0
def fs():
    """
        Create some empty dirs for the static and config files.
    """
    for name, value in env.items():
        if name.endswith('dir') and 'local' not in name:
            require.directory(value, owner=env.user)

    if not exists(env.settings_dir / 'local_settings.py'):
        append(env.local_settings, ('# -*- coding: utf-8 -*-\n\n'
                                    'from __future__ import unicode_literals, '
                                    'absolute_import\n\n'
                                    'from .{} import *\n\n').format(env.stage))
Example #13
0
 def wrapper(*args, **kwargs):
     setattr(env, host_type, {})
     for k, v in env.items():
         if k.startswith(host_type):
             key = k.replace('%s_' % host_type, '')
             if key in BOOLEAN_SETTINGS and isinstance(v, basestring):
                 v = eval(v)
             getattr(env, host_type)[key] = v
     for default in DEFAULTS:
         if not hasattr(env, default):
             setattr(env, default, DEFAULTS[default])
     with settings(**getattr(env, host_type)):
         return func(*args, **kwargs)
Example #14
0
def perform_env_substitutions():
    """ Do recursive substitution until the value doesn't change
    Change the type of some env variable that should not be string
    """
    for key, value in env.items():
        if isinstance(env[key], basestring):
            old_value = env[key]
            while True:  #
                value = old_value.format(**env)
                if value == old_value:
                    break
                old_value = value
            env[key] = value
    if getattr(env, 'USE_SUPERVISOR', 'False') == 'False':
        env.USE_SUPERVISOR = False
Example #15
0
def perform_env_substitutions():
    """ Do recursive substitution until the value doesn't change
    Change the type of some env variable that should not be string
    """
    for key, value in env.items():
        if isinstance(env[key], basestring):
            old_value = env[key]
            while True:  #
                value = old_value.format(**env)
                if value == old_value:
                    break
                old_value = value
            env[key] = value
    if getattr(env, 'USE_SUPERVISOR', 'False') == 'False':
        env.USE_SUPERVISOR = False
Example #16
0
def load_env():
    env.ccc_environment = get_environment(env.env_name)
    vars_not_to_overwrite = {key: value for key, value in env.items()
                             if key not in ('sudo_user', 'keepalive')}

    vars = env.ccc_environment.translated_app_processes_config.to_json()
    vars.update(env.ccc_environment.fab_settings_config.to_json())
    # Variables that were already in `env`
    # take precedence over variables set in app-processes.yml
    # except a short blacklist that we expect app-processes.yml vars to overwrite
    overlap = set(vars_not_to_overwrite) & set(vars)
    for key in overlap:
        print('NOTE: ignoring app-processes.yml var {}={!r}. Using value {!r} instead.'.format(key, vars[key], vars_not_to_overwrite[key]))
    vars.update(vars_not_to_overwrite)
    env.update(vars)
    env.deploy_env = env.ccc_environment.meta_config.deploy_env
Example #17
0
def record_manifest():
    """
    Called after a deployment to record any data necessary to detect changes
    for a future deployment.
    """
    data = {}
    # Record settings.
    data['settings'] = dict(
        (k, v)
        for k, v in env.items()
        if not isinstance(v, types.GeneratorType) and k.strip() and not k.startswith('_') and not callable(v)
    )
    # Record tarball hash.
    # Record database migrations.
    # Record media hash.
    return data
Example #18
0
def load_env():
    env.ccc_environment = get_environment(env.env_name)
    vars_not_to_overwrite = {key: value for key, value in env.items()
                             if key not in ('sudo_user', 'keepalive')}

    vars = env.ccc_environment.app_processes_config.to_json()
    vars.update(env.ccc_environment.fab_settings_config.to_json())
    # Variables that were already in `env`
    # take precedence over variables set in app-processes.yml
    # except a short blacklist that we expect app-processes.yml vars to overwrite
    overlap = set(vars_not_to_overwrite) & set(vars)
    for key in overlap:
        print('NOTE: ignoring app-processes.yml var {}={!r}. Using value {!r} instead.'.format(key, vars[key], vars_not_to_overwrite[key]))
    vars.update(vars_not_to_overwrite)
    env.update(vars)
    env.deploy_env = env.ccc_environment.meta_config.deploy_env
Example #19
0
def format_definition():

    defs = dict(env.items())
    cals = {}

    def _apply_basic(val):
        if not isinstance(val, str):
            return val
        keys = re.findall(r'%\(([^)]*)\)', val)
        ctx = {
            k: _format_basic(k)
            for k in keys
        }
        return val % ctx

    def _format_basic(key):
        if key in cals:
            return cals[key]
        elif not isinstance(key, str):
            cals[key] = defs[key]
            return cals[key]
        else:
            cals[key] = _apply_basic(defs[key])
            return cals[key]

    def _format_structure(structure, key):
        if isinstance(structure, str):
            return _apply_basic(structure)
        elif not isinstance(structure, (list, dict)):
            return structure
        elif isinstance(structure, list):
            cals[key] = [_format_structure(elem, key) for elem in structure]
            return cals[key]
        else:
            cals[key] = {k: _format_structure(structure[k], key) for k in structure}
            return cals[key]

    for key in defs:
        if isinstance(defs[key], (int, str, long, bool, )):
            _format_basic(key)

    for key in defs:
        if isinstance(defs[key], (list, dict, )):
            _format_structure(defs[key], key)

    return cals
Example #20
0
def perform_env_substitutions():
	""" Do recursive substitution until the value doesn't change
	Change the type of some env variable that should not be string
	"""
	for key, value in env.items():
		if isinstance(env[key], basestring):
			old_value = env[key]
			while True:
				value = old_value.format(**env)
				if value == old_value:
					break
				old_value = value
			env[key] = value
	if env.USE_SUPERVISOR == 'False':
		env.USE_SUPERVISOR = False
	if env.USE_SUPERVISOR and not env.SUPERVISOR_JOBNAME:
		print "Please specify the SUPERVISOR_JOBNAME to use Supervisor"
		sys.exit(1)
Example #21
0
def format_definition():
    def _format(key, defs, cals):
        if key in cals:
            return cals[key]
        elif not isinstance(defs[key], str):
            cals[key] = defs[key]
            return defs[key]
        else:
            keys = re.findall(r'%\(([^)]*)\)', defs[key])
            ctx = {k: _format(k, defs, cals) for k in keys}
            cals[key] = defs[key] % ctx
            return cals[key]

    defs = dict(env.items())
    cals = {}

    for key in defs:
        _format(key, defs, cals)

    return cals
Example #22
0
def test_env_obj():
    #     with settings(host_string="liang@dev"):
    for (index, (key, value)) in enumerate(sorted(env.items())):
        print("{}: {} = {}".format(index, key, value))
Example #23
0
def print_env():
    for k,v in env.items():
        puts("%s : %s" % ( yellow(k),v ) )