// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.aws.ecs.outputs;

import com.pulumi.aws.ecs.outputs.GetTaskExecutionOverridesContainerOverride;
import com.pulumi.aws.ecs.outputs.GetTaskExecutionOverridesInferenceAcceleratorOverride;
import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class GetTaskExecutionOverrides {
    /**
     * @return One or more container overrides that are sent to a task. See below.
     * 
     */
    private @Nullable List<GetTaskExecutionOverridesContainerOverride> containerOverrides;
    /**
     * @return The CPU override for the task.
     * 
     */
    private @Nullable String cpu;
    /**
     * @return Amazon Resource Name (ARN) of the task execution role override for the task.
     * 
     */
    private @Nullable String executionRoleArn;
    /**
     * @return Elastic Inference accelerator override for the task. See below.
     * 
     */
    private @Nullable List<GetTaskExecutionOverridesInferenceAcceleratorOverride> inferenceAcceleratorOverrides;
    /**
     * @return The memory override for the task.
     * 
     */
    private @Nullable String memory;
    /**
     * @return Amazon Resource Name (ARN) of the role that containers in this task can assume.
     * 
     */
    private @Nullable String taskRoleArn;

    private GetTaskExecutionOverrides() {}
    /**
     * @return One or more container overrides that are sent to a task. See below.
     * 
     */
    public List<GetTaskExecutionOverridesContainerOverride> containerOverrides() {
        return this.containerOverrides == null ? List.of() : this.containerOverrides;
    }
    /**
     * @return The CPU override for the task.
     * 
     */
    public Optional<String> cpu() {
        return Optional.ofNullable(this.cpu);
    }
    /**
     * @return Amazon Resource Name (ARN) of the task execution role override for the task.
     * 
     */
    public Optional<String> executionRoleArn() {
        return Optional.ofNullable(this.executionRoleArn);
    }
    /**
     * @return Elastic Inference accelerator override for the task. See below.
     * 
     */
    public List<GetTaskExecutionOverridesInferenceAcceleratorOverride> inferenceAcceleratorOverrides() {
        return this.inferenceAcceleratorOverrides == null ? List.of() : this.inferenceAcceleratorOverrides;
    }
    /**
     * @return The memory override for the task.
     * 
     */
    public Optional<String> memory() {
        return Optional.ofNullable(this.memory);
    }
    /**
     * @return Amazon Resource Name (ARN) of the role that containers in this task can assume.
     * 
     */
    public Optional<String> taskRoleArn() {
        return Optional.ofNullable(this.taskRoleArn);
    }

    public static Builder builder() {
        return new Builder();
    }

    public static Builder builder(GetTaskExecutionOverrides defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private @Nullable List<GetTaskExecutionOverridesContainerOverride> containerOverrides;
        private @Nullable String cpu;
        private @Nullable String executionRoleArn;
        private @Nullable List<GetTaskExecutionOverridesInferenceAcceleratorOverride> inferenceAcceleratorOverrides;
        private @Nullable String memory;
        private @Nullable String taskRoleArn;
        public Builder() {}
        public Builder(GetTaskExecutionOverrides defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.containerOverrides = defaults.containerOverrides;
    	      this.cpu = defaults.cpu;
    	      this.executionRoleArn = defaults.executionRoleArn;
    	      this.inferenceAcceleratorOverrides = defaults.inferenceAcceleratorOverrides;
    	      this.memory = defaults.memory;
    	      this.taskRoleArn = defaults.taskRoleArn;
        }

        @CustomType.Setter
        public Builder containerOverrides(@Nullable List<GetTaskExecutionOverridesContainerOverride> containerOverrides) {
            this.containerOverrides = containerOverrides;
            return this;
        }
        public Builder containerOverrides(GetTaskExecutionOverridesContainerOverride... containerOverrides) {
            return containerOverrides(List.of(containerOverrides));
        }
        @CustomType.Setter
        public Builder cpu(@Nullable String cpu) {
            this.cpu = cpu;
            return this;
        }
        @CustomType.Setter
        public Builder executionRoleArn(@Nullable String executionRoleArn) {
            this.executionRoleArn = executionRoleArn;
            return this;
        }
        @CustomType.Setter
        public Builder inferenceAcceleratorOverrides(@Nullable List<GetTaskExecutionOverridesInferenceAcceleratorOverride> inferenceAcceleratorOverrides) {
            this.inferenceAcceleratorOverrides = inferenceAcceleratorOverrides;
            return this;
        }
        public Builder inferenceAcceleratorOverrides(GetTaskExecutionOverridesInferenceAcceleratorOverride... inferenceAcceleratorOverrides) {
            return inferenceAcceleratorOverrides(List.of(inferenceAcceleratorOverrides));
        }
        @CustomType.Setter
        public Builder memory(@Nullable String memory) {
            this.memory = memory;
            return this;
        }
        @CustomType.Setter
        public Builder taskRoleArn(@Nullable String taskRoleArn) {
            this.taskRoleArn = taskRoleArn;
            return this;
        }
        public GetTaskExecutionOverrides build() {
            final var o = new GetTaskExecutionOverrides();
            o.containerOverrides = containerOverrides;
            o.cpu = cpu;
            o.executionRoleArn = executionRoleArn;
            o.inferenceAcceleratorOverrides = inferenceAcceleratorOverrides;
            o.memory = memory;
            o.taskRoleArn = taskRoleArn;
            return o;
        }
    }
}
