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

import com.pulumi.core.annotations.CustomType;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigCloudrunConfig;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigConfigConnectorConfig;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigDnsCacheConfig;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigGcePersistentDiskCsiDriverConfig;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigGcpFilestoreCsiDriverConfig;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigGcsFuseCsiDriverConfig;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigGkeBackupAgentConfig;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigHorizontalPodAutoscaling;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigHttpLoadBalancing;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigIstioConfig;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigKalmConfig;
import com.pulumi.gcp.container.outputs.GetClusterAddonsConfigNetworkPolicyConfig;
import java.util.List;
import java.util.Objects;

@CustomType
public final class GetClusterAddonsConfig {
    private List<GetClusterAddonsConfigCloudrunConfig> cloudrunConfigs;
    private List<GetClusterAddonsConfigConfigConnectorConfig> configConnectorConfigs;
    private List<GetClusterAddonsConfigDnsCacheConfig> dnsCacheConfigs;
    private List<GetClusterAddonsConfigGcePersistentDiskCsiDriverConfig> gcePersistentDiskCsiDriverConfigs;
    private List<GetClusterAddonsConfigGcpFilestoreCsiDriverConfig> gcpFilestoreCsiDriverConfigs;
    private List<GetClusterAddonsConfigGcsFuseCsiDriverConfig> gcsFuseCsiDriverConfigs;
    private List<GetClusterAddonsConfigGkeBackupAgentConfig> gkeBackupAgentConfigs;
    private List<GetClusterAddonsConfigHorizontalPodAutoscaling> horizontalPodAutoscalings;
    private List<GetClusterAddonsConfigHttpLoadBalancing> httpLoadBalancings;
    private List<GetClusterAddonsConfigIstioConfig> istioConfigs;
    private List<GetClusterAddonsConfigKalmConfig> kalmConfigs;
    private List<GetClusterAddonsConfigNetworkPolicyConfig> networkPolicyConfigs;

    private GetClusterAddonsConfig() {}
    public List<GetClusterAddonsConfigCloudrunConfig> cloudrunConfigs() {
        return this.cloudrunConfigs;
    }
    public List<GetClusterAddonsConfigConfigConnectorConfig> configConnectorConfigs() {
        return this.configConnectorConfigs;
    }
    public List<GetClusterAddonsConfigDnsCacheConfig> dnsCacheConfigs() {
        return this.dnsCacheConfigs;
    }
    public List<GetClusterAddonsConfigGcePersistentDiskCsiDriverConfig> gcePersistentDiskCsiDriverConfigs() {
        return this.gcePersistentDiskCsiDriverConfigs;
    }
    public List<GetClusterAddonsConfigGcpFilestoreCsiDriverConfig> gcpFilestoreCsiDriverConfigs() {
        return this.gcpFilestoreCsiDriverConfigs;
    }
    public List<GetClusterAddonsConfigGcsFuseCsiDriverConfig> gcsFuseCsiDriverConfigs() {
        return this.gcsFuseCsiDriverConfigs;
    }
    public List<GetClusterAddonsConfigGkeBackupAgentConfig> gkeBackupAgentConfigs() {
        return this.gkeBackupAgentConfigs;
    }
    public List<GetClusterAddonsConfigHorizontalPodAutoscaling> horizontalPodAutoscalings() {
        return this.horizontalPodAutoscalings;
    }
    public List<GetClusterAddonsConfigHttpLoadBalancing> httpLoadBalancings() {
        return this.httpLoadBalancings;
    }
    public List<GetClusterAddonsConfigIstioConfig> istioConfigs() {
        return this.istioConfigs;
    }
    public List<GetClusterAddonsConfigKalmConfig> kalmConfigs() {
        return this.kalmConfigs;
    }
    public List<GetClusterAddonsConfigNetworkPolicyConfig> networkPolicyConfigs() {
        return this.networkPolicyConfigs;
    }

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

    public static Builder builder(GetClusterAddonsConfig defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private List<GetClusterAddonsConfigCloudrunConfig> cloudrunConfigs;
        private List<GetClusterAddonsConfigConfigConnectorConfig> configConnectorConfigs;
        private List<GetClusterAddonsConfigDnsCacheConfig> dnsCacheConfigs;
        private List<GetClusterAddonsConfigGcePersistentDiskCsiDriverConfig> gcePersistentDiskCsiDriverConfigs;
        private List<GetClusterAddonsConfigGcpFilestoreCsiDriverConfig> gcpFilestoreCsiDriverConfigs;
        private List<GetClusterAddonsConfigGcsFuseCsiDriverConfig> gcsFuseCsiDriverConfigs;
        private List<GetClusterAddonsConfigGkeBackupAgentConfig> gkeBackupAgentConfigs;
        private List<GetClusterAddonsConfigHorizontalPodAutoscaling> horizontalPodAutoscalings;
        private List<GetClusterAddonsConfigHttpLoadBalancing> httpLoadBalancings;
        private List<GetClusterAddonsConfigIstioConfig> istioConfigs;
        private List<GetClusterAddonsConfigKalmConfig> kalmConfigs;
        private List<GetClusterAddonsConfigNetworkPolicyConfig> networkPolicyConfigs;
        public Builder() {}
        public Builder(GetClusterAddonsConfig defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.cloudrunConfigs = defaults.cloudrunConfigs;
    	      this.configConnectorConfigs = defaults.configConnectorConfigs;
    	      this.dnsCacheConfigs = defaults.dnsCacheConfigs;
    	      this.gcePersistentDiskCsiDriverConfigs = defaults.gcePersistentDiskCsiDriverConfigs;
    	      this.gcpFilestoreCsiDriverConfigs = defaults.gcpFilestoreCsiDriverConfigs;
    	      this.gcsFuseCsiDriverConfigs = defaults.gcsFuseCsiDriverConfigs;
    	      this.gkeBackupAgentConfigs = defaults.gkeBackupAgentConfigs;
    	      this.horizontalPodAutoscalings = defaults.horizontalPodAutoscalings;
    	      this.httpLoadBalancings = defaults.httpLoadBalancings;
    	      this.istioConfigs = defaults.istioConfigs;
    	      this.kalmConfigs = defaults.kalmConfigs;
    	      this.networkPolicyConfigs = defaults.networkPolicyConfigs;
        }

        @CustomType.Setter
        public Builder cloudrunConfigs(List<GetClusterAddonsConfigCloudrunConfig> cloudrunConfigs) {
            this.cloudrunConfigs = Objects.requireNonNull(cloudrunConfigs);
            return this;
        }
        public Builder cloudrunConfigs(GetClusterAddonsConfigCloudrunConfig... cloudrunConfigs) {
            return cloudrunConfigs(List.of(cloudrunConfigs));
        }
        @CustomType.Setter
        public Builder configConnectorConfigs(List<GetClusterAddonsConfigConfigConnectorConfig> configConnectorConfigs) {
            this.configConnectorConfigs = Objects.requireNonNull(configConnectorConfigs);
            return this;
        }
        public Builder configConnectorConfigs(GetClusterAddonsConfigConfigConnectorConfig... configConnectorConfigs) {
            return configConnectorConfigs(List.of(configConnectorConfigs));
        }
        @CustomType.Setter
        public Builder dnsCacheConfigs(List<GetClusterAddonsConfigDnsCacheConfig> dnsCacheConfigs) {
            this.dnsCacheConfigs = Objects.requireNonNull(dnsCacheConfigs);
            return this;
        }
        public Builder dnsCacheConfigs(GetClusterAddonsConfigDnsCacheConfig... dnsCacheConfigs) {
            return dnsCacheConfigs(List.of(dnsCacheConfigs));
        }
        @CustomType.Setter
        public Builder gcePersistentDiskCsiDriverConfigs(List<GetClusterAddonsConfigGcePersistentDiskCsiDriverConfig> gcePersistentDiskCsiDriverConfigs) {
            this.gcePersistentDiskCsiDriverConfigs = Objects.requireNonNull(gcePersistentDiskCsiDriverConfigs);
            return this;
        }
        public Builder gcePersistentDiskCsiDriverConfigs(GetClusterAddonsConfigGcePersistentDiskCsiDriverConfig... gcePersistentDiskCsiDriverConfigs) {
            return gcePersistentDiskCsiDriverConfigs(List.of(gcePersistentDiskCsiDriverConfigs));
        }
        @CustomType.Setter
        public Builder gcpFilestoreCsiDriverConfigs(List<GetClusterAddonsConfigGcpFilestoreCsiDriverConfig> gcpFilestoreCsiDriverConfigs) {
            this.gcpFilestoreCsiDriverConfigs = Objects.requireNonNull(gcpFilestoreCsiDriverConfigs);
            return this;
        }
        public Builder gcpFilestoreCsiDriverConfigs(GetClusterAddonsConfigGcpFilestoreCsiDriverConfig... gcpFilestoreCsiDriverConfigs) {
            return gcpFilestoreCsiDriverConfigs(List.of(gcpFilestoreCsiDriverConfigs));
        }
        @CustomType.Setter
        public Builder gcsFuseCsiDriverConfigs(List<GetClusterAddonsConfigGcsFuseCsiDriverConfig> gcsFuseCsiDriverConfigs) {
            this.gcsFuseCsiDriverConfigs = Objects.requireNonNull(gcsFuseCsiDriverConfigs);
            return this;
        }
        public Builder gcsFuseCsiDriverConfigs(GetClusterAddonsConfigGcsFuseCsiDriverConfig... gcsFuseCsiDriverConfigs) {
            return gcsFuseCsiDriverConfigs(List.of(gcsFuseCsiDriverConfigs));
        }
        @CustomType.Setter
        public Builder gkeBackupAgentConfigs(List<GetClusterAddonsConfigGkeBackupAgentConfig> gkeBackupAgentConfigs) {
            this.gkeBackupAgentConfigs = Objects.requireNonNull(gkeBackupAgentConfigs);
            return this;
        }
        public Builder gkeBackupAgentConfigs(GetClusterAddonsConfigGkeBackupAgentConfig... gkeBackupAgentConfigs) {
            return gkeBackupAgentConfigs(List.of(gkeBackupAgentConfigs));
        }
        @CustomType.Setter
        public Builder horizontalPodAutoscalings(List<GetClusterAddonsConfigHorizontalPodAutoscaling> horizontalPodAutoscalings) {
            this.horizontalPodAutoscalings = Objects.requireNonNull(horizontalPodAutoscalings);
            return this;
        }
        public Builder horizontalPodAutoscalings(GetClusterAddonsConfigHorizontalPodAutoscaling... horizontalPodAutoscalings) {
            return horizontalPodAutoscalings(List.of(horizontalPodAutoscalings));
        }
        @CustomType.Setter
        public Builder httpLoadBalancings(List<GetClusterAddonsConfigHttpLoadBalancing> httpLoadBalancings) {
            this.httpLoadBalancings = Objects.requireNonNull(httpLoadBalancings);
            return this;
        }
        public Builder httpLoadBalancings(GetClusterAddonsConfigHttpLoadBalancing... httpLoadBalancings) {
            return httpLoadBalancings(List.of(httpLoadBalancings));
        }
        @CustomType.Setter
        public Builder istioConfigs(List<GetClusterAddonsConfigIstioConfig> istioConfigs) {
            this.istioConfigs = Objects.requireNonNull(istioConfigs);
            return this;
        }
        public Builder istioConfigs(GetClusterAddonsConfigIstioConfig... istioConfigs) {
            return istioConfigs(List.of(istioConfigs));
        }
        @CustomType.Setter
        public Builder kalmConfigs(List<GetClusterAddonsConfigKalmConfig> kalmConfigs) {
            this.kalmConfigs = Objects.requireNonNull(kalmConfigs);
            return this;
        }
        public Builder kalmConfigs(GetClusterAddonsConfigKalmConfig... kalmConfigs) {
            return kalmConfigs(List.of(kalmConfigs));
        }
        @CustomType.Setter
        public Builder networkPolicyConfigs(List<GetClusterAddonsConfigNetworkPolicyConfig> networkPolicyConfigs) {
            this.networkPolicyConfigs = Objects.requireNonNull(networkPolicyConfigs);
            return this;
        }
        public Builder networkPolicyConfigs(GetClusterAddonsConfigNetworkPolicyConfig... networkPolicyConfigs) {
            return networkPolicyConfigs(List.of(networkPolicyConfigs));
        }
        public GetClusterAddonsConfig build() {
            final var o = new GetClusterAddonsConfig();
            o.cloudrunConfigs = cloudrunConfigs;
            o.configConnectorConfigs = configConnectorConfigs;
            o.dnsCacheConfigs = dnsCacheConfigs;
            o.gcePersistentDiskCsiDriverConfigs = gcePersistentDiskCsiDriverConfigs;
            o.gcpFilestoreCsiDriverConfigs = gcpFilestoreCsiDriverConfigs;
            o.gcsFuseCsiDriverConfigs = gcsFuseCsiDriverConfigs;
            o.gkeBackupAgentConfigs = gkeBackupAgentConfigs;
            o.horizontalPodAutoscalings = horizontalPodAutoscalings;
            o.httpLoadBalancings = httpLoadBalancings;
            o.istioConfigs = istioConfigs;
            o.kalmConfigs = kalmConfigs;
            o.networkPolicyConfigs = networkPolicyConfigs;
            return o;
        }
    }
}
