// Code generated by the Pulumi SDK Generator DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***

package eks

import (
	"context"
	"reflect"

	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

// An object representing an Amazon EKS IdentityProviderConfig.
func LookupIdentityProviderConfig(ctx *pulumi.Context, args *LookupIdentityProviderConfigArgs, opts ...pulumi.InvokeOption) (*LookupIdentityProviderConfigResult, error) {
	var rv LookupIdentityProviderConfigResult
	err := ctx.Invoke("aws-native:eks:getIdentityProviderConfig", args, &rv, opts...)
	if err != nil {
		return nil, err
	}
	return &rv, nil
}

type LookupIdentityProviderConfigArgs struct {
	// The name of the identity provider configuration.
	ClusterName string `pulumi:"clusterName"`
	// The name of the OIDC provider configuration.
	IdentityProviderConfigName string `pulumi:"identityProviderConfigName"`
	// The type of the identity provider configuration.
	Type IdentityProviderConfigType `pulumi:"type"`
}

type LookupIdentityProviderConfigResult struct {
	// The ARN of the configuration.
	IdentityProviderConfigArn *string `pulumi:"identityProviderConfigArn"`
	// An array of key-value pairs to apply to this resource.
	Tags []IdentityProviderConfigTag `pulumi:"tags"`
}

func LookupIdentityProviderConfigOutput(ctx *pulumi.Context, args LookupIdentityProviderConfigOutputArgs, opts ...pulumi.InvokeOption) LookupIdentityProviderConfigResultOutput {
	return pulumi.ToOutputWithContext(context.Background(), args).
		ApplyT(func(v interface{}) (LookupIdentityProviderConfigResult, error) {
			args := v.(LookupIdentityProviderConfigArgs)
			r, err := LookupIdentityProviderConfig(ctx, &args, opts...)
			var s LookupIdentityProviderConfigResult
			if r != nil {
				s = *r
			}
			return s, err
		}).(LookupIdentityProviderConfigResultOutput)
}

type LookupIdentityProviderConfigOutputArgs struct {
	// The name of the identity provider configuration.
	ClusterName pulumi.StringInput `pulumi:"clusterName"`
	// The name of the OIDC provider configuration.
	IdentityProviderConfigName pulumi.StringInput `pulumi:"identityProviderConfigName"`
	// The type of the identity provider configuration.
	Type IdentityProviderConfigTypeInput `pulumi:"type"`
}

func (LookupIdentityProviderConfigOutputArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*LookupIdentityProviderConfigArgs)(nil)).Elem()
}

type LookupIdentityProviderConfigResultOutput struct{ *pulumi.OutputState }

func (LookupIdentityProviderConfigResultOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*LookupIdentityProviderConfigResult)(nil)).Elem()
}

func (o LookupIdentityProviderConfigResultOutput) ToLookupIdentityProviderConfigResultOutput() LookupIdentityProviderConfigResultOutput {
	return o
}

func (o LookupIdentityProviderConfigResultOutput) ToLookupIdentityProviderConfigResultOutputWithContext(ctx context.Context) LookupIdentityProviderConfigResultOutput {
	return o
}

// The ARN of the configuration.
func (o LookupIdentityProviderConfigResultOutput) IdentityProviderConfigArn() pulumi.StringPtrOutput {
	return o.ApplyT(func(v LookupIdentityProviderConfigResult) *string { return v.IdentityProviderConfigArn }).(pulumi.StringPtrOutput)
}

// An array of key-value pairs to apply to this resource.
func (o LookupIdentityProviderConfigResultOutput) Tags() IdentityProviderConfigTagArrayOutput {
	return o.ApplyT(func(v LookupIdentityProviderConfigResult) []IdentityProviderConfigTag { return v.Tags }).(IdentityProviderConfigTagArrayOutput)
}

func init() {
	pulumi.RegisterOutputType(LookupIdentityProviderConfigResultOutput{})
}
