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

import com.pulumi.core.annotations.CustomType;
import com.pulumi.gcp.vmwareengine.outputs.GetPrivateCloudHcx;
import com.pulumi.gcp.vmwareengine.outputs.GetPrivateCloudManagementCluster;
import com.pulumi.gcp.vmwareengine.outputs.GetPrivateCloudNetworkConfig;
import com.pulumi.gcp.vmwareengine.outputs.GetPrivateCloudNsx;
import com.pulumi.gcp.vmwareengine.outputs.GetPrivateCloudVcenter;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class GetPrivateCloudResult {
    private String description;
    private List<GetPrivateCloudHcx> hcxes;
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    private String id;
    private String location;
    private List<GetPrivateCloudManagementCluster> managementClusters;
    private String name;
    private List<GetPrivateCloudNetworkConfig> networkConfigs;
    private List<GetPrivateCloudNsx> nsxes;
    private @Nullable String project;
    private String state;
    private String uid;
    private List<GetPrivateCloudVcenter> vcenters;

    private GetPrivateCloudResult() {}
    public String description() {
        return this.description;
    }
    public List<GetPrivateCloudHcx> hcxes() {
        return this.hcxes;
    }
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    public String id() {
        return this.id;
    }
    public String location() {
        return this.location;
    }
    public List<GetPrivateCloudManagementCluster> managementClusters() {
        return this.managementClusters;
    }
    public String name() {
        return this.name;
    }
    public List<GetPrivateCloudNetworkConfig> networkConfigs() {
        return this.networkConfigs;
    }
    public List<GetPrivateCloudNsx> nsxes() {
        return this.nsxes;
    }
    public Optional<String> project() {
        return Optional.ofNullable(this.project);
    }
    public String state() {
        return this.state;
    }
    public String uid() {
        return this.uid;
    }
    public List<GetPrivateCloudVcenter> vcenters() {
        return this.vcenters;
    }

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

    public static Builder builder(GetPrivateCloudResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String description;
        private List<GetPrivateCloudHcx> hcxes;
        private String id;
        private String location;
        private List<GetPrivateCloudManagementCluster> managementClusters;
        private String name;
        private List<GetPrivateCloudNetworkConfig> networkConfigs;
        private List<GetPrivateCloudNsx> nsxes;
        private @Nullable String project;
        private String state;
        private String uid;
        private List<GetPrivateCloudVcenter> vcenters;
        public Builder() {}
        public Builder(GetPrivateCloudResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.description = defaults.description;
    	      this.hcxes = defaults.hcxes;
    	      this.id = defaults.id;
    	      this.location = defaults.location;
    	      this.managementClusters = defaults.managementClusters;
    	      this.name = defaults.name;
    	      this.networkConfigs = defaults.networkConfigs;
    	      this.nsxes = defaults.nsxes;
    	      this.project = defaults.project;
    	      this.state = defaults.state;
    	      this.uid = defaults.uid;
    	      this.vcenters = defaults.vcenters;
        }

        @CustomType.Setter
        public Builder description(String description) {
            this.description = Objects.requireNonNull(description);
            return this;
        }
        @CustomType.Setter
        public Builder hcxes(List<GetPrivateCloudHcx> hcxes) {
            this.hcxes = Objects.requireNonNull(hcxes);
            return this;
        }
        public Builder hcxes(GetPrivateCloudHcx... hcxes) {
            return hcxes(List.of(hcxes));
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder location(String location) {
            this.location = Objects.requireNonNull(location);
            return this;
        }
        @CustomType.Setter
        public Builder managementClusters(List<GetPrivateCloudManagementCluster> managementClusters) {
            this.managementClusters = Objects.requireNonNull(managementClusters);
            return this;
        }
        public Builder managementClusters(GetPrivateCloudManagementCluster... managementClusters) {
            return managementClusters(List.of(managementClusters));
        }
        @CustomType.Setter
        public Builder name(String name) {
            this.name = Objects.requireNonNull(name);
            return this;
        }
        @CustomType.Setter
        public Builder networkConfigs(List<GetPrivateCloudNetworkConfig> networkConfigs) {
            this.networkConfigs = Objects.requireNonNull(networkConfigs);
            return this;
        }
        public Builder networkConfigs(GetPrivateCloudNetworkConfig... networkConfigs) {
            return networkConfigs(List.of(networkConfigs));
        }
        @CustomType.Setter
        public Builder nsxes(List<GetPrivateCloudNsx> nsxes) {
            this.nsxes = Objects.requireNonNull(nsxes);
            return this;
        }
        public Builder nsxes(GetPrivateCloudNsx... nsxes) {
            return nsxes(List.of(nsxes));
        }
        @CustomType.Setter
        public Builder project(@Nullable String project) {
            this.project = project;
            return this;
        }
        @CustomType.Setter
        public Builder state(String state) {
            this.state = Objects.requireNonNull(state);
            return this;
        }
        @CustomType.Setter
        public Builder uid(String uid) {
            this.uid = Objects.requireNonNull(uid);
            return this;
        }
        @CustomType.Setter
        public Builder vcenters(List<GetPrivateCloudVcenter> vcenters) {
            this.vcenters = Objects.requireNonNull(vcenters);
            return this;
        }
        public Builder vcenters(GetPrivateCloudVcenter... vcenters) {
            return vcenters(List.of(vcenters));
        }
        public GetPrivateCloudResult build() {
            final var o = new GetPrivateCloudResult();
            o.description = description;
            o.hcxes = hcxes;
            o.id = id;
            o.location = location;
            o.managementClusters = managementClusters;
            o.name = name;
            o.networkConfigs = networkConfigs;
            o.nsxes = nsxes;
            o.project = project;
            o.state = state;
            o.uid = uid;
            o.vcenters = vcenters;
            return o;
        }
    }
}
