/* * Copyright (c) 2016 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.client.upgrade.callbacks; import java.net.URI; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.model.StorageSystem; import com.emc.storageos.db.client.model.DiscoveredDataObject.DataCollectionJobStatus; import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback; import com.emc.storageos.svcs.errorhandling.resources.MigrationCallbackException; /** * Migration handler to set the default values for Array Affinity discovery fields in all existing Storage systems. * These fields were introduced as part of Host/Array Affinity feature in v3.5 * */ public class StorageSystemArrayAffinityDiscoveryMigration extends BaseCustomMigrationCallback { private static final Logger logger = LoggerFactory.getLogger(StorageSystemArrayAffinityDiscoveryMigration.class); @Override public void process() throws MigrationCallbackException { logger.info("Storage system Array affinity discovery migration START"); DbClient dbClient = getDbClient(); try { List<URI> systemURIs = dbClient.queryByType(StorageSystem.class, true); Iterator<StorageSystem> systems = dbClient.queryIterativeObjects(StorageSystem.class, systemURIs, true); List<StorageSystem> modifiedSystems = new ArrayList<StorageSystem>(); while (systems.hasNext()) { StorageSystem system = systems.next(); system.setArrayAffinityStatus(DataCollectionJobStatus.CREATED.name()); system.setLastArrayAffinityRunTime(0L); system.setNextArrayAffinityRunTime(0L); system.setSuccessArrayAffinityTime(0L); modifiedSystems.add(system); logger.info("Updating StorageSystem (id={}) with default values for array affinity discovery statuses", system.getId().toString()); } if (!modifiedSystems.isEmpty()) { dbClient.updateObject(modifiedSystems); } } catch (Exception ex) { logger.error("Exception occured while migrating array affinity discovery default values for Storage systems"); logger.error(ex.getMessage(), ex); } logger.info("Storage system Array affinity discovery migration END"); } }