// *** 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 java.lang.Integer;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class GetNetworkEndpointGroupResult {
    /**
     * @return The NEG default port.
     * 
     */
    private Integer defaultPort;
    /**
     * @return The NEG 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 NEG belong.
     * 
     */
    private String network;
    /**
     * @return Type of network endpoints in this network endpoint group.
     * 
     */
    private String networkEndpointType;
    private @Nullable String project;
    private @Nullable String selfLink;
    /**
     * @return Number of network endpoints in the network endpoint group.
     * 
     */
    private Integer size;
    /**
     * @return subnetwork to which all network endpoints in the NEG belong.
     * 
     */
    private String subnetwork;
    private @Nullable String zone;

    private GetNetworkEndpointGroupResult() {}
    /**
     * @return The NEG default port.
     * 
     */
    public Integer defaultPort() {
        return this.defaultPort;
    }
    /**
     * @return The NEG 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 NEG 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);
    }
    public Optional<String> selfLink() {
        return Optional.ofNullable(this.selfLink);
    }
    /**
     * @return Number of network endpoints in the network endpoint group.
     * 
     */
    public Integer size() {
        return this.size;
    }
    /**
     * @return subnetwork to which all network endpoints in the NEG belong.
     * 
     */
    public String subnetwork() {
        return this.subnetwork;
    }
    public Optional<String> zone() {
        return Optional.ofNullable(this.zone);
    }

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

    public static Builder builder(GetNetworkEndpointGroupResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private Integer defaultPort;
        private String description;
        private String id;
        private @Nullable String name;
        private String network;
        private String networkEndpointType;
        private @Nullable String project;
        private @Nullable String selfLink;
        private Integer size;
        private String subnetwork;
        private @Nullable String zone;
        public Builder() {}
        public Builder(GetNetworkEndpointGroupResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.defaultPort = defaults.defaultPort;
    	      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.selfLink = defaults.selfLink;
    	      this.size = defaults.size;
    	      this.subnetwork = defaults.subnetwork;
    	      this.zone = defaults.zone;
        }

        @CustomType.Setter
        public Builder defaultPort(Integer defaultPort) {
            this.defaultPort = Objects.requireNonNull(defaultPort);
            return this;
        }
        @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 selfLink(@Nullable String selfLink) {
            this.selfLink = selfLink;
            return this;
        }
        @CustomType.Setter
        public Builder size(Integer size) {
            this.size = Objects.requireNonNull(size);
            return this;
        }
        @CustomType.Setter
        public Builder subnetwork(String subnetwork) {
            this.subnetwork = Objects.requireNonNull(subnetwork);
            return this;
        }
        @CustomType.Setter
        public Builder zone(@Nullable String zone) {
            this.zone = zone;
            return this;
        }
        public GetNetworkEndpointGroupResult build() {
            final var o = new GetNetworkEndpointGroupResult();
            o.defaultPort = defaultPort;
            o.description = description;
            o.id = id;
            o.name = name;
            o.network = network;
            o.networkEndpointType = networkEndpointType;
            o.project = project;
            o.selfLink = selfLink;
            o.size = size;
            o.subnetwork = subnetwork;
            o.zone = zone;
            return o;
        }
    }
}
