modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
| 54 ++++++----
1 file changed, 34 insertions(+), 20 deletions(-)
New commits:
commit 64e471e7310e066177d00a15d67bc2fd72ed0f5b
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Aug 31 16:57:48 2011 -0400
after we persist a drift change set, hand off the summary data to the alert condition
cache manager to check to see if drift alerts need to be fired
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
index 27ec698..31c7084 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
@@ -71,6 +71,8 @@ import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.agentclient.AgentClient;
+import org.rhq.enterprise.server.alert.engine.AlertConditionCacheManagerLocal;
+import org.rhq.enterprise.server.alert.engine.AlertConditionCacheStats;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.core.AgentManagerLocal;
import org.rhq.enterprise.server.plugin.pc.MasterServerPluginContainer;
@@ -170,6 +172,9 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
@EJB
private SubjectManagerLocal subjectManager;
+ @EJB
+ private AlertConditionCacheManagerLocal alertConditionCacheManager;
+
// use a new transaction when putting things on the JMS queue. see
//
http://management-platform.blogspot.com/2008/11/transaction-recovery-in-j...
@Override
@@ -359,6 +364,7 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
public DriftChangeSetSummary saveChangeSet(Subject subject, int resourceId, File
changeSetZip) throws Exception {
DriftServerPluginFacet driftServerPlugin = getServerPlugin();
DriftChangeSetSummary summary = driftServerPlugin.saveChangeSet(subject,
resourceId, changeSetZip);
+ notifyAlertConditionCacheManager("saveChangeSet", summary);
return summary;
}
@@ -520,7 +526,8 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
PageList<? extends Drift<?, ?>> results =
driftServerPlugin.findDriftsByCriteria(subject, criteria);
if (results.size() == 0) {
- log.warn("Unable to get the drift details for drift id " + driftId
+ ". No drift object found with that id.");
+ log.warn("Unable to get the drift details for drift id " + driftId
+ + ". No drift object found with that id.");
return null;
}
@@ -528,33 +535,40 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
driftDetails.setDrift(drift);
try {
switch (drift.getCategory()) {
- case FILE_ADDED:
- newFile = driftServerPlugin.getDriftFile(subject,
drift.getNewDriftFile().getHashId());
- driftDetails.setNewFileStatus(newFile.getStatus());
- break;
- case FILE_CHANGED:
- newFile = driftServerPlugin.getDriftFile(subject,
drift.getNewDriftFile().getHashId());
- oldFile = driftServerPlugin.getDriftFile(subject,
drift.getOldDriftFile().getHashId());
-
- driftDetails.setNewFileStatus(newFile.getStatus());
- driftDetails.setOldFileStatus(oldFile.getStatus());
-
- driftDetails.setPreviousChangeSet(loadPreviousChangeSet(subject,
drift));
- break;
- case FILE_REMOVED:
- oldFile = driftServerPlugin.getDriftFile(subject,
drift.getOldDriftFile().getHashId());
- driftDetails.setOldFileStatus(oldFile.getStatus());
- break;
+ case FILE_ADDED:
+ newFile = driftServerPlugin.getDriftFile(subject,
drift.getNewDriftFile().getHashId());
+ driftDetails.setNewFileStatus(newFile.getStatus());
+ break;
+ case FILE_CHANGED:
+ newFile = driftServerPlugin.getDriftFile(subject,
drift.getNewDriftFile().getHashId());
+ oldFile = driftServerPlugin.getDriftFile(subject,
drift.getOldDriftFile().getHashId());
+
+ driftDetails.setNewFileStatus(newFile.getStatus());
+ driftDetails.setOldFileStatus(oldFile.getStatus());
+
+ driftDetails.setPreviousChangeSet(loadPreviousChangeSet(subject,
drift));
+ break;
+ case FILE_REMOVED:
+ oldFile = driftServerPlugin.getDriftFile(subject,
drift.getOldDriftFile().getHashId());
+ driftDetails.setOldFileStatus(oldFile.getStatus());
+ break;
}
} catch (Exception e) {
- log.error("An error occurred while loading the drift details for drift
id " + driftId + ": " +
- e.getMessage());
+ log.error("An error occurred while loading the drift details for drift
id " + driftId + ": "
+ + e.getMessage());
throw new RuntimeException("An error occurred while loading th drift
details for drift id " + driftId, e);
}
driftDetails.setBinaryFile(isBinaryFile(drift));
return driftDetails;
}
+ private void notifyAlertConditionCacheManager(String callingMethod,
DriftChangeSetSummary summary) {
+ AlertConditionCacheStats stats =
alertConditionCacheManager.checkConditions(summary);
+ if (log.isDebugEnabled()) {
+ log.debug(callingMethod + ": " + stats.toString());
+ }
+ }
+
private DriftChangeSet loadPreviousChangeSet(Subject subject, Drift drift) {
GenericDriftChangeSetCriteria criteria = new GenericDriftChangeSetCriteria();
criteria.addFilterResourceId(drift.getChangeSet().getResourceId());