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

Reply via email to