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

Reply via email to