package com.sequenceiq.cloudbreak.service.cluster.filter;
import static com.sequenceiq.cloudbreak.common.type.CloudConstants.BYOS;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import org.springframework.stereotype.Component;
import com.sequenceiq.cloudbreak.domain.Cluster;
import com.sequenceiq.cloudbreak.domain.HostMetadata;
import com.sequenceiq.cloudbreak.domain.InstanceMetaData;
import com.sequenceiq.cloudbreak.repository.ClusterRepository;
import com.sequenceiq.cloudbreak.repository.InstanceMetaDataRepository;
@Component
public class ConsulServerFilter implements HostFilter {
@Inject
private ClusterRepository clusterRepository;
@Inject
private InstanceMetaDataRepository instanceMetadataRepository;
@Override
public List<HostMetadata> filter(long clusterId, Map<String, String> config, List<HostMetadata> hosts) throws HostFilterException {
List<HostMetadata> copy = new ArrayList<>(hosts);
Cluster cluster = clusterRepository.findById(clusterId);
if (!BYOS.equals(cluster.getStack().cloudPlatform())) {
for (HostMetadata host : hosts) {
InstanceMetaData instanceMetaData = instanceMetadataRepository.findHostInStack(cluster.getStack().getId(), host.getHostName());
if (instanceMetaData != null && instanceMetaData.getConsulServer()) {
copy.remove(host);
}
}
}
return copy;
}
}