package com.hubspot.baragon.agent.lbs; import java.util.Collection; import java.util.concurrent.Callable; import com.google.common.base.Optional; import com.hubspot.baragon.models.BaragonConfigFile; import com.hubspot.baragon.models.BaragonServiceState; import com.hubspot.baragon.models.ServiceContext; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class BootstrapFileChecker implements Callable<Optional<Pair<ServiceContext, Collection<BaragonConfigFile>>>> { private static final Logger LOG = LoggerFactory.getLogger(BootstrapFileChecker.class); private final FilesystemConfigHelper configHelper; private final BaragonServiceState serviceState; private final long now; public BootstrapFileChecker(FilesystemConfigHelper configHelper, BaragonServiceState serviceState, long now) { this.configHelper = configHelper; this.serviceState = serviceState; this.now = now; } @Override public Optional<Pair<ServiceContext, Collection<BaragonConfigFile>>> call() { try { ServiceContext context = new ServiceContext(serviceState.getService(), serviceState.getUpstreams(), now, true); Optional<Collection<BaragonConfigFile>> maybeConfigsToApply = configHelper.configsToApply(context); if (maybeConfigsToApply.isPresent()) { Pair<ServiceContext, Collection<BaragonConfigFile>> configMap = new ImmutablePair<>(context, maybeConfigsToApply.get()); return Optional.of(configMap); } } catch (Exception e) { LOG.error(String.format("Caught exception while finding config for %s", serviceState.getService()), e); } LOG.info(String.format("Don't need to apply %s", serviceState.getService().getServiceId())); return Optional.absent(); } }