/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package models; import java.util.List; import org.apache.commons.lang.StringUtils; import util.MessagesUtils; import com.emc.storageos.model.DiscoveredSystemObjectRestRep; import com.emc.storageos.model.protection.ProtectionSystemRestRep; import com.emc.storageos.model.smis.StorageProviderRestRep; import com.emc.storageos.model.systems.StorageSystemRestRep; import com.google.common.collect.Lists; public class DiscoveryStatusUtils { private static final String UNREACHABLE = "InfrastructureErrors.NOT_REACHABLE"; private static final String ERROR = "ERROR"; public static Long getLastDiscoveryDate(DiscoveredSystemObjectRestRep data) { return data.getLastDiscoveryRunTime(); } public static Long getLastDiscoveryDate(StorageProviderRestRep data) { return data.getLastScanTime(); } public static String getDiscoveryStatus(DiscoveredSystemObjectRestRep data) { return data.getDiscoveryJobStatus(); } public static String getDiscoveryStatus(StorageProviderRestRep data) { return data.getScanStatus(); } public static String getDiscoveryMessage(StorageProviderRestRep data) { return data.getLastScanStatusMessage(); } public static String getDiscoveryMessage(DiscoveredSystemObjectRestRep data) { return data.getLastDiscoveryStatusMessage(); } public static String getErrorSummary(DiscoveredSystemObjectRestRep data) { List<String> messages = Lists.newArrayList(); if (DiscoveryStatus.isError(data.getDiscoveryJobStatus())) { messages.add(DiscoveryStatus.getDisplayValue(data.getDiscoveryJobStatus())); } if (CompatibilityStatus.isIncompatible(data.getCompatibilityStatus())) { messages.add(CompatibilityStatus.getDisplayValue(data.getCompatibilityStatus())); } if (isUnreachable(data)) { messages.add(MessagesUtils.get(UNREACHABLE)); } return StringUtils.join(messages, "; "); } private static boolean isUnreachable(DiscoveredSystemObjectRestRep data) { if (data instanceof StorageSystemRestRep) { Boolean reachable = ((StorageSystemRestRep) data).getReachableStatus(); return Boolean.FALSE.equals(reachable); } else if (data instanceof ProtectionSystemRestRep) { Boolean reachable = ((ProtectionSystemRestRep) data).getReachableStatus(); return Boolean.FALSE.equals(reachable); } return false; } public static String getErrorSummary(StorageProviderRestRep data) { if (DiscoveryStatus.isError(data.getScanStatus())) { List<String> messages = Lists.newArrayList(); messages.add(DiscoveryStatus.getDisplayValue(data.getScanStatus())); if (ConnectionStatus.isDisconnected(data.getConnectionStatus())) { messages.add(ConnectionStatus.getDisplayValue(data.getConnectionStatus())); } if (CompatibilityStatus.isIncompatible(data.getCompatibilityStatus())) { messages.add(CompatibilityStatus.getDisplayValue(data.getCompatibilityStatus())); } return StringUtils.join(messages, "; "); } else { return null; } } public static String getErrorDetails(DiscoveredSystemObjectRestRep data) { if (DiscoveryStatus.isError(getDiscoveryStatus(data))) { return data.getLastDiscoveryStatusMessage(); } else { return null; } } public static String getErrorDetails(StorageProviderRestRep data) { if (DiscoveryStatus.isError(getDiscoveryStatus(data))) { return data.getLastScanStatusMessage(); } else { return null; } } public static String getCompatibilityStatus(DiscoveredSystemObjectRestRep data) { return data.getCompatibilityStatus(); } public static String getCompatibilityStatus(StorageProviderRestRep data) { return data.getCompatibilityStatus(); } }