libretime/utils/airtime-update-db-settings.py

88 lines
2.8 KiB
Python

"""
The purpose of this script is to consolidate into one location where
we need to update database host, dbname, username and password.
This script reads from /etc/airtime/airtime.conf.
"""
import os
import sys
import ConfigParser
import xml.dom.minidom
from xml.dom.minidom import Node
if os.geteuid() != 0:
print "Please run this as root."
sys.exit(1)
airtime_conf = '/etc/airtime/airtime.conf'
#Read the universal values
parser = ConfigParser.SafeConfigParser()
parser.read(airtime_conf)
host = 'resources.db.params.host'
dbname = 'resources.db.params.dbname'
username = 'resources.db.params.username'
password = 'resources.db.params.password'
airtime_dir = parser.get('general', 'airtime_dir')
if os.path.exists(airtime_dir):
print 'Airtime root folder found at %s' % airtime_dir
else:
print 'Could not find Airtime root folder specified by "airtime_dir" in %s' % airtime_conf
sys.exit(1)
print ("Updating %s/application/configs/application.ini" % airtime_dir)
f = file('%s/application/configs/application.ini' % airtime_dir,'r')
file_lines = []
for line in f:
if line[0:len(host)] == host:
line= '%s = "%s"\n' % (host, parser.get('database', 'host'))
elif line[0:len(dbname)] == dbname:
line= '%s = "%s"\n' % (dbname, parser.get('database', 'dbname'))
elif line[0:len(username)] == username:
line= '%s = "%s"\n' % (username, parser.get('database', 'dbuser'))
elif line[0:len(password)] == password:
line= '%s = "%s"\n' % (password, parser.get('database', 'dbpass'))
file_lines.append(line)
f.close()
f = file('%s/application/configs/application.ini' % airtime_dir, 'w')
f.writelines(file_lines)
f.close()
print ("Updating %s/build/build.properties" % airtime_dir)
f = file('%s/build/build.properties' % airtime_dir, 'r')
file_lines = []
db_url = 'propel.database.url'
for line in f:
if line[0:len(db_url)] == db_url:
line = '%s = pgsql:host=%s dbname=%s user=%s password=%s\n' % \
(db_url, parser.get('database', 'host'), parser.get('database', 'dbname'), parser.get('database', 'dbuser'), \
parser.get('database', 'dbpass'))
file_lines.append(line)
f.close()
f = file('%s/build/build.properties' % airtime_dir, 'w')
f.writelines(file_lines)
f.close()
print ("Updating %s/build/runtime-conf.xml" % airtime_dir)
doc = xml.dom.minidom.parse('%s/build/runtime-conf.xml' % airtime_dir)
node = doc.getElementsByTagName("dsn")[0]
node.firstChild.nodeValue = 'pgsql:host=%s;port=5432;dbname=%s;user=%s;password=%s' % (parser.get('database', 'host'), \
parser.get('database', 'dbname'), parser.get('database', 'dbuser'), parser.get('database', 'dbpass'))
xml_file = open('%s/build/runtime-conf.xml' % airtime_dir, "w")
xml_file.writelines(doc.toxml('utf-8'))
xml_file.close()
print "Success!"