@Override
  public String getJMXProtocol(String clusterName, String componentName) {
    String mapKey = String.format("%s-%s", clusterName, componentName);
    String jmxProtocolString = clusterJmxProtocolMap.get(mapKey);
    if (null != jmxProtocolString) {
      return jmxProtocolString;
    }

    try {
      if (componentName.equals("NAMENODE") || componentName.equals("DATANODE") || componentName.equals("RESOURCEMANAGER") || componentName.equals("NODEMANAGER") || componentName.equals("JOURNALNODE") || componentName.equals("HISTORYSERVER") || componentName.equals("HBASE_MASTER") || componentName.equals("HBASE_REGIONSERVER")) {
        Service.Type service = componentServiceMap.get(componentName);
        String config = serviceConfigTypes.get(service);
        String newSiteConfigVersion = getDesiredConfigVersion(clusterName, config);
        String cachedSiteConfigVersion = clusterHdfsSiteConfigVersionMap.get(clusterName);
        if (!newSiteConfigVersion.equals(cachedSiteConfigVersion)) {
          Map<String, String> protocolMap = getDesiredConfigMap(
              clusterName,
              newSiteConfigVersion, config,
              jmxDesiredProperties.get(componentName));
          boolean isHttpsEnabled;
          String propetyVal = protocolMap.get(componentName);
          if (service.equals(Service.Type.HBASE)) {
            isHttpsEnabled = Boolean.valueOf(propetyVal);
          } else {
            isHttpsEnabled = PROPERTY_HDFS_HTTP_POLICY_VALUE_HTTPS_ONLY.equals(propetyVal);
          }
          jmxProtocolString = getJMXProtocolStringFromBool(isHttpsEnabled);
        }
      } else {
        jmxProtocolString = "http";
      }
    } catch (Exception e) {
      LOG.info("Exception while detecting JMX protocol for clusterName = " + clusterName +
          ", componentName = " + componentName, e);
      LOG.info("Defaulting JMX to HTTP protocol for  for clusterName = " + clusterName +
          ", componentName = " + componentName +
          componentName);
      jmxProtocolString = "http";
    }
    if (jmxProtocolString == null) {
      LOG.debug("Detected JMX protocol is null for clusterName = {}, componentName = {}", clusterName, componentName);
      LOG.debug("Defaulting JMX to HTTP protocol for  for clusterName = {}, componentName = {}", clusterName, componentName);
      jmxProtocolString = "http";
    }
    if (LOG.isDebugEnabled()) {
      LOG.debug("JMXProtocol = {}, for clusterName={}, componentName = {}", jmxProtocolString, clusterName, componentName);
    }
    clusterJmxProtocolMap.put(mapKey, jmxProtocolString);
    return jmxProtocolString;
  }
Create the Ganglia host component property provider for the given type.
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java