Moti Asayag has uploaded a new change for review. Change subject: core: Preserve bonding options when updating vlan over bond ......................................................................
core: Preserve bonding options when updating vlan over bond The ovirt-engine used to erase any pre-configured bonding options, if it wasn't provided explicitly by the api users. In order to preserve the bonding options properly, there is a need either to examine it from the supplied properties or to use the already configured bonding device from the engine db. Change-Id: I09b150b11913a9d8cddc5115e28c027e7c944910 Bug-Url: https://bugzilla.redhat.com/1068970 Signed-off-by: Moti Asayag <masa...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkToVdsInterfaceCommand.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java 2 files changed, 28 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/40/25140/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkToVdsInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkToVdsInterfaceCommand.java index 7b79edc..a6584a0 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkToVdsInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkToVdsInterfaceCommand.java @@ -7,6 +7,7 @@ import org.ovirt.engine.core.bll.network.cluster.NetworkClusterHelper; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.UpdateNetworkToVdsParameters; +import org.ovirt.engine.core.common.businessentities.Entities; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.network.Network; @@ -47,8 +48,9 @@ .getSubnet() : getParameters().getSubnet(); String gateway = StringUtils.isEmpty(getParameters().getGateway()) ? "" : getParameters().getGateway(); java.util.ArrayList<String> interfaceNames = new java.util.ArrayList<String>(); + for (VdsNetworkInterface i : getParameters().getInterfaces()) { - if (i.getBonded() != null && i.getBonded() || NetworkUtils.isBondVlan(interfaces, i)) { + if (Boolean.TRUE.equals(i.getBonded()) || NetworkUtils.isBondVlan(interfaces, i)) { getParameters().setBondName(NetworkUtils.stripVlan(i.getName())); for (VdsNetworkInterface ix : interfaces) { if (NetworkUtils.interfaceBasedOn(i.getName(), ix.getBondName())) { @@ -60,11 +62,28 @@ } } - NetworkVdsmVDSCommandParameters parameters = new NetworkVdsmVDSCommandParameters(getParameters().getVdsId(), - getParameters().getNetwork().getName(), getParameters().getNetwork().getVlanId(), getParameters() - .getBondName(), interfaceNames.toArray(new String[] {}), address, subnet, gateway, - getParameters().getNetwork().getStp(), getParameters().getBondingOptions(), getParameters() - .getBootProtocol()); + // updating a vlan over bond if the bond was not provided the bond device should preserve the bonding options + String bondingOptions = null; + if (getParameters().getBondingOptions() == null && getParameters().getBondName() != null + && !Entities.entitiesByName(getParameters().getInterfaces()).containsKey(getParameters().getBondName())) { + VdsNetworkInterface bond = Entities.entitiesByName(interfaces).get(getParameters().getBondName()); + bondingOptions = bond == null ? null : bond.getBondOptions(); + } else { + bondingOptions = getParameters().getBondingOptions(); + } + + NetworkVdsmVDSCommandParameters parameters = + new NetworkVdsmVDSCommandParameters(getParameters().getVdsId(), + getParameters().getNetwork().getName(), + getParameters().getNetwork().getVlanId(), + getParameters().getBondName(), + interfaceNames.toArray(new String[] {}), + address, + subnet, + gateway, + getParameters().getNetwork().getStp(), + bondingOptions, + getParameters().getBootProtocol()); parameters.setVmNetwork(getParameters().getNetwork().isVmNetwork()); parameters.setOldNetworkName(getParameters().getOldNetworkName()); parameters.setConnectionTimeout(Config.<Integer> getValue(ConfigValues.NetworkConnectivityCheckTimeoutInSeconds)); diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java index 3c44ff2..e3fdff0 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java @@ -70,19 +70,15 @@ } public static boolean isBondVlan(List<VdsNetworkInterface> interfaces, VdsNetworkInterface iface) { - boolean retVal = false; - if (isVlan(iface)) { for (VdsNetworkInterface i : interfaces) { - if (i.getBonded() != null && i.getBonded() == true - && interfaceBasedOn(iface.getName(), i.getName())) { - retVal = true; - break; + if (Boolean.TRUE.equals(i.getBonded()) && interfaceBasedOn(iface.getName(), i.getName())) { + return true; } } } - return retVal; + return false; } /** -- To view, visit http://gerrit.ovirt.org/25140 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I09b150b11913a9d8cddc5115e28c027e7c944910 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Moti Asayag <masa...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches