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
