Alon Bar-Lev has uploaded a new change for review. Change subject: packaging: setup: move export/import functions out of utils ......................................................................
packaging: setup: move export/import functions out of utils these are application specific logic not belongs to utils. Change-Id: I085f55382779aff91d45f10fb56de33d816b59dc Signed-off-by: Alon Bar-Lev <[email protected]> --- M packaging/legacy-setup/common_utils.py M packaging/legacy-setup/ovirt-engine-reports-setup.py 2 files changed, 116 insertions(+), 136 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-reports refs/changes/20/23520/1 diff --git a/packaging/legacy-setup/common_utils.py b/packaging/legacy-setup/common_utils.py index dd87796..a5b6b59 100755 --- a/packaging/legacy-setup/common_utils.py +++ b/packaging/legacy-setup/common_utils.py @@ -15,7 +15,6 @@ import tempfile import random import string -import glob from StringIO import StringIO @@ -39,12 +38,9 @@ EXEC_CHKCONFIG="/sbin/chkconfig" FILE_PG_PASS="/etc/ovirt-engine/.pgpass" -DIR_DATABASE_REPORTS_CONFIG = "/etc/ovirt-engine-reports/ovirt-engine-reports.conf.d/" -FILE_DATABASE_REPORTS_CONFIG = "10-setup-database.conf" PGPASS_FILE_USER_LINE = "DB USER credentials" PGPASS_FILE_ADMIN_LINE = "DB ADMIN credentials" FILE_ENGINE_CONFIG_BIN="/usr/bin/engine-config" -JRS_PACKAGE_PATH="/usr/share/jasperreports-server" ENGINE_DBSCRIPTS_PATH="/usr/share/ovirt-engine/dbscripts" @@ -648,109 +644,6 @@ output, rc = execExternalCmd(cmd, True, "Failed to get package version & release") return output.rstrip() -@transactionDisplay("Importing reports") -def importReports(src, update=True): - """ - import the reports - """ - logging.debug("importing reports") - current_dir = os.getcwd() - os.chdir("%s/buildomatic" % JRS_PACKAGE_PATH) - cmd = "./js-import.sh --input-dir %s" % src - if update: - cmd = cmd + " --update" - execExternalCmd(cmd, True, "Failed while importing reports") - os.chdir(current_dir) - -def fixNullUserPasswords(tempDir, loc): - logging.debug("fixNullUserPasswords started for %s" % tempDir) - fixedFiles = [] - for f in glob.glob(os.path.join(tempDir, loc, '*.xml')): - xmlObj = XMLConfigFileHandler(f) - xmlObj.open() - node = getXmlNode(xmlObj, '/user/password') - if node.getContent() == 'ENC<null>': - fixedFiles.append(f) - node.setContent('ENC<>') - xmlObj.close() - logging.debug("fixNullUserPasswords fixed: %s" % fixedFiles) - -@transactionDisplay("Exporting current users") -def exportUsers(): - """ - export all users from jasper - """ - logging.debug("exporting users from reports") - current_dir = os.getcwd() - - # Create a temp directory - tempDir = tempfile.mkdtemp() - logging.debug("temp directory: %s" % tempDir) - - os.chdir("%s/buildomatic" % JRS_PACKAGE_PATH) - - # Export all users from jasper into the temp directory - logging.debug("Exporting users to %s" % tempDir) - cmd = "./js-export.sh --output-dir %s --users --roles" % tempDir - execExternalCmd(cmd, True, "Failed while exporting users") - fixNullUserPasswords(tempDir, 'users/organization_1') - - os.chdir(current_dir) - return tempDir - -def exportReportsRepository(): - """ - export all resources - """ - logging.debug("exporting reports repository") - current_dir = os.getcwd() - - # Create a temp directory - tempDir = tempfile.mkdtemp() - logging.debug("temp directory: %s" % tempDir) - - os.chdir("%s/buildomatic" % JRS_PACKAGE_PATH) - - # Export all users from jasper into the temp directory - logging.debug("Exporting repository to %s" % tempDir) - cmd = "./js-export.sh --output-dir %s --everything" % tempDir - execExternalCmd(cmd, True, "Failed while exporting users") - fixNullUserPasswords(tempDir, 'users') - - os.chdir(current_dir) - return tempDir - -@transactionDisplay("Importing current users") -def importUsers(inputDir, update=True): - """ - import all users from a given directory - """ - logging.debug("importing users into reports") - current_dir = os.getcwd() - - try: - os.chdir("%s/buildomatic" % JRS_PACKAGE_PATH) - - # Export all users from jasper into the temp directory - logging.debug("importing users from %s" % inputDir) - cmd = "./js-import.sh --input-dir %s" % inputDir - if update: - cmd = cmd + " --update" - execExternalCmd(cmd, True, "Failed while importing users") - except: - logging.error("exception caught, re-raising") - raise - finally: - os.chdir(current_dir) - -def restoreDefaultUsersXmlFiles(tempDir): - logging.debug("restoring default users xml files") - destDir = "/usr/share/ovirt-engine-reports/reports" - shutil.rmtree("%s/users" % destDir) - shutil.copytree("%s/users" % tempDir, "%s/users" % destDir) - shutil.rmtree(tempDir) - - def dbExists(db_dict, TEMP_PGPASS): exists = False @@ -1289,29 +1182,6 @@ query=sql_query_set, database=db_dict['dbname'], ) - - -def storeConf(db_dict): - if not os.path.exists(DIR_DATABASE_REPORTS_CONFIG): - os.makedirs(DIR_DATABASE_REPORTS_CONFIG) - with open( - os.path.join( - DIR_DATABASE_REPORTS_CONFIG, - FILE_DATABASE_REPORTS_CONFIG - ), - 'w' - ) as rf: - rf.write( - ( - 'REPORTS_DB_DATABASE={database}\n' - 'REPORTS_DB_USER={user}\n' - 'REPORTS_DB_PASSWORD={password}' - ).format( - database=db_dict['dbname'], - user=db_dict['username'], - password=db_dict['password'], - ) - ) def userExists(user): diff --git a/packaging/legacy-setup/ovirt-engine-reports-setup.py b/packaging/legacy-setup/ovirt-engine-reports-setup.py index 6a8fa00..89d007c 100755 --- a/packaging/legacy-setup/ovirt-engine-reports-setup.py +++ b/packaging/legacy-setup/ovirt-engine-reports-setup.py @@ -52,6 +52,8 @@ REPORTS_DB_USER = 'engine_reports' DWH_DB_USER = 'engine_history' +DIR_DATABASE_REPORTS_CONFIG = "/etc/ovirt-engine-reports/ovirt-engine-reports.conf.d/" +JRS_PACKAGE_PATH="/usr/share/jasperreports-server" REPORTS_SERVER_DIR = "/usr/share/%s" % JRS_PACKAGE_NAME REPORTS_SERVER_BUILDOMATIC_DIR = "%s/buildomatic" % REPORTS_SERVER_DIR REPORTS_DB_UPGRADE_SCRIPTS_DIR = "%s/install_resources/sql/postgresql" % REPORTS_SERVER_BUILDOMATIC_DIR @@ -291,6 +293,101 @@ xml_editor.editParams({'/jdbcDataSource/connectionUser':db_dict["dwh_db_user"]}) xml_editor.editParams({'/jdbcDataSource/connectionPassword':db_dict["dwh_db_password"]}) xml_editor.close() + +@transactionDisplay("Importing reports") +def importReports(src, update=True): + """ + import the reports + """ + logging.debug("importing reports") + current_dir = os.getcwd() + os.chdir("%s/buildomatic" % JRS_PACKAGE_PATH) + cmd = "./js-import.sh --input-dir %s" % src + if update: + cmd = cmd + " --update" + utils.execExternalCmd(cmd, True, "Failed while importing reports") + os.chdir(current_dir) + +def fixNullUserPasswords(tempDir, loc): + logging.debug("fixNullUserPasswords started for %s" % tempDir) + fixedFiles = [] + for f in glob.glob(os.path.join(tempDir, loc, '*.xml')): + xmlObj = utils.XMLConfigFileHandler(f) + xmlObj.open() + node = utils.getXmlNode(xmlObj, '/user/password') + if node.getContent() == 'ENC<null>': + fixedFiles.append(f) + node.setContent('ENC<>') + xmlObj.close() + logging.debug("fixNullUserPasswords fixed: %s" % fixedFiles) + +@transactionDisplay("Exporting current users") +def exportUsers(): + """ + export all users from jasper + """ + logging.debug("exporting users from reports") + current_dir = os.getcwd() + + # Create a temp directory + tempDir = tempfile.mkdtemp() + logging.debug("temp directory: %s" % tempDir) + + os.chdir("%s/buildomatic" % JRS_PACKAGE_PATH) + + # Export all users from jasper into the temp directory + logging.debug("Exporting users to %s" % tempDir) + cmd = "./js-export.sh --output-dir %s --users --roles" % tempDir + utils.execExternalCmd(cmd, True, "Failed while exporting users") + fixNullUserPasswords(tempDir, 'users/organization_1') + + os.chdir(current_dir) + return tempDir + +def exportReportsRepository(): + """ + export all resources + """ + logging.debug("exporting reports repository") + current_dir = os.getcwd() + + # Create a temp directory + tempDir = tempfile.mkdtemp() + logging.debug("temp directory: %s" % tempDir) + + os.chdir("%s/buildomatic" % JRS_PACKAGE_PATH) + + # Export all users from jasper into the temp directory + logging.debug("Exporting repository to %s" % tempDir) + cmd = "./js-export.sh --output-dir %s --everything" % tempDir + utils.execExternalCmd(cmd, True, "Failed while exporting users") + fixNullUserPasswords(tempDir, 'users') + + os.chdir(current_dir) + return tempDir + +@transactionDisplay("Importing current users") +def importUsers(inputDir, update=True): + """ + import all users from a given directory + """ + logging.debug("importing users into reports") + current_dir = os.getcwd() + + try: + os.chdir("%s/buildomatic" % JRS_PACKAGE_PATH) + + # Export all users from jasper into the temp directory + logging.debug("importing users from %s" % inputDir) + cmd = "./js-import.sh --input-dir %s" % inputDir + if update: + cmd = cmd + " --update" + utils.execExternalCmd(cmd, True, "Failed while importing users") + except: + logging.error("exception caught, re-raising") + raise + finally: + os.chdir(current_dir) @transactionDisplay("Updating Redirect Servlet") def updateServletDbRecord(TEMP_PGPASS): @@ -917,7 +1014,7 @@ """ Run post setup steps - disable unused users, set theme, change superuser password if needed """ - savedRepoDir = utils.exportReportsRepository() + savedRepoDir = exportReportsRepository() anonymousUserFile = "%s/users/anonymousUser.xml" % savedRepoDir jasperAdminFile = "%s/users/jasperadmin.xml" % savedRepoDir logging.debug("disabling unused users, if needed") @@ -972,6 +1069,19 @@ }, ) +def storeConf(db_dict): + with open(FILE_DATABASE_REPORTS_CONFIG, 'w') as rf: + rf.write( + ( + 'REPORTS_DB_DATABASE={database}\n' + 'REPORTS_DB_USER={user}\n' + 'REPORTS_DB_PASSWORD={password}' + ).format( + database=db_dict['dbname'], + user=db_dict['username'], + password=db_dict['password'], + ) + ) def main(options): ''' @@ -1131,7 +1241,7 @@ exportScheduale() if hasData or preserveReports: - savedDir = utils.exportUsers() + savedDir = exportUsers() if not isWarInstalled() and not hasData and adminPass is None: adminPass = getAdminPass() @@ -1156,20 +1266,20 @@ if preserveReports: logging.debug("Importing users") - utils.importUsers(savedDir) + importUsers(savedDir) # Update reports datasource configuration setReportsDatasource(reportsImport, db_dict=db_dict) # Execute js-import to add reports to DB - utils.importReports(reportsImport) + importReports(reportsImport) # We import users twice because we need permissions to be # preserved as well as users passwords reset after importing # reports in previous step. if hasData: logging.debug("Imporing users") - utils.importUsers(savedDir) + importUsers(savedDir) # Link all files in ovirt-engine-reports/reports*/jar to /var/lib/jbosas/server/ovirt-engine-slimmed/deploy/ovirt-engine-reports/WEB-INF/lib customizeJs() @@ -1220,7 +1330,7 @@ # Restart the httpd service utils.restartHttpd() - utils.storeConf(db_dict) + storeConf(db_dict) print "Successfully installed %s." % JRS_APP_NAME print "The installation log file is available at: %s" % log_file -- To view, visit http://gerrit.ovirt.org/23520 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I085f55382779aff91d45f10fb56de33d816b59dc Gerrit-PatchSet: 1 Gerrit-Project: ovirt-reports Gerrit-Branch: master Gerrit-Owner: Alon Bar-Lev <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
