package io.cattle.platform.servicediscovery.service;
import io.cattle.platform.configitem.events.ConfigUpdate;
import io.cattle.platform.core.addon.ServiceLink;
import io.cattle.platform.core.model.Host;
import io.cattle.platform.core.model.Instance;
import io.cattle.platform.core.model.Service;
import io.cattle.platform.core.model.ServiceIndex;
import io.cattle.platform.core.model.Stack;
import io.cattle.platform.core.model.Subnet;
import io.cattle.platform.eventing.annotation.AnnotatedEventListener;
import io.cattle.platform.eventing.annotation.EventHandler;
import java.util.List;
public interface ServiceDiscoveryService extends AnnotatedEventListener {
void removeServiceMaps(Service service);
List<Integer> getServiceInstanceUsedSuffixes(Service service, String launchConfigName);
boolean isActiveService(Service service);
void cloneConsumingServices(Service fromService, Service toService);
void setVIP(Service service);
void releaseVip(Service service);
void addServiceLink(Service service, ServiceLink serviceLink);
void removeServiceLink(Service service, ServiceLink serviceLink);
boolean isSelectorLinkMatch(String selector, Service targetService);
boolean isSelectorContainerMatch(String selector, Instance instance);
List<String> getServiceActiveStates();
boolean isGlobalService(Service service);
void setPorts(Service service);
void releasePorts(Service service);
void setToken(Service service);
void removeServiceIndexes(Service service);
String allocateIpForService(Object owner, Subnet subnet, String requestedIp);
void allocateIpToServiceIndex(Service service, ServiceIndex serviceIndex, String requestedIp);
void releaseIpFromServiceIndex(Service service, ServiceIndex serviceIndex);
void updateHealthState(Stack stack);
boolean isScalePolicyService(Service service);
void setServiceIndexIp(ServiceIndex serviceIndex, String ipAddress);
@EventHandler
void serviceUpdate(ConfigUpdate update);
@EventHandler
void hostEndpointsUpdate(ConfigUpdate update);
void reconcileServiceEndpoints(Service service);
void reconcileHostEndpoints(Host host);
void removeFromLoadBalancerServices(Service service);
void registerServiceLinks(Service service);
}