def check(yaml_file_path):
    graph1 = OozieGraph.from_yaml_dump(
        read_as_string(__name__, yaml_file_path))
    yaml_str1 = graph1.to_yaml_dump()
    graph2 = OozieGraph.from_yaml_dump(yaml_str1)
    yaml_str2 = graph2.to_yaml_dump()
    assert yaml_str1 == yaml_str2
    assert graph1 == graph2
Example #2
0
def read(xml_string):
    """ Read Oozie XML workflow definition

    Args:
        xml_string (string): Oozie XML

    Returns:
        OozieGraph
    """
    root = ET.fromstring(__remove_namespaces(xml_string))
    ignore_tags = ['global']
    independently_handled_tags = ['parameters']
    handlers_register = {
        'fork': handle_fork,
        'decision': handle_decision,
        'action': handle_action,
        'join': handle_join,
        'start': handle_start,
        'end': handle_end,
        'kill': handle_kill
    }

    nodes_register = {}
    parameters = {}
    for child in root:
        tag_name = child.tag
        if tag_name not in (list(handlers_register.keys()) +
                            independently_handled_tags + ignore_tags):
            raise Exception('tag "{}" encountered which is neither '
                            'ignored nor handled'.format(tag_name))
        if tag_name in ignore_tags:
            pass
        elif tag_name in independently_handled_tags:
            if tag_name == 'parameters':
                parameters = properties_to_dict(child)
        else:
            try:
                (name, node) = handlers_register[tag_name](child)
                nodes_register[name] = node
            except Exception:
                tag_string = ET.tostring(child, encoding='utf8', method='xml')
                print('Error occurred while analyzing tag "{}"'.format(
                    tag_string),
                      file=sys.stderr)
                raise
    return OozieGraph(parameters, nodes_register)
Example #3
0
def convert_oozie_yaml_to_pipeline(oozie_workflow_file_path):
    oozie_yaml = read_as_string(__name__, oozie_workflow_file_path)
    oozie_graph = OozieGraph.from_yaml_dump(oozie_yaml)
    pipeline = convert(oozie_graph, IISPipelineConverter())
    return pipeline
Example #4
0
def check(oozie_workflow_file_path, expected_pipeline_file_path):
    oozie_workflow = read_as_string(__name__, oozie_workflow_file_path)
    actual = vipe.oozie.reader.reader.read(oozie_workflow)
    expected_yaml = read_as_string(__name__, expected_pipeline_file_path)
    expected = OozieGraph.from_yaml_dump(expected_yaml)
    assert expected == actual
Example #5
0
def convert_oozie_yaml_to_pipeline(oozie_workflow_file_path):
    oozie_yaml = read_as_string(__name__, oozie_workflow_file_path)
    oozie_graph = OozieGraph.from_yaml_dump(oozie_yaml)
    pipeline = convert(oozie_graph, IISPipelineConverter())
    return pipeline