static void validateAccelerators()

in java/com/google/cloud/deploymentmanager/autogen/SpecValidations.java [561:611]


  static void validateAccelerators(List<AcceleratorSpec> accelerators) {
    if (accelerators.isEmpty()) {
      return;
    }
    checkArgument(accelerators.size() <= 1, "At most one accelerator allowed.");

    AcceleratorSpec accelerator = accelerators.get(0);
    checkArgument(
        accelerator.getTypesList().size() >= 1, "Accelerators must have at least one type.");
    Set<String> gpuTypes = ImmutableSet.copyOf(accelerator.getTypesList());
    Set<String> unsupportedTypes = Sets.difference(gpuTypes, SUPPORTED_ACCELERATOR_TYPES);
    checkArgument(
        unsupportedTypes.isEmpty(), "Unsupported accelerator types: %s", unsupportedTypes);
    checkArgument(accelerator.getMinCount() >= 0, "Accelerator min count must not be negative.");
    checkArgument(
        VALID_GPU_COUNTS.contains(accelerator.getMinCount()),
        "Accelerator min count must be one of: %s",
        VALID_GPU_COUNTS.toString());
    if (accelerator.getMaxCount() != 0) {
      checkArgument(accelerator.getMaxCount() > 0, "Accelerator max count must be greater than 0.");
      checkArgument(
          accelerator.getMinCount() <= accelerator.getMaxCount(),
          "Accelerator min count must not be greater than max count.");
      checkArgument(
          VALID_GPU_COUNTS.contains(accelerator.getMaxCount()),
          "Accelerator max count must be one of: %s",
          VALID_GPU_COUNTS.toString());
    }
    if (accelerator.getDefaultCount() != 0) {
      checkArgument(
          accelerator.getDefaultCount() >= 0, "Accelerator default count must not be negative.");
      checkArgument(
          accelerator.getDefaultCount() >= accelerator.getMinCount(),
          "Accelerator default count must not be less than min count.");
      if (accelerator.getMaxCount() != 0) {
        checkArgument(
            accelerator.getDefaultCount() <= accelerator.getMaxCount(),
            "Accelerator default count must not be greater than max count.");
      }
      checkArgument(
          VALID_GPU_COUNTS.contains(accelerator.getDefaultCount()),
          "Accelerator default count must be one of: %s",
          VALID_GPU_COUNTS.toString());
    }
    if (!accelerator.getDefaultType().isEmpty()) {
      checkArgument(
          gpuTypes.contains(accelerator.getDefaultType()),
          "Default Accelerator Type must be one of %s",
          accelerator.getTypesList());
    }
  }