private List<Transfer> getValidTransfers(Cluster cluster, String configType, List<Transfer> transfers){
    List<Transfer> allowedTransfers = new ArrayList<>();
    for (Transfer transfer : transfers) {
      String key = "";
      if(transfer.operation == TransferOperation.DELETE) {
        key = transfer.deleteKey;
      } else {
        key = transfer.fromKey;
      }

      if(isValidConditionSettings(cluster, configType, key,
          transfer.ifKey, transfer.ifType, transfer.ifValue, transfer.ifKeyState)) {
        allowedTransfers.add(transfer);
      }
    }

    return allowedTransfers;
  }
Gets a map containing the following properties pertaining to the
configuration value to change:
<ul>
<li>{@link #PARAMETER_CONFIG_TYPE} - the configuration type (ie hdfs-site)</li>
<li>{@link #PARAMETER_KEY_VALUE_PAIRS} - key/value pairs for the
configurations</li>
<li>{@link #PARAMETER_KEY_VALUE_PAIRS} - key/value pairs for the
configurations</li>
<li>{@link #PARAMETER_TRANSFERS} - COPY/MOVE/DELETE changes</li>
<li>{@link #PARAMETER_REPLACEMENTS} - value replacements</li>
</ul>

@param cluster
         the cluster to use when retrieving conditional properties to test
         against (not {@code null}).
@return the a map containing the changes to make. This could potentially be
        an empty map if no conditions are met. Callers should decide how to
        handle a configuration task that is unable to set any configuration
        values.
ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/ConfigureTask.java