use of org.opennms.core.db.DataSourceConfigurationFactory in project opennms by OpenNMS.
the class Installer method install.
/**
* <p>install</p>
*
* @param argv an array of {@link java.lang.String} objects.
* @throws java.lang.Exception if any.
*/
public void install(final String[] argv) throws Exception {
printHeader();
loadProperties();
parseArguments(argv);
final boolean doDatabase = (m_update_database || m_do_inserts || m_update_iplike || m_update_unicode || m_fix_constraint);
if (!doDatabase && m_tomcat_conf == null && !m_install_webapp && m_library_search_path == null) {
usage(options, m_commandLine, "Nothing to do. Use -h for help.", null);
System.exit(1);
}
if (doDatabase) {
final File cfgFile = ConfigFileConstants.getFile(ConfigFileConstants.OPENNMS_DATASOURCE_CONFIG_FILE_NAME);
InputStream is = new FileInputStream(cfgFile);
final JdbcDataSource adminDsConfig = new DataSourceConfigurationFactory(is).getJdbcDataSource(ADMIN_DATA_SOURCE_NAME);
final DataSource adminDs = new SimpleDataSource(adminDsConfig);
is.close();
is = new FileInputStream(cfgFile);
final JdbcDataSource dsConfig = new DataSourceConfigurationFactory(is).getJdbcDataSource(OPENNMS_DATA_SOURCE_NAME);
final DataSource ds = new SimpleDataSource(dsConfig);
is.close();
m_installerDb.setForce(m_force);
m_installerDb.setIgnoreNotNull(m_ignore_not_null);
m_installerDb.setNoRevert(m_do_not_revert);
m_installerDb.setAdminDataSource(adminDs);
m_installerDb.setPostgresOpennmsUser(dsConfig.getUserName());
m_installerDb.setDataSource(ds);
m_installerDb.setDatabaseName(dsConfig.getDatabaseName());
m_migrator.setDataSource(ds);
m_migrator.setAdminDataSource(adminDs);
m_migrator.setValidateDatabaseVersion(!m_ignore_database_version);
m_migration.setDatabaseName(dsConfig.getDatabaseName());
m_migration.setSchemaName(dsConfig.getSchemaName());
m_migration.setAdminUser(adminDsConfig.getUserName());
m_migration.setAdminPassword(adminDsConfig.getPassword());
m_migration.setDatabaseUser(dsConfig.getUserName());
m_migration.setDatabasePassword(dsConfig.getPassword());
m_migration.setChangeLog("changelog.xml");
}
checkIPv6();
/*
* Make sure we can execute the rrdtool binary when the
* JniRrdStrategy is enabled.
*/
boolean using_jni_rrd_strategy = System.getProperty("org.opennms.rrd.strategyClass", "").contains("JniRrdStrategy");
if (using_jni_rrd_strategy) {
File rrd_binary = new File(System.getProperty("rrd.binary"));
if (!rrd_binary.canExecute()) {
throw new Exception("Cannot execute the rrdtool binary '" + rrd_binary.getAbsolutePath() + "' required by the current RRD strategy. Update the rrd.binary field in opennms.properties appropriately.");
}
}
if (!Boolean.getBoolean("skip-native")) {
String icmp_path = findLibrary("jicmp", m_library_search_path, false);
String icmp6_path = findLibrary("jicmp6", m_library_search_path, false);
String jrrd_path = findLibrary("jrrd", m_library_search_path, false);
String jrrd2_path = findLibrary("jrrd2", m_library_search_path, false);
writeLibraryConfig(icmp_path, icmp6_path, jrrd_path, jrrd2_path);
}
/*
* Everything needs to use the administrative data source until we
* verify that the opennms database is created below (and where we
* create it if it doesn't already exist).
*/
verifyFilesAndDirectories();
if (m_install_webapp) {
checkWebappOldOpennmsDir();
checkServerXmlOldOpennmsContext();
}
if (m_update_database || m_fix_constraint) {
// OLDINSTALL m_installerDb.readTables();
}
m_installerDb.disconnect();
if (doDatabase) {
m_migrator.validateDatabaseVersion();
System.out.println(String.format("* using '%s' as the PostgreSQL user for OpenNMS", m_migration.getAdminUser()));
System.out.println(String.format("* using '%s' as the PostgreSQL database name for OpenNMS", m_migration.getDatabaseName()));
if (m_migration.getSchemaName() != null) {
System.out.println(String.format("* using '%s' as the PostgreSQL schema name for OpenNMS", m_migration.getSchemaName()));
}
}
if (m_update_database) {
m_migrator.prepareDatabase(m_migration);
}
if (doDatabase) {
m_installerDb.checkUnicode();
}
handleConfigurationChanges();
final GenericApplicationContext context = new GenericApplicationContext();
context.setClassLoader(Bootstrap.loadClasses(new File(m_opennms_home), true));
if (m_update_database) {
m_installerDb.databaseSetUser();
m_installerDb.disconnect();
for (final Resource resource : context.getResources("classpath*:/changelog.xml")) {
System.out.println("- Running migration for changelog: " + resource.getDescription());
m_migration.setAccessor(new ExistingResourceAccessor(resource));
m_migrator.migrate(m_migration);
}
}
if (m_update_unicode) {
System.out.println("WARNING: the -U option is deprecated, it does nothing now");
}
if (m_do_vacuum) {
m_installerDb.vacuumDatabase(m_do_full_vacuum);
}
if (m_install_webapp) {
installWebApp();
}
if (m_tomcat_conf != null) {
updateTomcatConf();
}
if (m_update_iplike) {
m_installerDb.updateIplike();
}
if (m_update_database && m_remove_database) {
m_installerDb.disconnect();
m_installerDb.databaseRemoveDB();
}
if (doDatabase) {
m_installerDb.disconnect();
}
if (m_update_database) {
createConfiguredFile();
}
System.out.println();
System.out.println("Installer completed successfully!");
if (!m_skip_upgrade_tools) {
System.setProperty("opennms.manager.class", "org.opennms.upgrade.support.Upgrade");
Bootstrap.main(new String[] {});
}
context.close();
}
Aggregations