Exemple #1
0
def test_ping_by_grain(grain, runner_cfg=None, authtoken=None, planet_name=None):
    if authtoken is None:
        authtoken = get_saltapi_authtoken(runner_cfg)

    saltapi = SkySaltAPI(
        planet_name=planet_name,
        authtoken=authtoken
    )
    _, result = saltapi.test_ping(tgt=grain, **{'expr_form': 'grain'})

    return result['return']
Exemple #2
0
def get_host_by_grain(grain, runner_cfg=None, authtoken=None, planet_name=None):
    if authtoken is None:
        authtoken = get_saltapi_authtoken(runner_cfg)

    saltapi = SkySaltAPI(
        planet_name=planet_name,
        authtoken=authtoken
    )
    _, result = saltapi.grains_item(tgt=grain, expr_form='grain', arg=['host',])

    return result['return']
Exemple #3
0
def get_saltapi_authtoken(runner_cfg, planet_name=None):
    # acquire salt api connection
    api_creds = read_yaml_from_file(get_creds_file())
    api = SkySaltAPI(
        username=api_creds['username'],
        password=api_creds['password'],
        runner_cfg=runner_cfg,
        planet_name=planet_name,
    )
    api.authorize()
    return api.authtoken
Exemple #4
0
def update_service(stacks, service, runtime, update_plan, runner_cfg=None, authtoken=None,):

    # skybase provided plans
    skybase_update_plans = skybase.skytask.service.update.skybase_update_plans

    result = dict()

    if runtime.apply and update_plan in skybase_update_plans:
        if authtoken is None:
            authtoken = get_saltapi_authtoken(runner_cfg, planet_name=service.planet)

        saltapi = SkySaltAPI(
            planet_name=service.planet,
            authtoken=authtoken,
        )

        # update all roles in designated stacks
        for stack in stacks:
            # get salt grain identifying stacks in service
            stack_grain = service.stacks.stacks[stack].salt_grain_skybase_id

            # apply fixed/constant service update method to rerun cfn-init and chef
            _, upd_result = saltapi.update_service(
                tgt=stack_grain,
                action=skybase_update_plans.get(update_plan))

            result[stack] = {
                'saltapi': upd_result['return'],
                'stacks': stacks,
                'update_plan': update_plan,
            }

    else:
        # provide simple list of stacks designated for update
        result = {
            'stacks': stacks,
            'update_plan': update_plan,
        }

    return result