package io.cattle.platform.servicediscovery.service.impl; import static io.cattle.platform.core.model.tables.HostTable.*; import static io.cattle.platform.core.model.tables.ServiceTable.*; import io.cattle.platform.core.model.Agent; import io.cattle.platform.core.model.Host; import io.cattle.platform.core.model.Service; import io.cattle.platform.db.jooq.dao.impl.AbstractJooqDao; import io.cattle.platform.object.ObjectManager; import io.cattle.platform.servicediscovery.service.ServiceDiscoveryService; import io.cattle.platform.servicediscovery.service.ServiceLookup; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.inject.Inject; public class AgentServiceLookup extends AbstractJooqDao implements ServiceLookup { @Inject ObjectManager objMgr; @Inject ServiceDiscoveryService sdService; @Override public Collection<? extends Service> getServices(Object obj) { if (!(obj instanceof Agent)) { return null; } Agent agent = (Agent) obj; Host host = objMgr.findAny(Host.class, HOST.AGENT_ID, agent.getId(), HOST.REMOVED, null); if (host == null) { return null; } List<? extends Service> allServices = objMgr.find(Service.class, SERVICE.ACCOUNT_ID, host.getAccountId(), SERVICE.REMOVED, null); List<Service> svcsToReconcile = new ArrayList<>(); for (Service service : allServices) { if (!sdService.isActiveService(service)) { continue; } if (sdService.isGlobalService(service) || sdService.isScalePolicyService(service)) { svcsToReconcile.add(service); } } return svcsToReconcile; } }