Sahina Bose has uploaded a new change for review. Change subject: engine: Query to get bricks given a server id ......................................................................
engine: Query to get bricks given a server id Query to get a list of bricks associated with a server given a server id. This is needed to show the list of bricks associated with server in a bricks tab Also refactored the dao to use a view instead of getting server name from a jdbc query. Change-Id: I045c027617f1a50270f2462def56dc74f52435cf Signed-off-by: Sahina Bose <sab...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeBricksByServerIdQuery.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.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/gluster/GlusterBrickDaoDbFacadeImpl.java M packaging/dbscripts/create_views.sql M packaging/dbscripts/gluster_volumes_sp.sql 6 files changed, 49 insertions(+), 21 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/75/19975/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeBricksByServerIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeBricksByServerIdQuery.java new file mode 100644 index 0000000..2e84a23 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeBricksByServerIdQuery.java @@ -0,0 +1,18 @@ +package org.ovirt.engine.core.bll.gluster; + +import org.ovirt.engine.core.common.queries.IdQueryParameters; + +/** + * Query to fetch a list of gluster volume bricks associated with given serverId + */ +public class GetGlusterVolumeBricksByServerIdQuery<P extends IdQueryParameters> extends GlusterQueriesCommandBase<P> { + + public GetGlusterVolumeBricksByServerIdQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + getQueryReturnValue().setReturnValue(getGlusterBrickDao().getGlusterVolumeBricksByServerId(getParameters().getId())); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java index 75fb743..771aefd 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterBrickEntity.java @@ -29,6 +29,8 @@ @NotNull(message = "VALIDATION.GLUSTER.VOLUME.ID.NOT_NULL", groups = { AddBrick.class }) private Guid volumeId; + private String volumeName; + @NotNull(message = "VALIDATION.GLUSTER.VOLUME.BRICK.SERVER_ID.NOT_NULL", groups = { CreateEntity.class }) private Guid serverId; @@ -196,4 +198,12 @@ this.asyncTask = asyncTask; } + public String getVolumeName() { + return volumeName; + } + + public void setVolumeName(String volumeName) { + this.volumeName = volumeName; + } + } 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 7a78824..eeb2c5e 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 @@ -257,6 +257,7 @@ GetGlusterVolumeById, GetGlusterVolumeOptionsInfo, GetGlusterVolumeBricks, + GetGlusterVolumeBricksByServerId, GetGlusterBrickById, GetGlusterServersForImport, GetAddedGlusterServers, diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java index 32a3f05..042d5f4 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterBrickDaoDbFacadeImpl.java @@ -96,34 +96,24 @@ .addValue("status", EnumUtils.nameOrNull(brick.getStatus())); } - /** - * This is not a static class since it invokes a non-static method (getHostNameOfServer) of the parent class. - */ - private final class GlusterBrickRowMapper implements RowMapper<GlusterBrickEntity> { + private static final class GlusterBrickRowMapper implements RowMapper<GlusterBrickEntity> { @Override public GlusterBrickEntity mapRow(ResultSet rs, int rowNum) throws SQLException { GlusterBrickEntity brick = new GlusterBrickEntity(); brick.setId(getGuidDefaultEmpty(rs, "id")); brick.setVolumeId(getGuidDefaultEmpty(rs, "volume_id")); + brick.setVolumeName(rs.getString("volume_name")); Guid serverId = getGuidDefaultEmpty(rs, "server_id"); brick.setServerId(serverId); - // Update the brick with server name. This is useful as the brick is typically represented in the form - // serverName:brickDirectory though the database table (gluster_volume_bricks) stores just the server id - brick.setServerName(getHostNameOfServer(serverId)); + brick.setServerName(rs.getString("vds_name")); brick.setBrickDirectory(rs.getString("brick_dir")); brick.setBrickOrder(rs.getInt("brick_order")); brick.setStatus(GlusterStatus.valueOf(rs.getString("status"))); brick.getAsyncTask().setTaskId(getGuid(rs, "task_id")); return brick; - } - - private String getHostNameOfServer(Guid serverId) { - return jdbcTemplate.queryForObject("select host_name from vds_static where vds_id = ?", - String.class, - serverId.getUuid()); } } diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index b3893b4..076730e 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -1560,6 +1560,15 @@ FROM gluster_volumes INNER JOIN vds_groups ON gluster_volumes.cluster_id = vds_groups.vds_group_id; +CREATE OR REPLACE VIEW gluster_volumes_bricks_view +AS +SELECT gluster_volume_bricks.*, + vds_static.vds_name AS vds_name, + gluster_volumes.vol_name AS volume_name +FROM gluster_volume_bricks +INNER JOIN vds_static ON vds_static.vds_id = gluster_volume_bricks.server_id +INNER JOIN gluster_volumes ON gluster_volumes.id = gluster_volume_bricks.volume_id; + CREATE OR REPLACE VIEW gluster_volume_task_steps AS SELECT step.*, diff --git a/packaging/dbscripts/gluster_volumes_sp.sql b/packaging/dbscripts/gluster_volumes_sp.sql index 52833c2..2a8de10 100644 --- a/packaging/dbscripts/gluster_volumes_sp.sql +++ b/packaging/dbscripts/gluster_volumes_sp.sql @@ -163,44 +163,44 @@ LANGUAGE plpgsql; Create or replace FUNCTION GetGlusterBrickById(v_id UUID) - RETURNS SETOF gluster_volume_bricks STABLE + RETURNS SETOF gluster_volumes_bricks_view STABLE AS $procedure$ BEGIN RETURN QUERY SELECT * - FROM gluster_volume_bricks + FROM gluster_volumes_bricks_view WHERE id = v_id; END; $procedure$ LANGUAGE plpgsql; Create or replace FUNCTION GetBricksByGlusterVolumeGuid(v_volume_id UUID) - RETURNS SETOF gluster_volume_bricks STABLE + RETURNS SETOF gluster_volumes_bricks_view STABLE AS $procedure$ BEGIN RETURN QUERY SELECT * - FROM gluster_volume_bricks + FROM gluster_volumes_bricks_view WHERE volume_id = v_volume_id ORDER BY brick_order; END; $procedure$ LANGUAGE plpgsql; Create or replace FUNCTION GetGlusterVolumeBricksByServerGuid(v_server_id UUID) -RETURNS SETOF gluster_volume_bricks STABLE +RETURNS SETOF gluster_volumes_bricks_view STABLE AS $procedure$ BEGIN RETURN QUERY SELECT * -FROM gluster_volume_bricks +FROM gluster_volumes_bricks_view WHERE server_id = v_server_id ORDER BY brick_order; END; $procedure$ LANGUAGE plpgsql; Create or replace FUNCTION GetBrickByServerIdAndDirectory(v_server_id UUID, v_brick_dir VARCHAR(4096)) - RETURNS SETOF gluster_volume_bricks STABLE + RETURNS SETOF gluster_volumes_bricks_view STABLE AS $procedure$ BEGIN RETURN QUERY SELECT * - FROM gluster_volume_bricks + FROM gluster_volumes_bricks_view WHERE server_id = v_server_id AND brick_dir = v_brick_dir; END; $procedure$ -- To view, visit http://gerrit.ovirt.org/19975 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I045c027617f1a50270f2462def56dc74f52435cf Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sahina Bose <sab...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches