def pack_war( service, result_war_filename, targer_conf_dir, result_dir=dadEdit3_config.result_wars_directory, ): source_web_template_dir = '%sords_templates/%s/%s/%s' % ( dadEdit3_config.templates_directory, service['type'].lower(), service['ords_version'], 'WEB-INF') source_war_filename = 'ords-%s.war' % service['ords_version'] result_war_file_fullpath = result_dir + result_war_filename source_war_file_fullpath = dadEdit3_config.source_war_files_directory + source_war_filename result_web_template_dir = result_dir + 'WEB-INF' if not os.path.exists(source_web_template_dir) or not os.path.isdir( source_web_template_dir): if not os.path.exists(result_dir + 'WEB-INF') or not os.path.isdir(result_dir + 'WEB-INF'): logger.error('Template directory ' + source_web_template_dir + ' does not exist and it hasn\'t been moved already.') exit(1) if not os.path.exists(source_war_file_fullpath) or not os.path.isfile( source_war_file_fullpath): logger.error('ORDS war file ' + source_war_file_fullpath + ' does not exist. ') exit(1) shutil.copy2(source_war_file_fullpath, result_war_file_fullpath) if not os.path.exists(result_web_template_dir) or not os.path.isdir( result_web_template_dir): shutil.move( source_web_template_dir, result_dir) ## Due to copytree's poor absolute path management replace_configdir(targer_conf_dir, result_web_template_dir) update_war(result_dir, result_war_file_fullpath)
def update_war( result_folder, war_name ): #FIXME: replace with python's zipfile, excluding war files from the archive os.chdir(result_folder) zipResult = subprocess.call(['zip', '-r', war_name, '.']) if zipResult == 0: logger.info('War updated. Status: %s.' % zipResult) else: logger.error('zip not updated. Status: %s.' % zipResult) exit(1)
def check_parameters(service, args, con): for error in [ check_service(service, args), check_artifacts_directory(service), check_templates(service) ]: if error is not None: logger.error('There was an error checking the setup: %s' % error) disconnect_from_database(con) exit(1)
def get_dads(connection, service_name, active=True): logger.info('Retrieving all DADs of the service %s with state active==%s' % (service_name, active)) service = get_service(connection, service_name) if not service: logger.error("A service called %s could not be retrieved." % service_name) return [] cur = connection.cursor() cur.prepare( 'select * from Dad where service_id = :s_id and active = :active order by id' ) cur.execute(None, { 's_id': service['id'], 'active': 'Y' if active else 'N' }) res = cur.fetchall() dads = [] for r in res: dads.append( dict(zip(tuple(cd[0].lower() for cd in cur.description), r))) cur.close() logger.info('DADs retrieved') return dads
action='store_true', default=False) # When arguments syntax is incorrect OR when user write -h, an exception is thrown. try: return parser.parse_args() except argparse.ArgumentError: parser.exit(status=2) def main(): args = get_parsed_arguments() if args.debug: logger.setLevel(logging.DEBUG) con = dadEdit3_utils.connect_to_database() services = get_services(con, args) if args.table: print_table(services, args.detailed) else: print_JSON(services) dadEdit3_utils.disconnect_from_database(con) if __name__ == "__main__": try: main() except SystemExit as e: exit(e.code) except: logger.error(traceback.format_exc()) exit(1)
os.makedirs(container_conf_dir, exist_ok=True) create_conf_dir(container_conf_dir) check_parameters(service, args, con) write_schemas_templates(active_schemas, service, relations, env) os.chdir('..') write_url_mapping_template(service, active_dads, env) write_defaults_template(service, relations, env) result_war_filename = 'ords-%s' % service['name'] os.makedirs(target_conf_dir, exist_ok=True) os.symlink(container_conf_dir, target_conf_dir + '/' + result_war_filename, target_is_directory=True) pack_war(service, result_war_filename + '.war', target_conf_dir, container_conf_dir) disconnect_from_database(con) if __name__ == "__main__": try: main() except SystemExit as e: exit(e.code) except: logger.error("Other error: ") logger.error(traceback.format_exc()) exit(1)