/* * Copyright (c) 2014 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.impl.block.taskcompleter; import java.net.URI; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * Shim base class that gives us a context of user added initiators. * This allows back-end management like *ExportOperations to be able to identify * exactly which initiators were added to masks, given the possibility that some * initiators associated with the mask may be "borrowed" from other masks. * * This gives us a much more honest list of initiators that we added to the mask, * which helps us make better decisions when it's time to remove the mask, which * may impact other masks using those same initiators. */ public abstract class ExportMaskInitiatorCompleter extends ExportTaskCompleter { private List<URI> _userAddedInitiatorURIs; public ExportMaskInitiatorCompleter(Class clazz, URI id, String opId) { super(clazz, id, opId); } public ExportMaskInitiatorCompleter(Class clazz, URI id, URI emURI, String opId) { super(clazz, id, emURI, opId); } public List<URI> getUserAddedInitiatorURIs() { if (_userAddedInitiatorURIs == null) { _userAddedInitiatorURIs = new ArrayList<>(); } return _userAddedInitiatorURIs; } public void addInitiator(URI initiator) { if (_userAddedInitiatorURIs == null) { _userAddedInitiatorURIs = new ArrayList<>(); } _userAddedInitiatorURIs.add(initiator); } public void addInitiators(Collection<URI> initiators) { if (_userAddedInitiatorURIs == null) { _userAddedInitiatorURIs = new ArrayList<>(); } for (URI initiator : initiators) { _userAddedInitiatorURIs.add(initiator); } } public void removeInitiator(URI initiator) { if (_userAddedInitiatorURIs != null) { _userAddedInitiatorURIs.remove(initiator); } } public void removeInitiators(Collection<URI> initiators) { if (_userAddedInitiatorURIs != null) { for (URI initiator : initiators) { _userAddedInitiatorURIs.remove(initiator); } } } }