Shubhendu Tripathi has uploaded a new change for review. Change subject: gluster: DAO for volume snapshot config maintenance ......................................................................
gluster: DAO for volume snapshot config maintenance Added DAO for gluster volume snapshot configuration maintenance Change-Id: Ic0854984eed0f72226aa732a651be50bf8dda9fb Signed-off-by: Shubhendu Tripathi <shtri...@redhat.com> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfigParam.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotConfigDao.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotConfigDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties M packaging/dbscripts/gluster_volume_snapshot_sp.sql M packaging/dbscripts/upgrade/03_06_0520_add_gluster_volume_snapshot_tables.sql 7 files changed, 201 insertions(+), 10 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/35303/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfigParam.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfigParam.java index c493016..2b69cab 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfigParam.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfigParam.java @@ -6,7 +6,7 @@ public class GlusterVolumeSnapshotConfigParam extends IVdcQueryable { private static final long serialVersionUID = 3432543544365L; private Guid clusterId; - private Guid entityId; + private Guid volumeId; private String paramName; private String paramValue; @@ -18,12 +18,12 @@ this.clusterId = cid; } - public Guid getEntityId() { - return entityId; + public Guid getVolumeId() { + return volumeId; } - public void setEntityId(Guid entityId) { - this.entityId = entityId; + public void setVolumeId(Guid volumeId) { + this.volumeId = volumeId; } public String getParamName() { @@ -47,7 +47,7 @@ final int prime = 31; int result = 1; result = prime * result + (clusterId == null ? 0 : clusterId.hashCode()); - result = prime * result + (entityId == null ? 0 : entityId.hashCode()); + result = prime * result + (volumeId == null ? 0 : volumeId.hashCode()); result = prime * result + (paramName == null ? 0 : paramName.hashCode()); result = prime * result + (paramValue == null ? 0 : paramValue.hashCode()); return result; @@ -61,11 +61,11 @@ GlusterVolumeSnapshotConfigParam config = (GlusterVolumeSnapshotConfigParam)obj; - if (!(clusterId.equals(config.getEntityId()))) { + if (!(clusterId.equals(config.getVolumeId()))) { return false; } - if (!(entityId.equals(config.getEntityId()))) { + if (!(volumeId.equals(config.getVolumeId()))) { return false; } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java index 4603ee5..2a96e56 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java @@ -131,6 +131,7 @@ import org.ovirt.engine.core.dao.gluster.GlusterServerServiceDao; import org.ovirt.engine.core.dao.gluster.GlusterServiceDao; import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao; +import org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotConfigDao; import org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotDao; import org.ovirt.engine.core.dao.network.InterfaceDao; import org.ovirt.engine.core.dao.network.NetworkClusterDao; @@ -888,6 +889,15 @@ } /** + * Returns the singleton instance of {@link GlusterVolumeSnapshotConfigDao} + * + * @return the dao + */ + public GlusterVolumeSnapshotConfigDao getGlusterVolumeSnapshotConfigDao() { + return getDao(GlusterVolumeSnapshotConfigDao.class); + } + + /** * Returns the singleton instance of {@link GlusterVolumeDao}. * * @return the dao diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotConfigDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotConfigDao.java new file mode 100644 index 0000000..9ae9f9f --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotConfigDao.java @@ -0,0 +1,26 @@ +package org.ovirt.engine.core.dao.gluster; + +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotConfigParam; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.DAO; +import org.ovirt.engine.core.dao.SearchDAO; + +public interface GlusterVolumeSnapshotConfigDao extends DAO, SearchDAO<GlusterVolumeSnapshotConfigParam> { + public void save(GlusterVolumeSnapshotConfigParam entity); + + public List<GlusterVolumeSnapshotConfigParam> GetGlusterVolumeSnapshotConfigByClusterId(Guid clusterId); + + public List<GlusterVolumeSnapshotConfigParam> GetGlusterVolumeSnapshotConfigByVolumeId(Guid clusterId, Guid volumeId); + + public GlusterVolumeSnapshotConfigParam GetGlusterVolumeSnapshotConfigByClusterIdAndName(Guid clusterId, + String paramName); + + public GlusterVolumeSnapshotConfigParam GetGlusterVolumeSnapshotConfigByVolumeIdAndName(Guid clusterId, + Guid volumeId, + String paramName); + + @Override + public List<GlusterVolumeSnapshotConfigParam> getAllWithQuery(String query); +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotConfigDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotConfigDaoDbFacadeImpl.java new file mode 100644 index 0000000..caccd44 --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotConfigDaoDbFacadeImpl.java @@ -0,0 +1,90 @@ +package org.ovirt.engine.core.dao.gluster; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotConfigParam; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.BaseDAODbFacade; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; + +public class GlusterVolumeSnapshotConfigDaoDbFacadeImpl extends BaseDAODbFacade implements GlusterVolumeSnapshotConfigDao { + + private static final RowMapper<GlusterVolumeSnapshotConfigParam> snapshotConfigRowMapper = + new GlusterVolumeSnapshotConfigRowMapper(); + + public void save(GlusterVolumeSnapshotConfigParam config) { + getCallsHandler().executeModification("InsertGlusterVolumeSnapshotConfig", createFullParametersMapper(config)); + } + + public List<GlusterVolumeSnapshotConfigParam> GetGlusterVolumeSnapshotConfigByClusterId(Guid clusterId) { + List<GlusterVolumeSnapshotConfigParam> configs = + getCallsHandler().executeReadList("GetGlusterVolumeSnapshotConfigByClusterId", snapshotConfigRowMapper, + getCustomMapSqlParameterSource() + .addValue("cluster_id", clusterId)); + return configs; + } + + public List<GlusterVolumeSnapshotConfigParam> GetGlusterVolumeSnapshotConfigByVolumeId(Guid clusterId, Guid volumeId) { + List<GlusterVolumeSnapshotConfigParam> configs = + getCallsHandler().executeReadList("GetGlusterVolumeSnapshotConfigByVolumeId", snapshotConfigRowMapper, + getCustomMapSqlParameterSource() + .addValue("cluster_id", clusterId) + .addValue("volume_id", volumeId)); + return configs; + } + + public GlusterVolumeSnapshotConfigParam GetGlusterVolumeSnapshotConfigByClusterIdAndName(Guid clusterId, + String paramName) { + GlusterVolumeSnapshotConfigParam config = + getCallsHandler().executeRead("GetGlusterVolumeSnapshotConfigByClusterIdAndName", + snapshotConfigRowMapper, + getCustomMapSqlParameterSource() + .addValue("cluster_id", clusterId) + .addValue("param_name", paramName)); + return config; + } + + public GlusterVolumeSnapshotConfigParam GetGlusterVolumeSnapshotConfigByVolumeIdAndName(Guid clusterId, + Guid volumeId, + String paramName) { + GlusterVolumeSnapshotConfigParam config = + getCallsHandler().executeRead("GetGlusterVolumeSnapshotConfigByVolumeIdAndName", + snapshotConfigRowMapper, + getCustomMapSqlParameterSource() + .addValue("cluster_id", clusterId) + .addValue("volume_id", volumeId) + .addValue("param_name", paramName)); + + return config; + } + + private static final class GlusterVolumeSnapshotConfigRowMapper implements RowMapper<GlusterVolumeSnapshotConfigParam> { + @Override + public GlusterVolumeSnapshotConfigParam mapRow(ResultSet rs, int rowNum) + throws SQLException { + GlusterVolumeSnapshotConfigParam config = new GlusterVolumeSnapshotConfigParam(); + config.setClusterId(getGuidDefaultEmpty(rs, "cluster_id")); + config.setVolumeId(getGuidDefaultEmpty(rs, "volume_id")); + config.setParamName(rs.getString("param_name")); + config.setParamValue(rs.getString("param_value")); + return config; + } + } + + protected MapSqlParameterSource createFullParametersMapper(GlusterVolumeSnapshotConfigParam config) { + return getCustomMapSqlParameterSource() + .addValue("cluster_id", config.getClusterId()) + .addValue("volume_id", config.getVolumeId()) + .addValue("param_name", config.getParamName()) + .addValue("param_value", config.getParamValue()); + } + + @Override + public List<GlusterVolumeSnapshotConfigParam> getAllWithQuery(String query) { + List<GlusterVolumeSnapshotConfigParam> configs = jdbcTemplate.query(query, snapshotConfigRowMapper); + return configs; + } +} diff --git a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties b/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties index aceaaa3..7920192 100644 --- a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties +++ b/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties @@ -59,6 +59,7 @@ GlusterVolumeDao=org.ovirt.engine.core.dao.gluster.GlusterVolumeDaoDbFacadeImpl GlusterBrickDao=org.ovirt.engine.core.dao.gluster.GlusterBrickDaoDbFacadeImpl GlusterVolumeSnapshotDao=org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotDaoDbFacadeImpl +GlusterVolumeSnapshotConfigDao=org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotConfigDaoDbFacadeImpl GlusterOptionDao=org.ovirt.engine.core.dao.gluster.GlusterOptionDaoDbFacadeImpl ImageStorageDomainMapDao=org.ovirt.engine.core.dao.ImageStorageDomainMapDaoDbFacadeImpl VmAndTemplatesGenerationsDAO=org.ovirt.engine.core.dao.VmAndTemplatesGenerationsDbFacadeImpl diff --git a/packaging/dbscripts/gluster_volume_snapshot_sp.sql b/packaging/dbscripts/gluster_volume_snapshot_sp.sql index eebc5b1..dea2260 100644 --- a/packaging/dbscripts/gluster_volume_snapshot_sp.sql +++ b/packaging/dbscripts/gluster_volume_snapshot_sp.sql @@ -144,4 +144,60 @@ END; $procedure$ LANGUAGE plpgsql; +Create or replace FUNCTION InsertGlusterVolumeSnapshotConfig(v_cluster_id UUID, + v_volume_id UUID, + v_param_name VARCHAR(128), + v_param_value VARCHAR(128)) + RETURNS VOID + AS $procedure$ +BEGIN + INSERT INTO gluster_volume_snapshot_config (cluster_id, volume_id, param_name, param_value) + VALUES (v_cluster_id, v_volume_id, v_param_name, v_param_value); +END; $procedure$ +LANGUAGE plpgsql; + +Create or replace FUNCTION GetGlusterVolumeSnapshotConfigByClusterId(v_cluster_id UUID) + RETURNS SETOF gluster_volume_snapshot_config STABLE + AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM gluster_volume_snapshot_config + WHERE cluster_id = v_cluster_id; +END; $procedure$ +LANGUAGE plpgsql; + +Create or replace FUNCTION GetGlusterVolumeSnapshotConfigByVolumeId(v_cluster_id UUID, v_volume_id UUID) +RETURNS SETOF gluster_volume_snapshot_config STABLE +AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM gluster_volume_snapshot_config + WHERE cluster_id = v_cluster_id and volume_id = v_volume_id; +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION GetGlusterVolumeSnapshotConfigByClusterIdAndName(v_cluster_id UUID, + v_param_name VARCHAR(128)) +RETURNS SETOF gluster_volume_snapshot_config STABLE + AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM gluster_volume_snapshot_config + WHERE cluster_id = v_cluster_id and volume_id IS NULL and param_name = v_param_name; +END; $procedure$ +LANGUAGE plpgsql; + + +Create or replace FUNCTION GetGlusterVolumeSnapshotConfigByVolumeIdAndName(v_cluster_id UUID, + v_volume_id UUID, + v_param_name VARCHAR(128)) +RETURNS SETOF gluster_volume_snapshot_config STABLE + AS $procedure$ +BEGIN + RETURN QUERY SELECT * + FROM gluster_volume_snapshot_config + WHERE cluster_id = v_cluster_id and volume_id = v_volume_id and param_name = v_param_name; +END; $procedure$ +LANGUAGE plpgsql; diff --git a/packaging/dbscripts/upgrade/03_06_0520_add_gluster_volume_snapshot_tables.sql b/packaging/dbscripts/upgrade/03_06_0520_add_gluster_volume_snapshot_tables.sql index c4506f0..6fee602 100644 --- a/packaging/dbscripts/upgrade/03_06_0520_add_gluster_volume_snapshot_tables.sql +++ b/packaging/dbscripts/upgrade/03_06_0520_add_gluster_volume_snapshot_tables.sql @@ -17,11 +17,11 @@ CREATE TABLE gluster_volume_snapshot_config ( cluster_id UUID NOT NULL, - entity_id UUID NOT NULL, + volume_id UUID, param_name VARCHAR(128) NOT NULL, param_value VARCHAR(128) ) WITH OIDS; -CREATE UNIQUE INDEX IDX_gluster_volume_snapshot_config_unique ON gluster_volume_snapshot_config(cluster_id, entity_id, param_name); +CREATE UNIQUE INDEX IDX_gluster_volume_snapshot_config_unique ON gluster_volume_snapshot_config(cluster_id, volume_id, param_name); ALTER TABLE ONLY gluster_volume_snapshots ADD CONSTRAINT fk_gluster_volume_snapshots_cluster_id FOREIGN KEY (cluster_id) REFERENCES @@ -31,3 +31,11 @@ ALTER TABLE ONLY gluster_volume_snapshots ADD CONSTRAINT fk_gluster_volume_snapshots_volume_id FOREIGN KEY (volume_id) REFERENCES gluster_volumes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY gluster_volume_snapshot_config + ADD CONSTRAINT fk_gluster_volume_snapshot_config_cluster_id FOREIGN KEY (cluster_id) REFERENCES + vds_groups(vds_group_id) ON DELETE CASCADE; + +ALTER TABLE ONLY gluster_volume_snapshot_config + ADD CONSTRAINT fk_gluster_volume_snapshot_config_volume_id FOREIGN KEY (volume_id) REFERENCES + gluster_volumes(id) ON DELETE CASCADE; -- To view, visit http://gerrit.ovirt.org/35303 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic0854984eed0f72226aa732a651be50bf8dda9fb Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Shubhendu Tripathi <shtri...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches