Shubhendu Tripathi has uploaded a new change for review. Change subject: gluster: WIP-Entities for gluster volume snapshot ......................................................................
gluster: WIP-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/GlusterVolumeSnapshotConfigParam.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotEntity.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotType.java A packaging/dbscripts/upgrade/03_04_0400_add_gluster_volume_snapshot_tables.sql A packaging/dbscripts/upgrade/03_04_0410_add_snapshot_group_id_to_gluster_volumes.sql 6 files changed, 283 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/23199/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..b2b025e --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterSnapshotStatus.java @@ -0,0 +1,9 @@ +package org.ovirt.engine.core.common.businessentities.gluster; + +public enum GlusterSnapshotStatus { + INIT, + UNKNOWN, + IN_USE, + RESTORED, + DECOMMISSIONED; +} 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 new file mode 100644 index 0000000..990e60c --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotConfigParam.java @@ -0,0 +1,82 @@ +package org.ovirt.engine.core.common.businessentities.gluster; + +import org.ovirt.engine.core.common.businessentities.IVdcQueryable; +import org.ovirt.engine.core.compat.Guid; + +public class GlusterVolumeSnapshotConfigParam extends IVdcQueryable { + private static final long serialVersionUID = 3432543544365L; + private Guid entityId; + private GlusterVolumeSnapshotType entityType; + private String paramName; + private String paramValue; + + public Guid getEntityId() { + return entityId; + } + + public void setEntityId(Guid entityId) { + this.entityId = entityId; + } + + public GlusterVolumeSnapshotType getEntityType() { + return entityType; + } + + public void setEntityType(GlusterVolumeSnapshotType entityType) { + this.entityType = entityType; + } + + 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 + (entityId == null ? 0 : entityId.hashCode()); + result = prime * result + (entityType == null ? 0 : entityType.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 instanceof GlusterVolumeSnapshotConfigParam)) { + return false; + } + + GlusterVolumeSnapshotConfigParam config = (GlusterVolumeSnapshotConfigParam)obj; + + if (!(entityId.equals(config.getEntityId()))) { + return false; + } + + if (entityType != config.getEntityType()) { + return false; + } + + if (!(paramName.equals(config.getParamName()))) { + return false; + } + + if (!(paramValue.equals(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..599fc5a --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotEntity.java @@ -0,0 +1,125 @@ +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.compat.Guid; + +public class GlusterVolumeSnapshotEntity extends IVdcQueryable implements BusinessEntityWithStatus<Guid, GlusterSnapshotStatus> { + private static final long serialVersionUID = 2355384696827317288L; + private Guid snapshotId; + private String snapshotName; + private Guid referenceEntityId; + private GlusterVolumeSnapshotType snapshotType; + 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 String getSnapshotName() { + return snapshotName; + } + public void setSnapshotName(String snapshotName) { + this.snapshotName = snapshotName; + } + public Guid getReferenceEntityId() { + return referenceEntityId; + } + public void setReferenceEntityId(Guid referenceEntityId) { + this.referenceEntityId = referenceEntityId; + } + public GlusterVolumeSnapshotType getSnapshotType() { + return snapshotType; + } + public void setSnapshotType(GlusterVolumeSnapshotType snapshotType) { + this.snapshotType = snapshotType; + } + 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 + ((snapshotName == null) ? 0 : snapshotName.hashCode()); + result = prime * result + ((referenceEntityId == null) ? 0 : referenceEntityId.hashCode()); + result = prime * result + ((snapshotType == null) ? 0 : snapshotType.hashCode()); + result = prime * result + ((status == null) ? 0 : status.hashCode()); + result = prime * result + ((createdAt == null) ? 0 : createdAt.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 instanceof GlusterVolumeSnapshotEntity)) { + return false; + } + + GlusterVolumeSnapshotEntity volume = (GlusterVolumeSnapshotEntity) obj; + + if (!(snapshotId.equals(volume.getSnapshotId()))) { + return false; + } + + if (!(snapshotName.equals(volume.getSnapshotName()))) { + return false; + } + + if (!(referenceEntityId.equals(volume.getReferenceEntityId()))) { + return false; + } + + if (snapshotType != volume.getSnapshotType()) { + return false; + } + + if (!(createdAt.equals(volume.getCreatedAt()))) { + return false; + } + + if (!(description.equals(volume.getDescription()))) { + return false; + } + + if (status != volume.getStatus()) { + return false; + } + + return true; + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotType.java new file mode 100644 index 0000000..311847f --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSnapshotType.java @@ -0,0 +1,16 @@ +package org.ovirt.engine.core.common.businessentities.gluster; + +public enum GlusterVolumeSnapshotType { + VOLUME_SNAPSHOT("V"), + SNAPSHOT_GROUP_SNAPSHOT("C"); + + private String type; + + GlusterVolumeSnapshotType(String sType) { + type = sType; + } + + public String getSnapshotType() { + return this.type; + } +} diff --git a/packaging/dbscripts/upgrade/03_04_0400_add_gluster_volume_snapshot_tables.sql b/packaging/dbscripts/upgrade/03_04_0400_add_gluster_volume_snapshot_tables.sql new file mode 100644 index 0000000..9990c4d --- /dev/null +++ b/packaging/dbscripts/upgrade/03_04_0400_add_gluster_volume_snapshot_tables.sql @@ -0,0 +1,49 @@ +Create or replace FUNCTION __temp_fn_db_add_gluster_volume_snapshot_tables() +RETURNS void +AS $function$ +BEGIN + -- Add gluster_volume_snapshot_groups table + CREATE TABLE gluster_volume_snapshot_groups + ( + id UUID NOT NULL, + cluster_id UUID NOT NULL REFERENCES vds_groups(vds_group_id) ON DELETE CASCADE, + snapshot_group_name VARCHAR(1000) NOT NULL, + description VARCHAR(1024), + _create_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT LOCALTIMESTAMP, + _update_date TIMESTAMP WITH TIME ZONE, + CONSTRAINT pk_gluster_volume_snapshot_groups PRIMARY KEY(id) + ) WITH OIDS; + CREATE INDEX IDX_gluster_volume_snapshot_groups_cluster_id ON gluster_volume_snapshot_groups(cluster_id); + CREATE UNIQUE INDEX IDX_gluster_volume_snapshot_groups_unique ON gluster_volume_snapshot_groups(id, cluster_id); + + -- Add gluster_volume_snapshots table + CREATE TABLE gluster_volume_snapshots + ( + snapshot_id UUID NOT NULL, + snapshot_name VARCHAR(1000) NOT NULL, + reference_entity_id UUID NOT NULL, + snapshot_type CHAR, + created_at TIMESTAMP WITH TIME ZONE, + description VARCHAR(1024), + status VARCHAR(32), + _create_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT LOCALTIMESTAMP, + _update_date TIMESTAMP WITH TIME ZONE, + CONSTRAINT pk_gluster_volume_snapshots PRIMARY KEY(snapshot_id) + ) WITH OIDS; + CREATE UNIQUE INDEX IDX_gluster_volume_snapshots_unique ON gluster_volume_snapshots(snapshot_id, reference_entity_id); + + -- Add gluster_volume_snapshot_config table + CREATE TABLE gluster_volume_snapshot_config + ( + entity_id UUID NOT NULL, + entity_type CHAR, + 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(entity_id) + +END; $function$ +LANGUAGE plpgsql; + +select __temp_fn_db_add_gluster_volume_snapshot_tables(); +drop function __temp_fn_db_add_gluster_volume_snapshot_tables(); diff --git a/packaging/dbscripts/upgrade/03_04_0410_add_snapshot_group_id_to_gluster_volumes.sql b/packaging/dbscripts/upgrade/03_04_0410_add_snapshot_group_id_to_gluster_volumes.sql new file mode 100644 index 0000000..6888413 --- /dev/null +++ b/packaging/dbscripts/upgrade/03_04_0410_add_snapshot_group_id_to_gluster_volumes.sql @@ -0,0 +1,2 @@ +SELECT fn_db_add_column('gluster_volumes', 'snapshot_group_id', 'UUID'); +SELECT fn_db_create_constraint('gluster_volumes', 'fk_gluster_volume_snapshot_group_id', 'FOREIGN KEY (snapshot_id) REFERENCES gluster_volume_snapshot_groups(id) ON DELETE SET NULL'); -- To view, visit http://gerrit.ovirt.org/23199 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idafc74e193fd0d957ee134b53231d99c4ab2e9d8 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Shubhendu Tripathi <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
