/* * Copyright (c) 2016 EMC Corporation * All Rights Reserved */ package controllers.arrays; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.emc.storageos.model.storagedriver.StorageDriverRestRep; import com.google.common.collect.Lists; import controllers.Common; import controllers.deadbolt.Restrict; import controllers.deadbolt.Restrictions; import controllers.util.FlashException; import controllers.util.ViprResourceController; import models.datatable.StorageDriverDataTable; import models.datatable.StorageDriverDataTable.StorageDriverInfo; import play.data.binding.As; import play.mvc.With; import util.MessagesUtils; import util.StorageDriverUtils; import util.datatable.DataTablesSupport; @With(Common.class) @Restrictions({ @Restrict("SYSTEM_ADMIN"), @Restrict("RESTRICTED_SYSTEM_ADMIN") }) public class StorageDrivers extends ViprResourceController { protected static final String UNKNOWN = "disasterRecovery.unknown"; protected static final String DELETED_SUCCESS = "storageDrivers.delete.init.success"; protected static final String SAVED = "SMISProviders.saved"; protected static final String INTALL_INIT_SUCCESS = "storageDrivers.install.init.success"; protected static final String UPGRADE_INIT_SUCCESS = "storageDrivers.upgrade.init.success"; public static void create() { render("@install"); } @FlashException public static void delete(String driverName) { StorageDriverUtils.uninstallDriver(driverName); flash.success(MessagesUtils.get(DELETED_SUCCESS)); list(); } // placeholder method, show upgrade page public static void upgrade(String driverName) { render("@upgrade", driverName); } public static void list() { StorageDriverDataTable dataTable = new StorageDriverDataTable(); render(dataTable); } public static void listJson() { List<StorageDriverInfo> drivers = Lists.newArrayList(); for (StorageDriverRestRep driver : StorageDriverUtils.getDrivers().getDrivers()) { drivers.add(new StorageDriverInfo(driver)); } renderJSON(DataTablesSupport.createJSON(drivers, params)); } @FlashException public static void saveDriver(File driverFile) throws IOException { if (driverFile == null) { flash.error("Error: please specify a driver jar file"); create(); } StorageDriverUtils.installDriver(driverFile); flash.success(MessagesUtils.get(INTALL_INIT_SUCCESS)); list(); } @FlashException public static void upgradeDriver(File driverFile, String driverName, boolean force) { if (driverFile == null) { flash.error("Error: please specify a driver jar file"); upgrade(driverName); } StorageDriverUtils.upgradeDriver(driverFile, driverName, force); flash.success(MessagesUtils.get(UPGRADE_INIT_SUCCESS)); list(); } public static void itemsJson(@As(",") String[] ids) { List<String> uuids = Arrays.asList(ids); itemsJson(uuids); } private static void itemsJson(List<String> names) { List<StorageDriverRestRep> drivers = new ArrayList<StorageDriverRestRep>(); for (String name : names) { StorageDriverRestRep driver = StorageDriverUtils.getDriver(name); if (driver != null) { drivers.add(driver); } } performItemsJson(drivers, new JsonItemOperation()); } static class JsonItemOperation implements ResourceValueOperation<StorageDriverInfo, StorageDriverRestRep> { @Override public StorageDriverInfo performOperation(StorageDriverRestRep driver) throws Exception { return new StorageDriverInfo(driver); } } }