This is an automated email from the ASF dual-hosted git repository.

swagle pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new cc7fb90  [AMBARI-24035] - Autostart is not obeying Maintenance Mode 
(#1465)
cc7fb90 is described below

commit cc7fb90dfc8485afdf71fa95df453247979698b9
Author: kasakrisz <[email protected]>
AuthorDate: Tue Jun 5 20:24:18 2018 +0200

    [AMBARI-24035] - Autostart is not obeying Maintenance Mode (#1465)
    
    * AMBARI-24035 - Autostart is not obeying Maintenance Mode
    
    * AMBARI-24035 - Autostart is not obeying Maintenance Mode
    - fix method name
---
 .../server/agent/stomp/HostLevelParamsHolder.java  | 41 ++++++++++++++++------
 1 file changed, 31 insertions(+), 10 deletions(-)

diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
index 8190130..3c44f57 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/agent/stomp/HostLevelParamsHolder.java
@@ -26,11 +26,13 @@ import 
org.apache.ambari.server.agent.stomp.dto.HostLevelParamsCluster;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.events.ClusterComponentsRepoChangedEvent;
 import org.apache.ambari.server.events.HostLevelParamsUpdateEvent;
+import org.apache.ambari.server.events.MaintenanceModeEvent;
 import org.apache.ambari.server.events.ServiceComponentRecoveryChangedEvent;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.ServiceComponentHost;
 import org.apache.commons.collections.MapUtils;
 
 import com.google.common.eventbus.Subscribe;
@@ -119,23 +121,42 @@ public class HostLevelParamsHolder extends 
AgentHostDataHolder<HostLevelParamsUp
 
   @Subscribe
   public void onClusterComponentsRepoUpdate(ClusterComponentsRepoChangedEvent 
clusterComponentsRepoChangedEvent) throws AmbariException {
-    updateDataOfCluster(clusterComponentsRepoChangedEvent.getClusterId());
+    Cluster cluster = 
clusters.getCluster(clusterComponentsRepoChangedEvent.getClusterId());
+    for (Host host : cluster.getHosts()) {
+      updateDataOfHost(clusterComponentsRepoChangedEvent.getClusterId(), 
cluster, host);
+    }
   }
 
   @Subscribe
   public void 
onServiceComponentRecoveryChanged(ServiceComponentRecoveryChangedEvent event) 
throws AmbariException {
-    updateDataOfCluster(event.getClusterId());
+    long clusterId = event.getClusterId();
+    Cluster cluster = clusters.getCluster(clusterId);
+    for (ServiceComponentHost host : 
cluster.getServiceComponentHosts(event.getServiceName(), 
event.getComponentName())) {
+      updateDataOfHost(clusterId, cluster, host.getHost());
+    }
+  }
+
+  private void updateDataOfHost(long clusterId, Cluster cluster, Host host) 
throws AmbariException {
+    HostLevelParamsUpdateEvent hostLevelParamsUpdateEvent = new 
HostLevelParamsUpdateEvent(Long.toString(clusterId),
+            new HostLevelParamsCluster(
+                    
m_ambariManagementController.get().retrieveHostRepositories(cluster, host),
+                    
recoveryConfigHelper.getRecoveryConfig(cluster.getClusterName(), 
host.getHostName())));
+    hostLevelParamsUpdateEvent.setHostId(host.getHostId());
+    updateData(hostLevelParamsUpdateEvent);
   }
 
-  private void updateDataOfCluster(long clusterId) throws AmbariException {
+  @Subscribe
+  public void onMaintenanceModeChanged(MaintenanceModeEvent event) throws 
AmbariException {
+    long clusterId = event.getClusterId();
     Cluster cluster = clusters.getCluster(clusterId);
-    for (Host host : cluster.getHosts()) {
-      HostLevelParamsUpdateEvent hostLevelParamsUpdateEvent = new 
HostLevelParamsUpdateEvent(Long.toString(clusterId),
-              new HostLevelParamsCluster(
-                      
m_ambariManagementController.get().retrieveHostRepositories(cluster, host),
-                      
recoveryConfigHelper.getRecoveryConfig(cluster.getClusterName(), 
host.getHostName())));
-      hostLevelParamsUpdateEvent.setHostId(host.getHostId());
-      updateData(hostLevelParamsUpdateEvent);
+    if (event.getHost() != null || event.getServiceComponentHost() != null) {
+      Host host = event.getHost() != null ? event.getHost() : 
event.getServiceComponentHost().getHost();
+      updateDataOfHost(clusterId, cluster, host);
+    }
+    else if (event.getService() != null) {
+      for (String hostName : event.getService().getServiceHosts()) {
+        updateDataOfHost(clusterId, cluster, cluster.getHost(hostName));
+      }
     }
   }
 }

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to