[SDC] rebase 1710 code
[sdc.git] / asdctool / src / main / java / org / openecomp / sdc / asdctool / migration / main / MigrationMenu.java
1 package org.openecomp.sdc.asdctool.migration.main;
2
3 import org.apache.commons.cli.CommandLine;
4 import org.apache.commons.cli.CommandLineParser;
5 import org.apache.commons.cli.DefaultParser;
6 import org.apache.commons.cli.HelpFormatter;
7 import org.apache.commons.cli.Option;
8 import org.apache.commons.cli.Options;
9 import org.apache.commons.cli.ParseException;
10 import org.openecomp.sdc.asdctool.migration.config.MigrationSpringConfig;
11 import org.openecomp.sdc.asdctool.migration.core.SdcMigrationTool;
12 import org.openecomp.sdc.be.config.ConfigurationManager;
13 import org.openecomp.sdc.common.api.ConfigurationSource;
14 import org.openecomp.sdc.common.impl.ExternalConfiguration;
15 import org.openecomp.sdc.common.impl.FSConfigurationSource;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
19
20 public class MigrationMenu {
21
22     private final static Logger LOGGER = LoggerFactory.getLogger(MigrationMenu.class);
23
24     public static void main(String[] args) {
25         CommandLine commandLine = initCmdLineOptions(args);
26         String appConfigDir = commandLine.getOptionValue("c");
27         boolean enforceAll = commandLine.hasOption("e");
28         uploadConfiguration(appConfigDir);
29         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MigrationSpringConfig.class);
30         doMigrate(enforceAll, context);
31
32     }
33
34     private static void doMigrate(boolean enforceAll, AnnotationConfigApplicationContext context) {
35         SdcMigrationTool migrationTool = context.getBean(SdcMigrationTool.class);
36         boolean migrate = migrationTool.migrate(enforceAll);
37         if (migrate) {
38             LOGGER.info("migration completed successfully");
39             System.exit(0);
40         } else {
41             LOGGER.error("migration failed");
42             System.exit(1);
43         }
44     }
45
46     private static CommandLine initCmdLineOptions(String[] args) {
47         Options options = buildCmdLineOptions();
48         CommandLineParser parser = new DefaultParser();
49         try {
50             // parse the command line arguments
51             return parser.parse( options, args );
52         }
53         catch( ParseException exp ) {
54             // oops, something went wrong
55             System.err.println( "Parsing failed.  Reason: " + exp.getMessage() );
56             usageAndExit(options);
57         }
58         return null;
59     }
60
61     private static void usageAndExit(Options options) {
62         HelpFormatter formatter = new HelpFormatter();
63         formatter.printHelp( "yy", options );
64         System.exit(1);
65     }
66
67     private static Options buildCmdLineOptions() {
68         Option configPath = buildConfigPathOption();
69
70         Option enforceAll = buildEnforceAllOption();
71
72         Options options = new Options();
73         options.addOption(configPath);
74         options.addOption(enforceAll);
75         return options;
76     }
77
78     private static Option buildEnforceAllOption() {
79         return Option.builder("e")
80                 .longOpt("enforceAll")
81                 .desc("enforce running all migration steps for current version")
82                 .build();
83     }
84
85     private static Option buildConfigPathOption() {
86         return Option.builder("c")
87                     .longOpt("configFolderPath")
88                     .required()
89                     .hasArg()
90                     .desc("path to sdc configuration folder - required")
91                     .build();
92     }
93
94     private static void uploadConfiguration(String appConfigDir) {
95         ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
96         ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
97     }
98
99
100 }