public FormValidation doCheckName(@QueryParameter String name) {
   if (Strings.isNullOrEmpty(name)) {
     return FormValidation.error("Must be set");
   } else if (!DropletName.isValidSlaveName(name)) {
     return FormValidation.error("Must consist of A-Z, a-z, 0-9 and . symbols");
   } else {
     return FormValidation.ok();
   }
 }
  public boolean isInstanceCapReachedRemote(List<Droplet> droplets, String cloudName)
      throws DigitalOceanException {
    LOGGER.log(Level.INFO, "slave limit check");
    int count = 0;
    for (Droplet droplet : droplets) {
      if ((droplet.isActive() || droplet.isNew())) {
        if (DropletName.isDropletInstanceOfSlave(droplet.getName(), cloudName, name)) {
          count++;
        }
      }
    }

    return count >= instanceCap;
  }
  public boolean isInstanceCapReachedLocal(String cloudName) {
    if (instanceCap == 0) {
      return false;
    }
    LOGGER.log(Level.INFO, "slave limit check");

    int count = 0;
    List<Node> nodes = Jenkins.getInstance().getNodes();
    for (Node n : nodes) {
      if (DropletName.isDropletInstanceOfSlave(n.getDisplayName(), cloudName, name)) {
        count++;
      }
    }

    return count >= instanceCap;
  }