/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.impl.datadomain; import java.net.URI; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.datadomain.restapi.DataDomainApiConstants; import com.emc.storageos.datadomain.restapi.DataDomainClient; import com.emc.storageos.datadomain.restapi.DataDomainClientFactory; import com.emc.storageos.datadomain.restapi.errorhandling.DataDomainApiException; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.model.StorageProvider; import com.emc.storageos.db.client.model.StorageProvider.ConnectionStatus; public class DataDomainUtils { private static final Logger _log = LoggerFactory.getLogger(DataDomainUtils.class); /** * Get DataDomain device represented by the StorageDevice * * @param device StorageDevice object * @return DataDomainClient object * @throws com.emc.storageos.datadomain.restapi.errorhandling.DataDomainApiException */ private static DataDomainClient getDataDomainClient(StorageProvider provider, DataDomainClientFactory ddClientFactory) throws DataDomainApiException { DataDomainClient ddClient = null; if (provider != null) { ddClient = (DataDomainClient) ddClientFactory.getRESTClient( DataDomainApiConstants.newDataDomainBaseURI( provider.getIPAddress(), provider.getPortNumber()), provider.getUserName(), provider.getPassword()); } return ddClient; } /** * Refresh DataDomain connections. * * @param ddProviderList the DataDomain provider list * @param dbClient the db client * @return the list of active providers */ public static List<URI> refreshDDConnections(final List<StorageProvider> ddProviderList, DbClient dbClient, DataDomainClientFactory ddClientFactory) { List<URI> activeProviders = new ArrayList<URI>(); for (StorageProvider storageProvider : ddProviderList) { try { // Is the DDMC reachable DataDomainClient ddClient = getDataDomainClient(storageProvider, ddClientFactory); if (ddClient == null) { storageProvider.setConnectionStatus(ConnectionStatus.NOTCONNECTED.name()); _log.error("Storage Provider {} is not reachable", storageProvider.getIPAddress()); } else { ddClient.getManagementSystemInfo(); storageProvider.setConnectionStatus(ConnectionStatus.CONNECTED.name()); activeProviders.add(storageProvider.getId()); _log.info("Storage Provider {} is reachable", storageProvider.getIPAddress()); } } catch (Exception e) { storageProvider.setConnectionStatus(ConnectionStatus.NOTCONNECTED.name()); _log.error("Storage Provider {} is not reachable", storageProvider.getIPAddress()); } finally { dbClient.persistObject(storageProvider); } } return activeProviders; } }