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

import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;


public final class GetAttachedInstallManifestPlainArgs extends com.pulumi.resources.InvokeArgs {

    public static final GetAttachedInstallManifestPlainArgs Empty = new GetAttachedInstallManifestPlainArgs();

    /**
     * The name that will be used when creating the attached cluster resource.
     * 
     */
    @Import(name="clusterId", required=true)
    private String clusterId;

    /**
     * @return The name that will be used when creating the attached cluster resource.
     * 
     */
    public String clusterId() {
        return this.clusterId;
    }

    /**
     * The location to list versions for.
     * 
     */
    @Import(name="location", required=true)
    private String location;

    /**
     * @return The location to list versions for.
     * 
     */
    public String location() {
        return this.location;
    }

    /**
     * The platform version for the cluster. A list of valid values can be retrieved using the `gcp.container.getAttachedVersions` data source.
     * 
     */
    @Import(name="platformVersion", required=true)
    private String platformVersion;

    /**
     * @return The platform version for the cluster. A list of valid values can be retrieved using the `gcp.container.getAttachedVersions` data source.
     * 
     */
    public String platformVersion() {
        return this.platformVersion;
    }

    /**
     * ID of the project to list available platform versions for. Should match the project the cluster will be deployed to.
     * Defaults to the project that the provider is authenticated with.
     * 
     */
    @Import(name="project", required=true)
    private String project;

    /**
     * @return ID of the project to list available platform versions for. Should match the project the cluster will be deployed to.
     * Defaults to the project that the provider is authenticated with.
     * 
     */
    public String project() {
        return this.project;
    }

    private GetAttachedInstallManifestPlainArgs() {}

    private GetAttachedInstallManifestPlainArgs(GetAttachedInstallManifestPlainArgs $) {
        this.clusterId = $.clusterId;
        this.location = $.location;
        this.platformVersion = $.platformVersion;
        this.project = $.project;
    }

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

    public static final class Builder {
        private GetAttachedInstallManifestPlainArgs $;

        public Builder() {
            $ = new GetAttachedInstallManifestPlainArgs();
        }

        public Builder(GetAttachedInstallManifestPlainArgs defaults) {
            $ = new GetAttachedInstallManifestPlainArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param clusterId The name that will be used when creating the attached cluster resource.
         * 
         * @return builder
         * 
         */
        public Builder clusterId(String clusterId) {
            $.clusterId = clusterId;
            return this;
        }

        /**
         * @param location The location to list versions for.
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            $.location = location;
            return this;
        }

        /**
         * @param platformVersion The platform version for the cluster. A list of valid values can be retrieved using the `gcp.container.getAttachedVersions` data source.
         * 
         * @return builder
         * 
         */
        public Builder platformVersion(String platformVersion) {
            $.platformVersion = platformVersion;
            return this;
        }

        /**
         * @param project ID of the project to list available platform versions for. Should match the project the cluster will be deployed to.
         * Defaults to the project that the provider is authenticated with.
         * 
         * @return builder
         * 
         */
        public Builder project(String project) {
            $.project = project;
            return this;
        }

        public GetAttachedInstallManifestPlainArgs build() {
            $.clusterId = Objects.requireNonNull($.clusterId, "expected parameter 'clusterId' to be non-null");
            $.location = Objects.requireNonNull($.location, "expected parameter 'location' to be non-null");
            $.platformVersion = Objects.requireNonNull($.platformVersion, "expected parameter 'platformVersion' to be non-null");
            $.project = Objects.requireNonNull($.project, "expected parameter 'project' to be non-null");
            return $;
        }
    }

}
