private void validate(APICreateVipMsg msg) {
if (msg.getAllocatorStrategy() != null && !IpAllocatorType.hasType(msg.getAllocatorStrategy())) {
throw new ApiMessageInterceptionException(argerr("unsupported ip allocation strategy[%s]", msg.getAllocatorStrategy()));
}
if (msg.getRequiredIp() != null) {
L3NetworkVO l3NetworkVO = dbf.findByUuid(msg.getL3NetworkUuid(), L3NetworkVO.class);
if (l3NetworkVO.getIpVersion() == IPv6Constants.IPv4) {
if (!NetworkUtils.isIpv4Address(msg.getRequiredIp())) {
throw new ApiMessageInterceptionException(argerr("requiredIp[%s] is not in valid IPv4 mediaType", msg.getRequiredIp()));
}
} else {
if (!IPv6NetworkUtils.isIpv6UnicastAddress(msg.getRequiredIp())) {
if (!NetworkUtils.isIpv4Address(msg.getRequiredIp())) {
throw new ApiMessageInterceptionException(argerr("requiredIp[%s] is not in valid IPv6 mediaType", msg.getRequiredIp()));
}
}
}
SimpleQuery<VipVO> q = dbf.createQuery(VipVO.class);
q.add(VipVO_.ip, Op.EQ, msg.getRequiredIp());
q.add(VipVO_.l3NetworkUuid, Op.EQ, msg.getL3NetworkUuid());
if (q.isExists()) {
throw new ApiMessageInterceptionException(operr("there is already a vip[%s] on l3Network[uuid:%s]", msg.getRequiredIp(), msg.getL3NetworkUuid()));
}
}
}
}