package org.ovirt.engine.core.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.ovirt.engine.core.common.businessentities.HypervisorType; import org.ovirt.engine.core.common.businessentities.NonOperationalReason; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.VDSType; import org.ovirt.engine.core.common.businessentities.VdsSelectionAlgorithm; import org.ovirt.engine.core.common.businessentities.VdsSpmStatus; import org.ovirt.engine.core.common.businessentities.VdsTransparentHugePagesState; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; /** * <code>VdsDAODbFacadeImpl</code> provides an implementation of {@code VdsDAO} that uses previously written code from * {@code DbFacade}. */ public class VdsDAODbFacadeImpl extends BaseDAODbFacade implements VdsDAO { @Override public VDS get(NGuid id) { return getCallsHandler().executeRead("GetVdsByVdsId", new VdsRowMapper(), getCustomMapSqlParameterSource() .addValue("vds_id", id)); } @Override public List<VDS> getAllWithName(String name) { return getCallsHandler().executeReadList("GetVdsByName", new VdsRowMapper(), getCustomMapSqlParameterSource() .addValue("vds_name", name)); } @Override public List<VDS> getAllForHostname(String hostname) { return getCallsHandler().executeReadList("GetVdsByHostName", new VdsRowMapper(), getCustomMapSqlParameterSource() .addValue("host_name", hostname)); } @Override public List<VDS> getAllWithIpAddress(String address) { return getCallsHandler().executeReadList("GetVdsByIp", new VdsRowMapper(), getCustomMapSqlParameterSource() .addValue("ip", address)); } @Override public List<VDS> getAllWithUniqueId(String id) { return getCallsHandler().executeReadList("GetVdsByUniqueID", new VdsRowMapper(), getCustomMapSqlParameterSource() .addValue("vds_unique_id", id)); } @Override public List<VDS> getAllOfTypes(VDSType[] types) { List<VDS> list = new ArrayList<VDS>(); for (VDSType type : types) { list.addAll(getAllOfType(type)); } return list; } @Override public List<VDS> getAllOfType(VDSType type) { return getCallsHandler().executeReadList("GetVdsByType", new VdsRowMapper(), getCustomMapSqlParameterSource() .addValue("vds_type", type)); } @Override public List<VDS> getAllForVdsGroupWithoutMigrating(Guid id) { return getCallsHandler().executeReadList("GetVdsWithoutMigratingVmsByVdsGroupId", new VdsRowMapper(), getCustomMapSqlParameterSource() .addValue("vds_group_id", id)); } @Override public List<VDS> getAllWithQuery(String query) { return new SimpleJdbcTemplate(jdbcTemplate).query(query, new VdsRowMapper()); } @Override public List<VDS> getAll() { return getCallsHandler().executeReadList("GetAllFromVds", new VdsRowMapper(), getCustomMapSqlParameterSource()); } @Override public List<VDS> getAllForVdsGroup(Guid vdsGroupID) { return getCallsHandler().executeReadList("GetVdsByVdsGroupId", new VdsRowMapper(), getCustomMapSqlParameterSource() .addValue("vds_group_id", vdsGroupID)); } @Override public List<VDS> getAllForStoragePool(Guid storagePoolId) { return getCallsHandler().executeReadList("GetVdsByStoragePoolId", new VdsRowMapper(), getCustomMapSqlParameterSource() .addValue("storage_pool_id", storagePoolId)); } static final class VdsRowMapper implements ParameterizedRowMapper<VDS> { @Override public VDS mapRow(final ResultSet rs, final int rowNum) throws SQLException { final VDS entity = new VDS(); entity.setvds_id(Guid.createGuidFromString(rs .getString("vds_id"))); entity.setvds_group_id(Guid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs.getString("vds_group_name")); entity.setvds_group_description(rs .getString("vds_group_description")); entity.setvds_name(rs.getString("vds_name")); entity.setManagmentIp(rs.getString("ip")); entity.setUniqueId(rs.getString("vds_unique_id")); entity.setserver_SSL_enabled(rs .getBoolean("server_SSL_enabled")); entity.sethost_name(rs.getString("host_name")); entity.setport(rs.getInt("port")); entity.setstatus(VDSStatus.forValue(rs.getInt("status"))); entity.setcpu_cores((Integer) rs.getObject("cpu_cores")); entity.setcpu_model(rs.getString("cpu_model")); entity.setcpu_user(rs.getDouble("cpu_user")); entity.setcpu_speed_mh(rs.getDouble("cpu_speed_mh")); entity.setif_total_speed(rs.getString("if_total_speed")); entity.setkvm_enabled((Boolean) rs.getObject("kvm_enabled")); entity.setphysical_mem_mb((Integer) rs .getObject("physical_mem_mb")); entity.setcpu_idle(rs.getDouble("cpu_idle")); entity.setcpu_load(rs.getDouble("cpu_load")); entity.setcpu_sys(rs.getDouble("cpu_sys")); entity.setmem_commited((Integer) rs.getObject("mem_commited")); entity.setvm_active((Integer) rs.getObject("vm_active")); entity.setvm_count((Integer) rs.getObject("vm_count")); entity.setvms_cores_count((Integer) rs .getObject("vms_cores_count")); entity.setvm_migrating((Integer) rs.getObject("vm_migrating")); entity.setusage_cpu_percent((Integer) rs .getObject("usage_cpu_percent")); entity.setusage_mem_percent((Integer) rs .getObject("usage_mem_percent")); entity.setusage_network_percent((Integer) rs .getObject("usage_network_percent")); entity.setreserved_mem((Integer) rs.getObject("reserved_mem")); entity.setguest_overhead((Integer) rs .getObject("guest_overhead")); entity.setsoftware_version(rs.getString("software_version")); entity.setversion_name(rs.getString("version_name")); entity.setbuild_name(rs.getString("build_name")); entity.setprevious_status(VDSStatus.forValue(rs .getInt("previous_status"))); entity.setmem_available(rs.getLong("mem_available")); entity.setmem_shared(rs.getLong("mem_shared")); entity.setvds_type(VDSType.forValue(rs.getInt("vds_type"))); entity.setcpu_flags(rs.getString("cpu_flags")); entity.setvds_group_cpu_name(rs.getString("vds_group_cpu_name")); entity.setstorage_pool_id(Guid.createGuidFromString(rs .getString("storage_pool_id"))); entity.setstorage_pool_name(rs.getString("storage_pool_name")); entity.setselection_algorithm(VdsSelectionAlgorithm.forValue(rs .getInt("selection_algorithm"))); entity.setpending_vcpus_count((Integer) rs .getObject("pending_vcpus_count")); entity.setcpu_over_commit_time_stamp(DbFacadeUtils.fromDate(rs .getTimestamp("cpu_over_commit_time_stamp"))); entity.sethypervisor_type(HypervisorType.forValue(rs .getInt("hypervisor_type"))); entity.sethigh_utilization(rs.getInt("high_utilization")); entity.setlow_utilization(rs.getInt("low_utilization")); entity.setcpu_over_commit_duration_minutes(rs .getInt("cpu_over_commit_duration_minutes")); entity.setpending_vmem_size(rs.getInt("pending_vmem_size")); entity.setvds_strength(rs.getInt("vds_strength")); entity.setmax_vds_memory_over_commit(rs .getInt("max_vds_memory_over_commit")); entity.setcpu_sockets((Integer) rs.getObject("cpu_sockets")); entity.setvds_spm_id((Integer) rs.getObject("vds_spm_id")); entity.setnet_config_dirty((Boolean) rs .getObject("net_config_dirty")); entity.setpm_type(rs.getString("pm_type")); entity.setpm_user(rs.getString("pm_user")); entity.setpm_password(VdsStaticDAODbFacadeImpl.decryptPassword(rs.getString("pm_password"))); entity.setpm_port((Integer) rs.getObject("pm_port")); entity.setpm_options(rs.getString("pm_options")); entity.setpm_enabled(rs.getBoolean("pm_enabled")); entity.setspm_status(VdsSpmStatus.forValue(rs .getInt("spm_status"))); entity.setswap_free(rs.getLong("swap_free")); entity.setswap_total(rs.getLong("swap_total")); entity.setksm_cpu_percent((Integer) rs .getObject("ksm_cpu_percent")); entity.setksm_pages(rs.getLong("ksm_pages")); entity.setksm_state((Boolean) rs.getObject("ksm_state")); entity.setsupported_cluster_levels(rs .getString("supported_cluster_levels")); entity.setsupported_engines(rs.getString("supported_engines")); entity.setvds_group_compatibility_version(new Version(rs .getString("vds_group_compatibility_version"))); entity.sethost_os(rs.getString("host_os")); entity.setkvm_version(rs.getString("kvm_version")); entity.setspice_version(rs.getString("spice_version")); entity.setkernel_version(rs.getString("kernel_version")); entity.setIScsiInitiatorName(rs .getString("iscsi_initiator_name")); entity.setTransparentHugePagesState(VdsTransparentHugePagesState .forValue(rs.getInt("transparent_hugepages_state"))); entity.setAnonymousHugePages(rs.getInt("anonymous_hugepages")); entity.setHooksStr(rs.getString("hooks")); entity.setNonOperationalReason(NonOperationalReason.forValue(rs .getInt("non_operational_reason"))); entity.setOtpValidity(rs.getLong("otp_validity")); return entity; } } }