Exemplo n.º 1
0
def render(template_file, env='', sls=''):
    '''
    Render the data passing the functions and grains into the rendering system
    '''
    if not os.path.isfile(template_file):
        return {}

    tmp_data = salt.utils.templates.wempy(
            template_file,
            True,
            salt=__salt__,
            grains=__grains__,
            opts=__opts__,
            pillar=__pillar__,
            env=env,
            sls=sls)
    if not tmp_data.get('result', False):
        raise SaltRenderError(tmp_data.get('data',
            'Unknown render error in yaml_wempy renderer'))
    yaml_data = tmp_data['data']
    with warnings.catch_warnings(record=True) as warn_list:
        data = load(yaml_data, Loader=CustomLoader)
        if len(warn_list) > 0:
            for item in warn_list:
                log.warn("{warn} found in {file_}".format(
                        warn=item.message, file_=template_file))
        return data
Exemplo n.º 2
0
def __load_compose_definitions(path, definition):
    '''
    Will load the compose file located at path
    Then determines the format/contents of the sent definition

    err or results are only set if there were any

    :param path:
    :param definition:
    :return tuple(compose_result, loaded_definition, err):
    '''
    compose_result, err = __load_docker_compose(path)
    if err:
        return None, None, err
    if isinstance(definition, dict):
        return compose_result, definition, None
    elif definition.strip().startswith('{'):
        try:
            loaded_definition = json.deserialize(definition)
        except json.DeserializationError as jerr:
            msg = 'Could not parse {0} {1}'.format(definition, jerr)
            return None, None, __standardize_result(False, msg,
                                              None, None)
    else:
        try:
            loaded_definition = yaml.load(definition)
        except yaml.YAMLError as yerr:
            msg = 'Could not parse {0} {1}'.format(definition, yerr)
            return None, None, __standardize_result(False, msg,
                                              None, None)
    return compose_result, loaded_definition, None
Exemplo n.º 3
0
def render(template_file, env='', sls=''):
    '''
    Render the data passing the functions and grains into the rendering system
    '''
    if not os.path.isfile(template_file):
        return {}

    tmp_data = salt.utils.templates.jinja(template_file,
                                          True,
                                          salt=__salt__,
                                          grains=__grains__,
                                          opts=__opts__,
                                          pillar=__pillar__,
                                          env=env,
                                          sls=sls)
    if not tmp_data.get('result', False):
        raise SaltRenderError(
            tmp_data.get('data',
                         'Unknown render error in yaml_jinja renderer'))
    yaml_data = tmp_data['data']
    with warnings.catch_warnings(record=True) as warn_list:
        data = load(yaml_data, Loader=CustomLoader)
        if len(warn_list) > 0:
            for item in warn_list:
                log.warn("{warn} found in {file_}".format(warn=item.message,
                                                          file_=template_file))
        return data
Exemplo n.º 4
0
def render(template, env='', sls=''):
    '''
    Render the data passing the functions and grains into the rendering system
    '''
    if not os.path.isfile(template):
        return {}

    passthrough = {}
    passthrough['salt'] = __salt__
    passthrough['grains'] = __grains__
    passthrough['pillar'] = __pillar__
    passthrough['env'] = env
    passthrough['sls'] = sls

    template = Template(open(template, 'r').read())
    yaml_data = template.render(**passthrough)


    yaml_data = template.render(**passthrough)
    with warnings.catch_warnings(record=True) as warn_list:
        data = load(yaml_data, Loader=CustomLoader)
        if len(warn_list) > 0:
            for item in warn_list:
                log.warn("{warn} found in {file_}".format(
                        warn=item.message, file_=template_file))
        return data
Exemplo n.º 5
0
def __load_docker_compose(path):
    '''
    Read the compose file and load its' contents

    :param path:
    :return:
    '''
    file_path = __get_docker_file_path(path)
    if file_path is None:
        msg = 'Could not find docker-compose file at {0}'.format(path)
        return None, __standardize_result(False, msg, None, None)
    if not os.path.isfile(file_path):
        return None, __standardize_result(
            False, 'Path {} is not present'.format(file_path), None, None)
    try:
        with salt.utils.files.fopen(file_path, 'r') as fl:
            loaded = yaml.load(fl)
    except EnvironmentError:
        return None, __standardize_result(
            False, 'Could not read {0}'.format(file_path), None, None)
    except yaml.YAMLError as yerr:
        msg = 'Could not parse {0} {1}'.format(file_path, yerr)
        return None, __standardize_result(False, msg, None, None)
    if not loaded:
        msg = 'Got empty compose file at {0}'.format(file_path)
        return None, __standardize_result(False, msg, None, None)
    if 'services' not in loaded:
        loaded['services'] = {}
    result = {
        'compose_content': loaded,
        'file_name': os.path.basename(file_path)
    }
    return result, None
Exemplo n.º 6
0
 def _run_pepper_cli(*args, **kwargs):
     sys.argv = ['pepper', '-p',
                 kwargs.pop('profile', 'main')] + def_args + list(args)
     exitcode = pepper.script.Pepper()()
     try:
         with open(output_file, 'r') as result:
             try:
                 return yaml.load(result)
             except yaml.parser.ParserError:
                 result.seek(0)
                 return [
                     yaml.load('{0}}}'.format(ret).strip('"'))
                     for ret in result.read().split('}"\n') if ret
                 ]
     except Exception as exc:
         log.error('ExitCode %s: %s', exitcode, exc)
         return exitcode
Exemplo n.º 7
0
def render(yaml_data, env="", sls="", argline="", **kws):
    """
    Accepts YAML as a string or as a file object and runs it through the YAML
    parser.

    :rtype: A Python data structure
    """
    if not isinstance(yaml_data, basestring):
        yaml_data = yaml_data.read()
    with warnings.catch_warnings(record=True) as warn_list:
        data = load(yaml_data, Loader=get_yaml_loader(argline))
        if len(warn_list) > 0:
            for item in warn_list:
                log.warn("{warn} found in salt://{sls} environment={env}".format(warn=item.message, sls=sls, env=env))
        return data if data else {}
Exemplo n.º 8
0
def render(yaml_data, env='', sls='', argline='', **kws):
    '''
    Accepts YAML as a string or as a file object and runs it through the YAML
    parser.

    :rtype: A Python data structure
    '''
    if not isinstance(yaml_data, basestring):
        yaml_data = yaml_data.read()
    with warnings.catch_warnings(record=True) as warn_list:
        data = load(yaml_data, Loader=get_yaml_loader(argline))
        if len(warn_list) > 0:
            for item in warn_list:
                log.warn(
                    '{warn} found in salt://{sls} environment={env}'.format(
                        warn=item.message, sls=sls, env=env))
        return data if data else {}
Exemplo n.º 9
0
def __load_docker_compose(path):
    """
    Read the compose file and load its' contents

    :param path:
    :return:
    """
    file_path = __get_docker_file_path(path)
    if file_path is None:
        msg = "Could not find docker-compose file at {}".format(path)
        return None, __standardize_result(False, msg, None, None)
    if not os.path.isfile(file_path):
        return (
            None,
            __standardize_result(False,
                                 "Path {} is not present".format(file_path),
                                 None, None),
        )
    try:
        with salt.utils.files.fopen(file_path, "r") as fl:
            loaded = yaml.load(fl)
    except OSError:
        return (
            None,
            __standardize_result(False, "Could not read {}".format(file_path),
                                 None, None),
        )
    except yaml.YAMLError as yerr:
        msg = "Could not parse {} {}".format(file_path, yerr)
        return None, __standardize_result(False, msg, None, None)
    if not loaded:
        msg = "Got empty compose file at {}".format(file_path)
        return None, __standardize_result(False, msg, None, None)
    if "services" not in loaded:
        loaded["services"] = {}
    result = {
        "compose_content": loaded,
        "file_name": os.path.basename(file_path)
    }
    return result, None
Exemplo n.º 10
0
def test_local_poll_timeout(pepper_cli, session_minion_id):
    '''Test the returns poller for localclient'''
    ret = pepper_cli('--run-uri', '--timeout=5', '--fail-if-incomplete', '*',
                     'test.sleep', '10')
    assert yaml.load(ret) == {'Failed': [session_minion_id]}