/* * Copyright (c) 2008-2011 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.impl.plugins.discovery.smis.processor.fast.vmax; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.cim.CIMInstance; import javax.cim.CIMObjectPath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.model.StorageTier; import com.emc.storageos.plugins.BaseCollectionException; import com.emc.storageos.plugins.common.Constants; import com.emc.storageos.plugins.common.domainmodel.Operation; import com.emc.storageos.volumecontroller.impl.plugins.discovery.smis.processor.fast.AbstractFASTPolicyProcessor; /** * Processor to discover Vmax Tier Percentages associated with Fast Policy */ public class TierPercentageProcessor extends AbstractFASTPolicyProcessor { private Logger _logger = LoggerFactory.getLogger(TierPercentageProcessor.class); private static final String DEPENDENT = "Dependent"; private static final String MAX_PERCENT_ALLOCATED = "MaxPercentAllocated"; private DbClient _dbClient; @Override public void processResult( Operation operation, Object resultObj, Map<String, Object> keyMap) throws BaseCollectionException { final Iterator<CIMInstance> it = (Iterator<CIMInstance>) resultObj; _dbClient = (DbClient) keyMap.get(Constants.dbClient); while (it.hasNext()) { try { CIMInstance symmAssociatedPolicyInstance = it.next(); CIMObjectPath symmAssociatedPolicyPath = symmAssociatedPolicyInstance .getObjectPath(); CIMObjectPath tierPath = (CIMObjectPath) symmAssociatedPolicyPath.getKey( DEPENDENT).getValue(); String tierPercent = symmAssociatedPolicyInstance.getPropertyValue( MAX_PERCENT_ALLOCATED).toString(); String tierID = tierPath.getKey(Constants.INSTANCEID).getValue() .toString(); String tierNativeGuid = getTierNativeGuidForVMax(tierID); StorageTier tierObject = checkStorageTierExistsInDB(tierNativeGuid, _dbClient); if (null != tierObject) { tierObject.setPercentage(tierPercent); _dbClient.persistObject(tierObject); } } catch (Exception e) { _logger.error("Vmax Tier Percentage Discovery failed", e); } } } @Override protected void setPrerequisiteObjects(List<Object> inputArgs) throws BaseCollectionException { // TODO Auto-generated method stub } }