package org.ovirt.engine.core.bll.network.host; import java.util.Objects; import org.ovirt.engine.core.bll.ValidationResult; import org.ovirt.engine.core.common.action.CreateOrUpdateBond; import org.ovirt.engine.core.common.businessentities.BusinessEntity; import org.ovirt.engine.core.common.businessentities.BusinessEntityMap; import org.ovirt.engine.core.common.businessentities.Nameable; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.ReplacementUtils; public class HostSetupNetworksValidatorHelper { public <T extends BusinessEntity<Guid> & Nameable> ValidationResult validateCoherentIdentification(String violatingEntityId, Guid referringId, String referringName, EngineMessage message, BusinessEntityMap<T> map) { boolean bothIdentificationSet = referringId != null && referringName != null; String[] replacements = createIncoherentIdentificationErrorReplacements(violatingEntityId, referringId, referringName); return ValidationResult .failWith(message, replacements) .when(bothIdentificationSet && isNameAndIdIncoherent(referringId, referringName, map)); } private String[] createIncoherentIdentificationErrorReplacements(String violatingEntityId, Guid referringId, String referringName) { return new String[] { ReplacementUtils.createSetVariableString("referrerId", violatingEntityId), ReplacementUtils.createSetVariableString("referringId", referringId), ReplacementUtils.createSetVariableString("referringName", referringName) }; } private <T extends BusinessEntity<Guid> & Nameable> boolean isNameAndIdIncoherent(Guid id, String name, BusinessEntityMap<T> map) { T entityById = map.get(id); T entityByName = map.get(name); return !Objects.equals(entityById, entityByName); } public boolean isNicActuallyExistsOrReferencesNewBond(BusinessEntityMap<VdsNetworkInterface> existingInterfacesMap, BusinessEntityMap<CreateOrUpdateBond> createOrUpdateBondBusinessEntityMap, String nicName, Guid nicId) { boolean nicExists = existingInterfacesMap.get(nicId, nicName) != null; if (nicExists) { return true; } boolean nicIsNewBond = nicName != null && createOrUpdateBondBusinessEntityMap.get(nicName) != null; if (nicIsNewBond) { return true; } return false; } }