Shubhendu Tripathi has uploaded a new change for review. Change subject: gluster: Entities for gluster volume snapshot ......................................................................
gluster: Entities for gluster volume snapshot Entities changes for gluster volume snapshot feature in oVirt. Change-Id: Idafc74e193fd0d957ee134b53231d99c4ab2e9d8 Signed-off-by: Shubhendu Tripathi <[email protected]> --- A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterSnapshotStatus.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfig.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotEntity.java M packaging/dbscripts/create_views.sql A packaging/dbscripts/upgrade/03_05_1250_add_gluster_volume_snapshot_tables.sql 5 files changed, 282 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/39269/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterSnapshotStatus.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterSnapshotStatus.java new file mode 100644 index 0000000..1912c1f --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterSnapshotStatus.java @@ -0,0 +1,17 @@ +package org.ovirt.engine.core.common.businessentities.gluster; + +public enum GlusterSnapshotStatus { + STARTED, + STOPPED, + UNKNOWN; + + public static GlusterSnapshotStatus from(String status) { + for (GlusterSnapshotStatus snapshotStatus : values()) { + if (snapshotStatus.name().equals(status)) { + return snapshotStatus; + } + } + + return GlusterSnapshotStatus.UNKNOWN; + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfig.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfig.java new file mode 100644 index 0000000..78e923e --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfig.java @@ -0,0 +1,93 @@ +package org.ovirt.engine.core.common.businessentities.gluster; + +import org.ovirt.engine.core.common.businessentities.IVdcQueryable; +import org.ovirt.engine.core.common.utils.ObjectUtils; +import org.ovirt.engine.core.compat.Guid; + +public class GlusterVolumeSnapshotConfig extends IVdcQueryable { + private static final long serialVersionUID = 3432543544365L; + private Guid clusterId; + private Guid volumeId; + private String paramName; + private String paramValue; + + public GlusterVolumeSnapshotConfig() { + } + + public GlusterVolumeSnapshotConfig(Guid clusterId, Guid volumeId, String paramName, String paramValue) { + this.clusterId = clusterId; + this.volumeId = volumeId; + this.paramName = paramName; + this.paramValue = paramValue; + } + + public Guid getClusterId() { + return this.clusterId; + } + + public void setClusterId(Guid cid) { + this.clusterId = cid; + } + + public Guid getVolumeId() { + return volumeId; + } + + public void setVolumeId(Guid volumeId) { + this.volumeId = volumeId; + } + + public String getParamName() { + return paramName; + } + + public void setParamName(String paramName) { + this.paramName = paramName; + } + + public String getParamValue() { + return paramValue; + } + + public void setParamValue(String paramValue) { + this.paramValue = paramValue; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (clusterId == null ? 0 : clusterId.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; + } + + @Override + public boolean equals(Object obj) { + if (obj == null || !(obj instanceof GlusterVolumeSnapshotConfig)) { + return false; + } + + GlusterVolumeSnapshotConfig config = (GlusterVolumeSnapshotConfig) obj; + + if (!(ObjectUtils.objectsEqual(clusterId, config.getClusterId()))) { + return false; + } + + if (!(ObjectUtils.objectsEqual(volumeId, config.getVolumeId()))) { + return false; + } + + if (!(ObjectUtils.objectsEqual(paramName, config.getParamName()))) { + return false; + } + + if (!(ObjectUtils.objectsEqual(paramValue, config.getParamValue()))) { + return false; + } + + return true; + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotEntity.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotEntity.java new file mode 100644 index 0000000..edc3907 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotEntity.java @@ -0,0 +1,136 @@ +package org.ovirt.engine.core.common.businessentities.gluster; + +import java.util.Date; + +import org.ovirt.engine.core.common.businessentities.BusinessEntityWithStatus; +import org.ovirt.engine.core.common.businessentities.IVdcQueryable; +import org.ovirt.engine.core.common.utils.ObjectUtils; +import org.ovirt.engine.core.compat.Guid; + +public class GlusterVolumeSnapshotEntity extends IVdcQueryable implements BusinessEntityWithStatus<Guid, GlusterSnapshotStatus> { + private static final long serialVersionUID = 2355384696827317288L; + private Guid snapshotId; + private Guid clusterId; + private Guid volumeId; + private String snapshotName; + private Date createdAt; + private String description; + private GlusterSnapshotStatus status; + + @Override + public Guid getId() { + return snapshotId; + } + + @Override + public void setId(Guid id) { + snapshotId = id; + } + + public Guid getSnapshotId() { + return snapshotId; + } + + public void setSnapshotId(Guid snapshotId) { + this.snapshotId = snapshotId; + } + + public Guid getClusterId() { + return this.clusterId; + } + + public void setClusterId(Guid cid) { + this.clusterId = cid; + } + + public Guid getVolumeId() { + return volumeId; + } + + public void setVolumeId(Guid volumeId) { + this.volumeId = volumeId; + } + + public String getSnapshotName() { + return snapshotName; + } + + public void setSnapshotName(String snapshotName) { + this.snapshotName = snapshotName; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Override + public GlusterSnapshotStatus getStatus() { + return status; + } + + @Override + public void setStatus(GlusterSnapshotStatus status) { + this.status = status; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((snapshotId == null) ? 0 : snapshotId.hashCode()); + result = prime * result + ((clusterId == null) ? 0 : clusterId.hashCode()); + result = prime * result + ((volumeId == null) ? 0 : volumeId.hashCode()); + result = prime * result + ((snapshotName == null) ? 0 : snapshotName.hashCode()); + result = prime * result + ((status == null) ? 0 : status.hashCode()); + result = prime * result + ((description == null) ? 0 : description.hashCode()); + result = prime * result + ((status == null) ? 0 : status.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (obj == null || !(obj instanceof GlusterVolumeSnapshotEntity)) { + return false; + } + + GlusterVolumeSnapshotEntity snapshot = (GlusterVolumeSnapshotEntity) obj; + + if (!(ObjectUtils.objectsEqual(snapshotId, snapshot.getSnapshotId()))) { + return false; + } + + if (!(ObjectUtils.objectsEqual(clusterId, snapshot.getClusterId()))) { + return false; + } + + if (!(ObjectUtils.objectsEqual(volumeId, snapshot.getVolumeId()))) { + return false; + } + + if (!(ObjectUtils.objectsEqual(snapshotName, snapshot.getSnapshotName()))) { + return false; + } + + if (!(ObjectUtils.objectsEqual(description, snapshot.getDescription()))) { + return false; + } + + if (status != snapshot.getStatus()) { + return false; + } + + return true; + } +} diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index e63f5c1..a96c845 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -1722,6 +1722,14 @@ FROM gluster_volumes INNER JOIN vds_groups ON gluster_volumes.cluster_id = vds_groups.vds_group_id; +CREATE OR REPLACE VIEW gluster_volume_snapshots_view +AS +SELECT gluster_volume_snapshots.*, + gluster_volumes.cluster_id AS cluster_id, + gluster_volumes.vol_name as volume_name +FROM gluster_volume_snapshots +INNER JOIN gluster_volumes ON gluster_volume_snapshots.volume_id = gluster_volumes.id; + CREATE OR REPLACE VIEW gluster_volume_bricks_view AS SELECT gluster_volume_bricks.*, diff --git a/packaging/dbscripts/upgrade/03_05_1250_add_gluster_volume_snapshot_tables.sql b/packaging/dbscripts/upgrade/03_05_1250_add_gluster_volume_snapshot_tables.sql new file mode 100644 index 0000000..d2b9e25 --- /dev/null +++ b/packaging/dbscripts/upgrade/03_05_1250_add_gluster_volume_snapshot_tables.sql @@ -0,0 +1,28 @@ +-- Add gluster_volume_snapshots table +CREATE TABLE gluster_volume_snapshots +( + snapshot_id UUID NOT NULL, + volume_id UUID NOT NULL, + snapshot_name VARCHAR(1000) NOT NULL, + description VARCHAR(1024), + status VARCHAR(32), + _create_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT LOCALTIMESTAMP, + _update_date TIMESTAMP WITH TIME ZONE, + CONSTRAINT pk_snapshot_id PRIMARY KEY(snapshot_id) +) WITH OIDS; +CREATE UNIQUE INDEX IDX_gluster_volume_snapshots_unique ON gluster_volume_snapshots(volume_id, snapshot_name); + +-- Add gluster_volume_snapshot_config table +CREATE TABLE gluster_volume_snapshot_config +( + cluster_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, volume_id, param_name); + +SELECT fn_db_create_constraint('gluster_volume_snapshots', 'fk_gluster_volume_snapshots_volume_id', 'FOREIGN KEY (volume_id) REFERENCES gluster_volumes(id) ON DELETE CASCADE'); +SELECT fn_db_create_constraint('gluster_volume_snapshot_config', 'fk_gluster_volume_snapshot_config_cluster_id', 'FOREIGN KEY (cluster_id) REFERENCES vds_groups(vds_group_id) ON DELETE CASCADE'); +SELECT fn_db_create_constraint('gluster_volume_snapshot_config', 'fk_gluster_volume_snapshot_config_volume_id', 'FOREIGN KEY (volume_id) REFERENCES gluster_volumes(id) ON DELETE CASCADE'); + -- To view, visit https://gerrit.ovirt.org/39269 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idafc74e193fd0d957ee134b53231d99c4ab2e9d8 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5-gluster Gerrit-Owner: Shubhendu Tripathi <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
