use of org.opennms.core.schema.ExistingResourceAccessor in project opennms by OpenNMS.
the class MigratorIT method testMultipleChangelogs.
@Test
@JUnitTemporaryDatabase(createSchema = false)
public void testMultipleChangelogs() throws Exception {
assertFalse(changelogExists());
final Migration migration = new Migration();
migration.setAdminUser(System.getProperty(TemporaryDatabase.ADMIN_USER_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_USER));
migration.setAdminPassword(System.getProperty(TemporaryDatabase.ADMIN_PASSWORD_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_PASSWORD));
migration.setDatabaseUser(System.getProperty(TemporaryDatabase.ADMIN_USER_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_USER));
migration.setDatabasePassword(System.getProperty(TemporaryDatabase.ADMIN_PASSWORD_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_PASSWORD));
migration.setChangeLog("changelog.xml");
final Migrator m = new Migrator();
m.setDataSource(m_dataSource);
m.setAdminDataSource(m_dataSource);
m.setValidateDatabaseVersion(false);
m.setCreateUser(false);
m.setCreateDatabase(false);
// from the classpath
for (final Resource resource : getTestResources()) {
URI uri = resource.getURI();
if (uri.getScheme().equals("jar") && !uri.toString().contains("test-api.schema"))
continue;
if (uri.getScheme().equals("file") && !uri.toString().contains("test-api/schema"))
continue;
LOG.info("=== found resource: {} ===", resource);
migration.setAccessor(new ExistingResourceAccessor(resource));
m.migrate(migration);
}
final List<ChangelogEntry> ids = getChangelogEntries();
assertTrue(ids.size() > 0);
assertEquals("test-api.schema.a", ids.get(0).getId());
assertEquals("test-api.schema.b", ids.get(1).getId());
}
use of org.opennms.core.schema.ExistingResourceAccessor in project opennms by OpenNMS.
the class MigratorIT method doMigration.
private void doMigration() throws MigrationException, IOException {
final Migration migration = new Migration();
migration.setAdminUser(System.getProperty(TemporaryDatabase.ADMIN_USER_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_USER));
migration.setAdminPassword(System.getProperty(TemporaryDatabase.ADMIN_PASSWORD_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_PASSWORD));
migration.setDatabaseUser(System.getProperty(TemporaryDatabase.ADMIN_USER_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_USER));
migration.setDatabasePassword(System.getProperty(TemporaryDatabase.ADMIN_PASSWORD_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_PASSWORD));
migration.setChangeLog("changelog.xml");
final Migrator m = new Migrator();
m.setDataSource(m_dataSource);
for (final Resource resource : getTestResources()) {
migration.setAccessor(new ExistingResourceAccessor(resource));
m.migrate(migration);
}
}
use of org.opennms.core.schema.ExistingResourceAccessor in project opennms by OpenNMS.
the class MigratorIT method testRealChangelog.
@Test
@JUnitTemporaryDatabase(createSchema = false)
public void testRealChangelog() throws Exception {
assertFalse(changelogExists());
final Migration migration = new Migration();
migration.setAdminUser(System.getProperty(TemporaryDatabase.ADMIN_USER_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_USER));
migration.setAdminPassword(System.getProperty(TemporaryDatabase.ADMIN_PASSWORD_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_PASSWORD));
migration.setDatabaseUser(System.getProperty(TemporaryDatabase.ADMIN_USER_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_USER));
migration.setDatabasePassword(System.getProperty(TemporaryDatabase.ADMIN_PASSWORD_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_PASSWORD));
migration.setChangeLog("changelog.xml");
final Migrator m = new Migrator();
m.setDataSource(m_dataSource);
m.setAdminDataSource(m_dataSource);
m.setValidateDatabaseVersion(false);
m.setCreateUser(false);
m.setCreateDatabase(false);
// from the classpath
for (final Resource resource : getRealChangelog()) {
LOG.info("=== found resource: {} ===", resource);
migration.setAccessor(new ExistingResourceAccessor(resource));
m.migrate(migration);
}
final List<ChangelogEntry> ids = getChangelogEntries();
assertTrue(ids.size() > 0);
// Check to make sure some of the changelogs ran
assertTrue(ids.stream().anyMatch(id -> "17.0.0-remove-legacy-ipinterface-composite-key-fields".equals(id.getId())));
assertTrue(ids.stream().anyMatch(id -> "17.0.0-remove-legacy-outages-composite-key-fields".equals(id.getId())));
}
use of org.opennms.core.schema.ExistingResourceAccessor 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();
m_installerDb.checkTime();
}
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();
}
use of org.opennms.core.schema.ExistingResourceAccessor in project opennms by OpenNMS.
the class MigratorIT method testUpdate.
@Test
@JUnitTemporaryDatabase(createSchema = false)
public void testUpdate() throws Exception {
// Make sure there is no databasechangelog table
assertFalse(changelogExists());
Resource aResource = null;
for (final Resource resource : getTestResources()) {
URI uri = resource.getURI();
if (uri.getScheme().equals("file") && uri.toString().contains("test-api/schema/a")) {
aResource = resource;
}
if (uri.getScheme().equals("jar") && uri.toString().contains("test-api.schema.a")) {
aResource = resource;
}
}
assertNotNull("aResource must not be null", aResource);
Set<String> tables = getTables();
assertFalse("must not contain table 'schematest'", tables.contains("schematest"));
final Migration migration = new Migration();
migration.setAdminUser(System.getProperty(TemporaryDatabase.ADMIN_USER_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_USER));
migration.setAdminPassword(System.getProperty(TemporaryDatabase.ADMIN_PASSWORD_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_PASSWORD));
migration.setDatabaseUser(System.getProperty(TemporaryDatabase.ADMIN_USER_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_USER));
migration.setDatabasePassword(System.getProperty(TemporaryDatabase.ADMIN_PASSWORD_PROPERTY, TemporaryDatabase.DEFAULT_ADMIN_PASSWORD));
migration.setChangeLog("changelog.xml");
migration.setAccessor(new ExistingResourceAccessor(aResource));
LOG.info("Running migration on database: {}", migration);
final Migrator m = new Migrator();
m.setDataSource(m_dataSource);
m.setAdminDataSource(m_dataSource);
m.setValidateDatabaseVersion(false);
m.setCreateUser(false);
m.setCreateDatabase(false);
m.prepareDatabase(migration);
m.migrate(migration);
LOG.info("Migration complete: {}", migration);
tables = getTables();
assertTrue("must contain table 'schematest'", tables.contains("schematest"));
}
Aggregations