package org.openstack.atlas.service.domain.services; import org.openstack.atlas.service.domain.entities.LoadBalancer; import org.openstack.atlas.service.domain.entities.Node; import org.openstack.atlas.service.domain.exceptions.*; import org.openstack.atlas.service.domain.pojos.NodeMap; import java.util.Collection; import java.util.List; import java.util.Set; public interface NodeService { public Set<Node> getAllNodesByAccountIdLoadBalancerId(Integer accountId,Integer loadBalancerId) throws EntityNotFoundException; public Set<Node> getNodesByAccountIdLoadBalancerId(Integer accountId, Integer loadBalancerId, Integer... p) throws EntityNotFoundException, DeletedStatusException; public Node getNodeByAccountIdLoadBalancerIdNodeId(Integer accountId, Integer loadBalancerId, Integer nodeId) throws EntityNotFoundException, DeletedStatusException; public Set<Node> createNodes(LoadBalancer loadBalancer) throws EntityNotFoundException, ImmutableEntityException, UnprocessableEntityException, BadRequestException, LimitReachedException; public LoadBalancer updateNode(LoadBalancer loadBalancer) throws EntityNotFoundException, ImmutableEntityException, UnprocessableEntityException, BadRequestException; public void updateNodeStatus(Node node); public LoadBalancer deleteNode(LoadBalancer loadBalancer) throws EntityNotFoundException, ImmutableEntityException, UnprocessableEntityException; public Node getNodeByLoadBalancerIdIpAddressAndPort(Integer loadBalancerId, String ipAddress, Integer ipPort) throws EntityNotFoundException; public boolean detectDuplicateNodes(LoadBalancer dbLoadBalancer, LoadBalancer queueLb); public boolean areAddressesValidForUse(Set<Node> nodes, LoadBalancer dbLb); public boolean nodeToDeleteIsNotLastActive(LoadBalancer lb, Node deleteNode); public NodeMap getNodeMap(Integer accountId,Integer loadbalancerId); public List<Node> getNodesByIds(Collection<Integer> ids); public LoadBalancer delNodes(LoadBalancer lb, Collection<Node> nodes) throws EntityNotFoundException; public void delNode(LoadBalancer lb, int nid) throws EntityNotFoundException; public List<String> prepareForNodesDeletion(Integer accountId,Integer loadBalancerId,List<Integer> ids) throws EntityNotFoundException; }