#!/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()