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

package v1alpha2

import (
	"context"
	"reflect"

	corev1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1"
	"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/internal"
	metav1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

var _ = internal.GetEnvOrDefault

// AllocationResult contains attributes of an allocated resource.
type AllocationResult struct {
	// This field will get set by the resource driver after it has allocated the resource to inform the scheduler where it can schedule Pods using the ResourceClaim.
	//
	// Setting this field is optional. If null, the resource is available everywhere.
	AvailableOnNodes *corev1.NodeSelector `pulumi:"availableOnNodes"`
	// ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed.
	//
	// Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in.
	ResourceHandles []ResourceHandle `pulumi:"resourceHandles"`
	// Shareable determines whether the resource supports more than one consumer at a time.
	Shareable *bool `pulumi:"shareable"`
}

// AllocationResultInput is an input type that accepts AllocationResultArgs and AllocationResultOutput values.
// You can construct a concrete instance of `AllocationResultInput` via:
//
//	AllocationResultArgs{...}
type AllocationResultInput interface {
	pulumi.Input

	ToAllocationResultOutput() AllocationResultOutput
	ToAllocationResultOutputWithContext(context.Context) AllocationResultOutput
}

// AllocationResult contains attributes of an allocated resource.
type AllocationResultArgs struct {
	// This field will get set by the resource driver after it has allocated the resource to inform the scheduler where it can schedule Pods using the ResourceClaim.
	//
	// Setting this field is optional. If null, the resource is available everywhere.
	AvailableOnNodes corev1.NodeSelectorPtrInput `pulumi:"availableOnNodes"`
	// ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed.
	//
	// Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in.
	ResourceHandles ResourceHandleArrayInput `pulumi:"resourceHandles"`
	// Shareable determines whether the resource supports more than one consumer at a time.
	Shareable pulumi.BoolPtrInput `pulumi:"shareable"`
}

func (AllocationResultArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*AllocationResult)(nil)).Elem()
}

func (i AllocationResultArgs) ToAllocationResultOutput() AllocationResultOutput {
	return i.ToAllocationResultOutputWithContext(context.Background())
}

func (i AllocationResultArgs) ToAllocationResultOutputWithContext(ctx context.Context) AllocationResultOutput {
	return pulumi.ToOutputWithContext(ctx, i).(AllocationResultOutput)
}

func (i AllocationResultArgs) ToAllocationResultPtrOutput() AllocationResultPtrOutput {
	return i.ToAllocationResultPtrOutputWithContext(context.Background())
}

func (i AllocationResultArgs) ToAllocationResultPtrOutputWithContext(ctx context.Context) AllocationResultPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(AllocationResultOutput).ToAllocationResultPtrOutputWithContext(ctx)
}

// AllocationResultPtrInput is an input type that accepts AllocationResultArgs, AllocationResultPtr and AllocationResultPtrOutput values.
// You can construct a concrete instance of `AllocationResultPtrInput` via:
//
//	        AllocationResultArgs{...}
//
//	or:
//
//	        nil
type AllocationResultPtrInput interface {
	pulumi.Input

	ToAllocationResultPtrOutput() AllocationResultPtrOutput
	ToAllocationResultPtrOutputWithContext(context.Context) AllocationResultPtrOutput
}

type allocationResultPtrType AllocationResultArgs

func AllocationResultPtr(v *AllocationResultArgs) AllocationResultPtrInput {
	return (*allocationResultPtrType)(v)
}

func (*allocationResultPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**AllocationResult)(nil)).Elem()
}

func (i *allocationResultPtrType) ToAllocationResultPtrOutput() AllocationResultPtrOutput {
	return i.ToAllocationResultPtrOutputWithContext(context.Background())
}

func (i *allocationResultPtrType) ToAllocationResultPtrOutputWithContext(ctx context.Context) AllocationResultPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(AllocationResultPtrOutput)
}

// AllocationResult contains attributes of an allocated resource.
type AllocationResultOutput struct{ *pulumi.OutputState }

func (AllocationResultOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*AllocationResult)(nil)).Elem()
}

func (o AllocationResultOutput) ToAllocationResultOutput() AllocationResultOutput {
	return o
}

func (o AllocationResultOutput) ToAllocationResultOutputWithContext(ctx context.Context) AllocationResultOutput {
	return o
}

func (o AllocationResultOutput) ToAllocationResultPtrOutput() AllocationResultPtrOutput {
	return o.ToAllocationResultPtrOutputWithContext(context.Background())
}

func (o AllocationResultOutput) ToAllocationResultPtrOutputWithContext(ctx context.Context) AllocationResultPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v AllocationResult) *AllocationResult {
		return &v
	}).(AllocationResultPtrOutput)
}

// This field will get set by the resource driver after it has allocated the resource to inform the scheduler where it can schedule Pods using the ResourceClaim.
//
// Setting this field is optional. If null, the resource is available everywhere.
func (o AllocationResultOutput) AvailableOnNodes() corev1.NodeSelectorPtrOutput {
	return o.ApplyT(func(v AllocationResult) *corev1.NodeSelector { return v.AvailableOnNodes }).(corev1.NodeSelectorPtrOutput)
}

// ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed.
//
// Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in.
func (o AllocationResultOutput) ResourceHandles() ResourceHandleArrayOutput {
	return o.ApplyT(func(v AllocationResult) []ResourceHandle { return v.ResourceHandles }).(ResourceHandleArrayOutput)
}

// Shareable determines whether the resource supports more than one consumer at a time.
func (o AllocationResultOutput) Shareable() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v AllocationResult) *bool { return v.Shareable }).(pulumi.BoolPtrOutput)
}

type AllocationResultPtrOutput struct{ *pulumi.OutputState }

func (AllocationResultPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**AllocationResult)(nil)).Elem()
}

func (o AllocationResultPtrOutput) ToAllocationResultPtrOutput() AllocationResultPtrOutput {
	return o
}

func (o AllocationResultPtrOutput) ToAllocationResultPtrOutputWithContext(ctx context.Context) AllocationResultPtrOutput {
	return o
}

func (o AllocationResultPtrOutput) Elem() AllocationResultOutput {
	return o.ApplyT(func(v *AllocationResult) AllocationResult {
		if v != nil {
			return *v
		}
		var ret AllocationResult
		return ret
	}).(AllocationResultOutput)
}

// This field will get set by the resource driver after it has allocated the resource to inform the scheduler where it can schedule Pods using the ResourceClaim.
//
// Setting this field is optional. If null, the resource is available everywhere.
func (o AllocationResultPtrOutput) AvailableOnNodes() corev1.NodeSelectorPtrOutput {
	return o.ApplyT(func(v *AllocationResult) *corev1.NodeSelector {
		if v == nil {
			return nil
		}
		return v.AvailableOnNodes
	}).(corev1.NodeSelectorPtrOutput)
}

// ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed.
//
// Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in.
func (o AllocationResultPtrOutput) ResourceHandles() ResourceHandleArrayOutput {
	return o.ApplyT(func(v *AllocationResult) []ResourceHandle {
		if v == nil {
			return nil
		}
		return v.ResourceHandles
	}).(ResourceHandleArrayOutput)
}

// Shareable determines whether the resource supports more than one consumer at a time.
func (o AllocationResultPtrOutput) Shareable() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *AllocationResult) *bool {
		if v == nil {
			return nil
		}
		return v.Shareable
	}).(pulumi.BoolPtrOutput)
}

// AllocationResult contains attributes of an allocated resource.
type AllocationResultPatch struct {
	// This field will get set by the resource driver after it has allocated the resource to inform the scheduler where it can schedule Pods using the ResourceClaim.
	//
	// Setting this field is optional. If null, the resource is available everywhere.
	AvailableOnNodes *corev1.NodeSelectorPatch `pulumi:"availableOnNodes"`
	// ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed.
	//
	// Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in.
	ResourceHandles []ResourceHandlePatch `pulumi:"resourceHandles"`
	// Shareable determines whether the resource supports more than one consumer at a time.
	Shareable *bool `pulumi:"shareable"`
}

// AllocationResultPatchInput is an input type that accepts AllocationResultPatchArgs and AllocationResultPatchOutput values.
// You can construct a concrete instance of `AllocationResultPatchInput` via:
//
//	AllocationResultPatchArgs{...}
type AllocationResultPatchInput interface {
	pulumi.Input

	ToAllocationResultPatchOutput() AllocationResultPatchOutput
	ToAllocationResultPatchOutputWithContext(context.Context) AllocationResultPatchOutput
}

// AllocationResult contains attributes of an allocated resource.
type AllocationResultPatchArgs struct {
	// This field will get set by the resource driver after it has allocated the resource to inform the scheduler where it can schedule Pods using the ResourceClaim.
	//
	// Setting this field is optional. If null, the resource is available everywhere.
	AvailableOnNodes corev1.NodeSelectorPatchPtrInput `pulumi:"availableOnNodes"`
	// ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed.
	//
	// Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in.
	ResourceHandles ResourceHandlePatchArrayInput `pulumi:"resourceHandles"`
	// Shareable determines whether the resource supports more than one consumer at a time.
	Shareable pulumi.BoolPtrInput `pulumi:"shareable"`
}

func (AllocationResultPatchArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*AllocationResultPatch)(nil)).Elem()
}

func (i AllocationResultPatchArgs) ToAllocationResultPatchOutput() AllocationResultPatchOutput {
	return i.ToAllocationResultPatchOutputWithContext(context.Background())
}

func (i AllocationResultPatchArgs) ToAllocationResultPatchOutputWithContext(ctx context.Context) AllocationResultPatchOutput {
	return pulumi.ToOutputWithContext(ctx, i).(AllocationResultPatchOutput)
}

func (i AllocationResultPatchArgs) ToAllocationResultPatchPtrOutput() AllocationResultPatchPtrOutput {
	return i.ToAllocationResultPatchPtrOutputWithContext(context.Background())
}

func (i AllocationResultPatchArgs) ToAllocationResultPatchPtrOutputWithContext(ctx context.Context) AllocationResultPatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(AllocationResultPatchOutput).ToAllocationResultPatchPtrOutputWithContext(ctx)
}

// AllocationResultPatchPtrInput is an input type that accepts AllocationResultPatchArgs, AllocationResultPatchPtr and AllocationResultPatchPtrOutput values.
// You can construct a concrete instance of `AllocationResultPatchPtrInput` via:
//
//	        AllocationResultPatchArgs{...}
//
//	or:
//
//	        nil
type AllocationResultPatchPtrInput interface {
	pulumi.Input

	ToAllocationResultPatchPtrOutput() AllocationResultPatchPtrOutput
	ToAllocationResultPatchPtrOutputWithContext(context.Context) AllocationResultPatchPtrOutput
}

type allocationResultPatchPtrType AllocationResultPatchArgs

func AllocationResultPatchPtr(v *AllocationResultPatchArgs) AllocationResultPatchPtrInput {
	return (*allocationResultPatchPtrType)(v)
}

func (*allocationResultPatchPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**AllocationResultPatch)(nil)).Elem()
}

func (i *allocationResultPatchPtrType) ToAllocationResultPatchPtrOutput() AllocationResultPatchPtrOutput {
	return i.ToAllocationResultPatchPtrOutputWithContext(context.Background())
}

func (i *allocationResultPatchPtrType) ToAllocationResultPatchPtrOutputWithContext(ctx context.Context) AllocationResultPatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(AllocationResultPatchPtrOutput)
}

// AllocationResult contains attributes of an allocated resource.
type AllocationResultPatchOutput struct{ *pulumi.OutputState }

func (AllocationResultPatchOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*AllocationResultPatch)(nil)).Elem()
}

func (o AllocationResultPatchOutput) ToAllocationResultPatchOutput() AllocationResultPatchOutput {
	return o
}

func (o AllocationResultPatchOutput) ToAllocationResultPatchOutputWithContext(ctx context.Context) AllocationResultPatchOutput {
	return o
}

func (o AllocationResultPatchOutput) ToAllocationResultPatchPtrOutput() AllocationResultPatchPtrOutput {
	return o.ToAllocationResultPatchPtrOutputWithContext(context.Background())
}

func (o AllocationResultPatchOutput) ToAllocationResultPatchPtrOutputWithContext(ctx context.Context) AllocationResultPatchPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v AllocationResultPatch) *AllocationResultPatch {
		return &v
	}).(AllocationResultPatchPtrOutput)
}

// This field will get set by the resource driver after it has allocated the resource to inform the scheduler where it can schedule Pods using the ResourceClaim.
//
// Setting this field is optional. If null, the resource is available everywhere.
func (o AllocationResultPatchOutput) AvailableOnNodes() corev1.NodeSelectorPatchPtrOutput {
	return o.ApplyT(func(v AllocationResultPatch) *corev1.NodeSelectorPatch { return v.AvailableOnNodes }).(corev1.NodeSelectorPatchPtrOutput)
}

// ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed.
//
// Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in.
func (o AllocationResultPatchOutput) ResourceHandles() ResourceHandlePatchArrayOutput {
	return o.ApplyT(func(v AllocationResultPatch) []ResourceHandlePatch { return v.ResourceHandles }).(ResourceHandlePatchArrayOutput)
}

// Shareable determines whether the resource supports more than one consumer at a time.
func (o AllocationResultPatchOutput) Shareable() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v AllocationResultPatch) *bool { return v.Shareable }).(pulumi.BoolPtrOutput)
}

type AllocationResultPatchPtrOutput struct{ *pulumi.OutputState }

func (AllocationResultPatchPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**AllocationResultPatch)(nil)).Elem()
}

func (o AllocationResultPatchPtrOutput) ToAllocationResultPatchPtrOutput() AllocationResultPatchPtrOutput {
	return o
}

func (o AllocationResultPatchPtrOutput) ToAllocationResultPatchPtrOutputWithContext(ctx context.Context) AllocationResultPatchPtrOutput {
	return o
}

func (o AllocationResultPatchPtrOutput) Elem() AllocationResultPatchOutput {
	return o.ApplyT(func(v *AllocationResultPatch) AllocationResultPatch {
		if v != nil {
			return *v
		}
		var ret AllocationResultPatch
		return ret
	}).(AllocationResultPatchOutput)
}

// This field will get set by the resource driver after it has allocated the resource to inform the scheduler where it can schedule Pods using the ResourceClaim.
//
// Setting this field is optional. If null, the resource is available everywhere.
func (o AllocationResultPatchPtrOutput) AvailableOnNodes() corev1.NodeSelectorPatchPtrOutput {
	return o.ApplyT(func(v *AllocationResultPatch) *corev1.NodeSelectorPatch {
		if v == nil {
			return nil
		}
		return v.AvailableOnNodes
	}).(corev1.NodeSelectorPatchPtrOutput)
}

// ResourceHandles contain the state associated with an allocation that should be maintained throughout the lifetime of a claim. Each ResourceHandle contains data that should be passed to a specific kubelet plugin once it lands on a node. This data is returned by the driver after a successful allocation and is opaque to Kubernetes. Driver documentation may explain to users how to interpret this data if needed.
//
// Setting this field is optional. It has a maximum size of 32 entries. If null (or empty), it is assumed this allocation will be processed by a single kubelet plugin with no ResourceHandle data attached. The name of the kubelet plugin invoked will match the DriverName set in the ResourceClaimStatus this AllocationResult is embedded in.
func (o AllocationResultPatchPtrOutput) ResourceHandles() ResourceHandlePatchArrayOutput {
	return o.ApplyT(func(v *AllocationResultPatch) []ResourceHandlePatch {
		if v == nil {
			return nil
		}
		return v.ResourceHandles
	}).(ResourceHandlePatchArrayOutput)
}

// Shareable determines whether the resource supports more than one consumer at a time.
func (o AllocationResultPatchPtrOutput) Shareable() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *AllocationResultPatch) *bool {
		if v == nil {
			return nil
		}
		return v.Shareable
	}).(pulumi.BoolPtrOutput)
}

// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type PodSchedulingContextType struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion *string `pulumi:"apiVersion"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind *string `pulumi:"kind"`
	// Standard object metadata
	Metadata *metav1.ObjectMeta `pulumi:"metadata"`
	// Spec describes where resources for the Pod are needed.
	Spec PodSchedulingContextSpec `pulumi:"spec"`
	// Status describes where resources for the Pod can be allocated.
	Status *PodSchedulingContextStatus `pulumi:"status"`
}

// PodSchedulingContextTypeInput is an input type that accepts PodSchedulingContextTypeArgs and PodSchedulingContextTypeOutput values.
// You can construct a concrete instance of `PodSchedulingContextTypeInput` via:
//
//	PodSchedulingContextTypeArgs{...}
type PodSchedulingContextTypeInput interface {
	pulumi.Input

	ToPodSchedulingContextTypeOutput() PodSchedulingContextTypeOutput
	ToPodSchedulingContextTypeOutputWithContext(context.Context) PodSchedulingContextTypeOutput
}

// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type PodSchedulingContextTypeArgs struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion pulumi.StringPtrInput `pulumi:"apiVersion"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind pulumi.StringPtrInput `pulumi:"kind"`
	// Standard object metadata
	Metadata metav1.ObjectMetaPtrInput `pulumi:"metadata"`
	// Spec describes where resources for the Pod are needed.
	Spec PodSchedulingContextSpecInput `pulumi:"spec"`
	// Status describes where resources for the Pod can be allocated.
	Status PodSchedulingContextStatusPtrInput `pulumi:"status"`
}

func (PodSchedulingContextTypeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextType)(nil)).Elem()
}

func (i PodSchedulingContextTypeArgs) ToPodSchedulingContextTypeOutput() PodSchedulingContextTypeOutput {
	return i.ToPodSchedulingContextTypeOutputWithContext(context.Background())
}

func (i PodSchedulingContextTypeArgs) ToPodSchedulingContextTypeOutputWithContext(ctx context.Context) PodSchedulingContextTypeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextTypeOutput)
}

// PodSchedulingContextTypeArrayInput is an input type that accepts PodSchedulingContextTypeArray and PodSchedulingContextTypeArrayOutput values.
// You can construct a concrete instance of `PodSchedulingContextTypeArrayInput` via:
//
//	PodSchedulingContextTypeArray{ PodSchedulingContextTypeArgs{...} }
type PodSchedulingContextTypeArrayInput interface {
	pulumi.Input

	ToPodSchedulingContextTypeArrayOutput() PodSchedulingContextTypeArrayOutput
	ToPodSchedulingContextTypeArrayOutputWithContext(context.Context) PodSchedulingContextTypeArrayOutput
}

type PodSchedulingContextTypeArray []PodSchedulingContextTypeInput

func (PodSchedulingContextTypeArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]PodSchedulingContextType)(nil)).Elem()
}

func (i PodSchedulingContextTypeArray) ToPodSchedulingContextTypeArrayOutput() PodSchedulingContextTypeArrayOutput {
	return i.ToPodSchedulingContextTypeArrayOutputWithContext(context.Background())
}

func (i PodSchedulingContextTypeArray) ToPodSchedulingContextTypeArrayOutputWithContext(ctx context.Context) PodSchedulingContextTypeArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextTypeArrayOutput)
}

// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type PodSchedulingContextTypeOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextTypeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextType)(nil)).Elem()
}

func (o PodSchedulingContextTypeOutput) ToPodSchedulingContextTypeOutput() PodSchedulingContextTypeOutput {
	return o
}

func (o PodSchedulingContextTypeOutput) ToPodSchedulingContextTypeOutputWithContext(ctx context.Context) PodSchedulingContextTypeOutput {
	return o
}

// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
func (o PodSchedulingContextTypeOutput) ApiVersion() pulumi.StringPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextType) *string { return v.ApiVersion }).(pulumi.StringPtrOutput)
}

// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
func (o PodSchedulingContextTypeOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextType) *string { return v.Kind }).(pulumi.StringPtrOutput)
}

// Standard object metadata
func (o PodSchedulingContextTypeOutput) Metadata() metav1.ObjectMetaPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextType) *metav1.ObjectMeta { return v.Metadata }).(metav1.ObjectMetaPtrOutput)
}

// Spec describes where resources for the Pod are needed.
func (o PodSchedulingContextTypeOutput) Spec() PodSchedulingContextSpecOutput {
	return o.ApplyT(func(v PodSchedulingContextType) PodSchedulingContextSpec { return v.Spec }).(PodSchedulingContextSpecOutput)
}

// Status describes where resources for the Pod can be allocated.
func (o PodSchedulingContextTypeOutput) Status() PodSchedulingContextStatusPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextType) *PodSchedulingContextStatus { return v.Status }).(PodSchedulingContextStatusPtrOutput)
}

type PodSchedulingContextTypeArrayOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextTypeArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]PodSchedulingContextType)(nil)).Elem()
}

func (o PodSchedulingContextTypeArrayOutput) ToPodSchedulingContextTypeArrayOutput() PodSchedulingContextTypeArrayOutput {
	return o
}

func (o PodSchedulingContextTypeArrayOutput) ToPodSchedulingContextTypeArrayOutputWithContext(ctx context.Context) PodSchedulingContextTypeArrayOutput {
	return o
}

func (o PodSchedulingContextTypeArrayOutput) Index(i pulumi.IntInput) PodSchedulingContextTypeOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) PodSchedulingContextType {
		return vs[0].([]PodSchedulingContextType)[vs[1].(int)]
	}).(PodSchedulingContextTypeOutput)
}

// PodSchedulingContextList is a collection of Pod scheduling objects.
type PodSchedulingContextListType struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion *string `pulumi:"apiVersion"`
	// Items is the list of PodSchedulingContext objects.
	Items []PodSchedulingContextType `pulumi:"items"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind *string `pulumi:"kind"`
	// Standard list metadata
	Metadata *metav1.ListMeta `pulumi:"metadata"`
}

// PodSchedulingContextListTypeInput is an input type that accepts PodSchedulingContextListTypeArgs and PodSchedulingContextListTypeOutput values.
// You can construct a concrete instance of `PodSchedulingContextListTypeInput` via:
//
//	PodSchedulingContextListTypeArgs{...}
type PodSchedulingContextListTypeInput interface {
	pulumi.Input

	ToPodSchedulingContextListTypeOutput() PodSchedulingContextListTypeOutput
	ToPodSchedulingContextListTypeOutputWithContext(context.Context) PodSchedulingContextListTypeOutput
}

// PodSchedulingContextList is a collection of Pod scheduling objects.
type PodSchedulingContextListTypeArgs struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion pulumi.StringPtrInput `pulumi:"apiVersion"`
	// Items is the list of PodSchedulingContext objects.
	Items PodSchedulingContextTypeArrayInput `pulumi:"items"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind pulumi.StringPtrInput `pulumi:"kind"`
	// Standard list metadata
	Metadata metav1.ListMetaPtrInput `pulumi:"metadata"`
}

func (PodSchedulingContextListTypeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextListType)(nil)).Elem()
}

func (i PodSchedulingContextListTypeArgs) ToPodSchedulingContextListTypeOutput() PodSchedulingContextListTypeOutput {
	return i.ToPodSchedulingContextListTypeOutputWithContext(context.Background())
}

func (i PodSchedulingContextListTypeArgs) ToPodSchedulingContextListTypeOutputWithContext(ctx context.Context) PodSchedulingContextListTypeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextListTypeOutput)
}

// PodSchedulingContextList is a collection of Pod scheduling objects.
type PodSchedulingContextListTypeOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextListTypeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextListType)(nil)).Elem()
}

func (o PodSchedulingContextListTypeOutput) ToPodSchedulingContextListTypeOutput() PodSchedulingContextListTypeOutput {
	return o
}

func (o PodSchedulingContextListTypeOutput) ToPodSchedulingContextListTypeOutputWithContext(ctx context.Context) PodSchedulingContextListTypeOutput {
	return o
}

// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
func (o PodSchedulingContextListTypeOutput) ApiVersion() pulumi.StringPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextListType) *string { return v.ApiVersion }).(pulumi.StringPtrOutput)
}

// Items is the list of PodSchedulingContext objects.
func (o PodSchedulingContextListTypeOutput) Items() PodSchedulingContextTypeArrayOutput {
	return o.ApplyT(func(v PodSchedulingContextListType) []PodSchedulingContextType { return v.Items }).(PodSchedulingContextTypeArrayOutput)
}

// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
func (o PodSchedulingContextListTypeOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextListType) *string { return v.Kind }).(pulumi.StringPtrOutput)
}

// Standard list metadata
func (o PodSchedulingContextListTypeOutput) Metadata() metav1.ListMetaPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextListType) *metav1.ListMeta { return v.Metadata }).(metav1.ListMetaPtrOutput)
}

// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type PodSchedulingContextPatchType struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion *string `pulumi:"apiVersion"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind *string `pulumi:"kind"`
	// Standard object metadata
	Metadata *metav1.ObjectMetaPatch `pulumi:"metadata"`
	// Spec describes where resources for the Pod are needed.
	Spec *PodSchedulingContextSpecPatch `pulumi:"spec"`
	// Status describes where resources for the Pod can be allocated.
	Status *PodSchedulingContextStatusPatch `pulumi:"status"`
}

// PodSchedulingContextPatchTypeInput is an input type that accepts PodSchedulingContextPatchTypeArgs and PodSchedulingContextPatchTypeOutput values.
// You can construct a concrete instance of `PodSchedulingContextPatchTypeInput` via:
//
//	PodSchedulingContextPatchTypeArgs{...}
type PodSchedulingContextPatchTypeInput interface {
	pulumi.Input

	ToPodSchedulingContextPatchTypeOutput() PodSchedulingContextPatchTypeOutput
	ToPodSchedulingContextPatchTypeOutputWithContext(context.Context) PodSchedulingContextPatchTypeOutput
}

// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type PodSchedulingContextPatchTypeArgs struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion pulumi.StringPtrInput `pulumi:"apiVersion"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind pulumi.StringPtrInput `pulumi:"kind"`
	// Standard object metadata
	Metadata metav1.ObjectMetaPatchPtrInput `pulumi:"metadata"`
	// Spec describes where resources for the Pod are needed.
	Spec PodSchedulingContextSpecPatchPtrInput `pulumi:"spec"`
	// Status describes where resources for the Pod can be allocated.
	Status PodSchedulingContextStatusPatchPtrInput `pulumi:"status"`
}

func (PodSchedulingContextPatchTypeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextPatchType)(nil)).Elem()
}

func (i PodSchedulingContextPatchTypeArgs) ToPodSchedulingContextPatchTypeOutput() PodSchedulingContextPatchTypeOutput {
	return i.ToPodSchedulingContextPatchTypeOutputWithContext(context.Background())
}

func (i PodSchedulingContextPatchTypeArgs) ToPodSchedulingContextPatchTypeOutputWithContext(ctx context.Context) PodSchedulingContextPatchTypeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextPatchTypeOutput)
}

// PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use "WaitForFirstConsumer" allocation mode.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type PodSchedulingContextPatchTypeOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextPatchTypeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextPatchType)(nil)).Elem()
}

func (o PodSchedulingContextPatchTypeOutput) ToPodSchedulingContextPatchTypeOutput() PodSchedulingContextPatchTypeOutput {
	return o
}

func (o PodSchedulingContextPatchTypeOutput) ToPodSchedulingContextPatchTypeOutputWithContext(ctx context.Context) PodSchedulingContextPatchTypeOutput {
	return o
}

// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
func (o PodSchedulingContextPatchTypeOutput) ApiVersion() pulumi.StringPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextPatchType) *string { return v.ApiVersion }).(pulumi.StringPtrOutput)
}

// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
func (o PodSchedulingContextPatchTypeOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextPatchType) *string { return v.Kind }).(pulumi.StringPtrOutput)
}

// Standard object metadata
func (o PodSchedulingContextPatchTypeOutput) Metadata() metav1.ObjectMetaPatchPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextPatchType) *metav1.ObjectMetaPatch { return v.Metadata }).(metav1.ObjectMetaPatchPtrOutput)
}

// Spec describes where resources for the Pod are needed.
func (o PodSchedulingContextPatchTypeOutput) Spec() PodSchedulingContextSpecPatchPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextPatchType) *PodSchedulingContextSpecPatch { return v.Spec }).(PodSchedulingContextSpecPatchPtrOutput)
}

// Status describes where resources for the Pod can be allocated.
func (o PodSchedulingContextPatchTypeOutput) Status() PodSchedulingContextStatusPatchPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextPatchType) *PodSchedulingContextStatusPatch { return v.Status }).(PodSchedulingContextStatusPatchPtrOutput)
}

// PodSchedulingContextSpec describes where resources for the Pod are needed.
type PodSchedulingContextSpec struct {
	// PotentialNodes lists nodes where the Pod might be able to run.
	//
	// The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
	PotentialNodes []string `pulumi:"potentialNodes"`
	// SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
	SelectedNode *string `pulumi:"selectedNode"`
}

// PodSchedulingContextSpecInput is an input type that accepts PodSchedulingContextSpecArgs and PodSchedulingContextSpecOutput values.
// You can construct a concrete instance of `PodSchedulingContextSpecInput` via:
//
//	PodSchedulingContextSpecArgs{...}
type PodSchedulingContextSpecInput interface {
	pulumi.Input

	ToPodSchedulingContextSpecOutput() PodSchedulingContextSpecOutput
	ToPodSchedulingContextSpecOutputWithContext(context.Context) PodSchedulingContextSpecOutput
}

// PodSchedulingContextSpec describes where resources for the Pod are needed.
type PodSchedulingContextSpecArgs struct {
	// PotentialNodes lists nodes where the Pod might be able to run.
	//
	// The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
	PotentialNodes pulumi.StringArrayInput `pulumi:"potentialNodes"`
	// SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
	SelectedNode pulumi.StringPtrInput `pulumi:"selectedNode"`
}

func (PodSchedulingContextSpecArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextSpec)(nil)).Elem()
}

func (i PodSchedulingContextSpecArgs) ToPodSchedulingContextSpecOutput() PodSchedulingContextSpecOutput {
	return i.ToPodSchedulingContextSpecOutputWithContext(context.Background())
}

func (i PodSchedulingContextSpecArgs) ToPodSchedulingContextSpecOutputWithContext(ctx context.Context) PodSchedulingContextSpecOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextSpecOutput)
}

// PodSchedulingContextSpec describes where resources for the Pod are needed.
type PodSchedulingContextSpecOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextSpecOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextSpec)(nil)).Elem()
}

func (o PodSchedulingContextSpecOutput) ToPodSchedulingContextSpecOutput() PodSchedulingContextSpecOutput {
	return o
}

func (o PodSchedulingContextSpecOutput) ToPodSchedulingContextSpecOutputWithContext(ctx context.Context) PodSchedulingContextSpecOutput {
	return o
}

// PotentialNodes lists nodes where the Pod might be able to run.
//
// The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
func (o PodSchedulingContextSpecOutput) PotentialNodes() pulumi.StringArrayOutput {
	return o.ApplyT(func(v PodSchedulingContextSpec) []string { return v.PotentialNodes }).(pulumi.StringArrayOutput)
}

// SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
func (o PodSchedulingContextSpecOutput) SelectedNode() pulumi.StringPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextSpec) *string { return v.SelectedNode }).(pulumi.StringPtrOutput)
}

// PodSchedulingContextSpec describes where resources for the Pod are needed.
type PodSchedulingContextSpecPatch struct {
	// PotentialNodes lists nodes where the Pod might be able to run.
	//
	// The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
	PotentialNodes []string `pulumi:"potentialNodes"`
	// SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
	SelectedNode *string `pulumi:"selectedNode"`
}

// PodSchedulingContextSpecPatchInput is an input type that accepts PodSchedulingContextSpecPatchArgs and PodSchedulingContextSpecPatchOutput values.
// You can construct a concrete instance of `PodSchedulingContextSpecPatchInput` via:
//
//	PodSchedulingContextSpecPatchArgs{...}
type PodSchedulingContextSpecPatchInput interface {
	pulumi.Input

	ToPodSchedulingContextSpecPatchOutput() PodSchedulingContextSpecPatchOutput
	ToPodSchedulingContextSpecPatchOutputWithContext(context.Context) PodSchedulingContextSpecPatchOutput
}

// PodSchedulingContextSpec describes where resources for the Pod are needed.
type PodSchedulingContextSpecPatchArgs struct {
	// PotentialNodes lists nodes where the Pod might be able to run.
	//
	// The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
	PotentialNodes pulumi.StringArrayInput `pulumi:"potentialNodes"`
	// SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
	SelectedNode pulumi.StringPtrInput `pulumi:"selectedNode"`
}

func (PodSchedulingContextSpecPatchArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextSpecPatch)(nil)).Elem()
}

func (i PodSchedulingContextSpecPatchArgs) ToPodSchedulingContextSpecPatchOutput() PodSchedulingContextSpecPatchOutput {
	return i.ToPodSchedulingContextSpecPatchOutputWithContext(context.Background())
}

func (i PodSchedulingContextSpecPatchArgs) ToPodSchedulingContextSpecPatchOutputWithContext(ctx context.Context) PodSchedulingContextSpecPatchOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextSpecPatchOutput)
}

func (i PodSchedulingContextSpecPatchArgs) ToPodSchedulingContextSpecPatchPtrOutput() PodSchedulingContextSpecPatchPtrOutput {
	return i.ToPodSchedulingContextSpecPatchPtrOutputWithContext(context.Background())
}

func (i PodSchedulingContextSpecPatchArgs) ToPodSchedulingContextSpecPatchPtrOutputWithContext(ctx context.Context) PodSchedulingContextSpecPatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextSpecPatchOutput).ToPodSchedulingContextSpecPatchPtrOutputWithContext(ctx)
}

// PodSchedulingContextSpecPatchPtrInput is an input type that accepts PodSchedulingContextSpecPatchArgs, PodSchedulingContextSpecPatchPtr and PodSchedulingContextSpecPatchPtrOutput values.
// You can construct a concrete instance of `PodSchedulingContextSpecPatchPtrInput` via:
//
//	        PodSchedulingContextSpecPatchArgs{...}
//
//	or:
//
//	        nil
type PodSchedulingContextSpecPatchPtrInput interface {
	pulumi.Input

	ToPodSchedulingContextSpecPatchPtrOutput() PodSchedulingContextSpecPatchPtrOutput
	ToPodSchedulingContextSpecPatchPtrOutputWithContext(context.Context) PodSchedulingContextSpecPatchPtrOutput
}

type podSchedulingContextSpecPatchPtrType PodSchedulingContextSpecPatchArgs

func PodSchedulingContextSpecPatchPtr(v *PodSchedulingContextSpecPatchArgs) PodSchedulingContextSpecPatchPtrInput {
	return (*podSchedulingContextSpecPatchPtrType)(v)
}

func (*podSchedulingContextSpecPatchPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**PodSchedulingContextSpecPatch)(nil)).Elem()
}

func (i *podSchedulingContextSpecPatchPtrType) ToPodSchedulingContextSpecPatchPtrOutput() PodSchedulingContextSpecPatchPtrOutput {
	return i.ToPodSchedulingContextSpecPatchPtrOutputWithContext(context.Background())
}

func (i *podSchedulingContextSpecPatchPtrType) ToPodSchedulingContextSpecPatchPtrOutputWithContext(ctx context.Context) PodSchedulingContextSpecPatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextSpecPatchPtrOutput)
}

// PodSchedulingContextSpec describes where resources for the Pod are needed.
type PodSchedulingContextSpecPatchOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextSpecPatchOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextSpecPatch)(nil)).Elem()
}

func (o PodSchedulingContextSpecPatchOutput) ToPodSchedulingContextSpecPatchOutput() PodSchedulingContextSpecPatchOutput {
	return o
}

func (o PodSchedulingContextSpecPatchOutput) ToPodSchedulingContextSpecPatchOutputWithContext(ctx context.Context) PodSchedulingContextSpecPatchOutput {
	return o
}

func (o PodSchedulingContextSpecPatchOutput) ToPodSchedulingContextSpecPatchPtrOutput() PodSchedulingContextSpecPatchPtrOutput {
	return o.ToPodSchedulingContextSpecPatchPtrOutputWithContext(context.Background())
}

func (o PodSchedulingContextSpecPatchOutput) ToPodSchedulingContextSpecPatchPtrOutputWithContext(ctx context.Context) PodSchedulingContextSpecPatchPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v PodSchedulingContextSpecPatch) *PodSchedulingContextSpecPatch {
		return &v
	}).(PodSchedulingContextSpecPatchPtrOutput)
}

// PotentialNodes lists nodes where the Pod might be able to run.
//
// The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
func (o PodSchedulingContextSpecPatchOutput) PotentialNodes() pulumi.StringArrayOutput {
	return o.ApplyT(func(v PodSchedulingContextSpecPatch) []string { return v.PotentialNodes }).(pulumi.StringArrayOutput)
}

// SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
func (o PodSchedulingContextSpecPatchOutput) SelectedNode() pulumi.StringPtrOutput {
	return o.ApplyT(func(v PodSchedulingContextSpecPatch) *string { return v.SelectedNode }).(pulumi.StringPtrOutput)
}

type PodSchedulingContextSpecPatchPtrOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextSpecPatchPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**PodSchedulingContextSpecPatch)(nil)).Elem()
}

func (o PodSchedulingContextSpecPatchPtrOutput) ToPodSchedulingContextSpecPatchPtrOutput() PodSchedulingContextSpecPatchPtrOutput {
	return o
}

func (o PodSchedulingContextSpecPatchPtrOutput) ToPodSchedulingContextSpecPatchPtrOutputWithContext(ctx context.Context) PodSchedulingContextSpecPatchPtrOutput {
	return o
}

func (o PodSchedulingContextSpecPatchPtrOutput) Elem() PodSchedulingContextSpecPatchOutput {
	return o.ApplyT(func(v *PodSchedulingContextSpecPatch) PodSchedulingContextSpecPatch {
		if v != nil {
			return *v
		}
		var ret PodSchedulingContextSpecPatch
		return ret
	}).(PodSchedulingContextSpecPatchOutput)
}

// PotentialNodes lists nodes where the Pod might be able to run.
//
// The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.
func (o PodSchedulingContextSpecPatchPtrOutput) PotentialNodes() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *PodSchedulingContextSpecPatch) []string {
		if v == nil {
			return nil
		}
		return v.PotentialNodes
	}).(pulumi.StringArrayOutput)
}

// SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use "WaitForFirstConsumer" allocation is to be attempted.
func (o PodSchedulingContextSpecPatchPtrOutput) SelectedNode() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *PodSchedulingContextSpecPatch) *string {
		if v == nil {
			return nil
		}
		return v.SelectedNode
	}).(pulumi.StringPtrOutput)
}

// PodSchedulingContextStatus describes where resources for the Pod can be allocated.
type PodSchedulingContextStatus struct {
	// ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
	ResourceClaims []ResourceClaimSchedulingStatus `pulumi:"resourceClaims"`
}

// PodSchedulingContextStatusInput is an input type that accepts PodSchedulingContextStatusArgs and PodSchedulingContextStatusOutput values.
// You can construct a concrete instance of `PodSchedulingContextStatusInput` via:
//
//	PodSchedulingContextStatusArgs{...}
type PodSchedulingContextStatusInput interface {
	pulumi.Input

	ToPodSchedulingContextStatusOutput() PodSchedulingContextStatusOutput
	ToPodSchedulingContextStatusOutputWithContext(context.Context) PodSchedulingContextStatusOutput
}

// PodSchedulingContextStatus describes where resources for the Pod can be allocated.
type PodSchedulingContextStatusArgs struct {
	// ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
	ResourceClaims ResourceClaimSchedulingStatusArrayInput `pulumi:"resourceClaims"`
}

func (PodSchedulingContextStatusArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextStatus)(nil)).Elem()
}

func (i PodSchedulingContextStatusArgs) ToPodSchedulingContextStatusOutput() PodSchedulingContextStatusOutput {
	return i.ToPodSchedulingContextStatusOutputWithContext(context.Background())
}

func (i PodSchedulingContextStatusArgs) ToPodSchedulingContextStatusOutputWithContext(ctx context.Context) PodSchedulingContextStatusOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextStatusOutput)
}

func (i PodSchedulingContextStatusArgs) ToPodSchedulingContextStatusPtrOutput() PodSchedulingContextStatusPtrOutput {
	return i.ToPodSchedulingContextStatusPtrOutputWithContext(context.Background())
}

func (i PodSchedulingContextStatusArgs) ToPodSchedulingContextStatusPtrOutputWithContext(ctx context.Context) PodSchedulingContextStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextStatusOutput).ToPodSchedulingContextStatusPtrOutputWithContext(ctx)
}

// PodSchedulingContextStatusPtrInput is an input type that accepts PodSchedulingContextStatusArgs, PodSchedulingContextStatusPtr and PodSchedulingContextStatusPtrOutput values.
// You can construct a concrete instance of `PodSchedulingContextStatusPtrInput` via:
//
//	        PodSchedulingContextStatusArgs{...}
//
//	or:
//
//	        nil
type PodSchedulingContextStatusPtrInput interface {
	pulumi.Input

	ToPodSchedulingContextStatusPtrOutput() PodSchedulingContextStatusPtrOutput
	ToPodSchedulingContextStatusPtrOutputWithContext(context.Context) PodSchedulingContextStatusPtrOutput
}

type podSchedulingContextStatusPtrType PodSchedulingContextStatusArgs

func PodSchedulingContextStatusPtr(v *PodSchedulingContextStatusArgs) PodSchedulingContextStatusPtrInput {
	return (*podSchedulingContextStatusPtrType)(v)
}

func (*podSchedulingContextStatusPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**PodSchedulingContextStatus)(nil)).Elem()
}

func (i *podSchedulingContextStatusPtrType) ToPodSchedulingContextStatusPtrOutput() PodSchedulingContextStatusPtrOutput {
	return i.ToPodSchedulingContextStatusPtrOutputWithContext(context.Background())
}

func (i *podSchedulingContextStatusPtrType) ToPodSchedulingContextStatusPtrOutputWithContext(ctx context.Context) PodSchedulingContextStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextStatusPtrOutput)
}

// PodSchedulingContextStatus describes where resources for the Pod can be allocated.
type PodSchedulingContextStatusOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextStatusOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextStatus)(nil)).Elem()
}

func (o PodSchedulingContextStatusOutput) ToPodSchedulingContextStatusOutput() PodSchedulingContextStatusOutput {
	return o
}

func (o PodSchedulingContextStatusOutput) ToPodSchedulingContextStatusOutputWithContext(ctx context.Context) PodSchedulingContextStatusOutput {
	return o
}

func (o PodSchedulingContextStatusOutput) ToPodSchedulingContextStatusPtrOutput() PodSchedulingContextStatusPtrOutput {
	return o.ToPodSchedulingContextStatusPtrOutputWithContext(context.Background())
}

func (o PodSchedulingContextStatusOutput) ToPodSchedulingContextStatusPtrOutputWithContext(ctx context.Context) PodSchedulingContextStatusPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v PodSchedulingContextStatus) *PodSchedulingContextStatus {
		return &v
	}).(PodSchedulingContextStatusPtrOutput)
}

// ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
func (o PodSchedulingContextStatusOutput) ResourceClaims() ResourceClaimSchedulingStatusArrayOutput {
	return o.ApplyT(func(v PodSchedulingContextStatus) []ResourceClaimSchedulingStatus { return v.ResourceClaims }).(ResourceClaimSchedulingStatusArrayOutput)
}

type PodSchedulingContextStatusPtrOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextStatusPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**PodSchedulingContextStatus)(nil)).Elem()
}

func (o PodSchedulingContextStatusPtrOutput) ToPodSchedulingContextStatusPtrOutput() PodSchedulingContextStatusPtrOutput {
	return o
}

func (o PodSchedulingContextStatusPtrOutput) ToPodSchedulingContextStatusPtrOutputWithContext(ctx context.Context) PodSchedulingContextStatusPtrOutput {
	return o
}

func (o PodSchedulingContextStatusPtrOutput) Elem() PodSchedulingContextStatusOutput {
	return o.ApplyT(func(v *PodSchedulingContextStatus) PodSchedulingContextStatus {
		if v != nil {
			return *v
		}
		var ret PodSchedulingContextStatus
		return ret
	}).(PodSchedulingContextStatusOutput)
}

// ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
func (o PodSchedulingContextStatusPtrOutput) ResourceClaims() ResourceClaimSchedulingStatusArrayOutput {
	return o.ApplyT(func(v *PodSchedulingContextStatus) []ResourceClaimSchedulingStatus {
		if v == nil {
			return nil
		}
		return v.ResourceClaims
	}).(ResourceClaimSchedulingStatusArrayOutput)
}

// PodSchedulingContextStatus describes where resources for the Pod can be allocated.
type PodSchedulingContextStatusPatch struct {
	// ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
	ResourceClaims []ResourceClaimSchedulingStatusPatch `pulumi:"resourceClaims"`
}

// PodSchedulingContextStatusPatchInput is an input type that accepts PodSchedulingContextStatusPatchArgs and PodSchedulingContextStatusPatchOutput values.
// You can construct a concrete instance of `PodSchedulingContextStatusPatchInput` via:
//
//	PodSchedulingContextStatusPatchArgs{...}
type PodSchedulingContextStatusPatchInput interface {
	pulumi.Input

	ToPodSchedulingContextStatusPatchOutput() PodSchedulingContextStatusPatchOutput
	ToPodSchedulingContextStatusPatchOutputWithContext(context.Context) PodSchedulingContextStatusPatchOutput
}

// PodSchedulingContextStatus describes where resources for the Pod can be allocated.
type PodSchedulingContextStatusPatchArgs struct {
	// ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
	ResourceClaims ResourceClaimSchedulingStatusPatchArrayInput `pulumi:"resourceClaims"`
}

func (PodSchedulingContextStatusPatchArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextStatusPatch)(nil)).Elem()
}

func (i PodSchedulingContextStatusPatchArgs) ToPodSchedulingContextStatusPatchOutput() PodSchedulingContextStatusPatchOutput {
	return i.ToPodSchedulingContextStatusPatchOutputWithContext(context.Background())
}

func (i PodSchedulingContextStatusPatchArgs) ToPodSchedulingContextStatusPatchOutputWithContext(ctx context.Context) PodSchedulingContextStatusPatchOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextStatusPatchOutput)
}

func (i PodSchedulingContextStatusPatchArgs) ToPodSchedulingContextStatusPatchPtrOutput() PodSchedulingContextStatusPatchPtrOutput {
	return i.ToPodSchedulingContextStatusPatchPtrOutputWithContext(context.Background())
}

func (i PodSchedulingContextStatusPatchArgs) ToPodSchedulingContextStatusPatchPtrOutputWithContext(ctx context.Context) PodSchedulingContextStatusPatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextStatusPatchOutput).ToPodSchedulingContextStatusPatchPtrOutputWithContext(ctx)
}

// PodSchedulingContextStatusPatchPtrInput is an input type that accepts PodSchedulingContextStatusPatchArgs, PodSchedulingContextStatusPatchPtr and PodSchedulingContextStatusPatchPtrOutput values.
// You can construct a concrete instance of `PodSchedulingContextStatusPatchPtrInput` via:
//
//	        PodSchedulingContextStatusPatchArgs{...}
//
//	or:
//
//	        nil
type PodSchedulingContextStatusPatchPtrInput interface {
	pulumi.Input

	ToPodSchedulingContextStatusPatchPtrOutput() PodSchedulingContextStatusPatchPtrOutput
	ToPodSchedulingContextStatusPatchPtrOutputWithContext(context.Context) PodSchedulingContextStatusPatchPtrOutput
}

type podSchedulingContextStatusPatchPtrType PodSchedulingContextStatusPatchArgs

func PodSchedulingContextStatusPatchPtr(v *PodSchedulingContextStatusPatchArgs) PodSchedulingContextStatusPatchPtrInput {
	return (*podSchedulingContextStatusPatchPtrType)(v)
}

func (*podSchedulingContextStatusPatchPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**PodSchedulingContextStatusPatch)(nil)).Elem()
}

func (i *podSchedulingContextStatusPatchPtrType) ToPodSchedulingContextStatusPatchPtrOutput() PodSchedulingContextStatusPatchPtrOutput {
	return i.ToPodSchedulingContextStatusPatchPtrOutputWithContext(context.Background())
}

func (i *podSchedulingContextStatusPatchPtrType) ToPodSchedulingContextStatusPatchPtrOutputWithContext(ctx context.Context) PodSchedulingContextStatusPatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(PodSchedulingContextStatusPatchPtrOutput)
}

// PodSchedulingContextStatus describes where resources for the Pod can be allocated.
type PodSchedulingContextStatusPatchOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextStatusPatchOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*PodSchedulingContextStatusPatch)(nil)).Elem()
}

func (o PodSchedulingContextStatusPatchOutput) ToPodSchedulingContextStatusPatchOutput() PodSchedulingContextStatusPatchOutput {
	return o
}

func (o PodSchedulingContextStatusPatchOutput) ToPodSchedulingContextStatusPatchOutputWithContext(ctx context.Context) PodSchedulingContextStatusPatchOutput {
	return o
}

func (o PodSchedulingContextStatusPatchOutput) ToPodSchedulingContextStatusPatchPtrOutput() PodSchedulingContextStatusPatchPtrOutput {
	return o.ToPodSchedulingContextStatusPatchPtrOutputWithContext(context.Background())
}

func (o PodSchedulingContextStatusPatchOutput) ToPodSchedulingContextStatusPatchPtrOutputWithContext(ctx context.Context) PodSchedulingContextStatusPatchPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v PodSchedulingContextStatusPatch) *PodSchedulingContextStatusPatch {
		return &v
	}).(PodSchedulingContextStatusPatchPtrOutput)
}

// ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
func (o PodSchedulingContextStatusPatchOutput) ResourceClaims() ResourceClaimSchedulingStatusPatchArrayOutput {
	return o.ApplyT(func(v PodSchedulingContextStatusPatch) []ResourceClaimSchedulingStatusPatch { return v.ResourceClaims }).(ResourceClaimSchedulingStatusPatchArrayOutput)
}

type PodSchedulingContextStatusPatchPtrOutput struct{ *pulumi.OutputState }

func (PodSchedulingContextStatusPatchPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**PodSchedulingContextStatusPatch)(nil)).Elem()
}

func (o PodSchedulingContextStatusPatchPtrOutput) ToPodSchedulingContextStatusPatchPtrOutput() PodSchedulingContextStatusPatchPtrOutput {
	return o
}

func (o PodSchedulingContextStatusPatchPtrOutput) ToPodSchedulingContextStatusPatchPtrOutputWithContext(ctx context.Context) PodSchedulingContextStatusPatchPtrOutput {
	return o
}

func (o PodSchedulingContextStatusPatchPtrOutput) Elem() PodSchedulingContextStatusPatchOutput {
	return o.ApplyT(func(v *PodSchedulingContextStatusPatch) PodSchedulingContextStatusPatch {
		if v != nil {
			return *v
		}
		var ret PodSchedulingContextStatusPatch
		return ret
	}).(PodSchedulingContextStatusPatchOutput)
}

// ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses "WaitForFirstConsumer" allocation mode.
func (o PodSchedulingContextStatusPatchPtrOutput) ResourceClaims() ResourceClaimSchedulingStatusPatchArrayOutput {
	return o.ApplyT(func(v *PodSchedulingContextStatusPatch) []ResourceClaimSchedulingStatusPatch {
		if v == nil {
			return nil
		}
		return v.ResourceClaims
	}).(ResourceClaimSchedulingStatusPatchArrayOutput)
}

// ResourceClaim describes which resources are needed by a resource consumer. Its status tracks whether the resource has been allocated and what the resulting attributes are.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type ResourceClaimType struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion *string `pulumi:"apiVersion"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind *string `pulumi:"kind"`
	// Standard object metadata
	Metadata *metav1.ObjectMeta `pulumi:"metadata"`
	// Spec describes the desired attributes of a resource that then needs to be allocated. It can only be set once when creating the ResourceClaim.
	Spec ResourceClaimSpec `pulumi:"spec"`
	// Status describes whether the resource is available and with which attributes.
	Status *ResourceClaimStatus `pulumi:"status"`
}

// ResourceClaimTypeInput is an input type that accepts ResourceClaimTypeArgs and ResourceClaimTypeOutput values.
// You can construct a concrete instance of `ResourceClaimTypeInput` via:
//
//	ResourceClaimTypeArgs{...}
type ResourceClaimTypeInput interface {
	pulumi.Input

	ToResourceClaimTypeOutput() ResourceClaimTypeOutput
	ToResourceClaimTypeOutputWithContext(context.Context) ResourceClaimTypeOutput
}

// ResourceClaim describes which resources are needed by a resource consumer. Its status tracks whether the resource has been allocated and what the resulting attributes are.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type ResourceClaimTypeArgs struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion pulumi.StringPtrInput `pulumi:"apiVersion"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind pulumi.StringPtrInput `pulumi:"kind"`
	// Standard object metadata
	Metadata metav1.ObjectMetaPtrInput `pulumi:"metadata"`
	// Spec describes the desired attributes of a resource that then needs to be allocated. It can only be set once when creating the ResourceClaim.
	Spec ResourceClaimSpecInput `pulumi:"spec"`
	// Status describes whether the resource is available and with which attributes.
	Status ResourceClaimStatusPtrInput `pulumi:"status"`
}

func (ResourceClaimTypeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimType)(nil)).Elem()
}

func (i ResourceClaimTypeArgs) ToResourceClaimTypeOutput() ResourceClaimTypeOutput {
	return i.ToResourceClaimTypeOutputWithContext(context.Background())
}

func (i ResourceClaimTypeArgs) ToResourceClaimTypeOutputWithContext(ctx context.Context) ResourceClaimTypeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimTypeOutput)
}

// ResourceClaimTypeArrayInput is an input type that accepts ResourceClaimTypeArray and ResourceClaimTypeArrayOutput values.
// You can construct a concrete instance of `ResourceClaimTypeArrayInput` via:
//
//	ResourceClaimTypeArray{ ResourceClaimTypeArgs{...} }
type ResourceClaimTypeArrayInput interface {
	pulumi.Input

	ToResourceClaimTypeArrayOutput() ResourceClaimTypeArrayOutput
	ToResourceClaimTypeArrayOutputWithContext(context.Context) ResourceClaimTypeArrayOutput
}

type ResourceClaimTypeArray []ResourceClaimTypeInput

func (ResourceClaimTypeArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimType)(nil)).Elem()
}

func (i ResourceClaimTypeArray) ToResourceClaimTypeArrayOutput() ResourceClaimTypeArrayOutput {
	return i.ToResourceClaimTypeArrayOutputWithContext(context.Background())
}

func (i ResourceClaimTypeArray) ToResourceClaimTypeArrayOutputWithContext(ctx context.Context) ResourceClaimTypeArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimTypeArrayOutput)
}

// ResourceClaim describes which resources are needed by a resource consumer. Its status tracks whether the resource has been allocated and what the resulting attributes are.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type ResourceClaimTypeOutput struct{ *pulumi.OutputState }

func (ResourceClaimTypeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimType)(nil)).Elem()
}

func (o ResourceClaimTypeOutput) ToResourceClaimTypeOutput() ResourceClaimTypeOutput {
	return o
}

func (o ResourceClaimTypeOutput) ToResourceClaimTypeOutputWithContext(ctx context.Context) ResourceClaimTypeOutput {
	return o
}

// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
func (o ResourceClaimTypeOutput) ApiVersion() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimType) *string { return v.ApiVersion }).(pulumi.StringPtrOutput)
}

// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
func (o ResourceClaimTypeOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimType) *string { return v.Kind }).(pulumi.StringPtrOutput)
}

// Standard object metadata
func (o ResourceClaimTypeOutput) Metadata() metav1.ObjectMetaPtrOutput {
	return o.ApplyT(func(v ResourceClaimType) *metav1.ObjectMeta { return v.Metadata }).(metav1.ObjectMetaPtrOutput)
}

// Spec describes the desired attributes of a resource that then needs to be allocated. It can only be set once when creating the ResourceClaim.
func (o ResourceClaimTypeOutput) Spec() ResourceClaimSpecOutput {
	return o.ApplyT(func(v ResourceClaimType) ResourceClaimSpec { return v.Spec }).(ResourceClaimSpecOutput)
}

// Status describes whether the resource is available and with which attributes.
func (o ResourceClaimTypeOutput) Status() ResourceClaimStatusPtrOutput {
	return o.ApplyT(func(v ResourceClaimType) *ResourceClaimStatus { return v.Status }).(ResourceClaimStatusPtrOutput)
}

type ResourceClaimTypeArrayOutput struct{ *pulumi.OutputState }

func (ResourceClaimTypeArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimType)(nil)).Elem()
}

func (o ResourceClaimTypeArrayOutput) ToResourceClaimTypeArrayOutput() ResourceClaimTypeArrayOutput {
	return o
}

func (o ResourceClaimTypeArrayOutput) ToResourceClaimTypeArrayOutputWithContext(ctx context.Context) ResourceClaimTypeArrayOutput {
	return o
}

func (o ResourceClaimTypeArrayOutput) Index(i pulumi.IntInput) ResourceClaimTypeOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ResourceClaimType {
		return vs[0].([]ResourceClaimType)[vs[1].(int)]
	}).(ResourceClaimTypeOutput)
}

// ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
type ResourceClaimConsumerReference struct {
	// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
	ApiGroup *string `pulumi:"apiGroup"`
	// Name is the name of resource being referenced.
	Name string `pulumi:"name"`
	// Resource is the type of resource being referenced, for example "pods".
	Resource string `pulumi:"resource"`
	// UID identifies exactly one incarnation of the resource.
	Uid string `pulumi:"uid"`
}

// ResourceClaimConsumerReferenceInput is an input type that accepts ResourceClaimConsumerReferenceArgs and ResourceClaimConsumerReferenceOutput values.
// You can construct a concrete instance of `ResourceClaimConsumerReferenceInput` via:
//
//	ResourceClaimConsumerReferenceArgs{...}
type ResourceClaimConsumerReferenceInput interface {
	pulumi.Input

	ToResourceClaimConsumerReferenceOutput() ResourceClaimConsumerReferenceOutput
	ToResourceClaimConsumerReferenceOutputWithContext(context.Context) ResourceClaimConsumerReferenceOutput
}

// ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
type ResourceClaimConsumerReferenceArgs struct {
	// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
	ApiGroup pulumi.StringPtrInput `pulumi:"apiGroup"`
	// Name is the name of resource being referenced.
	Name pulumi.StringInput `pulumi:"name"`
	// Resource is the type of resource being referenced, for example "pods".
	Resource pulumi.StringInput `pulumi:"resource"`
	// UID identifies exactly one incarnation of the resource.
	Uid pulumi.StringInput `pulumi:"uid"`
}

func (ResourceClaimConsumerReferenceArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimConsumerReference)(nil)).Elem()
}

func (i ResourceClaimConsumerReferenceArgs) ToResourceClaimConsumerReferenceOutput() ResourceClaimConsumerReferenceOutput {
	return i.ToResourceClaimConsumerReferenceOutputWithContext(context.Background())
}

func (i ResourceClaimConsumerReferenceArgs) ToResourceClaimConsumerReferenceOutputWithContext(ctx context.Context) ResourceClaimConsumerReferenceOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimConsumerReferenceOutput)
}

// ResourceClaimConsumerReferenceArrayInput is an input type that accepts ResourceClaimConsumerReferenceArray and ResourceClaimConsumerReferenceArrayOutput values.
// You can construct a concrete instance of `ResourceClaimConsumerReferenceArrayInput` via:
//
//	ResourceClaimConsumerReferenceArray{ ResourceClaimConsumerReferenceArgs{...} }
type ResourceClaimConsumerReferenceArrayInput interface {
	pulumi.Input

	ToResourceClaimConsumerReferenceArrayOutput() ResourceClaimConsumerReferenceArrayOutput
	ToResourceClaimConsumerReferenceArrayOutputWithContext(context.Context) ResourceClaimConsumerReferenceArrayOutput
}

type ResourceClaimConsumerReferenceArray []ResourceClaimConsumerReferenceInput

func (ResourceClaimConsumerReferenceArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimConsumerReference)(nil)).Elem()
}

func (i ResourceClaimConsumerReferenceArray) ToResourceClaimConsumerReferenceArrayOutput() ResourceClaimConsumerReferenceArrayOutput {
	return i.ToResourceClaimConsumerReferenceArrayOutputWithContext(context.Background())
}

func (i ResourceClaimConsumerReferenceArray) ToResourceClaimConsumerReferenceArrayOutputWithContext(ctx context.Context) ResourceClaimConsumerReferenceArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimConsumerReferenceArrayOutput)
}

// ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
type ResourceClaimConsumerReferenceOutput struct{ *pulumi.OutputState }

func (ResourceClaimConsumerReferenceOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimConsumerReference)(nil)).Elem()
}

func (o ResourceClaimConsumerReferenceOutput) ToResourceClaimConsumerReferenceOutput() ResourceClaimConsumerReferenceOutput {
	return o
}

func (o ResourceClaimConsumerReferenceOutput) ToResourceClaimConsumerReferenceOutputWithContext(ctx context.Context) ResourceClaimConsumerReferenceOutput {
	return o
}

// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
func (o ResourceClaimConsumerReferenceOutput) ApiGroup() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimConsumerReference) *string { return v.ApiGroup }).(pulumi.StringPtrOutput)
}

// Name is the name of resource being referenced.
func (o ResourceClaimConsumerReferenceOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ResourceClaimConsumerReference) string { return v.Name }).(pulumi.StringOutput)
}

// Resource is the type of resource being referenced, for example "pods".
func (o ResourceClaimConsumerReferenceOutput) Resource() pulumi.StringOutput {
	return o.ApplyT(func(v ResourceClaimConsumerReference) string { return v.Resource }).(pulumi.StringOutput)
}

// UID identifies exactly one incarnation of the resource.
func (o ResourceClaimConsumerReferenceOutput) Uid() pulumi.StringOutput {
	return o.ApplyT(func(v ResourceClaimConsumerReference) string { return v.Uid }).(pulumi.StringOutput)
}

type ResourceClaimConsumerReferenceArrayOutput struct{ *pulumi.OutputState }

func (ResourceClaimConsumerReferenceArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimConsumerReference)(nil)).Elem()
}

func (o ResourceClaimConsumerReferenceArrayOutput) ToResourceClaimConsumerReferenceArrayOutput() ResourceClaimConsumerReferenceArrayOutput {
	return o
}

func (o ResourceClaimConsumerReferenceArrayOutput) ToResourceClaimConsumerReferenceArrayOutputWithContext(ctx context.Context) ResourceClaimConsumerReferenceArrayOutput {
	return o
}

func (o ResourceClaimConsumerReferenceArrayOutput) Index(i pulumi.IntInput) ResourceClaimConsumerReferenceOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ResourceClaimConsumerReference {
		return vs[0].([]ResourceClaimConsumerReference)[vs[1].(int)]
	}).(ResourceClaimConsumerReferenceOutput)
}

// ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
type ResourceClaimConsumerReferencePatch struct {
	// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
	ApiGroup *string `pulumi:"apiGroup"`
	// Name is the name of resource being referenced.
	Name *string `pulumi:"name"`
	// Resource is the type of resource being referenced, for example "pods".
	Resource *string `pulumi:"resource"`
	// UID identifies exactly one incarnation of the resource.
	Uid *string `pulumi:"uid"`
}

// ResourceClaimConsumerReferencePatchInput is an input type that accepts ResourceClaimConsumerReferencePatchArgs and ResourceClaimConsumerReferencePatchOutput values.
// You can construct a concrete instance of `ResourceClaimConsumerReferencePatchInput` via:
//
//	ResourceClaimConsumerReferencePatchArgs{...}
type ResourceClaimConsumerReferencePatchInput interface {
	pulumi.Input

	ToResourceClaimConsumerReferencePatchOutput() ResourceClaimConsumerReferencePatchOutput
	ToResourceClaimConsumerReferencePatchOutputWithContext(context.Context) ResourceClaimConsumerReferencePatchOutput
}

// ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
type ResourceClaimConsumerReferencePatchArgs struct {
	// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
	ApiGroup pulumi.StringPtrInput `pulumi:"apiGroup"`
	// Name is the name of resource being referenced.
	Name pulumi.StringPtrInput `pulumi:"name"`
	// Resource is the type of resource being referenced, for example "pods".
	Resource pulumi.StringPtrInput `pulumi:"resource"`
	// UID identifies exactly one incarnation of the resource.
	Uid pulumi.StringPtrInput `pulumi:"uid"`
}

func (ResourceClaimConsumerReferencePatchArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimConsumerReferencePatch)(nil)).Elem()
}

func (i ResourceClaimConsumerReferencePatchArgs) ToResourceClaimConsumerReferencePatchOutput() ResourceClaimConsumerReferencePatchOutput {
	return i.ToResourceClaimConsumerReferencePatchOutputWithContext(context.Background())
}

func (i ResourceClaimConsumerReferencePatchArgs) ToResourceClaimConsumerReferencePatchOutputWithContext(ctx context.Context) ResourceClaimConsumerReferencePatchOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimConsumerReferencePatchOutput)
}

// ResourceClaimConsumerReferencePatchArrayInput is an input type that accepts ResourceClaimConsumerReferencePatchArray and ResourceClaimConsumerReferencePatchArrayOutput values.
// You can construct a concrete instance of `ResourceClaimConsumerReferencePatchArrayInput` via:
//
//	ResourceClaimConsumerReferencePatchArray{ ResourceClaimConsumerReferencePatchArgs{...} }
type ResourceClaimConsumerReferencePatchArrayInput interface {
	pulumi.Input

	ToResourceClaimConsumerReferencePatchArrayOutput() ResourceClaimConsumerReferencePatchArrayOutput
	ToResourceClaimConsumerReferencePatchArrayOutputWithContext(context.Context) ResourceClaimConsumerReferencePatchArrayOutput
}

type ResourceClaimConsumerReferencePatchArray []ResourceClaimConsumerReferencePatchInput

func (ResourceClaimConsumerReferencePatchArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimConsumerReferencePatch)(nil)).Elem()
}

func (i ResourceClaimConsumerReferencePatchArray) ToResourceClaimConsumerReferencePatchArrayOutput() ResourceClaimConsumerReferencePatchArrayOutput {
	return i.ToResourceClaimConsumerReferencePatchArrayOutputWithContext(context.Background())
}

func (i ResourceClaimConsumerReferencePatchArray) ToResourceClaimConsumerReferencePatchArrayOutputWithContext(ctx context.Context) ResourceClaimConsumerReferencePatchArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimConsumerReferencePatchArrayOutput)
}

// ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.
type ResourceClaimConsumerReferencePatchOutput struct{ *pulumi.OutputState }

func (ResourceClaimConsumerReferencePatchOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimConsumerReferencePatch)(nil)).Elem()
}

func (o ResourceClaimConsumerReferencePatchOutput) ToResourceClaimConsumerReferencePatchOutput() ResourceClaimConsumerReferencePatchOutput {
	return o
}

func (o ResourceClaimConsumerReferencePatchOutput) ToResourceClaimConsumerReferencePatchOutputWithContext(ctx context.Context) ResourceClaimConsumerReferencePatchOutput {
	return o
}

// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
func (o ResourceClaimConsumerReferencePatchOutput) ApiGroup() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimConsumerReferencePatch) *string { return v.ApiGroup }).(pulumi.StringPtrOutput)
}

// Name is the name of resource being referenced.
func (o ResourceClaimConsumerReferencePatchOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimConsumerReferencePatch) *string { return v.Name }).(pulumi.StringPtrOutput)
}

// Resource is the type of resource being referenced, for example "pods".
func (o ResourceClaimConsumerReferencePatchOutput) Resource() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimConsumerReferencePatch) *string { return v.Resource }).(pulumi.StringPtrOutput)
}

// UID identifies exactly one incarnation of the resource.
func (o ResourceClaimConsumerReferencePatchOutput) Uid() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimConsumerReferencePatch) *string { return v.Uid }).(pulumi.StringPtrOutput)
}

type ResourceClaimConsumerReferencePatchArrayOutput struct{ *pulumi.OutputState }

func (ResourceClaimConsumerReferencePatchArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimConsumerReferencePatch)(nil)).Elem()
}

func (o ResourceClaimConsumerReferencePatchArrayOutput) ToResourceClaimConsumerReferencePatchArrayOutput() ResourceClaimConsumerReferencePatchArrayOutput {
	return o
}

func (o ResourceClaimConsumerReferencePatchArrayOutput) ToResourceClaimConsumerReferencePatchArrayOutputWithContext(ctx context.Context) ResourceClaimConsumerReferencePatchArrayOutput {
	return o
}

func (o ResourceClaimConsumerReferencePatchArrayOutput) Index(i pulumi.IntInput) ResourceClaimConsumerReferencePatchOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ResourceClaimConsumerReferencePatch {
		return vs[0].([]ResourceClaimConsumerReferencePatch)[vs[1].(int)]
	}).(ResourceClaimConsumerReferencePatchOutput)
}

// ResourceClaimList is a collection of claims.
type ResourceClaimListType struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion *string `pulumi:"apiVersion"`
	// Items is the list of resource claims.
	Items []ResourceClaimType `pulumi:"items"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind *string `pulumi:"kind"`
	// Standard list metadata
	Metadata *metav1.ListMeta `pulumi:"metadata"`
}

// ResourceClaimListTypeInput is an input type that accepts ResourceClaimListTypeArgs and ResourceClaimListTypeOutput values.
// You can construct a concrete instance of `ResourceClaimListTypeInput` via:
//
//	ResourceClaimListTypeArgs{...}
type ResourceClaimListTypeInput interface {
	pulumi.Input

	ToResourceClaimListTypeOutput() ResourceClaimListTypeOutput
	ToResourceClaimListTypeOutputWithContext(context.Context) ResourceClaimListTypeOutput
}

// ResourceClaimList is a collection of claims.
type ResourceClaimListTypeArgs struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion pulumi.StringPtrInput `pulumi:"apiVersion"`
	// Items is the list of resource claims.
	Items ResourceClaimTypeArrayInput `pulumi:"items"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind pulumi.StringPtrInput `pulumi:"kind"`
	// Standard list metadata
	Metadata metav1.ListMetaPtrInput `pulumi:"metadata"`
}

func (ResourceClaimListTypeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimListType)(nil)).Elem()
}

func (i ResourceClaimListTypeArgs) ToResourceClaimListTypeOutput() ResourceClaimListTypeOutput {
	return i.ToResourceClaimListTypeOutputWithContext(context.Background())
}

func (i ResourceClaimListTypeArgs) ToResourceClaimListTypeOutputWithContext(ctx context.Context) ResourceClaimListTypeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimListTypeOutput)
}

// ResourceClaimList is a collection of claims.
type ResourceClaimListTypeOutput struct{ *pulumi.OutputState }

func (ResourceClaimListTypeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimListType)(nil)).Elem()
}

func (o ResourceClaimListTypeOutput) ToResourceClaimListTypeOutput() ResourceClaimListTypeOutput {
	return o
}

func (o ResourceClaimListTypeOutput) ToResourceClaimListTypeOutputWithContext(ctx context.Context) ResourceClaimListTypeOutput {
	return o
}

// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
func (o ResourceClaimListTypeOutput) ApiVersion() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimListType) *string { return v.ApiVersion }).(pulumi.StringPtrOutput)
}

// Items is the list of resource claims.
func (o ResourceClaimListTypeOutput) Items() ResourceClaimTypeArrayOutput {
	return o.ApplyT(func(v ResourceClaimListType) []ResourceClaimType { return v.Items }).(ResourceClaimTypeArrayOutput)
}

// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
func (o ResourceClaimListTypeOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimListType) *string { return v.Kind }).(pulumi.StringPtrOutput)
}

// Standard list metadata
func (o ResourceClaimListTypeOutput) Metadata() metav1.ListMetaPtrOutput {
	return o.ApplyT(func(v ResourceClaimListType) *metav1.ListMeta { return v.Metadata }).(metav1.ListMetaPtrOutput)
}

// ResourceClaimParametersReference contains enough information to let you locate the parameters for a ResourceClaim. The object must be in the same namespace as the ResourceClaim.
type ResourceClaimParametersReference struct {
	// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
	ApiGroup *string `pulumi:"apiGroup"`
	// Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example "ConfigMap".
	Kind string `pulumi:"kind"`
	// Name is the name of resource being referenced.
	Name string `pulumi:"name"`
}

// ResourceClaimParametersReferenceInput is an input type that accepts ResourceClaimParametersReferenceArgs and ResourceClaimParametersReferenceOutput values.
// You can construct a concrete instance of `ResourceClaimParametersReferenceInput` via:
//
//	ResourceClaimParametersReferenceArgs{...}
type ResourceClaimParametersReferenceInput interface {
	pulumi.Input

	ToResourceClaimParametersReferenceOutput() ResourceClaimParametersReferenceOutput
	ToResourceClaimParametersReferenceOutputWithContext(context.Context) ResourceClaimParametersReferenceOutput
}

// ResourceClaimParametersReference contains enough information to let you locate the parameters for a ResourceClaim. The object must be in the same namespace as the ResourceClaim.
type ResourceClaimParametersReferenceArgs struct {
	// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
	ApiGroup pulumi.StringPtrInput `pulumi:"apiGroup"`
	// Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example "ConfigMap".
	Kind pulumi.StringInput `pulumi:"kind"`
	// Name is the name of resource being referenced.
	Name pulumi.StringInput `pulumi:"name"`
}

func (ResourceClaimParametersReferenceArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimParametersReference)(nil)).Elem()
}

func (i ResourceClaimParametersReferenceArgs) ToResourceClaimParametersReferenceOutput() ResourceClaimParametersReferenceOutput {
	return i.ToResourceClaimParametersReferenceOutputWithContext(context.Background())
}

func (i ResourceClaimParametersReferenceArgs) ToResourceClaimParametersReferenceOutputWithContext(ctx context.Context) ResourceClaimParametersReferenceOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimParametersReferenceOutput)
}

func (i ResourceClaimParametersReferenceArgs) ToResourceClaimParametersReferencePtrOutput() ResourceClaimParametersReferencePtrOutput {
	return i.ToResourceClaimParametersReferencePtrOutputWithContext(context.Background())
}

func (i ResourceClaimParametersReferenceArgs) ToResourceClaimParametersReferencePtrOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimParametersReferenceOutput).ToResourceClaimParametersReferencePtrOutputWithContext(ctx)
}

// ResourceClaimParametersReferencePtrInput is an input type that accepts ResourceClaimParametersReferenceArgs, ResourceClaimParametersReferencePtr and ResourceClaimParametersReferencePtrOutput values.
// You can construct a concrete instance of `ResourceClaimParametersReferencePtrInput` via:
//
//	        ResourceClaimParametersReferenceArgs{...}
//
//	or:
//
//	        nil
type ResourceClaimParametersReferencePtrInput interface {
	pulumi.Input

	ToResourceClaimParametersReferencePtrOutput() ResourceClaimParametersReferencePtrOutput
	ToResourceClaimParametersReferencePtrOutputWithContext(context.Context) ResourceClaimParametersReferencePtrOutput
}

type resourceClaimParametersReferencePtrType ResourceClaimParametersReferenceArgs

func ResourceClaimParametersReferencePtr(v *ResourceClaimParametersReferenceArgs) ResourceClaimParametersReferencePtrInput {
	return (*resourceClaimParametersReferencePtrType)(v)
}

func (*resourceClaimParametersReferencePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ResourceClaimParametersReference)(nil)).Elem()
}

func (i *resourceClaimParametersReferencePtrType) ToResourceClaimParametersReferencePtrOutput() ResourceClaimParametersReferencePtrOutput {
	return i.ToResourceClaimParametersReferencePtrOutputWithContext(context.Background())
}

func (i *resourceClaimParametersReferencePtrType) ToResourceClaimParametersReferencePtrOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimParametersReferencePtrOutput)
}

// ResourceClaimParametersReference contains enough information to let you locate the parameters for a ResourceClaim. The object must be in the same namespace as the ResourceClaim.
type ResourceClaimParametersReferenceOutput struct{ *pulumi.OutputState }

func (ResourceClaimParametersReferenceOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimParametersReference)(nil)).Elem()
}

func (o ResourceClaimParametersReferenceOutput) ToResourceClaimParametersReferenceOutput() ResourceClaimParametersReferenceOutput {
	return o
}

func (o ResourceClaimParametersReferenceOutput) ToResourceClaimParametersReferenceOutputWithContext(ctx context.Context) ResourceClaimParametersReferenceOutput {
	return o
}

func (o ResourceClaimParametersReferenceOutput) ToResourceClaimParametersReferencePtrOutput() ResourceClaimParametersReferencePtrOutput {
	return o.ToResourceClaimParametersReferencePtrOutputWithContext(context.Background())
}

func (o ResourceClaimParametersReferenceOutput) ToResourceClaimParametersReferencePtrOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ResourceClaimParametersReference) *ResourceClaimParametersReference {
		return &v
	}).(ResourceClaimParametersReferencePtrOutput)
}

// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
func (o ResourceClaimParametersReferenceOutput) ApiGroup() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimParametersReference) *string { return v.ApiGroup }).(pulumi.StringPtrOutput)
}

// Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example "ConfigMap".
func (o ResourceClaimParametersReferenceOutput) Kind() pulumi.StringOutput {
	return o.ApplyT(func(v ResourceClaimParametersReference) string { return v.Kind }).(pulumi.StringOutput)
}

// Name is the name of resource being referenced.
func (o ResourceClaimParametersReferenceOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ResourceClaimParametersReference) string { return v.Name }).(pulumi.StringOutput)
}

type ResourceClaimParametersReferencePtrOutput struct{ *pulumi.OutputState }

func (ResourceClaimParametersReferencePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ResourceClaimParametersReference)(nil)).Elem()
}

func (o ResourceClaimParametersReferencePtrOutput) ToResourceClaimParametersReferencePtrOutput() ResourceClaimParametersReferencePtrOutput {
	return o
}

func (o ResourceClaimParametersReferencePtrOutput) ToResourceClaimParametersReferencePtrOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePtrOutput {
	return o
}

func (o ResourceClaimParametersReferencePtrOutput) Elem() ResourceClaimParametersReferenceOutput {
	return o.ApplyT(func(v *ResourceClaimParametersReference) ResourceClaimParametersReference {
		if v != nil {
			return *v
		}
		var ret ResourceClaimParametersReference
		return ret
	}).(ResourceClaimParametersReferenceOutput)
}

// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
func (o ResourceClaimParametersReferencePtrOutput) ApiGroup() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ResourceClaimParametersReference) *string {
		if v == nil {
			return nil
		}
		return v.ApiGroup
	}).(pulumi.StringPtrOutput)
}

// Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example "ConfigMap".
func (o ResourceClaimParametersReferencePtrOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ResourceClaimParametersReference) *string {
		if v == nil {
			return nil
		}
		return &v.Kind
	}).(pulumi.StringPtrOutput)
}

// Name is the name of resource being referenced.
func (o ResourceClaimParametersReferencePtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ResourceClaimParametersReference) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// ResourceClaimParametersReference contains enough information to let you locate the parameters for a ResourceClaim. The object must be in the same namespace as the ResourceClaim.
type ResourceClaimParametersReferencePatch struct {
	// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
	ApiGroup *string `pulumi:"apiGroup"`
	// Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example "ConfigMap".
	Kind *string `pulumi:"kind"`
	// Name is the name of resource being referenced.
	Name *string `pulumi:"name"`
}

// ResourceClaimParametersReferencePatchInput is an input type that accepts ResourceClaimParametersReferencePatchArgs and ResourceClaimParametersReferencePatchOutput values.
// You can construct a concrete instance of `ResourceClaimParametersReferencePatchInput` via:
//
//	ResourceClaimParametersReferencePatchArgs{...}
type ResourceClaimParametersReferencePatchInput interface {
	pulumi.Input

	ToResourceClaimParametersReferencePatchOutput() ResourceClaimParametersReferencePatchOutput
	ToResourceClaimParametersReferencePatchOutputWithContext(context.Context) ResourceClaimParametersReferencePatchOutput
}

// ResourceClaimParametersReference contains enough information to let you locate the parameters for a ResourceClaim. The object must be in the same namespace as the ResourceClaim.
type ResourceClaimParametersReferencePatchArgs struct {
	// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
	ApiGroup pulumi.StringPtrInput `pulumi:"apiGroup"`
	// Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example "ConfigMap".
	Kind pulumi.StringPtrInput `pulumi:"kind"`
	// Name is the name of resource being referenced.
	Name pulumi.StringPtrInput `pulumi:"name"`
}

func (ResourceClaimParametersReferencePatchArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimParametersReferencePatch)(nil)).Elem()
}

func (i ResourceClaimParametersReferencePatchArgs) ToResourceClaimParametersReferencePatchOutput() ResourceClaimParametersReferencePatchOutput {
	return i.ToResourceClaimParametersReferencePatchOutputWithContext(context.Background())
}

func (i ResourceClaimParametersReferencePatchArgs) ToResourceClaimParametersReferencePatchOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePatchOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimParametersReferencePatchOutput)
}

func (i ResourceClaimParametersReferencePatchArgs) ToResourceClaimParametersReferencePatchPtrOutput() ResourceClaimParametersReferencePatchPtrOutput {
	return i.ToResourceClaimParametersReferencePatchPtrOutputWithContext(context.Background())
}

func (i ResourceClaimParametersReferencePatchArgs) ToResourceClaimParametersReferencePatchPtrOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimParametersReferencePatchOutput).ToResourceClaimParametersReferencePatchPtrOutputWithContext(ctx)
}

// ResourceClaimParametersReferencePatchPtrInput is an input type that accepts ResourceClaimParametersReferencePatchArgs, ResourceClaimParametersReferencePatchPtr and ResourceClaimParametersReferencePatchPtrOutput values.
// You can construct a concrete instance of `ResourceClaimParametersReferencePatchPtrInput` via:
//
//	        ResourceClaimParametersReferencePatchArgs{...}
//
//	or:
//
//	        nil
type ResourceClaimParametersReferencePatchPtrInput interface {
	pulumi.Input

	ToResourceClaimParametersReferencePatchPtrOutput() ResourceClaimParametersReferencePatchPtrOutput
	ToResourceClaimParametersReferencePatchPtrOutputWithContext(context.Context) ResourceClaimParametersReferencePatchPtrOutput
}

type resourceClaimParametersReferencePatchPtrType ResourceClaimParametersReferencePatchArgs

func ResourceClaimParametersReferencePatchPtr(v *ResourceClaimParametersReferencePatchArgs) ResourceClaimParametersReferencePatchPtrInput {
	return (*resourceClaimParametersReferencePatchPtrType)(v)
}

func (*resourceClaimParametersReferencePatchPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ResourceClaimParametersReferencePatch)(nil)).Elem()
}

func (i *resourceClaimParametersReferencePatchPtrType) ToResourceClaimParametersReferencePatchPtrOutput() ResourceClaimParametersReferencePatchPtrOutput {
	return i.ToResourceClaimParametersReferencePatchPtrOutputWithContext(context.Background())
}

func (i *resourceClaimParametersReferencePatchPtrType) ToResourceClaimParametersReferencePatchPtrOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimParametersReferencePatchPtrOutput)
}

// ResourceClaimParametersReference contains enough information to let you locate the parameters for a ResourceClaim. The object must be in the same namespace as the ResourceClaim.
type ResourceClaimParametersReferencePatchOutput struct{ *pulumi.OutputState }

func (ResourceClaimParametersReferencePatchOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimParametersReferencePatch)(nil)).Elem()
}

func (o ResourceClaimParametersReferencePatchOutput) ToResourceClaimParametersReferencePatchOutput() ResourceClaimParametersReferencePatchOutput {
	return o
}

func (o ResourceClaimParametersReferencePatchOutput) ToResourceClaimParametersReferencePatchOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePatchOutput {
	return o
}

func (o ResourceClaimParametersReferencePatchOutput) ToResourceClaimParametersReferencePatchPtrOutput() ResourceClaimParametersReferencePatchPtrOutput {
	return o.ToResourceClaimParametersReferencePatchPtrOutputWithContext(context.Background())
}

func (o ResourceClaimParametersReferencePatchOutput) ToResourceClaimParametersReferencePatchPtrOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePatchPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ResourceClaimParametersReferencePatch) *ResourceClaimParametersReferencePatch {
		return &v
	}).(ResourceClaimParametersReferencePatchPtrOutput)
}

// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
func (o ResourceClaimParametersReferencePatchOutput) ApiGroup() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimParametersReferencePatch) *string { return v.ApiGroup }).(pulumi.StringPtrOutput)
}

// Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example "ConfigMap".
func (o ResourceClaimParametersReferencePatchOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimParametersReferencePatch) *string { return v.Kind }).(pulumi.StringPtrOutput)
}

// Name is the name of resource being referenced.
func (o ResourceClaimParametersReferencePatchOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimParametersReferencePatch) *string { return v.Name }).(pulumi.StringPtrOutput)
}

type ResourceClaimParametersReferencePatchPtrOutput struct{ *pulumi.OutputState }

func (ResourceClaimParametersReferencePatchPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ResourceClaimParametersReferencePatch)(nil)).Elem()
}

func (o ResourceClaimParametersReferencePatchPtrOutput) ToResourceClaimParametersReferencePatchPtrOutput() ResourceClaimParametersReferencePatchPtrOutput {
	return o
}

func (o ResourceClaimParametersReferencePatchPtrOutput) ToResourceClaimParametersReferencePatchPtrOutputWithContext(ctx context.Context) ResourceClaimParametersReferencePatchPtrOutput {
	return o
}

func (o ResourceClaimParametersReferencePatchPtrOutput) Elem() ResourceClaimParametersReferencePatchOutput {
	return o.ApplyT(func(v *ResourceClaimParametersReferencePatch) ResourceClaimParametersReferencePatch {
		if v != nil {
			return *v
		}
		var ret ResourceClaimParametersReferencePatch
		return ret
	}).(ResourceClaimParametersReferencePatchOutput)
}

// APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.
func (o ResourceClaimParametersReferencePatchPtrOutput) ApiGroup() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ResourceClaimParametersReferencePatch) *string {
		if v == nil {
			return nil
		}
		return v.ApiGroup
	}).(pulumi.StringPtrOutput)
}

// Kind is the type of resource being referenced. This is the same value as in the parameter object's metadata, for example "ConfigMap".
func (o ResourceClaimParametersReferencePatchPtrOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ResourceClaimParametersReferencePatch) *string {
		if v == nil {
			return nil
		}
		return v.Kind
	}).(pulumi.StringPtrOutput)
}

// Name is the name of resource being referenced.
func (o ResourceClaimParametersReferencePatchPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ResourceClaimParametersReferencePatch) *string {
		if v == nil {
			return nil
		}
		return v.Name
	}).(pulumi.StringPtrOutput)
}

// ResourceClaim describes which resources are needed by a resource consumer. Its status tracks whether the resource has been allocated and what the resulting attributes are.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type ResourceClaimPatchType struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion *string `pulumi:"apiVersion"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind *string `pulumi:"kind"`
	// Standard object metadata
	Metadata *metav1.ObjectMetaPatch `pulumi:"metadata"`
	// Spec describes the desired attributes of a resource that then needs to be allocated. It can only be set once when creating the ResourceClaim.
	Spec *ResourceClaimSpecPatch `pulumi:"spec"`
	// Status describes whether the resource is available and with which attributes.
	Status *ResourceClaimStatusPatch `pulumi:"status"`
}

// ResourceClaimPatchTypeInput is an input type that accepts ResourceClaimPatchTypeArgs and ResourceClaimPatchTypeOutput values.
// You can construct a concrete instance of `ResourceClaimPatchTypeInput` via:
//
//	ResourceClaimPatchTypeArgs{...}
type ResourceClaimPatchTypeInput interface {
	pulumi.Input

	ToResourceClaimPatchTypeOutput() ResourceClaimPatchTypeOutput
	ToResourceClaimPatchTypeOutputWithContext(context.Context) ResourceClaimPatchTypeOutput
}

// ResourceClaim describes which resources are needed by a resource consumer. Its status tracks whether the resource has been allocated and what the resulting attributes are.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type ResourceClaimPatchTypeArgs struct {
	// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
	ApiVersion pulumi.StringPtrInput `pulumi:"apiVersion"`
	// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
	Kind pulumi.StringPtrInput `pulumi:"kind"`
	// Standard object metadata
	Metadata metav1.ObjectMetaPatchPtrInput `pulumi:"metadata"`
	// Spec describes the desired attributes of a resource that then needs to be allocated. It can only be set once when creating the ResourceClaim.
	Spec ResourceClaimSpecPatchPtrInput `pulumi:"spec"`
	// Status describes whether the resource is available and with which attributes.
	Status ResourceClaimStatusPatchPtrInput `pulumi:"status"`
}

func (ResourceClaimPatchTypeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimPatchType)(nil)).Elem()
}

func (i ResourceClaimPatchTypeArgs) ToResourceClaimPatchTypeOutput() ResourceClaimPatchTypeOutput {
	return i.ToResourceClaimPatchTypeOutputWithContext(context.Background())
}

func (i ResourceClaimPatchTypeArgs) ToResourceClaimPatchTypeOutputWithContext(ctx context.Context) ResourceClaimPatchTypeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimPatchTypeOutput)
}

// ResourceClaim describes which resources are needed by a resource consumer. Its status tracks whether the resource has been allocated and what the resulting attributes are.
//
// This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.
type ResourceClaimPatchTypeOutput struct{ *pulumi.OutputState }

func (ResourceClaimPatchTypeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimPatchType)(nil)).Elem()
}

func (o ResourceClaimPatchTypeOutput) ToResourceClaimPatchTypeOutput() ResourceClaimPatchTypeOutput {
	return o
}

func (o ResourceClaimPatchTypeOutput) ToResourceClaimPatchTypeOutputWithContext(ctx context.Context) ResourceClaimPatchTypeOutput {
	return o
}

// APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
func (o ResourceClaimPatchTypeOutput) ApiVersion() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimPatchType) *string { return v.ApiVersion }).(pulumi.StringPtrOutput)
}

// Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
func (o ResourceClaimPatchTypeOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimPatchType) *string { return v.Kind }).(pulumi.StringPtrOutput)
}

// Standard object metadata
func (o ResourceClaimPatchTypeOutput) Metadata() metav1.ObjectMetaPatchPtrOutput {
	return o.ApplyT(func(v ResourceClaimPatchType) *metav1.ObjectMetaPatch { return v.Metadata }).(metav1.ObjectMetaPatchPtrOutput)
}

// Spec describes the desired attributes of a resource that then needs to be allocated. It can only be set once when creating the ResourceClaim.
func (o ResourceClaimPatchTypeOutput) Spec() ResourceClaimSpecPatchPtrOutput {
	return o.ApplyT(func(v ResourceClaimPatchType) *ResourceClaimSpecPatch { return v.Spec }).(ResourceClaimSpecPatchPtrOutput)
}

// Status describes whether the resource is available and with which attributes.
func (o ResourceClaimPatchTypeOutput) Status() ResourceClaimStatusPatchPtrOutput {
	return o.ApplyT(func(v ResourceClaimPatchType) *ResourceClaimStatusPatch { return v.Status }).(ResourceClaimStatusPatchPtrOutput)
}

// ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
type ResourceClaimSchedulingStatus struct {
	// Name matches the pod.spec.resourceClaims[*].Name field.
	Name *string `pulumi:"name"`
	// UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
	//
	// The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
	UnsuitableNodes []string `pulumi:"unsuitableNodes"`
}

// ResourceClaimSchedulingStatusInput is an input type that accepts ResourceClaimSchedulingStatusArgs and ResourceClaimSchedulingStatusOutput values.
// You can construct a concrete instance of `ResourceClaimSchedulingStatusInput` via:
//
//	ResourceClaimSchedulingStatusArgs{...}
type ResourceClaimSchedulingStatusInput interface {
	pulumi.Input

	ToResourceClaimSchedulingStatusOutput() ResourceClaimSchedulingStatusOutput
	ToResourceClaimSchedulingStatusOutputWithContext(context.Context) ResourceClaimSchedulingStatusOutput
}

// ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
type ResourceClaimSchedulingStatusArgs struct {
	// Name matches the pod.spec.resourceClaims[*].Name field.
	Name pulumi.StringPtrInput `pulumi:"name"`
	// UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
	//
	// The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
	UnsuitableNodes pulumi.StringArrayInput `pulumi:"unsuitableNodes"`
}

func (ResourceClaimSchedulingStatusArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimSchedulingStatus)(nil)).Elem()
}

func (i ResourceClaimSchedulingStatusArgs) ToResourceClaimSchedulingStatusOutput() ResourceClaimSchedulingStatusOutput {
	return i.ToResourceClaimSchedulingStatusOutputWithContext(context.Background())
}

func (i ResourceClaimSchedulingStatusArgs) ToResourceClaimSchedulingStatusOutputWithContext(ctx context.Context) ResourceClaimSchedulingStatusOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimSchedulingStatusOutput)
}

// ResourceClaimSchedulingStatusArrayInput is an input type that accepts ResourceClaimSchedulingStatusArray and ResourceClaimSchedulingStatusArrayOutput values.
// You can construct a concrete instance of `ResourceClaimSchedulingStatusArrayInput` via:
//
//	ResourceClaimSchedulingStatusArray{ ResourceClaimSchedulingStatusArgs{...} }
type ResourceClaimSchedulingStatusArrayInput interface {
	pulumi.Input

	ToResourceClaimSchedulingStatusArrayOutput() ResourceClaimSchedulingStatusArrayOutput
	ToResourceClaimSchedulingStatusArrayOutputWithContext(context.Context) ResourceClaimSchedulingStatusArrayOutput
}

type ResourceClaimSchedulingStatusArray []ResourceClaimSchedulingStatusInput

func (ResourceClaimSchedulingStatusArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimSchedulingStatus)(nil)).Elem()
}

func (i ResourceClaimSchedulingStatusArray) ToResourceClaimSchedulingStatusArrayOutput() ResourceClaimSchedulingStatusArrayOutput {
	return i.ToResourceClaimSchedulingStatusArrayOutputWithContext(context.Background())
}

func (i ResourceClaimSchedulingStatusArray) ToResourceClaimSchedulingStatusArrayOutputWithContext(ctx context.Context) ResourceClaimSchedulingStatusArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimSchedulingStatusArrayOutput)
}

// ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
type ResourceClaimSchedulingStatusOutput struct{ *pulumi.OutputState }

func (ResourceClaimSchedulingStatusOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimSchedulingStatus)(nil)).Elem()
}

func (o ResourceClaimSchedulingStatusOutput) ToResourceClaimSchedulingStatusOutput() ResourceClaimSchedulingStatusOutput {
	return o
}

func (o ResourceClaimSchedulingStatusOutput) ToResourceClaimSchedulingStatusOutputWithContext(ctx context.Context) ResourceClaimSchedulingStatusOutput {
	return o
}

// Name matches the pod.spec.resourceClaims[*].Name field.
func (o ResourceClaimSchedulingStatusOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimSchedulingStatus) *string { return v.Name }).(pulumi.StringPtrOutput)
}

// UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
//
// The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
func (o ResourceClaimSchedulingStatusOutput) UnsuitableNodes() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ResourceClaimSchedulingStatus) []string { return v.UnsuitableNodes }).(pulumi.StringArrayOutput)
}

type ResourceClaimSchedulingStatusArrayOutput struct{ *pulumi.OutputState }

func (ResourceClaimSchedulingStatusArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimSchedulingStatus)(nil)).Elem()
}

func (o ResourceClaimSchedulingStatusArrayOutput) ToResourceClaimSchedulingStatusArrayOutput() ResourceClaimSchedulingStatusArrayOutput {
	return o
}

func (o ResourceClaimSchedulingStatusArrayOutput) ToResourceClaimSchedulingStatusArrayOutputWithContext(ctx context.Context) ResourceClaimSchedulingStatusArrayOutput {
	return o
}

func (o ResourceClaimSchedulingStatusArrayOutput) Index(i pulumi.IntInput) ResourceClaimSchedulingStatusOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ResourceClaimSchedulingStatus {
		return vs[0].([]ResourceClaimSchedulingStatus)[vs[1].(int)]
	}).(ResourceClaimSchedulingStatusOutput)
}

// ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
type ResourceClaimSchedulingStatusPatch struct {
	// Name matches the pod.spec.resourceClaims[*].Name field.
	Name *string `pulumi:"name"`
	// UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
	//
	// The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
	UnsuitableNodes []string `pulumi:"unsuitableNodes"`
}

// ResourceClaimSchedulingStatusPatchInput is an input type that accepts ResourceClaimSchedulingStatusPatchArgs and ResourceClaimSchedulingStatusPatchOutput values.
// You can construct a concrete instance of `ResourceClaimSchedulingStatusPatchInput` via:
//
//	ResourceClaimSchedulingStatusPatchArgs{...}
type ResourceClaimSchedulingStatusPatchInput interface {
	pulumi.Input

	ToResourceClaimSchedulingStatusPatchOutput() ResourceClaimSchedulingStatusPatchOutput
	ToResourceClaimSchedulingStatusPatchOutputWithContext(context.Context) ResourceClaimSchedulingStatusPatchOutput
}

// ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
type ResourceClaimSchedulingStatusPatchArgs struct {
	// Name matches the pod.spec.resourceClaims[*].Name field.
	Name pulumi.StringPtrInput `pulumi:"name"`
	// UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
	//
	// The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
	UnsuitableNodes pulumi.StringArrayInput `pulumi:"unsuitableNodes"`
}

func (ResourceClaimSchedulingStatusPatchArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimSchedulingStatusPatch)(nil)).Elem()
}

func (i ResourceClaimSchedulingStatusPatchArgs) ToResourceClaimSchedulingStatusPatchOutput() ResourceClaimSchedulingStatusPatchOutput {
	return i.ToResourceClaimSchedulingStatusPatchOutputWithContext(context.Background())
}

func (i ResourceClaimSchedulingStatusPatchArgs) ToResourceClaimSchedulingStatusPatchOutputWithContext(ctx context.Context) ResourceClaimSchedulingStatusPatchOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimSchedulingStatusPatchOutput)
}

// ResourceClaimSchedulingStatusPatchArrayInput is an input type that accepts ResourceClaimSchedulingStatusPatchArray and ResourceClaimSchedulingStatusPatchArrayOutput values.
// You can construct a concrete instance of `ResourceClaimSchedulingStatusPatchArrayInput` via:
//
//	ResourceClaimSchedulingStatusPatchArray{ ResourceClaimSchedulingStatusPatchArgs{...} }
type ResourceClaimSchedulingStatusPatchArrayInput interface {
	pulumi.Input

	ToResourceClaimSchedulingStatusPatchArrayOutput() ResourceClaimSchedulingStatusPatchArrayOutput
	ToResourceClaimSchedulingStatusPatchArrayOutputWithContext(context.Context) ResourceClaimSchedulingStatusPatchArrayOutput
}

type ResourceClaimSchedulingStatusPatchArray []ResourceClaimSchedulingStatusPatchInput

func (ResourceClaimSchedulingStatusPatchArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimSchedulingStatusPatch)(nil)).Elem()
}

func (i ResourceClaimSchedulingStatusPatchArray) ToResourceClaimSchedulingStatusPatchArrayOutput() ResourceClaimSchedulingStatusPatchArrayOutput {
	return i.ToResourceClaimSchedulingStatusPatchArrayOutputWithContext(context.Background())
}

func (i ResourceClaimSchedulingStatusPatchArray) ToResourceClaimSchedulingStatusPatchArrayOutputWithContext(ctx context.Context) ResourceClaimSchedulingStatusPatchArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimSchedulingStatusPatchArrayOutput)
}

// ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with "WaitForFirstConsumer" allocation mode.
type ResourceClaimSchedulingStatusPatchOutput struct{ *pulumi.OutputState }

func (ResourceClaimSchedulingStatusPatchOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimSchedulingStatusPatch)(nil)).Elem()
}

func (o ResourceClaimSchedulingStatusPatchOutput) ToResourceClaimSchedulingStatusPatchOutput() ResourceClaimSchedulingStatusPatchOutput {
	return o
}

func (o ResourceClaimSchedulingStatusPatchOutput) ToResourceClaimSchedulingStatusPatchOutputWithContext(ctx context.Context) ResourceClaimSchedulingStatusPatchOutput {
	return o
}

// Name matches the pod.spec.resourceClaims[*].Name field.
func (o ResourceClaimSchedulingStatusPatchOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimSchedulingStatusPatch) *string { return v.Name }).(pulumi.StringPtrOutput)
}

// UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.
//
// The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.
func (o ResourceClaimSchedulingStatusPatchOutput) UnsuitableNodes() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ResourceClaimSchedulingStatusPatch) []string { return v.UnsuitableNodes }).(pulumi.StringArrayOutput)
}

type ResourceClaimSchedulingStatusPatchArrayOutput struct{ *pulumi.OutputState }

func (ResourceClaimSchedulingStatusPatchArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ResourceClaimSchedulingStatusPatch)(nil)).Elem()
}

func (o ResourceClaimSchedulingStatusPatchArrayOutput) ToResourceClaimSchedulingStatusPatchArrayOutput() ResourceClaimSchedulingStatusPatchArrayOutput {
	return o
}

func (o ResourceClaimSchedulingStatusPatchArrayOutput) ToResourceClaimSchedulingStatusPatchArrayOutputWithContext(ctx context.Context) ResourceClaimSchedulingStatusPatchArrayOutput {
	return o
}

func (o ResourceClaimSchedulingStatusPatchArrayOutput) Index(i pulumi.IntInput) ResourceClaimSchedulingStatusPatchOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ResourceClaimSchedulingStatusPatch {
		return vs[0].([]ResourceClaimSchedulingStatusPatch)[vs[1].(int)]
	}).(ResourceClaimSchedulingStatusPatchOutput)
}

// ResourceClaimSpec defines how a resource is to be allocated.
type ResourceClaimSpec struct {
	// Allocation can start immediately or when a Pod wants to use the resource. "WaitForFirstConsumer" is the default.
	AllocationMode *string `pulumi:"allocationMode"`
	// ParametersRef references a separate object with arbitrary parameters that will be used by the driver when allocating a resource for the claim.
	//
	// The object must be in the same namespace as the ResourceClaim.
	ParametersRef *ResourceClaimParametersReference `pulumi:"parametersRef"`
	// ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment.
	ResourceClassName string `pulumi:"resourceClassName"`
}

// ResourceClaimSpecInput is an input type that accepts ResourceClaimSpecArgs and ResourceClaimSpecOutput values.
// You can construct a concrete instance of `ResourceClaimSpecInput` via:
//
//	ResourceClaimSpecArgs{...}
type ResourceClaimSpecInput interface {
	pulumi.Input

	ToResourceClaimSpecOutput() ResourceClaimSpecOutput
	ToResourceClaimSpecOutputWithContext(context.Context) ResourceClaimSpecOutput
}

// ResourceClaimSpec defines how a resource is to be allocated.
type ResourceClaimSpecArgs struct {
	// Allocation can start immediately or when a Pod wants to use the resource. "WaitForFirstConsumer" is the default.
	AllocationMode pulumi.StringPtrInput `pulumi:"allocationMode"`
	// ParametersRef references a separate object with arbitrary parameters that will be used by the driver when allocating a resource for the claim.
	//
	// The object must be in the same namespace as the ResourceClaim.
	ParametersRef ResourceClaimParametersReferencePtrInput `pulumi:"parametersRef"`
	// ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment.
	ResourceClassName pulumi.StringInput `pulumi:"resourceClassName"`
}

func (ResourceClaimSpecArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimSpec)(nil)).Elem()
}

func (i ResourceClaimSpecArgs) ToResourceClaimSpecOutput() ResourceClaimSpecOutput {
	return i.ToResourceClaimSpecOutputWithContext(context.Background())
}

func (i ResourceClaimSpecArgs) ToResourceClaimSpecOutputWithContext(ctx context.Context) ResourceClaimSpecOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimSpecOutput)
}

// ResourceClaimSpec defines how a resource is to be allocated.
type ResourceClaimSpecOutput struct{ *pulumi.OutputState }

func (ResourceClaimSpecOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimSpec)(nil)).Elem()
}

func (o ResourceClaimSpecOutput) ToResourceClaimSpecOutput() ResourceClaimSpecOutput {
	return o
}

func (o ResourceClaimSpecOutput) ToResourceClaimSpecOutputWithContext(ctx context.Context) ResourceClaimSpecOutput {
	return o
}

// Allocation can start immediately or when a Pod wants to use the resource. "WaitForFirstConsumer" is the default.
func (o ResourceClaimSpecOutput) AllocationMode() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimSpec) *string { return v.AllocationMode }).(pulumi.StringPtrOutput)
}

// ParametersRef references a separate object with arbitrary parameters that will be used by the driver when allocating a resource for the claim.
//
// The object must be in the same namespace as the ResourceClaim.
func (o ResourceClaimSpecOutput) ParametersRef() ResourceClaimParametersReferencePtrOutput {
	return o.ApplyT(func(v ResourceClaimSpec) *ResourceClaimParametersReference { return v.ParametersRef }).(ResourceClaimParametersReferencePtrOutput)
}

// ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment.
func (o ResourceClaimSpecOutput) ResourceClassName() pulumi.StringOutput {
	return o.ApplyT(func(v ResourceClaimSpec) string { return v.ResourceClassName }).(pulumi.StringOutput)
}

// ResourceClaimSpec defines how a resource is to be allocated.
type ResourceClaimSpecPatch struct {
	// Allocation can start immediately or when a Pod wants to use the resource. "WaitForFirstConsumer" is the default.
	AllocationMode *string `pulumi:"allocationMode"`
	// ParametersRef references a separate object with arbitrary parameters that will be used by the driver when allocating a resource for the claim.
	//
	// The object must be in the same namespace as the ResourceClaim.
	ParametersRef *ResourceClaimParametersReferencePatch `pulumi:"parametersRef"`
	// ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment.
	ResourceClassName *string `pulumi:"resourceClassName"`
}

// ResourceClaimSpecPatchInput is an input type that accepts ResourceClaimSpecPatchArgs and ResourceClaimSpecPatchOutput values.
// You can construct a concrete instance of `ResourceClaimSpecPatchInput` via:
//
//	ResourceClaimSpecPatchArgs{...}
type ResourceClaimSpecPatchInput interface {
	pulumi.Input

	ToResourceClaimSpecPatchOutput() ResourceClaimSpecPatchOutput
	ToResourceClaimSpecPatchOutputWithContext(context.Context) ResourceClaimSpecPatchOutput
}

// ResourceClaimSpec defines how a resource is to be allocated.
type ResourceClaimSpecPatchArgs struct {
	// Allocation can start immediately or when a Pod wants to use the resource. "WaitForFirstConsumer" is the default.
	AllocationMode pulumi.StringPtrInput `pulumi:"allocationMode"`
	// ParametersRef references a separate object with arbitrary parameters that will be used by the driver when allocating a resource for the claim.
	//
	// The object must be in the same namespace as the ResourceClaim.
	ParametersRef ResourceClaimParametersReferencePatchPtrInput `pulumi:"parametersRef"`
	// ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment.
	ResourceClassName pulumi.StringPtrInput `pulumi:"resourceClassName"`
}

func (ResourceClaimSpecPatchArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimSpecPatch)(nil)).Elem()
}

func (i ResourceClaimSpecPatchArgs) ToResourceClaimSpecPatchOutput() ResourceClaimSpecPatchOutput {
	return i.ToResourceClaimSpecPatchOutputWithContext(context.Background())
}

func (i ResourceClaimSpecPatchArgs) ToResourceClaimSpecPatchOutputWithContext(ctx context.Context) ResourceClaimSpecPatchOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimSpecPatchOutput)
}

func (i ResourceClaimSpecPatchArgs) ToResourceClaimSpecPatchPtrOutput() ResourceClaimSpecPatchPtrOutput {
	return i.ToResourceClaimSpecPatchPtrOutputWithContext(context.Background())
}

func (i ResourceClaimSpecPatchArgs) ToResourceClaimSpecPatchPtrOutputWithContext(ctx context.Context) ResourceClaimSpecPatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimSpecPatchOutput).ToResourceClaimSpecPatchPtrOutputWithContext(ctx)
}

// ResourceClaimSpecPatchPtrInput is an input type that accepts ResourceClaimSpecPatchArgs, ResourceClaimSpecPatchPtr and ResourceClaimSpecPatchPtrOutput values.
// You can construct a concrete instance of `ResourceClaimSpecPatchPtrInput` via:
//
//	        ResourceClaimSpecPatchArgs{...}
//
//	or:
//
//	        nil
type ResourceClaimSpecPatchPtrInput interface {
	pulumi.Input

	ToResourceClaimSpecPatchPtrOutput() ResourceClaimSpecPatchPtrOutput
	ToResourceClaimSpecPatchPtrOutputWithContext(context.Context) ResourceClaimSpecPatchPtrOutput
}

type resourceClaimSpecPatchPtrType ResourceClaimSpecPatchArgs

func ResourceClaimSpecPatchPtr(v *ResourceClaimSpecPatchArgs) ResourceClaimSpecPatchPtrInput {
	return (*resourceClaimSpecPatchPtrType)(v)
}

func (*resourceClaimSpecPatchPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ResourceClaimSpecPatch)(nil)).Elem()
}

func (i *resourceClaimSpecPatchPtrType) ToResourceClaimSpecPatchPtrOutput() ResourceClaimSpecPatchPtrOutput {
	return i.ToResourceClaimSpecPatchPtrOutputWithContext(context.Background())
}

func (i *resourceClaimSpecPatchPtrType) ToResourceClaimSpecPatchPtrOutputWithContext(ctx context.Context) ResourceClaimSpecPatchPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimSpecPatchPtrOutput)
}

// ResourceClaimSpec defines how a resource is to be allocated.
type ResourceClaimSpecPatchOutput struct{ *pulumi.OutputState }

func (ResourceClaimSpecPatchOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimSpecPatch)(nil)).Elem()
}

func (o ResourceClaimSpecPatchOutput) ToResourceClaimSpecPatchOutput() ResourceClaimSpecPatchOutput {
	return o
}

func (o ResourceClaimSpecPatchOutput) ToResourceClaimSpecPatchOutputWithContext(ctx context.Context) ResourceClaimSpecPatchOutput {
	return o
}

func (o ResourceClaimSpecPatchOutput) ToResourceClaimSpecPatchPtrOutput() ResourceClaimSpecPatchPtrOutput {
	return o.ToResourceClaimSpecPatchPtrOutputWithContext(context.Background())
}

func (o ResourceClaimSpecPatchOutput) ToResourceClaimSpecPatchPtrOutputWithContext(ctx context.Context) ResourceClaimSpecPatchPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ResourceClaimSpecPatch) *ResourceClaimSpecPatch {
		return &v
	}).(ResourceClaimSpecPatchPtrOutput)
}

// Allocation can start immediately or when a Pod wants to use the resource. "WaitForFirstConsumer" is the default.
func (o ResourceClaimSpecPatchOutput) AllocationMode() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimSpecPatch) *string { return v.AllocationMode }).(pulumi.StringPtrOutput)
}

// ParametersRef references a separate object with arbitrary parameters that will be used by the driver when allocating a resource for the claim.
//
// The object must be in the same namespace as the ResourceClaim.
func (o ResourceClaimSpecPatchOutput) ParametersRef() ResourceClaimParametersReferencePatchPtrOutput {
	return o.ApplyT(func(v ResourceClaimSpecPatch) *ResourceClaimParametersReferencePatch { return v.ParametersRef }).(ResourceClaimParametersReferencePatchPtrOutput)
}

// ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment.
func (o ResourceClaimSpecPatchOutput) ResourceClassName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ResourceClaimSpecPatch) *string { return v.ResourceClassName }).(pulumi.StringPtrOutput)
}

type ResourceClaimSpecPatchPtrOutput struct{ *pulumi.OutputState }

func (ResourceClaimSpecPatchPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ResourceClaimSpecPatch)(nil)).Elem()
}

func (o ResourceClaimSpecPatchPtrOutput) ToResourceClaimSpecPatchPtrOutput() ResourceClaimSpecPatchPtrOutput {
	return o
}

func (o ResourceClaimSpecPatchPtrOutput) ToResourceClaimSpecPatchPtrOutputWithContext(ctx context.Context) ResourceClaimSpecPatchPtrOutput {
	return o
}

func (o ResourceClaimSpecPatchPtrOutput) Elem() ResourceClaimSpecPatchOutput {
	return o.ApplyT(func(v *ResourceClaimSpecPatch) ResourceClaimSpecPatch {
		if v != nil {
			return *v
		}
		var ret ResourceClaimSpecPatch
		return ret
	}).(ResourceClaimSpecPatchOutput)
}

// Allocation can start immediately or when a Pod wants to use the resource. "WaitForFirstConsumer" is the default.
func (o ResourceClaimSpecPatchPtrOutput) AllocationMode() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ResourceClaimSpecPatch) *string {
		if v == nil {
			return nil
		}
		return v.AllocationMode
	}).(pulumi.StringPtrOutput)
}

// ParametersRef references a separate object with arbitrary parameters that will be used by the driver when allocating a resource for the claim.
//
// The object must be in the same namespace as the ResourceClaim.
func (o ResourceClaimSpecPatchPtrOutput) ParametersRef() ResourceClaimParametersReferencePatchPtrOutput {
	return o.ApplyT(func(v *ResourceClaimSpecPatch) *ResourceClaimParametersReferencePatch {
		if v == nil {
			return nil
		}
		return v.ParametersRef
	}).(ResourceClaimParametersReferencePatchPtrOutput)
}

// ResourceClassName references the driver and additional parameters via the name of a ResourceClass that was created as part of the driver deployment.
func (o ResourceClaimSpecPatchPtrOutput) ResourceClassName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ResourceClaimSpecPatch) *string {
		if v == nil {
			return nil
		}
		return v.ResourceClassName
	}).(pulumi.StringPtrOutput)
}

// ResourceClaimStatus tracks whether the resource has been allocated and what the resulting attributes are.
type ResourceClaimStatus struct {
	// Allocation is set by the resource driver once a resource or set of resources has been allocated successfully. If this is not specified, the resources have not been allocated yet.
	Allocation *AllocationResult `pulumi:"allocation"`
	// DeallocationRequested indicates that a ResourceClaim is to be deallocated.
	//
	// The driver then must deallocate this claim and reset the field together with clearing the Allocation field.
	//
	// While DeallocationRequested is set, no new consumers may be added to ReservedFor.
	DeallocationRequested *bool `pulumi:"deallocationRequested"`
	// DriverName is a copy of the driver name from the ResourceClass at the time when allocation started.
	DriverName *string `pulumi:"driverName"`
	// ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started.
	//
	// There can be at most 32 such reservations. This may get increased in the future, but not reduced.
	ReservedFor []ResourceClaimConsumerReference `pulumi:"reservedFor"`
}

// ResourceClaimStatusInput is an input type that accepts ResourceClaimStatusArgs and ResourceClaimStatusOutput values.
// You can construct a concrete instance of `ResourceClaimStatusInput` via:
//
//	ResourceClaimStatusArgs{...}
type ResourceClaimStatusInput interface {
	pulumi.Input

	ToResourceClaimStatusOutput() ResourceClaimStatusOutput
	ToResourceClaimStatusOutputWithContext(context.Context) ResourceClaimStatusOutput
}

// ResourceClaimStatus tracks whether the resource has been allocated and what the resulting attributes are.
type ResourceClaimStatusArgs struct {
	// Allocation is set by the resource driver once a resource or set of resources has been allocated successfully. If this is not specified, the resources have not been allocated yet.
	Allocation AllocationResultPtrInput `pulumi:"allocation"`
	// DeallocationRequested indicates that a ResourceClaim is to be deallocated.
	//
	// The driver then must deallocate this claim and reset the field together with clearing the Allocation field.
	//
	// While DeallocationRequested is set, no new consumers may be added to ReservedFor.
	DeallocationRequested pulumi.BoolPtrInput `pulumi:"deallocationRequested"`
	// DriverName is a copy of the driver name from the ResourceClass at the time when allocation started.
	DriverName pulumi.StringPtrInput `pulumi:"driverName"`
	// ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started.
	//
	// There can be at most 32 such reservations. This may get increased in the future, but not reduced.
	ReservedFor ResourceClaimConsumerReferenceArrayInput `pulumi:"reservedFor"`
}

func (ResourceClaimStatusArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimStatus)(nil)).Elem()
}

func (i ResourceClaimStatusArgs) ToResourceClaimStatusOutput() ResourceClaimStatusOutput {
	return i.ToResourceClaimStatusOutputWithContext(context.Background())
}

func (i ResourceClaimStatusArgs) ToResourceClaimStatusOutputWithContext(ctx context.Context) ResourceClaimStatusOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimStatusOutput)
}

func (i ResourceClaimStatusArgs) ToResourceClaimStatusPtrOutput() ResourceClaimStatusPtrOutput {
	return i.ToResourceClaimStatusPtrOutputWithContext(context.Background())
}

func (i ResourceClaimStatusArgs) ToResourceClaimStatusPtrOutputWithContext(ctx context.Context) ResourceClaimStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimStatusOutput).ToResourceClaimStatusPtrOutputWithContext(ctx)
}

// ResourceClaimStatusPtrInput is an input type that accepts ResourceClaimStatusArgs, ResourceClaimStatusPtr and ResourceClaimStatusPtrOutput values.
// You can construct a concrete instance of `ResourceClaimStatusPtrInput` via:
//
//	        ResourceClaimStatusArgs{...}
//
//	or:
//
//	        nil
type ResourceClaimStatusPtrInput interface {
	pulumi.Input

	ToResourceClaimStatusPtrOutput() ResourceClaimStatusPtrOutput
	ToResourceClaimStatusPtrOutputWithContext(context.Context) ResourceClaimStatusPtrOutput
}

type resourceClaimStatusPtrType ResourceClaimStatusArgs

func ResourceClaimStatusPtr(v *ResourceClaimStatusArgs) ResourceClaimStatusPtrInput {
	return (*resourceClaimStatusPtrType)(v)
}

func (*resourceClaimStatusPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ResourceClaimStatus)(nil)).Elem()
}

func (i *resourceClaimStatusPtrType) ToResourceClaimStatusPtrOutput() ResourceClaimStatusPtrOutput {
	return i.ToResourceClaimStatusPtrOutputWithContext(context.Background())
}

func (i *resourceClaimStatusPtrType) ToResourceClaimStatusPtrOutputWithContext(ctx context.Context) ResourceClaimStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ResourceClaimStatusPtrOutput)
}

// ResourceClaimStatus tracks whether the resource has been allocated and what the resulting attributes are.
type ResourceClaimStatusOutput struct{ *pulumi.OutputState }

func (ResourceClaimStatusOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ResourceClaimStatus)(nil)).Elem()
}

func (o ResourceClaimStatusOutput) ToResourceClaimStatusOutput() ResourceClaimStatusOutput {
	return o
}

func (o Resource

repository: pulumi/pulumi-kubernetes

repo_name: pulumi/pulumi-kubernetes

gha_language: Java