package io.cattle.platform.servicediscovery.api.dao;
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.ServiceExposeMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.tuple.Pair;
public interface ServiceExposeMapDao {
/**
* this method is wrapped up in transaction. All instances will get created and scheduled for create inside one
* transaction
*
* @param properties
* @param service
* @return
*/
Pair<Instance, ServiceExposeMap> createServiceInstance(Map<String, Object> properties, Service service);
List<? extends Instance> listServiceManagedInstances(Service service);
List<? extends Instance> listServiceManagedInstances(Service service, String launchConfigName);
ServiceExposeMap findInstanceExposeMap(Instance instance);
ServiceExposeMap createServiceInstanceMap(Service service, Instance instance, boolean managed);
ServiceExposeMap createIpToServiceMap(Service service, String ipAddress);
ServiceExposeMap getServiceIpExposeMap(Service service, String ipAddress);
List<? extends Service> getActiveServices(long accountId);
List<? extends ServiceExposeMap> getNonRemovedServiceIpMaps(long serviceId);
List<? extends ServiceExposeMap> getNonRemovedServiceHostnameMaps(long serviceId);
List<? extends ServiceExposeMap> getUnmanagedServiceInstanceMapsToRemove(long serviceId);
Host getHostForInstance(long instanceId);
ServiceExposeMap getServiceHostnameExposeMap(Service service, String hostName);
ServiceExposeMap createHostnameToServiceMap(Service service, String hostName);
ServiceExposeMap getServiceInstanceMap(Service service, Instance instance);
List<? extends ServiceExposeMap> getInstancesSetForUpgrade(long serviceId);
List<? extends Instance> getInstancesToUpgrade(Service service, String launchConfigName, String toVersion);
List<? extends Instance> getInstancesToCleanup(Service service, String launchConfigName, String toVersion);
List<? extends Instance> getUpgradedInstances(Service service, String launchConfigName, String toVersion, boolean managed);
Integer getCurrentScale(long serviceId);
List<? extends Instance> listServiceManagedInstancesAll(Service service);
}