/* * Copyright (c) 2014 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.DiscoveredDataObject; import com.emc.storageos.db.client.model.StorageSystem; import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback; import com.emc.storageos.svcs.errorhandling.resources.MigrationCallbackException; /** * Migrated StorageSystem serialNumber from ARRAY.R700.94677 to 94677. * * */ public class HDSStorageSystemSerialNumberMigration extends BaseCustomMigrationCallback { private static final Logger log = LoggerFactory.getLogger(HDSStorageSystemSerialNumberMigration.class); private static String ARRAY = "ARRAY"; private static String DOT_OPERATOR = "\\."; /** * Process the HDS storagesystems and update their serialNumber from ARRAY.R700.94677 to 94677. */ @Override public void process() throws MigrationCallbackException { DbClient dbClient = getDbClient(); try { List<URI> storageSystemURIList = dbClient.queryByType(StorageSystem.class, true); List<StorageSystem> storageSystemsList = dbClient.queryObject(StorageSystem.class, storageSystemURIList); Iterator<StorageSystem> systemItr = storageSystemsList.iterator(); List<StorageSystem> systemsToUpdate = new ArrayList<StorageSystem>(); while (systemItr.hasNext()) { StorageSystem storageSystem = systemItr.next(); // perform storagesystem upgrade only fro HDS storagesystems. if (DiscoveredDataObject.Type.hds.name().equalsIgnoreCase(storageSystem.getSystemType())) { String serialNumber = storageSystem.getSerialNumber(); if (serialNumber.contains(ARRAY)) { String[] dotSeperatedStrings = serialNumber.split(DOT_OPERATOR); String serialNumberToUpdate = dotSeperatedStrings[dotSeperatedStrings.length - 1]; storageSystem.setSerialNumber(serialNumberToUpdate); systemsToUpdate.add(storageSystem); } } } // persist all systems here. dbClient.persistObject(systemsToUpdate); } catch (Exception e) { log.error("Exception occured while updating hds storagesystem serialnumber"); log.error(e.getMessage(), e); } } }