knox-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lmc...@apache.org
Subject [1/2] knox git commit: KNOX-1013 - Monitor Ambari for Cluster Topology changes (Phil Zampino via lmccay)
Date Tue, 05 Dec 2017 20:07:37 GMT
Repository: knox
Updated Branches:
  refs/heads/master 13287d2c1 -> a874f399e


http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-server/src/main/java/org/apache/hadoop/gateway/services/DefaultGatewayServices.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/main/java/org/apache/hadoop/gateway/services/DefaultGatewayServices.java
b/gateway-server/src/main/java/org/apache/hadoop/gateway/services/DefaultGatewayServices.java
index 9dca344..626cec0 100644
--- a/gateway-server/src/main/java/org/apache/hadoop/gateway/services/DefaultGatewayServices.java
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/services/DefaultGatewayServices.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.gateway.service.config.remote.RemoteConfigurationRegist
 import org.apache.hadoop.gateway.services.config.client.RemoteConfigurationRegistryClientService;
 import org.apache.hadoop.gateway.services.registry.impl.DefaultServiceDefinitionRegistry;
 import org.apache.hadoop.gateway.services.metrics.impl.DefaultMetricsService;
+import org.apache.hadoop.gateway.services.topology.impl.DefaultClusterConfigurationMonitorService;
 import org.apache.hadoop.gateway.services.topology.impl.DefaultTopologyService;
 import org.apache.hadoop.gateway.services.hostmap.impl.DefaultHostMapperService;
 import org.apache.hadoop.gateway.services.registry.impl.DefaultServiceRegistryService;
@@ -112,6 +113,11 @@ public class DefaultGatewayServices implements GatewayServices {
     registryClientService.init(config, options);
     services.put(REMOTE_REGISTRY_CLIENT_SERVICE, registryClientService);
 
+    DefaultClusterConfigurationMonitorService ccs = new DefaultClusterConfigurationMonitorService();
+    ccs.setAliasService(alias);
+    ccs.init(config, options);
+    services.put(CLUSTER_CONFIGURATION_MONITOR_SERVICE, ccs);
+
     DefaultTopologyService tops = new DefaultTopologyService();
     tops.setAliasService(alias);
     tops.init(  config, options  );
@@ -144,6 +150,8 @@ public class DefaultGatewayServices implements GatewayServices {
                             (RemoteConfigurationRegistryClientService)services.get(REMOTE_REGISTRY_CLIENT_SERVICE);
     clientService.start();
 
+    (services.get(CLUSTER_CONFIGURATION_MONITOR_SERVICE)).start();
+
     DefaultTopologyService tops = (DefaultTopologyService)services.get(TOPOLOGY_SERVICE);
     tops.start();
 
@@ -156,6 +164,8 @@ public class DefaultGatewayServices implements GatewayServices {
 
     ks.stop();
 
+    (services.get(CLUSTER_CONFIGURATION_MONITOR_SERVICE)).stop();
+
     DefaultAliasService alias = (DefaultAliasService) services.get(ALIAS_SERVICE);
     alias.stop();
 

http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultClusterConfigurationMonitorService.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultClusterConfigurationMonitorService.java
b/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultClusterConfigurationMonitorService.java
new file mode 100644
index 0000000..342ce11
--- /dev/null
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultClusterConfigurationMonitorService.java
@@ -0,0 +1,81 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.hadoop.gateway.services.topology.impl;
+
+import org.apache.hadoop.gateway.config.GatewayConfig;
+import org.apache.hadoop.gateway.services.ServiceLifecycleException;
+import org.apache.hadoop.gateway.services.security.AliasService;
+import org.apache.hadoop.gateway.topology.ClusterConfigurationMonitorService;
+import org.apache.hadoop.gateway.topology.discovery.ClusterConfigurationMonitor;
+import org.apache.hadoop.gateway.topology.discovery.ClusterConfigurationMonitorProvider;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ServiceLoader;
+
+
+public class DefaultClusterConfigurationMonitorService implements ClusterConfigurationMonitorService
{
+
+    private AliasService aliasService = null;
+
+    private Map<String, ClusterConfigurationMonitor> monitors = new HashMap<>();
+
+    @Override
+    public void init(GatewayConfig config, Map<String, String> options) throws ServiceLifecycleException
{
+        ServiceLoader<ClusterConfigurationMonitorProvider> providers =
+                                                        ServiceLoader.load(ClusterConfigurationMonitorProvider.class);
+        for (ClusterConfigurationMonitorProvider provider : providers) {
+            // Check the gateway configuration to determine if this type of monitor is enabled
+            if (config.isClusterMonitorEnabled(provider.getType())) {
+                ClusterConfigurationMonitor monitor = provider.newInstance(config, aliasService);
+                if (monitor != null) {
+                    monitors.put(provider.getType(), monitor);
+                }
+            }
+        }
+    }
+
+    @Override
+    public void start() {
+        for (ClusterConfigurationMonitor monitor : monitors.values()) {
+            monitor.start();
+        }
+    }
+
+    @Override
+    public void stop() {
+        for (ClusterConfigurationMonitor monitor : monitors.values()) {
+            monitor.stop();
+        }
+    }
+
+    @Override
+    public ClusterConfigurationMonitor getMonitor(String type) {
+        return monitors.get(type);
+    }
+
+    @Override
+    public void addListener(ClusterConfigurationMonitor.ConfigurationChangeListener listener)
{
+        for (ClusterConfigurationMonitor monitor : monitors.values()) {
+            monitor.addListener(listener);
+        }
+    }
+
+    public void setAliasService(AliasService aliasService) {
+        this.aliasService = aliasService;
+    }
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
b/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
index 5fc3620..aded6cd 100644
--- a/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/services/topology/impl/DefaultTopologyService.java
@@ -28,6 +28,7 @@ import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
 import org.apache.commons.io.monitor.FileAlterationMonitor;
 import org.apache.commons.io.monitor.FileAlterationObserver;
 import org.apache.hadoop.gateway.GatewayMessages;
+import org.apache.hadoop.gateway.GatewayServer;
 import org.apache.hadoop.gateway.audit.api.Action;
 import org.apache.hadoop.gateway.audit.api.ActionOutcome;
 import org.apache.hadoop.gateway.audit.api.AuditServiceFactory;
@@ -37,15 +38,18 @@ import org.apache.hadoop.gateway.audit.log4j.audit.AuditConstants;
 import org.apache.hadoop.gateway.config.GatewayConfig;
 import org.apache.hadoop.gateway.i18n.messages.MessagesFactory;
 import org.apache.hadoop.gateway.service.definition.ServiceDefinition;
+import org.apache.hadoop.gateway.services.GatewayServices;
 import org.apache.hadoop.gateway.services.ServiceLifecycleException;
 import org.apache.hadoop.gateway.services.security.AliasService;
 import org.apache.hadoop.gateway.services.topology.TopologyService;
+import org.apache.hadoop.gateway.topology.ClusterConfigurationMonitorService;
 import org.apache.hadoop.gateway.topology.Topology;
 import org.apache.hadoop.gateway.topology.TopologyEvent;
 import org.apache.hadoop.gateway.topology.TopologyListener;
 import org.apache.hadoop.gateway.topology.TopologyMonitor;
 import org.apache.hadoop.gateway.topology.TopologyProvider;
 import org.apache.hadoop.gateway.topology.builder.TopologyBuilder;
+import org.apache.hadoop.gateway.topology.discovery.ClusterConfigurationMonitor;
 import org.apache.hadoop.gateway.topology.monitor.RemoteConfigurationMonitor;
 import org.apache.hadoop.gateway.topology.monitor.RemoteConfigurationMonitorFactory;
 import org.apache.hadoop.gateway.topology.simple.SimpleDescriptorHandler;
@@ -554,7 +558,10 @@ public class DefaultTopologyService
 
   @Override
   public void start() {
-
+    // Register a cluster configuration monitor listener for change notifications
+    ClusterConfigurationMonitorService ccms =
+                  GatewayServer.getGatewayServices().getService(GatewayServices.CLUSTER_CONFIGURATION_MONITOR_SERVICE);
+    ccms.addListener(new TopologyDiscoveryTrigger(this));
   }
 
   @Override
@@ -589,11 +596,17 @@ public class DefaultTopologyService
       // This happens prior to the start-up loading of the topologies.
       String[] descriptorFilenames =  descriptorsDirectory.list();
       if (descriptorFilenames != null) {
-          for (String descriptorFilename : descriptorFilenames) {
-              if (DescriptorsMonitor.isDescriptorFile(descriptorFilename)) {
-                  descriptorsMonitor.onFileChange(new File(descriptorsDirectory, descriptorFilename));
-              }
+        for (String descriptorFilename : descriptorFilenames) {
+          if (DescriptorsMonitor.isDescriptorFile(descriptorFilename)) {
+            // If there isn't a corresponding topology file, or if the descriptor has been
modified since the
+            // corresponding topology file was generated, then trigger generation of one
+            File matchingTopologyFile = getExistingFile(topologiesDirectory, FilenameUtils.getBaseName(descriptorFilename));
+            if (matchingTopologyFile == null ||
+                    matchingTopologyFile.lastModified() < (new File(descriptorsDirectory,
descriptorFilename)).lastModified()) {
+              descriptorsMonitor.onFileChange(new File(descriptorsDirectory, descriptorFilename));
+            }
           }
+        }
       }
 
       // Initialize the remote configuration monitor, if it has been configured
@@ -604,7 +617,6 @@ public class DefaultTopologyService
     }
   }
 
-
   /**
    * Utility method for listing the files in the specified directory.
    * This method is "nicer" than the File#listFiles() because it will not return null.
@@ -847,4 +859,37 @@ public class DefaultTopologyService
     }
   }
 
+  /**
+   * Listener for Ambari config change events, which will trigger re-generation (including
re-discovery) of the
+   * affected topologies.
+   */
+  private static class TopologyDiscoveryTrigger implements ClusterConfigurationMonitor.ConfigurationChangeListener
{
+
+    private TopologyService topologyService = null;
+
+    TopologyDiscoveryTrigger(TopologyService topologyService) {
+      this.topologyService = topologyService;
+    }
+
+    @Override
+    public void onConfigurationChange(String source, String clusterName) {
+      log.noticedClusterConfigurationChange(source, clusterName);
+      try {
+        // Identify any descriptors associated with the cluster configuration change
+        for (File descriptor : topologyService.getDescriptors()) {
+          String descriptorContent = FileUtils.readFileToString(descriptor);
+          if (descriptorContent.contains(source)) {
+            if (descriptorContent.contains(clusterName)) {
+              log.triggeringTopologyRegeneration(source, clusterName, descriptor.getAbsolutePath());
+              // 'Touch' the descriptor to trigger re-generation of the associated topology
+              descriptor.setLastModified(System.currentTimeMillis());
+            }
+          }
+        }
+      } catch (Exception e) {
+        log.errorRespondingToConfigChange(source, clusterName, e);
+      }
+    }
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-server/src/main/java/org/apache/hadoop/gateway/topology/simple/SimpleDescriptorHandler.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/main/java/org/apache/hadoop/gateway/topology/simple/SimpleDescriptorHandler.java
b/gateway-server/src/main/java/org/apache/hadoop/gateway/topology/simple/SimpleDescriptorHandler.java
index c44710a..6b9df0d 100644
--- a/gateway-server/src/main/java/org/apache/hadoop/gateway/topology/simple/SimpleDescriptorHandler.java
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/topology/simple/SimpleDescriptorHandler.java
@@ -54,6 +54,8 @@ public class SimpleDescriptorHandler {
 
     private static final SimpleDescriptorMessages log = MessagesFactory.get(SimpleDescriptorMessages.class);
 
+    private static Map<String, ServiceDiscovery> discoveryInstances = new HashMap<>();
+
     public static Map<String, File> handle(File desc) throws IOException {
         return handle(desc, NO_GATEWAY_SERVICES);
     }
@@ -89,7 +91,12 @@ public class SimpleDescriptorHandler {
             discoveryType = "AMBARI";
         }
 
-        ServiceDiscovery sd = ServiceDiscoveryFactory.get(discoveryType, gatewayServices);
+        // Use the cached discovery object for the required type, if it has already been
loaded
+        ServiceDiscovery sd = discoveryInstances.get(discoveryType);
+        if (sd == null) {
+            sd = ServiceDiscoveryFactory.get(discoveryType, gatewayServices);
+            discoveryInstances.put(discoveryType, sd);
+        }
         ServiceDiscovery.Cluster cluster = sd.discover(sdc, desc.getClusterName());
 
         List<String> validServiceNames = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-spi/src/main/java/org/apache/hadoop/gateway/config/GatewayConfig.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/main/java/org/apache/hadoop/gateway/config/GatewayConfig.java
b/gateway-spi/src/main/java/org/apache/hadoop/gateway/config/GatewayConfig.java
index 5cfaf36..e45fd11 100644
--- a/gateway-spi/src/main/java/org/apache/hadoop/gateway/config/GatewayConfig.java
+++ b/gateway-spi/src/main/java/org/apache/hadoop/gateway/config/GatewayConfig.java
@@ -313,7 +313,23 @@ public interface GatewayConfig {
    * @return
    */
   boolean isGatewayServerHeaderEnabled();
-
+  
+  /**
+   *
+   * @param type The type of cluster configuration monitor for which the interval should
be returned.
+   *
+   * @return The polling interval configuration value, or -1 if it has not been configured.
+   */
+  int getClusterMonitorPollingInterval(String type);
+  
+  /**
+   *
+   * @param type The type of cluster configuration monitor for which the interval should
be returned.
+   *
+   * @return The enabled status of the specified type of cluster configuration monitor.
+   */
+  boolean isClusterMonitorEnabled(String type);
+  
   /**
    * @return The list of the names of any remote registry configurations defined herein.
    */

http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-spi/src/main/java/org/apache/hadoop/gateway/services/GatewayServices.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/main/java/org/apache/hadoop/gateway/services/GatewayServices.java
b/gateway-spi/src/main/java/org/apache/hadoop/gateway/services/GatewayServices.java
index 2894bbc..222b1f0 100644
--- a/gateway-spi/src/main/java/org/apache/hadoop/gateway/services/GatewayServices.java
+++ b/gateway-spi/src/main/java/org/apache/hadoop/gateway/services/GatewayServices.java
@@ -41,6 +41,8 @@ public interface GatewayServices extends Service, ProviderDeploymentContributor
 
   String REMOTE_REGISTRY_CLIENT_SERVICE = "RemoteConfigRegistryClientService";
 
+  String CLUSTER_CONFIGURATION_MONITOR_SERVICE = "ClusterConfigurationMonitorService";
+
   public abstract Collection<String> getServiceNames();
 
   public abstract <T> T getService( String serviceName );

http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/ClusterConfigurationMonitorService.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/ClusterConfigurationMonitorService.java
b/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/ClusterConfigurationMonitorService.java
new file mode 100644
index 0000000..961f2e5
--- /dev/null
+++ b/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/ClusterConfigurationMonitorService.java
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.hadoop.gateway.topology;
+
+import org.apache.hadoop.gateway.services.Service;
+import org.apache.hadoop.gateway.topology.discovery.ClusterConfigurationMonitor;
+
+/**
+ * Gateway service for managing cluster configuration monitors.
+ */
+public interface ClusterConfigurationMonitorService extends Service {
+
+    /**
+     *
+     * @param type The type of monitor (e.g., Ambari)
+     *
+     * @return The monitor associated with the specified type, or null if there is no such
monitor.
+     */
+    ClusterConfigurationMonitor getMonitor(String type);
+
+
+    /**
+     * Register for configuration change notifications from <em>any</em> of the
monitors managed by this service.
+     *
+     * @param listener The listener to register.
+     */
+    void addListener(ClusterConfigurationMonitor.ConfigurationChangeListener listener);
+
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/discovery/ClusterConfigurationMonitor.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/discovery/ClusterConfigurationMonitor.java
b/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/discovery/ClusterConfigurationMonitor.java
new file mode 100644
index 0000000..fc3614d
--- /dev/null
+++ b/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/discovery/ClusterConfigurationMonitor.java
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.hadoop.gateway.topology.discovery;
+
+public interface ClusterConfigurationMonitor {
+
+    /**
+     * Start the monitor.
+     */
+    void start();
+
+    /**
+     * Stop the monitor.
+     */
+    void stop();
+
+    /**
+     *
+     * @param interval The polling interval, in seconds
+     */
+    void setPollingInterval(int interval);
+
+    /**
+     * Register for notifications from the monitor.
+     */
+    void addListener(ConfigurationChangeListener listener);
+
+    /**
+     * Monitor listener interface for receiving notifications that a configuration has changed.
+     */
+    interface ConfigurationChangeListener {
+        void onConfigurationChange(String source, String clusterName);
+    }
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/discovery/ClusterConfigurationMonitorProvider.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/discovery/ClusterConfigurationMonitorProvider.java
b/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/discovery/ClusterConfigurationMonitorProvider.java
new file mode 100644
index 0000000..a8d5f30
--- /dev/null
+++ b/gateway-spi/src/main/java/org/apache/hadoop/gateway/topology/discovery/ClusterConfigurationMonitorProvider.java
@@ -0,0 +1,27 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.hadoop.gateway.topology.discovery;
+
+import org.apache.hadoop.gateway.config.GatewayConfig;
+import org.apache.hadoop.gateway.services.security.AliasService;
+
+public interface ClusterConfigurationMonitorProvider {
+
+    String getType();
+
+    ClusterConfigurationMonitor newInstance(GatewayConfig config, AliasService aliasService);
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/a874f399/gateway-test-release-utils/src/main/java/org/apache/hadoop/gateway/GatewayTestConfig.java
----------------------------------------------------------------------
diff --git a/gateway-test-release-utils/src/main/java/org/apache/hadoop/gateway/GatewayTestConfig.java
b/gateway-test-release-utils/src/main/java/org/apache/hadoop/gateway/GatewayTestConfig.java
index f7ea633..e04c581 100644
--- a/gateway-test-release-utils/src/main/java/org/apache/hadoop/gateway/GatewayTestConfig.java
+++ b/gateway-test-release-utils/src/main/java/org/apache/hadoop/gateway/GatewayTestConfig.java
@@ -640,4 +640,14 @@ public class GatewayTestConfig extends Configuration implements GatewayConfig
{
   public String getRemoteConfigurationMonitorClientName() {
     return null;
   }
+
+  @Override
+  public int getClusterMonitorPollingInterval(String type) {
+    return 600;
+  }
+
+  @Override
+  public boolean isClusterMonitorEnabled(String type) {
+    return false;
+  }
 }


Mime
View raw message