package io.cattle.platform.allocator.dao; import io.cattle.platform.allocator.dao.impl.QueryOptions; import io.cattle.platform.allocator.service.AllocationAttempt; import io.cattle.platform.allocator.service.AllocationCandidate; 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.Port; import io.cattle.platform.core.model.StoragePool; import io.cattle.platform.core.model.Volume; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; public interface AllocatorDao { List<? extends StoragePool> getAssociatedPools(Volume volume); List<? extends StoragePool> getAssociatedUnmanagedPools(Host host); Host getHost(Instance instance); List<? extends Host> getHosts(Collection<? extends StoragePool> storagePoolsIds); boolean recordCandidate(AllocationAttempt attempt, AllocationCandidate candidate); void releaseAllocation(Instance instance, InstanceHostMap map); void releaseAllocation(Volume volume); boolean isInstanceImageKind(long instanceId, String kind); boolean isVolumeInstanceImageKind(long volumeId, String kind); List<Port> getUsedPortsForHostExcludingInstance(long hostId, long instanceId); // key -> [value,mapping.state] Map<String, String[]> getLabelsForHost(long hostId); boolean hostHasContainerLabel(long hostId, String labelKey, String labelValue); List<? extends Host> getActiveHosts(long accountId); List<? extends Host> getNonPurgedHosts(long accountId); boolean isVolumeInUseOnHost(long volumeId, long hostId); Set<Long> findHostsWithVolumeInUse(long volumeId); List<Long> getInstancesWithVolumeMounted(long volumeId, long currentInstanceId); Map<String, List<InstanceHostMap>> getInstanceHostMapsWithHostUuid(long instanceId); List<Instance> getUnmappedDeploymentUnitInstances(String deploymentUnitUuid); boolean isAllocationReleased(Object resource); String getAllocatedHostUuid(Volume volume); Iterator<AllocationCandidate> iteratorHosts(List<String> orderedHostUuids, List<Long> volumes, QueryOptions options); }