Exemple #1
0
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]
Exemple #2
0
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]
Exemple #3
0
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]
Exemple #4
0
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