Alona Kaplan has uploaded a new change for review. Change subject: core: create UpdateVmInterfaceVDSCommand ......................................................................
core: create UpdateVmInterfaceVDSCommand The command will be called from UpdateVmInterfaceCommand. It will be used to hot-update a vnic on a running vm. The fields that can be updated are- network linked (link state) Change-Id: Idc54fedde0fdf6ea9694fc19977bf1178e73efdf Signed-off-by: Alona Kaplan <[email protected]> --- A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/UpdateVmInterfaceVDSParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VmUpdateDeviceVDSParameters.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java A backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/UpdateVmInterfaceVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java A backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmUpdateDeviceVDSCommand.java 8 files changed, 142 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/9669/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/UpdateVmInterfaceVDSParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/UpdateVmInterfaceVDSParameters.java new file mode 100644 index 0000000..ba4aba4 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/UpdateVmInterfaceVDSParameters.java @@ -0,0 +1,29 @@ +package org.ovirt.engine.core.common.vdscommands; + +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmDevice; +import org.ovirt.engine.core.common.businessentities.VmNetworkInterface; +import org.ovirt.engine.core.compat.Guid; + +public class UpdateVmInterfaceVDSParameters extends VmUpdateDeviceVDSParameters { + + private final VmNetworkInterface nic; + + public UpdateVmInterfaceVDSParameters(Guid vdsId, VM vm, VmNetworkInterface nic, VmDevice vmDevice) { + super(vdsId, vm, vmDevice); + this.nic = nic; + } + + public VmNetworkInterface getNic() { + return nic; + } + + @Override + public String toString() { + return String.format("%s, vm.vm_name=%s, nic=%s, vmDevice=%s", + super.toString(), + (getVm() == null ? "" : getVm().getvm_name()), + getNic(), + getVmDevice()); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java index 92ddbf4..73db303 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java @@ -122,6 +122,7 @@ HotPlugNic("org.ovirt.engine.core.vdsbroker.vdsbroker"), HotUnplugNic("org.ovirt.engine.core.vdsbroker.vdsbroker"), Snapshot("org.ovirt.engine.core.vdsbroker.vdsbroker"), + VmUpdateDevice("org.ovirt.engine.core.vdsbroker.vdsbroker"), // Gluster VDS commands CreateGlusterVolume("org.ovirt.engine.core.vdsbroker.gluster"), SetGlusterVolumeOption("org.ovirt.engine.core.vdsbroker.gluster"), diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VmUpdateDeviceVDSParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VmUpdateDeviceVDSParameters.java new file mode 100644 index 0000000..5879db2 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VmUpdateDeviceVDSParameters.java @@ -0,0 +1,33 @@ +package org.ovirt.engine.core.common.vdscommands; + +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmDevice; +import org.ovirt.engine.core.compat.Guid; + +public class VmUpdateDeviceVDSParameters extends VdsIdVDSCommandParametersBase { + + private final VM vm; + private final VmDevice vmDevice; + + public VmUpdateDeviceVDSParameters(Guid vdsId, VM vm, VmDevice vmDevice) { + super(vdsId); + this.vm = vm; + this.vmDevice = vmDevice; + } + + public VM getVm() { + return vm; + } + + public VmDevice getVmDevice() { + return vmDevice; + } + + @Override + public String toString() { + return String.format("%s, vm.vm_name=%s, vmDevice=%s", + super.toString(), + (getVm() == null ? "" : getVm().getvm_name()), + getVmDevice()); + } +} diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java index 99c7c21..e8bd76d 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java @@ -198,6 +198,8 @@ StatusOnlyReturnForXmlRpc hotUnplugNic(XmlRpcStruct info); + StatusOnlyReturnForXmlRpc vmUpdateDevice(XmlRpcStruct info); + FutureTask<Map<String, Object>> poll(); StatusOnlyReturnForXmlRpc snapshot(String vmId, Map<String, String>[] snapParams); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/UpdateVmInterfaceVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/UpdateVmInterfaceVDSCommand.java new file mode 100644 index 0000000..9cc2413 --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/UpdateVmInterfaceVDSCommand.java @@ -0,0 +1,34 @@ +package org.ovirt.engine.core.vdsbroker.vdsbroker; + +import java.util.ArrayList; +import java.util.Collections; + +import org.ovirt.engine.core.common.businessentities.VmNetworkInterface; +import org.ovirt.engine.core.common.vdscommands.UpdateVmInterfaceVDSParameters; + +public class UpdateVmInterfaceVDSCommand extends VmUpdateDeviceVDSCommand<UpdateVmInterfaceVDSParameters> { + + public UpdateVmInterfaceVDSCommand(UpdateVmInterfaceVDSParameters parameters) { + super(parameters); + } + + @Override + protected void initDeviceStructure() { + VmNetworkInterface nic = getParameters().getNic(); + + if (nic.getNetworkName() != null) { + struct.add(VdsProperties.network, nic.getNetworkName()); + } + + struct.add(VdsProperties.linkActive, String.valueOf(nic.isLinked())); + + if (nic.isPortMirroring()) { + if (nic.getNetworkName() != null) { + struct.add(VdsProperties.portMirroring, Collections.singletonList(nic.getNetworkName())); + } else { + struct.add(VdsProperties.portMirroring, new ArrayList<String>()); + } + } + } + +} diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java index 2499b4f..3609c6a 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java @@ -184,6 +184,8 @@ public Map<String, Object> hotunplugNic(Map<String, Object> innerMap); + public Map<String, Object> vmUpdateDevice(Map<String, Object> innerMap); + Map<String, Object> snapshot(String vmId, Map<String, String>[] snapParams); // Gluster vdsm commands diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java index b1f47da..d6dfc5f 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java @@ -1232,4 +1232,15 @@ throw new XmlRpcRunTimeException(ute); } } + + @Override + public StatusOnlyReturnForXmlRpc vmUpdateDevice(XmlRpcStruct info) { + try { + Map<String, Object> xmlRpcReturnValue = vdsServer.vmUpdateDevice(info.getInnerMap()); + StatusOnlyReturnForXmlRpc wrapper = new StatusOnlyReturnForXmlRpc(xmlRpcReturnValue); + return wrapper; + } catch (UndeclaredThrowableException ute) { + throw new XmlRpcRunTimeException(ute); + } + } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmUpdateDeviceVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmUpdateDeviceVDSCommand.java new file mode 100644 index 0000000..30930c9 --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmUpdateDeviceVDSCommand.java @@ -0,0 +1,30 @@ +package org.ovirt.engine.core.vdsbroker.vdsbroker; + +import org.ovirt.engine.core.common.vdscommands.VmUpdateDeviceVDSParameters; +import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcStruct; + +public abstract class VmUpdateDeviceVDSCommand<P extends VmUpdateDeviceVDSParameters> extends VdsBrokerCommand<P> { + + protected XmlRpcStruct struct = new XmlRpcStruct(); + + public VmUpdateDeviceVDSCommand(P parameters) { + super(parameters); + } + + @Override + protected void ExecuteVdsBrokerCommand() { + init(); + status = getBroker().vmUpdateDevice(struct); + ProceedProxyReturnValue(); + } + + protected void init() { + struct.add(VdsProperties.vm_guid, getParameters().getVm().getId().toString()); + struct.add(VdsProperties.Type, getParameters().getVmDevice().getType()); + struct.add(VdsProperties.Alias, getParameters().getVmDevice().getAlias()); + initDeviceStructure(); + } + + protected abstract void initDeviceStructure(); +} + -- To view, visit http://gerrit.ovirt.org/9669 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idc54fedde0fdf6ea9694fc19977bf1178e73efdf Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alona Kaplan <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
