瀏覽代碼

[oozie] Try to offer a workflow dashboard graph even if submitted from CLI

Cleanup unused function and re-use the XML parsing from v1
Romain Rigaux 10 年之前
父節點
當前提交
9add49f

+ 0 - 29
apps/oozie/src/oozie/importlib/workflows.py

@@ -686,35 +686,6 @@ def import_workflow(workflow, workflow_definition, metadata=None, fs=None):
 
   return import_workflow_root(workflow, workflow_definition_root, metadata, fs)
 
-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
-
 
 class MalformedWfDefException(Exception):
   pass

+ 0 - 14
apps/oozie/src/oozie/models2.py

@@ -40,7 +40,6 @@ from liboozie.submission2 import Submission
 from liboozie.submission2 import create_directories
 
 from oozie.conf import REMOTE_SAMPLE_DIR
-from oozie.importlib.workflows import generate_v2_graph_nodes, MalformedWfDefException, InvalidTagWithNamespaceException
 from oozie.utils import utc_datetime_format
 from hadoop.fs.exceptions import WebHdfsException
 
@@ -297,19 +296,6 @@ class Workflow(Job):
   def get_application_path_key(cls):
     return 'oozie.wf.application.path'
 
-  @classmethod
-  def gen_workflow_data_from_xml(cls, user, oozie_workflow):
-    try:
-      return generate_v2_graph_nodes(oozie_workflow.definition)
-    except MalformedWfDefException, e:
-      LOG.exception(_("Could not find any nodes in Workflow definition. Maybe it's malformed?"))
-    except InvalidTagWithNamespaceException, e:
-      LOG.exception(_("Tag with namespace %(namespace)s is not valid. Please use one of the following namespaces: %(namespaces)s") % {
-      'namespace': e.namespace,
-      'namespaces': e.namespaces
-      })
-    return []
-
 
 class Node():
   def __init__(self, data):

+ 5 - 2
apps/oozie/src/oozie/views/dashboard.py

@@ -328,9 +328,12 @@ def list_oozie_workflow(request, job_id):
         new_workflow = get_workflow()(document=doc)
         workflow_data = new_workflow.get_data()
         credentials = Credentials()
-      #TODO: For workflows submitted from CLI in https://issues.cloudera.org/browse/HUE-2659
+      else:
+        # For workflows submitted from CLI or deleted in the editor
+        # Until better parsing in https://issues.cloudera.org/browse/HUE-2659
+        workflow_graph, full_node_list = OldWorkflow.gen_status_graph_from_xml(request.user, oozie_workflow)
     except:
-      LOG.exception("Ignoring error updating Document2 record for job_id=%s", job_id)
+      LOG.exception("Error generating full page for running workflow %s" % job_id)
   else:
     history = get_history().cross_reference_submission_history(request.user, job_id)