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