فهرست منبع

AMBARI-6598. Host maintenance mode does not work when host contains started Nagios server (dlysnichenko)

Lisnichenko Dmitro 11 سال پیش
والد
کامیت
f5c3c22bd0

+ 5 - 1
ambari-server/src/main/java/org/apache/ambari/server/controller/MaintenanceStateHelper.java

@@ -271,10 +271,14 @@ public class MaintenanceStateHelper {
       new RequestResourceFilter(NAGIOS_SERVICE, NAGIOS_COMPONENT, null);
       new RequestResourceFilter(NAGIOS_SERVICE, NAGIOS_COMPONENT, null);
 
 
     for (String clusterName : clusterNames) {
     for (String clusterName : clusterNames) {
+      RequestOperationLevel level =
+              new RequestOperationLevel(Resource.Type.HostComponent,
+              clusterName, NAGIOS_SERVICE, NAGIOS_COMPONENT, null);
+
       ExecuteActionRequest actionRequest = new ExecuteActionRequest(
       ExecuteActionRequest actionRequest = new ExecuteActionRequest(
         clusterName, null, NAGIOS_ACTION_NAME,
         clusterName, null, NAGIOS_ACTION_NAME,
         Collections.singletonList(resourceFilter),
         Collections.singletonList(resourceFilter),
-        null, params);
+        level, params);
       
       
       if (null == response) {
       if (null == response) {
         // createAction() may throw an exception if Nagios is in MS or
         // createAction() may throw an exception if Nagios is in MS or

+ 5 - 2
ambari-server/src/test/java/org/apache/ambari/server/controller/MaintenanceStateHelperTest.java

@@ -120,7 +120,8 @@ public class MaintenanceStateHelperTest {
     Assert.assertEquals("NAGIOS", resourceFilter.getServiceName());
     Assert.assertEquals("NAGIOS", resourceFilter.getServiceName());
     Assert.assertEquals("NAGIOS_SERVER", resourceFilter.getComponentName());
     Assert.assertEquals("NAGIOS_SERVER", resourceFilter.getComponentName());
     Assert.assertEquals("c1", ear.getClusterName());
     Assert.assertEquals("c1", ear.getClusterName());
-    Assert.assertTrue(map.containsKey("context"));  
+    Assert.assertTrue(map.containsKey("context"));
+    Assert.assertEquals(ear.getOperationLevel().getLevel(), Type.HostComponent);
   }
   }
 
 
   private void testHost(MaintenanceState state) throws Exception {
   private void testHost(MaintenanceState state) throws Exception {
@@ -178,7 +179,8 @@ public class MaintenanceStateHelperTest {
     Assert.assertEquals("NAGIOS", resourceFilter.getServiceName());
     Assert.assertEquals("NAGIOS", resourceFilter.getServiceName());
     Assert.assertEquals("NAGIOS_SERVER", resourceFilter.getComponentName());
     Assert.assertEquals("NAGIOS_SERVER", resourceFilter.getComponentName());
     Assert.assertEquals("c1", ear.getClusterName());
     Assert.assertEquals("c1", ear.getClusterName());
-    Assert.assertTrue(map.containsKey("context"));    
+    Assert.assertTrue(map.containsKey("context"));
+    Assert.assertEquals(ear.getOperationLevel().getLevel(), Type.HostComponent);
   }
   }
   
   
   private void testService(MaintenanceState state) throws Exception {
   private void testService(MaintenanceState state) throws Exception {
@@ -238,6 +240,7 @@ public class MaintenanceStateHelperTest {
     Assert.assertEquals("NAGIOS_SERVER", resourceFilter.getComponentName());
     Assert.assertEquals("NAGIOS_SERVER", resourceFilter.getComponentName());
     Assert.assertEquals("c1", ear.getClusterName());
     Assert.assertEquals("c1", ear.getClusterName());
     Assert.assertTrue(map.containsKey("context"));
     Assert.assertTrue(map.containsKey("context"));
+    Assert.assertEquals(ear.getOperationLevel().getLevel(), Type.HostComponent);
   }
   }
 
 
   @Test
   @Test