package io.cattle.platform.servicediscovery.service.impl; import static io.cattle.platform.core.constants.ExternalEventConstants.*; import io.cattle.platform.allocator.service.AllocationHelper; import io.cattle.platform.core.model.ExternalEvent; import io.cattle.platform.core.model.Host; import io.cattle.platform.core.model.HostLabelMap; import io.cattle.platform.core.model.Service; import io.cattle.platform.object.ObjectManager; import io.cattle.platform.servicediscovery.api.dao.ServiceDao; import io.cattle.platform.servicediscovery.api.dao.ServiceExposeMapDao; 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 GlobalHostActivateServiceLookup implements ServiceLookup { @Inject ServiceDao svcDao; @Inject ServiceExposeMapDao expMapDao; @Inject ServiceDiscoveryService sdSvc; @Inject AllocationHelper allocationHelper; @Inject ObjectManager objMgr; @Override public Collection<? extends Service> getServices(Object obj) { if (obj == null) { return null; } Long accountId = null; if (obj instanceof Host) { Host host = (Host) obj; accountId = host.getAccountId(); } else if (obj instanceof HostLabelMap) { HostLabelMap m = (HostLabelMap) obj; accountId = m.getAccountId(); } else if (obj instanceof ExternalEvent) { ExternalEvent event = (ExternalEvent)obj; if (KIND_EXTERNAL_HOST_EVENT.equals(event.getKind()) && TYPE_SCHEDULER_UPDATE.equals(event.getEventType())) { accountId = event.getAccountId(); } } if (accountId == null) { return null; } List<? extends Service> services = expMapDao.getActiveServices(accountId); List<Service> activeGlobalServices = new ArrayList<Service>(); for (Service service : services) { if (sdSvc.isGlobalService(service) || sdSvc.isScalePolicyService(service)) { activeGlobalServices.add(service); } } return activeGlobalServices; } }