Sahina Bose has uploaded a new change for review.

Change subject: engine: Georep status detail changes
......................................................................

engine: Georep status detail changes

Changes corresponding to gluster's georep status
detail changes

Change-Id: Id05fa1d8537bcd3a0a80f1765f142dab575f43ba
Signed-off-by: Sahina Bose <sab...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java
M packaging/dbscripts/gluster_georep_sp.sql
A packaging/dbscripts/upgrade/03_06_1280_alter_georep_session_details.sql
7 files changed, 223 insertions(+), 114 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/40207/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java
index d714388..e1079eb 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterGeoRepSessionDetails.java
@@ -2,8 +2,8 @@
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.Objects;
 
-import org.ovirt.engine.core.common.utils.ObjectUtils;
 import org.ovirt.engine.core.compat.Guid;
 
 public class GlusterGeoRepSessionDetails implements Serializable{
@@ -17,16 +17,16 @@
     private GeoRepSessionStatus status;
     private String checkPointStatus;
     private GeoRepCrawlStatus crawlStatus;
-    private Long filesSynced;
-    private Long filesPending;
-    private Long bytesPending;
-    private Long deletesPending;
-    private Long filesSkipped;
+    private Long dataOpsPending;
+    private Long metaOpsPending;
+    private Long entryOpsPending;
+    private Long failures;
     private Date updatedAt;
+    private Date lastSyncedAt;
+    private Date checkPointTime;
+    private Date checkPointCompletedAt;
+    private boolean checkpointCompleted;
 
-    public Long getFilesSynced() {
-        return filesSynced;
-    }
 
     public Guid getMasterBrickId() {
         return masterBrickId;
@@ -84,40 +84,68 @@
         this.updatedAt = updatedAt;
     }
 
-    public void setFilesSynced(Long filesSynced) {
-        this.filesSynced = filesSynced;
+    public Long getDataOpsPending() {
+        return dataOpsPending;
     }
 
-    public Long getFilesPending() {
-        return filesPending;
+    public void setDataOpsPending(Long dataOpsPending) {
+        this.dataOpsPending = dataOpsPending;
     }
 
-    public void setFilesPending(Long filesPending) {
-        this.filesPending = filesPending;
+    public Long getMetaOpsPending() {
+        return metaOpsPending;
     }
 
-    public Long getBytesPending() {
-        return bytesPending;
+    public void setMetaOpsPending(Long metaOpsPending) {
+        this.metaOpsPending = metaOpsPending;
     }
 
-    public void setBytesPending(Long bytesPending) {
-        this.bytesPending = bytesPending;
+    public Long getEntryOpsPending() {
+        return entryOpsPending;
     }
 
-    public Long getDeletesPending() {
-        return deletesPending;
+    public void setEntryOpsPending(Long entryOpsPending) {
+        this.entryOpsPending = entryOpsPending;
     }
 
-    public void setDeletesPending(Long deletesPending) {
-        this.deletesPending = deletesPending;
+    public Date getLastSyncedAt() {
+        return lastSyncedAt;
     }
 
-    public Long getFilesSkipped() {
-        return filesSkipped;
+    public void setLastSyncedAt(Date lastSyncedAt) {
+        this.lastSyncedAt = lastSyncedAt;
     }
 
-    public void setFilesSkipped(Long filesSkipped) {
-        this.filesSkipped = filesSkipped;
+    public Date getCheckPointTime() {
+        return checkPointTime;
+    }
+
+    public void setCheckPointTime(Date checkPointTime) {
+        this.checkPointTime = checkPointTime;
+    }
+
+    public Date getCheckPointCompletedAt() {
+        return checkPointCompletedAt;
+    }
+
+    public void setCheckPointCompletedAt(Date checkPointCompletedAt) {
+        this.checkPointCompletedAt = checkPointCompletedAt;
+    }
+
+    public boolean isCheckpointCompleted() {
+        return checkpointCompleted;
+    }
+
+    public void setCheckpointCompleted(boolean checkpointCompleted) {
+        this.checkpointCompleted = checkpointCompleted;
+    }
+
+    public Long getFailures() {
+        return failures;
+    }
+
+    public void setFailures(Long failures) {
+        this.failures = failures;
     }
 
     public Guid getSessionId() {
@@ -132,19 +160,33 @@
     public boolean equals(Object obj) {
         return (obj != null) &&
                 (obj instanceof GlusterGeoRepSessionDetails) &&
-                ObjectUtils.objectsEqual(getSessionId(), 
((GlusterGeoRepSessionDetails) obj).getSessionId()) &&
-                ObjectUtils.objectsEqual(getMasterBrickId(), 
((GlusterGeoRepSessionDetails) obj).getMasterBrickId()) &&
-                ObjectUtils.objectsEqual(getSlaveNodeUuid(), 
((GlusterGeoRepSessionDetails) obj).getSlaveNodeUuid()) &&
-                ObjectUtils.objectsEqual(getSlaveHostName(), 
((GlusterGeoRepSessionDetails) obj).getSlaveHostName()) &&
-                ObjectUtils.objectsEqual(getStatus(), 
((GlusterGeoRepSessionDetails) obj).getStatus()) &&
-                ObjectUtils.objectsEqual(getCheckPointStatus(), 
((GlusterGeoRepSessionDetails) obj).getCheckPointStatus()) &&
-                ObjectUtils.objectsEqual(getCrawlStatus(), 
((GlusterGeoRepSessionDetails) obj).getCrawlStatus()) &&
-                ObjectUtils.objectsEqual(getFilesSynced(), 
((GlusterGeoRepSessionDetails) obj).getFilesSynced()) &&
-                ObjectUtils.objectsEqual(getFilesPending(), 
((GlusterGeoRepSessionDetails) obj).getFilesPending()) &&
-                ObjectUtils.objectsEqual(getFilesSkipped(), 
((GlusterGeoRepSessionDetails) obj).getFilesSkipped()) &&
-                ObjectUtils.objectsEqual(getBytesPending(), 
((GlusterGeoRepSessionDetails) obj).getBytesPending()) &&
-                ObjectUtils.objectsEqual(getDeletesPending(), 
((GlusterGeoRepSessionDetails) obj).getDeletesPending()) &&
-                ObjectUtils.objectsEqual(getUpdatedAt(), 
((GlusterGeoRepSessionDetails) obj).getUpdatedAt());
+                Objects.equals(getSessionId(), ((GlusterGeoRepSessionDetails) 
obj).getSessionId())
+                &&
+                Objects.equals(getMasterBrickId(), 
((GlusterGeoRepSessionDetails) obj).getMasterBrickId())
+                &&
+                Objects.equals(getSlaveNodeUuid(), 
((GlusterGeoRepSessionDetails) obj).getSlaveNodeUuid())
+                &&
+                Objects.equals(getSlaveHostName(), 
((GlusterGeoRepSessionDetails) obj).getSlaveHostName())
+                &&
+                Objects.equals(getStatus(), ((GlusterGeoRepSessionDetails) 
obj).getStatus())
+                &&
+                Objects.equals(getCheckPointStatus(), 
((GlusterGeoRepSessionDetails) obj).getCheckPointStatus())
+                &&
+                Objects.equals(getCrawlStatus(), 
((GlusterGeoRepSessionDetails) obj).getCrawlStatus())
+                &&
+                Objects.equals(getDataOpsPending(), 
((GlusterGeoRepSessionDetails) obj).getDataOpsPending())
+                &&
+                Objects.equals(getMetaOpsPending(), 
((GlusterGeoRepSessionDetails) obj).getMetaOpsPending())
+                &&
+                Objects.equals(getEntryOpsPending(), 
((GlusterGeoRepSessionDetails) obj).getEntryOpsPending())
+                &&
+                Objects.equals(getCheckPointCompletedAt(),
+                        ((GlusterGeoRepSessionDetails) 
obj).getCheckPointCompletedAt()) &&
+                Objects.equals(getCheckPointTime(), 
((GlusterGeoRepSessionDetails) obj).getCheckPointTime()) &&
+                Objects.equals(getLastSyncedAt(), 
((GlusterGeoRepSessionDetails) obj).getLastSyncedAt()) &&
+                Objects.equals(getUpdatedAt(), ((GlusterGeoRepSessionDetails) 
obj).getUpdatedAt()) &&
+                Objects.equals(getFailures(), ((GlusterGeoRepSessionDetails) 
obj).getFailures()) &&
+                isCheckpointCompleted() == ((GlusterGeoRepSessionDetails) 
obj).isCheckpointCompleted();
     }
 
     @Override
@@ -158,11 +200,14 @@
         result = prime * result + ((status == null) ? 0 : status.hashCode());
         result = prime * result + ((checkPointStatus == null) ? 0 : 
checkPointStatus.hashCode());
         result = prime * result + ((crawlStatus == null) ? 0 : 
crawlStatus.hashCode());
-        result = prime * result + ((filesSynced == null) ? 0 : 
filesSynced.hashCode());
-        result = prime * result + ((filesPending == null) ? 0 : 
filesPending.hashCode());
-        result = prime * result + ((filesSkipped == null) ? 0 : 
filesSkipped.hashCode());
-        result = prime * result + ((bytesPending == null) ? 0 : 
bytesPending.hashCode());
-        result = prime * result + ((deletesPending == null) ? 0 : 
deletesPending.hashCode());
+        result = prime * result + ((dataOpsPending == null) ? 0 : 
dataOpsPending.hashCode());
+        result = prime * result + ((metaOpsPending == null) ? 0 : 
metaOpsPending.hashCode());
+        result = prime * result + ((entryOpsPending == null) ? 0 : 
entryOpsPending.hashCode());
+        result = prime * result + ((checkPointCompletedAt == null) ? 0 : 
checkPointCompletedAt.hashCode());
+        result = prime * result + ((checkPointTime == null) ? 0 : 
checkPointTime.hashCode());
+        result = prime * result + (checkpointCompleted ? 1 : 0);
+        result = prime * result + ((lastSyncedAt == null) ? 0 : 
lastSyncedAt.hashCode());
+        result = prime * result + ((failures == null) ? 0 : 
failures.hashCode());
         result = prime * result + ((updatedAt == null) ? 0 : 
updatedAt.hashCode());
         return result;
     }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
index 3155519..b187e0d 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoDbFacadeImpl.java
@@ -16,6 +16,7 @@
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSessionDetails;
 import org.ovirt.engine.core.common.utils.EnumUtils;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils;
 import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper;
 import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade;
 import org.springframework.jdbc.core.RowMapper;
@@ -85,11 +86,14 @@
             
entity.setStatus(GeoRepSessionStatus.valueOf(rs.getString("status")));
             entity.setCheckPointStatus(rs.getString("checkpoint_status"));
             
entity.setCrawlStatus(GeoRepCrawlStatus.valueOf(rs.getString("crawl_status")));
-            entity.setFilesSynced(rs.getLong("files_synced"));
-            entity.setFilesPending(rs.getLong("files_pending"));
-            entity.setBytesPending(rs.getLong("bytes_pending"));
-            entity.setDeletesPending(rs.getLong("deletes_pending"));
-            entity.setFilesSkipped(rs.getLong("files_skipped"));
+            entity.setDataOpsPending(rs.getLong("data_pending"));
+            entity.setMetaOpsPending(rs.getLong("meta_pending"));
+            entity.setEntryOpsPending(rs.getLong("entry_pending"));
+            entity.setFailures(rs.getLong("failures"));
+            
entity.setCheckpointCompleted(rs.getBoolean("is_checkpoint_completed"));
+            
entity.setCheckPointCompletedAt(DbFacadeUtils.fromDate(rs.getTimestamp("checkpoint_completed_time")));
+            
entity.setCheckPointTime(DbFacadeUtils.fromDate(rs.getTimestamp("checkpoint_time")));
+            
entity.setLastSyncedAt(DbFacadeUtils.fromDate(rs.getTimestamp("last_synced_at")));
             return entity;
         }
     }
@@ -193,11 +197,14 @@
                 .addValue("status", 
EnumUtils.nameOrNull(geoRepSessionDetails.getStatus()))
                 .addValue("checkpoint_status", 
geoRepSessionDetails.getCheckPointStatus())
                 .addValue("crawl_status", 
EnumUtils.nameOrNull(geoRepSessionDetails.getCrawlStatus()))
-                .addValue("files_synced", 
geoRepSessionDetails.getFilesSynced())
-                .addValue("files_pending", 
geoRepSessionDetails.getFilesPending())
-                .addValue("bytes_pending", 
geoRepSessionDetails.getBytesPending())
-                .addValue("deletes_pending", 
geoRepSessionDetails.getDeletesPending())
-                .addValue("files_skipped", 
geoRepSessionDetails.getFilesSkipped());
+                .addValue("data_pending", 
geoRepSessionDetails.getDataOpsPending())
+                .addValue("meta_pending", 
geoRepSessionDetails.getMetaOpsPending())
+                .addValue("entry_pending", 
geoRepSessionDetails.getEntryOpsPending())
+                .addValue("failures", geoRepSessionDetails.getFailures())
+                .addValue("is_checkpoint_completed", 
geoRepSessionDetails.isCheckpointCompleted())
+                .addValue("checkpoint_completed_time", 
geoRepSessionDetails.getCheckPointCompletedAt())
+                .addValue("checkpoint_time", 
geoRepSessionDetails.getCheckPointTime())
+                .addValue("last_synced_at", 
geoRepSessionDetails.getLastSyncedAt());
     }
 
 
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
index f28aaba..aadcbaf 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/gluster/GlusterGeoRepDaoTest.java
@@ -4,6 +4,7 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
+import java.util.Date;
 import java.util.List;
 
 import org.junit.Test;
@@ -45,11 +46,13 @@
         sessionDetails.setStatus(GeoRepSessionStatus.ACTIVE);
         sessionDetails.setCheckPointStatus("NA");
         sessionDetails.setCrawlStatus(GeoRepCrawlStatus.CHANGELOG_CRAWL);
-        sessionDetails.setFilesPending(100L);
-        sessionDetails.setDeletesPending(200L);
-        sessionDetails.setBytesPending(129832972545904L);
-        sessionDetails.setFilesSynced(2343958349L);
-        sessionDetails.setFilesSkipped(0L);
+        sessionDetails.setDataOpsPending(100L);
+        sessionDetails.setMetaOpsPending(40L);
+        sessionDetails.setEntryOpsPending(10L);
+        sessionDetails.setFailures(0L);
+        sessionDetails.setCheckpointCompleted(false);
+        sessionDetails.setCheckPointTime(new Date());
+        sessionDetails.setLastSyncedAt(new Date());
         return sessionDetails;
     }
 
@@ -120,15 +123,15 @@
     public void testUpdateDetails() {
         GlusterGeoRepSessionDetails sessionDetails = 
getGlusterGeoRepSessionDetails();
         dao.saveDetails(sessionDetails);
-        Long updatedBytesPending = 567888L;
-        Long updatedFilesPending = 50L;
-        sessionDetails.setFilesPending(updatedFilesPending);
+        Long entryOpsPending = 567888L;
+        Long dataOpsPending = 50L;
+        sessionDetails.setEntryOpsPending(entryOpsPending);
         sessionDetails.setCheckPointStatus("NEW");
-        sessionDetails.setBytesPending(updatedBytesPending);
+        sessionDetails.setDataOpsPending(dataOpsPending);
         dao.updateDetails(sessionDetails);
         List<GlusterGeoRepSessionDetails> fetchedSessionDetails = 
dao.getGeoRepSessionDetails(FixturesTool.GLUSTER_GEOREP_SESSION_ID);
-        assertEquals(updatedBytesPending, 
fetchedSessionDetails.get(0).getBytesPending());
-        assertEquals(updatedFilesPending, 
fetchedSessionDetails.get(0).getFilesPending());
+        assertEquals(entryOpsPending, 
fetchedSessionDetails.get(0).getEntryOpsPending());
+        assertEquals(dataOpsPending, 
fetchedSessionDetails.get(0).getDataOpsPending());
         assertEquals("NEW", 
fetchedSessionDetails.get(0).getCheckPointStatus());
     }
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java
index c041ca9..18dba5a 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusDetailForXmlRpc.java
@@ -1,45 +1,78 @@
 package org.ovirt.engine.core.vdsbroker.gluster;
 
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.TimeZone;
 
+import org.apache.commons.lang.StringUtils;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSessionDetails;
 
 public class GlusterVolumeGeoRepStatusDetailForXmlRpc extends 
GlusterVolumeGeoRepStatusForXmlRpc {
 
     private static final String SESSION_STATUS = "sessionStatus";
-    private static final String FILES_SYNCED = "filesSynced";
-    private static final String FILES_PENDING = "filesPending";
-    private static final String BYTES_PENDING = "bytesPending";
-    private static final String DELETES_PENDING = "deletesPending";
-    private static final String FILES_SKIPPED = "filesSkipped";
+    private static final String LAST_SYNCED = "lastSynced";
+    private static final String FAILURES = "failures";
+    private static final String DATA = "data";
+    private static final String META = "meta";
+    private static final String ENTRY = "entry";
+    private static final String TIMEZONE = "timezone";
+    private static final String CHECK_POINT_COMPLETION_TIME = 
"checkpointCompletionTime";
+    private static final String CHECK_POINT_COMPLETED = "checkpointCompleted";
+    private static final String CHECK_POINT_TIME = "checkpointTIme";
 
     private final ArrayList<GlusterGeoRepSessionDetails> geoRepDetails = new 
ArrayList<GlusterGeoRepSessionDetails>();
     private final List<GlusterGeoRepSession> geoRepSessions = new 
ArrayList<GlusterGeoRepSession>();
+
+    private Long parseSafeLong(Map<String, Object> innerMap, String key) {
+        return innerMap.containsKey(key) && StringUtils.isNumeric(key) ? 
Long.parseLong(innerMap.get(key).toString())
+                : null;
+    }
 
     @Override
     protected GlusterGeoRepSessionDetails getSessionDetails(Map<String, 
Object> innerMap) {
         GlusterGeoRepSessionDetails details = 
super.getSessionDetails(innerMap);
         if (details != null) {
-            Long filesSynced =
-                    innerMap.containsKey(FILES_SYNCED) ? 
Long.parseLong(innerMap.get(FILES_SYNCED).toString()) : null;
-            Long filesPending =
-                    innerMap.containsKey(FILES_PENDING) ? 
Long.parseLong(innerMap.get(FILES_PENDING).toString()) : null;
-            Long bytesPending =
-                    innerMap.containsKey(BYTES_PENDING) ? 
Long.parseLong(innerMap.get(BYTES_PENDING).toString()) : null;
-            Long deletesPending =
-                    innerMap.containsKey(DELETES_PENDING) ? 
Long.parseLong(innerMap.get(DELETES_PENDING).toString()) : null;
-            Long filesSkipped =
-                    innerMap.containsKey(FILES_SKIPPED) ? 
Long.parseLong(innerMap.get(FILES_SKIPPED).toString()) : null;
+            Long dataOpsPending = parseSafeLong(innerMap, DATA);
+            Long metaOpsPending = parseSafeLong(innerMap, META);
+            Long entryOpsPending = parseSafeLong(innerMap, ENTRY);
+            Long failures = parseSafeLong(innerMap, FAILURES);
+            details.setDataOpsPending(dataOpsPending);
+            details.setMetaOpsPending(metaOpsPending);
+            details.setEntryOpsPending(entryOpsPending);
+            details.setFailures(failures);
 
-            details.setFilesPending(filesPending);
-            details.setFilesSkipped(filesSkipped);
-            details.setFilesSynced(filesSynced);
-            details.setBytesPending(bytesPending);
-            details.setDeletesPending(deletesPending);
+            if (innerMap.containsKey(CHECK_POINT_COMPLETED)) {
+                
details.setCheckpointCompleted(Boolean.valueOf(innerMap.get(CHECK_POINT_COMPLETED).toString()));
+            }
+            String timezone = (innerMap.containsKey(TIMEZONE)) ? 
innerMap.get(TIMEZONE).toString() : null;
+            if (timezone != null) {
+                String lastSynced = (innerMap.containsKey(LAST_SYNCED)) ? 
innerMap.get(LAST_SYNCED).toString() : null;
+                String checkPointTime =
+                        (innerMap.containsKey(CHECK_POINT_TIME)) ? 
innerMap.get(CHECK_POINT_TIME).toString() : null;
+                String checkPointCompletionTime = 
(innerMap.containsKey(CHECK_POINT_COMPLETION_TIME)) ?
+                        innerMap.get(CHECK_POINT_COMPLETION_TIME).toString() : 
null;
+                DateFormat format = new SimpleDateFormat("MM/dd/yyyy 
HH:mm:ss");
+                format.setTimeZone(TimeZone.getTimeZone(timezone));
+                try {
+                    details.setLastSyncedAt(format.parse(lastSynced));
+                    
details.setCheckPointCompletedAt(format.parse(checkPointCompletionTime));
+                    details.setCheckPointTime(format.parse(checkPointTime));
+                } catch (ParseException e) {
+                    log.info("Error populating date fields for georep details 
for session '{}' of brick '{}' : {}",
+                            details.getSlaveHostName(),
+                            details.getMasterBrickId(),
+                            e.getMessage());
+                    log.debug("Exception", e);
+                }
+            }
+
         }
+        geoRepDetails.add(details);
         return details;
     }
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java
index f39f2f1..55abd29 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeGeoRepStatusForXmlRpc.java
@@ -19,7 +19,7 @@
 
 public class GlusterVolumeGeoRepStatusForXmlRpc extends StatusReturnForXmlRpc {
 
-    private static final Logger log = 
LoggerFactory.getLogger(GlusterVolumeGeoRepStatusForXmlRpc.class);
+    protected static final Logger log = 
LoggerFactory.getLogger(GlusterVolumeGeoRepStatusForXmlRpc.class);
 
     protected static final String VOLUME_NAME = "volumeName";
     protected static final String BRICKS = "bricks";
diff --git a/packaging/dbscripts/gluster_georep_sp.sql 
b/packaging/dbscripts/gluster_georep_sp.sql
index 54154b1..b25c9cc 100644
--- a/packaging/dbscripts/gluster_georep_sp.sql
+++ b/packaging/dbscripts/gluster_georep_sp.sql
@@ -43,20 +43,25 @@
                                                             v_status 
VARCHAR(20),
                                                             
v_checkpoint_status VARCHAR(20),
                                                             v_crawl_status 
VARCHAR(20),
-                                                            v_files_synced 
BIGINT,
-                                                            v_files_pending 
BIGINT,
-                                                            v_bytes_pending 
BIGINT,
-                                                            v_deletes_pending 
BIGINT,
-                                                            v_files_skipped 
BIGINT)
+                                                            v_data_pending 
BIGINT,
+                                                            v_entry_pending 
BIGINT,
+                                                            v_meta_pending 
BIGINT,
+                                                            v_failures BIGINT,
+                                                            v_last_synced_at 
TIMESTAMP,
+                                                            v_checkpoint_time 
TIMESTAMP,
+                                                            
v_checkpoint_completed_time TIMESTAMP,
+                                                            
v_is_checkpoint_completed BOOLEAN)
 RETURNS VOID
 AS $procedure$
 BEGIN
     INSERT INTO gluster_georep_session_details(session_id, master_brick_id, 
slave_host_name,
-    slave_host_uuid, status, checkpoint_status, crawl_status, files_synced, 
files_pending,
-    bytes_pending, deletes_pending, files_skipped)
+    slave_host_uuid, status, checkpoint_status, crawl_status, data_pending, 
entry_pending,
+    meta_pending, failures, last_synced_at, checkpoint_time, 
checkpoint_completed_time,
+    is_checkpoint_completed)
     VALUES (v_session_id, v_master_brick_id, v_slave_host_name,
-    v_slave_host_uuid, v_status, v_checkpoint_status, v_crawl_status, 
v_files_synced, v_files_pending,
-    v_bytes_pending, v_deletes_pending, v_files_skipped);
+    v_slave_host_uuid, v_status, v_checkpoint_status, v_crawl_status, 
v_data_pending, v_entry_pending,
+    v_meta_pending, v_failures, v_last_synced_at, v_checkpoint_time, 
v_checkpoint_completed_time,
+    v_is_checkpoint_completed);
 END; $procedure$
 LANGUAGE plpgsql;
 
@@ -67,11 +72,14 @@
                                                             v_status 
VARCHAR(20),
                                                             
v_checkpoint_status VARCHAR(20),
                                                             v_crawl_status 
VARCHAR(20),
-                                                            v_files_synced 
BIGINT,
-                                                            v_files_pending 
BIGINT,
-                                                            v_bytes_pending 
BIGINT,
-                                                            v_deletes_pending 
BIGINT,
-                                                            v_files_skipped 
BIGINT)
+                                                            v_data_pending 
BIGINT,
+                                                            v_entry_pending 
BIGINT,
+                                                            v_meta_pending 
BIGINT,
+                                                            v_failures BIGINT,
+                                                            v_last_synced_at 
TIMESTAMP,
+                                                            v_checkpoint_time 
TIMESTAMP,
+                                                            
v_checkpoint_completed_time TIMESTAMP,
+                                                            
v_is_checkpoint_completed BOOLEAN)
 RETURNS VOID
 AS $procedure$
 BEGIN
@@ -81,11 +89,14 @@
     status = v_status,
     checkpoint_status = v_checkpoint_status,
     crawl_status = v_crawl_status,
-    files_synced = v_files_synced,
-    files_pending = v_files_pending,
-    bytes_pending = v_bytes_pending,
-    deletes_pending = v_deletes_pending,
-    files_skipped = v_files_skipped,
+    data_pending = v_data_pending,
+    entry_pending = v_entry_pending,
+    meta_pending = v_meta_pending,
+    failures = v_failures,
+    last_synced_at = v_last_synced_at,
+    checkpoint_time = v_checkpoint_time,
+    checkpoint_completed_time = v_checkpoint_completed_time,
+    is_checkpoint_completed = v_is_checkpoint_completed,
     _update_date = LOCALTIMESTAMP
     WHERE session_id = v_session_id AND master_brick_id = v_master_brick_id;
 END; $procedure$
@@ -192,10 +203,7 @@
 RETURNS SETOF gluster_georep_session_details STABLE
 AS $procedure$
 BEGIN
-    RETURN QUERY SELECT session_id, master_brick_id, slave_host_uuid,
-    slave_host_name, status, checkpoint_status, crawl_status, files_synced, 
files_pending,
-    bytes_pending, deletes_pending, files_skipped, _update_date
-    FROM  gluster_georep_session_details
+    RETURN QUERY SELECT * FROM  gluster_georep_session_details
     WHERE session_id = v_session_id order by slave_host_name asc;
 END; $procedure$
 LANGUAGE plpgsql;
@@ -205,10 +213,7 @@
 RETURNS SETOF gluster_georep_session_details STABLE
 AS $procedure$
 BEGIN
-    RETURN QUERY SELECT session_id, master_brick_id, slave_host_uuid,
-    slave_host_name, status, checkpoint_status, crawl_status, files_synced, 
files_pending,
-    bytes_pending, deletes_pending, files_skipped, _update_date
-    FROM  gluster_georep_session_details
+    RETURN QUERY SELECT * FROM  gluster_georep_session_details
     WHERE session_id = v_session_id AND master_brick_id = v_master_brick_id;
 END; $procedure$
 LANGUAGE plpgsql;
diff --git 
a/packaging/dbscripts/upgrade/03_06_1280_alter_georep_session_details.sql 
b/packaging/dbscripts/upgrade/03_06_1280_alter_georep_session_details.sql
new file mode 100644
index 0000000..3f72d30
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_06_1280_alter_georep_session_details.sql
@@ -0,0 +1,16 @@
+select fn_db_drop_column('gluster_georep_session_details', 'files_synced');
+select fn_db_drop_column('gluster_georep_session_details', 'files_pending');
+select fn_db_drop_column('gluster_georep_session_details', 'bytes_pending');
+select fn_db_drop_column('gluster_georep_session_details', 'deletes_pending');
+select fn_db_drop_column('gluster_georep_session_details', 'files_skipped');
+
+select fn_db_add_column('gluster_georep_session_details', 'data_pending', 
'BIGINT NULL');
+select fn_db_add_column('gluster_georep_session_details', 'entry_pending', 
'BIGINT NULL');
+select fn_db_add_column('gluster_georep_session_details', 'meta_pending', 
'BIGINT NULL');
+select fn_db_add_column('gluster_georep_session_details', 'failures', 'BIGINT 
NULL');
+select fn_db_add_column('gluster_georep_session_details', 'last_synced_at', 
'TIMESTAMP WITH TIME ZONE NULL');
+select fn_db_add_column('gluster_georep_session_details', 'checkpoint_time', 
'TIMESTAMP WITH TIME ZONE NULL');
+select fn_db_add_column('gluster_georep_session_details', 
'checkpoint_completed_time', 'TIMESTAMP WITH TIME ZONE NULL');
+select fn_db_add_column('gluster_georep_session_details', 
'is_checkpoint_completed', 'BOOLEAN DEFAULT FALSE');
+
+


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id05fa1d8537bcd3a0a80f1765f142dab575f43ba
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Sahina Bose <sab...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to