package org.openstack.atlas.service.domain.services;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.ZeusRateLimitedLoadBalancer;
import org.openstack.atlas.lb.helpers.ipstring.exceptions.IPBlocksOverLapException;
import org.openstack.atlas.lb.helpers.ipstring.exceptions.IPOctetOutOfRangeException;
import org.openstack.atlas.lb.helpers.ipstring.exceptions.IPRangeTooBigException;
import org.openstack.atlas.lb.helpers.ipstring.exceptions.IPStringConversionException;
import org.openstack.atlas.service.domain.entities.AccountGroup;
import org.openstack.atlas.service.domain.entities.Cluster;
import org.openstack.atlas.service.domain.entities.Host;
import org.openstack.atlas.service.domain.entities.VirtualIp;
import org.openstack.atlas.service.domain.exceptions.BadRequestException;
import org.openstack.atlas.service.domain.exceptions.ClusterStatusException;
import org.openstack.atlas.service.domain.exceptions.EntityNotFoundException;
import org.openstack.atlas.service.domain.exceptions.NoAvailableClusterException;
import org.openstack.atlas.service.domain.pojos.LoadBalancerCountByAccountIdClusterId;
import org.openstack.atlas.service.domain.pojos.VirtualIpAvailabilityReport;
import org.openstack.atlas.service.domain.pojos.VirtualIpBlocks;
import java.util.List;
public interface ClusterService {
public Cluster get(Integer clusterId) throws EntityNotFoundException;
public Cluster getActiveCluster(Integer accountId) throws EntityNotFoundException, ClusterStatusException, NoAvailableClusterException;
public List<Cluster> getAll();
public List<LoadBalancerCountByAccountIdClusterId> getAccountsInCluster(Integer clusterId);
public List<Host> getHosts(Integer clusterId);
public List<VirtualIp> getVirtualIps(Integer id, Integer offset, Integer limit);
public List<ZeusRateLimitedLoadBalancer> getRateLimitedLoadBalancersInCluster(Integer clusterId) throws EntityNotFoundException;
public List<AccountGroup> getAPIRateLimitedAccounts(Integer clusterId) throws EntityNotFoundException;
public Integer getNumberOfUniqueAccountsForCluster(Integer id);
public Integer getNumberOfActiveLoadBalancersForCluster(Integer id);
public List<VirtualIpAvailabilityReport> getVirtualIpAvailabilityReport(Integer clusterId);
public VirtualIpBlocks addVirtualIpBlocks(VirtualIpBlocks vipBlocks, Integer clusterId) throws BadRequestException, IPStringConversionException, IPBlocksOverLapException, IPRangeTooBigException, IPOctetOutOfRangeException, EntityNotFoundException;
}