Exemplo n.º 1
0
    def _create_coordinator_xml(self, coord_configs, config_filter=None,
                                appname='coord'):
        doc = xml.Document()

        # Create the <coordinator-app> base element
        coord = doc.createElement('coordinator-app')
        coord.attributes['name'] = appname
        coord.attributes['start'] = "${start}"
        coord.attributes['end'] = "${end}"
        coord.attributes['frequency'] = "${frequency}"
        coord.attributes['timezone'] = 'UTC'
        coord.attributes['xmlns'] = 'uri:oozie:coordinator:0.2'

        doc.appendChild(coord)

        action = doc.createElement('action')
        workflow = doc.createElement('workflow')
        coord.appendChild(action)
        action.appendChild(workflow)
        x.add_text_element_to_tag(doc, "workflow", 'app-path',
                                  "${workflowAppUri}")
        configuration = doc.createElement('configuration')
        workflow.appendChild(configuration)

        default_configs = []
        if config_filter is not None:
            default_configs = [cfg['name'] for cfg in config_filter]

        for name in sorted(coord_configs):
            if name in default_configs or config_filter is None:
                x.add_property_to_configuration(doc, name, coord_configs[name])

        # Return newly created XML
        return doc.toprettyxml(indent="  ")
Exemplo n.º 2
0
    def build_workflow_xml(self,
                           script_name,
                           prepare=None,
                           job_xml=None,
                           configuration=None,
                           params=None,
                           arguments=None,
                           files=None,
                           archives=None):

        prepare = prepare or {}
        params = params or {}
        arguments = arguments or []
        files = files or []
        archives = archives or []

        for k in sorted(prepare):
            self._add_to_prepare_element(k, prepare[k])

        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_name)

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

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

        self._add_files_and_archives(files, archives)
Exemplo n.º 3
0
    def build_workflow_xml(self,
                           script_name,
                           prepare=None,
                           job_xml=None,
                           configuration=None,
                           env_vars=None,
                           arguments=None,
                           files=None):
        x.add_attributes_to_element(self.doc, self.tag_name, self.SHELL_XMLNS)

        prepare = prepare or {}
        env_vars = env_vars or {}
        arguments = arguments or []
        files = files or []

        for k in sorted(prepare):
            self._add_to_prepare_element(k, prepare[k])

        self._add_configuration_elements(configuration)

        x.add_text_element_to_tag(self.doc, self.tag_name, 'exec', script_name)

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

        x.add_equal_separated_dict(self.doc, self.tag_name, 'env-var',
                                   env_vars)

        self._add_files_and_archives(files + [script_name], [])
Exemplo n.º 4
0
    def build_workflow_xml(self, script_name, prepare=None,
                           job_xml=None, configuration=None, params=None,
                           arguments=None, files=None, archives=None):

        prepare = prepare or {}
        params = params or {}
        arguments = arguments or []
        files = files or []
        archives = archives or []

        for k in sorted(prepare):
            self._add_to_prepare_element(k, prepare[k])

        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_name)

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

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

        self._add_files_and_archives(files, archives)
Exemplo n.º 5
0
    def _create_coordinator_xml(self, coord_configs, config_filter=None,
                                appname='coord'):
        doc = xml.Document()

        # Create the <coordinator-app> base element
        coord = doc.createElement('coordinator-app')
        coord.attributes['name'] = appname
        coord.attributes['start'] = "${start}"
        coord.attributes['end'] = "${end}"
        coord.attributes['frequency'] = "${frequency}"
        coord.attributes['timezone'] = 'UTC'
        coord.attributes['xmlns'] = 'uri:oozie:coordinator:0.2'

        doc.appendChild(coord)

        action = doc.createElement('action')
        workflow = doc.createElement('workflow')
        coord.appendChild(action)
        action.appendChild(workflow)
        x.add_text_element_to_tag(doc, "workflow", 'app-path',
                                  "${workflowAppUri}")
        configuration = doc.createElement('configuration')
        workflow.appendChild(configuration)

        default_configs = []
        if config_filter is not None:
            default_configs = [cfg['name'] for cfg in config_filter]

        for name in sorted(coord_configs):
            if name in default_configs or config_filter is None:
                x.add_property_to_configuration(doc, name, coord_configs[name])

        # Return newly created XML
        return doc.toprettyxml(indent="  ")
Exemplo n.º 6
0
    def build_workflow_xml(self,
                           script_name,
                           prepare={},
                           job_xml=None,
                           configuration=None,
                           params={},
                           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, 'script',
                                  script_name)

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

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

        self._add_files_and_archives(files, archives)
Exemplo n.º 7
0
    def _add_to_streaming_element(self, element, path):
        if element not in ['mapper', 'reducer']:
            raise ex.NotFoundException(
                element, _('"%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)
Exemplo n.º 8
0
    def _add_to_streaming_element(self, element, path):
        if element not in ['mapper', 'reducer']:
            raise ex.NotFoundException(element,
                                       _('"%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)
Exemplo n.º 9
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)
Exemplo n.º 10
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}")
Exemplo n.º 11
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}")
Exemplo n.º 12
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>
""")
Exemplo n.º 13
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>
""")
Exemplo n.º 14
0
    def build_workflow_xml(self, script_name, prepare={},
                           job_xml=None, configuration=None, env_vars={},
                           arguments=[], files=[]):
        x.add_attributes_to_element(self.doc, self.tag_name, self.SHELL_XMLNS)

        for k in sorted(prepare):
            self._add_to_prepare_element(k, prepare[k])

        self._add_configuration_elements(configuration)

        x.add_text_element_to_tag(self.doc, self.tag_name, 'exec', script_name)

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

        x.add_equal_separated_dict(self.doc, self.tag_name,
                                   'env-var', env_vars)

        self._add_files_and_archives(files + [script_name], [])
Exemplo n.º 15
0
    def build_workflow_xml(self, main_class,
                           prepare=None,
                           job_xml=None,
                           configuration=None,
                           java_opts=None,
                           arguments=None,
                           files=None,
                           archives=None):

        prepare = prepare or {}
        arguments = arguments or []
        files = files or []
        archives = archives or []

        for k in sorted(prepare):
            self._add_to_prepare_element(k, prepare[k])

        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)
Exemplo n.º 16
0
    def build_workflow_xml(
        self,
        main_class,
        prepare={},
        job_xml=None,
        configuration=None,
        java_opts=None,
        arguments=[],
        files=[],
        archives=[],
    ):

        for k in sorted(prepare):
            self._add_to_prepare_element(k, prepare[k])

        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)
Exemplo n.º 17
0
    def build_workflow_xml(self,
                           main_class,
                           prepare=None,
                           job_xml=None,
                           configuration=None,
                           java_opts=None,
                           arguments=None,
                           files=None,
                           archives=None):

        prepare = prepare or {}
        arguments = arguments or []
        files = files or []
        archives = archives or []

        for k in sorted(prepare):
            self._add_to_prepare_element(k, prepare[k])

        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)
Exemplo n.º 18
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)
Exemplo n.º 19
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)
Exemplo n.º 20
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")
Exemplo n.º 21
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)
Exemplo n.º 22
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")
Exemplo n.º 23
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)