예제 #1
0
    def build_workflow_xml(self,
                           job_tracker,
                           name_node,
                           script,
                           prepare={},
                           job_xml=None,
                           configuration=None,
                           params={},
                           arguments={},
                           files=[],
                           archives=[]):

        self._add_jobtracker_namenode_elements(job_tracker, name_node)

        for k, v in prepare.items():
            self._add_to_prepare_element(k, v)

        self._add_job_xml_element(job_xml)
        self._add_configuration_elements(configuration)

        x.add_text_element_to_tag(self.doc, self.tag_name, 'script', script)

        x.add_equal_separated_dict(self.doc, self.tag_name, 'param', params)
        x.add_equal_separated_dict(self.doc, self.tag_name, 'argument',
                                   arguments)

        self._add_files_and_archives(files, archives)
예제 #2
0
    def _add_to_streaming_element(self, element, path):
        if element not in ['mapper', 'reducer']:
            raise ex.NotFoundException(element,
                                       message='"%s" child cannot be added to '
                                       'streaming element')

        x.get_and_create_if_not_exist(self.doc, self.tag_name, 'streaming')

        x.add_text_element_to_tag(self.doc, 'streaming', element, path)
예제 #3
0
    def __init__(self, name):
        self.doc = x.load_xml_document("service/edp/resources/workflow.xml", strip=True)
        self.tag_name = name

        x.add_child(self.doc, "action", self.tag_name)

        ok_elem = xml.parseString('<%s to="%s"/>' % ("ok", "end"))
        x.add_element(self.doc, "action", ok_elem.firstChild)
        error_elem = xml.parseString('<%s to="%s"/>' % ("error", "fail"))
        x.add_element(self.doc, "action", error_elem.firstChild)

        x.add_text_element_to_tag(self.doc, self.tag_name, "job-tracker", "${jobTracker}")
        x.add_text_element_to_tag(self.doc, self.tag_name, "name-node", "${nameNode}")
예제 #4
0
    def __init__(self, name):
        self.doc = x.load_xml_document("service/edp/resources/workflow.xml")
        self.tag_name = name

        x.add_child(self.doc, 'action', self.tag_name)

        ok_elem = xml.parseString('<%s to="%s"/>' % ("ok", "end"))
        x.add_element(self.doc, 'action', ok_elem.firstChild)
        error_elem = xml.parseString('<%s to="%s"/>' % ("error", "fail"))
        x.add_element(self.doc, 'action', error_elem.firstChild)

        x.add_text_element_to_tag(self.doc, self.tag_name, 'job-tracker',
                                  "${jobTracker}")
        x.add_text_element_to_tag(self.doc, self.tag_name, 'name-node',
                                  "${nameNode}")
예제 #5
0
    def build_workflow_xml(self, script, job_xml, prepare={},
                           configuration=None, params={},
                           files=[], archives=[]):

        for k, v in prepare.items():
            self._add_to_prepare_element(k, v)

        self._add_job_xml_element(job_xml)
        self._add_configuration_elements(configuration)

        x.add_text_element_to_tag(self.doc, self.tag_name,
                                  'script', script)

        x.add_equal_separated_dict(self.doc, self.tag_name, 'param', params)

        self._add_files_and_archives(files, archives)
예제 #6
0
    def test_get_if_not_exist_and_add_text_element(self):
        doc = self.create_default_doc()
        x.get_and_create_if_not_exist(doc, 'test', 'tag_to_add')
        self.assertEqual(
            doc.toprettyxml(indent="  "), """<?xml version="1.0" ?>
<test>
  <tag_to_add/>
</test>
""")
        x.add_text_element_to_tag(doc, 'tag_to_add', 'p', 'v')
        self.assertEqual(
            doc.toprettyxml(indent="  "), """<?xml version="1.0" ?>
<test>
  <tag_to_add>
    <p>v</p>
  </tag_to_add>
</test>
""")
예제 #7
0
    def test_get_if_not_exist_and_add_text_element(self):
        doc = self.create_default_doc()
        x.get_and_create_if_not_exist(doc, 'test', 'tag_to_add')
        self.assertEqual(doc.toprettyxml(indent="  "),
                         """<?xml version="1.0" ?>
<test>
  <tag_to_add/>
</test>
""")
        x.add_text_element_to_tag(doc, 'tag_to_add', 'p', 'v')
        self.assertEqual(doc.toprettyxml(indent="  "),
                         """<?xml version="1.0" ?>
<test>
  <tag_to_add>
    <p>v</p>
  </tag_to_add>
</test>
""")
예제 #8
0
    def build_workflow_xml(self,
                           main_class,
                           prepare={},
                           job_xml=None,
                           configuration=None,
                           java_opts=None,
                           arguments=[],
                           files=[],
                           archives=[]):

        for k, v in prepare.items():
            self._add_to_prepare_element(k, v)

        self._add_job_xml_element(job_xml)

        self._add_configuration_elements(configuration)

        x.add_text_element_to_tag(self.doc, self.tag_name, 'main-class',
                                  main_class)

        if java_opts:
            x.add_text_element_to_tag(self.doc, self.tag_name, 'java-opts',
                                      java_opts)

        for arg in arguments:
            x.add_text_element_to_tag(self.doc, self.tag_name, 'arg', arg)

        self._add_files_and_archives(files, archives)
예제 #9
0
    def build_workflow_xml(self, main_class,
                           prepare={},
                           job_xml=None,
                           configuration=None,
                           java_opts=None,
                           arguments=[],
                           files=[], archives=[]):

        for k, v in prepare.items():
            self._add_to_prepare_element(k, v)

        self._add_job_xml_element(job_xml)

        self._add_configuration_elements(configuration)

        x.add_text_element_to_tag(self.doc, self.tag_name,
                                  'main-class', main_class)

        if java_opts:
            x.add_text_element_to_tag(self.doc, self.tag_name,
                                      'java-opts', java_opts)

        for arg in arguments:
            x.add_text_element_to_tag(self.doc, self.tag_name,
                                      'arg', arg)

        self._add_files_and_archives(files, archives)
예제 #10
0
 def _add_job_xml_element(self, job_xml):
     if job_xml:
         x.add_text_element_to_tag(self.doc, self.tag_name, 'job-xml',
                                   job_xml)
예제 #11
0
 def _add_jobtracker_namenode_elements(self, job_tracker, name_node):
     x.add_text_element_to_tag(self.doc, self.tag_name, 'job-tracker',
                               job_tracker)
     x.add_text_element_to_tag(self.doc, self.tag_name, 'name-node',
                               name_node)
예제 #12
0
 def _add_job_xml_element(self, job_xml):
     if job_xml:
         x.add_text_element_to_tag(self.doc, self.tag_name,
                                   'job-xml', job_xml)
예제 #13
0
 def _get_xml_text(self, strip):
     doc = x.load_xml_document("service/edp/resources/workflow.xml", strip)
     x.add_child(doc, 'action', 'java')
     x.add_text_element_to_tag(doc, 'java', 'sometag', 'somevalue')
     return doc.toprettyxml(indent="  ").split("\n")
예제 #14
0
 def _get_xml_text(self, strip):
     doc = x.load_xml_document("service/edp/resources/workflow.xml", strip)
     x.add_child(doc, 'action', 'java')
     x.add_text_element_to_tag(doc, 'java', 'sometag', 'somevalue')
     return doc.toprettyxml(indent="  ").split("\n")
예제 #15
0
 def _add_jobtracker_namenode_elements(self, job_tracker, name_node):
     x.add_text_element_to_tag(self.doc, self.tag_name,
                               'job-tracker', job_tracker)
     x.add_text_element_to_tag(self.doc, self.tag_name,
                               'name-node', name_node)