/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.placement; import java.util.Map; import com.emc.storageos.db.client.model.StringSetMap; import com.emc.storageos.util.NetworkLite; public class StoragePortsAssignerFactory { /** * Returns the appropriate assigner for a particular type of storage array. * * @param deviceType - String corresponding to DiscoverdDataObject.Type enum * @return StoragePortsAssigner */ public static StoragePortsAssigner getAssigner(String deviceType) { return new DefaultStoragePortsAssigner(); } /** * Returns the appropriate assigner for a particular type of storage array * that handles assigning ports based on existing zones. * * @param deviceType - String corresponding to DiscoverdDataObject.Type enum * @param zonesByNetwork existing zones mapped by network and initiator within the network * @return StoragePortsAssigner */ public static StoragePortsAssigner getAssignerForZones(String deviceType, Map<NetworkLite, StringSetMap> zonesByNetwork) { if (zonesByNetwork == null || zonesByNetwork.isEmpty()) { return getAssigner(deviceType); } else { return new ZonedPortsStoragePortsAssigner(zonesByNetwork); } } }