Преглед изворни кода

[oozie] Import workflow with Email action

Import workflow definition with email action.
New testcase validating import.
abec пре 13 година
родитељ
комит
dfe5071

+ 16 - 0
apps/oozie/src/oozie/test_data/0.4/test-email.0.1.xml

@@ -0,0 +1,16 @@
+<workflow-app name="Email" xmlns="uri:oozie:workflow:0.4">
+    <start to="Email"/>
+    <action name="Email">
+        <email xmlns="uri:oozie:email-action:0.1">
+            <to>example@example.org</to>
+            <subject>I love</subject>
+            <body>Hue</body>
+        </email>
+        <ok to="end"/>
+        <error to="kill"/>
+    </action>
+    <kill name="kill">
+        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
+    </kill>
+    <end name="end"/>
+</workflow-app>

+ 20 - 0
apps/oozie/src/oozie/tests.py

@@ -1278,6 +1278,26 @@ class TestEditor(OozieMockBase):
     workflow.delete()
 
 
+  def test_import_workflow_email(self):
+    """
+    Validates import for email node: to, css, subject, body.
+    """
+    workflow = Workflow.objects.new_workflow(self.user)
+    workflow.save()
+    f = open('apps/oozie/src/oozie/test_data/0.4/test-email.0.1.xml')
+    import_workflow(workflow, f.read())
+    f.close()
+    workflow.save()
+    assert_equal(4, len(Node.objects.filter(workflow=workflow)))
+    assert_equal(3, len(Link.objects.filter(parent__workflow=workflow)))
+    node = Node.objects.get(workflow=workflow, node_type='email').get_full_node()
+    assert_equal('example@example.org', node.to)
+    assert_equal('', node.cc)
+    assert_equal('I love', node.subject)
+    assert_equal('Hue', node.body)
+    workflow.delete()
+
+
 class TestPermissions(OozieBase):
 
   def setUp(self):

+ 1 - 0
apps/oozie/src/oozie/xslt/0.4/action.xslt

@@ -3,6 +3,7 @@
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:workflow="uri:oozie:workflow:0.4" exclude-result-prefixes="workflow">
 
 <xsl:import href="extensions/distcp.0.1.xslt"/>
+<xsl:import href="extensions/email.0.1.xslt"/>
 <xsl:import href="extensions/hive.0.1.xslt"/>
 <xsl:import href="extensions/hive.0.2.xslt"/>
 <xsl:import href="extensions/shell.0.1.xslt"/>

+ 30 - 0
apps/oozie/src/oozie/xslt/0.4/extensions/email.0.1.xslt

@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:workflow="uri:oozie:workflow:0.4" xmlns:email="uri:oozie:email-action:0.1" exclude-result-prefixes="workflow email">
+
+<xsl:template match="email:email">
+
+  <object model="oozie.email" pk="0">
+
+    <field name="to" type="CharField">
+      <xsl:value-of select="*[local-name()='to']"/>
+    </field>
+
+    <field name="cc" type="CharField">
+      <xsl:value-of select="*[local-name()='cc']"/>
+    </field>
+
+    <field name="subject" type="CharField">
+      <xsl:value-of select="*[local-name()='subject']"/>
+    </field>
+
+    <field name="body" type="CharField">
+      <xsl:value-of select="*[local-name()='body']"/>
+    </field>
+
+  </object>
+
+</xsl:template>
+
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
+</xsl:stylesheet>