package io.cattle.platform.core.dao;
import io.cattle.platform.core.addon.PublicEndpoint;
import io.cattle.platform.core.dao.impl.InstanceDaoImpl.IpAddressToServiceIndex;
import io.cattle.platform.core.model.Account;
import io.cattle.platform.core.model.Host;
import io.cattle.platform.core.model.Instance;
import io.cattle.platform.core.model.InstanceHostMap;
import io.cattle.platform.core.model.InstanceLink;
import io.cattle.platform.core.model.Nic;
import io.cattle.platform.core.model.Service;
import java.util.List;
import java.util.Map;
public interface InstanceDao {
List<? extends Instance> getNonRemovedInstanceOn(Long hostId);
List<? extends Instance> findBadInstances(int count);
List<? extends InstanceHostMap> findBadInstanceHostMaps(int count);
List<? extends InstanceLink> findBadInstanceLinks(int count);
List<? extends Nic> findBadNics(int count);
Instance getInstanceByUuidOrExternalId(Long accountId, String uuid, String externalId);
/**
* @param instance
* @return Services related to this instance
*/
List<? extends Service> findServicesFor(Instance instance);
List<? extends Instance> listNonRemovedInstances(Account account, boolean forService);
List<? extends Instance> findInstancesFor(Service service);
List<? extends Instance> findInstanceByServiceName(long accountId, String serviceName);
List<? extends Instance> findInstanceByServiceName(long accountId, String serviceName, String stackName);
List<? extends Instance> findUnallocatedInstanceByDeploymentUnitUuid(long accountId, String deploymentUnitUuid);
List<? extends Host> findHosts(long accountId, long instanceId);
Map<String, Object> getCacheInstanceData(long instanceId);
void clearCacheInstanceData(long instanceId);
List<IpAddressToServiceIndex> getIpToIndex(Service service);
List<PublicEndpoint> getPublicEndpoints(long accountId, Long serviceId, Long hostId);
List<? extends Service> findServicesNonRemovedLinksOnly(Instance instance);
}