package org.openstack.atlas.api.validation.verifiers;
import org.openstack.atlas.api.validation.expectation.ValidationResult;
import org.openstack.atlas.docs.loadbalancers.api.v1.VirtualIp;
import java.util.ArrayList;
import java.util.List;
public class SharedOrNewVipVerifier implements Verifier<List<VirtualIp>> {
@Override
public VerifierResult verify(List<VirtualIp> virtualIps) {
List<ValidationResult> validationResults = new ArrayList<ValidationResult>();
if (virtualIps == null || virtualIps.size() > 2) {
validationResults.add(new ValidationResult(false, "Must have exactly one virtual ip"));
return new VerifierResult(false, validationResults);
}
for (VirtualIp virtualIp : virtualIps) {
if (virtualIp.getType() != null) {
if (virtualIp.getId() != null) {
validationResults.add(new ValidationResult(false, "Must specify either a shared or new virtual ip."));
return new VerifierResult(false, validationResults);
}
} else {
if (virtualIp.getId() == null) {
validationResults.add(new ValidationResult(false, "Must specify either a shared or new virtual ip."));
return new VerifierResult(false, validationResults);
}
}
}
if (virtualIps.size() >= 2) {
for (VirtualIp virtualIp : virtualIps) {
if (virtualIp.getIpVersion() != null || virtualIp.getType() != null) {
validationResults.add(new ValidationResult(false, "Must supply one virtual ip for a non-shared virtual ip request."));
return new VerifierResult(false, validationResults);
}
}
}
return new VerifierResult(true);
}
}