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

Reply via email to