/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package models.datatable; import models.StorageProviderTypes; import org.apache.commons.lang.StringUtils; import util.datatable.DataTable; import com.emc.storageos.model.smis.StorageProviderRestRep; import controllers.Common; import controllers.arrays.ScaleIO; public class StorageProviderDataTable extends DataTable { public static final String SUPPORTED_SCALEIO_DASHBOARD_VERSION = "1.21"; public static final String SUPPORTED_SCALEIO_JNLP_VERSION = "1.3"; public static final String SCALEIO_JNLP_URL = "%s/dashboard.jnlp"; public StorageProviderDataTable() { addColumn("name").setRenderFunction("renderLink"); addColumn("host"); addColumn("interfaceType"); addColumn("userName").hidden(); StorageProviderInfo.addDiscoveryColumns(this); addColumn("manageUrl").setRenderFunction("render.manageUrl"); sortAllExcept("manageUrl"); this.setDefaultSort("name", "asc"); } public static class StorageProviderInfo extends DiscoveredSystemInfo { public String id; public String name; public String host; public String interfaceType; public String version; public String userName; public String manageUrl; public StorageProviderInfo() { } public StorageProviderInfo(StorageProviderRestRep storageProvider) { super(storageProvider); this.id = storageProvider.getId().toString(); this.name = storageProvider.getName(); this.host = StringUtils.defaultIfEmpty(storageProvider.getIPAddress(), "0.0.0.0"); this.interfaceType = StorageProviderTypes.getDisplayValue(storageProvider.getInterface()); this.version = StringUtils.defaultIfEmpty(storageProvider.getVersionString(), "N/A"); this.userName = storageProvider.getUserName(); this.manageUrl = getManageUrl(storageProvider); } } private static String getManageUrl(StorageProviderRestRep storageProvider) { String manageUrl = storageProvider.getElementManagerURL(); String prefix = !StringUtils.isEmpty(manageUrl) && !manageUrl.matches("^(https?)://.*$") ? "https://" : ""; if (StorageProviderTypes.SCALEIO.equals(storageProvider.getInterface()) && !StringUtils.isEmpty(manageUrl)) { if (StringUtils.startsWith(storageProvider.getVersionString(), SUPPORTED_SCALEIO_DASHBOARD_VERSION)) { return Common.reverseRoute(ScaleIO.class, "dashboard", "id", storageProvider.getId()); } else if (StringUtils.startsWith(storageProvider.getVersionString(), SUPPORTED_SCALEIO_JNLP_VERSION)) { return String.format(SCALEIO_JNLP_URL, prefix + manageUrl); } } else if (!StringUtils.isEmpty(manageUrl)) { return prefix + manageUrl; } return ""; } }