/* * Copyright (c) 2008-2011 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.impl.plugins.discovery.smis.processor.fast; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.model.AutoTieringPolicy; import com.emc.storageos.plugins.BaseCollectionException; import com.emc.storageos.plugins.common.Constants; import com.emc.storageos.plugins.common.domainmodel.Operation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import static com.emc.storageos.volumecontroller.impl.plugins.discovery.smis.processor.AutoTieringPolicyProcessorHelper.getAutoTieringPolicyByNameFromDB; /** * This processor responsibility is to insert policy Objects into DB. * */ public class PersistFASTPolicyProcessor extends AbstractFASTPolicyProcessor { private DbClient _dbClient; private Logger _logger = LoggerFactory.getLogger(PersistFASTPolicyProcessor.class); @Override public void processResult( Operation operation, Object resultObj, Map<String, Object> keyMap) throws BaseCollectionException { try { _dbClient = (DbClient) keyMap.get(Constants.dbClient); List<AutoTieringPolicy> fastPolicies = new ArrayList<AutoTieringPolicy>(); @SuppressWarnings("unchecked") Map<String, Set<String>> mapping = (Map<String, Set<String>>) keyMap .get(Constants.POLICY_TO_POOLS_MAPPING); for (String key : mapping.keySet()) { AutoTieringPolicy policy = getAutoTieringPolicyByNameFromDB(key, _dbClient); Set<String> pools = mapping.get(key); policy.addPools(pools); fastPolicies.add(policy); } _dbClient.persistObject(fastPolicies); } catch (Exception e) { _logger.error("Adding Pools to POlicy Objects and Persisting failed :", e); } } @Override protected void setPrerequisiteObjects(List<Object> inputArgs) throws BaseCollectionException { } }