// *** 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.gcp.cloudrun.outputs;

import com.pulumi.core.annotations.CustomType;
import com.pulumi.gcp.cloudrun.outputs.GetServiceTemplateSpecContainer;
import com.pulumi.gcp.cloudrun.outputs.GetServiceTemplateSpecVolume;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;

@CustomType
public final class GetServiceTemplateSpec {
    private Integer containerConcurrency;
    private List<GetServiceTemplateSpecContainer> containers;
    private String serviceAccountName;
    private String servingState;
    private Integer timeoutSeconds;
    private List<GetServiceTemplateSpecVolume> volumes;

    private GetServiceTemplateSpec() {}
    public Integer containerConcurrency() {
        return this.containerConcurrency;
    }
    public List<GetServiceTemplateSpecContainer> containers() {
        return this.containers;
    }
    public String serviceAccountName() {
        return this.serviceAccountName;
    }
    public String servingState() {
        return this.servingState;
    }
    public Integer timeoutSeconds() {
        return this.timeoutSeconds;
    }
    public List<GetServiceTemplateSpecVolume> volumes() {
        return this.volumes;
    }

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

    public static Builder builder(GetServiceTemplateSpec defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private Integer containerConcurrency;
        private List<GetServiceTemplateSpecContainer> containers;
        private String serviceAccountName;
        private String servingState;
        private Integer timeoutSeconds;
        private List<GetServiceTemplateSpecVolume> volumes;
        public Builder() {}
        public Builder(GetServiceTemplateSpec defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.containerConcurrency = defaults.containerConcurrency;
    	      this.containers = defaults.containers;
    	      this.serviceAccountName = defaults.serviceAccountName;
    	      this.servingState = defaults.servingState;
    	      this.timeoutSeconds = defaults.timeoutSeconds;
    	      this.volumes = defaults.volumes;
        }

        @CustomType.Setter
        public Builder containerConcurrency(Integer containerConcurrency) {
            this.containerConcurrency = Objects.requireNonNull(containerConcurrency);
            return this;
        }
        @CustomType.Setter
        public Builder containers(List<GetServiceTemplateSpecContainer> containers) {
            this.containers = Objects.requireNonNull(containers);
            return this;
        }
        public Builder containers(GetServiceTemplateSpecContainer... containers) {
            return containers(List.of(containers));
        }
        @CustomType.Setter
        public Builder serviceAccountName(String serviceAccountName) {
            this.serviceAccountName = Objects.requireNonNull(serviceAccountName);
            return this;
        }
        @CustomType.Setter
        public Builder servingState(String servingState) {
            this.servingState = Objects.requireNonNull(servingState);
            return this;
        }
        @CustomType.Setter
        public Builder timeoutSeconds(Integer timeoutSeconds) {
            this.timeoutSeconds = Objects.requireNonNull(timeoutSeconds);
            return this;
        }
        @CustomType.Setter
        public Builder volumes(List<GetServiceTemplateSpecVolume> volumes) {
            this.volumes = Objects.requireNonNull(volumes);
            return this;
        }
        public Builder volumes(GetServiceTemplateSpecVolume... volumes) {
            return volumes(List.of(volumes));
        }
        public GetServiceTemplateSpec build() {
            final var o = new GetServiceTemplateSpec();
            o.containerConcurrency = containerConcurrency;
            o.containers = containers;
            o.serviceAccountName = serviceAccountName;
            o.servingState = servingState;
            o.timeoutSeconds = timeoutSeconds;
            o.volumes = volumes;
            return o;
        }
    }
}
