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

import com.pulumi.core.annotations.CustomType;
import com.pulumi.gcp.compute.outputs.GetRegionNetworkEndpointGroupAppEngine;
import com.pulumi.gcp.compute.outputs.GetRegionNetworkEndpointGroupCloudFunction;
import com.pulumi.gcp.compute.outputs.GetRegionNetworkEndpointGroupCloudRun;
import com.pulumi.gcp.compute.outputs.GetRegionNetworkEndpointGroupServerlessDeployment;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class GetRegionNetworkEndpointGroupResult {
    private List<GetRegionNetworkEndpointGroupAppEngine> appEngines;
    private List<GetRegionNetworkEndpointGroupCloudFunction> cloudFunctions;
    private List<GetRegionNetworkEndpointGroupCloudRun> cloudRuns;
    /**
     * @return The RNEG description.
     * 
     */
    private String description;
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    private String id;
    private @Nullable String name;
    /**
     * @return The network to which all network endpoints in the RNEG belong.
     * 
     */
    private String network;
    /**
     * @return Type of network endpoints in this network endpoint group.
     * 
     */
    private String networkEndpointType;
    private @Nullable String project;
    /**
     * @return The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment.
     * 
     */
    private String pscTargetService;
    private @Nullable String region;
    private @Nullable String selfLink;
    private List<GetRegionNetworkEndpointGroupServerlessDeployment> serverlessDeployments;
    /**
     * @return subnetwork to which all network endpoints in the RNEG belong.
     * 
     */
    private String subnetwork;

    private GetRegionNetworkEndpointGroupResult() {}
    public List<GetRegionNetworkEndpointGroupAppEngine> appEngines() {
        return this.appEngines;
    }
    public List<GetRegionNetworkEndpointGroupCloudFunction> cloudFunctions() {
        return this.cloudFunctions;
    }
    public List<GetRegionNetworkEndpointGroupCloudRun> cloudRuns() {
        return this.cloudRuns;
    }
    /**
     * @return The RNEG description.
     * 
     */
    public String description() {
        return this.description;
    }
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    public String id() {
        return this.id;
    }
    public Optional<String> name() {
        return Optional.ofNullable(this.name);
    }
    /**
     * @return The network to which all network endpoints in the RNEG belong.
     * 
     */
    public String network() {
        return this.network;
    }
    /**
     * @return Type of network endpoints in this network endpoint group.
     * 
     */
    public String networkEndpointType() {
        return this.networkEndpointType;
    }
    public Optional<String> project() {
        return Optional.ofNullable(this.project);
    }
    /**
     * @return The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment.
     * 
     */
    public String pscTargetService() {
        return this.pscTargetService;
    }
    public Optional<String> region() {
        return Optional.ofNullable(this.region);
    }
    public Optional<String> selfLink() {
        return Optional.ofNullable(this.selfLink);
    }
    public List<GetRegionNetworkEndpointGroupServerlessDeployment> serverlessDeployments() {
        return this.serverlessDeployments;
    }
    /**
     * @return subnetwork to which all network endpoints in the RNEG belong.
     * 
     */
    public String subnetwork() {
        return this.subnetwork;
    }

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

    public static Builder builder(GetRegionNetworkEndpointGroupResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private List<GetRegionNetworkEndpointGroupAppEngine> appEngines;
        private List<GetRegionNetworkEndpointGroupCloudFunction> cloudFunctions;
        private List<GetRegionNetworkEndpointGroupCloudRun> cloudRuns;
        private String description;
        private String id;
        private @Nullable String name;
        private String network;
        private String networkEndpointType;
        private @Nullable String project;
        private String pscTargetService;
        private @Nullable String region;
        private @Nullable String selfLink;
        private List<GetRegionNetworkEndpointGroupServerlessDeployment> serverlessDeployments;
        private String subnetwork;
        public Builder() {}
        public Builder(GetRegionNetworkEndpointGroupResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.appEngines = defaults.appEngines;
    	      this.cloudFunctions = defaults.cloudFunctions;
    	      this.cloudRuns = defaults.cloudRuns;
    	      this.description = defaults.description;
    	      this.id = defaults.id;
    	      this.name = defaults.name;
    	      this.network = defaults.network;
    	      this.networkEndpointType = defaults.networkEndpointType;
    	      this.project = defaults.project;
    	      this.pscTargetService = defaults.pscTargetService;
    	      this.region = defaults.region;
    	      this.selfLink = defaults.selfLink;
    	      this.serverlessDeployments = defaults.serverlessDeployments;
    	      this.subnetwork = defaults.subnetwork;
        }

        @CustomType.Setter
        public Builder appEngines(List<GetRegionNetworkEndpointGroupAppEngine> appEngines) {
            this.appEngines = Objects.requireNonNull(appEngines);
            return this;
        }
        public Builder appEngines(GetRegionNetworkEndpointGroupAppEngine... appEngines) {
            return appEngines(List.of(appEngines));
        }
        @CustomType.Setter
        public Builder cloudFunctions(List<GetRegionNetworkEndpointGroupCloudFunction> cloudFunctions) {
            this.cloudFunctions = Objects.requireNonNull(cloudFunctions);
            return this;
        }
        public Builder cloudFunctions(GetRegionNetworkEndpointGroupCloudFunction... cloudFunctions) {
            return cloudFunctions(List.of(cloudFunctions));
        }
        @CustomType.Setter
        public Builder cloudRuns(List<GetRegionNetworkEndpointGroupCloudRun> cloudRuns) {
            this.cloudRuns = Objects.requireNonNull(cloudRuns);
            return this;
        }
        public Builder cloudRuns(GetRegionNetworkEndpointGroupCloudRun... cloudRuns) {
            return cloudRuns(List.of(cloudRuns));
        }
        @CustomType.Setter
        public Builder description(String description) {
            this.description = Objects.requireNonNull(description);
            return this;
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder name(@Nullable String name) {
            this.name = name;
            return this;
        }
        @CustomType.Setter
        public Builder network(String network) {
            this.network = Objects.requireNonNull(network);
            return this;
        }
        @CustomType.Setter
        public Builder networkEndpointType(String networkEndpointType) {
            this.networkEndpointType = Objects.requireNonNull(networkEndpointType);
            return this;
        }
        @CustomType.Setter
        public Builder project(@Nullable String project) {
            this.project = project;
            return this;
        }
        @CustomType.Setter
        public Builder pscTargetService(String pscTargetService) {
            this.pscTargetService = Objects.requireNonNull(pscTargetService);
            return this;
        }
        @CustomType.Setter
        public Builder region(@Nullable String region) {
            this.region = region;
            return this;
        }
        @CustomType.Setter
        public Builder selfLink(@Nullable String selfLink) {
            this.selfLink = selfLink;
            return this;
        }
        @CustomType.Setter
        public Builder serverlessDeployments(List<GetRegionNetworkEndpointGroupServerlessDeployment> serverlessDeployments) {
            this.serverlessDeployments = Objects.requireNonNull(serverlessDeployments);
            return this;
        }
        public Builder serverlessDeployments(GetRegionNetworkEndpointGroupServerlessDeployment... serverlessDeployments) {
            return serverlessDeployments(List.of(serverlessDeployments));
        }
        @CustomType.Setter
        public Builder subnetwork(String subnetwork) {
            this.subnetwork = Objects.requireNonNull(subnetwork);
            return this;
        }
        public GetRegionNetworkEndpointGroupResult build() {
            final var o = new GetRegionNetworkEndpointGroupResult();
            o.appEngines = appEngines;
            o.cloudFunctions = cloudFunctions;
            o.cloudRuns = cloudRuns;
            o.description = description;
            o.id = id;
            o.name = name;
            o.network = network;
            o.networkEndpointType = networkEndpointType;
            o.project = project;
            o.pscTargetService = pscTargetService;
            o.region = region;
            o.selfLink = selfLink;
            o.serverlessDeployments = serverlessDeployments;
            o.subnetwork = subnetwork;
            return o;
        }
    }
}
