Shubhendu Tripathi has uploaded a new change for review.

Change subject: gluster: DAO for volume snapshot scheduling
......................................................................

gluster: DAO for volume snapshot scheduling

Introduced DAO for gluster volume snapshot scheduling

Change-Id: Ie44116df49acc302bfc1b745c00535c1fb0174ad
Signed-off-by: Shubhendu Tripathi <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
A 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDao.java
A 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDaoDBFacadeImpl.java
M backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties
A 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDaoTest.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
A packaging/dbscripts/gluster_volume_snapshot_schedule_sp.sql
A 
packaging/dbscripts/upgrade/03_05_1290_add_snapshot_scheduled_flag_to_gluster_volume.sql
10 files changed, 342 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/92/39292/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
index dfe911b..0b1f4f2 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
@@ -72,6 +72,8 @@
 
     private Integer snapMaxLimit;
 
+    private Boolean snapshotScheduled;
+
     private GlusterStatus status;
 
     // Gluster and NFS are enabled by default
@@ -93,6 +95,7 @@
         volumeType = GlusterVolumeType.DISTRIBUTE;
         asyncTask = new GlusterAsyncTask();
         advancedDetails = new GlusterVolumeAdvancedDetails();
+        snapshotScheduled = Boolean.valueOf(false);
     }
 
     @Override
@@ -319,6 +322,14 @@
         this.snapMaxLimit = limit;
     }
 
+    public Boolean getSnapshotScheduled() {
+        return this.snapshotScheduled;
+    }
+
+    public void setSnapshotScheduled(Boolean snapshotScheduled) {
+        this.snapshotScheduled = snapshotScheduled;
+    }
+
     public void removeBrick(GlusterBrickEntity GlusterBrick) {
         bricks.remove(GlusterBrick);
     }
@@ -400,6 +411,7 @@
         result = prime * result + ((advancedDetails == null) ? 0 : 
advancedDetails.hashCode());
         result = prime * result + ((snapshotsCount == null) ? 0 : 
snapshotsCount.hashCode());
         result = prime * result + ((snapMaxLimit == null) ? 0 : 
snapMaxLimit.hashCode());
+        result = prime * result + ((snapshotScheduled == null) ? 0 : 
snapshotScheduled.hashCode());
         return result;
     }
 
@@ -455,6 +467,10 @@
             return false;
         }
 
+        if (!ObjectUtils.objectsEqual(snapshotScheduled, 
volume.getSnapshotScheduled())) {
+            return false;
+        }
+
         return true;
     }
 
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
index fb3d15f..6d23756 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
@@ -128,6 +128,7 @@
 import org.ovirt.engine.core.dao.gluster.GlusterServerServiceDao;
 import org.ovirt.engine.core.dao.gluster.GlusterServiceDao;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
+import org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotScheduleDao;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotConfigDao;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotDao;
 import org.ovirt.engine.core.dao.network.InterfaceDao;
@@ -891,6 +892,15 @@
     }
 
     /**
+     * Returns the singleton instance of {@link 
GlusterVolumeSnapshotScheduleDao}
+     *
+     * @return the dao
+     */
+    public GlusterVolumeSnapshotScheduleDao 
getGlusterVolumeSnapshotScheduleDao() {
+        return getDao(GlusterVolumeSnapshotScheduleDao.class);
+    }
+
+    /**
      * Returns the singleton instance of {@link GlusterVolumeDao}.
      *
      * @return the dao
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
index 7d70724..e7f4ed8 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeDaoDbFacadeImpl.java
@@ -377,6 +377,7 @@
             entity.setReplicaCount(rs.getInt("replica_count"));
             entity.setStripeCount(rs.getInt("stripe_count"));
             entity.setSnapshotsCount(rs.getInt("snapshot_count"));
+            entity.setSnapshotScheduled(rs.getBoolean("snapshot_scheduled"));
             return entity;
         }
     }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDao.java
new file mode 100644
index 0000000..f4c1e56
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDao.java
@@ -0,0 +1,21 @@
+package org.ovirt.engine.core.dao.gluster;
+
+import java.util.List;
+
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotSchedule;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.DAO;
+import org.ovirt.engine.core.dao.SearchDAO;
+
+public interface GlusterVolumeSnapshotScheduleDao extends DAO, 
SearchDAO<GlusterVolumeSnapshotSchedule> {
+    public void save(GlusterVolumeSnapshotSchedule schedule);
+
+    public GlusterVolumeSnapshotSchedule getByVolumeId(Guid volumeId);
+
+    public void removeByVolumeId(Guid volumeId);
+
+    @Override
+    public List<GlusterVolumeSnapshotSchedule> getAllWithQuery(String query);
+
+    public void updateScheduleByVolumeId(Guid volumeId, 
GlusterVolumeSnapshotSchedule schedule);
+}
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDaoDBFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDaoDBFacadeImpl.java
new file mode 100644
index 0000000..6361457
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDaoDBFacadeImpl.java
@@ -0,0 +1,89 @@
+package org.ovirt.engine.core.dao.gluster;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Date;
+import java.util.List;
+
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotSchedule;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotScheduleRecurrence;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.BaseDAODbFacade;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+
+public class GlusterVolumeSnapshotScheduleDaoDBFacadeImpl extends 
BaseDAODbFacade implements GlusterVolumeSnapshotScheduleDao {
+
+    private static final RowMapper<GlusterVolumeSnapshotSchedule> 
snapshotScheduleRowMapper =
+            new GlusterVolumeSnapshotScheduleRowMapper();
+
+    @Override
+    public void save(GlusterVolumeSnapshotSchedule schedule) {
+        
getCallsHandler().executeModification("InsertGlusterVolumeSnapshotSchedule",
+                createFullParameterMapper(schedule));
+    }
+
+    @Override
+    public GlusterVolumeSnapshotSchedule getByVolumeId(Guid volumeId) {
+        GlusterVolumeSnapshotSchedule schedule =
+                
getCallsHandler().executeRead("GetGlusterVolumeSnapshotScheduleByVolumeId", 
snapshotScheduleRowMapper,
+                        getCustomMapSqlParameterSource().addValue("volume_id", 
volumeId));
+
+        return schedule;
+    }
+
+    @Override
+    public void removeByVolumeId(Guid volumeId) {
+        
getCallsHandler().executeModification("DeleteGlusterVolumeSnapshotScheduleByVolumeId",
+                getCustomMapSqlParameterSource().addValue("volume_id", 
volumeId));
+    }
+
+    @Override
+    public List<GlusterVolumeSnapshotSchedule> getAllWithQuery(String query) {
+        List<GlusterVolumeSnapshotSchedule> schedules = 
jdbcTemplate.query(query, snapshotScheduleRowMapper);
+        return schedules;
+    }
+
+    @Override
+    public void updateScheduleByVolumeId(Guid volumeId, 
GlusterVolumeSnapshotSchedule schedule) {
+        
getCallsHandler().executeModification("UpdateGlusterVolumeSnapshotScheduleByVolumeId",
+                createFullParameterMapper(schedule));
+    }
+
+    private static final class GlusterVolumeSnapshotScheduleRowMapper 
implements RowMapper<GlusterVolumeSnapshotSchedule> {
+        @Override
+        public GlusterVolumeSnapshotSchedule mapRow(ResultSet rs, int rowNum) 
throws SQLException {
+            GlusterVolumeSnapshotSchedule schedule = new 
GlusterVolumeSnapshotSchedule();
+
+            schedule.setClusterId(getGuidDefaultEmpty(rs, "cluster_id"));
+            schedule.setVolumeId(getGuidDefaultEmpty(rs, "volume_id"));
+            schedule.setJobId(rs.getString("job_id"));
+            
schedule.setSnapshotNamePrefix(rs.getString("snapshot_name_prefix"));
+            
schedule.setSnapshotDescription(rs.getString("snapshot_description"));
+            
schedule.setRecurrence(GlusterVolumeSnapshotScheduleRecurrence.from(rs.getString("recurrence")));
+            schedule.setTimeZone(rs.getString("time_zone"));
+            schedule.setInterval(rs.getInt("interval"));
+            schedule.setStartDate(rs.getTimestamp("start_date") == null ? null 
: new Date(rs.getTimestamp("start_date")
+                    .getTime()));
+            schedule.setExecutionTime(rs.getTime("execution_time"));
+            schedule.setDays(rs.getString("days"));
+            schedule.setEndByDate(rs.getTimestamp("end_by"));
+
+            return schedule;
+        }
+    }
+
+    protected MapSqlParameterSource 
createFullParameterMapper(GlusterVolumeSnapshotSchedule schedule) {
+        return getCustomMapSqlParameterSource().addValue("volume_id", 
schedule.getVolumeId())
+                .addValue("job_id", schedule.getJobId())
+                .addValue("snapshot_name_prefix", 
schedule.getSnapshotNamePrefix())
+                .addValue("snapshot_description", 
schedule.getSnapshotDescription())
+                .addValue("recurrence", schedule.getRecurrence().toString())
+                .addValue("time_zone", schedule.getTimeZone())
+                .addValue("interval", schedule.getInterval())
+                .addValue("start_date", schedule.getStartDate())
+                .addValue("execution_time", schedule.getExecutionTime())
+                .addValue("days", schedule.getDays())
+                .addValue("end_by", schedule.getEndByDate());
+    }
+}
diff --git 
a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties 
b/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties
index a518e9d..d70bb1d 100644
--- a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties
+++ b/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties
@@ -59,6 +59,7 @@
 GlusterBrickDao=org.ovirt.engine.core.dao.gluster.GlusterBrickDaoDbFacadeImpl
 
GlusterVolumeSnapshotDao=org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotDaoDbFacadeImpl
 
GlusterVolumeSnapshotConfigDao=org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotConfigDaoDbFacadeImpl
+GlusterVolumeSnapshotScheduleDao=org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotScheduleDaoDBFacadeImpl
 GlusterOptionDao=org.ovirt.engine.core.dao.gluster.GlusterOptionDaoDbFacadeImpl
 
ImageStorageDomainMapDao=org.ovirt.engine.core.dao.ImageStorageDomainMapDaoDbFacadeImpl
 
VmAndTemplatesGenerationsDAO=org.ovirt.engine.core.dao.VmAndTemplatesGenerationsDbFacadeImpl
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDaoTest.java
new file mode 100644
index 0000000..ac3ac21
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterVolumeSnapshotScheduleDaoTest.java
@@ -0,0 +1,87 @@
+package org.ovirt.engine.core.dao.gluster;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.sql.Time;
+import java.util.Date;
+
+import org.junit.Test;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotSchedule;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotScheduleRecurrence;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.BaseDAOTestCase;
+
+public class GlusterVolumeSnapshotScheduleDaoTest extends BaseDAOTestCase {
+
+    private static final Guid CLUSTER_ID = new 
Guid("ae956031-6be2-43d6-bb8f-5191c9253314");
+    private static final Guid VOLUME_ID_1 = new 
Guid("0c3f45f6-3fe9-4b35-a30c-be0d1a835ea8");
+    private static final Guid VOLUME_ID_2 = new 
Guid("b2cb2f73-fab3-4a42-93f0-d5e4c069a43e");
+
+    private GlusterVolumeSnapshotScheduleDao dao;
+    private GlusterVolumeSnapshotSchedule existingSchedule;
+    private GlusterVolumeSnapshotSchedule newSchedule;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        dao = dbFacade.getGlusterVolumeSnapshotScheduleDao();
+        existingSchedule = dao.getByVolumeId(VOLUME_ID_1);
+    }
+
+    @Test
+    public void testSaveAndGetByVolumeId() {
+        GlusterVolumeSnapshotSchedule schedule = 
dao.getByVolumeId(VOLUME_ID_2);
+        assertNull(schedule);
+
+        newSchedule = insertSnapshotSchedule();
+        schedule = dao.getByVolumeId(VOLUME_ID_2);
+        assertNotNull(schedule);
+        assertEquals(schedule, newSchedule);
+    }
+
+    private GlusterVolumeSnapshotSchedule insertSnapshotSchedule() {
+        GlusterVolumeSnapshotSchedule schedule = new 
GlusterVolumeSnapshotSchedule();
+        schedule.setClusterId(CLUSTER_ID);
+        schedule.setVolumeId(VOLUME_ID_2);
+        schedule.setJobId("test_job_id");
+        schedule.setSnapshotNamePrefix("prefix");
+        schedule.setSnapshotDescription("desc");
+        schedule.setInterval(0);
+        schedule.setRecurrence(GlusterVolumeSnapshotScheduleRecurrence.DAILY);
+        schedule.setTimeZone("Asia/Calcutta");
+        schedule.setExecutionTime(new Time(10, 30, 0));
+        schedule.setEndByDate(null);
+        dao.save(schedule);
+        return schedule;
+    }
+
+    @Test
+    public void testGetByVolumeId() {
+        GlusterVolumeSnapshotSchedule schedule = 
dao.getByVolumeId(VOLUME_ID_1);
+        assertNotNull(schedule);
+        assertEquals(schedule, existingSchedule);
+    }
+
+    @Test
+    public void testRemoveByVolumeId() {
+        dao.removeByVolumeId(VOLUME_ID_1);
+        GlusterVolumeSnapshotSchedule schedule = 
dao.getByVolumeId(VOLUME_ID_1);
+        assertNull(schedule);
+    }
+
+    @Test
+    public void testUpdateShceduleByVolumeId() {
+        GlusterVolumeSnapshotSchedule schedule = 
dao.getByVolumeId(VOLUME_ID_1);
+        schedule.setRecurrence(GlusterVolumeSnapshotScheduleRecurrence.HOURLY);
+        schedule.setStartDate(new Date());
+        schedule.setInterval(0);
+
+        dao.updateScheduleByVolumeId(VOLUME_ID_1, schedule);
+
+        GlusterVolumeSnapshotSchedule fetchedSchedule = 
dao.getByVolumeId(VOLUME_ID_1);
+        assertNotNull(fetchedSchedule);
+        assertEquals(fetchedSchedule, schedule);
+    }
+}
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 67d88d9..4f5a98b 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -6586,6 +6586,33 @@
         </row>
     </table>
 
+    <table name="gluster_volume_snapshot_schedules">
+        <column>volume_id</column>
+        <column>job_id</column>
+        <column>snapshot_name_prefix</column>
+        <column>snapshot_description</column>
+        <column>recurrence</column>
+        <column>time_zone</column>
+        <column>interval</column>
+        <column>start_date</column>
+        <column>execution_time</column>
+        <column>days</column>
+        <column>end_by</column>
+        <row>
+            <value>0c3f45f6-3fe9-4b35-a30c-be0d1a835ea8</value>
+            <value>0c3f45f6-3fe9-4b35-a30c-be0d1a835eb9</value>
+            <value>prefix</value>
+            <value>desc</value>
+            <value>INTERVAL</value>
+            <value>Asia/Calcutta</value>
+            <value>10</value>
+            <null/>
+            <null/>
+            <null/>
+            <null/>
+        </row>
+    </table>
+
     <table name="gluster_volume_bricks">
         <column>id</column>
         <column>volume_id</column>
diff --git a/packaging/dbscripts/gluster_volume_snapshot_schedule_sp.sql 
b/packaging/dbscripts/gluster_volume_snapshot_schedule_sp.sql
new file mode 100644
index 0000000..8eb638b
--- /dev/null
+++ b/packaging/dbscripts/gluster_volume_snapshot_schedule_sp.sql
@@ -0,0 +1,89 @@
+/* ----------------------------------------------------------------
+ Stored procedures for database operations on Gluster Volume Snapshot
+ related tables:
+      - gluster_volume_snapshot_schedules
+----------------------------------------------------------------*/
+
+Create or replace FUNCTION InsertGlusterVolumeSnapshotSchedule(v_volume_id 
UUID,
+                                                               v_job_id 
VARCHAR(256),
+                                                               
v_snapshot_name_prefix VARCHAR(128),
+                                                               
v_snapshot_description VARCHAR(1024),
+                                                               v_recurrence 
VARCHAR(128),
+                                                               v_time_zone 
VARCHAR(128),
+                                                               v_interval 
INTEGER,
+                                                               v_start_date 
TIMESTAMP WITH TIME ZONE,
+                                                               
v_execution_time TIME,
+                                                               v_days 
VARCHAR(256),
+                                                               v_end_by 
TIMESTAMP WITH TIME ZONE)
+    RETURNS VOID
+    AS $procedure$
+BEGIN
+    INSERT INTO gluster_volume_snapshot_schedules (volume_id, job_id, 
snapshot_name_prefix,
+        snapshot_description, recurrence, time_zone, interval,
+        start_date, execution_time, days, end_by)
+    VALUES (v_volume_id, v_job_id, v_snapshot_name_prefix,
+        v_snapshot_description, v_recurrence, v_time_zone, v_interval,
+        v_start_date, v_execution_time, v_days, v_end_by);
+
+    UPDATE gluster_volumes
+    SET snapshot_scheduled = true
+    WHERE id = v_volume_id;
+END; $procedure$
+LANGUAGE plpgsql;
+
+Create or replace FUNCTION 
GetGlusterVolumeSnapshotScheduleByVolumeId(v_volume_id UUID)
+    RETURNS SETOF gluster_volume_snapshot_schedules_view STABLE
+    AS $procedure$
+BEGIN
+    RETURN QUERY SELECT *
+    FROM gluster_volume_snapshot_schedules_view
+    WHERE volume_id = v_volume_id;
+END; $procedure$
+LANGUAGE plpgsql;
+
+Create or replace FUNCTION 
DeleteGlusterVolumeSnapshotScheduleByVolumeId(v_volume_id UUID)
+    RETURNS VOID
+    AS $procedure$
+BEGIN
+    DELETE FROM gluster_volume_snapshot_schedules
+    WHERE volume_id = v_volume_id;
+
+    UPDATE gluster_volumes
+    SET snapshot_scheduled = false
+    WHERE id = v_volume_id;
+END; $procedure$
+LANGUAGE plpgsql;
+
+Create or replace FUNCTION 
UpdateGlusterVolumeSnapshotScheduleByVolumeId(v_volume_id UUID,
+                                                                v_job_id 
VARCHAR(256),
+                                                                
v_snapshot_name_prefix VARCHAR(128),
+                                                                
v_snapshot_description VARCHAR(1024),
+                                                                v_recurrence 
VARCHAR(128),
+                                                                v_time_zone 
VARCHAR(128),
+                                                                v_interval 
INTEGER,
+                                                                v_start_date 
TIMESTAMP WITH TIME ZONE,
+                                                                
v_execution_time TIME,
+                                                                v_days 
VARCHAR(256),
+                                                                v_end_by 
TIMESTAMP WITH TIME ZONE)
+    RETURNS VOID
+    AS $procedure$
+BEGIN
+    UPDATE gluster_volume_snapshot_schedules
+    SET job_id = v_job_id,
+        snapshot_name_prefix = v_snapshot_name_prefix,
+        snapshot_description = v_snapshot_description,
+        recurrence = v_recurrence,
+        time_zone = v_time_zone,
+        interval = v_interval,
+        start_date = v_start_date,
+        execution_time = v_execution_time,
+        days = v_days,
+        end_by = v_end_by,
+        _update_date = LOCALTIMESTAMP
+    WHERE volume_id = v_volume_id;
+
+    UPDATE gluster_volumes
+    SET snapshot_scheduled = true
+    WHERE id = v_volume_id;
+END; $procedure$
+LANGUAGE plpgsql;
diff --git 
a/packaging/dbscripts/upgrade/03_05_1290_add_snapshot_scheduled_flag_to_gluster_volume.sql
 
b/packaging/dbscripts/upgrade/03_05_1290_add_snapshot_scheduled_flag_to_gluster_volume.sql
new file mode 100644
index 0000000..ef69f20
--- /dev/null
+++ 
b/packaging/dbscripts/upgrade/03_05_1290_add_snapshot_scheduled_flag_to_gluster_volume.sql
@@ -0,0 +1 @@
+SELECT fn_db_add_column('gluster_volumes', 'snapshot_scheduled', 'boolean 
DEFAULT false');


-- 
To view, visit https://gerrit.ovirt.org/39292
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie44116df49acc302bfc1b745c00535c1fb0174ad
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