/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package jobs.vipr; import static com.emc.vipr.client.core.util.ResourceUtils.id; import java.net.URI; import java.util.Collection; import java.util.List; import java.util.Set; import util.BourneUtil; import com.emc.storageos.model.varray.VirtualArrayConnectivityRestRep; import com.emc.storageos.model.varray.VirtualArrayRestRep; import com.emc.vipr.client.ViPRCoreClient; import com.emc.vipr.client.core.util.CachedResources; import com.google.common.collect.Sets; public class ConnectedVirtualArraysCall extends ViPRListCall<VirtualArrayRestRep> { private Collection<URI> varrayIds; private String connectionType; public ConnectedVirtualArraysCall(Collection<URI> varrayIds, String connectionType) { this(BourneUtil.getViprClient(), varrayIds, connectionType); } public ConnectedVirtualArraysCall(ViPRCoreClient client, Collection<URI> varrayIds, String connectionType) { this(client, new CachedResources<VirtualArrayRestRep>(client.varrays()), varrayIds, connectionType); } public ConnectedVirtualArraysCall(ViPRCoreClient client, CachedResources<VirtualArrayRestRep> cache, Collection<URI> varrayIds, String connectionType) { super(client, cache); this.varrayIds = varrayIds; this.connectionType = connectionType; } @Override public List<VirtualArrayRestRep> call() { Set<URI> connectedVirtualArrays = Sets.newHashSet(); for (URI varrayId : varrayIds) { List<VirtualArrayConnectivityRestRep> connectivities = client.varrays().getConnectivity(varrayId); for (VirtualArrayConnectivityRestRep connectivity : connectivities) { if (connectivity.getConnectionType().contains(connectionType)) { connectedVirtualArrays.add(id(connectivity.getVirtualArray())); } } } return getByIds(connectedVirtualArrays); } }