/* * Copyright (c) 2015. EMC Corporation * All Rights Reserved */ package com.emc.storageos.vplexcontroller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.volumecontroller.impl.block.ExportMaskPlacementDescriptor; /** * VplexBackendPlacementStrategy creation factory. Will take in contextual information to create an appropriate * VPlexBackendPlacementStrategy implementation * */ public class VPlexBackendPlacementStrategyFactory { private static final Logger log = LoggerFactory.getLogger(VPlexBackendPlacementStrategy.class); static VPlexBackendPlacementStrategy create(DbClient dbClient, ExportMaskPlacementDescriptor descriptor) { VPlexBackendPlacementStrategy strategy; switch (descriptor.getPlacementHint()) { case VOLUMES_TO_SINGLE_MASK: strategy = new VplexBackendLowestVolumeCountStrategy(dbClient, descriptor); break; case VOLUMES_TO_SEPARATE_MASKS: strategy = new VplexBackendVolumesToSeparateMasksStrategy(dbClient, descriptor); break; default: strategy = new VplexBackendLowestVolumeCountStrategy(dbClient, descriptor); log.error("Unexpected placement strategy {}, will use VplexBackendLowestVolumeCountStrategy", descriptor.getPlacementHint().name()); break; } log.info("VplexBackendPlacementStrategy selected {}", strategy.getClass().getSimpleName()); return strategy; } }