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)
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)
def __get_configuration(action_elem): configuration = {} configuration_elem = action_elem.find('configuration') if configuration_elem is not None: configuration = properties_to_dict(configuration_elem) return configuration