private void validateRequest(RequestScheduleRequest request) throws AmbariException {
    if (request.getClusterName() == null) {
      throw new IllegalArgumentException("Cluster name is required.");
    }
    Schedule schedule = request.getSchedule();
    if (schedule != null) {
      getManagementController().getExecutionScheduleManager()
        .validateSchedule(schedule);
    }
    Batch batch = request.getBatch();
    if (batch != null && !batch.getBatchRequests().isEmpty()) {
      // Verify requests can be ordered
      HashSet<Long> orderIdSet = new HashSet<>();
      for (BatchRequest batchRequest : batch.getBatchRequests()) {
        if (batchRequest.getOrderId() == null) {
          throw new AmbariException("No order id provided for batch request. " +
            "" + batchRequest);
        }
        if (orderIdSet.contains(batchRequest.getOrderId())) {
          throw new AmbariException("Duplicate order id provided for batch " +
            "request. " + batchRequest);
        }
        orderIdSet.add(batchRequest.getOrderId());
      }
    }
  }
Currently unsupported operation. Since strong guarantees are required
that no jobs are currently running.
@param request    the request object which defines the set of properties
                  for the resources to be updated
@param predicate  the predicate object which can be used to filter which
                  resources are updated

@return
@throws SystemException
@throws UnsupportedPropertyException
@throws NoSuchResourceException
@throws NoSuchParentResourceException
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestScheduleResourceProvider.java