Moti Asayag has uploaded a new change for review. Change subject: engine: Update nics with user configuration ......................................................................
engine: Update nics with user configuration There is a need to persist the data configured by the user on the interfaces. Since some of the devices are created after being reported by VDSM, there is a need to make sure the user date is persisted. Change-Id: Ibcb860cf638286c469ea032ffd0fa4291214bf77 Signed-off-by: Moti Asayag <masa...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkConfigurator.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddBondCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AttachNetworkToVdsInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/DetachNetworkFromVdsInterfaceCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UpdateNetworkToVdsInterfaceCommand.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/CollectHostNetworkDataVdsCommandParameters.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataAfterInstallationVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java 11 files changed, 73 insertions(+), 23 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/22871/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkConfigurator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkConfigurator.java index e1c91ea..c843bb6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkConfigurator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/NetworkConfigurator.java @@ -22,10 +22,10 @@ import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.interfaces.FutureVDSCall; +import org.ovirt.engine.core.common.vdscommands.CollectHostNetworkDataVdsCommandParameters; import org.ovirt.engine.core.common.vdscommands.FutureVDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; -import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; @@ -125,7 +125,7 @@ @Override public Void runInTransaction() { getBackend().getResourceManager().RunVdsCommand(VDSCommandType.CollectVdsNetworkDataAfterInstallation, - new VdsIdAndVdsVDSCommandParametersBase(host)); + new CollectHostNetworkDataVdsCommandParameters(host)); return null; } }); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddBondCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddBondCommand.java index 93c7564..5b569cc 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddBondCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AddBondCommand.java @@ -10,10 +10,10 @@ import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.vdscommands.CollectHostNetworkDataVdsCommandParameters; import org.ovirt.engine.core.common.vdscommands.NetworkVdsmVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; -import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; import org.ovirt.engine.core.utils.NetworkUtils; import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.linq.Predicate; @@ -55,7 +55,7 @@ retVal = getBackend() .getResourceManager() .RunVdsCommand(VDSCommandType.CollectVdsNetworkData, - new VdsIdAndVdsVDSCommandParametersBase(getVds())); + new CollectHostNetworkDataVdsCommandParameters(getVds())); if (retVal.getSucceeded()) { // set network status (this can change the network status to diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AttachNetworkToVdsInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AttachNetworkToVdsInterfaceCommand.java index 7345e51..2e01a33 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AttachNetworkToVdsInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/AttachNetworkToVdsInterfaceCommand.java @@ -18,10 +18,10 @@ import org.ovirt.engine.core.common.queries.InterfaceAndIdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.common.vdscommands.CollectHostNetworkDataVdsCommandParameters; import org.ovirt.engine.core.common.vdscommands.NetworkVdsmVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; -import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.NetworkUtils; @@ -75,7 +75,7 @@ .getInstance() .getResourceManager() .RunVdsCommand(VDSCommandType.CollectVdsNetworkData, - new VdsIdAndVdsVDSCommandParametersBase(getVds())); + new CollectHostNetworkDataVdsCommandParameters(getVds())); if (retVal.getSucceeded()) { Guid groupId = getVdsDAO().get(params.getVdsId()).getVdsGroupId(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/DetachNetworkFromVdsInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/DetachNetworkFromVdsInterfaceCommand.java index 5bef72e..7d3e854 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/DetachNetworkFromVdsInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/DetachNetworkFromVdsInterfaceCommand.java @@ -15,10 +15,10 @@ import org.ovirt.engine.core.common.businessentities.network.NetworkStatus; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.vdscommands.CollectHostNetworkDataVdsCommandParameters; import org.ovirt.engine.core.common.vdscommands.NetworkVdsmVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; -import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; import org.ovirt.engine.core.utils.NetworkUtils; import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.linq.Predicate; @@ -70,7 +70,7 @@ .getInstance() .getResourceManager() .RunVdsCommand(VDSCommandType.CollectVdsNetworkData, - new VdsIdAndVdsVDSCommandParametersBase(getVds())); + new CollectHostNetworkDataVdsCommandParameters(getVds())); if (retVal.getSucceeded()) { setSucceeded(true); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java index a6aa5dc..9b8d929 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java @@ -16,10 +16,10 @@ import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.vdscommands.CollectHostNetworkDataVdsCommandParameters; import org.ovirt.engine.core.common.vdscommands.NetworkVdsmVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; -import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; import org.ovirt.engine.core.utils.NetworkUtils; import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.linq.Predicate; @@ -68,7 +68,7 @@ .getInstance() .getResourceManager() .RunVdsCommand(VDSCommandType.CollectVdsNetworkData, - new VdsIdAndVdsVDSCommandParametersBase(getVds())); + new CollectHostNetworkDataVdsCommandParameters(getVds())); if (retVal.getSucceeded()) { setSucceeded(true); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksCommand.java index 729abc3..35e9d7b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksCommand.java @@ -20,11 +20,11 @@ import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.interfaces.FutureVDSCall; +import org.ovirt.engine.core.common.vdscommands.CollectHostNetworkDataVdsCommandParameters; import org.ovirt.engine.core.common.vdscommands.FutureVDSCommandType; import org.ovirt.engine.core.common.vdscommands.SetupNetworksVdsCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; -import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; @@ -175,7 +175,8 @@ // save the new network topology to DB Backend.getInstance().getResourceManager() .RunVdsCommand(VDSCommandType.CollectVdsNetworkData, - new VdsIdAndVdsVDSCommandParametersBase(getVds())); + new CollectHostNetworkDataVdsCommandParameters(getVds(), + getParameters().getInterfaces())); // Update cluster networks (i.e. check if need to activate each new network) for (Network net : getNetworks()) { 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 f015f6e..4fb44a8 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 @@ -17,6 +17,7 @@ import org.ovirt.engine.core.common.errors.VdcBLLException; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.errors.VdcFault; +import org.ovirt.engine.core.common.vdscommands.CollectHostNetworkDataVdsCommandParameters; import org.ovirt.engine.core.common.vdscommands.NetworkVdsmVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; @@ -133,7 +134,7 @@ Backend.getInstance() .getResourceManager() .RunVdsCommand(VDSCommandType.CollectVdsNetworkData, - new VdsIdAndVdsVDSCommandParametersBase(vds)); + new CollectHostNetworkDataVdsCommandParameters(vds)); } catch (java.lang.Exception e) { } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/CollectHostNetworkDataVdsCommandParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/CollectHostNetworkDataVdsCommandParameters.java new file mode 100644 index 0000000..6335cff --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/CollectHostNetworkDataVdsCommandParameters.java @@ -0,0 +1,27 @@ +package org.ovirt.engine.core.common.vdscommands; + +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; + +public class CollectHostNetworkDataVdsCommandParameters extends VdsIdAndVdsVDSCommandParametersBase { + + private List<VdsNetworkInterface> nics; + + public CollectHostNetworkDataVdsCommandParameters() { + } + + public CollectHostNetworkDataVdsCommandParameters(VDS vds) { + super(vds); + } + + public CollectHostNetworkDataVdsCommandParameters(VDS vds, List<VdsNetworkInterface> nics) { + super(vds); + this.nics = nics; + } + + public List<VdsNetworkInterface> getInterfaces() { + return nics; + } +} diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java index 3e0263d..eab186c 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java @@ -556,7 +556,7 @@ VDSStatus returnStatus = vds.getStatus(); NonOperationalReason nonOperationalReason = - CollectVdsNetworkDataVDSCommand.persistAndEnforceNetworkCompliance(vds, false); + CollectVdsNetworkDataVDSCommand.persistAndEnforceNetworkCompliance(vds, false, null); if (nonOperationalReason != NonOperationalReason.NONE) { setIsSetNonOperationalExecuted(true); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataAfterInstallationVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataAfterInstallationVDSCommand.java index 4b753d6..aa3bd8f 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataAfterInstallationVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataAfterInstallationVDSCommand.java @@ -1,10 +1,10 @@ package org.ovirt.engine.core.vdsbroker.vdsbroker; -import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; +import org.ovirt.engine.core.common.vdscommands.CollectHostNetworkDataVdsCommandParameters; public class CollectVdsNetworkDataAfterInstallationVDSCommand extends CollectVdsNetworkDataVDSCommand { - public CollectVdsNetworkDataAfterInstallationVDSCommand(VdsIdAndVdsVDSCommandParametersBase parameters) { + public CollectVdsNetworkDataAfterInstallationVDSCommand(CollectHostNetworkDataVdsCommandParameters parameters) { super(parameters); } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java index a44162f..d1031d3 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java @@ -17,7 +17,7 @@ import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface.NetworkImplementationDetails; -import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; +import org.ovirt.engine.core.common.vdscommands.CollectHostNetworkDataVdsCommandParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; @@ -28,8 +28,8 @@ import org.ovirt.engine.core.utils.transaction.TransactionSupport; import org.ovirt.engine.core.vdsbroker.ResourceManager; -public class CollectVdsNetworkDataVDSCommand extends GetCapabilitiesVDSCommand<VdsIdAndVdsVDSCommandParametersBase> { - public CollectVdsNetworkDataVDSCommand(VdsIdAndVdsVDSCommandParametersBase parameters) { +public class CollectVdsNetworkDataVDSCommand extends GetCapabilitiesVDSCommand<CollectHostNetworkDataVdsCommandParameters> { + public CollectVdsNetworkDataVDSCommand(CollectHostNetworkDataVdsCommandParameters parameters) { super(parameters); } @@ -40,7 +40,9 @@ updateNetConfigDirtyFlag(); // update to db - persistAndEnforceNetworkCompliance(getVds(), skipManagementNetwork()); + persistAndEnforceNetworkCompliance(getVds(), + skipManagementNetwork(), + Entities.entitiesByName(getParameters().getInterfaces())); proceedProxyReturnValue(); } @@ -81,10 +83,14 @@ * @param skipManagementNetwork * if <code>true</code> skip validations for the management network (existence on the host or configured * properly) + * @param nicsByName + * a map of names to their network interfaces * @return The reason for non-operability of the host or <code>NonOperationalReason.NONE</code> */ - public static NonOperationalReason persistAndEnforceNetworkCompliance(VDS vds, boolean skipManagementNetwork) { - persistTopology(vds); + public static NonOperationalReason persistAndEnforceNetworkCompliance(VDS vds, + boolean skipManagementNetwork, + Map<String, VdsNetworkInterface> nicsByName) { + persistTopology(vds, nicsByName); if (vds.getStatus() != VDSStatus.Maintenance) { @@ -159,7 +165,7 @@ } } - private static void persistTopology(VDS vds) { + private static void persistTopology(VDS vds, Map<String, VdsNetworkInterface> nicsByName) { InterfaceDao interfaceDAO = DbFacade.getInstance().getInterfaceDao(); List<VdsNetworkInterface> dbIfaces = interfaceDAO.getAllInterfacesForVds(vds.getId()); List<String> updatedIfaces = new ArrayList<String>(); @@ -187,6 +193,11 @@ } } + if (nicsByName != null) { + updateInterfacesWithUserConfiguration(dbIfacesToBatch, nicsByName); + updateInterfacesWithUserConfiguration(vds.getInterfaces(), nicsByName); + } + if (!dbIfacesToBatch.isEmpty()) { interfaceDAO.massUpdateInterfacesForVds(dbIfacesToBatch); } @@ -200,6 +211,16 @@ } } + private static void updateInterfacesWithUserConfiguration(List<VdsNetworkInterface> nicsForUpdate, + Map<String, VdsNetworkInterface> nicsByName) { + for (VdsNetworkInterface nicForUpdate : nicsForUpdate) { + if (nicsByName.containsKey(nicForUpdate.getName())) { + VdsNetworkInterface nic = nicsByName.get(nicForUpdate.getName()); + nicForUpdate.setLabels(nic.getLabels()); + } + } + } + private static String getVmNetworksImplementedAsBridgeless(VDS vds, List<Network> clusterNetworks) { Map<String, VdsNetworkInterface> interfacesByNetworkName = Entities.hostInterfacesByNetworkName(vds.getInterfaces()); -- To view, visit http://gerrit.ovirt.org/22871 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibcb860cf638286c469ea032ffd0fa4291214bf77 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