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, 36 insertions(+), 17 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/12/24912/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..f69045a 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,12 +48,17 @@ .getSubnet() : getParameters().getSubnet(); String gateway = StringUtils.isEmpty(getParameters().getGateway()) ? "" : getParameters().getGateway(); java.util.ArrayList<String> interfaceNames = new java.util.ArrayList<String>(); + VdsNetworkInterface bond = null; + for (VdsNetworkInterface i : getParameters().getInterfaces()) { - if (i.getBonded() != null && i.getBonded() || NetworkUtils.isBondVlan(interfaces, i)) { - getParameters().setBondName(NetworkUtils.stripVlan(i.getName())); - for (VdsNetworkInterface ix : interfaces) { - if (NetworkUtils.interfaceBasedOn(i.getName(), ix.getBondName())) { - interfaceNames.add(NetworkUtils.stripVlan(ix.getName())); + if (Boolean.TRUE.equals(i.getBonded())) { + if (NetworkUtils.isBondVlan(interfaces, i)) { + getParameters().setBondName(NetworkUtils.stripVlan(i.getName())); + for (VdsNetworkInterface ix : interfaces) { + if (NetworkUtils.interfaceBasedOn(i.getName(), ix.getBondName())) { + interfaceNames.add(NetworkUtils.stripVlan(ix.getName())); + bond = ix; + } } } } else { @@ -60,11 +66,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 without providing the bond device should preserve the bonding options + String bondingOptions = null; + if (getParameters().getBondingOptions() == null) { + if (bond != null && Entities.entitiesByName(getParameters().getInterfaces()).containsKey(bond.getName())) { + bondingOptions = 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/24912 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I09b150b11913a9d8cddc5115e28c027e7c944910 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Moti Asayag <masa...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches