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=" ")
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)
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], [])
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)
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)
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)
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)
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}")
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> """)
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> """)
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], [])
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)
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)
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)
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")
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)