Eli Mesika has uploaded a new change for review.

Change subject: core: backup awareness refactoring
......................................................................

core: backup awareness refactoring

This patch introduces the following changes in the backup awareness
mechanism:

1) db_name was renamed to scope and can have values :
{db,dwhdb,reportsdb,files}

2) Adding fqdn field to note that the log is remote

3) Adding log_path for the full log file name

4) Fix hashcode & equals BE methods to include only the BE ID fields

Updated wiki page : http://www.ovirt.org/Features/BackupAwareness

Change-Id: I82c4a5372a9108d8c4d5960112f27a0b94f3b654
Signed-off-by: emesika <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLog.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLogId.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDao.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDaoDbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/EngineBackupLogDaoTest.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
M packaging/dbscripts/engine_backup_log_sp.sql
A packaging/dbscripts/upgrade/03_06_1300_backup_extensions.sql
9 files changed, 83 insertions(+), 48 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/89/40389/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
index e8027e2..67c462d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
@@ -26,7 +26,7 @@
 @Singleton
 public class EngineBackupAwarenessManager {
     private static final Logger log = 
LoggerFactory.getLogger(EngineBackupAwarenessManager.class);
-    private static final String ENGINE_DB_ID = "engine";
+    private static final String SCOPE = "db";
     private volatile boolean active;
     @Inject
     private AuditLogDirector auditLogDirector;
@@ -73,7 +73,7 @@
         AuditLogableBase alert = new AuditLogableBase();
 
         //try to get last backup record
-        EngineBackupLog lastBackup = 
engineBackupLogDao.getLastSuccessfulEngineBackup(ENGINE_DB_ID);
+        EngineBackupLog lastBackup = 
engineBackupLogDao.getLastSuccessfulEngineBackup(SCOPE);
         if (lastBackup == null) {
             auditLogDirector.log(alert, AuditLogType.ENGINE_NO_BACKUP);
         } else {
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLog.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLog.java
index bfe9d43..3e23113 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLog.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLog.java
@@ -18,13 +18,13 @@
 @Table(name = "engine_backup_log")
 @IdClass(EngineBackupLogId.class)
 @NamedQueries({
-        @NamedQuery(name = "EngineBackupLog.getLatest", query = "select e from 
EngineBackupLog e where e.dbName = :dbName and passed = true order by doneAt 
DESC")
+        @NamedQuery(name = "EngineBackupLog.getLatest", query = "select e from 
EngineBackupLog e where e.scope = :scope and passed = true order by doneAt 
DESC")
 })
 public class EngineBackupLog extends IVdcQueryable implements Serializable, 
BusinessEntity<EngineBackupLogId> {
 
     @Id
-    @Column(name="db_name")
-    private String dbName;
+    @Column(name="scope")
+    private String scope;
 
     @Id
     @Column(name="done_at")
@@ -36,12 +36,18 @@
     @Column(name="output_message")
     private String outputMessage;
 
-    public String getDbName() {
-        return dbName;
+    @Column(name="fqdn")
+    private String fqdn;
+
+    @Column(name = "log_path")
+    private String logPath;
+
+    public String getScope() {
+        return scope;
     }
 
-    public void setDbName(String dbName) {
-        this.dbName = dbName;
+    public void setScope(String scope) {
+        this.scope = scope;
     }
 
     public Date getDoneAt() {
@@ -68,14 +74,28 @@
         this.outputMessage = outputMessage;
     }
 
+    public String getFqdn() {
+        return fqdn;
+    }
+
+    public void setFqdn(String fqdn) {
+        this.fqdn = fqdn;
+    }
+
+    public String getLogPath() {
+        return logPath;
+    }
+
+    public void setLogPath(String logPath) {
+        this.logPath = logPath;
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + ((dbName == null) ? 0 : dbName.hashCode());
+        result = prime * result + ((scope == null) ? 0 : scope.hashCode());
         result = prime * result + ((doneAt == null) ? 0 : doneAt.hashCode());
-        result = prime * result + (passed ? 0 : 1);
-        result = prime * result + ((outputMessage == null) ? 0 : 
outputMessage.hashCode());
         return result;
     }
 
@@ -91,33 +111,33 @@
             return false;
         }
         EngineBackupLog other = (EngineBackupLog) obj;
-        return (Objects.equals(dbName, other.dbName)
-                && Objects.equals(doneAt, other.doneAt)
-                && this.passed == other.passed
-                && Objects.equals(outputMessage, other.outputMessage));
+        return (Objects.equals(scope, other.scope)
+                && Objects.equals(doneAt, other.doneAt));
     }
 
     @Override
     public String toString() {
         return ToStringBuilder.forInstance(this)
-                .append("dbName", dbName)
+                .append("scope", scope)
                 .append("doneAt", doneAt)
                 .append("passed", passed)
                 .append("outputMessage", outputMessage)
+                .append("fqdn", fqdn)
+                .append("logPath", logPath)
                 .build();
     }
 
     @Override
     public EngineBackupLogId getId() {
         EngineBackupLogId key = new EngineBackupLogId();
-        key.setDbName(dbName);
+        key.setScope(scope);
         key.setDoneAt(doneAt);
         return key;
     }
 
     @Override
     public void setId(EngineBackupLogId id) {
-        dbName = id.getDbName();
+        scope = id.getScope();
         doneAt = id.getDoneAt();
     }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLogId.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLogId.java
index 8ae06d7..22b8299 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLogId.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineBackupLogId.java
@@ -5,15 +5,15 @@
 
 public class EngineBackupLogId implements Serializable {
     private static final long serialVersionUID = 1740373688528083410L;
-    private String dbName;
+    private String scope;
     private Date doneAt;
 
-    public String getDbName() {
-        return dbName;
+    public String getScope() {
+        return scope;
     }
 
-    public void setDbName(String dbName) {
-        this.dbName = dbName;
+    public void setScope(String dbName) {
+        this.scope = dbName;
     }
 
     public Date getDoneAt() {
@@ -28,7 +28,7 @@
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + dbName.hashCode();
+        result = prime * result + scope.hashCode();
         result = prime * result + doneAt.hashCode();
         return  result;
     }
@@ -43,7 +43,7 @@
             return false;
         }
         EngineBackupLogId other = (EngineBackupLogId)obj;
-        return (dbName.equals(other.getDbName()) && 
doneAt.equals(other.getDoneAt()));
+        return (scope.equals(other.getScope()) && 
doneAt.equals(other.getDoneAt()));
     }
 
 
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDao.java
index 4938c1c..6bdf29e 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDao.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDao.java
@@ -8,5 +8,5 @@
     /**
      * Gets the last successful engine backup record
      */
-    EngineBackupLog getLastSuccessfulEngineBackup(String dbName);
+    EngineBackupLog getLastSuccessfulEngineBackup(String scope);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDaoDbFacadeImpl.java
index d9b736d..50ca1c5 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineBackupLogDaoDbFacadeImpl.java
@@ -17,9 +17,9 @@
     }
 
     @Override
-    public EngineBackupLog getLastSuccessfulEngineBackup(String dbName) {
+    public EngineBackupLog getLastSuccessfulEngineBackup(String scope) {
         TypedQuery<EngineBackupLog> query = 
entityManager.createNamedQuery("EngineBackupLog.getLatest",
-                EngineBackupLog.class).setParameter("dbName", 
dbName).setMaxResults(1);
+                EngineBackupLog.class).setParameter("scope", 
scope).setMaxResults(1);
         return singleResult(query);
     }
 }
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/EngineBackupLogDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/EngineBackupLogDaoTest.java
index c8ba6be..0b66583 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/EngineBackupLogDaoTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/EngineBackupLogDaoTest.java
@@ -20,43 +20,47 @@
     private EngineBackupLogDao dao;
     private EngineBackupLog existingEngineBackupLog;
     private EngineBackupLog newEntity;
-    private final static String DB_NAME = "engine";
-    private final static String NON_EXISTING_DB_NAME = "invalid";
+    private final static String SCOPE = "db";
+    private final static String NON_EXISTING_SCOPE = "invalid";
 
     @Override
     @Before
     public void setUp() throws Exception {
         super.setUp();
         dao = dbFacade.getEngineBackupLogDao();
-        existingEngineBackupLog = dao.getLastSuccessfulEngineBackup(DB_NAME);
+        existingEngineBackupLog = dao.getLastSuccessfulEngineBackup(SCOPE);
         newEntity = new EngineBackupLog();
-        newEntity.setDbName(RandomUtils.instance().nextString(20));
-        newEntity.setOutputMessage(RandomUtils.instance().nextString(20));
+        newEntity.setScope(RandomUtils.instance().nextString(20));
         newEntity.setDoneAt(new Date());
         newEntity.setPassed(true);
+        newEntity.setOutputMessage(RandomUtils.instance().nextString(20));
+        newEntity.setFqdn(RandomUtils.instance().nextString(20));
+        newEntity.setLogPath(RandomUtils.instance().nextString(20));
     }
 
     @Test
     public void testGetLastSuccessfulEngineBackup() {
-        existingEngineBackupLog = dao.getLastSuccessfulEngineBackup(DB_NAME);
+        existingEngineBackupLog = dao.getLastSuccessfulEngineBackup(SCOPE);
         assertNotNull(existingEngineBackupLog);
     }
 
     @Test
     public void testGetLastSuccessfulEngineBackupWithWrongDbName() {
-        existingEngineBackupLog = 
dao.getLastSuccessfulEngineBackup(NON_EXISTING_DB_NAME);
+        existingEngineBackupLog = 
dao.getLastSuccessfulEngineBackup(NON_EXISTING_SCOPE);
         assertNull(existingEngineBackupLog);
     }
 
     @Test
     public void testAddingNewUnsuccessfulBackupEvent() {
         EngineBackupLog engineBackupLog = new EngineBackupLog();
-        engineBackupLog.setDbName(DB_NAME);
+        engineBackupLog.setScope(SCOPE);
         engineBackupLog.setDoneAt(Calendar.getInstance().getTime());
         engineBackupLog.setPassed(false);
         engineBackupLog.setOutputMessage("backup failed");
+        engineBackupLog.setFqdn(RandomUtils.instance().nextString(20));
+        engineBackupLog.setLogPath(RandomUtils.instance().nextString(20));
         dao.save(engineBackupLog);
-        EngineBackupLog entry = dao.getLastSuccessfulEngineBackup(DB_NAME);
+        EngineBackupLog entry = dao.getLastSuccessfulEngineBackup(SCOPE);
         assertNotNull(entry);
         assertEquals(entry, existingEngineBackupLog);
     }
@@ -64,12 +68,14 @@
     @Test
     public void testAddingNewSuccessfulBackupEvent() {
         EngineBackupLog engineBackupLog = new EngineBackupLog();
-        engineBackupLog.setDbName(DB_NAME);
+        engineBackupLog.setScope(SCOPE);
         engineBackupLog.setDoneAt(Calendar.getInstance().getTime());
         engineBackupLog.setPassed(true);
         engineBackupLog.setOutputMessage("backup completed successfully");
+        engineBackupLog.setFqdn(RandomUtils.instance().nextString(20));
+        engineBackupLog.setLogPath(RandomUtils.instance().nextString(20));
         dao.save(engineBackupLog);
-        EngineBackupLog entry = dao.getLastSuccessfulEngineBackup(DB_NAME);
+        EngineBackupLog entry = dao.getLastSuccessfulEngineBackup(SCOPE);
         assertNotNull(entry);
         assertNotEquals(entry.getDoneAt(), 
existingEngineBackupLog.getDoneAt());
         assertTrue(entry.isPassed());
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 15db125..7a25612 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -8612,15 +8612,19 @@
         </row>
      </table>
     <table name="engine_backup_log">
-        <column>db_name</column>
+        <column>scope</column>
         <column>done_at</column>
         <column>is_passed</column>
         <column>output_message</column>
+        <column>fqdn</column>
+        <column>log_path</column>
         <row>
-            <value>engine</value>
+            <value>db</value>
             <value>2015-02-10 16:35:15.362494+05:30</value>
             <value>true</value>
             <value>OK</value>
+            <value>10.35.1.1</value>
+            <value>/etc/share/ovirt-engine/log/engine-backup.log</value>
         </row>
     </table>
 </dataset>
diff --git a/packaging/dbscripts/engine_backup_log_sp.sql 
b/packaging/dbscripts/engine_backup_log_sp.sql
index 1d3c2e8..e7796b8 100644
--- a/packaging/dbscripts/engine_backup_log_sp.sql
+++ b/packaging/dbscripts/engine_backup_log_sp.sql
@@ -4,16 +4,18 @@
 -- 0 backup started
 -- 1 backup completed successfully
 
-CREATE OR REPLACE FUNCTION LogEngineBackupEvent(v_db_name VARCHAR(64),
+CREATE OR REPLACE FUNCTION LogEngineBackupEvent(v_scope VARCHAR(64),
      v_done_at TIMESTAMP WITH TIME ZONE ,
      v_status INTEGER,
-     v_output_message TEXT)
+     v_output_message TEXT,
+     v_fqdn varchar(255),
+     v_log_path TEXT)
 RETURNS VOID
      AS $procedure$
 BEGIN
     IF v_status = -1 THEN
-        INSERT INTO engine_backup_log(db_name, done_at,is_passed, 
output_message)
-        VALUES(v_db_name, v_done_at, false, v_output_message);
+        INSERT INTO engine_backup_log(scope, done_at,is_passed, 
output_message, fqdn, log_path)
+        VALUES(v_scope, v_done_at, false, v_output_message, v_fqdn, 
v_log_path);
 
         INSERT INTO audit_log(log_time, log_type_name, log_type, severity, 
message)
         VALUES(v_done_at, 'ENGINE_BACKUP_FAILED', 9026, 2, v_output_message);
@@ -22,8 +24,8 @@
         INSERT INTO audit_log(log_time, log_type_name, log_type, severity, 
message)
         VALUES(v_done_at, 'ENGINE_BACKUP_STARTED', 9024, 0, v_output_message);
     ELSIF v_status = 1 THEN
-        INSERT INTO engine_backup_log(db_name, done_at,is_passed, 
output_message)
-        VALUES(v_db_name, v_done_at, true, v_output_message);
+        INSERT INTO engine_backup_log(scope, done_at,is_passed, 
output_message, fqdn, log_path)
+        VALUES(v_scope, v_done_at, true, v_output_message, v_fqdn, v_log_path);
 
         -- Clean alerts
         PERFORM DeleteBackupRelatedAlerts();
diff --git a/packaging/dbscripts/upgrade/03_06_1300_backup_extensions.sql 
b/packaging/dbscripts/upgrade/03_06_1300_backup_extensions.sql
new file mode 100644
index 0000000..4d2ccc9
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_06_1300_backup_extensions.sql
@@ -0,0 +1,3 @@
+select fn_db_add_column('engine_backup_log', 'fqdn',  'varchar(255)');
+select fn_db_add_column('engine_backup_log', 'log_path', 'text');
+select fn_db_rename_column('engine_backup_log', 'db_name', 'scope');


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I82c4a5372a9108d8c4d5960112f27a0b94f3b654
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Eli Mesika <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to