def generate_v2_graph_nodes(workflow_definition): # Parse Workflow Definition workflow_definition_root = etree.fromstring(workflow_definition) if workflow_definition_root is None: raise MalformedWfDefException() xslt_definition_fh = open("%(xslt_dir)s/workflow.xslt" % { 'xslt_dir': os.path.join(DEFINITION_XSLT2_DIR.get(), 'workflows') }) tag = etree.QName(workflow_definition_root.tag) schema_version = tag.namespace # Ensure namespace exists if schema_version not in OOZIE_NAMESPACES: raise InvalidTagWithNamespaceException(workflow_definition_root.tag) # Get XSLT parser = etree.XMLParser(resolve_entities=False) xslt = etree.parse(xslt_definition_fh, parser=parser) xslt_definition_fh.close() transform = etree.XSLT(xslt) # Transform XML using XSLT transformed_root = transform(workflow_definition_root) node_list = re.sub('[\s]', '', str(transformed_root)) node_list = json.loads(node_list) return [node for node in node_list if node]
def generate_v2_graph_nodes(workflow_definition): # Parse Workflow Definition if sys.version_info[0] > 2: # In Py3 anything like <?xml version="1.0" encoding="UTF-8"?> at the beginning # of a workflow XML cannot be parsed via etree.fromstring(), since the # workflow_definition string needs to be encoded. workflow_definition_root = etree.XML(workflow_definition.encode()) else: workflow_definition_root = etree.fromstring(workflow_definition) if workflow_definition_root is None: raise MalformedWfDefException() xslt_definition_fh = open("%(xslt_dir)s/workflow.xslt" % { 'xslt_dir': os.path.join(DEFINITION_XSLT2_DIR.get(), 'workflows') }) tag = etree.QName(workflow_definition_root.tag) schema_version = tag.namespace # Ensure namespace exists if schema_version not in OOZIE_NAMESPACES: raise InvalidTagWithNamespaceException(workflow_definition_root.tag) # Get XSLT parser = etree.XMLParser(resolve_entities=False) xslt = etree.parse(xslt_definition_fh, parser=parser) xslt_definition_fh.close() transform = etree.XSLT(xslt) # Transform XML using XSLT transformed_root = transform(workflow_definition_root) node_list = re.sub('[\s]', '', str(transformed_root)) node_list = json.loads(node_list) return [node for node in node_list if node]
def generate_v2_graph_nodes(workflow_definition): # Parse Workflow Definition workflow_definition_root = etree.fromstring(workflow_definition) if workflow_definition_root is None: raise MalformedWfDefException() xslt_definition_fh = open( "%(xslt_dir)s/workflow.xslt" % {'xslt_dir': os.path.join(DEFINITION_XSLT2_DIR.get(), 'workflows')}) tag = etree.QName(workflow_definition_root.tag) schema_version = tag.namespace # Ensure namespace exists if schema_version not in OOZIE_NAMESPACES: raise InvalidTagWithNamespaceException(workflow_definition_root.tag) # Get XSLT parser = etree.XMLParser(resolve_entities=False) xslt = etree.parse(xslt_definition_fh, parser=parser) xslt_definition_fh.close() transform = etree.XSLT(xslt) # Transform XML using XSLT transformed_root = transform(workflow_definition_root) node_list = re.sub('[\s]', '', str(transformed_root)) node_list = json.loads(node_list) return [node for node in node_list if node]
def generate_v2_graph_nodes(workflow_definition): # Parse Workflow Definition workflow_definition_root = etree.fromstring(workflow_definition) if workflow_definition_root is None: raise MalformedWfDefException() xslt_definition_fh = open( "%(xslt_dir)s/workflow.xslt" % {"xslt_dir": os.path.join(DEFINITION_XSLT2_DIR.get(), "workflows")} ) tag = etree.QName(workflow_definition_root.tag) schema_version = tag.namespace # Ensure namespace exists if schema_version not in OOZIE_NAMESPACES: raise InvalidTagWithNamespaceException(workflow_definition_root.tag) # Get XSLT xslt = etree.parse(xslt_definition_fh) xslt_definition_fh.close() transform = etree.XSLT(xslt) # Transform XML using XSLT transformed_root = transform(workflow_definition_root) node_list = str(transformed_root).replace("\n", "").replace(" ", "") node_list = json.loads(node_list) return node_list