public void process() throws AmbariException, ConfigurationTopologyException {
    // this will update the topo cluster config and all host group configs in the cluster topology
    Set<String> updatedConfigTypes = new HashSet<>();

    Map<String, Map<String, String>> userProvidedConfigurations = clusterTopology.getConfiguration().getFullProperties(1);

    try {
      if (configureSecurity) {
        Configuration clusterConfiguration = clusterTopology.getConfiguration();
        Map<String, Map<String, String>> existingConfigurations = clusterConfiguration.getFullProperties();
        updatedConfigTypes.addAll(configureKerberos(clusterConfiguration, existingConfigurations));
      }

      // obtain recommended configurations before config updates
      if (!ConfigRecommendationStrategy.NEVER_APPLY.equals(this.clusterTopology.getConfigRecommendationStrategy())) {
        // get merged properties form Blueprint & cluster template (this doesn't contains stack default values)
        stackAdvisorBlueprintProcessor.adviseConfiguration(this.clusterTopology, userProvidedConfigurations);
      }

      updatedConfigTypes.addAll(configurationProcessor.doUpdateForClusterCreate());
    } catch (ConfigurationTopologyException e) {
      //log and continue to set configs on cluster to make progress
      LOG.error("An exception occurred while doing configuration topology update: " + e, e);
    }

    setConfigurationsOnCluster(clusterTopology, TopologyManager.TOPOLOGY_RESOLVED_TAG, updatedConfigTypes);
  }
Remove config-types, if there is no any services related to them (except cluster-env and global).
ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterConfigurationRequest.java