Liran Zelkha has uploaded a new change for review. Change subject: core: Move ResourceManager to batch update VdsDynamic ......................................................................
core: Move ResourceManager to batch update VdsDynamic There is a TODO in ResourceManager to allow batch updates of VdsDynamic this patch introduces MassOperations to VdsDynamic and allow batch updates of it. I also changed ResourceManager to use the batch capability. Change-Id: If857a328d591f87cf453f1620f134d5e0a137363 Bug-Url: https://bugzilla.redhat.com/?????? Signed-off-by: lzel...@redhat.com <lzel...@redhat.com> --- M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java 3 files changed, 101 insertions(+), 120 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/51/23851/1 diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java index 3c3b331..9b72477 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAO.java @@ -9,7 +9,7 @@ * * */ -public interface VdsDynamicDAO extends GenericDao<VdsDynamic, Guid>, StatusAwareDao<Guid, VDSStatus> { +public interface VdsDynamicDAO extends GenericDao<VdsDynamic, Guid>, StatusAwareDao<Guid, VDSStatus>, MassOperationsDao<VdsDynamic, Guid> { /** * Update entity net_config_dirty field diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java index 7fe1c81..78a4e7c 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsDynamicDAODbFacadeImpl.java @@ -1,5 +1,10 @@ package org.ovirt.engine.core.dao; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; + import org.apache.commons.lang.NotImplementedException; import org.ovirt.engine.core.common.businessentities.NonOperationalReason; import org.ovirt.engine.core.common.businessentities.VDSStatus; @@ -8,15 +13,11 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.RpmVersion; import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; +import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper; import org.ovirt.engine.core.utils.serialization.json.JsonObjectDeserializer; import org.ovirt.engine.core.utils.serialization.json.JsonObjectSerializer; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; - -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.HashMap; -import java.util.List; /** * <code>VdsDAODbFacadeImpl</code> provides an implementation of {@link VdsDAO} that uses previously written code from @@ -24,7 +25,11 @@ * * */ -public class VdsDynamicDAODbFacadeImpl extends BaseDAODbFacade implements VdsDynamicDAO { +public class VdsDynamicDAODbFacadeImpl extends MassOperationsGenericDaoDbFacade<VdsDynamic, Guid> implements VdsDynamicDAO { + + public VdsDynamicDAODbFacadeImpl() { + super("VdsDynamic"); + } private static final class VdcDynamicRowMapper implements RowMapper<VdsDynamic> { public static final VdcDynamicRowMapper instance = new VdcDynamicRowMapper(); @@ -103,119 +108,12 @@ @Override public void save(VdsDynamic vds) { - MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() - .addValue("cpu_cores", vds.getcpu_cores()) - .addValue("cpu_threads", vds.getCpuThreads()) - .addValue("cpu_model", vds.getcpu_model()) - .addValue("cpu_speed_mh", vds.getcpu_speed_mh()) - .addValue("if_total_speed", vds.getif_total_speed()) - .addValue("kvm_enabled", vds.getkvm_enabled()) - .addValue("mem_commited", vds.getmem_commited()) - .addValue("physical_mem_mb", vds.getphysical_mem_mb()) - .addValue("status", vds.getStatus()) - .addValue("vds_id", vds.getId()) - .addValue("vm_active", vds.getvm_active()) - .addValue("vm_count", vds.getvm_count()) - .addValue("vms_cores_count", vds.getvms_cores_count()) - .addValue("vm_migrating", vds.getvm_migrating()) - .addValue("reserved_mem", vds.getreserved_mem()) - .addValue("guest_overhead", vds.getguest_overhead()) - .addValue("rpm_version", vds.getVersion().getRpmName()) - .addValue("software_version", vds.getsoftware_version()) - .addValue("version_name", vds.getversion_name()) - .addValue("build_name", vds.getbuild_name()) - .addValue("previous_status", vds.getprevious_status()) - .addValue("cpu_flags", vds.getcpu_flags()) - .addValue("cpu_over_commit_time_stamp", - vds.getcpu_over_commit_time_stamp()) - .addValue("pending_vcpus_count", vds.getpending_vcpus_count()) - .addValue("pending_vmem_size", vds.getpending_vmem_size()) - .addValue("cpu_sockets", vds.getcpu_sockets()) - .addValue("net_config_dirty", vds.getnet_config_dirty()) - .addValue("supported_cluster_levels", - vds.getsupported_cluster_levels()) - .addValue("supported_engines", vds.getsupported_engines()) - .addValue("host_os", vds.gethost_os()) - .addValue("kvm_version", vds.getkvm_version()) - .addValue("libvirt_version", vds.getlibvirt_version().getRpmName()) - .addValue("spice_version", vds.getspice_version()) - .addValue("gluster_version", vds.getGlusterVersion().getRpmName()) - .addValue("kernel_version", vds.getkernel_version()) - .addValue("iscsi_initiator_name", vds.getIScsiInitiatorName()) - .addValue("transparent_hugepages_state", - vds.getTransparentHugePagesState().getValue()) - .addValue("hooks", vds.getHooksStr()) - .addValue("non_operational_reason", - vds.getNonOperationalReason().getValue()) - .addValue("hw_manufacturer", vds.getHardwareManufacturer()) - .addValue("hw_product_name", vds.getHardwareProductName()) - .addValue("hw_version", vds.getHardwareVersion()) - .addValue("hw_serial_number", vds.getHardwareSerialNumber()) - .addValue("hw_uuid", vds.getHardwareUUID()) - .addValue("hw_family", vds.getHardwareFamily()) - .addValue("hbas", new JsonObjectSerializer().serialize(vds.getHBAs())) - .addValue("supported_emulated_machines", vds.getSupportedEmulatedMachines()) - .addValue("controlled_by_pm_policy", vds.isPowerManagementControlledByPolicy()); - - getCallsHandler().executeModification("InsertVdsDynamic", parameterSource); + getCallsHandler().executeModification("InsertVdsDynamic", createFullParametersMapperForSave(vds)); } @Override public void update(VdsDynamic vds) { - MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() - .addValue("cpu_cores", vds.getcpu_cores()) - .addValue("cpu_threads", vds.getCpuThreads()) - .addValue("cpu_model", vds.getcpu_model()) - .addValue("cpu_speed_mh", vds.getcpu_speed_mh()) - .addValue("if_total_speed", vds.getif_total_speed()) - .addValue("kvm_enabled", vds.getkvm_enabled()) - .addValue("mem_commited", vds.getmem_commited()) - .addValue("physical_mem_mb", vds.getphysical_mem_mb()) - .addValue("status", vds.getStatus()) - .addValue("vds_id", vds.getId()) - .addValue("vm_active", vds.getvm_active()) - .addValue("vm_count", vds.getvm_count()) - .addValue("vms_cores_count", vds.getvms_cores_count()) - .addValue("vm_migrating", vds.getvm_migrating()) - .addValue("reserved_mem", vds.getreserved_mem()) - .addValue("guest_overhead", vds.getguest_overhead()) - .addValue("rpm_version", vds.getVersion().getRpmName()) - .addValue("software_version", vds.getsoftware_version()) - .addValue("version_name", vds.getversion_name()) - .addValue("build_name", vds.getbuild_name()) - .addValue("previous_status", vds.getprevious_status()) - .addValue("cpu_flags", vds.getcpu_flags()) - .addValue("cpu_over_commit_time_stamp", - vds.getcpu_over_commit_time_stamp()) - .addValue("pending_vcpus_count", vds.getpending_vcpus_count()) - .addValue("pending_vmem_size", vds.getpending_vmem_size()) - .addValue("cpu_sockets", vds.getcpu_sockets()) - .addValue("net_config_dirty", vds.getnet_config_dirty()) - .addValue("supported_cluster_levels", - vds.getsupported_cluster_levels()) - .addValue("supported_engines", vds.getsupported_engines()) - .addValue("host_os", vds.gethost_os()) - .addValue("kvm_version", vds.getkvm_version()) - .addValue("libvirt_version", vds.getlibvirt_version().getRpmName()) - .addValue("spice_version", vds.getspice_version()) - .addValue("gluster_version", vds.getGlusterVersion().getRpmName()) - .addValue("kernel_version", vds.getkernel_version()) - .addValue("iscsi_initiator_name", vds.getIScsiInitiatorName()) - .addValue("transparent_hugepages_state", - vds.getTransparentHugePagesState().getValue()) - .addValue("hooks", vds.getHooksStr()) - .addValue("non_operational_reason", - vds.getNonOperationalReason().getValue()) - .addValue("hw_manufacturer", vds.getHardwareManufacturer()) - .addValue("hw_product_name", vds.getHardwareProductName()) - .addValue("hw_version", vds.getHardwareVersion()) - .addValue("hw_serial_number", vds.getHardwareSerialNumber()) - .addValue("hw_uuid", vds.getHardwareUUID()) - .addValue("hw_family", vds.getHardwareFamily()) - .addValue("hbas", new JsonObjectSerializer().serialize(vds.getHBAs())) - .addValue("supported_emulated_machines", vds.getSupportedEmulatedMachines()); - - getCallsHandler().executeModification("UpdateVdsDynamic", parameterSource); + getCallsHandler().executeModification("UpdateVdsDynamic", createFullParametersMapper(vds)); } @Override @@ -278,4 +176,90 @@ getCallsHandler().executeModification("UpdateVdsDynamicPowerManagementPolicyFlag", parameterSource); } + + @Override + public MapSqlParameterMapper<VdsDynamic> getBatchMapper() { + return new MapSqlParameterMapper<VdsDynamic>() { + + @Override + public MapSqlParameterSource map(VdsDynamic entity) { + return createFullParametersMapper(entity); + } + + }; + } + + private MapSqlParameterSource createFullParametersMapperForSave(VdsDynamic vds) { + MapSqlParameterSource parameterSource = createFullParametersMapper(vds); + parameterSource.addValue("controlled_by_pm_policy", vds.isPowerManagementControlledByPolicy()); + return parameterSource; + } + + @Override + protected MapSqlParameterSource createFullParametersMapper(VdsDynamic vds) { + MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() + .addValue("cpu_cores", vds.getcpu_cores()) + .addValue("cpu_threads", vds.getCpuThreads()) + .addValue("cpu_model", vds.getcpu_model()) + .addValue("cpu_speed_mh", vds.getcpu_speed_mh()) + .addValue("if_total_speed", vds.getif_total_speed()) + .addValue("kvm_enabled", vds.getkvm_enabled()) + .addValue("mem_commited", vds.getmem_commited()) + .addValue("physical_mem_mb", vds.getphysical_mem_mb()) + .addValue("status", vds.getStatus()) + .addValue("vds_id", vds.getId()) + .addValue("vm_active", vds.getvm_active()) + .addValue("vm_count", vds.getvm_count()) + .addValue("vms_cores_count", vds.getvms_cores_count()) + .addValue("vm_migrating", vds.getvm_migrating()) + .addValue("reserved_mem", vds.getreserved_mem()) + .addValue("guest_overhead", vds.getguest_overhead()) + .addValue("rpm_version", vds.getVersion().getRpmName()) + .addValue("software_version", vds.getsoftware_version()) + .addValue("version_name", vds.getversion_name()) + .addValue("build_name", vds.getbuild_name()) + .addValue("previous_status", vds.getprevious_status()) + .addValue("cpu_flags", vds.getcpu_flags()) + .addValue("cpu_over_commit_time_stamp", + vds.getcpu_over_commit_time_stamp()) + .addValue("pending_vcpus_count", vds.getpending_vcpus_count()) + .addValue("pending_vmem_size", vds.getpending_vmem_size()) + .addValue("cpu_sockets", vds.getcpu_sockets()) + .addValue("net_config_dirty", vds.getnet_config_dirty()) + .addValue("supported_cluster_levels", + vds.getsupported_cluster_levels()) + .addValue("supported_engines", vds.getsupported_engines()) + .addValue("host_os", vds.gethost_os()) + .addValue("kvm_version", vds.getkvm_version()) + .addValue("libvirt_version", vds.getlibvirt_version().getRpmName()) + .addValue("spice_version", vds.getspice_version()) + .addValue("gluster_version", vds.getGlusterVersion().getRpmName()) + .addValue("kernel_version", vds.getkernel_version()) + .addValue("iscsi_initiator_name", vds.getIScsiInitiatorName()) + .addValue("transparent_hugepages_state", + vds.getTransparentHugePagesState().getValue()) + .addValue("hooks", vds.getHooksStr()) + .addValue("non_operational_reason", + vds.getNonOperationalReason().getValue()) + .addValue("hw_manufacturer", vds.getHardwareManufacturer()) + .addValue("hw_product_name", vds.getHardwareProductName()) + .addValue("hw_version", vds.getHardwareVersion()) + .addValue("hw_serial_number", vds.getHardwareSerialNumber()) + .addValue("hw_uuid", vds.getHardwareUUID()) + .addValue("hw_family", vds.getHardwareFamily()) + .addValue("hbas", new JsonObjectSerializer().serialize(vds.getHBAs())) + .addValue("supported_emulated_machines", vds.getSupportedEmulatedMachines()); + + return parameterSource; + } + + @Override + protected MapSqlParameterSource createIdParameterMapper(Guid id) { + return getCustomMapSqlParameterSource().addValue("vds_id", id); + } + + @Override + protected RowMapper<VdsDynamic> createEntityRowMapper() { + return VdcDynamicRowMapper.instance; + } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java index 2d16868..5f2f7df 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java @@ -116,10 +116,7 @@ } } - // TODO replace this with batch processing once it becomes available - for (VdsDynamic entity: updatedEntities) { - DbFacade.getInstance().getVdsDynamicDao().update(entity); - } + DbFacade.getInstance().getVdsDynamicDao().updateAllInBatch(updatedEntities); // Populate the VDS dictionary for (VDS curVds : allVdsList) { -- To view, visit http://gerrit.ovirt.org/23851 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If857a328d591f87cf453f1620f134d5e0a137363 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liran Zelkha <liran.zel...@gmail.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches