You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mp...@apache.org on 2018/09/12 18:01:54 UTC
[ambari] branch branch-2.7 updated: AMBARI-24611. Disabling an
Alert Does Not Clear It in the Web UI. (#2300)
This is an automated email from the ASF dual-hosted git repository.
mpapirkovskyy pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-2.7 by this push:
new 6919dd7 AMBARI-24611. Disabling an Alert Does Not Clear It in the Web UI. (#2300)
6919dd7 is described below
commit 6919dd70f7cc97e695ab2d6c791b3e8562d6878f
Author: Myroslav Papirkovskyi <mp...@apache.org>
AuthorDate: Wed Sep 12 21:01:51 2018 +0300
AMBARI-24611. Disabling an Alert Does Not Clear It in the Web UI. (#2300)
* AMBARI-24611. Disabling an Alert Does Not Clear It in the Web UI. (mpapirkovskyy)
* AMBARI-24611. Disabling an Alert Does Not Clear It in the Web UI. (mpapirkovskyy)
* AMBARI-24611. Disabling an Alert Does Not Clear It in the Web UI.
---
.../main/python/ambari_agent/AlertSchedulerHandler.py | 4 +++-
.../api/query/render/AlertSummaryGroupedRenderer.java | 12 ++++++++++++
.../ambari/server/api/services/AmbariMetaInfo.java | 3 ++-
.../internal/AlertDefinitionResourceProvider.java | 2 +-
.../server/events/AlertDefinitionDisabledEvent.java | 17 ++++++++++++++++-
.../alerts/AlertDefinitionDisabledListener.java | 15 +++++++++++++++
.../events/listeners/alerts/AlertReceivedListener.java | 8 ++++++++
7 files changed, 57 insertions(+), 4 deletions(-)
diff --git a/ambari-agent/src/main/python/ambari_agent/AlertSchedulerHandler.py b/ambari-agent/src/main/python/ambari_agent/AlertSchedulerHandler.py
index cf2fe2e..f8b09fa 100644
--- a/ambari-agent/src/main/python/ambari_agent/AlertSchedulerHandler.py
+++ b/ambari-agent/src/main/python/ambari_agent/AlertSchedulerHandler.py
@@ -50,7 +50,7 @@ class AlertSchedulerHandler():
TYPE_RECOVERY = 'RECOVERY'
def __init__(self, initializer_module, in_minutes=True):
-
+ self.initializer_module = initializer_module
self.cachedir = initializer_module.config.alerts_cachedir
self.stacks_dir = initializer_module.config.stacks_dir
self.common_services_dir = initializer_module.config.common_services_dir
@@ -169,6 +169,8 @@ class AlertSchedulerHandler():
definitions = self.__load_definitions()
scheduled_jobs = self.__scheduler.get_jobs()
+ self.initializer_module.alert_status_reporter.reported_alerts.clear()
+
# for every scheduled job, see if its UUID is still valid
for scheduled_job in scheduled_jobs:
uuid_valid = False
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/query/render/AlertSummaryGroupedRenderer.java b/ambari-server/src/main/java/org/apache/ambari/server/api/query/render/AlertSummaryGroupedRenderer.java
index cdfcb67..b1493a6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/query/render/AlertSummaryGroupedRenderer.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/query/render/AlertSummaryGroupedRenderer.java
@@ -228,6 +228,18 @@ public class AlertSummaryGroupedRenderer extends AlertSummaryRenderer {
}
}
+ public static Map<String, AlertDefinitionSummary> generateEmptySummary(Long definitionId, String definitionName) {
+ Map<String, AlertDefinitionSummary> summaries = new HashMap<>();
+
+ AlertDefinitionSummary groupSummaryInfo = new AlertDefinitionSummary();
+ groupSummaryInfo.Id = definitionId;
+ groupSummaryInfo.Name = definitionName;
+
+ summaries.put(definitionName, groupSummaryInfo);
+
+ return summaries;
+ }
+
/**
* {@inheritDoc}
* <p/>
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
index 712737c..9f0a43b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
@@ -1240,7 +1240,8 @@ public class AmbariMetaInfo {
for (AlertDefinitionEntity definition : definitionsToDisable) {
definition.setEnabled(false);
alertDefinitionDao.merge(definition);
- eventPublisher.publish(new AlertDefinitionDisabledEvent(clusterId, definition.getDefinitionId()));
+ eventPublisher.publish(new AlertDefinitionDisabledEvent(clusterId, definition.getDefinitionId(),
+ definition.getDefinitionName()));
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertDefinitionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertDefinitionResourceProvider.java
index e789c1b..01f2d5d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertDefinitionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertDefinitionResourceProvider.java
@@ -328,7 +328,7 @@ public class AlertDefinitionResourceProvider extends AbstractControllerResourceP
// a disabled event
if (oldEnabled && !entity.getEnabled()) {
AlertDefinitionDisabledEvent event = new AlertDefinitionDisabledEvent(
- entity.getClusterId(), entity.getDefinitionId());
+ entity.getClusterId(), entity.getDefinitionId(), entity.getDefinitionName());
eventPublisher.publish(event);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/AlertDefinitionDisabledEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/events/AlertDefinitionDisabledEvent.java
index 810a92a..655c21a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/AlertDefinitionDisabledEvent.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/AlertDefinitionDisabledEvent.java
@@ -31,6 +31,11 @@ public class AlertDefinitionDisabledEvent extends ClusterEvent {
private final long m_definitionId;
/**
+ * The alert definition name.
+ */
+ private final String definitionName;
+
+ /**
* Constructor.
*
* @param clusterId
@@ -38,9 +43,10 @@ public class AlertDefinitionDisabledEvent extends ClusterEvent {
* @param definitionId
* the alert definition being registered.
*/
- public AlertDefinitionDisabledEvent(long clusterId, long definitionId) {
+ public AlertDefinitionDisabledEvent(long clusterId, long definitionId, String definitionName) {
super(AmbariEventType.ALERT_DEFINITION_DISABLED, clusterId);
m_definitionId = definitionId;
+ this.definitionName = definitionName;
}
/**
@@ -51,4 +57,13 @@ public class AlertDefinitionDisabledEvent extends ClusterEvent {
public long getDefinitionId() {
return m_definitionId;
}
+
+ /**
+ * Gets the definition name.
+ *
+ * @return the definitionId name
+ */
+ public String getDefinitionName() {
+ return definitionName;
+ }
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertDefinitionDisabledListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertDefinitionDisabledListener.java
index fc6ad19..b6f17e8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertDefinitionDisabledListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertDefinitionDisabledListener.java
@@ -17,9 +17,15 @@
*/
package org.apache.ambari.server.events.listeners.alerts;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.ambari.server.EagerSingleton;
+import org.apache.ambari.server.api.query.render.AlertSummaryGroupedRenderer;
import org.apache.ambari.server.events.AlertDefinitionDisabledEvent;
+import org.apache.ambari.server.events.AlertUpdateEvent;
import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
+import org.apache.ambari.server.events.publishers.STOMPUpdatePublisher;
import org.apache.ambari.server.orm.dao.AlertsDAO;
import org.apache.ambari.server.orm.entities.AlertCurrentEntity;
import org.slf4j.Logger;
@@ -46,6 +52,9 @@ public class AlertDefinitionDisabledListener {
@Inject
private AlertsDAO m_alertsDao = null;
+ @Inject
+ private STOMPUpdatePublisher STOMPUpdatePublisher;
+
/**
* Constructor.
*
@@ -67,5 +76,11 @@ public class AlertDefinitionDisabledListener {
LOG.debug("Received event {}", event);
m_alertsDao.removeCurrentDisabledAlerts();
+
+ // send API STOMP alert update
+ Map<Long, Map<String, AlertSummaryGroupedRenderer.AlertDefinitionSummary>> alertUpdates = new HashMap<>();
+ alertUpdates.put(event.getClusterId(), AlertSummaryGroupedRenderer.generateEmptySummary(event.getDefinitionId(),
+ event.getDefinitionName()));
+ STOMPUpdatePublisher.publish(new AlertUpdateEvent(alertUpdates));
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertReceivedListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertReceivedListener.java
index 7eabdb1..db80e8c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertReceivedListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/alerts/AlertReceivedListener.java
@@ -254,6 +254,14 @@ public class AlertReceivedListener {
// create the event to fire later
alertEvents.add(new InitialAlertEvent(clusterId, alert, current));
+
+ if (!alertUpdates.containsKey(clusterId)) {
+ alertUpdates.put(clusterId, new HashMap<>());
+ }
+ Map<String, AlertSummaryGroupedRenderer.AlertDefinitionSummary> summaries = alertUpdates.get(clusterId);
+
+ AlertSummaryGroupedRenderer.updateSummary(summaries, definition.getDefinitionId(),
+ definition.getDefinitionName(), alertState, alert.getTimestamp(), maintenanceState, alert.getText());
} finally {
// release the lock for this alert
lock.unlock();