Shahar Havivi has uploaded a new change for review.

Change subject: Api: Missing domain field on VM\Template object
......................................................................

Api: Missing domain field on VM\Template object

BE is not returning VmInit for the collection of VM and Templates (since
it use the search query).
Added a GetVmsInitQuery to set the VmInit for Templates and VMs
collections.

Change-Id: Icf43cb1a0d25d89ef68f21bc47b82c2cd6fdf19d
Signed-off-by: Shahar Havivi <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsInitQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsInitParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInitDAODbFacadeImpl.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
M packaging/dbscripts/vms_sp.sql
9 files changed, 111 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/54/25154/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsInitQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsInitQuery.java
new file mode 100644
index 0000000..9016096
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsInitQuery.java
@@ -0,0 +1,38 @@
+package org.ovirt.engine.core.bll;
+
+import java.util.Map;
+
+import org.ovirt.engine.core.common.businessentities.Entities;
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VmInit;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
+import org.ovirt.engine.core.common.queries.GetVmsInitParameters;
+import org.ovirt.engine.core.compat.Guid;
+
+/**
+ *  Query set VmInit to VMs *** OR *** Templates
+ */
+public class GetVmsInitQuery<P extends GetVmsInitParameters> extends 
QueriesCommandBase<P> {
+   public GetVmsInitQuery(P parameters) {
+       super(parameters);
+   }
+
+   @Override
+   protected void executeQueryCommand() {
+       Map<Guid, VmInit> allInit = 
Entities.businessEntitiesById(VmHandler.getAllVmInit());
+       if (getParameters().getVms() != null) {
+           for (VM vm: getParameters().getVms()) {
+               vm.getStaticData().setVmInit(allInit.get(vm.getId()));
+           }
+           getQueryReturnValue().setReturnValue(getParameters().getVms());
+           return;
+       }
+
+       if (getParameters().getTemplates() != null) {
+           for (VmTemplate template: getParameters().getTemplates()) {
+               template.setVmInit(allInit.get(template.getId()));
+           }
+           getQueryReturnValue().setReturnValue(getParameters().getVms());
+       }
+   }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
index c02792d..a076978 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
@@ -330,6 +330,11 @@
         db.remove(vm.getId());
     }
 
+    public static List<VmInit> getAllVmInit() {
+        VmInitDAO db = DbFacade.getInstance().getVmInitDao();
+        return db.getAll();
+    }
+
     /**
      * Filters the vm image disks/disk devices according to the given 
parameters
      * note: all the given parameters are relevant for image disks, luns will 
be filtered.
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsInitParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsInitParameters.java
new file mode 100644
index 0000000..015dc6c
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsInitParameters.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.core.common.queries;
+
+import java.util.List;
+
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
+
+public class GetVmsInitParameters extends VdcQueryParametersBase {
+    private static final long serialVersionUID = 575294540991590541L;
+
+    private List<VM> vms;
+    private List<VmTemplate> templates;
+
+    public GetVmsInitParameters() {
+    }
+
+    public List<VM> getVms() {
+        return vms;
+    }
+    public void setVms(List<VM> vms) {
+        this.vms = vms;
+    }
+
+    public List<VmTemplate> getTemplates() {
+        return templates;
+    }
+    public void setTemplates(List<VmTemplate> templates) {
+        this.templates = templates;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index cbc567d..8661c07 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -22,6 +22,7 @@
     GetVmsByVnicProfileId,
     GetTemplatesByVnicProfileId,
     GetVirtioScsiControllers(VdcQueryAuthType.User),
+    GetVmsInit,
 
     // Vds queries
     GetVdsByVdsId,
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInitDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInitDAODbFacadeImpl.java
index 8633bf6..0282cd1 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInitDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmInitDAODbFacadeImpl.java
@@ -4,7 +4,6 @@
 import java.sql.SQLException;
 import java.util.List;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.ovirt.engine.core.common.businessentities.VmInit;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils;
@@ -24,7 +23,9 @@
 
     @Override
     public List<VmInit> getAll() {
-        throw new NotImplementedException();
+        return getCallsHandler().executeReadList("GetAllFromVmInit",
+                VMInitRowMapper.instance,
+                getCustomMapSqlParameterSource());
     }
 
     @Override
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
index 2010020..41133bb 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplatesResource.java
@@ -26,8 +26,10 @@
 import org.ovirt.engine.core.common.interfaces.SearchType;
 import 
org.ovirt.engine.core.common.queries.GetVmByVmNameForDataCenterParameters;
 import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
+import org.ovirt.engine.core.common.queries.GetVmsInitParameters;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 
@@ -143,6 +145,14 @@
     }
 
     protected Templates mapCollection(List<VmTemplate> entities) {
+        // Fill VmInit for entities - the search query no join the VmInit to Vm
+        GetVmsInitParameters params = new GetVmsInitParameters();
+        params.setTemplates(entities);
+        VdcQueryReturnValue queryReturnValue = 
runQuery(VdcQueryType.GetVmsInit, params);
+        if (queryReturnValue.getSucceeded() && 
queryReturnValue.getReturnValue() != null) {
+            entities = queryReturnValue.getReturnValue();
+        }
+
         Templates collection = new Templates();
         for (VmTemplate entity : entities) {
             collection.getTemplates().add(addLinks(populate(map(entity), 
entity)));
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
index aa36aa0..a37796d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmsResource.java
@@ -53,6 +53,7 @@
 import 
org.ovirt.engine.core.common.queries.GetVmFromConfigurationQueryParameters;
 import org.ovirt.engine.core.common.queries.GetVmOvfByVmIdParameters;
 import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
+import org.ovirt.engine.core.common.queries.GetVmsInitParameters;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.NameQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
@@ -451,6 +452,14 @@
     }
 
     protected VMs 
mapCollection(List<org.ovirt.engine.core.common.businessentities.VM> entities, 
boolean isFiltered) {
+        // Fill VmInit for entities - the search query no join the VmInit to Vm
+        GetVmsInitParameters params = new GetVmsInitParameters();
+        params.setVms(entities);
+        VdcQueryReturnValue queryReturnValue = 
runQuery(VdcQueryType.GetVmsInit, params);
+        if (queryReturnValue.getSucceeded() && 
queryReturnValue.getReturnValue() != null) {
+            entities = queryReturnValue.getReturnValue();
+        }
+
         VMs collection = new VMs();
         for (org.ovirt.engine.core.common.businessentities.VM entity : 
entities) {
             VM vm = map(entity);
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
index fe5045e..ddd0fd0 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
@@ -26,6 +26,7 @@
 import org.ovirt.engine.api.model.CustomProperty;
 import org.ovirt.engine.api.model.Display;
 import org.ovirt.engine.api.model.DisplayType;
+import org.ovirt.engine.api.model.Domain;
 import org.ovirt.engine.api.model.File;
 import org.ovirt.engine.api.model.Files;
 import org.ovirt.engine.api.model.GuestInfo;
@@ -520,6 +521,11 @@
 
         if (entity.getVmInit() != null) {
             model.setInitialization(map(entity.getVmInit(), null));
+            if (entity.getVmInit().getDomain() != null) {
+                Domain domain = new Domain();
+                domain.setName(entity.getVmInit().getDomain());
+                model.setDomain(domain);
+            }
         }
         return model;
     }
diff --git a/packaging/dbscripts/vms_sp.sql b/packaging/dbscripts/vms_sp.sql
index 84648cc..ccc6b12 100644
--- a/packaging/dbscripts/vms_sp.sql
+++ b/packaging/dbscripts/vms_sp.sql
@@ -1172,6 +1172,15 @@
 END; $procedure$
 LANGUAGE plpgsql;
 
+Create or replace FUNCTION GetAllFromVmInit() RETURNS SETOF vm_init STABLE
+   AS $procedure$
+BEGIN
+RETURN QUERY SELECT vm_init.*
+   FROM vm_init;
+
+END; $procedure$
+LANGUAGE plpgsql;
+
 
 Create or replace FUNCTION UpdateVmInit(
     v_vm_id UUID,


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

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

Reply via email to