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)
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)
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 __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}")
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 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, 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 _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)
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)
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")