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

import com.pulumi.core.Output;
import com.pulumi.core.TypeShape;
import com.pulumi.deployment.Deployment;
import com.pulumi.deployment.InvokeOptions;
import com.pulumi.gcp.Utilities;
import com.pulumi.gcp.composer.inputs.GetEnvironmentArgs;
import com.pulumi.gcp.composer.inputs.GetEnvironmentPlainArgs;
import com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;
import com.pulumi.gcp.composer.inputs.GetImageVersionsPlainArgs;
import com.pulumi.gcp.composer.outputs.GetEnvironmentResult;
import com.pulumi.gcp.composer.outputs.GetImageVersionsResult;
import java.util.concurrent.CompletableFuture;

public final class ComposerFunctions {
    /**
     * Provides access to Cloud Composer environment configuration in a region for a given project.
     * 
     */
    public static Output<GetEnvironmentResult> getEnvironment(GetEnvironmentArgs args) {
        return getEnvironment(args, InvokeOptions.Empty);
    }
    /**
     * Provides access to Cloud Composer environment configuration in a region for a given project.
     * 
     */
    public static CompletableFuture<GetEnvironmentResult> getEnvironmentPlain(GetEnvironmentPlainArgs args) {
        return getEnvironmentPlain(args, InvokeOptions.Empty);
    }
    /**
     * Provides access to Cloud Composer environment configuration in a region for a given project.
     * 
     */
    public static Output<GetEnvironmentResult> getEnvironment(GetEnvironmentArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:composer/getEnvironment:getEnvironment", TypeShape.of(GetEnvironmentResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Provides access to Cloud Composer environment configuration in a region for a given project.
     * 
     */
    public static CompletableFuture<GetEnvironmentResult> getEnvironmentPlain(GetEnvironmentPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:composer/getEnvironment:getEnvironment", TypeShape.of(GetEnvironmentResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Provides access to available Cloud Composer versions in a region for a given project.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.composer.ComposerFunctions;
     * import com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;
     * import com.pulumi.gcp.composer.Environment;
     * import com.pulumi.gcp.composer.EnvironmentArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * 
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     * 
     *     public static void stack(Context ctx) {
     *         final var all = ComposerFunctions.getImageVersions();
     * 
     *         var test = new Environment(&#34;test&#34;, EnvironmentArgs.builder()        
     *             .region(&#34;us-central1&#34;)
     *             .config(EnvironmentConfigArgs.builder()
     *                 .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
     *                     .imageVersion(all.applyValue(getImageVersionsResult -&gt; getImageVersionsResult.imageVersions()[0].imageVersionId()))
     *                     .build())
     *                 .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetImageVersionsResult> getImageVersions() {
        return getImageVersions(GetImageVersionsArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Provides access to available Cloud Composer versions in a region for a given project.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.composer.ComposerFunctions;
     * import com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;
     * import com.pulumi.gcp.composer.Environment;
     * import com.pulumi.gcp.composer.EnvironmentArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * 
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     * 
     *     public static void stack(Context ctx) {
     *         final var all = ComposerFunctions.getImageVersions();
     * 
     *         var test = new Environment(&#34;test&#34;, EnvironmentArgs.builder()        
     *             .region(&#34;us-central1&#34;)
     *             .config(EnvironmentConfigArgs.builder()
     *                 .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
     *                     .imageVersion(all.applyValue(getImageVersionsResult -&gt; getImageVersionsResult.imageVersions()[0].imageVersionId()))
     *                     .build())
     *                 .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetImageVersionsResult> getImageVersionsPlain() {
        return getImageVersionsPlain(GetImageVersionsPlainArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Provides access to available Cloud Composer versions in a region for a given project.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.composer.ComposerFunctions;
     * import com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;
     * import com.pulumi.gcp.composer.Environment;
     * import com.pulumi.gcp.composer.EnvironmentArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * 
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     * 
     *     public static void stack(Context ctx) {
     *         final var all = ComposerFunctions.getImageVersions();
     * 
     *         var test = new Environment(&#34;test&#34;, EnvironmentArgs.builder()        
     *             .region(&#34;us-central1&#34;)
     *             .config(EnvironmentConfigArgs.builder()
     *                 .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
     *                     .imageVersion(all.applyValue(getImageVersionsResult -&gt; getImageVersionsResult.imageVersions()[0].imageVersionId()))
     *                     .build())
     *                 .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetImageVersionsResult> getImageVersions(GetImageVersionsArgs args) {
        return getImageVersions(args, InvokeOptions.Empty);
    }
    /**
     * Provides access to available Cloud Composer versions in a region for a given project.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.composer.ComposerFunctions;
     * import com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;
     * import com.pulumi.gcp.composer.Environment;
     * import com.pulumi.gcp.composer.EnvironmentArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * 
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     * 
     *     public static void stack(Context ctx) {
     *         final var all = ComposerFunctions.getImageVersions();
     * 
     *         var test = new Environment(&#34;test&#34;, EnvironmentArgs.builder()        
     *             .region(&#34;us-central1&#34;)
     *             .config(EnvironmentConfigArgs.builder()
     *                 .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
     *                     .imageVersion(all.applyValue(getImageVersionsResult -&gt; getImageVersionsResult.imageVersions()[0].imageVersionId()))
     *                     .build())
     *                 .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetImageVersionsResult> getImageVersionsPlain(GetImageVersionsPlainArgs args) {
        return getImageVersionsPlain(args, InvokeOptions.Empty);
    }
    /**
     * Provides access to available Cloud Composer versions in a region for a given project.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.composer.ComposerFunctions;
     * import com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;
     * import com.pulumi.gcp.composer.Environment;
     * import com.pulumi.gcp.composer.EnvironmentArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * 
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     * 
     *     public static void stack(Context ctx) {
     *         final var all = ComposerFunctions.getImageVersions();
     * 
     *         var test = new Environment(&#34;test&#34;, EnvironmentArgs.builder()        
     *             .region(&#34;us-central1&#34;)
     *             .config(EnvironmentConfigArgs.builder()
     *                 .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
     *                     .imageVersion(all.applyValue(getImageVersionsResult -&gt; getImageVersionsResult.imageVersions()[0].imageVersionId()))
     *                     .build())
     *                 .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetImageVersionsResult> getImageVersions(GetImageVersionsArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:composer/getImageVersions:getImageVersions", TypeShape.of(GetImageVersionsResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Provides access to available Cloud Composer versions in a region for a given project.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.composer.ComposerFunctions;
     * import com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;
     * import com.pulumi.gcp.composer.Environment;
     * import com.pulumi.gcp.composer.EnvironmentArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;
     * import com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;
     * import java.util.List;
     * import java.util.ArrayList;
     * import java.util.Map;
     * import java.io.File;
     * import java.nio.file.Files;
     * import java.nio.file.Paths;
     * 
     * public class App {
     *     public static void main(String[] args) {
     *         Pulumi.run(App::stack);
     *     }
     * 
     *     public static void stack(Context ctx) {
     *         final var all = ComposerFunctions.getImageVersions();
     * 
     *         var test = new Environment(&#34;test&#34;, EnvironmentArgs.builder()        
     *             .region(&#34;us-central1&#34;)
     *             .config(EnvironmentConfigArgs.builder()
     *                 .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()
     *                     .imageVersion(all.applyValue(getImageVersionsResult -&gt; getImageVersionsResult.imageVersions()[0].imageVersionId()))
     *                     .build())
     *                 .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetImageVersionsResult> getImageVersionsPlain(GetImageVersionsPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:composer/getImageVersions:getImageVersions", TypeShape.of(GetImageVersionsResult.class), args, Utilities.withVersion(options));
    }
}
