@Override
  @Transactional
  public synchronized RequestStatusResponse updateClusters(Set<ClusterRequest> requests,
                                                           Map<String, String> requestProperties,
                                                           boolean fireAgentUpdates, boolean refreshCluster)
      throws AmbariException, AuthorizationException {

    RequestStatusResponse response = null;

    // We have to allow for multiple requests to account for multiple
    // configuration updates (create multiple configuration resources)...
    for (ClusterRequest request : requests) {
      response = updateCluster(request, requestProperties, fireAgentUpdates, refreshCluster);
    }
    return response;
  }
Creates a configuration.
<p>
This implementation ensures the authenticated user is authorized to create the new configuration
based on the details of what properties are being changed and the authorizations the authenticated
user has been granted.
<p>
Example
<ul>
<li>
If the user is attempting to change a service-level configuration that user must be granted the
<code>SERVICE_MODIFY_CONFIGS</code> privilege (authorization)
</li>
<li>
If the user is attempting to change the cluster-wide value to enable or disable auto-start
(<code>cluster-env/recovery_enabled</code>), that user must be granted the
<code>CLUSTER_MANAGE_AUTO_START</code> privilege (authorization)
</li>
</ul>

@param request the request object which defines the configuration.
@throws AmbariException when the configuration cannot be created.
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java