diff --git a/src/main/java/org/gcube/vremanagement/executor/client/query/Discover.java b/src/main/java/org/gcube/vremanagement/executor/client/query/Discover.java index 058df7f..fa67d43 100644 --- a/src/main/java/org/gcube/vremanagement/executor/client/query/Discover.java +++ b/src/main/java/org/gcube/vremanagement/executor/client/query/Discover.java @@ -3,6 +3,7 @@ package org.gcube.vremanagement.executor.client.query; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Random; import org.gcube.common.clients.exceptions.DiscoveryException; import org.gcube.common.resources.gcore.GCoreEndpoint; @@ -11,6 +12,7 @@ import org.gcube.resources.discovery.client.queries.api.SimpleQuery; import org.gcube.resources.discovery.icclient.ICFactory; import org.gcube.vremanagement.executor.client.Constants; import org.gcube.vremanagement.executor.client.plugins.query.filter.EndpointDiscoveryFilter; +import org.gcube.vremanagement.executor.client.plugins.query.filter.SpecificEndpointDiscoveryFilter; import org.gcube.vremanagement.executor.client.query.filter.GCoreEndpointQueryFilter; import org.gcube.vremanagement.executor.client.query.filter.ServiceEndpointQueryFilter; import org.gcube.vremanagement.executor.client.util.Tuple; @@ -142,9 +144,13 @@ public class Discover { } SimpleQuery gCoreEndpointDiscoveryQuery = getGCoreEndpointQuery(); - if(endpointDiscoveryFilter!=null) { - endpointDiscoveryFilter.filter(gCoreEndpointDiscoveryQuery, serviceEndpoints); + if(endpointDiscoveryFilter==null) { + Random random = new Random(); + int index = random.nextInt(serviceEndpoints.size()); + ServiceEndpoint serviceEndpoint = serviceEndpoints.get(index); + endpointDiscoveryFilter = new SpecificEndpointDiscoveryFilter(serviceEndpoint.profile().runtime().hostedOn()); } + endpointDiscoveryFilter.filter(gCoreEndpointDiscoveryQuery, serviceEndpoints); List addresses = ICFactory.client().submit(gCoreEndpointDiscoveryQuery);