/*
* Copyright (c) 2008-2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.installer;
import com.emc.storageos.installer.controller.InstallerManager;
import com.emc.storageos.installer.controller.InstallerWizardController;
import com.emc.storageos.model.property.PropertyConstants;
import com.emc.storageos.installer.widget.InstallerWizard;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
public class InstallerMain {
private static final Logger log = LoggerFactory.getLogger(InstallerMain.class);
private static void usage() {
System.out.println("Usage: installer <vipr-release-version> <boot_mode> (<devmode>|multicast [<alive node id> ..])");
System.out.println("\t<vipr-release-version>: e.g. vipr-2.2.0.0.71b9a4");
System.out.println("\t<boot_mode>: init|install|config|redeploy");
System.out.println("\t<dev_mode>: true|false(default), , only valid for init, install and config mode");
System.out.println("\tmulticast: valid for redeploy mode, to multi-cast cluster config for redeploying node");
System.out
.println("\t<alive node id> ..: alive node IDs in the cluster which is going to multicast for redeploying node. E.g. \"vipr1 vipr3\"");
System.exit(1);
}
public static void main(String[] args) {
if (args.length < 2) {
usage();
}
String release_version = args[0];
String boot_mode = args[1];
if (!(boot_mode.equals(PropertyConstants.INIT_MODE)) &&
!(boot_mode.equals(PropertyConstants.INSTALL_MODE)) &&
!(boot_mode.equals(PropertyConstants.CONFIG_MODE)) &&
!(boot_mode.equals(PropertyConstants.REDEPLOY_MODE))) {
usage();
}
boolean multicast_redeploy = false;
InstallerManager manager = new InstallerManager(release_version, boot_mode);
if (!boot_mode.equals(PropertyConstants.REDEPLOY_MODE)) {
if (args.length > 2 && args[2].equals("true")) {
manager.setDevMode(true);
}
} else {
if (args.length > 2 && args[2].equals("multicast")) {
if (args.length == 3) {
// no parameter for alive nodes
log.error("failed to provide alive node ID list");
usage();
}
// multi-cast cluster configuration for redeploy mode
ArrayList<String> aliveNodes = new ArrayList<String>();
for (int i = 3; i < args.length; i++) {
aliveNodes.add(args[i]);
}
// TODO: read from ovfenv partition later for majority node recovery later
// try {
// Configuration config = (Configuration) InstallerUtil.readObjectFromFile(InstallerConstants.CONFIG_FILE_PATH);
// config.setScenario(InstallerConstants.REDEPLOY_MODE);
// config.setAliveNodes(aliveNodes);
//
// InstallerUtil.doBroadcast(release_version, config, InstallerConstants.REDEPLOY_MULTICAST_TIMEOUT);
// } catch (Exception e) {
// log.error("redeploy multicast task threw", e);
// System.exit(1);
// }
System.exit(0);
}
}
InstallerWizardController wizardController = new InstallerWizardController(new InstallerWizard(), manager);
log.info("Starting Installer UI with options : {} - {}", release_version, boot_mode);
wizardController.start();
}
}