Ravi Nori has uploaded a new change for review.

Change subject: restapi : Update of power management via cli ignored(#959879)
......................................................................

restapi : Update of power management via cli ignored(#959879)

Unable update power management fields via cli, but the
same works from web admin portal

Change-Id: I2f2f425703cca688abf1ac3736a37ec5e3216840
Bug-Url: https://bugzilla.redhat.com/959879
Signed-off-by: Ravi Nori <[email protected]>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
1 file changed, 33 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/94/14994/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
index 0d4e7c4..baaf324 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
@@ -9,6 +9,7 @@
 
 import org.ovirt.engine.api.common.util.StatusUtils;
 import org.ovirt.engine.api.model.Action;
+import org.ovirt.engine.api.model.Agent;
 import org.ovirt.engine.api.model.Cluster;
 import org.ovirt.engine.api.model.CreationStatus;
 import org.ovirt.engine.api.model.Fault;
@@ -323,8 +324,15 @@
     protected class UpdateParametersProvider implements 
ParametersProvider<Host, VDS> {
         @Override
         public VdcActionParametersBase getParameters(Host incoming, VDS 
entity) {
+            String managementIp = null;
+            if (incoming.isSetPowerManagement()) {
+                managementIp = getManagementIp(incoming.getPowerManagement(), 
entity.getStaticData());
+            }
             VdsStatic updated = getMapper(modelType, 
VdsStatic.class).map(incoming,
                     entity.getStaticData());
+            if (incoming.isSetPowerManagement()) {
+                updated.setManagementIp(managementIp);
+            }
             UpdateVdsActionParameters updateParams = new 
UpdateVdsActionParameters(updated, "", false);
             if (incoming.isSetOverrideIptables()) {
                 
updateParams.setOverrideFirewall(incoming.isOverrideIptables());
@@ -333,6 +341,31 @@
         }
     }
 
+    /**
+     * Get the management ip address to use.
+     * If the incoming Host management ip is different from the one in the
+     * database we use incoming management ip
+     * If incoming agent address is different from the management ip in the
+     * database we use the incoming agent address at order 1.
+     * @param model
+     * @param vdsStatic
+     * @return
+     */
+    private String getManagementIp(PowerManagement model, VdsStatic vdsStatic) 
{
+        String newIp = vdsStatic.getManagementIp();
+        if (model.getAddress() != null && 
!model.getAddress().equals(vdsStatic.getManagementIp())) {
+            return model.getAddress();
+        }
+        if (model.isSetAgents()) {
+            for (Agent agent : model.getAgents().getAgents()) {
+                if (agent.getOrder() == 1 && 
!agent.getAddress().equals(vdsStatic.getManagementIp())) {
+                    return agent.getAddress();
+                }
+            }
+        }
+        return newIp;
+    }
+
     @Override
     protected Host doPopulate(Host model, VDS entity) {
         return model;


--
To view, visit http://gerrit.ovirt.org/14994
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2f2f425703cca688abf1ac3736a37ec5e3216840
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to