code: @Nonnull
      @Override
      public NodeProvisioner.StrategyDecision apply(@Nonnull NodeProvisioner.StrategyState strategyState) {
          LOG.debug("Applying provisioning.");
          final Label label = strategyState.getLabel();
          LoadStatisticsSnapshot snapshot = strategyState.getSnapshot();
  
          List<DockerCloud> provisionClouds;
          DockerCloudOrder cloudOrder = dockerGlobalConfig().getCloudOrder();
          if (isNull(cloudOrder)) {
              provisionClouds = DEFAULT.getDockerClouds(label);
          } else {
              provisionClouds = cloudOrder.getDockerClouds(label);
          }
  
          for (DockerCloud dockerCloud : provisionClouds) {
              for (DockerSlaveTemplate template : dockerCloud.getTemplates(label)) {
                  if (notAllowedStrategy(template)) {
                      continue;
                  }
  
                  int availableCapacity = snapshot.getAvailableExecutors() +
                          snapshot.getConnectingExecutors() +
                          strategyState.getAdditionalPlannedCapacity() +
                          strategyState.getPlannedCapacitySnapshot();
  
                  int currentDemand = snapshot.getQueueLength();
  
                  LOG.debug("Available capacity={}, currentDemand={}", availableCapacity, currentDemand);
  
                  if (availableCapacity < currentDemand) {
                      // may happen that would be provisioned with other template
                      Collection<PlannedNode> plannedNodes = dockerCloud.provision(label, currentDemand - availableCapacity);
                      LOG.debug("Planned {} new nodes", plannedNodes.size());
  
                      strategyState.recordPendingLaunches(plannedNodes);
                      // FIXME calculate executors number?
                      availableCapacity += plannedNodes.size();
                      LOG.debug("After '{}' provisioning, available capacity={}, currentDemand={}",
                              dockerCloud, availableCapacity, currentDemand);
                  }
  
                  if (availableCapacity >= currentDemand) {
                      LOG.debug("Provisioning completed");
                      return NodeProvisioner.StrategyDecision.PROVISIONING_COMPLETED;
                  } else {
                      LOG.debug("Provisioning not complete, trying next template");
                  }
              }
  
              LOG.debug("Provisioning not complete, trying next YAD Cloud");
          }
  
          LOG.debug("Provisioning not complete, consulting remaining strategies");
          return NodeProvisioner.StrategyDecision.CONSULT_REMAINING_STRATEGIES;
      }
docs: Do asap provisioning for OnceRetention with one executor.  The
  provisioning strategy is to attempt to find a random least loaded cloud.
  Some other configuration may also want such behaviour?