/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.vipr.block.tasks; import java.net.URI; import java.util.Collection; import java.util.List; import java.util.Set; import com.emc.sa.service.vipr.tasks.ViPRExecutionTask; import com.emc.storageos.db.client.model.Initiator; import com.emc.storageos.model.varray.VirtualArrayRestRep; import com.emc.vipr.client.core.filters.IdFilter; import com.google.common.collect.Sets; public class FindVirtualArrayInitiators extends ViPRExecutionTask<Set<Initiator>> { private URI varray; private Collection<Initiator> initiators; public FindVirtualArrayInitiators(String varray, Collection<Initiator> initiators) { this(uri(varray), initiators); } public FindVirtualArrayInitiators(URI varray, Collection<Initiator> initiators) { this.varray = varray; this.initiators = initiators; provideDetailArgs(varray); } @Override public Set<Initiator> executeTask() throws Exception { IdFilter<VirtualArrayRestRep> filter = new IdFilter<VirtualArrayRestRep>(varray); Set<Initiator> results = Sets.newHashSet(); for (Initiator initiator : initiators) { String initiatorPort = initiator.getInitiatorPort(); List<VirtualArrayRestRep> virtualArrays = getClient().varrays().findByInitiatorPort(initiatorPort, filter); // Filter will only return the virtual array we are searching for if (!virtualArrays.isEmpty()) { results.add(initiator); } } return results; } }