-
Notifications
You must be signed in to change notification settings - Fork 1
/
dbconfgenerator.py
67 lines (57 loc) · 3.51 KB
/
dbconfgenerator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import ConfigParser
import os
import sys, traceback
def workConfig(path,dbconfig):
"""
Read from config file
"""
if not os.path.exists(path):
print "jira.config not found. exit\n"
sys.exit(0)
config = ConfigParser.RawConfigParser(allow_no_value=True)
config.read(path)
dbtype = config.get("database","type")
dbname = config.get("database","name")
dbhost = config.get("database", "host")
dbuser = config.get("database", "user")
dbpass = config.get("database", "password")
dbport = config.get("database", "port")
if dbtype == "postgresql":
dbschema = config.get("database","schema")
dbconfig = open(dbconfig,"w")
dbconfig.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
dbconfig.write("<jira-database-config>\n<name>defaultDS</name>\n<delegator-name>default</delegator-name>\n")
if dbtype == "mysql":
dbconfig.write("<database-type>mysql</database-type>\n<jdbc-datasource>\n")
dbconfig.write("<url>jdbc:mysql://" + dbhost + ":" + dbport + "/" + dbname + "?useUnicode=true&characterEncoding=UTF8&sessionVariables=default_storage_engine=InnoDB</url>\n")
dbconfig.write("<driver-class>com.mysql.jdbc.Driver</driver-class>\n<validation-query>select 1</validation-query>\n<validation-query-timeout>3</validation-query-timeout>\n")
elif dbtype == "postgresql":
dbschema = config.get("database","schema")
dbconfig.write("<database-type>postgres72</database-type>\n<schema-name>" + dbschema + "</schema-name>\n<jdbc-datasource>\n")
dbconfig.write("<url>jdbc:postgresql://" + dbhost + ":" + dbport + "/" + dbname + "</url>\n")
dbconfig.write("<driver-class>org.postgresql.Driver</driver-class>\n<validation-query>select version();</validation-query>\n<pool-test-on-borrow>false</pool-test-on-borrow>\n")
elif dbtype == "mssql":
dbconfig.write("<database-type>mssql</database-type>\n<schema-name>dbo</schema-name>\n<jdbc-datasource>\n")
dbconfig.write("<url>jdbc:jtds:sqlserver://" + dbhost + ":" + dbport + "/" + dbname + "</url>\n")
dbconfig.write("<driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>\n<validation-query>select 1</validation-query>\n")
elif dbtype == "oracle":
dbconfig.write("<database-type>oracle10g</database-type>\n<jdbc-datasource>\n")
dbconfig.write("<url>jdbc:oracle:thin:@//" + dbhost + ":" + dbport + "/" + dbname + "</url>\n")
dbconfig.write("<driver-class>oracle.jdbc.OracleDriver</driver-class>\n<validation-query>select 1 from dual</validation-query>\n<pool-test-on-borrow>false</pool-test-on-borrow>\n")
dbconfig.write("<username>" + dbuser + "</username>\n")
dbconfig.write("<password>" + dbpass + "</password>\n")
dbconfig.write("<pool-size>100</pool-size>\n")
dbconfig.write("<pool-min-size>20</pool-min-size>\n")
dbconfig.write("<pool-remove-abandoned>true</pool-remove-abandoned>\n")
dbconfig.write("<pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>\n")
dbconfig.write("<pool-test-while-idle>true</pool-test-while-idle>\n")
dbconfig.write("<pool-test-on-borrow>false</pool-test-on-borrow>\n")
dbconfig.write("<min-evictable-idle-time-millis>60000</min-evictable-idle-time-millis>\n")
dbconfig.write("<time-between-eviction-runs-millis>300000</time-between-eviction-runs-millis>\n")
dbconfig.write("<validation-query-timeout>3</validation-query-timeout>\n")
dbconfig.write("</jdbc-datasource>\n</jira-database-config>\n")
dbconfig.close()
if __name__ == "__main__":
path = "/opt/atlassian/jira/conf/jira.config"
dbconfig = "/var/atlassian/jira/dbconfig.xml"
workConfig(path,dbconfig)