package org.ovirt.engine.core.bll.exportimport;
import java.util.List;
import java.util.Objects;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.ValidationResult;
import org.ovirt.engine.core.common.businessentities.network.NetworkCluster;
import org.ovirt.engine.core.common.businessentities.network.VnicProfile;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.network.NetworkClusterDao;
import org.ovirt.engine.core.dao.network.VnicProfileDao;
public class VnicProfileValidator {
private final VnicProfileDao vnicProfileDao;
private final NetworkClusterDao networkClusterDao;
@Inject
VnicProfileValidator(VnicProfileDao vnicProfileDao, NetworkClusterDao networkClusterDao) {
this.vnicProfileDao = Objects.requireNonNull(vnicProfileDao);
this.networkClusterDao = Objects.requireNonNull(networkClusterDao);
}
public ValidationResult validateTargetVnicProfileId(Guid vnicProfileId, Guid clusterId) {
final VnicProfile vnicProfile = vnicProfileDao.get(vnicProfileId);
if (vnicProfile == null) {
return new ValidationResult(EngineMessage.ACTION_TYPE_FAILED_VNIC_PROFILE_NOT_EXISTS);
}
final List<NetworkCluster> clusterNetworks = networkClusterDao.getAllForCluster(clusterId);
final boolean networkIsFoundInCluster = clusterNetworks
.stream()
.map(NetworkCluster::getNetworkId)
.anyMatch(vnicProfile.getNetworkId()::equals);
return ValidationResult
.failWith(EngineMessage.NETWORK_NOT_EXISTS_IN_CURRENT_CLUSTER)
.unless(networkIsFoundInCluster);
}
}