Alona Kaplan has uploaded a new change for review. Change subject: engine: adding excludeVfs list to HostNicVfsConfigHelper.getFreeVf ......................................................................
engine: adding excludeVfs list to HostNicVfsConfigHelper.getFreeVf Change-Id: Ie084a3174e902a95a45dde0116955be303da94aa Signed-off-by: Alona Kaplan <alkap...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelper.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelperImpl.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/HostNicVfsConfigHelperImplTest.java 3 files changed, 28 insertions(+), 11 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/92/39692/1 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/HostNicVfsConfigHelper.java index 18909a3..793a821 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/HostNicVfsConfigHelper.java @@ -68,10 +68,12 @@ * * @param nic * physical SR-IOV enabled nic + * @param excludeVfs + * vfs that should be considered as non-free * @return the first free VF on the nic * @throws <code>UnsupportedOperationException</code> in case the nic is not SR-IOV enabled */ - public HostDevice getFreeVf(VdsNetworkInterface nic); + public HostDevice getFreeVf(VdsNetworkInterface nic, List<String> excludeVfs); /** * Retrieves the pciDevice name of the specified <code>nic</code> 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/HostNicVfsConfigHelperImpl.java index fd29a07..71c2bdc 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/HostNicVfsConfigHelperImpl.java @@ -174,11 +174,11 @@ } @Override - public HostDevice getFreeVf(VdsNetworkInterface nic) { - return getVf(nic, true); + public HostDevice getFreeVf(VdsNetworkInterface nic, List<String> excludeVfs) { + return getVf(nic, true, excludeVfs); } - private HostDevice getVf(VdsNetworkInterface nic, final boolean shouldBeFree) { + private HostDevice getVf(VdsNetworkInterface nic, final boolean shouldBeFree, final List<String> excludeVfs) { List<HostDevice> deviceList = getDevicesByHostId(nic.getVdsId()); HostDevice pciDevice = getPciDeviceByNic(nic, deviceList); @@ -196,11 +196,15 @@ @Override public boolean eval(HostDevice vf) { - return isVfFree(vf) == shouldBeFree; + return isVfFree(vf) == shouldBeFree && (excludeVfs == null || !excludeVfs.contains(vf.getDeviceName())); } }); - return vf; + return vf; + } + + private HostDevice getVf(VdsNetworkInterface nic, final boolean shouldBeFree) { + return getVf(nic, shouldBeFree, null); } private boolean isNetworkAttached(VdsNetworkInterface vfNic) { 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/HostNicVfsConfigHelperImplTest.java index 50e950f..915292c 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/HostNicVfsConfigHelperImplTest.java @@ -309,33 +309,44 @@ @Test(expected = UnsupportedOperationException.class) public void getFreeVfNotSriovNic() { commonIsSriovDevice(false); - hostNicVfsConfigHelper.getFreeVf(nic); + hostNicVfsConfigHelper.getFreeVf(nic, null); } @Test public void getFreeVfNoVfs() { freeVfCommon(0, 0, 0, 0, 0); - assertNull(hostNicVfsConfigHelper.getFreeVf(nic)); + assertNull(hostNicVfsConfigHelper.getFreeVf(nic, null)); } @Test public void getFreeVfNoFreeVf() { freeVfCommon(0, 1, 2, 3, 4); - assertNull(hostNicVfsConfigHelper.getFreeVf(nic)); + assertNull(hostNicVfsConfigHelper.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))); + assertTrue(freeVfs.contains(hostNicVfsConfigHelper.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))); + assertTrue(freeVfs.contains(hostNicVfsConfigHelper.getFreeVf(nic, null))); + } + + @Test + public void getFreeVfWithExcludedVfs() { + List<HostDevice> freeVfs = freeVfCommon(5, 2, 2, 2, 2); + assertEquals(5, freeVfs.size()); + List<String> excludedVfs = new ArrayList<>(); + excludedVfs.add(freeVfs.get(0).getDeviceName()); + excludedVfs.add(freeVfs.get(1).getDeviceName()); + freeVfs.removeAll(excludedVfs); + assertTrue(freeVfs.contains(hostNicVfsConfigHelper.getFreeVf(nic, excludedVfs))); } private VdsNetworkInterface mockNicForNetDevice(HostDevice netDeviceParam) { -- To view, visit https://gerrit.ovirt.org/39692 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie084a3174e902a95a45dde0116955be303da94aa Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alona Kaplan <alkap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches