Martin Betak has uploaded a new change for review. Change subject: scheduler: Prevent passthrough of network-used devices ......................................................................
scheduler: Prevent passthrough of network-used devices Change-Id: I870ac5bdbcbdffc5eacc2e2051219b60ea888b97 Signed-off-by: Martin Betak <mbe...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/RefreshHostDevicesCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQuery.java R backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelper.java R backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelperImpl.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImpl.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQueryTest.java R backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelperImplTest.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommandTest.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImplTest.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java 16 files changed, 132 insertions(+), 87 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/60/42160/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java index a89fd26..47e65d4 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java @@ -9,7 +9,7 @@ import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.hostdev.HostDeviceManager; import org.ovirt.engine.core.bll.job.ExecutionHandler; -import org.ovirt.engine.core.bll.network.host.HostNicVfsConfigHelper; +import org.ovirt.engine.core.bll.network.host.NetworkDeviceHelper; import org.ovirt.engine.core.bll.snapshots.SnapshotsManager; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.common.action.ProcessDownVmParameters; @@ -49,7 +49,7 @@ private HostDeviceManager hostDeviceManager; @Inject - private HostNicVfsConfigHelper hostNicVfsConfigHelper; + private NetworkDeviceHelper networkDeviceHelper; protected ProcessDownVmCommand(Guid commandId) { super(commandId); @@ -109,7 +109,7 @@ } private Guid cleanupVfs() { - Guid hostId = hostNicVfsConfigHelper.removeVmIdFromVfs(getVmId()); + Guid hostId = networkDeviceHelper.removeVmIdFromVfs(getVmId()); return hostId; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java index dc863d4..983312e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java @@ -19,7 +19,7 @@ import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.bll.job.JobRepositoryFactory; import org.ovirt.engine.core.bll.network.cluster.NetworkHelper; -import org.ovirt.engine.core.bll.network.host.HostNicVfsConfigHelper; +import org.ovirt.engine.core.bll.network.host.NetworkDeviceHelper; import org.ovirt.engine.core.bll.network.host.VfScheduler; import org.ovirt.engine.core.bll.provider.ProviderProxyFactory; import org.ovirt.engine.core.bll.provider.network.NetworkProviderProxy; @@ -112,7 +112,7 @@ private boolean needsHostDevices = false; @Inject - private HostNicVfsConfigHelper hostNicVfsConfigHelper; + private NetworkDeviceHelper networkDeviceHelper; @Inject private VfScheduler vfScheduler; @@ -313,7 +313,7 @@ private void cleanupPassthroughVnics() { Map<Guid, String> vnicToVfMap = getVnicToVfMap(); if (vnicToVfMap != null) { - hostNicVfsConfigHelper.setVmIdOnVfs(getVdsId(), null, new HashSet<>(vnicToVfMap.values())); + networkDeviceHelper.setVmIdOnVfs(getVdsId(), null, new HashSet<>(vnicToVfMap.values())); } vfScheduler.cleanVmData(getVmId()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/RefreshHostDevicesCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/RefreshHostDevicesCommand.java index 8995da3..258dcdd 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/RefreshHostDevicesCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/RefreshHostDevicesCommand.java @@ -10,7 +10,7 @@ import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; import org.ovirt.engine.core.bll.RefreshHostInfoCommandBase; import org.ovirt.engine.core.bll.context.CommandContext; -import org.ovirt.engine.core.bll.network.host.HostNicVfsConfigHelper; +import org.ovirt.engine.core.bll.network.host.NetworkDeviceHelper; import org.ovirt.engine.core.common.FeatureSupported; import org.ovirt.engine.core.common.action.VdsActionParameters; import org.ovirt.engine.core.common.businessentities.Entities; @@ -50,7 +50,7 @@ private HostNicVfsConfigDao hostNicVfsConfigDao; @Inject - private HostNicVfsConfigHelper hostNicVfsConfigHelper; + private NetworkDeviceHelper networkDeviceHelper; private Map<String, HostDevice> oldMap; @@ -147,7 +147,7 @@ final List<HostNicVfsConfig> removedHostNicVfsConfigs = new ArrayList<>(); for (HostDevice device : newDevices) { - if (hostNicVfsConfigHelper.isSriovDevice(device)) { + if (networkDeviceHelper.isSriovDevice(device)) { addToListIfNotNull(getHostNicVfsConfigToAdd(device), newHostNicVfsConfigs); } } @@ -155,19 +155,19 @@ for (HostDevice device : changedDevices) { HostDevice oldDevice = oldMap.get(device.getDeviceName()); - if (!hostNicVfsConfigHelper.isSriovDevice(oldDevice) - && hostNicVfsConfigHelper.isSriovDevice(device)) { + if (!networkDeviceHelper.isSriovDevice(oldDevice) + && networkDeviceHelper.isSriovDevice(device)) { addToListIfNotNull(getHostNicVfsConfigToAdd(device), newHostNicVfsConfigs); } - if (hostNicVfsConfigHelper.isSriovDevice(oldDevice) - && !hostNicVfsConfigHelper.isSriovDevice(device)) { + if (networkDeviceHelper.isSriovDevice(oldDevice) + && !networkDeviceHelper.isSriovDevice(device)) { addToListIfNotNull(getHostNicVfsConfigToRemove(device), removedHostNicVfsConfigs); } } for (HostDevice device : removedDevices) { - if (hostNicVfsConfigHelper.isSriovDevice(device)) { + if (networkDeviceHelper.isSriovDevice(device)) { addToListIfNotNull(getHostNicVfsConfigToRemove(device), removedHostNicVfsConfigs); } } @@ -188,7 +188,7 @@ } private HostNicVfsConfig getHostNicVfsConfigToAdd(HostDevice device) { - VdsNetworkInterface nic = hostNicVfsConfigHelper.getNicByPciDevice(device, fetchedMap.values()); + VdsNetworkInterface nic = networkDeviceHelper.getNicByPciDevice(device, fetchedMap.values()); if (nic == null) { return null; @@ -203,7 +203,7 @@ } private HostNicVfsConfig getHostNicVfsConfigToRemove(HostDevice device) { - VdsNetworkInterface nic = hostNicVfsConfigHelper.getNicByPciDevice(device, oldMap.values()); + VdsNetworkInterface nic = networkDeviceHelper.getNicByPciDevice(device, oldMap.values()); if (nic == null) { return null; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQuery.java index f0909a9..c56da20 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQuery.java @@ -8,7 +8,7 @@ public class GetAllVfsConfigByHostIdQuery<P extends IdQueryParameters> extends QueriesCommandBase<P> { @Inject - private HostNicVfsConfigHelper hostNicVfsConfigHelper; + private NetworkDeviceHelper networkDeviceHelper; public GetAllVfsConfigByHostIdQuery(P parameters) { super(parameters); @@ -16,10 +16,10 @@ @Override protected void executeQueryCommand() { - getQueryReturnValue().setReturnValue(getHostNicVfsConfigHelper().getHostNicVfsConfigsWithNumVfsDataByHostId(getParameters().getId())); + getQueryReturnValue().setReturnValue(getNetworkDeviceHelper().getHostNicVfsConfigsWithNumVfsDataByHostId(getParameters().getId())); } - public HostNicVfsConfigHelper getHostNicVfsConfigHelper() { - return hostNicVfsConfigHelper; + public NetworkDeviceHelper getNetworkDeviceHelper() { + return networkDeviceHelper; } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelper.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelper.java similarity index 93% rename from backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelper.java rename to backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelper.java index cfcb9e1..570f835 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelper.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelper.java @@ -9,7 +9,7 @@ import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.compat.Guid; -public interface HostNicVfsConfigHelper { +public interface NetworkDeviceHelper { /** * Retrieves the <code>VdsNetworkInterface</code> that the specified <code>pciDevice</code> represents. @@ -77,6 +77,14 @@ public boolean areAllVfsFree(VdsNetworkInterface nic); /** + * Retrieves whether the device is occupied by other VM or network + * + * @param hostDevice physical network host device + * @return whether this device is free to be used by a VM + */ + public boolean isNetworkDeviceFree(HostDevice hostDevice); + + /** * Retrieves the first free VF on the nic * * @param nic diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelperImpl.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelperImpl.java similarity index 95% rename from backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelperImpl.java rename to backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelperImpl.java index d80603c..f2096ad 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelperImpl.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelperImpl.java @@ -22,16 +22,16 @@ import org.ovirt.engine.core.utils.linq.Predicate; @Singleton -class HostNicVfsConfigHelperImpl implements HostNicVfsConfigHelper { +class NetworkDeviceHelperImpl implements NetworkDeviceHelper { private final InterfaceDao interfaceDao; private final HostDeviceDao hostDeviceDao; private final HostNicVfsConfigDao hostNicVfsConfigDao; @Inject - HostNicVfsConfigHelperImpl(InterfaceDao interfaceDao, - HostDeviceDao hostDeviceDao, - HostNicVfsConfigDao hostNicVfsConfigDao) { + NetworkDeviceHelperImpl(InterfaceDao interfaceDao, + HostDeviceDao hostDeviceDao, + HostNicVfsConfigDao hostNicVfsConfigDao) { this.interfaceDao = interfaceDao; this.hostDeviceDao = hostDeviceDao; this.hostNicVfsConfigDao = hostNicVfsConfigDao; @@ -169,7 +169,8 @@ return nonFreeVf == null; } - private boolean isVfFree(HostDevice vf) { + @Override + public boolean isNetworkDeviceFree(HostDevice vf) { // Check if the VF is attached directly to a VM if (vf.getVmId() != null) { return false; @@ -205,7 +206,7 @@ @Override public boolean eval(HostDevice vf) { - return isVfFree(vf) == shouldBeFree && (excludeVfs == null || !excludeVfs.contains(vf.getDeviceName())); + return isNetworkDeviceFree(vf) == shouldBeFree && (excludeVfs == null || !excludeVfs.contains(vf.getDeviceName())); } }); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommand.java index f94870c..0a5e5b1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommand.java @@ -25,7 +25,7 @@ public class UpdateHostNicVfsConfigCommand extends VfsConfigCommandBase<UpdateHostNicVfsConfigParameters> { @Inject - private HostNicVfsConfigHelper hostNicVfsConfigHelper; + private NetworkDeviceHelper networkDeviceHelper; private HostNicVfsConfig hostNicVfsConfig; @@ -59,7 +59,7 @@ boolean shouldRefreshHost = false; if (wasNumOfVfsChanged()) { shouldRefreshHost = true; - String deviceName = hostNicVfsConfigHelper.getPciDeviceNameByNic(getNic()); + String deviceName = networkDeviceHelper.getPciDeviceNameByNic(getNic()); VDSReturnValue returnValue = null; try { returnValue = runVdsCommand(VDSCommandType.HostDevChangeNumVfs, @@ -106,7 +106,7 @@ protected boolean canDoAction() { boolean isValid = super.canDoAction(); if (isValid && wasNumOfVfsChanged()) { - isValid = validate(getVfsConfigValidator().allVfsAreFree(hostNicVfsConfigHelper)) + isValid = validate(getVfsConfigValidator().allVfsAreFree(networkDeviceHelper)) && validate(getVfsConfigValidator().numOfVfsInValidRange(getNumOfVfs())); } @@ -141,7 +141,7 @@ public HostNicVfsConfig getVfsConfig() { HostNicVfsConfig tmpVfsConfig = super.getVfsConfig(); if (hostNicVfsConfig == null) { - hostNicVfsConfigHelper.updateHostNicVfsConfigWithNumVfsData(tmpVfsConfig); + networkDeviceHelper.updateHostNicVfsConfigWithNumVfsData(tmpVfsConfig); } hostNicVfsConfig = tmpVfsConfig; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImpl.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImpl.java index 4ba29ca..131ef55 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImpl.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImpl.java @@ -28,7 +28,7 @@ private HostDeviceDao hostDeviceDao; - private HostNicVfsConfigHelper vfsConfigHelper; + private NetworkDeviceHelper vfsConfigHelper; private Map<Guid, Map<Guid, Map<Guid, String>>> vmToHostToVnicToVfMap = new ConcurrentHashMap<>(); @@ -36,7 +36,7 @@ public VfSchedulerImpl(NetworkDao networkDao, InterfaceDao interfaceDao, HostDeviceDao hostDeviceDao, - HostNicVfsConfigHelper vfsConfigHelper) { + NetworkDeviceHelper vfsConfigHelper) { this.networkDao = networkDao; this.interfaceDao = interfaceDao; this.hostDeviceDao = hostDeviceDao; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java index 6dd731f..4c1d0f1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java @@ -19,7 +19,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; -import org.ovirt.engine.core.bll.network.host.HostNicVfsConfigHelper; +import org.ovirt.engine.core.bll.network.host.NetworkDeviceHelper; import org.ovirt.engine.core.bll.network.host.VfScheduler; import org.ovirt.engine.core.bll.scheduling.external.ExternalSchedulerDiscoveryThread; import org.ovirt.engine.core.bll.scheduling.external.ExternalSchedulerFactory; @@ -343,8 +343,8 @@ } private void markVfsAsUsedByVm(Guid hostId, Guid vmId, Map<Guid, String> passthroughVnicToVfMap) { - HostNicVfsConfigHelper hostNicVfsConfigHelper = Injector.get(HostNicVfsConfigHelper.class); - hostNicVfsConfigHelper.setVmIdOnVfs(hostId, vmId, new HashSet<>(passthroughVnicToVfMap.values())); + NetworkDeviceHelper networkDeviceHelper = Injector.get(NetworkDeviceHelper.class); + networkDeviceHelper.setVmIdOnVfs(hostId, vmId, new HashSet<>(passthroughVnicToVfMap.values())); } /** diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java index 6b1a772..d273a48 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java @@ -69,6 +69,10 @@ result = validatePassthroughVnics(vm.getId(), host, vmNICs); } + if (result.isValid()) { + result = validatePassthroughNetworkConflicts(vm, host); + } + if (!result.isValid()) { toRemoveHostList.add(host); messages.addMessages(host.getId(), result.getVariableReplacements()); @@ -79,6 +83,10 @@ return hosts; } + private ValidationResult validatePassthroughNetworkConflicts(VM vm, VDS host) { + return null; + } + public Map<Guid, VdsNetworkInterface> getDisplayNics(Network displayNetwork) { Map<Guid, VdsNetworkInterface> displayNics = new HashMap<>(); if (displayNetwork != null) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java index 26f1bd9..0bf6d5f 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VfsConfigValidator.java @@ -1,7 +1,7 @@ package org.ovirt.engine.core.bll.validator; import org.ovirt.engine.core.bll.ValidationResult; -import org.ovirt.engine.core.bll.network.host.HostNicVfsConfigHelper; +import org.ovirt.engine.core.bll.network.host.NetworkDeviceHelper; import org.ovirt.engine.core.common.FeatureSupported; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig; @@ -66,10 +66,10 @@ /** * @return An error iff there are non-free VFs of the nic */ - public ValidationResult allVfsAreFree(HostNicVfsConfigHelper hostNicVfsConfigHelper) { + public ValidationResult allVfsAreFree(NetworkDeviceHelper networkDeviceHelper) { return ValidationResult.failWith(VdcBllMessages.ACTION_TYPE_FAILED_NUM_OF_VFS_CANNOT_BE_CHANGED, getNicNameReplacement()) - .unless(hostNicVfsConfigHelper.areAllVfsFree(getNic())); + .unless(networkDeviceHelper.areAllVfsFree(getNic())); } /** diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQueryTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQueryTest.java index 88f6fd4..3b4dbb5 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQueryTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/GetAllVfsConfigByHostIdQueryTest.java @@ -20,12 +20,12 @@ public class GetAllVfsConfigByHostIdQueryTest extends AbstractQueryTest<IdQueryParameters, GetAllVfsConfigByHostIdQuery<IdQueryParameters>> { @Mock - private HostNicVfsConfigHelper hostNicVfsConfigHelper; + private NetworkDeviceHelper networkDeviceHelper; @Test public void testExecuteQuery() { - doReturn(hostNicVfsConfigHelper).when(getQuery()).getHostNicVfsConfigHelper(); + doReturn(networkDeviceHelper).when(getQuery()).getNetworkDeviceHelper(); Guid hostId = Guid.newGuid(); IdQueryParameters paramsMock = getQueryParameters(); @@ -33,7 +33,7 @@ List<HostNicVfsConfig> vfsConfigs = new ArrayList<>(); vfsConfigs.add(new HostNicVfsConfig()); - when(hostNicVfsConfigHelper.getHostNicVfsConfigsWithNumVfsDataByHostId(hostId)).thenReturn(vfsConfigs); + when(networkDeviceHelper.getHostNicVfsConfigsWithNumVfsDataByHostId(hostId)).thenReturn(vfsConfigs); getQuery().executeQueryCommand(); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelperImplTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelperImplTest.java similarity index 82% rename from backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelperImplTest.java rename to backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelperImplTest.java index 686f1c5..c2f323f 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelperImplTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/NetworkDeviceHelperImplTest.java @@ -18,6 +18,7 @@ import java.util.List; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; @@ -35,7 +36,7 @@ import org.ovirt.engine.core.utils.RandomUtils; @RunWith(MockitoJUnitRunner.class) -public class HostNicVfsConfigHelperImplTest { +public class NetworkDeviceHelperImplTest { private static final String NIC_NAME = RandomUtils.instance().nextString(5); private static final Guid NIC_ID = Guid.newGuid(); @@ -71,11 +72,11 @@ @Captor private ArgumentCaptor<Guid> vmIdCaptor; - private HostNicVfsConfigHelperImpl hostNicVfsConfigHelper; + private NetworkDeviceHelperImpl networkDeviceHelper; @Before public void setUp() { - hostNicVfsConfigHelper = new HostNicVfsConfigHelperImpl(interfaceDao, hostDeviceDao, hostNicVfsConfigDao); + networkDeviceHelper = new NetworkDeviceHelperImpl(interfaceDao, hostDeviceDao, hostNicVfsConfigDao); when(netDevice.getHostId()).thenReturn(HOST_ID); when(netDevice.getDeviceName()).thenReturn(NET_DEVICE_NAME); @@ -103,7 +104,7 @@ @Test public void getNicByPciDeviceNotParentOfNetDevice() { - assertNull(hostNicVfsConfigHelper.getNicByPciDevice(netDevice)); + assertNull(networkDeviceHelper.getNicByPciDevice(netDevice)); } @Test @@ -112,13 +113,13 @@ newNic.setName(netDevice.getNetworkInterfaceName() + "not"); mockNics(Collections.singletonList(newNic), false); - assertNull(hostNicVfsConfigHelper.getNicByPciDevice(pciDevice)); + assertNull(networkDeviceHelper.getNicByPciDevice(pciDevice)); } @Test public void getNicByNetDeviceValid() { mockNics(Collections.<VdsNetworkInterface> emptyList(), true); - assertEquals(nic, hostNicVfsConfigHelper.getNicByPciDevice(pciDevice)); + assertEquals(nic, networkDeviceHelper.getNicByPciDevice(pciDevice)); } @Test @@ -127,7 +128,7 @@ Collection<HostDevice> devices = new ArrayList<>(); devices.add(pciDevice); - assertNull(hostNicVfsConfigHelper.getNicByPciDevice(pciDevice, devices)); + assertNull(networkDeviceHelper.getNicByPciDevice(pciDevice, devices)); } @Test @@ -143,17 +144,17 @@ private void commonIsSriovDevice(boolean isSriov) { when(pciDevice.getTotalVirtualFunctions()).thenReturn(isSriov ? TOTAL_NUM_OF_VFS : null); - assertEquals(isSriov, hostNicVfsConfigHelper.isSriovDevice(pciDevice)); + assertEquals(isSriov, networkDeviceHelper.isSriovDevice(pciDevice)); } @Test public void isNetworkDevicePossitive() { - assertFalse(hostNicVfsConfigHelper.isNetworkDevice(pciDevice)); + assertFalse(networkDeviceHelper.isNetworkDevice(pciDevice)); } @Test public void isNetworkDeviceNegtive() { - assertTrue(hostNicVfsConfigHelper.isNetworkDevice(netDevice)); + assertTrue(networkDeviceHelper.isNetworkDevice(netDevice)); } @Test @@ -171,7 +172,7 @@ List<HostDevice> vfs = mockVfsOnNetDevice(numOfVfs); mockHostDevices(vfs); - hostNicVfsConfigHelper.updateHostNicVfsConfigWithNumVfsData(hostNicVfsConfig); + networkDeviceHelper.updateHostNicVfsConfigWithNumVfsData(hostNicVfsConfig); verify(hostNicVfsConfig).setMaxNumOfVfs(TOTAL_NUM_OF_VFS); verify(hostNicVfsConfig).setNumOfVfs(numOfVfs); @@ -186,7 +187,7 @@ mockHostDevices(vfs); List<HostNicVfsConfig> vfsConfigList = - hostNicVfsConfigHelper.getHostNicVfsConfigsWithNumVfsDataByHostId(HOST_ID); + networkDeviceHelper.getHostNicVfsConfigsWithNumVfsDataByHostId(HOST_ID); assertEquals(1, vfsConfigList.size()); assertEquals(hostNicVfsConfig, vfsConfigList.get(0)); @@ -227,49 +228,49 @@ @Test(expected = UnsupportedOperationException.class) public void areAllVfsFreeNotSriovNic() { commonIsSriovDevice(false); - hostNicVfsConfigHelper.areAllVfsFree(nic); + networkDeviceHelper.areAllVfsFree(nic); } @Test public void areAllVfsFreeTrueNoVfs() { freeVfCommon(0, 0, 0, 0, 0); - assertTrue(hostNicVfsConfigHelper.areAllVfsFree(nic)); + assertTrue(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseAttachedToVm() { freeVfCommon(7, 3, 0, 0, 0); - assertFalse(hostNicVfsConfigHelper.areAllVfsFree(nic)); + assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseNoNic() { freeVfCommon(6, 0, 1, 0, 0); - assertFalse(hostNicVfsConfigHelper.areAllVfsFree(nic)); + assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseHasNetwork() { freeVfCommon(2, 0, 0, 3, 0); - assertFalse(hostNicVfsConfigHelper.areAllVfsFree(nic)); + assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseHasVlanDevice() { freeVfCommon(4, 0, 0, 0, 3); - assertFalse(hostNicVfsConfigHelper.areAllVfsFree(nic)); + assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeTrue() { freeVfCommon(5, 0, 0, 0, 0); - assertTrue(hostNicVfsConfigHelper.areAllVfsFree(nic)); + assertTrue(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseMix() { freeVfCommon(1, 2, 3, 4, 5); - assertFalse(hostNicVfsConfigHelper.areAllVfsFree(nic)); + assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } private List<HostDevice> freeVfCommon(int numOfFreeVfs, @@ -277,7 +278,7 @@ int numOfVfsHasNoNic, int numOfVfsHasNetworkAttached, int numOfVfsHasVlanDeviceAttached) { - hostNicVfsConfigHelper = spy(new HostNicVfsConfigHelperImpl(interfaceDao, hostDeviceDao, hostNicVfsConfigDao)); + networkDeviceHelper = spy(new NetworkDeviceHelperImpl(interfaceDao, hostDeviceDao, hostNicVfsConfigDao)); List<HostDevice> devices = new ArrayList<>(); List<HostDevice> freeVfs = new ArrayList<>(); @@ -306,10 +307,10 @@ vfNic.setNetworkName("netName"); } else if (numOfVfsHasVlanDeviceAttached != 0) { --numOfVfsHasVlanDeviceAttached; - doReturn(true).when(hostNicVfsConfigHelper) + doReturn(true).when(networkDeviceHelper) .isVlanDeviceAttached(vfNic); } else { - doReturn(false).when(hostNicVfsConfigHelper) + doReturn(false).when(networkDeviceHelper) .isVlanDeviceAttached(vfNic); freeVfs.add(vfPciDevice); } @@ -325,33 +326,33 @@ @Test(expected = UnsupportedOperationException.class) public void getFreeVfNotSriovNic() { commonIsSriovDevice(false); - hostNicVfsConfigHelper.getFreeVf(nic, null); + networkDeviceHelper.getFreeVf(nic, null); } @Test public void getFreeVfNoVfs() { freeVfCommon(0, 0, 0, 0, 0); - assertNull(hostNicVfsConfigHelper.getFreeVf(nic, null)); + assertNull(networkDeviceHelper.getFreeVf(nic, null)); } @Test public void getFreeVfNoFreeVf() { freeVfCommon(0, 1, 2, 3, 4); - assertNull(hostNicVfsConfigHelper.getFreeVf(nic, null)); + assertNull(networkDeviceHelper.getFreeVf(nic, null)); } @Test public void getFreeVfOneFreeVf() { List<HostDevice> freeVfs = freeVfCommon(1, 4, 3, 2, 1); assertEquals(1, freeVfs.size()); - assertTrue(freeVfs.contains(hostNicVfsConfigHelper.getFreeVf(nic, null))); + assertTrue(freeVfs.contains(networkDeviceHelper.getFreeVf(nic, null))); } @Test public void getFreeVfMoreThanOneFreeVf() { List<HostDevice> freeVfs = freeVfCommon(5, 2, 2, 2, 2); assertEquals(5, freeVfs.size()); - assertTrue(freeVfs.contains(hostNicVfsConfigHelper.getFreeVf(nic, null))); + assertTrue(freeVfs.contains(networkDeviceHelper.getFreeVf(nic, null))); } @Test @@ -362,7 +363,34 @@ excludedVfs.add(freeVfs.get(0).getDeviceName()); excludedVfs.add(freeVfs.get(1).getDeviceName()); freeVfs.removeAll(excludedVfs); - assertTrue(freeVfs.contains(hostNicVfsConfigHelper.getFreeVf(nic, excludedVfs))); + assertTrue(freeVfs.contains(networkDeviceHelper.getFreeVf(nic, excludedVfs))); + } + + @Test + @Ignore + public void testHostDeviceNetworkFree() { + List<HostDevice> freeVfs = freeVfCommon(1, 0, 0, 0, 0); + assertEquals(1, freeVfs.size()); + + assertTrue(networkDeviceHelper.isNetworkDeviceFree(freeVfs.get(0))); + } + + @Test + @Ignore + public void testHostDeviceOccupiedByNetwork() { + List<HostDevice> freeVfs = freeVfCommon(0, 0, 0, 1, 0); + assertEquals(1, freeVfs.size()); + + assertFalse(networkDeviceHelper.isNetworkDeviceFree(freeVfs.get(0))); + } + + @Test + @Ignore + public void testHostDeviceOccupiedByVlan() { + List<HostDevice> freeVfs = freeVfCommon(0, 0, 0, 0, 1); + assertEquals(1, freeVfs.size()); + + assertFalse(networkDeviceHelper.isNetworkDeviceFree(freeVfs.get(0))); } private VdsNetworkInterface mockNicForNetDevice(HostDevice netDeviceParam) { @@ -397,7 +425,7 @@ @Test public void getPciDeviceNameByNic() { - assertEquals(PCI_DEVICE_NAME, hostNicVfsConfigHelper.getPciDeviceNameByNic(nic)); + assertEquals(PCI_DEVICE_NAME, networkDeviceHelper.getPciDeviceNameByNic(nic)); } @Test @@ -408,7 +436,7 @@ HostDevice vf = vfs.get(0); Guid vmId = Guid.newGuid(); vf.setVmId(vmId); - hostNicVfsConfigHelper.setVmIdOnVfs(HOST_ID, vmId, Collections.singleton(vf.getDeviceName())); + networkDeviceHelper.setVmIdOnVfs(HOST_ID, vmId, Collections.singleton(vf.getDeviceName())); verify(hostDeviceDao).setVmIdOnHostDevice(hostDeviceIdCaptor.capture(), vmIdCaptor.capture()); @@ -459,7 +487,7 @@ assertEquals(vmId, vf.getVmId()); } - hostNicVfsConfigHelper.removeVmIdFromVfs(vmId); + networkDeviceHelper.removeVmIdFromVfs(vmId); for (HostDevice vf : vfs) { vf.setVmId(null); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommandTest.java index 57332b5..cd84097 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/UpdateHostNicVfsConfigCommandTest.java @@ -134,7 +134,7 @@ } private void allVfsAreFree(boolean isValid) { - when(validator.allVfsAreFree(any(HostNicVfsConfigHelper.class))).thenReturn(isValid ? ValidationResult.VALID + when(validator.allVfsAreFree(any(NetworkDeviceHelper.class))).thenReturn(isValid ? ValidationResult.VALID : new ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_NUM_OF_VFS_CANNOT_BE_CHANGED)); } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImplTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImplTest.java index 4d0839a..e634053 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImplTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/VfSchedulerImplTest.java @@ -37,7 +37,7 @@ public class VfSchedulerImplTest { @Mock - private HostNicVfsConfigHelper hostNicVfsConfigHelper; + private NetworkDeviceHelper networkDeviceHelper; @Mock private InterfaceDao interfaceDao; @@ -60,13 +60,13 @@ @Before public void setUp() { - vfScheduler = new VfSchedulerImpl(networkDao, interfaceDao, hostDeviceDao, hostNicVfsConfigHelper); + vfScheduler = new VfSchedulerImpl(networkDao, interfaceDao, hostDeviceDao, networkDeviceHelper); expectedVnicToVfMap = new HashMap<>(); } @Test public void hostNotHaveSriovNics() { - when(hostNicVfsConfigHelper.getHostNicVfsConfigsWithNumVfsDataByHostId(hostId)).thenReturn(new ArrayList<HostNicVfsConfig>()); + when(networkDeviceHelper.getHostNicVfsConfigsWithNumVfsDataByHostId(hostId)).thenReturn(new ArrayList<HostNicVfsConfig>()); VmNetworkInterface vnic = mockVnic(true); assertHostNotValid(Collections.singletonList(vnic), Collections.singletonList(vnic.getName())); } @@ -149,8 +149,8 @@ HostNicVfsConfig hostNicVfsConfig2 = new HostNicVfsConfig(); updateVfsConfig(hostNicVfsConfig2, vnic2, 1, false, allNicsValid, false, allNicsValid); - when(hostNicVfsConfigHelper.getFreeVf(eq(getNic(hostNicVfsConfig1)), isNull(List.class))).thenReturn(vf); - when(hostNicVfsConfigHelper.getFreeVf(eq(getNic(hostNicVfsConfig1)), + when(networkDeviceHelper.getFreeVf(eq(getNic(hostNicVfsConfig1)), isNull(List.class))).thenReturn(vf); + when(networkDeviceHelper.getFreeVf(eq(getNic(hostNicVfsConfig1)), eq(Collections.singletonList(vf.getDeviceName())))).thenReturn(null); mockVfsConfigsOnHost(Arrays.asList(hostNicVfsConfig1, hostNicVfsConfig2)); @@ -374,12 +374,12 @@ private HostDevice createFreeVf(VmNetworkInterface vnic, HostNicVfsConfig hostNicVfsConfig) { HostDevice vf = createVf(); - when(hostNicVfsConfigHelper.getFreeVf(eq(getNic(hostNicVfsConfig)), anyListOf(String.class))).thenReturn(vf); + when(networkDeviceHelper.getFreeVf(eq(getNic(hostNicVfsConfig)), anyListOf(String.class))).thenReturn(vf); return vf; } private void mockVfsConfigsOnHost(List<HostNicVfsConfig> vfsConfigs) { - when(hostNicVfsConfigHelper.getHostNicVfsConfigsWithNumVfsDataByHostId(hostId)).thenReturn(vfsConfigs); + when(networkDeviceHelper.getHostNicVfsConfigsWithNumVfsDataByHostId(hostId)).thenReturn(vfsConfigs); } private VdsNetworkInterface getNic(HostNicVfsConfig hostNicVfsConfig) { diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java index d9b8d4f..e819dc8 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VfsConfigValidatorTest.java @@ -18,7 +18,7 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.ovirt.engine.core.bll.ValidationResult; -import org.ovirt.engine.core.bll.network.host.HostNicVfsConfigHelper; +import org.ovirt.engine.core.bll.network.host.NetworkDeviceHelper; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig; import org.ovirt.engine.core.common.businessentities.network.Network; @@ -81,7 +81,7 @@ private VdsDAO vdsDao; @Mock - private HostNicVfsConfigHelper hostNicVfsConfigHelper; + private NetworkDeviceHelper networkDeviceHelper; @Mock private NetworkDao networkDao; @@ -196,7 +196,7 @@ @Test public void notAllVfsAreFree() { allVfsAreFreeTest(false); - assertThat(validator.allVfsAreFree(hostNicVfsConfigHelper), + assertThat(validator.allVfsAreFree(networkDeviceHelper), failsWith(VdcBllMessages.ACTION_TYPE_FAILED_NUM_OF_VFS_CANNOT_BE_CHANGED, String.format(VfsConfigValidator.NIC_NAME_REPLACEMENT, nic.getName()))); } @@ -204,12 +204,12 @@ @Test public void allVfsAreFree() { allVfsAreFreeTest(true); - assertThat(validator.allVfsAreFree(hostNicVfsConfigHelper), isValid()); + assertThat(validator.allVfsAreFree(networkDeviceHelper), isValid()); } private void allVfsAreFreeTest(boolean areAllVfsFree) { simulateNicExists(); - when(hostNicVfsConfigHelper.areAllVfsFree(nic)).thenReturn(areAllVfsFree); + when(networkDeviceHelper.areAllVfsFree(nic)).thenReturn(areAllVfsFree); } -- To view, visit https://gerrit.ovirt.org/42160 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I870ac5bdbcbdffc5eacc2e2051219b60ea888b97 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Betak <mbe...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches