package org.ovirt.engine.core.bll.network.cluster; import org.ovirt.engine.core.bll.ValidationResult; import org.ovirt.engine.core.common.businessentities.Cluster; import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dao.VdsDao; import org.ovirt.engine.core.dao.gluster.GlusterBrickDao; import org.ovirt.engine.core.dao.network.InterfaceDao; import org.ovirt.engine.core.dao.network.NetworkDao; public class UpdateNetworkClusterValidator extends NetworkClusterValidatorBase { private final NetworkCluster oldNetworkCluster; public UpdateNetworkClusterValidator(InterfaceDao interfaceDao, NetworkDao networkDao, VdsDao vdsDao, NetworkCluster networkCluster, NetworkCluster oldNetworkCluster) { super(interfaceDao, networkDao, vdsDao, networkCluster); this.oldNetworkCluster = oldNetworkCluster; } @Override protected boolean isManagementNetworkChanged() { return !oldNetworkCluster.isManagement() && networkCluster.isManagement(); } public ValidationResult managementNetworkUnset() { return ValidationResult.failWith(EngineMessage.ACTION_TYPE_FAILED_MANAGEMENT_NETWORK_UNSET). when(oldNetworkCluster.isManagement() && !networkCluster.isManagement()); } public ValidationResult glusterNetworkInUseAndUnset(Cluster cluster) { return ValidationResult.failWith(EngineMessage.ACTION_TYPE_FAILED_GLUSTER_NETWORK_INUSE). when(cluster.supportsGlusterService() && oldNetworkCluster.isGluster() && !networkCluster.isGluster() && isGlusterNetworkInUse()); } private boolean isGlusterNetworkInUse() { return !getGlusterBrickDao().getAllByClusterAndNetworkId(oldNetworkCluster.getClusterId(), oldNetworkCluster.getNetworkId()).isEmpty(); } GlusterBrickDao getGlusterBrickDao() { return DbFacade.getInstance().getGlusterBrickDao(); } }