public void updateBulkConfigType(Cluster cluster, StackId stackId, AmbariManagementController controller,
                                   Iterable<String> configTypes,
                                   Map<String, Map<String, String>> updates,
                                   Map<String, Collection<String>> removals,
                                   String authenticatedUserName,
                                   String serviceVersionNote) throws AmbariException, AmbariRuntimeException {

    Map<String, DesiredConfig> desiredConfig =  cluster.getDesiredConfigs();

    Boolean[] doUpdateAgentConfigs = {false};
    LOG.info("Bulk config update. Starting...");
    configTypes.forEach(configType -> {
      try {
        Boolean updated = updateConfigType(
                cluster, stackId, controller,
                configType,
                updates.get(configType),
                removals.get(configType),
                authenticatedUserName,
                serviceVersionNote,
                desiredConfig,
                false
        );
        LOG.info("Bulk config update. Working with {}...{}", configType, updated ? "updated" : "not updated");
        doUpdateAgentConfigs[0] = doUpdateAgentConfigs[0] || updated;
      } catch (AmbariException e) {
        throw new AmbariRuntimeException(e);
      }
    });

    LOG.info("Bulk config update, agent update is {} required", (doUpdateAgentConfigs[0]) ? "" : "not");

    if (doUpdateAgentConfigs[0]) {
      updateAgentConfigs(Collections.singleton(cluster.getClusterName()));
    }
  }
Retrieves a Set of PropertyInfo objects containing the relevant properties for the requested
service.
<p/>
If <code>removeExcluded</code> is <code>true</code>, the service's excluded configuration types
are used to prune off PropertyInfos that should be ignored; else if <code>false</code>, all
PropertyInfos will be returned.

@param stackId        a StackId declaring the relevant stack
@param serviceName    a String containing the requested service's name
@param removeExcluded a boolean value indicating whether to remove properties from excluded
                      configuration types (<code>true</code>) or return the complete set of properties regardless of exclusions (<code>false</code>)
@return a Set of PropertyInfo objects for the requested service
@throws AmbariException if the requested stack or the requested service is not found
ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java