#!/usr/bin/python import os, subprocess dbType='custom' startDay=1 #dbType='external' #ext_sql_server='' #ext_db_name='' #ext_db_username='' #ext_db+password='' def get_db_details(): username_cmd='cat /etc/oozie/conf/oozie-site.xml | grep -A1 oozie.service.JPAService.jdbc.username | grep value' jdbc_string_cmd='cat /etc/oozie/conf/oozie-site.xml | grep -A1 oozie.service.JPAService.jdbc.url | grep value' exec_cmd=subprocess.Popen( username_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out,err=exec_cmd.communicate() db_username=out.strip().replace('','').replace('','') exec_cmd=subprocess.Popen( jdbc_string_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out,err=exec_cmd.communicate() jdbc_string_url=out.strip().replace('','').replace('','').split(';') sql_server=jdbc_string_url[0].replace('jdbc:sqlserver://','') db_name=jdbc_string_url[1].replace('databaseName=','') return sql_server, db_name, db_username def get_db_password(): cmd='sudo java -cp "/var/lib/ambari-agent/cred/lib/*" org.apache.ambari.server.credentialapi.CredentialUtil get oozie.service.JPAService.jdbc.password -provider /etc/oozie/conf/oozie-site.jceks' exec_cmd=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out,err=exec_cmd.communicate() db_password=out.strip() return db_password def fetch_oozie_db(sql_server, db_name, db_username, db_password): cwd = os.getcwd() cmd='java -cp %s/JavaPlayground-1.0-SNAPSHOT-jar-with-dependencies.jar org.example.SQLDatabaseConnection %s %s %s %s %d'%(cwd, sql_server, db_name, db_username, db_password, startDay) exec_cmd=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out,err=exec_cmd.communicate() out=out.strip() print out,err def remove_start_end_xml(): cwd = os.getcwd() xml_out_path= "%s/oozie_jobs_output"%cwd cmd="for i in $(ls %s/*) ; do echo $i ; cat $i | sed '//{:a;N;/<\/property>/!ba};/end<\/name>/d' | sed '//{:a;N;/<\/property>/!ba};/start<\/name>/d' > $i.tmp ; mv $i.tmp $i ; done"%xml_out_path #print cmd exec_cmd=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out,err=exec_cmd.communicate() if dbType == 'custom': sql_server, db_name, db_username=get_db_details() db_password=get_db_password() elif dbType == 'external': sql_server=ext_sql_server db_name=ext_db_name db_username=ext_db_username db_password=ext_db_password fetch_oozie_db(sql_server, db_name, db_username, db_password) remove_start_end_xml()