1 package org.openecomp.sdc.asdctool.migration.core;
3 import org.openecomp.sdc.asdctool.migration.core.execution.MigrationExecutionResult;
4 import org.openecomp.sdc.asdctool.migration.core.execution.MigrationExecutorImpl;
5 import org.openecomp.sdc.asdctool.migration.core.task.Migration;
6 import org.openecomp.sdc.asdctool.migration.core.task.MigrationResult;
7 import org.openecomp.sdc.asdctool.migration.resolver.MigrationResolver;
8 import org.openecomp.sdc.asdctool.migration.service.SdcRepoService;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
12 import java.util.List;
14 public class SdcMigrationTool {
16 private static final Logger LOGGER = LoggerFactory.getLogger(SdcMigrationTool.class);
18 private MigrationResolver migrationsResolver;
20 private SdcRepoService sdcRepoService;
22 public SdcMigrationTool(MigrationResolver migrationsResolver, SdcRepoService sdcRepoService) {
23 this.migrationsResolver = migrationsResolver;
24 this.sdcRepoService = sdcRepoService;
27 public SdcMigrationTool() {
30 public boolean migrate(boolean enforceAll) {
31 LOGGER.info("starting migration process");
32 handleEnforceMigrationFlag(enforceAll);
33 List<Migration> migrations = migrationsResolver.resolveMigrations();
34 LOGGER.info("there are {} migrations task to execute", migrations.size());
35 for (Migration migration : migrations) {
37 MigrationExecutionResult executionResult = new MigrationExecutorImpl().execute(migration);
38 if (migrationHasFailed(executionResult)) {
39 LOGGER.error("migration {} with version {} has failed. error msg: {}", migration.getClass().getName(), migration.getVersion().toString(), executionResult.getMsg());
42 sdcRepoService.createMigrationTask(executionResult.toMigrationTaskEntry());
43 } catch (RuntimeException e) {
44 LOGGER.error("migration {} with version {} has failed. error msg: {}", migration.getClass().getName(), migration.getVersion().toString(), e);
51 private boolean migrationHasFailed(MigrationExecutionResult migrationResult) {
52 return migrationResult.getMigrationStatus().equals(MigrationResult.MigrationStatus.FAILED);
55 private void handleEnforceMigrationFlag(boolean enforceAll) {
57 LOGGER.info("enforcing migration for current version");
58 sdcRepoService.clearTasksForCurrentMajor();