Эх сурвалжийг харах

HUE-6144 [oozie] Add generic XSL template to workflow graph parser

krish 8 жил өмнө
parent
commit
e0546af

+ 1 - 0
apps/oozie/src/oozie/importlib/xslt2/workflows/0.5/action.xslt

@@ -28,6 +28,7 @@
 <xsl:import href="nodes/pig.xslt"/>
 <xsl:import href="nodes/streaming.xslt"/>
 <xsl:import href="nodes/subworkflow.xslt"/>
+<xsl:import href="nodes/generic.xslt"/>
 
 <xsl:template match="workflow5:action | workflow4:action" xmlns:workflow5="uri:oozie:workflow:0.5" xmlns:workflow4="uri:oozie:workflow:0.4">
   {

+ 2 - 5
apps/oozie/src/oozie/importlib/xslt2/workflows/0.5/nodes/generic.xslt

@@ -1,12 +1,9 @@
 <?xml version="1.0"?>
 
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:workflow5="uri:oozie:workflow:0.5" xmlns:workflow4="uri:oozie:workflow:0.4">
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
-<xsl:import href="fields/xml.xslt"/>
 
-<xsl:template match="workflow5:*[local-name()!='decision' and local-name()!='end' and local-name()!='fork' and local-name()!='fs' and local-name()!='java' and local-name()!='join' and local-name()!='kill' and local-name()!='map-reduce' and local-name()!='pig' and local-name()!='start' and local-name()!='streaming' and local-name()!='subworkflow' and local-name()!='distcp' and local-name()!='email' and local-name()!='hive' and local-name()!='shell' and local-name()!='sqoop' and local-name()!='ssh' and local-name()!='ok' and local-name()!='error'] | workflow4:*[local-name()!='decision' and local-name()!='end' and local-name()!='fork' and local-name()!='fs' and local-name()!='java' and local-name()!='join' and local-name()!='kill' and local-name()!='map-reduce' and local-name()!='pig' and local-name()!='start' and local-name()!='streaming' and local-name()!='subworkflow' and local-name()!='distcp' and local-name()!='email' and local-name()!='hive' and local-name()!='shell' and local-name()!='sqoop' and local-name()!='ssh' and local-name()!='ok' and local-name()!='error']" xmlns:workflow5="uri:oozie:workflow:0.5" xmlns:workflow4="uri:oozie:workflow:0.4">
-
-  ,"generic": {<xsl:call-template name="xml"/>}
+<xsl:template match="*[name()!='decision' and name()!='end' and name()!='fork' and name()!='fs' and name()!='java' and name()!='join' and name()!='kill' and name()!='map-reduce' and name()!='pig' and name()!='start' and name()!='streaming' and name()!='sub-workflow' and name()!='distcp' and name()!='email' and name()!='hive' and name()!='hive2' and name()!='shell' and name()!='sqoop' and name()!='ssh' and name()!='ok' and name()!='error' and name()!='spark']">
 
 </xsl:template>
 

+ 31 - 0
apps/oozie/src/oozie/models2_tests.py

@@ -1037,6 +1037,37 @@ class TestExternalWorkflowGraph(object):
     assert_equal(workflow_data['layout'][0]['rows'][1]['widgets'][0]['widgetType'], 'spark-widget')
     assert_true(len(workflow_data['workflow']['nodes'][1]['children']) == 2)
 
+  def test_gen_workflow_data_for_xml_with_generic_nodes(self):
+    self.wf.definition = """<workflow-app name="Test" xmlns="uri:oozie:workflow:0.5" xmlns:sla="uri:oozie:sla:0.2">
+        <start to="email-0aaa"/>
+        <kill name="Kill">
+            <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
+        </kill>
+        <action name="email-0aaa">
+            <email xmlns="uri:oozie:email-action:0.2">
+                <to>test</to>
+                <subject>test</subject>
+                <body>test</body>
+                <content_type>text/plain</content_type>
+            </email>
+            <ok to="End"/>
+            <error to="Kill"/>
+              <sla:info>
+                <sla:nominal-time>${nominal_time}</sla:nominal-time>
+                <sla:should-start>10</sla:should-start>
+                <sla:should-end>${30 * MINUTES}</sla:should-end>
+              </sla:info>
+        </action>
+        <end name="End"/>
+    </workflow-app>
+    """
+
+    workflow_data = Workflow.gen_workflow_data_from_xml(self.user, self.wf)
+
+    assert_true(len(workflow_data['layout'][0]['rows']) == 4)
+    assert_true(len(workflow_data['workflow']['nodes']) == 4)
+    assert_equal(workflow_data['layout'][0]['rows'][1]['widgets'][0]['widgetType'], 'email-widget')
+    assert_true(len(workflow_data['workflow']['nodes'][1]['children']) == 2)
 
 class TestModelAPI(OozieMockBase):