From 53af9043fee77682e5b6ae13b447ea8ce18d9b44 Mon Sep 17 00:00:00 2001 From: RouxAntoine Date: Tue, 3 Oct 2023 20:11:54 +0200 Subject: [PATCH] feature: support of cors middleware on ingress resource --- Makefile | 1 + .../traefik/v1alpha1/ingressRoute.go | 154 + .../traefik/v1alpha1/ingressRouteTCP.go | 154 + .../traefik/v1alpha1/ingressRouteUDP.go | 154 + crds/kubernetes/traefik/v1alpha1/init.go | 62 + .../kubernetes/traefik/v1alpha1/middleware.go | 154 + .../traefik/v1alpha1/middlewareTCP.go | 154 + .../traefik/v1alpha1/pulumiTypes.go | 19399 ++++++++++++++++ .../traefik/v1alpha1/serversTransport.go | 154 + .../traefik/v1alpha1/serversTransportTCP.go | 154 + crds/kubernetes/traefik/v1alpha1/tlsoption.go | 154 + crds/kubernetes/traefik/v1alpha1/tlsstore.go | 154 + .../traefik/v1alpha1/traefikService.go | 154 + main.go | 2 + pkg/application/generic.go | 85 +- 15 files changed, 21069 insertions(+), 20 deletions(-) create mode 100644 crds/kubernetes/traefik/v1alpha1/ingressRoute.go create mode 100644 crds/kubernetes/traefik/v1alpha1/ingressRouteTCP.go create mode 100644 crds/kubernetes/traefik/v1alpha1/ingressRouteUDP.go create mode 100644 crds/kubernetes/traefik/v1alpha1/init.go create mode 100644 crds/kubernetes/traefik/v1alpha1/middleware.go create mode 100644 crds/kubernetes/traefik/v1alpha1/middlewareTCP.go create mode 100644 crds/kubernetes/traefik/v1alpha1/pulumiTypes.go create mode 100644 crds/kubernetes/traefik/v1alpha1/serversTransport.go create mode 100644 crds/kubernetes/traefik/v1alpha1/serversTransportTCP.go create mode 100644 crds/kubernetes/traefik/v1alpha1/tlsoption.go create mode 100644 crds/kubernetes/traefik/v1alpha1/tlsstore.go create mode 100644 crds/kubernetes/traefik/v1alpha1/traefikService.go diff --git a/Makefile b/Makefile index 3be95e6..56232f0 100644 --- a/Makefile +++ b/Makefile @@ -3,3 +3,4 @@ crds: crd2pulumi --go ~/Documents/virtualization/kubeadm/cert-manager/cert-manager/1-crds.yaml crd2pulumi --go ~/Documents/virtualization/kubeadm/external-dns/2-crds.yaml + helm -n kube-ingress show crds traefik/traefik | yq 'del(. | select(.spec.group == "traefik.containo.us"))' | crd2pulumi --go - diff --git a/crds/kubernetes/traefik/v1alpha1/ingressRoute.go b/crds/kubernetes/traefik/v1alpha1/ingressRoute.go new file mode 100644 index 0000000..ac58543 --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/ingressRoute.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// IngressRoute is the CRD implementation of a Traefik HTTP Router. +type IngressRoute struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // IngressRouteSpec defines the desired state of IngressRoute. + Spec IngressRouteSpecOutput `pulumi:"spec"` +} + +// NewIngressRoute registers a new resource with the given unique name, arguments, and options. +func NewIngressRoute(ctx *pulumi.Context, + name string, args *IngressRouteArgs, opts ...pulumi.ResourceOption) (*IngressRoute, error) { + if args == nil { + args = &IngressRouteArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("IngressRoute") + opts = internal.PkgResourceDefaultOpts(opts) + var resource IngressRoute + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:IngressRoute", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetIngressRoute gets an existing IngressRoute resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetIngressRoute(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *IngressRouteState, opts ...pulumi.ResourceOption) (*IngressRoute, error) { + var resource IngressRoute + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:IngressRoute", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering IngressRoute resources. +type ingressRouteState struct { +} + +type IngressRouteState struct { +} + +func (IngressRouteState) ElementType() reflect.Type { + return reflect.TypeOf((*ingressRouteState)(nil)).Elem() +} + +type ingressRouteArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // IngressRouteSpec defines the desired state of IngressRoute. + Spec *IngressRouteSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a IngressRoute resource. +type IngressRouteArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // IngressRouteSpec defines the desired state of IngressRoute. + Spec IngressRouteSpecPtrInput +} + +func (IngressRouteArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ingressRouteArgs)(nil)).Elem() +} + +type IngressRouteInput interface { + pulumi.Input + + ToIngressRouteOutput() IngressRouteOutput + ToIngressRouteOutputWithContext(ctx context.Context) IngressRouteOutput +} + +func (*IngressRoute) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRoute)(nil)).Elem() +} + +func (i *IngressRoute) ToIngressRouteOutput() IngressRouteOutput { + return i.ToIngressRouteOutputWithContext(context.Background()) +} + +func (i *IngressRoute) ToIngressRouteOutputWithContext(ctx context.Context) IngressRouteOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteOutput) +} + +func (i *IngressRoute) ToOutput(ctx context.Context) pulumix.Output[*IngressRoute] { + return pulumix.Output[*IngressRoute]{ + OutputState: i.ToIngressRouteOutputWithContext(ctx).OutputState, + } +} + +type IngressRouteOutput struct{ *pulumi.OutputState } + +func (IngressRouteOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRoute)(nil)).Elem() +} + +func (o IngressRouteOutput) ToIngressRouteOutput() IngressRouteOutput { + return o +} + +func (o IngressRouteOutput) ToIngressRouteOutputWithContext(ctx context.Context) IngressRouteOutput { + return o +} + +func (o IngressRouteOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRoute] { + return pulumix.Output[*IngressRoute]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRoute) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o IngressRouteOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRoute) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o IngressRouteOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *IngressRoute) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// IngressRouteSpec defines the desired state of IngressRoute. +func (o IngressRouteOutput) Spec() IngressRouteSpecOutput { + return o.ApplyT(func(v *IngressRoute) IngressRouteSpecOutput { return v.Spec }).(IngressRouteSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteInput)(nil)).Elem(), &IngressRoute{}) + pulumi.RegisterOutputType(IngressRouteOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/ingressRouteTCP.go b/crds/kubernetes/traefik/v1alpha1/ingressRouteTCP.go new file mode 100644 index 0000000..2c778af --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/ingressRouteTCP.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// IngressRouteTCP is the CRD implementation of a Traefik TCP Router. +type IngressRouteTCP struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // IngressRouteTCPSpec defines the desired state of IngressRouteTCP. + Spec IngressRouteTCPSpecOutput `pulumi:"spec"` +} + +// NewIngressRouteTCP registers a new resource with the given unique name, arguments, and options. +func NewIngressRouteTCP(ctx *pulumi.Context, + name string, args *IngressRouteTCPArgs, opts ...pulumi.ResourceOption) (*IngressRouteTCP, error) { + if args == nil { + args = &IngressRouteTCPArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("IngressRouteTCP") + opts = internal.PkgResourceDefaultOpts(opts) + var resource IngressRouteTCP + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:IngressRouteTCP", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetIngressRouteTCP gets an existing IngressRouteTCP resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetIngressRouteTCP(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *IngressRouteTCPState, opts ...pulumi.ResourceOption) (*IngressRouteTCP, error) { + var resource IngressRouteTCP + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:IngressRouteTCP", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering IngressRouteTCP resources. +type ingressRouteTCPState struct { +} + +type IngressRouteTCPState struct { +} + +func (IngressRouteTCPState) ElementType() reflect.Type { + return reflect.TypeOf((*ingressRouteTCPState)(nil)).Elem() +} + +type ingressRouteTCPArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // IngressRouteTCPSpec defines the desired state of IngressRouteTCP. + Spec *IngressRouteTCPSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a IngressRouteTCP resource. +type IngressRouteTCPArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // IngressRouteTCPSpec defines the desired state of IngressRouteTCP. + Spec IngressRouteTCPSpecPtrInput +} + +func (IngressRouteTCPArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ingressRouteTCPArgs)(nil)).Elem() +} + +type IngressRouteTCPInput interface { + pulumi.Input + + ToIngressRouteTCPOutput() IngressRouteTCPOutput + ToIngressRouteTCPOutputWithContext(ctx context.Context) IngressRouteTCPOutput +} + +func (*IngressRouteTCP) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCP)(nil)).Elem() +} + +func (i *IngressRouteTCP) ToIngressRouteTCPOutput() IngressRouteTCPOutput { + return i.ToIngressRouteTCPOutputWithContext(context.Background()) +} + +func (i *IngressRouteTCP) ToIngressRouteTCPOutputWithContext(ctx context.Context) IngressRouteTCPOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPOutput) +} + +func (i *IngressRouteTCP) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCP] { + return pulumix.Output[*IngressRouteTCP]{ + OutputState: i.ToIngressRouteTCPOutputWithContext(ctx).OutputState, + } +} + +type IngressRouteTCPOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCP)(nil)).Elem() +} + +func (o IngressRouteTCPOutput) ToIngressRouteTCPOutput() IngressRouteTCPOutput { + return o +} + +func (o IngressRouteTCPOutput) ToIngressRouteTCPOutputWithContext(ctx context.Context) IngressRouteTCPOutput { + return o +} + +func (o IngressRouteTCPOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCP] { + return pulumix.Output[*IngressRouteTCP]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteTCP) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o IngressRouteTCPOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteTCP) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o IngressRouteTCPOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *IngressRouteTCP) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// IngressRouteTCPSpec defines the desired state of IngressRouteTCP. +func (o IngressRouteTCPOutput) Spec() IngressRouteTCPSpecOutput { + return o.ApplyT(func(v *IngressRouteTCP) IngressRouteTCPSpecOutput { return v.Spec }).(IngressRouteTCPSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPInput)(nil)).Elem(), &IngressRouteTCP{}) + pulumi.RegisterOutputType(IngressRouteTCPOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/ingressRouteUDP.go b/crds/kubernetes/traefik/v1alpha1/ingressRouteUDP.go new file mode 100644 index 0000000..0bc3458 --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/ingressRouteUDP.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// IngressRouteUDP is a CRD implementation of a Traefik UDP Router. +type IngressRouteUDP struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. + Spec IngressRouteUDPSpecOutput `pulumi:"spec"` +} + +// NewIngressRouteUDP registers a new resource with the given unique name, arguments, and options. +func NewIngressRouteUDP(ctx *pulumi.Context, + name string, args *IngressRouteUDPArgs, opts ...pulumi.ResourceOption) (*IngressRouteUDP, error) { + if args == nil { + args = &IngressRouteUDPArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("IngressRouteUDP") + opts = internal.PkgResourceDefaultOpts(opts) + var resource IngressRouteUDP + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:IngressRouteUDP", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetIngressRouteUDP gets an existing IngressRouteUDP resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetIngressRouteUDP(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *IngressRouteUDPState, opts ...pulumi.ResourceOption) (*IngressRouteUDP, error) { + var resource IngressRouteUDP + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:IngressRouteUDP", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering IngressRouteUDP resources. +type ingressRouteUDPState struct { +} + +type IngressRouteUDPState struct { +} + +func (IngressRouteUDPState) ElementType() reflect.Type { + return reflect.TypeOf((*ingressRouteUDPState)(nil)).Elem() +} + +type ingressRouteUDPArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. + Spec *IngressRouteUDPSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a IngressRouteUDP resource. +type IngressRouteUDPArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. + Spec IngressRouteUDPSpecPtrInput +} + +func (IngressRouteUDPArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ingressRouteUDPArgs)(nil)).Elem() +} + +type IngressRouteUDPInput interface { + pulumi.Input + + ToIngressRouteUDPOutput() IngressRouteUDPOutput + ToIngressRouteUDPOutputWithContext(ctx context.Context) IngressRouteUDPOutput +} + +func (*IngressRouteUDP) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteUDP)(nil)).Elem() +} + +func (i *IngressRouteUDP) ToIngressRouteUDPOutput() IngressRouteUDPOutput { + return i.ToIngressRouteUDPOutputWithContext(context.Background()) +} + +func (i *IngressRouteUDP) ToIngressRouteUDPOutputWithContext(ctx context.Context) IngressRouteUDPOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteUDPOutput) +} + +func (i *IngressRouteUDP) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteUDP] { + return pulumix.Output[*IngressRouteUDP]{ + OutputState: i.ToIngressRouteUDPOutputWithContext(ctx).OutputState, + } +} + +type IngressRouteUDPOutput struct{ *pulumi.OutputState } + +func (IngressRouteUDPOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteUDP)(nil)).Elem() +} + +func (o IngressRouteUDPOutput) ToIngressRouteUDPOutput() IngressRouteUDPOutput { + return o +} + +func (o IngressRouteUDPOutput) ToIngressRouteUDPOutputWithContext(ctx context.Context) IngressRouteUDPOutput { + return o +} + +func (o IngressRouteUDPOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteUDP] { + return pulumix.Output[*IngressRouteUDP]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteUDPOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteUDP) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o IngressRouteUDPOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteUDP) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o IngressRouteUDPOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *IngressRouteUDP) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. +func (o IngressRouteUDPOutput) Spec() IngressRouteUDPSpecOutput { + return o.ApplyT(func(v *IngressRouteUDP) IngressRouteUDPSpecOutput { return v.Spec }).(IngressRouteUDPSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteUDPInput)(nil)).Elem(), &IngressRouteUDP{}) + pulumi.RegisterOutputType(IngressRouteUDPOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/init.go b/crds/kubernetes/traefik/v1alpha1/init.go new file mode 100644 index 0000000..6f4a0e8 --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/init.go @@ -0,0 +1,62 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "fmt" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + "github.com/blang/semver" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "kubernetes:traefik.io/v1alpha1:IngressRoute": + r = &IngressRoute{} + case "kubernetes:traefik.io/v1alpha1:IngressRouteTCP": + r = &IngressRouteTCP{} + case "kubernetes:traefik.io/v1alpha1:IngressRouteUDP": + r = &IngressRouteUDP{} + case "kubernetes:traefik.io/v1alpha1:Middleware": + r = &Middleware{} + case "kubernetes:traefik.io/v1alpha1:MiddlewareTCP": + r = &MiddlewareTCP{} + case "kubernetes:traefik.io/v1alpha1:ServersTransport": + r = &ServersTransport{} + case "kubernetes:traefik.io/v1alpha1:ServersTransportTCP": + r = &ServersTransportTCP{} + case "kubernetes:traefik.io/v1alpha1:TLSOption": + r = &TLSOption{} + case "kubernetes:traefik.io/v1alpha1:TLSStore": + r = &TLSStore{} + case "kubernetes:traefik.io/v1alpha1:TraefikService": + r = &TraefikService{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "crds", + "traefik.io/v1alpha1", + &module{version}, + ) +} diff --git a/crds/kubernetes/traefik/v1alpha1/middleware.go b/crds/kubernetes/traefik/v1alpha1/middleware.go new file mode 100644 index 0000000..3e5f5b8 --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/middleware.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// Middleware is the CRD implementation of a Traefik Middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/overview/ +type Middleware struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // MiddlewareSpec defines the desired state of a Middleware. + Spec MiddlewareSpecOutput `pulumi:"spec"` +} + +// NewMiddleware registers a new resource with the given unique name, arguments, and options. +func NewMiddleware(ctx *pulumi.Context, + name string, args *MiddlewareArgs, opts ...pulumi.ResourceOption) (*Middleware, error) { + if args == nil { + args = &MiddlewareArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("Middleware") + opts = internal.PkgResourceDefaultOpts(opts) + var resource Middleware + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:Middleware", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetMiddleware gets an existing Middleware resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetMiddleware(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *MiddlewareState, opts ...pulumi.ResourceOption) (*Middleware, error) { + var resource Middleware + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:Middleware", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Middleware resources. +type middlewareState struct { +} + +type MiddlewareState struct { +} + +func (MiddlewareState) ElementType() reflect.Type { + return reflect.TypeOf((*middlewareState)(nil)).Elem() +} + +type middlewareArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // MiddlewareSpec defines the desired state of a Middleware. + Spec *MiddlewareSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a Middleware resource. +type MiddlewareArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // MiddlewareSpec defines the desired state of a Middleware. + Spec MiddlewareSpecPtrInput +} + +func (MiddlewareArgs) ElementType() reflect.Type { + return reflect.TypeOf((*middlewareArgs)(nil)).Elem() +} + +type MiddlewareInput interface { + pulumi.Input + + ToMiddlewareOutput() MiddlewareOutput + ToMiddlewareOutputWithContext(ctx context.Context) MiddlewareOutput +} + +func (*Middleware) ElementType() reflect.Type { + return reflect.TypeOf((**Middleware)(nil)).Elem() +} + +func (i *Middleware) ToMiddlewareOutput() MiddlewareOutput { + return i.ToMiddlewareOutputWithContext(context.Background()) +} + +func (i *Middleware) ToMiddlewareOutputWithContext(ctx context.Context) MiddlewareOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareOutput) +} + +func (i *Middleware) ToOutput(ctx context.Context) pulumix.Output[*Middleware] { + return pulumix.Output[*Middleware]{ + OutputState: i.ToMiddlewareOutputWithContext(ctx).OutputState, + } +} + +type MiddlewareOutput struct{ *pulumi.OutputState } + +func (MiddlewareOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Middleware)(nil)).Elem() +} + +func (o MiddlewareOutput) ToMiddlewareOutput() MiddlewareOutput { + return o +} + +func (o MiddlewareOutput) ToMiddlewareOutputWithContext(ctx context.Context) MiddlewareOutput { + return o +} + +func (o MiddlewareOutput) ToOutput(ctx context.Context) pulumix.Output[*Middleware] { + return pulumix.Output[*Middleware]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Middleware) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o MiddlewareOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Middleware) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o MiddlewareOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *Middleware) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// MiddlewareSpec defines the desired state of a Middleware. +func (o MiddlewareOutput) Spec() MiddlewareSpecOutput { + return o.ApplyT(func(v *Middleware) MiddlewareSpecOutput { return v.Spec }).(MiddlewareSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareInput)(nil)).Elem(), &Middleware{}) + pulumi.RegisterOutputType(MiddlewareOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/middlewareTCP.go b/crds/kubernetes/traefik/v1alpha1/middlewareTCP.go new file mode 100644 index 0000000..e06f406 --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/middlewareTCP.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// MiddlewareTCP is the CRD implementation of a Traefik TCP middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/overview/ +type MiddlewareTCP struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. + Spec MiddlewareTCPSpecOutput `pulumi:"spec"` +} + +// NewMiddlewareTCP registers a new resource with the given unique name, arguments, and options. +func NewMiddlewareTCP(ctx *pulumi.Context, + name string, args *MiddlewareTCPArgs, opts ...pulumi.ResourceOption) (*MiddlewareTCP, error) { + if args == nil { + args = &MiddlewareTCPArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("MiddlewareTCP") + opts = internal.PkgResourceDefaultOpts(opts) + var resource MiddlewareTCP + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:MiddlewareTCP", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetMiddlewareTCP gets an existing MiddlewareTCP resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetMiddlewareTCP(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *MiddlewareTCPState, opts ...pulumi.ResourceOption) (*MiddlewareTCP, error) { + var resource MiddlewareTCP + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:MiddlewareTCP", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering MiddlewareTCP resources. +type middlewareTCPState struct { +} + +type MiddlewareTCPState struct { +} + +func (MiddlewareTCPState) ElementType() reflect.Type { + return reflect.TypeOf((*middlewareTCPState)(nil)).Elem() +} + +type middlewareTCPArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. + Spec *MiddlewareTCPSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a MiddlewareTCP resource. +type MiddlewareTCPArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. + Spec MiddlewareTCPSpecPtrInput +} + +func (MiddlewareTCPArgs) ElementType() reflect.Type { + return reflect.TypeOf((*middlewareTCPArgs)(nil)).Elem() +} + +type MiddlewareTCPInput interface { + pulumi.Input + + ToMiddlewareTCPOutput() MiddlewareTCPOutput + ToMiddlewareTCPOutputWithContext(ctx context.Context) MiddlewareTCPOutput +} + +func (*MiddlewareTCP) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareTCP)(nil)).Elem() +} + +func (i *MiddlewareTCP) ToMiddlewareTCPOutput() MiddlewareTCPOutput { + return i.ToMiddlewareTCPOutputWithContext(context.Background()) +} + +func (i *MiddlewareTCP) ToMiddlewareTCPOutputWithContext(ctx context.Context) MiddlewareTCPOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPOutput) +} + +func (i *MiddlewareTCP) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareTCP] { + return pulumix.Output[*MiddlewareTCP]{ + OutputState: i.ToMiddlewareTCPOutputWithContext(ctx).OutputState, + } +} + +type MiddlewareTCPOutput struct{ *pulumi.OutputState } + +func (MiddlewareTCPOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareTCP)(nil)).Elem() +} + +func (o MiddlewareTCPOutput) ToMiddlewareTCPOutput() MiddlewareTCPOutput { + return o +} + +func (o MiddlewareTCPOutput) ToMiddlewareTCPOutputWithContext(ctx context.Context) MiddlewareTCPOutput { + return o +} + +func (o MiddlewareTCPOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareTCP] { + return pulumix.Output[*MiddlewareTCP]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareTCPOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareTCP) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o MiddlewareTCPOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareTCP) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o MiddlewareTCPOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *MiddlewareTCP) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. +func (o MiddlewareTCPOutput) Spec() MiddlewareTCPSpecOutput { + return o.ApplyT(func(v *MiddlewareTCP) MiddlewareTCPSpecOutput { return v.Spec }).(MiddlewareTCPSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareTCPInput)(nil)).Elem(), &MiddlewareTCP{}) + pulumi.RegisterOutputType(MiddlewareTCPOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/pulumiTypes.go b/crds/kubernetes/traefik/v1alpha1/pulumiTypes.go new file mode 100644 index 0000000..22f11ca --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/pulumiTypes.go @@ -0,0 +1,19399 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +var _ = internal.GetEnvOrDefault + +// IngressRoute is the CRD implementation of a Traefik HTTP Router. +type IngressRouteType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // IngressRouteSpec defines the desired state of IngressRoute. + Spec IngressRouteSpec `pulumi:"spec"` +} + +type IngressRouteMetadata struct { +} + +// IngressRouteSpec defines the desired state of IngressRoute. +type IngressRouteSpec struct { + // EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. + EntryPoints []string `pulumi:"entryPoints"` + // Routes defines the list of routes. + Routes []IngressRouteSpecRoutes `pulumi:"routes"` + // TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls + Tls *IngressRouteSpecTls `pulumi:"tls"` +} + +// IngressRouteSpecInput is an input type that accepts IngressRouteSpecArgs and IngressRouteSpecOutput values. +// You can construct a concrete instance of `IngressRouteSpecInput` via: +// +// IngressRouteSpecArgs{...} +type IngressRouteSpecInput interface { + pulumi.Input + + ToIngressRouteSpecOutput() IngressRouteSpecOutput + ToIngressRouteSpecOutputWithContext(context.Context) IngressRouteSpecOutput +} + +// IngressRouteSpec defines the desired state of IngressRoute. +type IngressRouteSpecArgs struct { + // EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. + EntryPoints pulumi.StringArrayInput `pulumi:"entryPoints"` + // Routes defines the list of routes. + Routes IngressRouteSpecRoutesArrayInput `pulumi:"routes"` + // TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls + Tls IngressRouteSpecTlsPtrInput `pulumi:"tls"` +} + +func (IngressRouteSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpec)(nil)).Elem() +} + +func (i IngressRouteSpecArgs) ToIngressRouteSpecOutput() IngressRouteSpecOutput { + return i.ToIngressRouteSpecOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecArgs) ToIngressRouteSpecOutputWithContext(ctx context.Context) IngressRouteSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecOutput) +} + +func (i IngressRouteSpecArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpec] { + return pulumix.Output[IngressRouteSpec]{ + OutputState: i.ToIngressRouteSpecOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteSpecArgs) ToIngressRouteSpecPtrOutput() IngressRouteSpecPtrOutput { + return i.ToIngressRouteSpecPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecArgs) ToIngressRouteSpecPtrOutputWithContext(ctx context.Context) IngressRouteSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecOutput).ToIngressRouteSpecPtrOutputWithContext(ctx) +} + +// IngressRouteSpecPtrInput is an input type that accepts IngressRouteSpecArgs, IngressRouteSpecPtr and IngressRouteSpecPtrOutput values. +// You can construct a concrete instance of `IngressRouteSpecPtrInput` via: +// +// IngressRouteSpecArgs{...} +// +// or: +// +// nil +type IngressRouteSpecPtrInput interface { + pulumi.Input + + ToIngressRouteSpecPtrOutput() IngressRouteSpecPtrOutput + ToIngressRouteSpecPtrOutputWithContext(context.Context) IngressRouteSpecPtrOutput +} + +type ingressRouteSpecPtrType IngressRouteSpecArgs + +func IngressRouteSpecPtr(v *IngressRouteSpecArgs) IngressRouteSpecPtrInput { + return (*ingressRouteSpecPtrType)(v) +} + +func (*ingressRouteSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpec)(nil)).Elem() +} + +func (i *ingressRouteSpecPtrType) ToIngressRouteSpecPtrOutput() IngressRouteSpecPtrOutput { + return i.ToIngressRouteSpecPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteSpecPtrType) ToIngressRouteSpecPtrOutputWithContext(ctx context.Context) IngressRouteSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecPtrOutput) +} + +func (i *ingressRouteSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpec] { + return pulumix.Output[*IngressRouteSpec]{ + OutputState: i.ToIngressRouteSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteSpec defines the desired state of IngressRoute. +type IngressRouteSpecOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpec)(nil)).Elem() +} + +func (o IngressRouteSpecOutput) ToIngressRouteSpecOutput() IngressRouteSpecOutput { + return o +} + +func (o IngressRouteSpecOutput) ToIngressRouteSpecOutputWithContext(ctx context.Context) IngressRouteSpecOutput { + return o +} + +func (o IngressRouteSpecOutput) ToIngressRouteSpecPtrOutput() IngressRouteSpecPtrOutput { + return o.ToIngressRouteSpecPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteSpecOutput) ToIngressRouteSpecPtrOutputWithContext(ctx context.Context) IngressRouteSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteSpec) *IngressRouteSpec { + return &v + }).(IngressRouteSpecPtrOutput) +} + +func (o IngressRouteSpecOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpec] { + return pulumix.Output[IngressRouteSpec]{ + OutputState: o.OutputState, + } +} + +// EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. +func (o IngressRouteSpecOutput) EntryPoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v IngressRouteSpec) []string { return v.EntryPoints }).(pulumi.StringArrayOutput) +} + +// Routes defines the list of routes. +func (o IngressRouteSpecOutput) Routes() IngressRouteSpecRoutesArrayOutput { + return o.ApplyT(func(v IngressRouteSpec) []IngressRouteSpecRoutes { return v.Routes }).(IngressRouteSpecRoutesArrayOutput) +} + +// TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls +func (o IngressRouteSpecOutput) Tls() IngressRouteSpecTlsPtrOutput { + return o.ApplyT(func(v IngressRouteSpec) *IngressRouteSpecTls { return v.Tls }).(IngressRouteSpecTlsPtrOutput) +} + +type IngressRouteSpecPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpec)(nil)).Elem() +} + +func (o IngressRouteSpecPtrOutput) ToIngressRouteSpecPtrOutput() IngressRouteSpecPtrOutput { + return o +} + +func (o IngressRouteSpecPtrOutput) ToIngressRouteSpecPtrOutputWithContext(ctx context.Context) IngressRouteSpecPtrOutput { + return o +} + +func (o IngressRouteSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpec] { + return pulumix.Output[*IngressRouteSpec]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecPtrOutput) Elem() IngressRouteSpecOutput { + return o.ApplyT(func(v *IngressRouteSpec) IngressRouteSpec { + if v != nil { + return *v + } + var ret IngressRouteSpec + return ret + }).(IngressRouteSpecOutput) +} + +// EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. +func (o IngressRouteSpecPtrOutput) EntryPoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *IngressRouteSpec) []string { + if v == nil { + return nil + } + return v.EntryPoints + }).(pulumi.StringArrayOutput) +} + +// Routes defines the list of routes. +func (o IngressRouteSpecPtrOutput) Routes() IngressRouteSpecRoutesArrayOutput { + return o.ApplyT(func(v *IngressRouteSpec) []IngressRouteSpecRoutes { + if v == nil { + return nil + } + return v.Routes + }).(IngressRouteSpecRoutesArrayOutput) +} + +// TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls +func (o IngressRouteSpecPtrOutput) Tls() IngressRouteSpecTlsPtrOutput { + return o.ApplyT(func(v *IngressRouteSpec) *IngressRouteSpecTls { + if v == nil { + return nil + } + return v.Tls + }).(IngressRouteSpecTlsPtrOutput) +} + +// Route holds the HTTP route configuration. +type IngressRouteSpecRoutes struct { + // Kind defines the kind of the route. Rule is the only supported kind. + Kind string `pulumi:"kind"` + // Match defines the router's rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule + Match string `pulumi:"match"` + // Middlewares defines the list of references to Middleware resources. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-middleware + Middlewares []IngressRouteSpecRoutesMiddlewares `pulumi:"middlewares"` + // Priority defines the router's priority. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority + Priority *int `pulumi:"priority"` + // Services defines the list of Service. It can contain any combination of TraefikService and/or reference to a Kubernetes Service. + Services []IngressRouteSpecRoutesServices `pulumi:"services"` +} + +// IngressRouteSpecRoutesInput is an input type that accepts IngressRouteSpecRoutesArgs and IngressRouteSpecRoutesOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesInput` via: +// +// IngressRouteSpecRoutesArgs{...} +type IngressRouteSpecRoutesInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesOutput() IngressRouteSpecRoutesOutput + ToIngressRouteSpecRoutesOutputWithContext(context.Context) IngressRouteSpecRoutesOutput +} + +// Route holds the HTTP route configuration. +type IngressRouteSpecRoutesArgs struct { + // Kind defines the kind of the route. Rule is the only supported kind. + Kind pulumi.StringInput `pulumi:"kind"` + // Match defines the router's rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule + Match pulumi.StringInput `pulumi:"match"` + // Middlewares defines the list of references to Middleware resources. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-middleware + Middlewares IngressRouteSpecRoutesMiddlewaresArrayInput `pulumi:"middlewares"` + // Priority defines the router's priority. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority + Priority pulumi.IntPtrInput `pulumi:"priority"` + // Services defines the list of Service. It can contain any combination of TraefikService and/or reference to a Kubernetes Service. + Services IngressRouteSpecRoutesServicesArrayInput `pulumi:"services"` +} + +func (IngressRouteSpecRoutesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutes)(nil)).Elem() +} + +func (i IngressRouteSpecRoutesArgs) ToIngressRouteSpecRoutesOutput() IngressRouteSpecRoutesOutput { + return i.ToIngressRouteSpecRoutesOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesArgs) ToIngressRouteSpecRoutesOutputWithContext(ctx context.Context) IngressRouteSpecRoutesOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesOutput) +} + +func (i IngressRouteSpecRoutesArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutes] { + return pulumix.Output[IngressRouteSpecRoutes]{ + OutputState: i.ToIngressRouteSpecRoutesOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteSpecRoutesArrayInput is an input type that accepts IngressRouteSpecRoutesArray and IngressRouteSpecRoutesArrayOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesArrayInput` via: +// +// IngressRouteSpecRoutesArray{ IngressRouteSpecRoutesArgs{...} } +type IngressRouteSpecRoutesArrayInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesArrayOutput() IngressRouteSpecRoutesArrayOutput + ToIngressRouteSpecRoutesArrayOutputWithContext(context.Context) IngressRouteSpecRoutesArrayOutput +} + +type IngressRouteSpecRoutesArray []IngressRouteSpecRoutesInput + +func (IngressRouteSpecRoutesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteSpecRoutes)(nil)).Elem() +} + +func (i IngressRouteSpecRoutesArray) ToIngressRouteSpecRoutesArrayOutput() IngressRouteSpecRoutesArrayOutput { + return i.ToIngressRouteSpecRoutesArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesArray) ToIngressRouteSpecRoutesArrayOutputWithContext(ctx context.Context) IngressRouteSpecRoutesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesArrayOutput) +} + +func (i IngressRouteSpecRoutesArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteSpecRoutes] { + return pulumix.Output[[]IngressRouteSpecRoutes]{ + OutputState: i.ToIngressRouteSpecRoutesArrayOutputWithContext(ctx).OutputState, + } +} + +// Route holds the HTTP route configuration. +type IngressRouteSpecRoutesOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutes)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesOutput) ToIngressRouteSpecRoutesOutput() IngressRouteSpecRoutesOutput { + return o +} + +func (o IngressRouteSpecRoutesOutput) ToIngressRouteSpecRoutesOutputWithContext(ctx context.Context) IngressRouteSpecRoutesOutput { + return o +} + +func (o IngressRouteSpecRoutesOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutes] { + return pulumix.Output[IngressRouteSpecRoutes]{ + OutputState: o.OutputState, + } +} + +// Kind defines the kind of the route. Rule is the only supported kind. +func (o IngressRouteSpecRoutesOutput) Kind() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteSpecRoutes) string { return v.Kind }).(pulumi.StringOutput) +} + +// Match defines the router's rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule +func (o IngressRouteSpecRoutesOutput) Match() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteSpecRoutes) string { return v.Match }).(pulumi.StringOutput) +} + +// Middlewares defines the list of references to Middleware resources. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-middleware +func (o IngressRouteSpecRoutesOutput) Middlewares() IngressRouteSpecRoutesMiddlewaresArrayOutput { + return o.ApplyT(func(v IngressRouteSpecRoutes) []IngressRouteSpecRoutesMiddlewares { return v.Middlewares }).(IngressRouteSpecRoutesMiddlewaresArrayOutput) +} + +// Priority defines the router's priority. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority +func (o IngressRouteSpecRoutesOutput) Priority() pulumi.IntPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutes) *int { return v.Priority }).(pulumi.IntPtrOutput) +} + +// Services defines the list of Service. It can contain any combination of TraefikService and/or reference to a Kubernetes Service. +func (o IngressRouteSpecRoutesOutput) Services() IngressRouteSpecRoutesServicesArrayOutput { + return o.ApplyT(func(v IngressRouteSpecRoutes) []IngressRouteSpecRoutesServices { return v.Services }).(IngressRouteSpecRoutesServicesArrayOutput) +} + +type IngressRouteSpecRoutesArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteSpecRoutes)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesArrayOutput) ToIngressRouteSpecRoutesArrayOutput() IngressRouteSpecRoutesArrayOutput { + return o +} + +func (o IngressRouteSpecRoutesArrayOutput) ToIngressRouteSpecRoutesArrayOutputWithContext(ctx context.Context) IngressRouteSpecRoutesArrayOutput { + return o +} + +func (o IngressRouteSpecRoutesArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteSpecRoutes] { + return pulumix.Output[[]IngressRouteSpecRoutes]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecRoutesArrayOutput) Index(i pulumi.IntInput) IngressRouteSpecRoutesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteSpecRoutes { + return vs[0].([]IngressRouteSpecRoutes)[vs[1].(int)] + }).(IngressRouteSpecRoutesOutput) +} + +// MiddlewareRef is a reference to a Middleware resource. +type IngressRouteSpecRoutesMiddlewares struct { + // Name defines the name of the referenced Middleware resource. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Middleware resource. + Namespace *string `pulumi:"namespace"` +} + +// IngressRouteSpecRoutesMiddlewaresInput is an input type that accepts IngressRouteSpecRoutesMiddlewaresArgs and IngressRouteSpecRoutesMiddlewaresOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesMiddlewaresInput` via: +// +// IngressRouteSpecRoutesMiddlewaresArgs{...} +type IngressRouteSpecRoutesMiddlewaresInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesMiddlewaresOutput() IngressRouteSpecRoutesMiddlewaresOutput + ToIngressRouteSpecRoutesMiddlewaresOutputWithContext(context.Context) IngressRouteSpecRoutesMiddlewaresOutput +} + +// MiddlewareRef is a reference to a Middleware resource. +type IngressRouteSpecRoutesMiddlewaresArgs struct { + // Name defines the name of the referenced Middleware resource. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Middleware resource. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` +} + +func (IngressRouteSpecRoutesMiddlewaresArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesMiddlewares)(nil)).Elem() +} + +func (i IngressRouteSpecRoutesMiddlewaresArgs) ToIngressRouteSpecRoutesMiddlewaresOutput() IngressRouteSpecRoutesMiddlewaresOutput { + return i.ToIngressRouteSpecRoutesMiddlewaresOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesMiddlewaresArgs) ToIngressRouteSpecRoutesMiddlewaresOutputWithContext(ctx context.Context) IngressRouteSpecRoutesMiddlewaresOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesMiddlewaresOutput) +} + +func (i IngressRouteSpecRoutesMiddlewaresArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesMiddlewares] { + return pulumix.Output[IngressRouteSpecRoutesMiddlewares]{ + OutputState: i.ToIngressRouteSpecRoutesMiddlewaresOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteSpecRoutesMiddlewaresArrayInput is an input type that accepts IngressRouteSpecRoutesMiddlewaresArray and IngressRouteSpecRoutesMiddlewaresArrayOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesMiddlewaresArrayInput` via: +// +// IngressRouteSpecRoutesMiddlewaresArray{ IngressRouteSpecRoutesMiddlewaresArgs{...} } +type IngressRouteSpecRoutesMiddlewaresArrayInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesMiddlewaresArrayOutput() IngressRouteSpecRoutesMiddlewaresArrayOutput + ToIngressRouteSpecRoutesMiddlewaresArrayOutputWithContext(context.Context) IngressRouteSpecRoutesMiddlewaresArrayOutput +} + +type IngressRouteSpecRoutesMiddlewaresArray []IngressRouteSpecRoutesMiddlewaresInput + +func (IngressRouteSpecRoutesMiddlewaresArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteSpecRoutesMiddlewares)(nil)).Elem() +} + +func (i IngressRouteSpecRoutesMiddlewaresArray) ToIngressRouteSpecRoutesMiddlewaresArrayOutput() IngressRouteSpecRoutesMiddlewaresArrayOutput { + return i.ToIngressRouteSpecRoutesMiddlewaresArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesMiddlewaresArray) ToIngressRouteSpecRoutesMiddlewaresArrayOutputWithContext(ctx context.Context) IngressRouteSpecRoutesMiddlewaresArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesMiddlewaresArrayOutput) +} + +func (i IngressRouteSpecRoutesMiddlewaresArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteSpecRoutesMiddlewares] { + return pulumix.Output[[]IngressRouteSpecRoutesMiddlewares]{ + OutputState: i.ToIngressRouteSpecRoutesMiddlewaresArrayOutputWithContext(ctx).OutputState, + } +} + +// MiddlewareRef is a reference to a Middleware resource. +type IngressRouteSpecRoutesMiddlewaresOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesMiddlewaresOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesMiddlewares)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesMiddlewaresOutput) ToIngressRouteSpecRoutesMiddlewaresOutput() IngressRouteSpecRoutesMiddlewaresOutput { + return o +} + +func (o IngressRouteSpecRoutesMiddlewaresOutput) ToIngressRouteSpecRoutesMiddlewaresOutputWithContext(ctx context.Context) IngressRouteSpecRoutesMiddlewaresOutput { + return o +} + +func (o IngressRouteSpecRoutesMiddlewaresOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesMiddlewares] { + return pulumix.Output[IngressRouteSpecRoutesMiddlewares]{ + OutputState: o.OutputState, + } +} + +// Name defines the name of the referenced Middleware resource. +func (o IngressRouteSpecRoutesMiddlewaresOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesMiddlewares) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Middleware resource. +func (o IngressRouteSpecRoutesMiddlewaresOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesMiddlewares) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +type IngressRouteSpecRoutesMiddlewaresArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesMiddlewaresArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteSpecRoutesMiddlewares)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesMiddlewaresArrayOutput) ToIngressRouteSpecRoutesMiddlewaresArrayOutput() IngressRouteSpecRoutesMiddlewaresArrayOutput { + return o +} + +func (o IngressRouteSpecRoutesMiddlewaresArrayOutput) ToIngressRouteSpecRoutesMiddlewaresArrayOutputWithContext(ctx context.Context) IngressRouteSpecRoutesMiddlewaresArrayOutput { + return o +} + +func (o IngressRouteSpecRoutesMiddlewaresArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteSpecRoutesMiddlewares] { + return pulumix.Output[[]IngressRouteSpecRoutesMiddlewares]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecRoutesMiddlewaresArrayOutput) Index(i pulumi.IntInput) IngressRouteSpecRoutesMiddlewaresOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteSpecRoutesMiddlewares { + return vs[0].([]IngressRouteSpecRoutesMiddlewares)[vs[1].(int)] + }).(IngressRouteSpecRoutesMiddlewaresOutput) +} + +// Service defines an upstream HTTP service to proxy traffic to. +type IngressRouteSpecRoutesServices struct { + // Kind defines the kind of the Service. + Kind *string `pulumi:"kind"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace *string `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB *bool `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader *bool `pulumi:"passHostHeader"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port interface{} `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding *IngressRouteSpecRoutesServicesResponseForwarding `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme *string `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport *string `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky *IngressRouteSpecRoutesServicesSticky `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy *string `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight *int `pulumi:"weight"` +} + +// IngressRouteSpecRoutesServicesInput is an input type that accepts IngressRouteSpecRoutesServicesArgs and IngressRouteSpecRoutesServicesOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesServicesInput` via: +// +// IngressRouteSpecRoutesServicesArgs{...} +type IngressRouteSpecRoutesServicesInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesServicesOutput() IngressRouteSpecRoutesServicesOutput + ToIngressRouteSpecRoutesServicesOutputWithContext(context.Context) IngressRouteSpecRoutesServicesOutput +} + +// Service defines an upstream HTTP service to proxy traffic to. +type IngressRouteSpecRoutesServicesArgs struct { + // Kind defines the kind of the Service. + Kind pulumi.StringPtrInput `pulumi:"kind"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB pulumi.BoolPtrInput `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader pulumi.BoolPtrInput `pulumi:"passHostHeader"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port pulumi.Input `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding IngressRouteSpecRoutesServicesResponseForwardingPtrInput `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme pulumi.StringPtrInput `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport pulumi.StringPtrInput `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky IngressRouteSpecRoutesServicesStickyPtrInput `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy pulumi.StringPtrInput `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (IngressRouteSpecRoutesServicesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesServices)(nil)).Elem() +} + +func (i IngressRouteSpecRoutesServicesArgs) ToIngressRouteSpecRoutesServicesOutput() IngressRouteSpecRoutesServicesOutput { + return i.ToIngressRouteSpecRoutesServicesOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesServicesArgs) ToIngressRouteSpecRoutesServicesOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesOutput) +} + +func (i IngressRouteSpecRoutesServicesArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesServices] { + return pulumix.Output[IngressRouteSpecRoutesServices]{ + OutputState: i.ToIngressRouteSpecRoutesServicesOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteSpecRoutesServicesArrayInput is an input type that accepts IngressRouteSpecRoutesServicesArray and IngressRouteSpecRoutesServicesArrayOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesServicesArrayInput` via: +// +// IngressRouteSpecRoutesServicesArray{ IngressRouteSpecRoutesServicesArgs{...} } +type IngressRouteSpecRoutesServicesArrayInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesServicesArrayOutput() IngressRouteSpecRoutesServicesArrayOutput + ToIngressRouteSpecRoutesServicesArrayOutputWithContext(context.Context) IngressRouteSpecRoutesServicesArrayOutput +} + +type IngressRouteSpecRoutesServicesArray []IngressRouteSpecRoutesServicesInput + +func (IngressRouteSpecRoutesServicesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteSpecRoutesServices)(nil)).Elem() +} + +func (i IngressRouteSpecRoutesServicesArray) ToIngressRouteSpecRoutesServicesArrayOutput() IngressRouteSpecRoutesServicesArrayOutput { + return i.ToIngressRouteSpecRoutesServicesArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesServicesArray) ToIngressRouteSpecRoutesServicesArrayOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesArrayOutput) +} + +func (i IngressRouteSpecRoutesServicesArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteSpecRoutesServices] { + return pulumix.Output[[]IngressRouteSpecRoutesServices]{ + OutputState: i.ToIngressRouteSpecRoutesServicesArrayOutputWithContext(ctx).OutputState, + } +} + +// Service defines an upstream HTTP service to proxy traffic to. +type IngressRouteSpecRoutesServicesOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesServicesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesServices)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesServicesOutput) ToIngressRouteSpecRoutesServicesOutput() IngressRouteSpecRoutesServicesOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesOutput) ToIngressRouteSpecRoutesServicesOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesServices] { + return pulumix.Output[IngressRouteSpecRoutesServices]{ + OutputState: o.OutputState, + } +} + +// Kind defines the kind of the Service. +func (o IngressRouteSpecRoutesServicesOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *string { return v.Kind }).(pulumi.StringPtrOutput) +} + +// Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. +func (o IngressRouteSpecRoutesServicesOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. +func (o IngressRouteSpecRoutesServicesOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. +func (o IngressRouteSpecRoutesServicesOutput) NativeLB() pulumi.BoolPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *bool { return v.NativeLB }).(pulumi.BoolPtrOutput) +} + +// PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. +func (o IngressRouteSpecRoutesServicesOutput) PassHostHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *bool { return v.PassHostHeader }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of a Kubernetes Service. This can be a reference to a named port. +func (o IngressRouteSpecRoutesServicesOutput) Port() pulumi.AnyOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) interface{} { return v.Port }).(pulumi.AnyOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +func (o IngressRouteSpecRoutesServicesOutput) ResponseForwarding() IngressRouteSpecRoutesServicesResponseForwardingPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *IngressRouteSpecRoutesServicesResponseForwarding { + return v.ResponseForwarding + }).(IngressRouteSpecRoutesServicesResponseForwardingPtrOutput) +} + +// Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. +func (o IngressRouteSpecRoutesServicesOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *string { return v.Scheme }).(pulumi.StringPtrOutput) +} + +// ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. +func (o IngressRouteSpecRoutesServicesOutput) ServersTransport() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *string { return v.ServersTransport }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +func (o IngressRouteSpecRoutesServicesOutput) Sticky() IngressRouteSpecRoutesServicesStickyPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *IngressRouteSpecRoutesServicesSticky { return v.Sticky }).(IngressRouteSpecRoutesServicesStickyPtrOutput) +} + +// Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. +func (o IngressRouteSpecRoutesServicesOutput) Strategy() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *string { return v.Strategy }).(pulumi.StringPtrOutput) +} + +// Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). +func (o IngressRouteSpecRoutesServicesOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServices) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type IngressRouteSpecRoutesServicesArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesServicesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteSpecRoutesServices)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesServicesArrayOutput) ToIngressRouteSpecRoutesServicesArrayOutput() IngressRouteSpecRoutesServicesArrayOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesArrayOutput) ToIngressRouteSpecRoutesServicesArrayOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesArrayOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteSpecRoutesServices] { + return pulumix.Output[[]IngressRouteSpecRoutesServices]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecRoutesServicesArrayOutput) Index(i pulumi.IntInput) IngressRouteSpecRoutesServicesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteSpecRoutesServices { + return vs[0].([]IngressRouteSpecRoutesServices)[vs[1].(int)] + }).(IngressRouteSpecRoutesServicesOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type IngressRouteSpecRoutesServicesResponseForwarding struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval *string `pulumi:"flushInterval"` +} + +// IngressRouteSpecRoutesServicesResponseForwardingInput is an input type that accepts IngressRouteSpecRoutesServicesResponseForwardingArgs and IngressRouteSpecRoutesServicesResponseForwardingOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesServicesResponseForwardingInput` via: +// +// IngressRouteSpecRoutesServicesResponseForwardingArgs{...} +type IngressRouteSpecRoutesServicesResponseForwardingInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesServicesResponseForwardingOutput() IngressRouteSpecRoutesServicesResponseForwardingOutput + ToIngressRouteSpecRoutesServicesResponseForwardingOutputWithContext(context.Context) IngressRouteSpecRoutesServicesResponseForwardingOutput +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type IngressRouteSpecRoutesServicesResponseForwardingArgs struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval pulumi.StringPtrInput `pulumi:"flushInterval"` +} + +func (IngressRouteSpecRoutesServicesResponseForwardingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesServicesResponseForwarding)(nil)).Elem() +} + +func (i IngressRouteSpecRoutesServicesResponseForwardingArgs) ToIngressRouteSpecRoutesServicesResponseForwardingOutput() IngressRouteSpecRoutesServicesResponseForwardingOutput { + return i.ToIngressRouteSpecRoutesServicesResponseForwardingOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesServicesResponseForwardingArgs) ToIngressRouteSpecRoutesServicesResponseForwardingOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesResponseForwardingOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesResponseForwardingOutput) +} + +func (i IngressRouteSpecRoutesServicesResponseForwardingArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesServicesResponseForwarding] { + return pulumix.Output[IngressRouteSpecRoutesServicesResponseForwarding]{ + OutputState: i.ToIngressRouteSpecRoutesServicesResponseForwardingOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteSpecRoutesServicesResponseForwardingArgs) ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutput() IngressRouteSpecRoutesServicesResponseForwardingPtrOutput { + return i.ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesServicesResponseForwardingArgs) ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesResponseForwardingOutput).ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(ctx) +} + +// IngressRouteSpecRoutesServicesResponseForwardingPtrInput is an input type that accepts IngressRouteSpecRoutesServicesResponseForwardingArgs, IngressRouteSpecRoutesServicesResponseForwardingPtr and IngressRouteSpecRoutesServicesResponseForwardingPtrOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesServicesResponseForwardingPtrInput` via: +// +// IngressRouteSpecRoutesServicesResponseForwardingArgs{...} +// +// or: +// +// nil +type IngressRouteSpecRoutesServicesResponseForwardingPtrInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutput() IngressRouteSpecRoutesServicesResponseForwardingPtrOutput + ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(context.Context) IngressRouteSpecRoutesServicesResponseForwardingPtrOutput +} + +type ingressRouteSpecRoutesServicesResponseForwardingPtrType IngressRouteSpecRoutesServicesResponseForwardingArgs + +func IngressRouteSpecRoutesServicesResponseForwardingPtr(v *IngressRouteSpecRoutesServicesResponseForwardingArgs) IngressRouteSpecRoutesServicesResponseForwardingPtrInput { + return (*ingressRouteSpecRoutesServicesResponseForwardingPtrType)(v) +} + +func (*ingressRouteSpecRoutesServicesResponseForwardingPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecRoutesServicesResponseForwarding)(nil)).Elem() +} + +func (i *ingressRouteSpecRoutesServicesResponseForwardingPtrType) ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutput() IngressRouteSpecRoutesServicesResponseForwardingPtrOutput { + return i.ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteSpecRoutesServicesResponseForwardingPtrType) ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesResponseForwardingPtrOutput) +} + +func (i *ingressRouteSpecRoutesServicesResponseForwardingPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecRoutesServicesResponseForwarding] { + return pulumix.Output[*IngressRouteSpecRoutesServicesResponseForwarding]{ + OutputState: i.ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(ctx).OutputState, + } +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type IngressRouteSpecRoutesServicesResponseForwardingOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesServicesResponseForwardingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesServicesResponseForwarding)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesServicesResponseForwardingOutput) ToIngressRouteSpecRoutesServicesResponseForwardingOutput() IngressRouteSpecRoutesServicesResponseForwardingOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesResponseForwardingOutput) ToIngressRouteSpecRoutesServicesResponseForwardingOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesResponseForwardingOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesResponseForwardingOutput) ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutput() IngressRouteSpecRoutesServicesResponseForwardingPtrOutput { + return o.ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteSpecRoutesServicesResponseForwardingOutput) ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesResponseForwardingPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteSpecRoutesServicesResponseForwarding) *IngressRouteSpecRoutesServicesResponseForwarding { + return &v + }).(IngressRouteSpecRoutesServicesResponseForwardingPtrOutput) +} + +func (o IngressRouteSpecRoutesServicesResponseForwardingOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesServicesResponseForwarding] { + return pulumix.Output[IngressRouteSpecRoutesServicesResponseForwarding]{ + OutputState: o.OutputState, + } +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o IngressRouteSpecRoutesServicesResponseForwardingOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServicesResponseForwarding) *string { return v.FlushInterval }).(pulumi.StringPtrOutput) +} + +type IngressRouteSpecRoutesServicesResponseForwardingPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesServicesResponseForwardingPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecRoutesServicesResponseForwarding)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesServicesResponseForwardingPtrOutput) ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutput() IngressRouteSpecRoutesServicesResponseForwardingPtrOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesResponseForwardingPtrOutput) ToIngressRouteSpecRoutesServicesResponseForwardingPtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesResponseForwardingPtrOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesResponseForwardingPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecRoutesServicesResponseForwarding] { + return pulumix.Output[*IngressRouteSpecRoutesServicesResponseForwarding]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecRoutesServicesResponseForwardingPtrOutput) Elem() IngressRouteSpecRoutesServicesResponseForwardingOutput { + return o.ApplyT(func(v *IngressRouteSpecRoutesServicesResponseForwarding) IngressRouteSpecRoutesServicesResponseForwarding { + if v != nil { + return *v + } + var ret IngressRouteSpecRoutesServicesResponseForwarding + return ret + }).(IngressRouteSpecRoutesServicesResponseForwardingOutput) +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o IngressRouteSpecRoutesServicesResponseForwardingPtrOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecRoutesServicesResponseForwarding) *string { + if v == nil { + return nil + } + return v.FlushInterval + }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type IngressRouteSpecRoutesServicesSticky struct { + // Cookie defines the sticky cookie configuration. + Cookie *IngressRouteSpecRoutesServicesStickyCookie `pulumi:"cookie"` +} + +// IngressRouteSpecRoutesServicesStickyInput is an input type that accepts IngressRouteSpecRoutesServicesStickyArgs and IngressRouteSpecRoutesServicesStickyOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesServicesStickyInput` via: +// +// IngressRouteSpecRoutesServicesStickyArgs{...} +type IngressRouteSpecRoutesServicesStickyInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesServicesStickyOutput() IngressRouteSpecRoutesServicesStickyOutput + ToIngressRouteSpecRoutesServicesStickyOutputWithContext(context.Context) IngressRouteSpecRoutesServicesStickyOutput +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type IngressRouteSpecRoutesServicesStickyArgs struct { + // Cookie defines the sticky cookie configuration. + Cookie IngressRouteSpecRoutesServicesStickyCookiePtrInput `pulumi:"cookie"` +} + +func (IngressRouteSpecRoutesServicesStickyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesServicesSticky)(nil)).Elem() +} + +func (i IngressRouteSpecRoutesServicesStickyArgs) ToIngressRouteSpecRoutesServicesStickyOutput() IngressRouteSpecRoutesServicesStickyOutput { + return i.ToIngressRouteSpecRoutesServicesStickyOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesServicesStickyArgs) ToIngressRouteSpecRoutesServicesStickyOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesStickyOutput) +} + +func (i IngressRouteSpecRoutesServicesStickyArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesServicesSticky] { + return pulumix.Output[IngressRouteSpecRoutesServicesSticky]{ + OutputState: i.ToIngressRouteSpecRoutesServicesStickyOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteSpecRoutesServicesStickyArgs) ToIngressRouteSpecRoutesServicesStickyPtrOutput() IngressRouteSpecRoutesServicesStickyPtrOutput { + return i.ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesServicesStickyArgs) ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesStickyOutput).ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(ctx) +} + +// IngressRouteSpecRoutesServicesStickyPtrInput is an input type that accepts IngressRouteSpecRoutesServicesStickyArgs, IngressRouteSpecRoutesServicesStickyPtr and IngressRouteSpecRoutesServicesStickyPtrOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesServicesStickyPtrInput` via: +// +// IngressRouteSpecRoutesServicesStickyArgs{...} +// +// or: +// +// nil +type IngressRouteSpecRoutesServicesStickyPtrInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesServicesStickyPtrOutput() IngressRouteSpecRoutesServicesStickyPtrOutput + ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(context.Context) IngressRouteSpecRoutesServicesStickyPtrOutput +} + +type ingressRouteSpecRoutesServicesStickyPtrType IngressRouteSpecRoutesServicesStickyArgs + +func IngressRouteSpecRoutesServicesStickyPtr(v *IngressRouteSpecRoutesServicesStickyArgs) IngressRouteSpecRoutesServicesStickyPtrInput { + return (*ingressRouteSpecRoutesServicesStickyPtrType)(v) +} + +func (*ingressRouteSpecRoutesServicesStickyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecRoutesServicesSticky)(nil)).Elem() +} + +func (i *ingressRouteSpecRoutesServicesStickyPtrType) ToIngressRouteSpecRoutesServicesStickyPtrOutput() IngressRouteSpecRoutesServicesStickyPtrOutput { + return i.ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteSpecRoutesServicesStickyPtrType) ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesStickyPtrOutput) +} + +func (i *ingressRouteSpecRoutesServicesStickyPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecRoutesServicesSticky] { + return pulumix.Output[*IngressRouteSpecRoutesServicesSticky]{ + OutputState: i.ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(ctx).OutputState, + } +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type IngressRouteSpecRoutesServicesStickyOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesServicesStickyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesServicesSticky)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesServicesStickyOutput) ToIngressRouteSpecRoutesServicesStickyOutput() IngressRouteSpecRoutesServicesStickyOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesStickyOutput) ToIngressRouteSpecRoutesServicesStickyOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesStickyOutput) ToIngressRouteSpecRoutesServicesStickyPtrOutput() IngressRouteSpecRoutesServicesStickyPtrOutput { + return o.ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteSpecRoutesServicesStickyOutput) ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteSpecRoutesServicesSticky) *IngressRouteSpecRoutesServicesSticky { + return &v + }).(IngressRouteSpecRoutesServicesStickyPtrOutput) +} + +func (o IngressRouteSpecRoutesServicesStickyOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesServicesSticky] { + return pulumix.Output[IngressRouteSpecRoutesServicesSticky]{ + OutputState: o.OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +func (o IngressRouteSpecRoutesServicesStickyOutput) Cookie() IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServicesSticky) *IngressRouteSpecRoutesServicesStickyCookie { + return v.Cookie + }).(IngressRouteSpecRoutesServicesStickyCookiePtrOutput) +} + +type IngressRouteSpecRoutesServicesStickyPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesServicesStickyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecRoutesServicesSticky)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesServicesStickyPtrOutput) ToIngressRouteSpecRoutesServicesStickyPtrOutput() IngressRouteSpecRoutesServicesStickyPtrOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesStickyPtrOutput) ToIngressRouteSpecRoutesServicesStickyPtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyPtrOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesStickyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecRoutesServicesSticky] { + return pulumix.Output[*IngressRouteSpecRoutesServicesSticky]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecRoutesServicesStickyPtrOutput) Elem() IngressRouteSpecRoutesServicesStickyOutput { + return o.ApplyT(func(v *IngressRouteSpecRoutesServicesSticky) IngressRouteSpecRoutesServicesSticky { + if v != nil { + return *v + } + var ret IngressRouteSpecRoutesServicesSticky + return ret + }).(IngressRouteSpecRoutesServicesStickyOutput) +} + +// Cookie defines the sticky cookie configuration. +func (o IngressRouteSpecRoutesServicesStickyPtrOutput) Cookie() IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return o.ApplyT(func(v *IngressRouteSpecRoutesServicesSticky) *IngressRouteSpecRoutesServicesStickyCookie { + if v == nil { + return nil + } + return v.Cookie + }).(IngressRouteSpecRoutesServicesStickyCookiePtrOutput) +} + +// Cookie defines the sticky cookie configuration. +type IngressRouteSpecRoutesServicesStickyCookie struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly *bool `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name *string `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite *string `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure *bool `pulumi:"secure"` +} + +// IngressRouteSpecRoutesServicesStickyCookieInput is an input type that accepts IngressRouteSpecRoutesServicesStickyCookieArgs and IngressRouteSpecRoutesServicesStickyCookieOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesServicesStickyCookieInput` via: +// +// IngressRouteSpecRoutesServicesStickyCookieArgs{...} +type IngressRouteSpecRoutesServicesStickyCookieInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesServicesStickyCookieOutput() IngressRouteSpecRoutesServicesStickyCookieOutput + ToIngressRouteSpecRoutesServicesStickyCookieOutputWithContext(context.Context) IngressRouteSpecRoutesServicesStickyCookieOutput +} + +// Cookie defines the sticky cookie configuration. +type IngressRouteSpecRoutesServicesStickyCookieArgs struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly pulumi.BoolPtrInput `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name pulumi.StringPtrInput `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite pulumi.StringPtrInput `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure pulumi.BoolPtrInput `pulumi:"secure"` +} + +func (IngressRouteSpecRoutesServicesStickyCookieArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesServicesStickyCookie)(nil)).Elem() +} + +func (i IngressRouteSpecRoutesServicesStickyCookieArgs) ToIngressRouteSpecRoutesServicesStickyCookieOutput() IngressRouteSpecRoutesServicesStickyCookieOutput { + return i.ToIngressRouteSpecRoutesServicesStickyCookieOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesServicesStickyCookieArgs) ToIngressRouteSpecRoutesServicesStickyCookieOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyCookieOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesStickyCookieOutput) +} + +func (i IngressRouteSpecRoutesServicesStickyCookieArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesServicesStickyCookie] { + return pulumix.Output[IngressRouteSpecRoutesServicesStickyCookie]{ + OutputState: i.ToIngressRouteSpecRoutesServicesStickyCookieOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteSpecRoutesServicesStickyCookieArgs) ToIngressRouteSpecRoutesServicesStickyCookiePtrOutput() IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return i.ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecRoutesServicesStickyCookieArgs) ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesStickyCookieOutput).ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(ctx) +} + +// IngressRouteSpecRoutesServicesStickyCookiePtrInput is an input type that accepts IngressRouteSpecRoutesServicesStickyCookieArgs, IngressRouteSpecRoutesServicesStickyCookiePtr and IngressRouteSpecRoutesServicesStickyCookiePtrOutput values. +// You can construct a concrete instance of `IngressRouteSpecRoutesServicesStickyCookiePtrInput` via: +// +// IngressRouteSpecRoutesServicesStickyCookieArgs{...} +// +// or: +// +// nil +type IngressRouteSpecRoutesServicesStickyCookiePtrInput interface { + pulumi.Input + + ToIngressRouteSpecRoutesServicesStickyCookiePtrOutput() IngressRouteSpecRoutesServicesStickyCookiePtrOutput + ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(context.Context) IngressRouteSpecRoutesServicesStickyCookiePtrOutput +} + +type ingressRouteSpecRoutesServicesStickyCookiePtrType IngressRouteSpecRoutesServicesStickyCookieArgs + +func IngressRouteSpecRoutesServicesStickyCookiePtr(v *IngressRouteSpecRoutesServicesStickyCookieArgs) IngressRouteSpecRoutesServicesStickyCookiePtrInput { + return (*ingressRouteSpecRoutesServicesStickyCookiePtrType)(v) +} + +func (*ingressRouteSpecRoutesServicesStickyCookiePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecRoutesServicesStickyCookie)(nil)).Elem() +} + +func (i *ingressRouteSpecRoutesServicesStickyCookiePtrType) ToIngressRouteSpecRoutesServicesStickyCookiePtrOutput() IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return i.ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteSpecRoutesServicesStickyCookiePtrType) ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecRoutesServicesStickyCookiePtrOutput) +} + +func (i *ingressRouteSpecRoutesServicesStickyCookiePtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecRoutesServicesStickyCookie] { + return pulumix.Output[*IngressRouteSpecRoutesServicesStickyCookie]{ + OutputState: i.ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(ctx).OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +type IngressRouteSpecRoutesServicesStickyCookieOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesServicesStickyCookieOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecRoutesServicesStickyCookie)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesServicesStickyCookieOutput) ToIngressRouteSpecRoutesServicesStickyCookieOutput() IngressRouteSpecRoutesServicesStickyCookieOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesStickyCookieOutput) ToIngressRouteSpecRoutesServicesStickyCookieOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyCookieOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesStickyCookieOutput) ToIngressRouteSpecRoutesServicesStickyCookiePtrOutput() IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return o.ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(context.Background()) +} + +func (o IngressRouteSpecRoutesServicesStickyCookieOutput) ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteSpecRoutesServicesStickyCookie) *IngressRouteSpecRoutesServicesStickyCookie { + return &v + }).(IngressRouteSpecRoutesServicesStickyCookiePtrOutput) +} + +func (o IngressRouteSpecRoutesServicesStickyCookieOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecRoutesServicesStickyCookie] { + return pulumix.Output[IngressRouteSpecRoutesServicesStickyCookie]{ + OutputState: o.OutputState, + } +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o IngressRouteSpecRoutesServicesStickyCookieOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServicesStickyCookie) *bool { return v.HttpOnly }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o IngressRouteSpecRoutesServicesStickyCookieOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServicesStickyCookie) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o IngressRouteSpecRoutesServicesStickyCookieOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServicesStickyCookie) *string { return v.SameSite }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o IngressRouteSpecRoutesServicesStickyCookieOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v IngressRouteSpecRoutesServicesStickyCookie) *bool { return v.Secure }).(pulumi.BoolPtrOutput) +} + +type IngressRouteSpecRoutesServicesStickyCookiePtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecRoutesServicesStickyCookiePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecRoutesServicesStickyCookie)(nil)).Elem() +} + +func (o IngressRouteSpecRoutesServicesStickyCookiePtrOutput) ToIngressRouteSpecRoutesServicesStickyCookiePtrOutput() IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesStickyCookiePtrOutput) ToIngressRouteSpecRoutesServicesStickyCookiePtrOutputWithContext(ctx context.Context) IngressRouteSpecRoutesServicesStickyCookiePtrOutput { + return o +} + +func (o IngressRouteSpecRoutesServicesStickyCookiePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecRoutesServicesStickyCookie] { + return pulumix.Output[*IngressRouteSpecRoutesServicesStickyCookie]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecRoutesServicesStickyCookiePtrOutput) Elem() IngressRouteSpecRoutesServicesStickyCookieOutput { + return o.ApplyT(func(v *IngressRouteSpecRoutesServicesStickyCookie) IngressRouteSpecRoutesServicesStickyCookie { + if v != nil { + return *v + } + var ret IngressRouteSpecRoutesServicesStickyCookie + return ret + }).(IngressRouteSpecRoutesServicesStickyCookieOutput) +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o IngressRouteSpecRoutesServicesStickyCookiePtrOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecRoutesServicesStickyCookie) *bool { + if v == nil { + return nil + } + return v.HttpOnly + }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o IngressRouteSpecRoutesServicesStickyCookiePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecRoutesServicesStickyCookie) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o IngressRouteSpecRoutesServicesStickyCookiePtrOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecRoutesServicesStickyCookie) *string { + if v == nil { + return nil + } + return v.SameSite + }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o IngressRouteSpecRoutesServicesStickyCookiePtrOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecRoutesServicesStickyCookie) *bool { + if v == nil { + return nil + } + return v.Secure + }).(pulumi.BoolPtrOutput) +} + +// TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls +type IngressRouteSpecTls struct { + // CertResolver defines the name of the certificate resolver to use. Cert resolvers have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers + CertResolver *string `pulumi:"certResolver"` + // Domains defines the list of domains that will be used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains + Domains []IngressRouteSpecTlsDomains `pulumi:"domains"` + // Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options + Options *IngressRouteSpecTlsOptions `pulumi:"options"` + // SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. + SecretName *string `pulumi:"secretName"` + // Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. + Store *IngressRouteSpecTlsStore `pulumi:"store"` +} + +// IngressRouteSpecTlsInput is an input type that accepts IngressRouteSpecTlsArgs and IngressRouteSpecTlsOutput values. +// You can construct a concrete instance of `IngressRouteSpecTlsInput` via: +// +// IngressRouteSpecTlsArgs{...} +type IngressRouteSpecTlsInput interface { + pulumi.Input + + ToIngressRouteSpecTlsOutput() IngressRouteSpecTlsOutput + ToIngressRouteSpecTlsOutputWithContext(context.Context) IngressRouteSpecTlsOutput +} + +// TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls +type IngressRouteSpecTlsArgs struct { + // CertResolver defines the name of the certificate resolver to use. Cert resolvers have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers + CertResolver pulumi.StringPtrInput `pulumi:"certResolver"` + // Domains defines the list of domains that will be used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains + Domains IngressRouteSpecTlsDomainsArrayInput `pulumi:"domains"` + // Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options + Options IngressRouteSpecTlsOptionsPtrInput `pulumi:"options"` + // SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. + SecretName pulumi.StringPtrInput `pulumi:"secretName"` + // Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. + Store IngressRouteSpecTlsStorePtrInput `pulumi:"store"` +} + +func (IngressRouteSpecTlsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecTls)(nil)).Elem() +} + +func (i IngressRouteSpecTlsArgs) ToIngressRouteSpecTlsOutput() IngressRouteSpecTlsOutput { + return i.ToIngressRouteSpecTlsOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecTlsArgs) ToIngressRouteSpecTlsOutputWithContext(ctx context.Context) IngressRouteSpecTlsOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsOutput) +} + +func (i IngressRouteSpecTlsArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecTls] { + return pulumix.Output[IngressRouteSpecTls]{ + OutputState: i.ToIngressRouteSpecTlsOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteSpecTlsArgs) ToIngressRouteSpecTlsPtrOutput() IngressRouteSpecTlsPtrOutput { + return i.ToIngressRouteSpecTlsPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecTlsArgs) ToIngressRouteSpecTlsPtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsOutput).ToIngressRouteSpecTlsPtrOutputWithContext(ctx) +} + +// IngressRouteSpecTlsPtrInput is an input type that accepts IngressRouteSpecTlsArgs, IngressRouteSpecTlsPtr and IngressRouteSpecTlsPtrOutput values. +// You can construct a concrete instance of `IngressRouteSpecTlsPtrInput` via: +// +// IngressRouteSpecTlsArgs{...} +// +// or: +// +// nil +type IngressRouteSpecTlsPtrInput interface { + pulumi.Input + + ToIngressRouteSpecTlsPtrOutput() IngressRouteSpecTlsPtrOutput + ToIngressRouteSpecTlsPtrOutputWithContext(context.Context) IngressRouteSpecTlsPtrOutput +} + +type ingressRouteSpecTlsPtrType IngressRouteSpecTlsArgs + +func IngressRouteSpecTlsPtr(v *IngressRouteSpecTlsArgs) IngressRouteSpecTlsPtrInput { + return (*ingressRouteSpecTlsPtrType)(v) +} + +func (*ingressRouteSpecTlsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecTls)(nil)).Elem() +} + +func (i *ingressRouteSpecTlsPtrType) ToIngressRouteSpecTlsPtrOutput() IngressRouteSpecTlsPtrOutput { + return i.ToIngressRouteSpecTlsPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteSpecTlsPtrType) ToIngressRouteSpecTlsPtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsPtrOutput) +} + +func (i *ingressRouteSpecTlsPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecTls] { + return pulumix.Output[*IngressRouteSpecTls]{ + OutputState: i.ToIngressRouteSpecTlsPtrOutputWithContext(ctx).OutputState, + } +} + +// TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls +type IngressRouteSpecTlsOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecTlsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecTls)(nil)).Elem() +} + +func (o IngressRouteSpecTlsOutput) ToIngressRouteSpecTlsOutput() IngressRouteSpecTlsOutput { + return o +} + +func (o IngressRouteSpecTlsOutput) ToIngressRouteSpecTlsOutputWithContext(ctx context.Context) IngressRouteSpecTlsOutput { + return o +} + +func (o IngressRouteSpecTlsOutput) ToIngressRouteSpecTlsPtrOutput() IngressRouteSpecTlsPtrOutput { + return o.ToIngressRouteSpecTlsPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteSpecTlsOutput) ToIngressRouteSpecTlsPtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteSpecTls) *IngressRouteSpecTls { + return &v + }).(IngressRouteSpecTlsPtrOutput) +} + +func (o IngressRouteSpecTlsOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecTls] { + return pulumix.Output[IngressRouteSpecTls]{ + OutputState: o.OutputState, + } +} + +// CertResolver defines the name of the certificate resolver to use. Cert resolvers have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers +func (o IngressRouteSpecTlsOutput) CertResolver() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecTls) *string { return v.CertResolver }).(pulumi.StringPtrOutput) +} + +// Domains defines the list of domains that will be used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains +func (o IngressRouteSpecTlsOutput) Domains() IngressRouteSpecTlsDomainsArrayOutput { + return o.ApplyT(func(v IngressRouteSpecTls) []IngressRouteSpecTlsDomains { return v.Domains }).(IngressRouteSpecTlsDomainsArrayOutput) +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +func (o IngressRouteSpecTlsOutput) Options() IngressRouteSpecTlsOptionsPtrOutput { + return o.ApplyT(func(v IngressRouteSpecTls) *IngressRouteSpecTlsOptions { return v.Options }).(IngressRouteSpecTlsOptionsPtrOutput) +} + +// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. +func (o IngressRouteSpecTlsOutput) SecretName() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecTls) *string { return v.SecretName }).(pulumi.StringPtrOutput) +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +func (o IngressRouteSpecTlsOutput) Store() IngressRouteSpecTlsStorePtrOutput { + return o.ApplyT(func(v IngressRouteSpecTls) *IngressRouteSpecTlsStore { return v.Store }).(IngressRouteSpecTlsStorePtrOutput) +} + +type IngressRouteSpecTlsPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecTlsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecTls)(nil)).Elem() +} + +func (o IngressRouteSpecTlsPtrOutput) ToIngressRouteSpecTlsPtrOutput() IngressRouteSpecTlsPtrOutput { + return o +} + +func (o IngressRouteSpecTlsPtrOutput) ToIngressRouteSpecTlsPtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsPtrOutput { + return o +} + +func (o IngressRouteSpecTlsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecTls] { + return pulumix.Output[*IngressRouteSpecTls]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecTlsPtrOutput) Elem() IngressRouteSpecTlsOutput { + return o.ApplyT(func(v *IngressRouteSpecTls) IngressRouteSpecTls { + if v != nil { + return *v + } + var ret IngressRouteSpecTls + return ret + }).(IngressRouteSpecTlsOutput) +} + +// CertResolver defines the name of the certificate resolver to use. Cert resolvers have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers +func (o IngressRouteSpecTlsPtrOutput) CertResolver() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecTls) *string { + if v == nil { + return nil + } + return v.CertResolver + }).(pulumi.StringPtrOutput) +} + +// Domains defines the list of domains that will be used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains +func (o IngressRouteSpecTlsPtrOutput) Domains() IngressRouteSpecTlsDomainsArrayOutput { + return o.ApplyT(func(v *IngressRouteSpecTls) []IngressRouteSpecTlsDomains { + if v == nil { + return nil + } + return v.Domains + }).(IngressRouteSpecTlsDomainsArrayOutput) +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +func (o IngressRouteSpecTlsPtrOutput) Options() IngressRouteSpecTlsOptionsPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecTls) *IngressRouteSpecTlsOptions { + if v == nil { + return nil + } + return v.Options + }).(IngressRouteSpecTlsOptionsPtrOutput) +} + +// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. +func (o IngressRouteSpecTlsPtrOutput) SecretName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecTls) *string { + if v == nil { + return nil + } + return v.SecretName + }).(pulumi.StringPtrOutput) +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +func (o IngressRouteSpecTlsPtrOutput) Store() IngressRouteSpecTlsStorePtrOutput { + return o.ApplyT(func(v *IngressRouteSpecTls) *IngressRouteSpecTlsStore { + if v == nil { + return nil + } + return v.Store + }).(IngressRouteSpecTlsStorePtrOutput) +} + +// Domain holds a domain name with SANs. +type IngressRouteSpecTlsDomains struct { + // Main defines the main domain name. + Main *string `pulumi:"main"` + // SANs defines the subject alternative domain names. + Sans []string `pulumi:"sans"` +} + +// IngressRouteSpecTlsDomainsInput is an input type that accepts IngressRouteSpecTlsDomainsArgs and IngressRouteSpecTlsDomainsOutput values. +// You can construct a concrete instance of `IngressRouteSpecTlsDomainsInput` via: +// +// IngressRouteSpecTlsDomainsArgs{...} +type IngressRouteSpecTlsDomainsInput interface { + pulumi.Input + + ToIngressRouteSpecTlsDomainsOutput() IngressRouteSpecTlsDomainsOutput + ToIngressRouteSpecTlsDomainsOutputWithContext(context.Context) IngressRouteSpecTlsDomainsOutput +} + +// Domain holds a domain name with SANs. +type IngressRouteSpecTlsDomainsArgs struct { + // Main defines the main domain name. + Main pulumi.StringPtrInput `pulumi:"main"` + // SANs defines the subject alternative domain names. + Sans pulumi.StringArrayInput `pulumi:"sans"` +} + +func (IngressRouteSpecTlsDomainsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecTlsDomains)(nil)).Elem() +} + +func (i IngressRouteSpecTlsDomainsArgs) ToIngressRouteSpecTlsDomainsOutput() IngressRouteSpecTlsDomainsOutput { + return i.ToIngressRouteSpecTlsDomainsOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecTlsDomainsArgs) ToIngressRouteSpecTlsDomainsOutputWithContext(ctx context.Context) IngressRouteSpecTlsDomainsOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsDomainsOutput) +} + +func (i IngressRouteSpecTlsDomainsArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecTlsDomains] { + return pulumix.Output[IngressRouteSpecTlsDomains]{ + OutputState: i.ToIngressRouteSpecTlsDomainsOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteSpecTlsDomainsArrayInput is an input type that accepts IngressRouteSpecTlsDomainsArray and IngressRouteSpecTlsDomainsArrayOutput values. +// You can construct a concrete instance of `IngressRouteSpecTlsDomainsArrayInput` via: +// +// IngressRouteSpecTlsDomainsArray{ IngressRouteSpecTlsDomainsArgs{...} } +type IngressRouteSpecTlsDomainsArrayInput interface { + pulumi.Input + + ToIngressRouteSpecTlsDomainsArrayOutput() IngressRouteSpecTlsDomainsArrayOutput + ToIngressRouteSpecTlsDomainsArrayOutputWithContext(context.Context) IngressRouteSpecTlsDomainsArrayOutput +} + +type IngressRouteSpecTlsDomainsArray []IngressRouteSpecTlsDomainsInput + +func (IngressRouteSpecTlsDomainsArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteSpecTlsDomains)(nil)).Elem() +} + +func (i IngressRouteSpecTlsDomainsArray) ToIngressRouteSpecTlsDomainsArrayOutput() IngressRouteSpecTlsDomainsArrayOutput { + return i.ToIngressRouteSpecTlsDomainsArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecTlsDomainsArray) ToIngressRouteSpecTlsDomainsArrayOutputWithContext(ctx context.Context) IngressRouteSpecTlsDomainsArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsDomainsArrayOutput) +} + +func (i IngressRouteSpecTlsDomainsArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteSpecTlsDomains] { + return pulumix.Output[[]IngressRouteSpecTlsDomains]{ + OutputState: i.ToIngressRouteSpecTlsDomainsArrayOutputWithContext(ctx).OutputState, + } +} + +// Domain holds a domain name with SANs. +type IngressRouteSpecTlsDomainsOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecTlsDomainsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecTlsDomains)(nil)).Elem() +} + +func (o IngressRouteSpecTlsDomainsOutput) ToIngressRouteSpecTlsDomainsOutput() IngressRouteSpecTlsDomainsOutput { + return o +} + +func (o IngressRouteSpecTlsDomainsOutput) ToIngressRouteSpecTlsDomainsOutputWithContext(ctx context.Context) IngressRouteSpecTlsDomainsOutput { + return o +} + +func (o IngressRouteSpecTlsDomainsOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecTlsDomains] { + return pulumix.Output[IngressRouteSpecTlsDomains]{ + OutputState: o.OutputState, + } +} + +// Main defines the main domain name. +func (o IngressRouteSpecTlsDomainsOutput) Main() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecTlsDomains) *string { return v.Main }).(pulumi.StringPtrOutput) +} + +// SANs defines the subject alternative domain names. +func (o IngressRouteSpecTlsDomainsOutput) Sans() pulumi.StringArrayOutput { + return o.ApplyT(func(v IngressRouteSpecTlsDomains) []string { return v.Sans }).(pulumi.StringArrayOutput) +} + +type IngressRouteSpecTlsDomainsArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecTlsDomainsArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteSpecTlsDomains)(nil)).Elem() +} + +func (o IngressRouteSpecTlsDomainsArrayOutput) ToIngressRouteSpecTlsDomainsArrayOutput() IngressRouteSpecTlsDomainsArrayOutput { + return o +} + +func (o IngressRouteSpecTlsDomainsArrayOutput) ToIngressRouteSpecTlsDomainsArrayOutputWithContext(ctx context.Context) IngressRouteSpecTlsDomainsArrayOutput { + return o +} + +func (o IngressRouteSpecTlsDomainsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteSpecTlsDomains] { + return pulumix.Output[[]IngressRouteSpecTlsDomains]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecTlsDomainsArrayOutput) Index(i pulumi.IntInput) IngressRouteSpecTlsDomainsOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteSpecTlsDomains { + return vs[0].([]IngressRouteSpecTlsDomains)[vs[1].(int)] + }).(IngressRouteSpecTlsDomainsOutput) +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +type IngressRouteSpecTlsOptions struct { + // Name defines the name of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption + Namespace *string `pulumi:"namespace"` +} + +// IngressRouteSpecTlsOptionsInput is an input type that accepts IngressRouteSpecTlsOptionsArgs and IngressRouteSpecTlsOptionsOutput values. +// You can construct a concrete instance of `IngressRouteSpecTlsOptionsInput` via: +// +// IngressRouteSpecTlsOptionsArgs{...} +type IngressRouteSpecTlsOptionsInput interface { + pulumi.Input + + ToIngressRouteSpecTlsOptionsOutput() IngressRouteSpecTlsOptionsOutput + ToIngressRouteSpecTlsOptionsOutputWithContext(context.Context) IngressRouteSpecTlsOptionsOutput +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +type IngressRouteSpecTlsOptionsArgs struct { + // Name defines the name of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption + Namespace pulumi.StringPtrInput `pulumi:"namespace"` +} + +func (IngressRouteSpecTlsOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecTlsOptions)(nil)).Elem() +} + +func (i IngressRouteSpecTlsOptionsArgs) ToIngressRouteSpecTlsOptionsOutput() IngressRouteSpecTlsOptionsOutput { + return i.ToIngressRouteSpecTlsOptionsOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecTlsOptionsArgs) ToIngressRouteSpecTlsOptionsOutputWithContext(ctx context.Context) IngressRouteSpecTlsOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsOptionsOutput) +} + +func (i IngressRouteSpecTlsOptionsArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecTlsOptions] { + return pulumix.Output[IngressRouteSpecTlsOptions]{ + OutputState: i.ToIngressRouteSpecTlsOptionsOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteSpecTlsOptionsArgs) ToIngressRouteSpecTlsOptionsPtrOutput() IngressRouteSpecTlsOptionsPtrOutput { + return i.ToIngressRouteSpecTlsOptionsPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecTlsOptionsArgs) ToIngressRouteSpecTlsOptionsPtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsOptionsOutput).ToIngressRouteSpecTlsOptionsPtrOutputWithContext(ctx) +} + +// IngressRouteSpecTlsOptionsPtrInput is an input type that accepts IngressRouteSpecTlsOptionsArgs, IngressRouteSpecTlsOptionsPtr and IngressRouteSpecTlsOptionsPtrOutput values. +// You can construct a concrete instance of `IngressRouteSpecTlsOptionsPtrInput` via: +// +// IngressRouteSpecTlsOptionsArgs{...} +// +// or: +// +// nil +type IngressRouteSpecTlsOptionsPtrInput interface { + pulumi.Input + + ToIngressRouteSpecTlsOptionsPtrOutput() IngressRouteSpecTlsOptionsPtrOutput + ToIngressRouteSpecTlsOptionsPtrOutputWithContext(context.Context) IngressRouteSpecTlsOptionsPtrOutput +} + +type ingressRouteSpecTlsOptionsPtrType IngressRouteSpecTlsOptionsArgs + +func IngressRouteSpecTlsOptionsPtr(v *IngressRouteSpecTlsOptionsArgs) IngressRouteSpecTlsOptionsPtrInput { + return (*ingressRouteSpecTlsOptionsPtrType)(v) +} + +func (*ingressRouteSpecTlsOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecTlsOptions)(nil)).Elem() +} + +func (i *ingressRouteSpecTlsOptionsPtrType) ToIngressRouteSpecTlsOptionsPtrOutput() IngressRouteSpecTlsOptionsPtrOutput { + return i.ToIngressRouteSpecTlsOptionsPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteSpecTlsOptionsPtrType) ToIngressRouteSpecTlsOptionsPtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsOptionsPtrOutput) +} + +func (i *ingressRouteSpecTlsOptionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecTlsOptions] { + return pulumix.Output[*IngressRouteSpecTlsOptions]{ + OutputState: i.ToIngressRouteSpecTlsOptionsPtrOutputWithContext(ctx).OutputState, + } +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +type IngressRouteSpecTlsOptionsOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecTlsOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecTlsOptions)(nil)).Elem() +} + +func (o IngressRouteSpecTlsOptionsOutput) ToIngressRouteSpecTlsOptionsOutput() IngressRouteSpecTlsOptionsOutput { + return o +} + +func (o IngressRouteSpecTlsOptionsOutput) ToIngressRouteSpecTlsOptionsOutputWithContext(ctx context.Context) IngressRouteSpecTlsOptionsOutput { + return o +} + +func (o IngressRouteSpecTlsOptionsOutput) ToIngressRouteSpecTlsOptionsPtrOutput() IngressRouteSpecTlsOptionsPtrOutput { + return o.ToIngressRouteSpecTlsOptionsPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteSpecTlsOptionsOutput) ToIngressRouteSpecTlsOptionsPtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteSpecTlsOptions) *IngressRouteSpecTlsOptions { + return &v + }).(IngressRouteSpecTlsOptionsPtrOutput) +} + +func (o IngressRouteSpecTlsOptionsOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecTlsOptions] { + return pulumix.Output[IngressRouteSpecTlsOptions]{ + OutputState: o.OutputState, + } +} + +// Name defines the name of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption +func (o IngressRouteSpecTlsOptionsOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteSpecTlsOptions) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption +func (o IngressRouteSpecTlsOptionsOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecTlsOptions) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +type IngressRouteSpecTlsOptionsPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecTlsOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecTlsOptions)(nil)).Elem() +} + +func (o IngressRouteSpecTlsOptionsPtrOutput) ToIngressRouteSpecTlsOptionsPtrOutput() IngressRouteSpecTlsOptionsPtrOutput { + return o +} + +func (o IngressRouteSpecTlsOptionsPtrOutput) ToIngressRouteSpecTlsOptionsPtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsOptionsPtrOutput { + return o +} + +func (o IngressRouteSpecTlsOptionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecTlsOptions] { + return pulumix.Output[*IngressRouteSpecTlsOptions]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecTlsOptionsPtrOutput) Elem() IngressRouteSpecTlsOptionsOutput { + return o.ApplyT(func(v *IngressRouteSpecTlsOptions) IngressRouteSpecTlsOptions { + if v != nil { + return *v + } + var ret IngressRouteSpecTlsOptions + return ret + }).(IngressRouteSpecTlsOptionsOutput) +} + +// Name defines the name of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption +func (o IngressRouteSpecTlsOptionsPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecTlsOptions) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// Namespace defines the namespace of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption +func (o IngressRouteSpecTlsOptionsPtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecTlsOptions) *string { + if v == nil { + return nil + } + return v.Namespace + }).(pulumi.StringPtrOutput) +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +type IngressRouteSpecTlsStore struct { + // Name defines the name of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore + Namespace *string `pulumi:"namespace"` +} + +// IngressRouteSpecTlsStoreInput is an input type that accepts IngressRouteSpecTlsStoreArgs and IngressRouteSpecTlsStoreOutput values. +// You can construct a concrete instance of `IngressRouteSpecTlsStoreInput` via: +// +// IngressRouteSpecTlsStoreArgs{...} +type IngressRouteSpecTlsStoreInput interface { + pulumi.Input + + ToIngressRouteSpecTlsStoreOutput() IngressRouteSpecTlsStoreOutput + ToIngressRouteSpecTlsStoreOutputWithContext(context.Context) IngressRouteSpecTlsStoreOutput +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +type IngressRouteSpecTlsStoreArgs struct { + // Name defines the name of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore + Namespace pulumi.StringPtrInput `pulumi:"namespace"` +} + +func (IngressRouteSpecTlsStoreArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecTlsStore)(nil)).Elem() +} + +func (i IngressRouteSpecTlsStoreArgs) ToIngressRouteSpecTlsStoreOutput() IngressRouteSpecTlsStoreOutput { + return i.ToIngressRouteSpecTlsStoreOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecTlsStoreArgs) ToIngressRouteSpecTlsStoreOutputWithContext(ctx context.Context) IngressRouteSpecTlsStoreOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsStoreOutput) +} + +func (i IngressRouteSpecTlsStoreArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecTlsStore] { + return pulumix.Output[IngressRouteSpecTlsStore]{ + OutputState: i.ToIngressRouteSpecTlsStoreOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteSpecTlsStoreArgs) ToIngressRouteSpecTlsStorePtrOutput() IngressRouteSpecTlsStorePtrOutput { + return i.ToIngressRouteSpecTlsStorePtrOutputWithContext(context.Background()) +} + +func (i IngressRouteSpecTlsStoreArgs) ToIngressRouteSpecTlsStorePtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsStorePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsStoreOutput).ToIngressRouteSpecTlsStorePtrOutputWithContext(ctx) +} + +// IngressRouteSpecTlsStorePtrInput is an input type that accepts IngressRouteSpecTlsStoreArgs, IngressRouteSpecTlsStorePtr and IngressRouteSpecTlsStorePtrOutput values. +// You can construct a concrete instance of `IngressRouteSpecTlsStorePtrInput` via: +// +// IngressRouteSpecTlsStoreArgs{...} +// +// or: +// +// nil +type IngressRouteSpecTlsStorePtrInput interface { + pulumi.Input + + ToIngressRouteSpecTlsStorePtrOutput() IngressRouteSpecTlsStorePtrOutput + ToIngressRouteSpecTlsStorePtrOutputWithContext(context.Context) IngressRouteSpecTlsStorePtrOutput +} + +type ingressRouteSpecTlsStorePtrType IngressRouteSpecTlsStoreArgs + +func IngressRouteSpecTlsStorePtr(v *IngressRouteSpecTlsStoreArgs) IngressRouteSpecTlsStorePtrInput { + return (*ingressRouteSpecTlsStorePtrType)(v) +} + +func (*ingressRouteSpecTlsStorePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecTlsStore)(nil)).Elem() +} + +func (i *ingressRouteSpecTlsStorePtrType) ToIngressRouteSpecTlsStorePtrOutput() IngressRouteSpecTlsStorePtrOutput { + return i.ToIngressRouteSpecTlsStorePtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteSpecTlsStorePtrType) ToIngressRouteSpecTlsStorePtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsStorePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteSpecTlsStorePtrOutput) +} + +func (i *ingressRouteSpecTlsStorePtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecTlsStore] { + return pulumix.Output[*IngressRouteSpecTlsStore]{ + OutputState: i.ToIngressRouteSpecTlsStorePtrOutputWithContext(ctx).OutputState, + } +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +type IngressRouteSpecTlsStoreOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecTlsStoreOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteSpecTlsStore)(nil)).Elem() +} + +func (o IngressRouteSpecTlsStoreOutput) ToIngressRouteSpecTlsStoreOutput() IngressRouteSpecTlsStoreOutput { + return o +} + +func (o IngressRouteSpecTlsStoreOutput) ToIngressRouteSpecTlsStoreOutputWithContext(ctx context.Context) IngressRouteSpecTlsStoreOutput { + return o +} + +func (o IngressRouteSpecTlsStoreOutput) ToIngressRouteSpecTlsStorePtrOutput() IngressRouteSpecTlsStorePtrOutput { + return o.ToIngressRouteSpecTlsStorePtrOutputWithContext(context.Background()) +} + +func (o IngressRouteSpecTlsStoreOutput) ToIngressRouteSpecTlsStorePtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsStorePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteSpecTlsStore) *IngressRouteSpecTlsStore { + return &v + }).(IngressRouteSpecTlsStorePtrOutput) +} + +func (o IngressRouteSpecTlsStoreOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteSpecTlsStore] { + return pulumix.Output[IngressRouteSpecTlsStore]{ + OutputState: o.OutputState, + } +} + +// Name defines the name of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore +func (o IngressRouteSpecTlsStoreOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteSpecTlsStore) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore +func (o IngressRouteSpecTlsStoreOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteSpecTlsStore) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +type IngressRouteSpecTlsStorePtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteSpecTlsStorePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteSpecTlsStore)(nil)).Elem() +} + +func (o IngressRouteSpecTlsStorePtrOutput) ToIngressRouteSpecTlsStorePtrOutput() IngressRouteSpecTlsStorePtrOutput { + return o +} + +func (o IngressRouteSpecTlsStorePtrOutput) ToIngressRouteSpecTlsStorePtrOutputWithContext(ctx context.Context) IngressRouteSpecTlsStorePtrOutput { + return o +} + +func (o IngressRouteSpecTlsStorePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteSpecTlsStore] { + return pulumix.Output[*IngressRouteSpecTlsStore]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteSpecTlsStorePtrOutput) Elem() IngressRouteSpecTlsStoreOutput { + return o.ApplyT(func(v *IngressRouteSpecTlsStore) IngressRouteSpecTlsStore { + if v != nil { + return *v + } + var ret IngressRouteSpecTlsStore + return ret + }).(IngressRouteSpecTlsStoreOutput) +} + +// Name defines the name of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore +func (o IngressRouteSpecTlsStorePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecTlsStore) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// Namespace defines the namespace of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore +func (o IngressRouteSpecTlsStorePtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteSpecTlsStore) *string { + if v == nil { + return nil + } + return v.Namespace + }).(pulumi.StringPtrOutput) +} + +// IngressRouteTCP is the CRD implementation of a Traefik TCP Router. +type IngressRouteTCPType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // IngressRouteTCPSpec defines the desired state of IngressRouteTCP. + Spec IngressRouteTCPSpec `pulumi:"spec"` +} + +type IngressRouteTCPMetadata struct { +} + +// IngressRouteTCPSpec defines the desired state of IngressRouteTCP. +type IngressRouteTCPSpec struct { + // EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. + EntryPoints []string `pulumi:"entryPoints"` + // Routes defines the list of routes. + Routes []IngressRouteTCPSpecRoutes `pulumi:"routes"` + // TLS defines the TLS configuration on a layer 4 / TCP Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1 + Tls *IngressRouteTCPSpecTls `pulumi:"tls"` +} + +// IngressRouteTCPSpecInput is an input type that accepts IngressRouteTCPSpecArgs and IngressRouteTCPSpecOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecInput` via: +// +// IngressRouteTCPSpecArgs{...} +type IngressRouteTCPSpecInput interface { + pulumi.Input + + ToIngressRouteTCPSpecOutput() IngressRouteTCPSpecOutput + ToIngressRouteTCPSpecOutputWithContext(context.Context) IngressRouteTCPSpecOutput +} + +// IngressRouteTCPSpec defines the desired state of IngressRouteTCP. +type IngressRouteTCPSpecArgs struct { + // EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. + EntryPoints pulumi.StringArrayInput `pulumi:"entryPoints"` + // Routes defines the list of routes. + Routes IngressRouteTCPSpecRoutesArrayInput `pulumi:"routes"` + // TLS defines the TLS configuration on a layer 4 / TCP Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1 + Tls IngressRouteTCPSpecTlsPtrInput `pulumi:"tls"` +} + +func (IngressRouteTCPSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpec)(nil)).Elem() +} + +func (i IngressRouteTCPSpecArgs) ToIngressRouteTCPSpecOutput() IngressRouteTCPSpecOutput { + return i.ToIngressRouteTCPSpecOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecArgs) ToIngressRouteTCPSpecOutputWithContext(ctx context.Context) IngressRouteTCPSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecOutput) +} + +func (i IngressRouteTCPSpecArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpec] { + return pulumix.Output[IngressRouteTCPSpec]{ + OutputState: i.ToIngressRouteTCPSpecOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteTCPSpecArgs) ToIngressRouteTCPSpecPtrOutput() IngressRouteTCPSpecPtrOutput { + return i.ToIngressRouteTCPSpecPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecArgs) ToIngressRouteTCPSpecPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecOutput).ToIngressRouteTCPSpecPtrOutputWithContext(ctx) +} + +// IngressRouteTCPSpecPtrInput is an input type that accepts IngressRouteTCPSpecArgs, IngressRouteTCPSpecPtr and IngressRouteTCPSpecPtrOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecPtrInput` via: +// +// IngressRouteTCPSpecArgs{...} +// +// or: +// +// nil +type IngressRouteTCPSpecPtrInput interface { + pulumi.Input + + ToIngressRouteTCPSpecPtrOutput() IngressRouteTCPSpecPtrOutput + ToIngressRouteTCPSpecPtrOutputWithContext(context.Context) IngressRouteTCPSpecPtrOutput +} + +type ingressRouteTCPSpecPtrType IngressRouteTCPSpecArgs + +func IngressRouteTCPSpecPtr(v *IngressRouteTCPSpecArgs) IngressRouteTCPSpecPtrInput { + return (*ingressRouteTCPSpecPtrType)(v) +} + +func (*ingressRouteTCPSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpec)(nil)).Elem() +} + +func (i *ingressRouteTCPSpecPtrType) ToIngressRouteTCPSpecPtrOutput() IngressRouteTCPSpecPtrOutput { + return i.ToIngressRouteTCPSpecPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteTCPSpecPtrType) ToIngressRouteTCPSpecPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecPtrOutput) +} + +func (i *ingressRouteTCPSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpec] { + return pulumix.Output[*IngressRouteTCPSpec]{ + OutputState: i.ToIngressRouteTCPSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteTCPSpec defines the desired state of IngressRouteTCP. +type IngressRouteTCPSpecOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpec)(nil)).Elem() +} + +func (o IngressRouteTCPSpecOutput) ToIngressRouteTCPSpecOutput() IngressRouteTCPSpecOutput { + return o +} + +func (o IngressRouteTCPSpecOutput) ToIngressRouteTCPSpecOutputWithContext(ctx context.Context) IngressRouteTCPSpecOutput { + return o +} + +func (o IngressRouteTCPSpecOutput) ToIngressRouteTCPSpecPtrOutput() IngressRouteTCPSpecPtrOutput { + return o.ToIngressRouteTCPSpecPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteTCPSpecOutput) ToIngressRouteTCPSpecPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteTCPSpec) *IngressRouteTCPSpec { + return &v + }).(IngressRouteTCPSpecPtrOutput) +} + +func (o IngressRouteTCPSpecOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpec] { + return pulumix.Output[IngressRouteTCPSpec]{ + OutputState: o.OutputState, + } +} + +// EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. +func (o IngressRouteTCPSpecOutput) EntryPoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v IngressRouteTCPSpec) []string { return v.EntryPoints }).(pulumi.StringArrayOutput) +} + +// Routes defines the list of routes. +func (o IngressRouteTCPSpecOutput) Routes() IngressRouteTCPSpecRoutesArrayOutput { + return o.ApplyT(func(v IngressRouteTCPSpec) []IngressRouteTCPSpecRoutes { return v.Routes }).(IngressRouteTCPSpecRoutesArrayOutput) +} + +// TLS defines the TLS configuration on a layer 4 / TCP Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1 +func (o IngressRouteTCPSpecOutput) Tls() IngressRouteTCPSpecTlsPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpec) *IngressRouteTCPSpecTls { return v.Tls }).(IngressRouteTCPSpecTlsPtrOutput) +} + +type IngressRouteTCPSpecPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpec)(nil)).Elem() +} + +func (o IngressRouteTCPSpecPtrOutput) ToIngressRouteTCPSpecPtrOutput() IngressRouteTCPSpecPtrOutput { + return o +} + +func (o IngressRouteTCPSpecPtrOutput) ToIngressRouteTCPSpecPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecPtrOutput { + return o +} + +func (o IngressRouteTCPSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpec] { + return pulumix.Output[*IngressRouteTCPSpec]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPSpecPtrOutput) Elem() IngressRouteTCPSpecOutput { + return o.ApplyT(func(v *IngressRouteTCPSpec) IngressRouteTCPSpec { + if v != nil { + return *v + } + var ret IngressRouteTCPSpec + return ret + }).(IngressRouteTCPSpecOutput) +} + +// EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. +func (o IngressRouteTCPSpecPtrOutput) EntryPoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *IngressRouteTCPSpec) []string { + if v == nil { + return nil + } + return v.EntryPoints + }).(pulumi.StringArrayOutput) +} + +// Routes defines the list of routes. +func (o IngressRouteTCPSpecPtrOutput) Routes() IngressRouteTCPSpecRoutesArrayOutput { + return o.ApplyT(func(v *IngressRouteTCPSpec) []IngressRouteTCPSpecRoutes { + if v == nil { + return nil + } + return v.Routes + }).(IngressRouteTCPSpecRoutesArrayOutput) +} + +// TLS defines the TLS configuration on a layer 4 / TCP Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1 +func (o IngressRouteTCPSpecPtrOutput) Tls() IngressRouteTCPSpecTlsPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpec) *IngressRouteTCPSpecTls { + if v == nil { + return nil + } + return v.Tls + }).(IngressRouteTCPSpecTlsPtrOutput) +} + +// RouteTCP holds the TCP route configuration. +type IngressRouteTCPSpecRoutes struct { + // Match defines the router's rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule_1 + Match string `pulumi:"match"` + // Middlewares defines the list of references to MiddlewareTCP resources. + Middlewares []IngressRouteTCPSpecRoutesMiddlewares `pulumi:"middlewares"` + // Priority defines the router's priority. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority_1 + Priority *int `pulumi:"priority"` + // Services defines the list of TCP services. + Services []IngressRouteTCPSpecRoutesServices `pulumi:"services"` +} + +// IngressRouteTCPSpecRoutesInput is an input type that accepts IngressRouteTCPSpecRoutesArgs and IngressRouteTCPSpecRoutesOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecRoutesInput` via: +// +// IngressRouteTCPSpecRoutesArgs{...} +type IngressRouteTCPSpecRoutesInput interface { + pulumi.Input + + ToIngressRouteTCPSpecRoutesOutput() IngressRouteTCPSpecRoutesOutput + ToIngressRouteTCPSpecRoutesOutputWithContext(context.Context) IngressRouteTCPSpecRoutesOutput +} + +// RouteTCP holds the TCP route configuration. +type IngressRouteTCPSpecRoutesArgs struct { + // Match defines the router's rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule_1 + Match pulumi.StringInput `pulumi:"match"` + // Middlewares defines the list of references to MiddlewareTCP resources. + Middlewares IngressRouteTCPSpecRoutesMiddlewaresArrayInput `pulumi:"middlewares"` + // Priority defines the router's priority. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority_1 + Priority pulumi.IntPtrInput `pulumi:"priority"` + // Services defines the list of TCP services. + Services IngressRouteTCPSpecRoutesServicesArrayInput `pulumi:"services"` +} + +func (IngressRouteTCPSpecRoutesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecRoutes)(nil)).Elem() +} + +func (i IngressRouteTCPSpecRoutesArgs) ToIngressRouteTCPSpecRoutesOutput() IngressRouteTCPSpecRoutesOutput { + return i.ToIngressRouteTCPSpecRoutesOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecRoutesArgs) ToIngressRouteTCPSpecRoutesOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecRoutesOutput) +} + +func (i IngressRouteTCPSpecRoutesArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecRoutes] { + return pulumix.Output[IngressRouteTCPSpecRoutes]{ + OutputState: i.ToIngressRouteTCPSpecRoutesOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteTCPSpecRoutesArrayInput is an input type that accepts IngressRouteTCPSpecRoutesArray and IngressRouteTCPSpecRoutesArrayOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecRoutesArrayInput` via: +// +// IngressRouteTCPSpecRoutesArray{ IngressRouteTCPSpecRoutesArgs{...} } +type IngressRouteTCPSpecRoutesArrayInput interface { + pulumi.Input + + ToIngressRouteTCPSpecRoutesArrayOutput() IngressRouteTCPSpecRoutesArrayOutput + ToIngressRouteTCPSpecRoutesArrayOutputWithContext(context.Context) IngressRouteTCPSpecRoutesArrayOutput +} + +type IngressRouteTCPSpecRoutesArray []IngressRouteTCPSpecRoutesInput + +func (IngressRouteTCPSpecRoutesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteTCPSpecRoutes)(nil)).Elem() +} + +func (i IngressRouteTCPSpecRoutesArray) ToIngressRouteTCPSpecRoutesArrayOutput() IngressRouteTCPSpecRoutesArrayOutput { + return i.ToIngressRouteTCPSpecRoutesArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecRoutesArray) ToIngressRouteTCPSpecRoutesArrayOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecRoutesArrayOutput) +} + +func (i IngressRouteTCPSpecRoutesArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteTCPSpecRoutes] { + return pulumix.Output[[]IngressRouteTCPSpecRoutes]{ + OutputState: i.ToIngressRouteTCPSpecRoutesArrayOutputWithContext(ctx).OutputState, + } +} + +// RouteTCP holds the TCP route configuration. +type IngressRouteTCPSpecRoutesOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecRoutesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecRoutes)(nil)).Elem() +} + +func (o IngressRouteTCPSpecRoutesOutput) ToIngressRouteTCPSpecRoutesOutput() IngressRouteTCPSpecRoutesOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesOutput) ToIngressRouteTCPSpecRoutesOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecRoutes] { + return pulumix.Output[IngressRouteTCPSpecRoutes]{ + OutputState: o.OutputState, + } +} + +// Match defines the router's rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule_1 +func (o IngressRouteTCPSpecRoutesOutput) Match() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutes) string { return v.Match }).(pulumi.StringOutput) +} + +// Middlewares defines the list of references to MiddlewareTCP resources. +func (o IngressRouteTCPSpecRoutesOutput) Middlewares() IngressRouteTCPSpecRoutesMiddlewaresArrayOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutes) []IngressRouteTCPSpecRoutesMiddlewares { return v.Middlewares }).(IngressRouteTCPSpecRoutesMiddlewaresArrayOutput) +} + +// Priority defines the router's priority. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority_1 +func (o IngressRouteTCPSpecRoutesOutput) Priority() pulumi.IntPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutes) *int { return v.Priority }).(pulumi.IntPtrOutput) +} + +// Services defines the list of TCP services. +func (o IngressRouteTCPSpecRoutesOutput) Services() IngressRouteTCPSpecRoutesServicesArrayOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutes) []IngressRouteTCPSpecRoutesServices { return v.Services }).(IngressRouteTCPSpecRoutesServicesArrayOutput) +} + +type IngressRouteTCPSpecRoutesArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecRoutesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteTCPSpecRoutes)(nil)).Elem() +} + +func (o IngressRouteTCPSpecRoutesArrayOutput) ToIngressRouteTCPSpecRoutesArrayOutput() IngressRouteTCPSpecRoutesArrayOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesArrayOutput) ToIngressRouteTCPSpecRoutesArrayOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesArrayOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteTCPSpecRoutes] { + return pulumix.Output[[]IngressRouteTCPSpecRoutes]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPSpecRoutesArrayOutput) Index(i pulumi.IntInput) IngressRouteTCPSpecRoutesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteTCPSpecRoutes { + return vs[0].([]IngressRouteTCPSpecRoutes)[vs[1].(int)] + }).(IngressRouteTCPSpecRoutesOutput) +} + +// ObjectReference is a generic reference to a Traefik resource. +type IngressRouteTCPSpecRoutesMiddlewares struct { + // Name defines the name of the referenced Traefik resource. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Traefik resource. + Namespace *string `pulumi:"namespace"` +} + +// IngressRouteTCPSpecRoutesMiddlewaresInput is an input type that accepts IngressRouteTCPSpecRoutesMiddlewaresArgs and IngressRouteTCPSpecRoutesMiddlewaresOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecRoutesMiddlewaresInput` via: +// +// IngressRouteTCPSpecRoutesMiddlewaresArgs{...} +type IngressRouteTCPSpecRoutesMiddlewaresInput interface { + pulumi.Input + + ToIngressRouteTCPSpecRoutesMiddlewaresOutput() IngressRouteTCPSpecRoutesMiddlewaresOutput + ToIngressRouteTCPSpecRoutesMiddlewaresOutputWithContext(context.Context) IngressRouteTCPSpecRoutesMiddlewaresOutput +} + +// ObjectReference is a generic reference to a Traefik resource. +type IngressRouteTCPSpecRoutesMiddlewaresArgs struct { + // Name defines the name of the referenced Traefik resource. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Traefik resource. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` +} + +func (IngressRouteTCPSpecRoutesMiddlewaresArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecRoutesMiddlewares)(nil)).Elem() +} + +func (i IngressRouteTCPSpecRoutesMiddlewaresArgs) ToIngressRouteTCPSpecRoutesMiddlewaresOutput() IngressRouteTCPSpecRoutesMiddlewaresOutput { + return i.ToIngressRouteTCPSpecRoutesMiddlewaresOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecRoutesMiddlewaresArgs) ToIngressRouteTCPSpecRoutesMiddlewaresOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesMiddlewaresOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecRoutesMiddlewaresOutput) +} + +func (i IngressRouteTCPSpecRoutesMiddlewaresArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecRoutesMiddlewares] { + return pulumix.Output[IngressRouteTCPSpecRoutesMiddlewares]{ + OutputState: i.ToIngressRouteTCPSpecRoutesMiddlewaresOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteTCPSpecRoutesMiddlewaresArrayInput is an input type that accepts IngressRouteTCPSpecRoutesMiddlewaresArray and IngressRouteTCPSpecRoutesMiddlewaresArrayOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecRoutesMiddlewaresArrayInput` via: +// +// IngressRouteTCPSpecRoutesMiddlewaresArray{ IngressRouteTCPSpecRoutesMiddlewaresArgs{...} } +type IngressRouteTCPSpecRoutesMiddlewaresArrayInput interface { + pulumi.Input + + ToIngressRouteTCPSpecRoutesMiddlewaresArrayOutput() IngressRouteTCPSpecRoutesMiddlewaresArrayOutput + ToIngressRouteTCPSpecRoutesMiddlewaresArrayOutputWithContext(context.Context) IngressRouteTCPSpecRoutesMiddlewaresArrayOutput +} + +type IngressRouteTCPSpecRoutesMiddlewaresArray []IngressRouteTCPSpecRoutesMiddlewaresInput + +func (IngressRouteTCPSpecRoutesMiddlewaresArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteTCPSpecRoutesMiddlewares)(nil)).Elem() +} + +func (i IngressRouteTCPSpecRoutesMiddlewaresArray) ToIngressRouteTCPSpecRoutesMiddlewaresArrayOutput() IngressRouteTCPSpecRoutesMiddlewaresArrayOutput { + return i.ToIngressRouteTCPSpecRoutesMiddlewaresArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecRoutesMiddlewaresArray) ToIngressRouteTCPSpecRoutesMiddlewaresArrayOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesMiddlewaresArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecRoutesMiddlewaresArrayOutput) +} + +func (i IngressRouteTCPSpecRoutesMiddlewaresArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteTCPSpecRoutesMiddlewares] { + return pulumix.Output[[]IngressRouteTCPSpecRoutesMiddlewares]{ + OutputState: i.ToIngressRouteTCPSpecRoutesMiddlewaresArrayOutputWithContext(ctx).OutputState, + } +} + +// ObjectReference is a generic reference to a Traefik resource. +type IngressRouteTCPSpecRoutesMiddlewaresOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecRoutesMiddlewaresOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecRoutesMiddlewares)(nil)).Elem() +} + +func (o IngressRouteTCPSpecRoutesMiddlewaresOutput) ToIngressRouteTCPSpecRoutesMiddlewaresOutput() IngressRouteTCPSpecRoutesMiddlewaresOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesMiddlewaresOutput) ToIngressRouteTCPSpecRoutesMiddlewaresOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesMiddlewaresOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesMiddlewaresOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecRoutesMiddlewares] { + return pulumix.Output[IngressRouteTCPSpecRoutesMiddlewares]{ + OutputState: o.OutputState, + } +} + +// Name defines the name of the referenced Traefik resource. +func (o IngressRouteTCPSpecRoutesMiddlewaresOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesMiddlewares) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Traefik resource. +func (o IngressRouteTCPSpecRoutesMiddlewaresOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesMiddlewares) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +type IngressRouteTCPSpecRoutesMiddlewaresArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecRoutesMiddlewaresArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteTCPSpecRoutesMiddlewares)(nil)).Elem() +} + +func (o IngressRouteTCPSpecRoutesMiddlewaresArrayOutput) ToIngressRouteTCPSpecRoutesMiddlewaresArrayOutput() IngressRouteTCPSpecRoutesMiddlewaresArrayOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesMiddlewaresArrayOutput) ToIngressRouteTCPSpecRoutesMiddlewaresArrayOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesMiddlewaresArrayOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesMiddlewaresArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteTCPSpecRoutesMiddlewares] { + return pulumix.Output[[]IngressRouteTCPSpecRoutesMiddlewares]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPSpecRoutesMiddlewaresArrayOutput) Index(i pulumi.IntInput) IngressRouteTCPSpecRoutesMiddlewaresOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteTCPSpecRoutesMiddlewares { + return vs[0].([]IngressRouteTCPSpecRoutesMiddlewares)[vs[1].(int)] + }).(IngressRouteTCPSpecRoutesMiddlewaresOutput) +} + +// ServiceTCP defines an upstream TCP service to proxy traffic to. +type IngressRouteTCPSpecRoutesServices struct { + // Name defines the name of the referenced Kubernetes Service. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service. + Namespace *string `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB *bool `pulumi:"nativeLB"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port interface{} `pulumi:"port"` + // ProxyProtocol defines the PROXY protocol configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol + ProxyProtocol *IngressRouteTCPSpecRoutesServicesProxyProtocol `pulumi:"proxyProtocol"` + // TerminationDelay defines the deadline that the proxy sets, after one of its connected peers indicates it has closed the writing capability of its connection, to close the reading capability as well, hence fully terminating the connection. It is a duration in milliseconds, defaulting to 100. A negative value means an infinite deadline (i.e. the reading capability is never closed). + TerminationDelay *int `pulumi:"terminationDelay"` + // Weight defines the weight used when balancing requests between multiple Kubernetes Service. + Weight *int `pulumi:"weight"` +} + +// IngressRouteTCPSpecRoutesServicesInput is an input type that accepts IngressRouteTCPSpecRoutesServicesArgs and IngressRouteTCPSpecRoutesServicesOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecRoutesServicesInput` via: +// +// IngressRouteTCPSpecRoutesServicesArgs{...} +type IngressRouteTCPSpecRoutesServicesInput interface { + pulumi.Input + + ToIngressRouteTCPSpecRoutesServicesOutput() IngressRouteTCPSpecRoutesServicesOutput + ToIngressRouteTCPSpecRoutesServicesOutputWithContext(context.Context) IngressRouteTCPSpecRoutesServicesOutput +} + +// ServiceTCP defines an upstream TCP service to proxy traffic to. +type IngressRouteTCPSpecRoutesServicesArgs struct { + // Name defines the name of the referenced Kubernetes Service. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB pulumi.BoolPtrInput `pulumi:"nativeLB"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port pulumi.Input `pulumi:"port"` + // ProxyProtocol defines the PROXY protocol configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol + ProxyProtocol IngressRouteTCPSpecRoutesServicesProxyProtocolPtrInput `pulumi:"proxyProtocol"` + // TerminationDelay defines the deadline that the proxy sets, after one of its connected peers indicates it has closed the writing capability of its connection, to close the reading capability as well, hence fully terminating the connection. It is a duration in milliseconds, defaulting to 100. A negative value means an infinite deadline (i.e. the reading capability is never closed). + TerminationDelay pulumi.IntPtrInput `pulumi:"terminationDelay"` + // Weight defines the weight used when balancing requests between multiple Kubernetes Service. + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (IngressRouteTCPSpecRoutesServicesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecRoutesServices)(nil)).Elem() +} + +func (i IngressRouteTCPSpecRoutesServicesArgs) ToIngressRouteTCPSpecRoutesServicesOutput() IngressRouteTCPSpecRoutesServicesOutput { + return i.ToIngressRouteTCPSpecRoutesServicesOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecRoutesServicesArgs) ToIngressRouteTCPSpecRoutesServicesOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecRoutesServicesOutput) +} + +func (i IngressRouteTCPSpecRoutesServicesArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecRoutesServices] { + return pulumix.Output[IngressRouteTCPSpecRoutesServices]{ + OutputState: i.ToIngressRouteTCPSpecRoutesServicesOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteTCPSpecRoutesServicesArrayInput is an input type that accepts IngressRouteTCPSpecRoutesServicesArray and IngressRouteTCPSpecRoutesServicesArrayOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecRoutesServicesArrayInput` via: +// +// IngressRouteTCPSpecRoutesServicesArray{ IngressRouteTCPSpecRoutesServicesArgs{...} } +type IngressRouteTCPSpecRoutesServicesArrayInput interface { + pulumi.Input + + ToIngressRouteTCPSpecRoutesServicesArrayOutput() IngressRouteTCPSpecRoutesServicesArrayOutput + ToIngressRouteTCPSpecRoutesServicesArrayOutputWithContext(context.Context) IngressRouteTCPSpecRoutesServicesArrayOutput +} + +type IngressRouteTCPSpecRoutesServicesArray []IngressRouteTCPSpecRoutesServicesInput + +func (IngressRouteTCPSpecRoutesServicesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteTCPSpecRoutesServices)(nil)).Elem() +} + +func (i IngressRouteTCPSpecRoutesServicesArray) ToIngressRouteTCPSpecRoutesServicesArrayOutput() IngressRouteTCPSpecRoutesServicesArrayOutput { + return i.ToIngressRouteTCPSpecRoutesServicesArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecRoutesServicesArray) ToIngressRouteTCPSpecRoutesServicesArrayOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecRoutesServicesArrayOutput) +} + +func (i IngressRouteTCPSpecRoutesServicesArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteTCPSpecRoutesServices] { + return pulumix.Output[[]IngressRouteTCPSpecRoutesServices]{ + OutputState: i.ToIngressRouteTCPSpecRoutesServicesArrayOutputWithContext(ctx).OutputState, + } +} + +// ServiceTCP defines an upstream TCP service to proxy traffic to. +type IngressRouteTCPSpecRoutesServicesOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecRoutesServicesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecRoutesServices)(nil)).Elem() +} + +func (o IngressRouteTCPSpecRoutesServicesOutput) ToIngressRouteTCPSpecRoutesServicesOutput() IngressRouteTCPSpecRoutesServicesOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesServicesOutput) ToIngressRouteTCPSpecRoutesServicesOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesServicesOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecRoutesServices] { + return pulumix.Output[IngressRouteTCPSpecRoutesServices]{ + OutputState: o.OutputState, + } +} + +// Name defines the name of the referenced Kubernetes Service. +func (o IngressRouteTCPSpecRoutesServicesOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesServices) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Kubernetes Service. +func (o IngressRouteTCPSpecRoutesServicesOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesServices) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. +func (o IngressRouteTCPSpecRoutesServicesOutput) NativeLB() pulumi.BoolPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesServices) *bool { return v.NativeLB }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of a Kubernetes Service. This can be a reference to a named port. +func (o IngressRouteTCPSpecRoutesServicesOutput) Port() pulumi.AnyOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesServices) interface{} { return v.Port }).(pulumi.AnyOutput) +} + +// ProxyProtocol defines the PROXY protocol configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol +func (o IngressRouteTCPSpecRoutesServicesOutput) ProxyProtocol() IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesServices) *IngressRouteTCPSpecRoutesServicesProxyProtocol { + return v.ProxyProtocol + }).(IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput) +} + +// TerminationDelay defines the deadline that the proxy sets, after one of its connected peers indicates it has closed the writing capability of its connection, to close the reading capability as well, hence fully terminating the connection. It is a duration in milliseconds, defaulting to 100. A negative value means an infinite deadline (i.e. the reading capability is never closed). +func (o IngressRouteTCPSpecRoutesServicesOutput) TerminationDelay() pulumi.IntPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesServices) *int { return v.TerminationDelay }).(pulumi.IntPtrOutput) +} + +// Weight defines the weight used when balancing requests between multiple Kubernetes Service. +func (o IngressRouteTCPSpecRoutesServicesOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesServices) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type IngressRouteTCPSpecRoutesServicesArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecRoutesServicesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteTCPSpecRoutesServices)(nil)).Elem() +} + +func (o IngressRouteTCPSpecRoutesServicesArrayOutput) ToIngressRouteTCPSpecRoutesServicesArrayOutput() IngressRouteTCPSpecRoutesServicesArrayOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesServicesArrayOutput) ToIngressRouteTCPSpecRoutesServicesArrayOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesArrayOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesServicesArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteTCPSpecRoutesServices] { + return pulumix.Output[[]IngressRouteTCPSpecRoutesServices]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPSpecRoutesServicesArrayOutput) Index(i pulumi.IntInput) IngressRouteTCPSpecRoutesServicesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteTCPSpecRoutesServices { + return vs[0].([]IngressRouteTCPSpecRoutesServices)[vs[1].(int)] + }).(IngressRouteTCPSpecRoutesServicesOutput) +} + +// ProxyProtocol defines the PROXY protocol configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol +type IngressRouteTCPSpecRoutesServicesProxyProtocol struct { + // Version defines the PROXY Protocol version to use. + Version *int `pulumi:"version"` +} + +// IngressRouteTCPSpecRoutesServicesProxyProtocolInput is an input type that accepts IngressRouteTCPSpecRoutesServicesProxyProtocolArgs and IngressRouteTCPSpecRoutesServicesProxyProtocolOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecRoutesServicesProxyProtocolInput` via: +// +// IngressRouteTCPSpecRoutesServicesProxyProtocolArgs{...} +type IngressRouteTCPSpecRoutesServicesProxyProtocolInput interface { + pulumi.Input + + ToIngressRouteTCPSpecRoutesServicesProxyProtocolOutput() IngressRouteTCPSpecRoutesServicesProxyProtocolOutput + ToIngressRouteTCPSpecRoutesServicesProxyProtocolOutputWithContext(context.Context) IngressRouteTCPSpecRoutesServicesProxyProtocolOutput +} + +// ProxyProtocol defines the PROXY protocol configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol +type IngressRouteTCPSpecRoutesServicesProxyProtocolArgs struct { + // Version defines the PROXY Protocol version to use. + Version pulumi.IntPtrInput `pulumi:"version"` +} + +func (IngressRouteTCPSpecRoutesServicesProxyProtocolArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecRoutesServicesProxyProtocol)(nil)).Elem() +} + +func (i IngressRouteTCPSpecRoutesServicesProxyProtocolArgs) ToIngressRouteTCPSpecRoutesServicesProxyProtocolOutput() IngressRouteTCPSpecRoutesServicesProxyProtocolOutput { + return i.ToIngressRouteTCPSpecRoutesServicesProxyProtocolOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecRoutesServicesProxyProtocolArgs) ToIngressRouteTCPSpecRoutesServicesProxyProtocolOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesProxyProtocolOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecRoutesServicesProxyProtocolOutput) +} + +func (i IngressRouteTCPSpecRoutesServicesProxyProtocolArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecRoutesServicesProxyProtocol] { + return pulumix.Output[IngressRouteTCPSpecRoutesServicesProxyProtocol]{ + OutputState: i.ToIngressRouteTCPSpecRoutesServicesProxyProtocolOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteTCPSpecRoutesServicesProxyProtocolArgs) ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput() IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput { + return i.ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecRoutesServicesProxyProtocolArgs) ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecRoutesServicesProxyProtocolOutput).ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(ctx) +} + +// IngressRouteTCPSpecRoutesServicesProxyProtocolPtrInput is an input type that accepts IngressRouteTCPSpecRoutesServicesProxyProtocolArgs, IngressRouteTCPSpecRoutesServicesProxyProtocolPtr and IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecRoutesServicesProxyProtocolPtrInput` via: +// +// IngressRouteTCPSpecRoutesServicesProxyProtocolArgs{...} +// +// or: +// +// nil +type IngressRouteTCPSpecRoutesServicesProxyProtocolPtrInput interface { + pulumi.Input + + ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput() IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput + ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(context.Context) IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput +} + +type ingressRouteTCPSpecRoutesServicesProxyProtocolPtrType IngressRouteTCPSpecRoutesServicesProxyProtocolArgs + +func IngressRouteTCPSpecRoutesServicesProxyProtocolPtr(v *IngressRouteTCPSpecRoutesServicesProxyProtocolArgs) IngressRouteTCPSpecRoutesServicesProxyProtocolPtrInput { + return (*ingressRouteTCPSpecRoutesServicesProxyProtocolPtrType)(v) +} + +func (*ingressRouteTCPSpecRoutesServicesProxyProtocolPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpecRoutesServicesProxyProtocol)(nil)).Elem() +} + +func (i *ingressRouteTCPSpecRoutesServicesProxyProtocolPtrType) ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput() IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput { + return i.ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteTCPSpecRoutesServicesProxyProtocolPtrType) ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput) +} + +func (i *ingressRouteTCPSpecRoutesServicesProxyProtocolPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpecRoutesServicesProxyProtocol] { + return pulumix.Output[*IngressRouteTCPSpecRoutesServicesProxyProtocol]{ + OutputState: i.ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(ctx).OutputState, + } +} + +// ProxyProtocol defines the PROXY protocol configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol +type IngressRouteTCPSpecRoutesServicesProxyProtocolOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecRoutesServicesProxyProtocolOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecRoutesServicesProxyProtocol)(nil)).Elem() +} + +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolOutput) ToIngressRouteTCPSpecRoutesServicesProxyProtocolOutput() IngressRouteTCPSpecRoutesServicesProxyProtocolOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolOutput) ToIngressRouteTCPSpecRoutesServicesProxyProtocolOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesProxyProtocolOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolOutput) ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput() IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput { + return o.ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolOutput) ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteTCPSpecRoutesServicesProxyProtocol) *IngressRouteTCPSpecRoutesServicesProxyProtocol { + return &v + }).(IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput) +} + +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecRoutesServicesProxyProtocol] { + return pulumix.Output[IngressRouteTCPSpecRoutesServicesProxyProtocol]{ + OutputState: o.OutputState, + } +} + +// Version defines the PROXY Protocol version to use. +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolOutput) Version() pulumi.IntPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecRoutesServicesProxyProtocol) *int { return v.Version }).(pulumi.IntPtrOutput) +} + +type IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpecRoutesServicesProxyProtocol)(nil)).Elem() +} + +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput) ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput() IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput) ToIngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput { + return o +} + +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpecRoutesServicesProxyProtocol] { + return pulumix.Output[*IngressRouteTCPSpecRoutesServicesProxyProtocol]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput) Elem() IngressRouteTCPSpecRoutesServicesProxyProtocolOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecRoutesServicesProxyProtocol) IngressRouteTCPSpecRoutesServicesProxyProtocol { + if v != nil { + return *v + } + var ret IngressRouteTCPSpecRoutesServicesProxyProtocol + return ret + }).(IngressRouteTCPSpecRoutesServicesProxyProtocolOutput) +} + +// Version defines the PROXY Protocol version to use. +func (o IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput) Version() pulumi.IntPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecRoutesServicesProxyProtocol) *int { + if v == nil { + return nil + } + return v.Version + }).(pulumi.IntPtrOutput) +} + +// TLS defines the TLS configuration on a layer 4 / TCP Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1 +type IngressRouteTCPSpecTls struct { + // CertResolver defines the name of the certificate resolver to use. Cert resolvers have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers + CertResolver *string `pulumi:"certResolver"` + // Domains defines the list of domains that will be used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains + Domains []IngressRouteTCPSpecTlsDomains `pulumi:"domains"` + // Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options + Options *IngressRouteTCPSpecTlsOptions `pulumi:"options"` + // Passthrough defines whether a TLS router will terminate the TLS connection. + Passthrough *bool `pulumi:"passthrough"` + // SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. + SecretName *string `pulumi:"secretName"` + // Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. + Store *IngressRouteTCPSpecTlsStore `pulumi:"store"` +} + +// IngressRouteTCPSpecTlsInput is an input type that accepts IngressRouteTCPSpecTlsArgs and IngressRouteTCPSpecTlsOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecTlsInput` via: +// +// IngressRouteTCPSpecTlsArgs{...} +type IngressRouteTCPSpecTlsInput interface { + pulumi.Input + + ToIngressRouteTCPSpecTlsOutput() IngressRouteTCPSpecTlsOutput + ToIngressRouteTCPSpecTlsOutputWithContext(context.Context) IngressRouteTCPSpecTlsOutput +} + +// TLS defines the TLS configuration on a layer 4 / TCP Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1 +type IngressRouteTCPSpecTlsArgs struct { + // CertResolver defines the name of the certificate resolver to use. Cert resolvers have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers + CertResolver pulumi.StringPtrInput `pulumi:"certResolver"` + // Domains defines the list of domains that will be used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains + Domains IngressRouteTCPSpecTlsDomainsArrayInput `pulumi:"domains"` + // Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options + Options IngressRouteTCPSpecTlsOptionsPtrInput `pulumi:"options"` + // Passthrough defines whether a TLS router will terminate the TLS connection. + Passthrough pulumi.BoolPtrInput `pulumi:"passthrough"` + // SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. + SecretName pulumi.StringPtrInput `pulumi:"secretName"` + // Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. + Store IngressRouteTCPSpecTlsStorePtrInput `pulumi:"store"` +} + +func (IngressRouteTCPSpecTlsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecTls)(nil)).Elem() +} + +func (i IngressRouteTCPSpecTlsArgs) ToIngressRouteTCPSpecTlsOutput() IngressRouteTCPSpecTlsOutput { + return i.ToIngressRouteTCPSpecTlsOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecTlsArgs) ToIngressRouteTCPSpecTlsOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsOutput) +} + +func (i IngressRouteTCPSpecTlsArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecTls] { + return pulumix.Output[IngressRouteTCPSpecTls]{ + OutputState: i.ToIngressRouteTCPSpecTlsOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteTCPSpecTlsArgs) ToIngressRouteTCPSpecTlsPtrOutput() IngressRouteTCPSpecTlsPtrOutput { + return i.ToIngressRouteTCPSpecTlsPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecTlsArgs) ToIngressRouteTCPSpecTlsPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsOutput).ToIngressRouteTCPSpecTlsPtrOutputWithContext(ctx) +} + +// IngressRouteTCPSpecTlsPtrInput is an input type that accepts IngressRouteTCPSpecTlsArgs, IngressRouteTCPSpecTlsPtr and IngressRouteTCPSpecTlsPtrOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecTlsPtrInput` via: +// +// IngressRouteTCPSpecTlsArgs{...} +// +// or: +// +// nil +type IngressRouteTCPSpecTlsPtrInput interface { + pulumi.Input + + ToIngressRouteTCPSpecTlsPtrOutput() IngressRouteTCPSpecTlsPtrOutput + ToIngressRouteTCPSpecTlsPtrOutputWithContext(context.Context) IngressRouteTCPSpecTlsPtrOutput +} + +type ingressRouteTCPSpecTlsPtrType IngressRouteTCPSpecTlsArgs + +func IngressRouteTCPSpecTlsPtr(v *IngressRouteTCPSpecTlsArgs) IngressRouteTCPSpecTlsPtrInput { + return (*ingressRouteTCPSpecTlsPtrType)(v) +} + +func (*ingressRouteTCPSpecTlsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpecTls)(nil)).Elem() +} + +func (i *ingressRouteTCPSpecTlsPtrType) ToIngressRouteTCPSpecTlsPtrOutput() IngressRouteTCPSpecTlsPtrOutput { + return i.ToIngressRouteTCPSpecTlsPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteTCPSpecTlsPtrType) ToIngressRouteTCPSpecTlsPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsPtrOutput) +} + +func (i *ingressRouteTCPSpecTlsPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpecTls] { + return pulumix.Output[*IngressRouteTCPSpecTls]{ + OutputState: i.ToIngressRouteTCPSpecTlsPtrOutputWithContext(ctx).OutputState, + } +} + +// TLS defines the TLS configuration on a layer 4 / TCP Route. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls_1 +type IngressRouteTCPSpecTlsOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecTlsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecTls)(nil)).Elem() +} + +func (o IngressRouteTCPSpecTlsOutput) ToIngressRouteTCPSpecTlsOutput() IngressRouteTCPSpecTlsOutput { + return o +} + +func (o IngressRouteTCPSpecTlsOutput) ToIngressRouteTCPSpecTlsOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsOutput { + return o +} + +func (o IngressRouteTCPSpecTlsOutput) ToIngressRouteTCPSpecTlsPtrOutput() IngressRouteTCPSpecTlsPtrOutput { + return o.ToIngressRouteTCPSpecTlsPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteTCPSpecTlsOutput) ToIngressRouteTCPSpecTlsPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteTCPSpecTls) *IngressRouteTCPSpecTls { + return &v + }).(IngressRouteTCPSpecTlsPtrOutput) +} + +func (o IngressRouteTCPSpecTlsOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecTls] { + return pulumix.Output[IngressRouteTCPSpecTls]{ + OutputState: o.OutputState, + } +} + +// CertResolver defines the name of the certificate resolver to use. Cert resolvers have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers +func (o IngressRouteTCPSpecTlsOutput) CertResolver() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTls) *string { return v.CertResolver }).(pulumi.StringPtrOutput) +} + +// Domains defines the list of domains that will be used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains +func (o IngressRouteTCPSpecTlsOutput) Domains() IngressRouteTCPSpecTlsDomainsArrayOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTls) []IngressRouteTCPSpecTlsDomains { return v.Domains }).(IngressRouteTCPSpecTlsDomainsArrayOutput) +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +func (o IngressRouteTCPSpecTlsOutput) Options() IngressRouteTCPSpecTlsOptionsPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTls) *IngressRouteTCPSpecTlsOptions { return v.Options }).(IngressRouteTCPSpecTlsOptionsPtrOutput) +} + +// Passthrough defines whether a TLS router will terminate the TLS connection. +func (o IngressRouteTCPSpecTlsOutput) Passthrough() pulumi.BoolPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTls) *bool { return v.Passthrough }).(pulumi.BoolPtrOutput) +} + +// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. +func (o IngressRouteTCPSpecTlsOutput) SecretName() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTls) *string { return v.SecretName }).(pulumi.StringPtrOutput) +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +func (o IngressRouteTCPSpecTlsOutput) Store() IngressRouteTCPSpecTlsStorePtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTls) *IngressRouteTCPSpecTlsStore { return v.Store }).(IngressRouteTCPSpecTlsStorePtrOutput) +} + +type IngressRouteTCPSpecTlsPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecTlsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpecTls)(nil)).Elem() +} + +func (o IngressRouteTCPSpecTlsPtrOutput) ToIngressRouteTCPSpecTlsPtrOutput() IngressRouteTCPSpecTlsPtrOutput { + return o +} + +func (o IngressRouteTCPSpecTlsPtrOutput) ToIngressRouteTCPSpecTlsPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsPtrOutput { + return o +} + +func (o IngressRouteTCPSpecTlsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpecTls] { + return pulumix.Output[*IngressRouteTCPSpecTls]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPSpecTlsPtrOutput) Elem() IngressRouteTCPSpecTlsOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTls) IngressRouteTCPSpecTls { + if v != nil { + return *v + } + var ret IngressRouteTCPSpecTls + return ret + }).(IngressRouteTCPSpecTlsOutput) +} + +// CertResolver defines the name of the certificate resolver to use. Cert resolvers have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers +func (o IngressRouteTCPSpecTlsPtrOutput) CertResolver() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTls) *string { + if v == nil { + return nil + } + return v.CertResolver + }).(pulumi.StringPtrOutput) +} + +// Domains defines the list of domains that will be used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains +func (o IngressRouteTCPSpecTlsPtrOutput) Domains() IngressRouteTCPSpecTlsDomainsArrayOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTls) []IngressRouteTCPSpecTlsDomains { + if v == nil { + return nil + } + return v.Domains + }).(IngressRouteTCPSpecTlsDomainsArrayOutput) +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +func (o IngressRouteTCPSpecTlsPtrOutput) Options() IngressRouteTCPSpecTlsOptionsPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTls) *IngressRouteTCPSpecTlsOptions { + if v == nil { + return nil + } + return v.Options + }).(IngressRouteTCPSpecTlsOptionsPtrOutput) +} + +// Passthrough defines whether a TLS router will terminate the TLS connection. +func (o IngressRouteTCPSpecTlsPtrOutput) Passthrough() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTls) *bool { + if v == nil { + return nil + } + return v.Passthrough + }).(pulumi.BoolPtrOutput) +} + +// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. +func (o IngressRouteTCPSpecTlsPtrOutput) SecretName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTls) *string { + if v == nil { + return nil + } + return v.SecretName + }).(pulumi.StringPtrOutput) +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +func (o IngressRouteTCPSpecTlsPtrOutput) Store() IngressRouteTCPSpecTlsStorePtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTls) *IngressRouteTCPSpecTlsStore { + if v == nil { + return nil + } + return v.Store + }).(IngressRouteTCPSpecTlsStorePtrOutput) +} + +// Domain holds a domain name with SANs. +type IngressRouteTCPSpecTlsDomains struct { + // Main defines the main domain name. + Main *string `pulumi:"main"` + // SANs defines the subject alternative domain names. + Sans []string `pulumi:"sans"` +} + +// IngressRouteTCPSpecTlsDomainsInput is an input type that accepts IngressRouteTCPSpecTlsDomainsArgs and IngressRouteTCPSpecTlsDomainsOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecTlsDomainsInput` via: +// +// IngressRouteTCPSpecTlsDomainsArgs{...} +type IngressRouteTCPSpecTlsDomainsInput interface { + pulumi.Input + + ToIngressRouteTCPSpecTlsDomainsOutput() IngressRouteTCPSpecTlsDomainsOutput + ToIngressRouteTCPSpecTlsDomainsOutputWithContext(context.Context) IngressRouteTCPSpecTlsDomainsOutput +} + +// Domain holds a domain name with SANs. +type IngressRouteTCPSpecTlsDomainsArgs struct { + // Main defines the main domain name. + Main pulumi.StringPtrInput `pulumi:"main"` + // SANs defines the subject alternative domain names. + Sans pulumi.StringArrayInput `pulumi:"sans"` +} + +func (IngressRouteTCPSpecTlsDomainsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecTlsDomains)(nil)).Elem() +} + +func (i IngressRouteTCPSpecTlsDomainsArgs) ToIngressRouteTCPSpecTlsDomainsOutput() IngressRouteTCPSpecTlsDomainsOutput { + return i.ToIngressRouteTCPSpecTlsDomainsOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecTlsDomainsArgs) ToIngressRouteTCPSpecTlsDomainsOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsDomainsOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsDomainsOutput) +} + +func (i IngressRouteTCPSpecTlsDomainsArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecTlsDomains] { + return pulumix.Output[IngressRouteTCPSpecTlsDomains]{ + OutputState: i.ToIngressRouteTCPSpecTlsDomainsOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteTCPSpecTlsDomainsArrayInput is an input type that accepts IngressRouteTCPSpecTlsDomainsArray and IngressRouteTCPSpecTlsDomainsArrayOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecTlsDomainsArrayInput` via: +// +// IngressRouteTCPSpecTlsDomainsArray{ IngressRouteTCPSpecTlsDomainsArgs{...} } +type IngressRouteTCPSpecTlsDomainsArrayInput interface { + pulumi.Input + + ToIngressRouteTCPSpecTlsDomainsArrayOutput() IngressRouteTCPSpecTlsDomainsArrayOutput + ToIngressRouteTCPSpecTlsDomainsArrayOutputWithContext(context.Context) IngressRouteTCPSpecTlsDomainsArrayOutput +} + +type IngressRouteTCPSpecTlsDomainsArray []IngressRouteTCPSpecTlsDomainsInput + +func (IngressRouteTCPSpecTlsDomainsArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteTCPSpecTlsDomains)(nil)).Elem() +} + +func (i IngressRouteTCPSpecTlsDomainsArray) ToIngressRouteTCPSpecTlsDomainsArrayOutput() IngressRouteTCPSpecTlsDomainsArrayOutput { + return i.ToIngressRouteTCPSpecTlsDomainsArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecTlsDomainsArray) ToIngressRouteTCPSpecTlsDomainsArrayOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsDomainsArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsDomainsArrayOutput) +} + +func (i IngressRouteTCPSpecTlsDomainsArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteTCPSpecTlsDomains] { + return pulumix.Output[[]IngressRouteTCPSpecTlsDomains]{ + OutputState: i.ToIngressRouteTCPSpecTlsDomainsArrayOutputWithContext(ctx).OutputState, + } +} + +// Domain holds a domain name with SANs. +type IngressRouteTCPSpecTlsDomainsOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecTlsDomainsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecTlsDomains)(nil)).Elem() +} + +func (o IngressRouteTCPSpecTlsDomainsOutput) ToIngressRouteTCPSpecTlsDomainsOutput() IngressRouteTCPSpecTlsDomainsOutput { + return o +} + +func (o IngressRouteTCPSpecTlsDomainsOutput) ToIngressRouteTCPSpecTlsDomainsOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsDomainsOutput { + return o +} + +func (o IngressRouteTCPSpecTlsDomainsOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecTlsDomains] { + return pulumix.Output[IngressRouteTCPSpecTlsDomains]{ + OutputState: o.OutputState, + } +} + +// Main defines the main domain name. +func (o IngressRouteTCPSpecTlsDomainsOutput) Main() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTlsDomains) *string { return v.Main }).(pulumi.StringPtrOutput) +} + +// SANs defines the subject alternative domain names. +func (o IngressRouteTCPSpecTlsDomainsOutput) Sans() pulumi.StringArrayOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTlsDomains) []string { return v.Sans }).(pulumi.StringArrayOutput) +} + +type IngressRouteTCPSpecTlsDomainsArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecTlsDomainsArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteTCPSpecTlsDomains)(nil)).Elem() +} + +func (o IngressRouteTCPSpecTlsDomainsArrayOutput) ToIngressRouteTCPSpecTlsDomainsArrayOutput() IngressRouteTCPSpecTlsDomainsArrayOutput { + return o +} + +func (o IngressRouteTCPSpecTlsDomainsArrayOutput) ToIngressRouteTCPSpecTlsDomainsArrayOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsDomainsArrayOutput { + return o +} + +func (o IngressRouteTCPSpecTlsDomainsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteTCPSpecTlsDomains] { + return pulumix.Output[[]IngressRouteTCPSpecTlsDomains]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPSpecTlsDomainsArrayOutput) Index(i pulumi.IntInput) IngressRouteTCPSpecTlsDomainsOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteTCPSpecTlsDomains { + return vs[0].([]IngressRouteTCPSpecTlsDomains)[vs[1].(int)] + }).(IngressRouteTCPSpecTlsDomainsOutput) +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +type IngressRouteTCPSpecTlsOptions struct { + // Name defines the name of the referenced Traefik resource. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Traefik resource. + Namespace *string `pulumi:"namespace"` +} + +// IngressRouteTCPSpecTlsOptionsInput is an input type that accepts IngressRouteTCPSpecTlsOptionsArgs and IngressRouteTCPSpecTlsOptionsOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecTlsOptionsInput` via: +// +// IngressRouteTCPSpecTlsOptionsArgs{...} +type IngressRouteTCPSpecTlsOptionsInput interface { + pulumi.Input + + ToIngressRouteTCPSpecTlsOptionsOutput() IngressRouteTCPSpecTlsOptionsOutput + ToIngressRouteTCPSpecTlsOptionsOutputWithContext(context.Context) IngressRouteTCPSpecTlsOptionsOutput +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +type IngressRouteTCPSpecTlsOptionsArgs struct { + // Name defines the name of the referenced Traefik resource. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Traefik resource. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` +} + +func (IngressRouteTCPSpecTlsOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecTlsOptions)(nil)).Elem() +} + +func (i IngressRouteTCPSpecTlsOptionsArgs) ToIngressRouteTCPSpecTlsOptionsOutput() IngressRouteTCPSpecTlsOptionsOutput { + return i.ToIngressRouteTCPSpecTlsOptionsOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecTlsOptionsArgs) ToIngressRouteTCPSpecTlsOptionsOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsOptionsOutput) +} + +func (i IngressRouteTCPSpecTlsOptionsArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecTlsOptions] { + return pulumix.Output[IngressRouteTCPSpecTlsOptions]{ + OutputState: i.ToIngressRouteTCPSpecTlsOptionsOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteTCPSpecTlsOptionsArgs) ToIngressRouteTCPSpecTlsOptionsPtrOutput() IngressRouteTCPSpecTlsOptionsPtrOutput { + return i.ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecTlsOptionsArgs) ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsOptionsOutput).ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(ctx) +} + +// IngressRouteTCPSpecTlsOptionsPtrInput is an input type that accepts IngressRouteTCPSpecTlsOptionsArgs, IngressRouteTCPSpecTlsOptionsPtr and IngressRouteTCPSpecTlsOptionsPtrOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecTlsOptionsPtrInput` via: +// +// IngressRouteTCPSpecTlsOptionsArgs{...} +// +// or: +// +// nil +type IngressRouteTCPSpecTlsOptionsPtrInput interface { + pulumi.Input + + ToIngressRouteTCPSpecTlsOptionsPtrOutput() IngressRouteTCPSpecTlsOptionsPtrOutput + ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(context.Context) IngressRouteTCPSpecTlsOptionsPtrOutput +} + +type ingressRouteTCPSpecTlsOptionsPtrType IngressRouteTCPSpecTlsOptionsArgs + +func IngressRouteTCPSpecTlsOptionsPtr(v *IngressRouteTCPSpecTlsOptionsArgs) IngressRouteTCPSpecTlsOptionsPtrInput { + return (*ingressRouteTCPSpecTlsOptionsPtrType)(v) +} + +func (*ingressRouteTCPSpecTlsOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpecTlsOptions)(nil)).Elem() +} + +func (i *ingressRouteTCPSpecTlsOptionsPtrType) ToIngressRouteTCPSpecTlsOptionsPtrOutput() IngressRouteTCPSpecTlsOptionsPtrOutput { + return i.ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteTCPSpecTlsOptionsPtrType) ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsOptionsPtrOutput) +} + +func (i *ingressRouteTCPSpecTlsOptionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpecTlsOptions] { + return pulumix.Output[*IngressRouteTCPSpecTlsOptions]{ + OutputState: i.ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(ctx).OutputState, + } +} + +// Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +type IngressRouteTCPSpecTlsOptionsOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecTlsOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecTlsOptions)(nil)).Elem() +} + +func (o IngressRouteTCPSpecTlsOptionsOutput) ToIngressRouteTCPSpecTlsOptionsOutput() IngressRouteTCPSpecTlsOptionsOutput { + return o +} + +func (o IngressRouteTCPSpecTlsOptionsOutput) ToIngressRouteTCPSpecTlsOptionsOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsOptionsOutput { + return o +} + +func (o IngressRouteTCPSpecTlsOptionsOutput) ToIngressRouteTCPSpecTlsOptionsPtrOutput() IngressRouteTCPSpecTlsOptionsPtrOutput { + return o.ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteTCPSpecTlsOptionsOutput) ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteTCPSpecTlsOptions) *IngressRouteTCPSpecTlsOptions { + return &v + }).(IngressRouteTCPSpecTlsOptionsPtrOutput) +} + +func (o IngressRouteTCPSpecTlsOptionsOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecTlsOptions] { + return pulumix.Output[IngressRouteTCPSpecTlsOptions]{ + OutputState: o.OutputState, + } +} + +// Name defines the name of the referenced Traefik resource. +func (o IngressRouteTCPSpecTlsOptionsOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTlsOptions) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Traefik resource. +func (o IngressRouteTCPSpecTlsOptionsOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTlsOptions) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +type IngressRouteTCPSpecTlsOptionsPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecTlsOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpecTlsOptions)(nil)).Elem() +} + +func (o IngressRouteTCPSpecTlsOptionsPtrOutput) ToIngressRouteTCPSpecTlsOptionsPtrOutput() IngressRouteTCPSpecTlsOptionsPtrOutput { + return o +} + +func (o IngressRouteTCPSpecTlsOptionsPtrOutput) ToIngressRouteTCPSpecTlsOptionsPtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsOptionsPtrOutput { + return o +} + +func (o IngressRouteTCPSpecTlsOptionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpecTlsOptions] { + return pulumix.Output[*IngressRouteTCPSpecTlsOptions]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPSpecTlsOptionsPtrOutput) Elem() IngressRouteTCPSpecTlsOptionsOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTlsOptions) IngressRouteTCPSpecTlsOptions { + if v != nil { + return *v + } + var ret IngressRouteTCPSpecTlsOptions + return ret + }).(IngressRouteTCPSpecTlsOptionsOutput) +} + +// Name defines the name of the referenced Traefik resource. +func (o IngressRouteTCPSpecTlsOptionsPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTlsOptions) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// Namespace defines the namespace of the referenced Traefik resource. +func (o IngressRouteTCPSpecTlsOptionsPtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTlsOptions) *string { + if v == nil { + return nil + } + return v.Namespace + }).(pulumi.StringPtrOutput) +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +type IngressRouteTCPSpecTlsStore struct { + // Name defines the name of the referenced Traefik resource. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Traefik resource. + Namespace *string `pulumi:"namespace"` +} + +// IngressRouteTCPSpecTlsStoreInput is an input type that accepts IngressRouteTCPSpecTlsStoreArgs and IngressRouteTCPSpecTlsStoreOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecTlsStoreInput` via: +// +// IngressRouteTCPSpecTlsStoreArgs{...} +type IngressRouteTCPSpecTlsStoreInput interface { + pulumi.Input + + ToIngressRouteTCPSpecTlsStoreOutput() IngressRouteTCPSpecTlsStoreOutput + ToIngressRouteTCPSpecTlsStoreOutputWithContext(context.Context) IngressRouteTCPSpecTlsStoreOutput +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +type IngressRouteTCPSpecTlsStoreArgs struct { + // Name defines the name of the referenced Traefik resource. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Traefik resource. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` +} + +func (IngressRouteTCPSpecTlsStoreArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecTlsStore)(nil)).Elem() +} + +func (i IngressRouteTCPSpecTlsStoreArgs) ToIngressRouteTCPSpecTlsStoreOutput() IngressRouteTCPSpecTlsStoreOutput { + return i.ToIngressRouteTCPSpecTlsStoreOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecTlsStoreArgs) ToIngressRouteTCPSpecTlsStoreOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsStoreOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsStoreOutput) +} + +func (i IngressRouteTCPSpecTlsStoreArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecTlsStore] { + return pulumix.Output[IngressRouteTCPSpecTlsStore]{ + OutputState: i.ToIngressRouteTCPSpecTlsStoreOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteTCPSpecTlsStoreArgs) ToIngressRouteTCPSpecTlsStorePtrOutput() IngressRouteTCPSpecTlsStorePtrOutput { + return i.ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(context.Background()) +} + +func (i IngressRouteTCPSpecTlsStoreArgs) ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsStorePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsStoreOutput).ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(ctx) +} + +// IngressRouteTCPSpecTlsStorePtrInput is an input type that accepts IngressRouteTCPSpecTlsStoreArgs, IngressRouteTCPSpecTlsStorePtr and IngressRouteTCPSpecTlsStorePtrOutput values. +// You can construct a concrete instance of `IngressRouteTCPSpecTlsStorePtrInput` via: +// +// IngressRouteTCPSpecTlsStoreArgs{...} +// +// or: +// +// nil +type IngressRouteTCPSpecTlsStorePtrInput interface { + pulumi.Input + + ToIngressRouteTCPSpecTlsStorePtrOutput() IngressRouteTCPSpecTlsStorePtrOutput + ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(context.Context) IngressRouteTCPSpecTlsStorePtrOutput +} + +type ingressRouteTCPSpecTlsStorePtrType IngressRouteTCPSpecTlsStoreArgs + +func IngressRouteTCPSpecTlsStorePtr(v *IngressRouteTCPSpecTlsStoreArgs) IngressRouteTCPSpecTlsStorePtrInput { + return (*ingressRouteTCPSpecTlsStorePtrType)(v) +} + +func (*ingressRouteTCPSpecTlsStorePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpecTlsStore)(nil)).Elem() +} + +func (i *ingressRouteTCPSpecTlsStorePtrType) ToIngressRouteTCPSpecTlsStorePtrOutput() IngressRouteTCPSpecTlsStorePtrOutput { + return i.ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteTCPSpecTlsStorePtrType) ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsStorePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteTCPSpecTlsStorePtrOutput) +} + +func (i *ingressRouteTCPSpecTlsStorePtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpecTlsStore] { + return pulumix.Output[*IngressRouteTCPSpecTlsStore]{ + OutputState: i.ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(ctx).OutputState, + } +} + +// Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used. +type IngressRouteTCPSpecTlsStoreOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecTlsStoreOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteTCPSpecTlsStore)(nil)).Elem() +} + +func (o IngressRouteTCPSpecTlsStoreOutput) ToIngressRouteTCPSpecTlsStoreOutput() IngressRouteTCPSpecTlsStoreOutput { + return o +} + +func (o IngressRouteTCPSpecTlsStoreOutput) ToIngressRouteTCPSpecTlsStoreOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsStoreOutput { + return o +} + +func (o IngressRouteTCPSpecTlsStoreOutput) ToIngressRouteTCPSpecTlsStorePtrOutput() IngressRouteTCPSpecTlsStorePtrOutput { + return o.ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(context.Background()) +} + +func (o IngressRouteTCPSpecTlsStoreOutput) ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsStorePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteTCPSpecTlsStore) *IngressRouteTCPSpecTlsStore { + return &v + }).(IngressRouteTCPSpecTlsStorePtrOutput) +} + +func (o IngressRouteTCPSpecTlsStoreOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteTCPSpecTlsStore] { + return pulumix.Output[IngressRouteTCPSpecTlsStore]{ + OutputState: o.OutputState, + } +} + +// Name defines the name of the referenced Traefik resource. +func (o IngressRouteTCPSpecTlsStoreOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTlsStore) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Traefik resource. +func (o IngressRouteTCPSpecTlsStoreOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteTCPSpecTlsStore) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +type IngressRouteTCPSpecTlsStorePtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteTCPSpecTlsStorePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteTCPSpecTlsStore)(nil)).Elem() +} + +func (o IngressRouteTCPSpecTlsStorePtrOutput) ToIngressRouteTCPSpecTlsStorePtrOutput() IngressRouteTCPSpecTlsStorePtrOutput { + return o +} + +func (o IngressRouteTCPSpecTlsStorePtrOutput) ToIngressRouteTCPSpecTlsStorePtrOutputWithContext(ctx context.Context) IngressRouteTCPSpecTlsStorePtrOutput { + return o +} + +func (o IngressRouteTCPSpecTlsStorePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteTCPSpecTlsStore] { + return pulumix.Output[*IngressRouteTCPSpecTlsStore]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteTCPSpecTlsStorePtrOutput) Elem() IngressRouteTCPSpecTlsStoreOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTlsStore) IngressRouteTCPSpecTlsStore { + if v != nil { + return *v + } + var ret IngressRouteTCPSpecTlsStore + return ret + }).(IngressRouteTCPSpecTlsStoreOutput) +} + +// Name defines the name of the referenced Traefik resource. +func (o IngressRouteTCPSpecTlsStorePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTlsStore) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// Namespace defines the namespace of the referenced Traefik resource. +func (o IngressRouteTCPSpecTlsStorePtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *IngressRouteTCPSpecTlsStore) *string { + if v == nil { + return nil + } + return v.Namespace + }).(pulumi.StringPtrOutput) +} + +// IngressRouteUDP is a CRD implementation of a Traefik UDP Router. +type IngressRouteUDPType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. + Spec IngressRouteUDPSpec `pulumi:"spec"` +} + +type IngressRouteUDPMetadata struct { +} + +// IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. +type IngressRouteUDPSpec struct { + // EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. + EntryPoints []string `pulumi:"entryPoints"` + // Routes defines the list of routes. + Routes []IngressRouteUDPSpecRoutes `pulumi:"routes"` +} + +// IngressRouteUDPSpecInput is an input type that accepts IngressRouteUDPSpecArgs and IngressRouteUDPSpecOutput values. +// You can construct a concrete instance of `IngressRouteUDPSpecInput` via: +// +// IngressRouteUDPSpecArgs{...} +type IngressRouteUDPSpecInput interface { + pulumi.Input + + ToIngressRouteUDPSpecOutput() IngressRouteUDPSpecOutput + ToIngressRouteUDPSpecOutputWithContext(context.Context) IngressRouteUDPSpecOutput +} + +// IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. +type IngressRouteUDPSpecArgs struct { + // EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. + EntryPoints pulumi.StringArrayInput `pulumi:"entryPoints"` + // Routes defines the list of routes. + Routes IngressRouteUDPSpecRoutesArrayInput `pulumi:"routes"` +} + +func (IngressRouteUDPSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteUDPSpec)(nil)).Elem() +} + +func (i IngressRouteUDPSpecArgs) ToIngressRouteUDPSpecOutput() IngressRouteUDPSpecOutput { + return i.ToIngressRouteUDPSpecOutputWithContext(context.Background()) +} + +func (i IngressRouteUDPSpecArgs) ToIngressRouteUDPSpecOutputWithContext(ctx context.Context) IngressRouteUDPSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteUDPSpecOutput) +} + +func (i IngressRouteUDPSpecArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteUDPSpec] { + return pulumix.Output[IngressRouteUDPSpec]{ + OutputState: i.ToIngressRouteUDPSpecOutputWithContext(ctx).OutputState, + } +} + +func (i IngressRouteUDPSpecArgs) ToIngressRouteUDPSpecPtrOutput() IngressRouteUDPSpecPtrOutput { + return i.ToIngressRouteUDPSpecPtrOutputWithContext(context.Background()) +} + +func (i IngressRouteUDPSpecArgs) ToIngressRouteUDPSpecPtrOutputWithContext(ctx context.Context) IngressRouteUDPSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteUDPSpecOutput).ToIngressRouteUDPSpecPtrOutputWithContext(ctx) +} + +// IngressRouteUDPSpecPtrInput is an input type that accepts IngressRouteUDPSpecArgs, IngressRouteUDPSpecPtr and IngressRouteUDPSpecPtrOutput values. +// You can construct a concrete instance of `IngressRouteUDPSpecPtrInput` via: +// +// IngressRouteUDPSpecArgs{...} +// +// or: +// +// nil +type IngressRouteUDPSpecPtrInput interface { + pulumi.Input + + ToIngressRouteUDPSpecPtrOutput() IngressRouteUDPSpecPtrOutput + ToIngressRouteUDPSpecPtrOutputWithContext(context.Context) IngressRouteUDPSpecPtrOutput +} + +type ingressRouteUDPSpecPtrType IngressRouteUDPSpecArgs + +func IngressRouteUDPSpecPtr(v *IngressRouteUDPSpecArgs) IngressRouteUDPSpecPtrInput { + return (*ingressRouteUDPSpecPtrType)(v) +} + +func (*ingressRouteUDPSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteUDPSpec)(nil)).Elem() +} + +func (i *ingressRouteUDPSpecPtrType) ToIngressRouteUDPSpecPtrOutput() IngressRouteUDPSpecPtrOutput { + return i.ToIngressRouteUDPSpecPtrOutputWithContext(context.Background()) +} + +func (i *ingressRouteUDPSpecPtrType) ToIngressRouteUDPSpecPtrOutputWithContext(ctx context.Context) IngressRouteUDPSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteUDPSpecPtrOutput) +} + +func (i *ingressRouteUDPSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteUDPSpec] { + return pulumix.Output[*IngressRouteUDPSpec]{ + OutputState: i.ToIngressRouteUDPSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteUDPSpec defines the desired state of a IngressRouteUDP. +type IngressRouteUDPSpecOutput struct{ *pulumi.OutputState } + +func (IngressRouteUDPSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteUDPSpec)(nil)).Elem() +} + +func (o IngressRouteUDPSpecOutput) ToIngressRouteUDPSpecOutput() IngressRouteUDPSpecOutput { + return o +} + +func (o IngressRouteUDPSpecOutput) ToIngressRouteUDPSpecOutputWithContext(ctx context.Context) IngressRouteUDPSpecOutput { + return o +} + +func (o IngressRouteUDPSpecOutput) ToIngressRouteUDPSpecPtrOutput() IngressRouteUDPSpecPtrOutput { + return o.ToIngressRouteUDPSpecPtrOutputWithContext(context.Background()) +} + +func (o IngressRouteUDPSpecOutput) ToIngressRouteUDPSpecPtrOutputWithContext(ctx context.Context) IngressRouteUDPSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v IngressRouteUDPSpec) *IngressRouteUDPSpec { + return &v + }).(IngressRouteUDPSpecPtrOutput) +} + +func (o IngressRouteUDPSpecOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteUDPSpec] { + return pulumix.Output[IngressRouteUDPSpec]{ + OutputState: o.OutputState, + } +} + +// EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. +func (o IngressRouteUDPSpecOutput) EntryPoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v IngressRouteUDPSpec) []string { return v.EntryPoints }).(pulumi.StringArrayOutput) +} + +// Routes defines the list of routes. +func (o IngressRouteUDPSpecOutput) Routes() IngressRouteUDPSpecRoutesArrayOutput { + return o.ApplyT(func(v IngressRouteUDPSpec) []IngressRouteUDPSpecRoutes { return v.Routes }).(IngressRouteUDPSpecRoutesArrayOutput) +} + +type IngressRouteUDPSpecPtrOutput struct{ *pulumi.OutputState } + +func (IngressRouteUDPSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**IngressRouteUDPSpec)(nil)).Elem() +} + +func (o IngressRouteUDPSpecPtrOutput) ToIngressRouteUDPSpecPtrOutput() IngressRouteUDPSpecPtrOutput { + return o +} + +func (o IngressRouteUDPSpecPtrOutput) ToIngressRouteUDPSpecPtrOutputWithContext(ctx context.Context) IngressRouteUDPSpecPtrOutput { + return o +} + +func (o IngressRouteUDPSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IngressRouteUDPSpec] { + return pulumix.Output[*IngressRouteUDPSpec]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteUDPSpecPtrOutput) Elem() IngressRouteUDPSpecOutput { + return o.ApplyT(func(v *IngressRouteUDPSpec) IngressRouteUDPSpec { + if v != nil { + return *v + } + var ret IngressRouteUDPSpec + return ret + }).(IngressRouteUDPSpecOutput) +} + +// EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all. +func (o IngressRouteUDPSpecPtrOutput) EntryPoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *IngressRouteUDPSpec) []string { + if v == nil { + return nil + } + return v.EntryPoints + }).(pulumi.StringArrayOutput) +} + +// Routes defines the list of routes. +func (o IngressRouteUDPSpecPtrOutput) Routes() IngressRouteUDPSpecRoutesArrayOutput { + return o.ApplyT(func(v *IngressRouteUDPSpec) []IngressRouteUDPSpecRoutes { + if v == nil { + return nil + } + return v.Routes + }).(IngressRouteUDPSpecRoutesArrayOutput) +} + +// RouteUDP holds the UDP route configuration. +type IngressRouteUDPSpecRoutes struct { + // Services defines the list of UDP services. + Services []IngressRouteUDPSpecRoutesServices `pulumi:"services"` +} + +// IngressRouteUDPSpecRoutesInput is an input type that accepts IngressRouteUDPSpecRoutesArgs and IngressRouteUDPSpecRoutesOutput values. +// You can construct a concrete instance of `IngressRouteUDPSpecRoutesInput` via: +// +// IngressRouteUDPSpecRoutesArgs{...} +type IngressRouteUDPSpecRoutesInput interface { + pulumi.Input + + ToIngressRouteUDPSpecRoutesOutput() IngressRouteUDPSpecRoutesOutput + ToIngressRouteUDPSpecRoutesOutputWithContext(context.Context) IngressRouteUDPSpecRoutesOutput +} + +// RouteUDP holds the UDP route configuration. +type IngressRouteUDPSpecRoutesArgs struct { + // Services defines the list of UDP services. + Services IngressRouteUDPSpecRoutesServicesArrayInput `pulumi:"services"` +} + +func (IngressRouteUDPSpecRoutesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteUDPSpecRoutes)(nil)).Elem() +} + +func (i IngressRouteUDPSpecRoutesArgs) ToIngressRouteUDPSpecRoutesOutput() IngressRouteUDPSpecRoutesOutput { + return i.ToIngressRouteUDPSpecRoutesOutputWithContext(context.Background()) +} + +func (i IngressRouteUDPSpecRoutesArgs) ToIngressRouteUDPSpecRoutesOutputWithContext(ctx context.Context) IngressRouteUDPSpecRoutesOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteUDPSpecRoutesOutput) +} + +func (i IngressRouteUDPSpecRoutesArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteUDPSpecRoutes] { + return pulumix.Output[IngressRouteUDPSpecRoutes]{ + OutputState: i.ToIngressRouteUDPSpecRoutesOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteUDPSpecRoutesArrayInput is an input type that accepts IngressRouteUDPSpecRoutesArray and IngressRouteUDPSpecRoutesArrayOutput values. +// You can construct a concrete instance of `IngressRouteUDPSpecRoutesArrayInput` via: +// +// IngressRouteUDPSpecRoutesArray{ IngressRouteUDPSpecRoutesArgs{...} } +type IngressRouteUDPSpecRoutesArrayInput interface { + pulumi.Input + + ToIngressRouteUDPSpecRoutesArrayOutput() IngressRouteUDPSpecRoutesArrayOutput + ToIngressRouteUDPSpecRoutesArrayOutputWithContext(context.Context) IngressRouteUDPSpecRoutesArrayOutput +} + +type IngressRouteUDPSpecRoutesArray []IngressRouteUDPSpecRoutesInput + +func (IngressRouteUDPSpecRoutesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteUDPSpecRoutes)(nil)).Elem() +} + +func (i IngressRouteUDPSpecRoutesArray) ToIngressRouteUDPSpecRoutesArrayOutput() IngressRouteUDPSpecRoutesArrayOutput { + return i.ToIngressRouteUDPSpecRoutesArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteUDPSpecRoutesArray) ToIngressRouteUDPSpecRoutesArrayOutputWithContext(ctx context.Context) IngressRouteUDPSpecRoutesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteUDPSpecRoutesArrayOutput) +} + +func (i IngressRouteUDPSpecRoutesArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteUDPSpecRoutes] { + return pulumix.Output[[]IngressRouteUDPSpecRoutes]{ + OutputState: i.ToIngressRouteUDPSpecRoutesArrayOutputWithContext(ctx).OutputState, + } +} + +// RouteUDP holds the UDP route configuration. +type IngressRouteUDPSpecRoutesOutput struct{ *pulumi.OutputState } + +func (IngressRouteUDPSpecRoutesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteUDPSpecRoutes)(nil)).Elem() +} + +func (o IngressRouteUDPSpecRoutesOutput) ToIngressRouteUDPSpecRoutesOutput() IngressRouteUDPSpecRoutesOutput { + return o +} + +func (o IngressRouteUDPSpecRoutesOutput) ToIngressRouteUDPSpecRoutesOutputWithContext(ctx context.Context) IngressRouteUDPSpecRoutesOutput { + return o +} + +func (o IngressRouteUDPSpecRoutesOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteUDPSpecRoutes] { + return pulumix.Output[IngressRouteUDPSpecRoutes]{ + OutputState: o.OutputState, + } +} + +// Services defines the list of UDP services. +func (o IngressRouteUDPSpecRoutesOutput) Services() IngressRouteUDPSpecRoutesServicesArrayOutput { + return o.ApplyT(func(v IngressRouteUDPSpecRoutes) []IngressRouteUDPSpecRoutesServices { return v.Services }).(IngressRouteUDPSpecRoutesServicesArrayOutput) +} + +type IngressRouteUDPSpecRoutesArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteUDPSpecRoutesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteUDPSpecRoutes)(nil)).Elem() +} + +func (o IngressRouteUDPSpecRoutesArrayOutput) ToIngressRouteUDPSpecRoutesArrayOutput() IngressRouteUDPSpecRoutesArrayOutput { + return o +} + +func (o IngressRouteUDPSpecRoutesArrayOutput) ToIngressRouteUDPSpecRoutesArrayOutputWithContext(ctx context.Context) IngressRouteUDPSpecRoutesArrayOutput { + return o +} + +func (o IngressRouteUDPSpecRoutesArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteUDPSpecRoutes] { + return pulumix.Output[[]IngressRouteUDPSpecRoutes]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteUDPSpecRoutesArrayOutput) Index(i pulumi.IntInput) IngressRouteUDPSpecRoutesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteUDPSpecRoutes { + return vs[0].([]IngressRouteUDPSpecRoutes)[vs[1].(int)] + }).(IngressRouteUDPSpecRoutesOutput) +} + +// ServiceUDP defines an upstream UDP service to proxy traffic to. +type IngressRouteUDPSpecRoutesServices struct { + // Name defines the name of the referenced Kubernetes Service. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service. + Namespace *string `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB *bool `pulumi:"nativeLB"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port interface{} `pulumi:"port"` + // Weight defines the weight used when balancing requests between multiple Kubernetes Service. + Weight *int `pulumi:"weight"` +} + +// IngressRouteUDPSpecRoutesServicesInput is an input type that accepts IngressRouteUDPSpecRoutesServicesArgs and IngressRouteUDPSpecRoutesServicesOutput values. +// You can construct a concrete instance of `IngressRouteUDPSpecRoutesServicesInput` via: +// +// IngressRouteUDPSpecRoutesServicesArgs{...} +type IngressRouteUDPSpecRoutesServicesInput interface { + pulumi.Input + + ToIngressRouteUDPSpecRoutesServicesOutput() IngressRouteUDPSpecRoutesServicesOutput + ToIngressRouteUDPSpecRoutesServicesOutputWithContext(context.Context) IngressRouteUDPSpecRoutesServicesOutput +} + +// ServiceUDP defines an upstream UDP service to proxy traffic to. +type IngressRouteUDPSpecRoutesServicesArgs struct { + // Name defines the name of the referenced Kubernetes Service. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB pulumi.BoolPtrInput `pulumi:"nativeLB"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port pulumi.Input `pulumi:"port"` + // Weight defines the weight used when balancing requests between multiple Kubernetes Service. + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (IngressRouteUDPSpecRoutesServicesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteUDPSpecRoutesServices)(nil)).Elem() +} + +func (i IngressRouteUDPSpecRoutesServicesArgs) ToIngressRouteUDPSpecRoutesServicesOutput() IngressRouteUDPSpecRoutesServicesOutput { + return i.ToIngressRouteUDPSpecRoutesServicesOutputWithContext(context.Background()) +} + +func (i IngressRouteUDPSpecRoutesServicesArgs) ToIngressRouteUDPSpecRoutesServicesOutputWithContext(ctx context.Context) IngressRouteUDPSpecRoutesServicesOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteUDPSpecRoutesServicesOutput) +} + +func (i IngressRouteUDPSpecRoutesServicesArgs) ToOutput(ctx context.Context) pulumix.Output[IngressRouteUDPSpecRoutesServices] { + return pulumix.Output[IngressRouteUDPSpecRoutesServices]{ + OutputState: i.ToIngressRouteUDPSpecRoutesServicesOutputWithContext(ctx).OutputState, + } +} + +// IngressRouteUDPSpecRoutesServicesArrayInput is an input type that accepts IngressRouteUDPSpecRoutesServicesArray and IngressRouteUDPSpecRoutesServicesArrayOutput values. +// You can construct a concrete instance of `IngressRouteUDPSpecRoutesServicesArrayInput` via: +// +// IngressRouteUDPSpecRoutesServicesArray{ IngressRouteUDPSpecRoutesServicesArgs{...} } +type IngressRouteUDPSpecRoutesServicesArrayInput interface { + pulumi.Input + + ToIngressRouteUDPSpecRoutesServicesArrayOutput() IngressRouteUDPSpecRoutesServicesArrayOutput + ToIngressRouteUDPSpecRoutesServicesArrayOutputWithContext(context.Context) IngressRouteUDPSpecRoutesServicesArrayOutput +} + +type IngressRouteUDPSpecRoutesServicesArray []IngressRouteUDPSpecRoutesServicesInput + +func (IngressRouteUDPSpecRoutesServicesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteUDPSpecRoutesServices)(nil)).Elem() +} + +func (i IngressRouteUDPSpecRoutesServicesArray) ToIngressRouteUDPSpecRoutesServicesArrayOutput() IngressRouteUDPSpecRoutesServicesArrayOutput { + return i.ToIngressRouteUDPSpecRoutesServicesArrayOutputWithContext(context.Background()) +} + +func (i IngressRouteUDPSpecRoutesServicesArray) ToIngressRouteUDPSpecRoutesServicesArrayOutputWithContext(ctx context.Context) IngressRouteUDPSpecRoutesServicesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(IngressRouteUDPSpecRoutesServicesArrayOutput) +} + +func (i IngressRouteUDPSpecRoutesServicesArray) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteUDPSpecRoutesServices] { + return pulumix.Output[[]IngressRouteUDPSpecRoutesServices]{ + OutputState: i.ToIngressRouteUDPSpecRoutesServicesArrayOutputWithContext(ctx).OutputState, + } +} + +// ServiceUDP defines an upstream UDP service to proxy traffic to. +type IngressRouteUDPSpecRoutesServicesOutput struct{ *pulumi.OutputState } + +func (IngressRouteUDPSpecRoutesServicesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*IngressRouteUDPSpecRoutesServices)(nil)).Elem() +} + +func (o IngressRouteUDPSpecRoutesServicesOutput) ToIngressRouteUDPSpecRoutesServicesOutput() IngressRouteUDPSpecRoutesServicesOutput { + return o +} + +func (o IngressRouteUDPSpecRoutesServicesOutput) ToIngressRouteUDPSpecRoutesServicesOutputWithContext(ctx context.Context) IngressRouteUDPSpecRoutesServicesOutput { + return o +} + +func (o IngressRouteUDPSpecRoutesServicesOutput) ToOutput(ctx context.Context) pulumix.Output[IngressRouteUDPSpecRoutesServices] { + return pulumix.Output[IngressRouteUDPSpecRoutesServices]{ + OutputState: o.OutputState, + } +} + +// Name defines the name of the referenced Kubernetes Service. +func (o IngressRouteUDPSpecRoutesServicesOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v IngressRouteUDPSpecRoutesServices) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Kubernetes Service. +func (o IngressRouteUDPSpecRoutesServicesOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v IngressRouteUDPSpecRoutesServices) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. +func (o IngressRouteUDPSpecRoutesServicesOutput) NativeLB() pulumi.BoolPtrOutput { + return o.ApplyT(func(v IngressRouteUDPSpecRoutesServices) *bool { return v.NativeLB }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of a Kubernetes Service. This can be a reference to a named port. +func (o IngressRouteUDPSpecRoutesServicesOutput) Port() pulumi.AnyOutput { + return o.ApplyT(func(v IngressRouteUDPSpecRoutesServices) interface{} { return v.Port }).(pulumi.AnyOutput) +} + +// Weight defines the weight used when balancing requests between multiple Kubernetes Service. +func (o IngressRouteUDPSpecRoutesServicesOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v IngressRouteUDPSpecRoutesServices) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type IngressRouteUDPSpecRoutesServicesArrayOutput struct{ *pulumi.OutputState } + +func (IngressRouteUDPSpecRoutesServicesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]IngressRouteUDPSpecRoutesServices)(nil)).Elem() +} + +func (o IngressRouteUDPSpecRoutesServicesArrayOutput) ToIngressRouteUDPSpecRoutesServicesArrayOutput() IngressRouteUDPSpecRoutesServicesArrayOutput { + return o +} + +func (o IngressRouteUDPSpecRoutesServicesArrayOutput) ToIngressRouteUDPSpecRoutesServicesArrayOutputWithContext(ctx context.Context) IngressRouteUDPSpecRoutesServicesArrayOutput { + return o +} + +func (o IngressRouteUDPSpecRoutesServicesArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IngressRouteUDPSpecRoutesServices] { + return pulumix.Output[[]IngressRouteUDPSpecRoutesServices]{ + OutputState: o.OutputState, + } +} + +func (o IngressRouteUDPSpecRoutesServicesArrayOutput) Index(i pulumi.IntInput) IngressRouteUDPSpecRoutesServicesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) IngressRouteUDPSpecRoutesServices { + return vs[0].([]IngressRouteUDPSpecRoutesServices)[vs[1].(int)] + }).(IngressRouteUDPSpecRoutesServicesOutput) +} + +// Middleware is the CRD implementation of a Traefik Middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/overview/ +type MiddlewareType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // MiddlewareSpec defines the desired state of a Middleware. + Spec MiddlewareSpec `pulumi:"spec"` +} + +type MiddlewareMetadata struct { +} + +// MiddlewareSpec defines the desired state of a Middleware. +type MiddlewareSpec struct { + // AddPrefix holds the add prefix middleware configuration. This middleware updates the path of a request before forwarding it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/ + AddPrefix *MiddlewareSpecAddPrefix `pulumi:"addPrefix"` + // BasicAuth holds the basic auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/ + BasicAuth *MiddlewareSpecBasicAuth `pulumi:"basicAuth"` + // Buffering holds the buffering middleware configuration. This middleware retries or limits the size of requests that can be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes + Buffering *MiddlewareSpecBuffering `pulumi:"buffering"` + // Chain holds the configuration of the chain middleware. This middleware enables to define reusable combinations of other pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/ + Chain *MiddlewareSpecChain `pulumi:"chain"` + // CircuitBreaker holds the circuit breaker configuration. + CircuitBreaker *MiddlewareSpecCircuitBreaker `pulumi:"circuitBreaker"` + // Compress holds the compress middleware configuration. This middleware compresses responses before sending them to the client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/ + Compress *MiddlewareSpecCompress `pulumi:"compress"` + // ContentType holds the content-type middleware configuration. This middleware exists to enable the correct behavior until at least the default one can be changed in a future version. + ContentType *MiddlewareSpecContentType `pulumi:"contentType"` + // DigestAuth holds the digest auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/ + DigestAuth *MiddlewareSpecDigestAuth `pulumi:"digestAuth"` + // ErrorPage holds the custom error middleware configuration. This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/ + Errors *MiddlewareSpecErrors `pulumi:"errors"` + // ForwardAuth holds the forward auth middleware configuration. This middleware delegates the request authentication to a Service. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/ + ForwardAuth *MiddlewareSpecForwardAuth `pulumi:"forwardAuth"` + // Headers holds the headers middleware configuration. This middleware manages the requests and responses headers. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders + Headers *MiddlewareSpecHeaders `pulumi:"headers"` + // InFlightReq holds the in-flight request middleware configuration. This middleware limits the number of requests being processed and served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/ + InFlightReq *MiddlewareSpecInFlightReq `pulumi:"inFlightReq"` + // IPWhiteList holds the IP whitelist middleware configuration. This middleware accepts / refuses requests based on the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/ + IpWhiteList *MiddlewareSpecIpWhiteList `pulumi:"ipWhiteList"` + // PassTLSClientCert holds the pass TLS client cert middleware configuration. This middleware adds the selected data from the passed client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/ + PassTLSClientCert *MiddlewareSpecPassTLSClientCert `pulumi:"passTLSClientCert"` + // Plugin defines the middleware plugin configuration. More info: https://doc.traefik.io/traefik/plugins/ + Plugin map[string]map[string]interface{} `pulumi:"plugin"` + // RateLimit holds the rate limit configuration. This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/ + RateLimit *MiddlewareSpecRateLimit `pulumi:"rateLimit"` + // RedirectRegex holds the redirect regex middleware configuration. This middleware redirects a request using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex + RedirectRegex *MiddlewareSpecRedirectRegex `pulumi:"redirectRegex"` + // RedirectScheme holds the redirect scheme middleware configuration. This middleware redirects requests from a scheme/port to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/ + RedirectScheme *MiddlewareSpecRedirectScheme `pulumi:"redirectScheme"` + // ReplacePath holds the replace path middleware configuration. This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/ + ReplacePath *MiddlewareSpecReplacePath `pulumi:"replacePath"` + // ReplacePathRegex holds the replace path regex middleware configuration. This middleware replaces the path of a URL using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/ + ReplacePathRegex *MiddlewareSpecReplacePathRegex `pulumi:"replacePathRegex"` + // Retry holds the retry middleware configuration. This middleware reissues requests a given number of times to a backend server if that server does not reply. As soon as the server answers, the middleware stops retrying, regardless of the response status. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/ + Retry *MiddlewareSpecRetry `pulumi:"retry"` + // StripPrefix holds the strip prefix middleware configuration. This middleware removes the specified prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/ + StripPrefix *MiddlewareSpecStripPrefix `pulumi:"stripPrefix"` + // StripPrefixRegex holds the strip prefix regex middleware configuration. This middleware removes the matching prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/ + StripPrefixRegex *MiddlewareSpecStripPrefixRegex `pulumi:"stripPrefixRegex"` +} + +// MiddlewareSpecInput is an input type that accepts MiddlewareSpecArgs and MiddlewareSpecOutput values. +// You can construct a concrete instance of `MiddlewareSpecInput` via: +// +// MiddlewareSpecArgs{...} +type MiddlewareSpecInput interface { + pulumi.Input + + ToMiddlewareSpecOutput() MiddlewareSpecOutput + ToMiddlewareSpecOutputWithContext(context.Context) MiddlewareSpecOutput +} + +// MiddlewareSpec defines the desired state of a Middleware. +type MiddlewareSpecArgs struct { + // AddPrefix holds the add prefix middleware configuration. This middleware updates the path of a request before forwarding it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/ + AddPrefix MiddlewareSpecAddPrefixPtrInput `pulumi:"addPrefix"` + // BasicAuth holds the basic auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/ + BasicAuth MiddlewareSpecBasicAuthPtrInput `pulumi:"basicAuth"` + // Buffering holds the buffering middleware configuration. This middleware retries or limits the size of requests that can be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes + Buffering MiddlewareSpecBufferingPtrInput `pulumi:"buffering"` + // Chain holds the configuration of the chain middleware. This middleware enables to define reusable combinations of other pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/ + Chain MiddlewareSpecChainPtrInput `pulumi:"chain"` + // CircuitBreaker holds the circuit breaker configuration. + CircuitBreaker MiddlewareSpecCircuitBreakerPtrInput `pulumi:"circuitBreaker"` + // Compress holds the compress middleware configuration. This middleware compresses responses before sending them to the client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/ + Compress MiddlewareSpecCompressPtrInput `pulumi:"compress"` + // ContentType holds the content-type middleware configuration. This middleware exists to enable the correct behavior until at least the default one can be changed in a future version. + ContentType MiddlewareSpecContentTypePtrInput `pulumi:"contentType"` + // DigestAuth holds the digest auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/ + DigestAuth MiddlewareSpecDigestAuthPtrInput `pulumi:"digestAuth"` + // ErrorPage holds the custom error middleware configuration. This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/ + Errors MiddlewareSpecErrorsPtrInput `pulumi:"errors"` + // ForwardAuth holds the forward auth middleware configuration. This middleware delegates the request authentication to a Service. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/ + ForwardAuth MiddlewareSpecForwardAuthPtrInput `pulumi:"forwardAuth"` + // Headers holds the headers middleware configuration. This middleware manages the requests and responses headers. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders + Headers MiddlewareSpecHeadersPtrInput `pulumi:"headers"` + // InFlightReq holds the in-flight request middleware configuration. This middleware limits the number of requests being processed and served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/ + InFlightReq MiddlewareSpecInFlightReqPtrInput `pulumi:"inFlightReq"` + // IPWhiteList holds the IP whitelist middleware configuration. This middleware accepts / refuses requests based on the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/ + IpWhiteList MiddlewareSpecIpWhiteListPtrInput `pulumi:"ipWhiteList"` + // PassTLSClientCert holds the pass TLS client cert middleware configuration. This middleware adds the selected data from the passed client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/ + PassTLSClientCert MiddlewareSpecPassTLSClientCertPtrInput `pulumi:"passTLSClientCert"` + // Plugin defines the middleware plugin configuration. More info: https://doc.traefik.io/traefik/plugins/ + Plugin pulumi.MapMapInput `pulumi:"plugin"` + // RateLimit holds the rate limit configuration. This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/ + RateLimit MiddlewareSpecRateLimitPtrInput `pulumi:"rateLimit"` + // RedirectRegex holds the redirect regex middleware configuration. This middleware redirects a request using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex + RedirectRegex MiddlewareSpecRedirectRegexPtrInput `pulumi:"redirectRegex"` + // RedirectScheme holds the redirect scheme middleware configuration. This middleware redirects requests from a scheme/port to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/ + RedirectScheme MiddlewareSpecRedirectSchemePtrInput `pulumi:"redirectScheme"` + // ReplacePath holds the replace path middleware configuration. This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/ + ReplacePath MiddlewareSpecReplacePathPtrInput `pulumi:"replacePath"` + // ReplacePathRegex holds the replace path regex middleware configuration. This middleware replaces the path of a URL using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/ + ReplacePathRegex MiddlewareSpecReplacePathRegexPtrInput `pulumi:"replacePathRegex"` + // Retry holds the retry middleware configuration. This middleware reissues requests a given number of times to a backend server if that server does not reply. As soon as the server answers, the middleware stops retrying, regardless of the response status. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/ + Retry MiddlewareSpecRetryPtrInput `pulumi:"retry"` + // StripPrefix holds the strip prefix middleware configuration. This middleware removes the specified prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/ + StripPrefix MiddlewareSpecStripPrefixPtrInput `pulumi:"stripPrefix"` + // StripPrefixRegex holds the strip prefix regex middleware configuration. This middleware removes the matching prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/ + StripPrefixRegex MiddlewareSpecStripPrefixRegexPtrInput `pulumi:"stripPrefixRegex"` +} + +func (MiddlewareSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpec)(nil)).Elem() +} + +func (i MiddlewareSpecArgs) ToMiddlewareSpecOutput() MiddlewareSpecOutput { + return i.ToMiddlewareSpecOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecArgs) ToMiddlewareSpecOutputWithContext(ctx context.Context) MiddlewareSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecOutput) +} + +func (i MiddlewareSpecArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpec] { + return pulumix.Output[MiddlewareSpec]{ + OutputState: i.ToMiddlewareSpecOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecArgs) ToMiddlewareSpecPtrOutput() MiddlewareSpecPtrOutput { + return i.ToMiddlewareSpecPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecArgs) ToMiddlewareSpecPtrOutputWithContext(ctx context.Context) MiddlewareSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecOutput).ToMiddlewareSpecPtrOutputWithContext(ctx) +} + +// MiddlewareSpecPtrInput is an input type that accepts MiddlewareSpecArgs, MiddlewareSpecPtr and MiddlewareSpecPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecPtrInput` via: +// +// MiddlewareSpecArgs{...} +// +// or: +// +// nil +type MiddlewareSpecPtrInput interface { + pulumi.Input + + ToMiddlewareSpecPtrOutput() MiddlewareSpecPtrOutput + ToMiddlewareSpecPtrOutputWithContext(context.Context) MiddlewareSpecPtrOutput +} + +type middlewareSpecPtrType MiddlewareSpecArgs + +func MiddlewareSpecPtr(v *MiddlewareSpecArgs) MiddlewareSpecPtrInput { + return (*middlewareSpecPtrType)(v) +} + +func (*middlewareSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpec)(nil)).Elem() +} + +func (i *middlewareSpecPtrType) ToMiddlewareSpecPtrOutput() MiddlewareSpecPtrOutput { + return i.ToMiddlewareSpecPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecPtrType) ToMiddlewareSpecPtrOutputWithContext(ctx context.Context) MiddlewareSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPtrOutput) +} + +func (i *middlewareSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpec] { + return pulumix.Output[*MiddlewareSpec]{ + OutputState: i.ToMiddlewareSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// MiddlewareSpec defines the desired state of a Middleware. +type MiddlewareSpecOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpec)(nil)).Elem() +} + +func (o MiddlewareSpecOutput) ToMiddlewareSpecOutput() MiddlewareSpecOutput { + return o +} + +func (o MiddlewareSpecOutput) ToMiddlewareSpecOutputWithContext(ctx context.Context) MiddlewareSpecOutput { + return o +} + +func (o MiddlewareSpecOutput) ToMiddlewareSpecPtrOutput() MiddlewareSpecPtrOutput { + return o.ToMiddlewareSpecPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecOutput) ToMiddlewareSpecPtrOutputWithContext(ctx context.Context) MiddlewareSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpec) *MiddlewareSpec { + return &v + }).(MiddlewareSpecPtrOutput) +} + +func (o MiddlewareSpecOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpec] { + return pulumix.Output[MiddlewareSpec]{ + OutputState: o.OutputState, + } +} + +// AddPrefix holds the add prefix middleware configuration. This middleware updates the path of a request before forwarding it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/ +func (o MiddlewareSpecOutput) AddPrefix() MiddlewareSpecAddPrefixPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecAddPrefix { return v.AddPrefix }).(MiddlewareSpecAddPrefixPtrOutput) +} + +// BasicAuth holds the basic auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/ +func (o MiddlewareSpecOutput) BasicAuth() MiddlewareSpecBasicAuthPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecBasicAuth { return v.BasicAuth }).(MiddlewareSpecBasicAuthPtrOutput) +} + +// Buffering holds the buffering middleware configuration. This middleware retries or limits the size of requests that can be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes +func (o MiddlewareSpecOutput) Buffering() MiddlewareSpecBufferingPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecBuffering { return v.Buffering }).(MiddlewareSpecBufferingPtrOutput) +} + +// Chain holds the configuration of the chain middleware. This middleware enables to define reusable combinations of other pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/ +func (o MiddlewareSpecOutput) Chain() MiddlewareSpecChainPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecChain { return v.Chain }).(MiddlewareSpecChainPtrOutput) +} + +// CircuitBreaker holds the circuit breaker configuration. +func (o MiddlewareSpecOutput) CircuitBreaker() MiddlewareSpecCircuitBreakerPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecCircuitBreaker { return v.CircuitBreaker }).(MiddlewareSpecCircuitBreakerPtrOutput) +} + +// Compress holds the compress middleware configuration. This middleware compresses responses before sending them to the client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/ +func (o MiddlewareSpecOutput) Compress() MiddlewareSpecCompressPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecCompress { return v.Compress }).(MiddlewareSpecCompressPtrOutput) +} + +// ContentType holds the content-type middleware configuration. This middleware exists to enable the correct behavior until at least the default one can be changed in a future version. +func (o MiddlewareSpecOutput) ContentType() MiddlewareSpecContentTypePtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecContentType { return v.ContentType }).(MiddlewareSpecContentTypePtrOutput) +} + +// DigestAuth holds the digest auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/ +func (o MiddlewareSpecOutput) DigestAuth() MiddlewareSpecDigestAuthPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecDigestAuth { return v.DigestAuth }).(MiddlewareSpecDigestAuthPtrOutput) +} + +// ErrorPage holds the custom error middleware configuration. This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/ +func (o MiddlewareSpecOutput) Errors() MiddlewareSpecErrorsPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecErrors { return v.Errors }).(MiddlewareSpecErrorsPtrOutput) +} + +// ForwardAuth holds the forward auth middleware configuration. This middleware delegates the request authentication to a Service. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/ +func (o MiddlewareSpecOutput) ForwardAuth() MiddlewareSpecForwardAuthPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecForwardAuth { return v.ForwardAuth }).(MiddlewareSpecForwardAuthPtrOutput) +} + +// Headers holds the headers middleware configuration. This middleware manages the requests and responses headers. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders +func (o MiddlewareSpecOutput) Headers() MiddlewareSpecHeadersPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecHeaders { return v.Headers }).(MiddlewareSpecHeadersPtrOutput) +} + +// InFlightReq holds the in-flight request middleware configuration. This middleware limits the number of requests being processed and served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/ +func (o MiddlewareSpecOutput) InFlightReq() MiddlewareSpecInFlightReqPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecInFlightReq { return v.InFlightReq }).(MiddlewareSpecInFlightReqPtrOutput) +} + +// IPWhiteList holds the IP whitelist middleware configuration. This middleware accepts / refuses requests based on the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/ +func (o MiddlewareSpecOutput) IpWhiteList() MiddlewareSpecIpWhiteListPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecIpWhiteList { return v.IpWhiteList }).(MiddlewareSpecIpWhiteListPtrOutput) +} + +// PassTLSClientCert holds the pass TLS client cert middleware configuration. This middleware adds the selected data from the passed client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/ +func (o MiddlewareSpecOutput) PassTLSClientCert() MiddlewareSpecPassTLSClientCertPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecPassTLSClientCert { return v.PassTLSClientCert }).(MiddlewareSpecPassTLSClientCertPtrOutput) +} + +// Plugin defines the middleware plugin configuration. More info: https://doc.traefik.io/traefik/plugins/ +func (o MiddlewareSpecOutput) Plugin() pulumi.MapMapOutput { + return o.ApplyT(func(v MiddlewareSpec) map[string]map[string]interface{} { return v.Plugin }).(pulumi.MapMapOutput) +} + +// RateLimit holds the rate limit configuration. This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/ +func (o MiddlewareSpecOutput) RateLimit() MiddlewareSpecRateLimitPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecRateLimit { return v.RateLimit }).(MiddlewareSpecRateLimitPtrOutput) +} + +// RedirectRegex holds the redirect regex middleware configuration. This middleware redirects a request using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex +func (o MiddlewareSpecOutput) RedirectRegex() MiddlewareSpecRedirectRegexPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecRedirectRegex { return v.RedirectRegex }).(MiddlewareSpecRedirectRegexPtrOutput) +} + +// RedirectScheme holds the redirect scheme middleware configuration. This middleware redirects requests from a scheme/port to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/ +func (o MiddlewareSpecOutput) RedirectScheme() MiddlewareSpecRedirectSchemePtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecRedirectScheme { return v.RedirectScheme }).(MiddlewareSpecRedirectSchemePtrOutput) +} + +// ReplacePath holds the replace path middleware configuration. This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/ +func (o MiddlewareSpecOutput) ReplacePath() MiddlewareSpecReplacePathPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecReplacePath { return v.ReplacePath }).(MiddlewareSpecReplacePathPtrOutput) +} + +// ReplacePathRegex holds the replace path regex middleware configuration. This middleware replaces the path of a URL using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/ +func (o MiddlewareSpecOutput) ReplacePathRegex() MiddlewareSpecReplacePathRegexPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecReplacePathRegex { return v.ReplacePathRegex }).(MiddlewareSpecReplacePathRegexPtrOutput) +} + +// Retry holds the retry middleware configuration. This middleware reissues requests a given number of times to a backend server if that server does not reply. As soon as the server answers, the middleware stops retrying, regardless of the response status. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/ +func (o MiddlewareSpecOutput) Retry() MiddlewareSpecRetryPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecRetry { return v.Retry }).(MiddlewareSpecRetryPtrOutput) +} + +// StripPrefix holds the strip prefix middleware configuration. This middleware removes the specified prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/ +func (o MiddlewareSpecOutput) StripPrefix() MiddlewareSpecStripPrefixPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecStripPrefix { return v.StripPrefix }).(MiddlewareSpecStripPrefixPtrOutput) +} + +// StripPrefixRegex holds the strip prefix regex middleware configuration. This middleware removes the matching prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/ +func (o MiddlewareSpecOutput) StripPrefixRegex() MiddlewareSpecStripPrefixRegexPtrOutput { + return o.ApplyT(func(v MiddlewareSpec) *MiddlewareSpecStripPrefixRegex { return v.StripPrefixRegex }).(MiddlewareSpecStripPrefixRegexPtrOutput) +} + +type MiddlewareSpecPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpec)(nil)).Elem() +} + +func (o MiddlewareSpecPtrOutput) ToMiddlewareSpecPtrOutput() MiddlewareSpecPtrOutput { + return o +} + +func (o MiddlewareSpecPtrOutput) ToMiddlewareSpecPtrOutputWithContext(ctx context.Context) MiddlewareSpecPtrOutput { + return o +} + +func (o MiddlewareSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpec] { + return pulumix.Output[*MiddlewareSpec]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecPtrOutput) Elem() MiddlewareSpecOutput { + return o.ApplyT(func(v *MiddlewareSpec) MiddlewareSpec { + if v != nil { + return *v + } + var ret MiddlewareSpec + return ret + }).(MiddlewareSpecOutput) +} + +// AddPrefix holds the add prefix middleware configuration. This middleware updates the path of a request before forwarding it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/ +func (o MiddlewareSpecPtrOutput) AddPrefix() MiddlewareSpecAddPrefixPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecAddPrefix { + if v == nil { + return nil + } + return v.AddPrefix + }).(MiddlewareSpecAddPrefixPtrOutput) +} + +// BasicAuth holds the basic auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/ +func (o MiddlewareSpecPtrOutput) BasicAuth() MiddlewareSpecBasicAuthPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecBasicAuth { + if v == nil { + return nil + } + return v.BasicAuth + }).(MiddlewareSpecBasicAuthPtrOutput) +} + +// Buffering holds the buffering middleware configuration. This middleware retries or limits the size of requests that can be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes +func (o MiddlewareSpecPtrOutput) Buffering() MiddlewareSpecBufferingPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecBuffering { + if v == nil { + return nil + } + return v.Buffering + }).(MiddlewareSpecBufferingPtrOutput) +} + +// Chain holds the configuration of the chain middleware. This middleware enables to define reusable combinations of other pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/ +func (o MiddlewareSpecPtrOutput) Chain() MiddlewareSpecChainPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecChain { + if v == nil { + return nil + } + return v.Chain + }).(MiddlewareSpecChainPtrOutput) +} + +// CircuitBreaker holds the circuit breaker configuration. +func (o MiddlewareSpecPtrOutput) CircuitBreaker() MiddlewareSpecCircuitBreakerPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecCircuitBreaker { + if v == nil { + return nil + } + return v.CircuitBreaker + }).(MiddlewareSpecCircuitBreakerPtrOutput) +} + +// Compress holds the compress middleware configuration. This middleware compresses responses before sending them to the client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/ +func (o MiddlewareSpecPtrOutput) Compress() MiddlewareSpecCompressPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecCompress { + if v == nil { + return nil + } + return v.Compress + }).(MiddlewareSpecCompressPtrOutput) +} + +// ContentType holds the content-type middleware configuration. This middleware exists to enable the correct behavior until at least the default one can be changed in a future version. +func (o MiddlewareSpecPtrOutput) ContentType() MiddlewareSpecContentTypePtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecContentType { + if v == nil { + return nil + } + return v.ContentType + }).(MiddlewareSpecContentTypePtrOutput) +} + +// DigestAuth holds the digest auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/ +func (o MiddlewareSpecPtrOutput) DigestAuth() MiddlewareSpecDigestAuthPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecDigestAuth { + if v == nil { + return nil + } + return v.DigestAuth + }).(MiddlewareSpecDigestAuthPtrOutput) +} + +// ErrorPage holds the custom error middleware configuration. This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/ +func (o MiddlewareSpecPtrOutput) Errors() MiddlewareSpecErrorsPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecErrors { + if v == nil { + return nil + } + return v.Errors + }).(MiddlewareSpecErrorsPtrOutput) +} + +// ForwardAuth holds the forward auth middleware configuration. This middleware delegates the request authentication to a Service. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/ +func (o MiddlewareSpecPtrOutput) ForwardAuth() MiddlewareSpecForwardAuthPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecForwardAuth { + if v == nil { + return nil + } + return v.ForwardAuth + }).(MiddlewareSpecForwardAuthPtrOutput) +} + +// Headers holds the headers middleware configuration. This middleware manages the requests and responses headers. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders +func (o MiddlewareSpecPtrOutput) Headers() MiddlewareSpecHeadersPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecHeaders { + if v == nil { + return nil + } + return v.Headers + }).(MiddlewareSpecHeadersPtrOutput) +} + +// InFlightReq holds the in-flight request middleware configuration. This middleware limits the number of requests being processed and served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/ +func (o MiddlewareSpecPtrOutput) InFlightReq() MiddlewareSpecInFlightReqPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecInFlightReq { + if v == nil { + return nil + } + return v.InFlightReq + }).(MiddlewareSpecInFlightReqPtrOutput) +} + +// IPWhiteList holds the IP whitelist middleware configuration. This middleware accepts / refuses requests based on the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/ +func (o MiddlewareSpecPtrOutput) IpWhiteList() MiddlewareSpecIpWhiteListPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecIpWhiteList { + if v == nil { + return nil + } + return v.IpWhiteList + }).(MiddlewareSpecIpWhiteListPtrOutput) +} + +// PassTLSClientCert holds the pass TLS client cert middleware configuration. This middleware adds the selected data from the passed client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/ +func (o MiddlewareSpecPtrOutput) PassTLSClientCert() MiddlewareSpecPassTLSClientCertPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecPassTLSClientCert { + if v == nil { + return nil + } + return v.PassTLSClientCert + }).(MiddlewareSpecPassTLSClientCertPtrOutput) +} + +// Plugin defines the middleware plugin configuration. More info: https://doc.traefik.io/traefik/plugins/ +func (o MiddlewareSpecPtrOutput) Plugin() pulumi.MapMapOutput { + return o.ApplyT(func(v *MiddlewareSpec) map[string]map[string]interface{} { + if v == nil { + return nil + } + return v.Plugin + }).(pulumi.MapMapOutput) +} + +// RateLimit holds the rate limit configuration. This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/ +func (o MiddlewareSpecPtrOutput) RateLimit() MiddlewareSpecRateLimitPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecRateLimit { + if v == nil { + return nil + } + return v.RateLimit + }).(MiddlewareSpecRateLimitPtrOutput) +} + +// RedirectRegex holds the redirect regex middleware configuration. This middleware redirects a request using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex +func (o MiddlewareSpecPtrOutput) RedirectRegex() MiddlewareSpecRedirectRegexPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecRedirectRegex { + if v == nil { + return nil + } + return v.RedirectRegex + }).(MiddlewareSpecRedirectRegexPtrOutput) +} + +// RedirectScheme holds the redirect scheme middleware configuration. This middleware redirects requests from a scheme/port to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/ +func (o MiddlewareSpecPtrOutput) RedirectScheme() MiddlewareSpecRedirectSchemePtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecRedirectScheme { + if v == nil { + return nil + } + return v.RedirectScheme + }).(MiddlewareSpecRedirectSchemePtrOutput) +} + +// ReplacePath holds the replace path middleware configuration. This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/ +func (o MiddlewareSpecPtrOutput) ReplacePath() MiddlewareSpecReplacePathPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecReplacePath { + if v == nil { + return nil + } + return v.ReplacePath + }).(MiddlewareSpecReplacePathPtrOutput) +} + +// ReplacePathRegex holds the replace path regex middleware configuration. This middleware replaces the path of a URL using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/ +func (o MiddlewareSpecPtrOutput) ReplacePathRegex() MiddlewareSpecReplacePathRegexPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecReplacePathRegex { + if v == nil { + return nil + } + return v.ReplacePathRegex + }).(MiddlewareSpecReplacePathRegexPtrOutput) +} + +// Retry holds the retry middleware configuration. This middleware reissues requests a given number of times to a backend server if that server does not reply. As soon as the server answers, the middleware stops retrying, regardless of the response status. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/ +func (o MiddlewareSpecPtrOutput) Retry() MiddlewareSpecRetryPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecRetry { + if v == nil { + return nil + } + return v.Retry + }).(MiddlewareSpecRetryPtrOutput) +} + +// StripPrefix holds the strip prefix middleware configuration. This middleware removes the specified prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/ +func (o MiddlewareSpecPtrOutput) StripPrefix() MiddlewareSpecStripPrefixPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecStripPrefix { + if v == nil { + return nil + } + return v.StripPrefix + }).(MiddlewareSpecStripPrefixPtrOutput) +} + +// StripPrefixRegex holds the strip prefix regex middleware configuration. This middleware removes the matching prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/ +func (o MiddlewareSpecPtrOutput) StripPrefixRegex() MiddlewareSpecStripPrefixRegexPtrOutput { + return o.ApplyT(func(v *MiddlewareSpec) *MiddlewareSpecStripPrefixRegex { + if v == nil { + return nil + } + return v.StripPrefixRegex + }).(MiddlewareSpecStripPrefixRegexPtrOutput) +} + +// AddPrefix holds the add prefix middleware configuration. This middleware updates the path of a request before forwarding it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/ +type MiddlewareSpecAddPrefix struct { + // Prefix is the string to add before the current path in the requested URL. It should include a leading slash (/). + Prefix *string `pulumi:"prefix"` +} + +// MiddlewareSpecAddPrefixInput is an input type that accepts MiddlewareSpecAddPrefixArgs and MiddlewareSpecAddPrefixOutput values. +// You can construct a concrete instance of `MiddlewareSpecAddPrefixInput` via: +// +// MiddlewareSpecAddPrefixArgs{...} +type MiddlewareSpecAddPrefixInput interface { + pulumi.Input + + ToMiddlewareSpecAddPrefixOutput() MiddlewareSpecAddPrefixOutput + ToMiddlewareSpecAddPrefixOutputWithContext(context.Context) MiddlewareSpecAddPrefixOutput +} + +// AddPrefix holds the add prefix middleware configuration. This middleware updates the path of a request before forwarding it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/ +type MiddlewareSpecAddPrefixArgs struct { + // Prefix is the string to add before the current path in the requested URL. It should include a leading slash (/). + Prefix pulumi.StringPtrInput `pulumi:"prefix"` +} + +func (MiddlewareSpecAddPrefixArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecAddPrefix)(nil)).Elem() +} + +func (i MiddlewareSpecAddPrefixArgs) ToMiddlewareSpecAddPrefixOutput() MiddlewareSpecAddPrefixOutput { + return i.ToMiddlewareSpecAddPrefixOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecAddPrefixArgs) ToMiddlewareSpecAddPrefixOutputWithContext(ctx context.Context) MiddlewareSpecAddPrefixOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecAddPrefixOutput) +} + +func (i MiddlewareSpecAddPrefixArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecAddPrefix] { + return pulumix.Output[MiddlewareSpecAddPrefix]{ + OutputState: i.ToMiddlewareSpecAddPrefixOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecAddPrefixArgs) ToMiddlewareSpecAddPrefixPtrOutput() MiddlewareSpecAddPrefixPtrOutput { + return i.ToMiddlewareSpecAddPrefixPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecAddPrefixArgs) ToMiddlewareSpecAddPrefixPtrOutputWithContext(ctx context.Context) MiddlewareSpecAddPrefixPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecAddPrefixOutput).ToMiddlewareSpecAddPrefixPtrOutputWithContext(ctx) +} + +// MiddlewareSpecAddPrefixPtrInput is an input type that accepts MiddlewareSpecAddPrefixArgs, MiddlewareSpecAddPrefixPtr and MiddlewareSpecAddPrefixPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecAddPrefixPtrInput` via: +// +// MiddlewareSpecAddPrefixArgs{...} +// +// or: +// +// nil +type MiddlewareSpecAddPrefixPtrInput interface { + pulumi.Input + + ToMiddlewareSpecAddPrefixPtrOutput() MiddlewareSpecAddPrefixPtrOutput + ToMiddlewareSpecAddPrefixPtrOutputWithContext(context.Context) MiddlewareSpecAddPrefixPtrOutput +} + +type middlewareSpecAddPrefixPtrType MiddlewareSpecAddPrefixArgs + +func MiddlewareSpecAddPrefixPtr(v *MiddlewareSpecAddPrefixArgs) MiddlewareSpecAddPrefixPtrInput { + return (*middlewareSpecAddPrefixPtrType)(v) +} + +func (*middlewareSpecAddPrefixPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecAddPrefix)(nil)).Elem() +} + +func (i *middlewareSpecAddPrefixPtrType) ToMiddlewareSpecAddPrefixPtrOutput() MiddlewareSpecAddPrefixPtrOutput { + return i.ToMiddlewareSpecAddPrefixPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecAddPrefixPtrType) ToMiddlewareSpecAddPrefixPtrOutputWithContext(ctx context.Context) MiddlewareSpecAddPrefixPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecAddPrefixPtrOutput) +} + +func (i *middlewareSpecAddPrefixPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecAddPrefix] { + return pulumix.Output[*MiddlewareSpecAddPrefix]{ + OutputState: i.ToMiddlewareSpecAddPrefixPtrOutputWithContext(ctx).OutputState, + } +} + +// AddPrefix holds the add prefix middleware configuration. This middleware updates the path of a request before forwarding it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/ +type MiddlewareSpecAddPrefixOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecAddPrefixOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecAddPrefix)(nil)).Elem() +} + +func (o MiddlewareSpecAddPrefixOutput) ToMiddlewareSpecAddPrefixOutput() MiddlewareSpecAddPrefixOutput { + return o +} + +func (o MiddlewareSpecAddPrefixOutput) ToMiddlewareSpecAddPrefixOutputWithContext(ctx context.Context) MiddlewareSpecAddPrefixOutput { + return o +} + +func (o MiddlewareSpecAddPrefixOutput) ToMiddlewareSpecAddPrefixPtrOutput() MiddlewareSpecAddPrefixPtrOutput { + return o.ToMiddlewareSpecAddPrefixPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecAddPrefixOutput) ToMiddlewareSpecAddPrefixPtrOutputWithContext(ctx context.Context) MiddlewareSpecAddPrefixPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecAddPrefix) *MiddlewareSpecAddPrefix { + return &v + }).(MiddlewareSpecAddPrefixPtrOutput) +} + +func (o MiddlewareSpecAddPrefixOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecAddPrefix] { + return pulumix.Output[MiddlewareSpecAddPrefix]{ + OutputState: o.OutputState, + } +} + +// Prefix is the string to add before the current path in the requested URL. It should include a leading slash (/). +func (o MiddlewareSpecAddPrefixOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecAddPrefix) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecAddPrefixPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecAddPrefixPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecAddPrefix)(nil)).Elem() +} + +func (o MiddlewareSpecAddPrefixPtrOutput) ToMiddlewareSpecAddPrefixPtrOutput() MiddlewareSpecAddPrefixPtrOutput { + return o +} + +func (o MiddlewareSpecAddPrefixPtrOutput) ToMiddlewareSpecAddPrefixPtrOutputWithContext(ctx context.Context) MiddlewareSpecAddPrefixPtrOutput { + return o +} + +func (o MiddlewareSpecAddPrefixPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecAddPrefix] { + return pulumix.Output[*MiddlewareSpecAddPrefix]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecAddPrefixPtrOutput) Elem() MiddlewareSpecAddPrefixOutput { + return o.ApplyT(func(v *MiddlewareSpecAddPrefix) MiddlewareSpecAddPrefix { + if v != nil { + return *v + } + var ret MiddlewareSpecAddPrefix + return ret + }).(MiddlewareSpecAddPrefixOutput) +} + +// Prefix is the string to add before the current path in the requested URL. It should include a leading slash (/). +func (o MiddlewareSpecAddPrefixPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecAddPrefix) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +// BasicAuth holds the basic auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/ +type MiddlewareSpecBasicAuth struct { + // HeaderField defines a header field to store the authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield + HeaderField *string `pulumi:"headerField"` + // Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. Default: traefik. + Realm *string `pulumi:"realm"` + // RemoveHeader sets the removeHeader option to true to remove the authorization header before forwarding the request to your service. Default: false. + RemoveHeader *bool `pulumi:"removeHeader"` + // Secret is the name of the referenced Kubernetes Secret containing user credentials. + Secret *string `pulumi:"secret"` +} + +// MiddlewareSpecBasicAuthInput is an input type that accepts MiddlewareSpecBasicAuthArgs and MiddlewareSpecBasicAuthOutput values. +// You can construct a concrete instance of `MiddlewareSpecBasicAuthInput` via: +// +// MiddlewareSpecBasicAuthArgs{...} +type MiddlewareSpecBasicAuthInput interface { + pulumi.Input + + ToMiddlewareSpecBasicAuthOutput() MiddlewareSpecBasicAuthOutput + ToMiddlewareSpecBasicAuthOutputWithContext(context.Context) MiddlewareSpecBasicAuthOutput +} + +// BasicAuth holds the basic auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/ +type MiddlewareSpecBasicAuthArgs struct { + // HeaderField defines a header field to store the authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield + HeaderField pulumi.StringPtrInput `pulumi:"headerField"` + // Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. Default: traefik. + Realm pulumi.StringPtrInput `pulumi:"realm"` + // RemoveHeader sets the removeHeader option to true to remove the authorization header before forwarding the request to your service. Default: false. + RemoveHeader pulumi.BoolPtrInput `pulumi:"removeHeader"` + // Secret is the name of the referenced Kubernetes Secret containing user credentials. + Secret pulumi.StringPtrInput `pulumi:"secret"` +} + +func (MiddlewareSpecBasicAuthArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecBasicAuth)(nil)).Elem() +} + +func (i MiddlewareSpecBasicAuthArgs) ToMiddlewareSpecBasicAuthOutput() MiddlewareSpecBasicAuthOutput { + return i.ToMiddlewareSpecBasicAuthOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecBasicAuthArgs) ToMiddlewareSpecBasicAuthOutputWithContext(ctx context.Context) MiddlewareSpecBasicAuthOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecBasicAuthOutput) +} + +func (i MiddlewareSpecBasicAuthArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecBasicAuth] { + return pulumix.Output[MiddlewareSpecBasicAuth]{ + OutputState: i.ToMiddlewareSpecBasicAuthOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecBasicAuthArgs) ToMiddlewareSpecBasicAuthPtrOutput() MiddlewareSpecBasicAuthPtrOutput { + return i.ToMiddlewareSpecBasicAuthPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecBasicAuthArgs) ToMiddlewareSpecBasicAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecBasicAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecBasicAuthOutput).ToMiddlewareSpecBasicAuthPtrOutputWithContext(ctx) +} + +// MiddlewareSpecBasicAuthPtrInput is an input type that accepts MiddlewareSpecBasicAuthArgs, MiddlewareSpecBasicAuthPtr and MiddlewareSpecBasicAuthPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecBasicAuthPtrInput` via: +// +// MiddlewareSpecBasicAuthArgs{...} +// +// or: +// +// nil +type MiddlewareSpecBasicAuthPtrInput interface { + pulumi.Input + + ToMiddlewareSpecBasicAuthPtrOutput() MiddlewareSpecBasicAuthPtrOutput + ToMiddlewareSpecBasicAuthPtrOutputWithContext(context.Context) MiddlewareSpecBasicAuthPtrOutput +} + +type middlewareSpecBasicAuthPtrType MiddlewareSpecBasicAuthArgs + +func MiddlewareSpecBasicAuthPtr(v *MiddlewareSpecBasicAuthArgs) MiddlewareSpecBasicAuthPtrInput { + return (*middlewareSpecBasicAuthPtrType)(v) +} + +func (*middlewareSpecBasicAuthPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecBasicAuth)(nil)).Elem() +} + +func (i *middlewareSpecBasicAuthPtrType) ToMiddlewareSpecBasicAuthPtrOutput() MiddlewareSpecBasicAuthPtrOutput { + return i.ToMiddlewareSpecBasicAuthPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecBasicAuthPtrType) ToMiddlewareSpecBasicAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecBasicAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecBasicAuthPtrOutput) +} + +func (i *middlewareSpecBasicAuthPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecBasicAuth] { + return pulumix.Output[*MiddlewareSpecBasicAuth]{ + OutputState: i.ToMiddlewareSpecBasicAuthPtrOutputWithContext(ctx).OutputState, + } +} + +// BasicAuth holds the basic auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/ +type MiddlewareSpecBasicAuthOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecBasicAuthOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecBasicAuth)(nil)).Elem() +} + +func (o MiddlewareSpecBasicAuthOutput) ToMiddlewareSpecBasicAuthOutput() MiddlewareSpecBasicAuthOutput { + return o +} + +func (o MiddlewareSpecBasicAuthOutput) ToMiddlewareSpecBasicAuthOutputWithContext(ctx context.Context) MiddlewareSpecBasicAuthOutput { + return o +} + +func (o MiddlewareSpecBasicAuthOutput) ToMiddlewareSpecBasicAuthPtrOutput() MiddlewareSpecBasicAuthPtrOutput { + return o.ToMiddlewareSpecBasicAuthPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecBasicAuthOutput) ToMiddlewareSpecBasicAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecBasicAuthPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecBasicAuth) *MiddlewareSpecBasicAuth { + return &v + }).(MiddlewareSpecBasicAuthPtrOutput) +} + +func (o MiddlewareSpecBasicAuthOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecBasicAuth] { + return pulumix.Output[MiddlewareSpecBasicAuth]{ + OutputState: o.OutputState, + } +} + +// HeaderField defines a header field to store the authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield +func (o MiddlewareSpecBasicAuthOutput) HeaderField() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecBasicAuth) *string { return v.HeaderField }).(pulumi.StringPtrOutput) +} + +// Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. Default: traefik. +func (o MiddlewareSpecBasicAuthOutput) Realm() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecBasicAuth) *string { return v.Realm }).(pulumi.StringPtrOutput) +} + +// RemoveHeader sets the removeHeader option to true to remove the authorization header before forwarding the request to your service. Default: false. +func (o MiddlewareSpecBasicAuthOutput) RemoveHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecBasicAuth) *bool { return v.RemoveHeader }).(pulumi.BoolPtrOutput) +} + +// Secret is the name of the referenced Kubernetes Secret containing user credentials. +func (o MiddlewareSpecBasicAuthOutput) Secret() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecBasicAuth) *string { return v.Secret }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecBasicAuthPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecBasicAuthPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecBasicAuth)(nil)).Elem() +} + +func (o MiddlewareSpecBasicAuthPtrOutput) ToMiddlewareSpecBasicAuthPtrOutput() MiddlewareSpecBasicAuthPtrOutput { + return o +} + +func (o MiddlewareSpecBasicAuthPtrOutput) ToMiddlewareSpecBasicAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecBasicAuthPtrOutput { + return o +} + +func (o MiddlewareSpecBasicAuthPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecBasicAuth] { + return pulumix.Output[*MiddlewareSpecBasicAuth]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecBasicAuthPtrOutput) Elem() MiddlewareSpecBasicAuthOutput { + return o.ApplyT(func(v *MiddlewareSpecBasicAuth) MiddlewareSpecBasicAuth { + if v != nil { + return *v + } + var ret MiddlewareSpecBasicAuth + return ret + }).(MiddlewareSpecBasicAuthOutput) +} + +// HeaderField defines a header field to store the authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield +func (o MiddlewareSpecBasicAuthPtrOutput) HeaderField() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecBasicAuth) *string { + if v == nil { + return nil + } + return v.HeaderField + }).(pulumi.StringPtrOutput) +} + +// Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. Default: traefik. +func (o MiddlewareSpecBasicAuthPtrOutput) Realm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecBasicAuth) *string { + if v == nil { + return nil + } + return v.Realm + }).(pulumi.StringPtrOutput) +} + +// RemoveHeader sets the removeHeader option to true to remove the authorization header before forwarding the request to your service. Default: false. +func (o MiddlewareSpecBasicAuthPtrOutput) RemoveHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecBasicAuth) *bool { + if v == nil { + return nil + } + return v.RemoveHeader + }).(pulumi.BoolPtrOutput) +} + +// Secret is the name of the referenced Kubernetes Secret containing user credentials. +func (o MiddlewareSpecBasicAuthPtrOutput) Secret() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecBasicAuth) *string { + if v == nil { + return nil + } + return v.Secret + }).(pulumi.StringPtrOutput) +} + +// Buffering holds the buffering middleware configuration. This middleware retries or limits the size of requests that can be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes +type MiddlewareSpecBuffering struct { + // MaxRequestBodyBytes defines the maximum allowed body size for the request (in bytes). If the request exceeds the allowed size, it is not forwarded to the service, and the client gets a 413 (Request Entity Too Large) response. Default: 0 (no maximum). + MaxRequestBodyBytes *int `pulumi:"maxRequestBodyBytes"` + // MaxResponseBodyBytes defines the maximum allowed response size from the service (in bytes). If the response exceeds the allowed size, it is not forwarded to the client. The client gets a 500 (Internal Server Error) response instead. Default: 0 (no maximum). + MaxResponseBodyBytes *int `pulumi:"maxResponseBodyBytes"` + // MemRequestBodyBytes defines the threshold (in bytes) from which the request will be buffered on disk instead of in memory. Default: 1048576 (1Mi). + MemRequestBodyBytes *int `pulumi:"memRequestBodyBytes"` + // MemResponseBodyBytes defines the threshold (in bytes) from which the response will be buffered on disk instead of in memory. Default: 1048576 (1Mi). + MemResponseBodyBytes *int `pulumi:"memResponseBodyBytes"` + // RetryExpression defines the retry conditions. It is a logical combination of functions with operators AND (&&) and OR (||). More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#retryexpression + RetryExpression *string `pulumi:"retryExpression"` +} + +// MiddlewareSpecBufferingInput is an input type that accepts MiddlewareSpecBufferingArgs and MiddlewareSpecBufferingOutput values. +// You can construct a concrete instance of `MiddlewareSpecBufferingInput` via: +// +// MiddlewareSpecBufferingArgs{...} +type MiddlewareSpecBufferingInput interface { + pulumi.Input + + ToMiddlewareSpecBufferingOutput() MiddlewareSpecBufferingOutput + ToMiddlewareSpecBufferingOutputWithContext(context.Context) MiddlewareSpecBufferingOutput +} + +// Buffering holds the buffering middleware configuration. This middleware retries or limits the size of requests that can be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes +type MiddlewareSpecBufferingArgs struct { + // MaxRequestBodyBytes defines the maximum allowed body size for the request (in bytes). If the request exceeds the allowed size, it is not forwarded to the service, and the client gets a 413 (Request Entity Too Large) response. Default: 0 (no maximum). + MaxRequestBodyBytes pulumi.IntPtrInput `pulumi:"maxRequestBodyBytes"` + // MaxResponseBodyBytes defines the maximum allowed response size from the service (in bytes). If the response exceeds the allowed size, it is not forwarded to the client. The client gets a 500 (Internal Server Error) response instead. Default: 0 (no maximum). + MaxResponseBodyBytes pulumi.IntPtrInput `pulumi:"maxResponseBodyBytes"` + // MemRequestBodyBytes defines the threshold (in bytes) from which the request will be buffered on disk instead of in memory. Default: 1048576 (1Mi). + MemRequestBodyBytes pulumi.IntPtrInput `pulumi:"memRequestBodyBytes"` + // MemResponseBodyBytes defines the threshold (in bytes) from which the response will be buffered on disk instead of in memory. Default: 1048576 (1Mi). + MemResponseBodyBytes pulumi.IntPtrInput `pulumi:"memResponseBodyBytes"` + // RetryExpression defines the retry conditions. It is a logical combination of functions with operators AND (&&) and OR (||). More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#retryexpression + RetryExpression pulumi.StringPtrInput `pulumi:"retryExpression"` +} + +func (MiddlewareSpecBufferingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecBuffering)(nil)).Elem() +} + +func (i MiddlewareSpecBufferingArgs) ToMiddlewareSpecBufferingOutput() MiddlewareSpecBufferingOutput { + return i.ToMiddlewareSpecBufferingOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecBufferingArgs) ToMiddlewareSpecBufferingOutputWithContext(ctx context.Context) MiddlewareSpecBufferingOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecBufferingOutput) +} + +func (i MiddlewareSpecBufferingArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecBuffering] { + return pulumix.Output[MiddlewareSpecBuffering]{ + OutputState: i.ToMiddlewareSpecBufferingOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecBufferingArgs) ToMiddlewareSpecBufferingPtrOutput() MiddlewareSpecBufferingPtrOutput { + return i.ToMiddlewareSpecBufferingPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecBufferingArgs) ToMiddlewareSpecBufferingPtrOutputWithContext(ctx context.Context) MiddlewareSpecBufferingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecBufferingOutput).ToMiddlewareSpecBufferingPtrOutputWithContext(ctx) +} + +// MiddlewareSpecBufferingPtrInput is an input type that accepts MiddlewareSpecBufferingArgs, MiddlewareSpecBufferingPtr and MiddlewareSpecBufferingPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecBufferingPtrInput` via: +// +// MiddlewareSpecBufferingArgs{...} +// +// or: +// +// nil +type MiddlewareSpecBufferingPtrInput interface { + pulumi.Input + + ToMiddlewareSpecBufferingPtrOutput() MiddlewareSpecBufferingPtrOutput + ToMiddlewareSpecBufferingPtrOutputWithContext(context.Context) MiddlewareSpecBufferingPtrOutput +} + +type middlewareSpecBufferingPtrType MiddlewareSpecBufferingArgs + +func MiddlewareSpecBufferingPtr(v *MiddlewareSpecBufferingArgs) MiddlewareSpecBufferingPtrInput { + return (*middlewareSpecBufferingPtrType)(v) +} + +func (*middlewareSpecBufferingPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecBuffering)(nil)).Elem() +} + +func (i *middlewareSpecBufferingPtrType) ToMiddlewareSpecBufferingPtrOutput() MiddlewareSpecBufferingPtrOutput { + return i.ToMiddlewareSpecBufferingPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecBufferingPtrType) ToMiddlewareSpecBufferingPtrOutputWithContext(ctx context.Context) MiddlewareSpecBufferingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecBufferingPtrOutput) +} + +func (i *middlewareSpecBufferingPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecBuffering] { + return pulumix.Output[*MiddlewareSpecBuffering]{ + OutputState: i.ToMiddlewareSpecBufferingPtrOutputWithContext(ctx).OutputState, + } +} + +// Buffering holds the buffering middleware configuration. This middleware retries or limits the size of requests that can be forwarded to backends. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#maxrequestbodybytes +type MiddlewareSpecBufferingOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecBufferingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecBuffering)(nil)).Elem() +} + +func (o MiddlewareSpecBufferingOutput) ToMiddlewareSpecBufferingOutput() MiddlewareSpecBufferingOutput { + return o +} + +func (o MiddlewareSpecBufferingOutput) ToMiddlewareSpecBufferingOutputWithContext(ctx context.Context) MiddlewareSpecBufferingOutput { + return o +} + +func (o MiddlewareSpecBufferingOutput) ToMiddlewareSpecBufferingPtrOutput() MiddlewareSpecBufferingPtrOutput { + return o.ToMiddlewareSpecBufferingPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecBufferingOutput) ToMiddlewareSpecBufferingPtrOutputWithContext(ctx context.Context) MiddlewareSpecBufferingPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecBuffering) *MiddlewareSpecBuffering { + return &v + }).(MiddlewareSpecBufferingPtrOutput) +} + +func (o MiddlewareSpecBufferingOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecBuffering] { + return pulumix.Output[MiddlewareSpecBuffering]{ + OutputState: o.OutputState, + } +} + +// MaxRequestBodyBytes defines the maximum allowed body size for the request (in bytes). If the request exceeds the allowed size, it is not forwarded to the service, and the client gets a 413 (Request Entity Too Large) response. Default: 0 (no maximum). +func (o MiddlewareSpecBufferingOutput) MaxRequestBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecBuffering) *int { return v.MaxRequestBodyBytes }).(pulumi.IntPtrOutput) +} + +// MaxResponseBodyBytes defines the maximum allowed response size from the service (in bytes). If the response exceeds the allowed size, it is not forwarded to the client. The client gets a 500 (Internal Server Error) response instead. Default: 0 (no maximum). +func (o MiddlewareSpecBufferingOutput) MaxResponseBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecBuffering) *int { return v.MaxResponseBodyBytes }).(pulumi.IntPtrOutput) +} + +// MemRequestBodyBytes defines the threshold (in bytes) from which the request will be buffered on disk instead of in memory. Default: 1048576 (1Mi). +func (o MiddlewareSpecBufferingOutput) MemRequestBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecBuffering) *int { return v.MemRequestBodyBytes }).(pulumi.IntPtrOutput) +} + +// MemResponseBodyBytes defines the threshold (in bytes) from which the response will be buffered on disk instead of in memory. Default: 1048576 (1Mi). +func (o MiddlewareSpecBufferingOutput) MemResponseBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecBuffering) *int { return v.MemResponseBodyBytes }).(pulumi.IntPtrOutput) +} + +// RetryExpression defines the retry conditions. It is a logical combination of functions with operators AND (&&) and OR (||). More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#retryexpression +func (o MiddlewareSpecBufferingOutput) RetryExpression() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecBuffering) *string { return v.RetryExpression }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecBufferingPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecBufferingPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecBuffering)(nil)).Elem() +} + +func (o MiddlewareSpecBufferingPtrOutput) ToMiddlewareSpecBufferingPtrOutput() MiddlewareSpecBufferingPtrOutput { + return o +} + +func (o MiddlewareSpecBufferingPtrOutput) ToMiddlewareSpecBufferingPtrOutputWithContext(ctx context.Context) MiddlewareSpecBufferingPtrOutput { + return o +} + +func (o MiddlewareSpecBufferingPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecBuffering] { + return pulumix.Output[*MiddlewareSpecBuffering]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecBufferingPtrOutput) Elem() MiddlewareSpecBufferingOutput { + return o.ApplyT(func(v *MiddlewareSpecBuffering) MiddlewareSpecBuffering { + if v != nil { + return *v + } + var ret MiddlewareSpecBuffering + return ret + }).(MiddlewareSpecBufferingOutput) +} + +// MaxRequestBodyBytes defines the maximum allowed body size for the request (in bytes). If the request exceeds the allowed size, it is not forwarded to the service, and the client gets a 413 (Request Entity Too Large) response. Default: 0 (no maximum). +func (o MiddlewareSpecBufferingPtrOutput) MaxRequestBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecBuffering) *int { + if v == nil { + return nil + } + return v.MaxRequestBodyBytes + }).(pulumi.IntPtrOutput) +} + +// MaxResponseBodyBytes defines the maximum allowed response size from the service (in bytes). If the response exceeds the allowed size, it is not forwarded to the client. The client gets a 500 (Internal Server Error) response instead. Default: 0 (no maximum). +func (o MiddlewareSpecBufferingPtrOutput) MaxResponseBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecBuffering) *int { + if v == nil { + return nil + } + return v.MaxResponseBodyBytes + }).(pulumi.IntPtrOutput) +} + +// MemRequestBodyBytes defines the threshold (in bytes) from which the request will be buffered on disk instead of in memory. Default: 1048576 (1Mi). +func (o MiddlewareSpecBufferingPtrOutput) MemRequestBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecBuffering) *int { + if v == nil { + return nil + } + return v.MemRequestBodyBytes + }).(pulumi.IntPtrOutput) +} + +// MemResponseBodyBytes defines the threshold (in bytes) from which the response will be buffered on disk instead of in memory. Default: 1048576 (1Mi). +func (o MiddlewareSpecBufferingPtrOutput) MemResponseBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecBuffering) *int { + if v == nil { + return nil + } + return v.MemResponseBodyBytes + }).(pulumi.IntPtrOutput) +} + +// RetryExpression defines the retry conditions. It is a logical combination of functions with operators AND (&&) and OR (||). More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/buffering/#retryexpression +func (o MiddlewareSpecBufferingPtrOutput) RetryExpression() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecBuffering) *string { + if v == nil { + return nil + } + return v.RetryExpression + }).(pulumi.StringPtrOutput) +} + +// Chain holds the configuration of the chain middleware. This middleware enables to define reusable combinations of other pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/ +type MiddlewareSpecChain struct { + // Middlewares is the list of MiddlewareRef which composes the chain. + Middlewares []MiddlewareSpecChainMiddlewares `pulumi:"middlewares"` +} + +// MiddlewareSpecChainInput is an input type that accepts MiddlewareSpecChainArgs and MiddlewareSpecChainOutput values. +// You can construct a concrete instance of `MiddlewareSpecChainInput` via: +// +// MiddlewareSpecChainArgs{...} +type MiddlewareSpecChainInput interface { + pulumi.Input + + ToMiddlewareSpecChainOutput() MiddlewareSpecChainOutput + ToMiddlewareSpecChainOutputWithContext(context.Context) MiddlewareSpecChainOutput +} + +// Chain holds the configuration of the chain middleware. This middleware enables to define reusable combinations of other pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/ +type MiddlewareSpecChainArgs struct { + // Middlewares is the list of MiddlewareRef which composes the chain. + Middlewares MiddlewareSpecChainMiddlewaresArrayInput `pulumi:"middlewares"` +} + +func (MiddlewareSpecChainArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecChain)(nil)).Elem() +} + +func (i MiddlewareSpecChainArgs) ToMiddlewareSpecChainOutput() MiddlewareSpecChainOutput { + return i.ToMiddlewareSpecChainOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecChainArgs) ToMiddlewareSpecChainOutputWithContext(ctx context.Context) MiddlewareSpecChainOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecChainOutput) +} + +func (i MiddlewareSpecChainArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecChain] { + return pulumix.Output[MiddlewareSpecChain]{ + OutputState: i.ToMiddlewareSpecChainOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecChainArgs) ToMiddlewareSpecChainPtrOutput() MiddlewareSpecChainPtrOutput { + return i.ToMiddlewareSpecChainPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecChainArgs) ToMiddlewareSpecChainPtrOutputWithContext(ctx context.Context) MiddlewareSpecChainPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecChainOutput).ToMiddlewareSpecChainPtrOutputWithContext(ctx) +} + +// MiddlewareSpecChainPtrInput is an input type that accepts MiddlewareSpecChainArgs, MiddlewareSpecChainPtr and MiddlewareSpecChainPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecChainPtrInput` via: +// +// MiddlewareSpecChainArgs{...} +// +// or: +// +// nil +type MiddlewareSpecChainPtrInput interface { + pulumi.Input + + ToMiddlewareSpecChainPtrOutput() MiddlewareSpecChainPtrOutput + ToMiddlewareSpecChainPtrOutputWithContext(context.Context) MiddlewareSpecChainPtrOutput +} + +type middlewareSpecChainPtrType MiddlewareSpecChainArgs + +func MiddlewareSpecChainPtr(v *MiddlewareSpecChainArgs) MiddlewareSpecChainPtrInput { + return (*middlewareSpecChainPtrType)(v) +} + +func (*middlewareSpecChainPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecChain)(nil)).Elem() +} + +func (i *middlewareSpecChainPtrType) ToMiddlewareSpecChainPtrOutput() MiddlewareSpecChainPtrOutput { + return i.ToMiddlewareSpecChainPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecChainPtrType) ToMiddlewareSpecChainPtrOutputWithContext(ctx context.Context) MiddlewareSpecChainPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecChainPtrOutput) +} + +func (i *middlewareSpecChainPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecChain] { + return pulumix.Output[*MiddlewareSpecChain]{ + OutputState: i.ToMiddlewareSpecChainPtrOutputWithContext(ctx).OutputState, + } +} + +// Chain holds the configuration of the chain middleware. This middleware enables to define reusable combinations of other pieces of middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/chain/ +type MiddlewareSpecChainOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecChainOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecChain)(nil)).Elem() +} + +func (o MiddlewareSpecChainOutput) ToMiddlewareSpecChainOutput() MiddlewareSpecChainOutput { + return o +} + +func (o MiddlewareSpecChainOutput) ToMiddlewareSpecChainOutputWithContext(ctx context.Context) MiddlewareSpecChainOutput { + return o +} + +func (o MiddlewareSpecChainOutput) ToMiddlewareSpecChainPtrOutput() MiddlewareSpecChainPtrOutput { + return o.ToMiddlewareSpecChainPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecChainOutput) ToMiddlewareSpecChainPtrOutputWithContext(ctx context.Context) MiddlewareSpecChainPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecChain) *MiddlewareSpecChain { + return &v + }).(MiddlewareSpecChainPtrOutput) +} + +func (o MiddlewareSpecChainOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecChain] { + return pulumix.Output[MiddlewareSpecChain]{ + OutputState: o.OutputState, + } +} + +// Middlewares is the list of MiddlewareRef which composes the chain. +func (o MiddlewareSpecChainOutput) Middlewares() MiddlewareSpecChainMiddlewaresArrayOutput { + return o.ApplyT(func(v MiddlewareSpecChain) []MiddlewareSpecChainMiddlewares { return v.Middlewares }).(MiddlewareSpecChainMiddlewaresArrayOutput) +} + +type MiddlewareSpecChainPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecChainPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecChain)(nil)).Elem() +} + +func (o MiddlewareSpecChainPtrOutput) ToMiddlewareSpecChainPtrOutput() MiddlewareSpecChainPtrOutput { + return o +} + +func (o MiddlewareSpecChainPtrOutput) ToMiddlewareSpecChainPtrOutputWithContext(ctx context.Context) MiddlewareSpecChainPtrOutput { + return o +} + +func (o MiddlewareSpecChainPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecChain] { + return pulumix.Output[*MiddlewareSpecChain]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecChainPtrOutput) Elem() MiddlewareSpecChainOutput { + return o.ApplyT(func(v *MiddlewareSpecChain) MiddlewareSpecChain { + if v != nil { + return *v + } + var ret MiddlewareSpecChain + return ret + }).(MiddlewareSpecChainOutput) +} + +// Middlewares is the list of MiddlewareRef which composes the chain. +func (o MiddlewareSpecChainPtrOutput) Middlewares() MiddlewareSpecChainMiddlewaresArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecChain) []MiddlewareSpecChainMiddlewares { + if v == nil { + return nil + } + return v.Middlewares + }).(MiddlewareSpecChainMiddlewaresArrayOutput) +} + +// MiddlewareRef is a reference to a Middleware resource. +type MiddlewareSpecChainMiddlewares struct { + // Name defines the name of the referenced Middleware resource. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Middleware resource. + Namespace *string `pulumi:"namespace"` +} + +// MiddlewareSpecChainMiddlewaresInput is an input type that accepts MiddlewareSpecChainMiddlewaresArgs and MiddlewareSpecChainMiddlewaresOutput values. +// You can construct a concrete instance of `MiddlewareSpecChainMiddlewaresInput` via: +// +// MiddlewareSpecChainMiddlewaresArgs{...} +type MiddlewareSpecChainMiddlewaresInput interface { + pulumi.Input + + ToMiddlewareSpecChainMiddlewaresOutput() MiddlewareSpecChainMiddlewaresOutput + ToMiddlewareSpecChainMiddlewaresOutputWithContext(context.Context) MiddlewareSpecChainMiddlewaresOutput +} + +// MiddlewareRef is a reference to a Middleware resource. +type MiddlewareSpecChainMiddlewaresArgs struct { + // Name defines the name of the referenced Middleware resource. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Middleware resource. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` +} + +func (MiddlewareSpecChainMiddlewaresArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecChainMiddlewares)(nil)).Elem() +} + +func (i MiddlewareSpecChainMiddlewaresArgs) ToMiddlewareSpecChainMiddlewaresOutput() MiddlewareSpecChainMiddlewaresOutput { + return i.ToMiddlewareSpecChainMiddlewaresOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecChainMiddlewaresArgs) ToMiddlewareSpecChainMiddlewaresOutputWithContext(ctx context.Context) MiddlewareSpecChainMiddlewaresOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecChainMiddlewaresOutput) +} + +func (i MiddlewareSpecChainMiddlewaresArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecChainMiddlewares] { + return pulumix.Output[MiddlewareSpecChainMiddlewares]{ + OutputState: i.ToMiddlewareSpecChainMiddlewaresOutputWithContext(ctx).OutputState, + } +} + +// MiddlewareSpecChainMiddlewaresArrayInput is an input type that accepts MiddlewareSpecChainMiddlewaresArray and MiddlewareSpecChainMiddlewaresArrayOutput values. +// You can construct a concrete instance of `MiddlewareSpecChainMiddlewaresArrayInput` via: +// +// MiddlewareSpecChainMiddlewaresArray{ MiddlewareSpecChainMiddlewaresArgs{...} } +type MiddlewareSpecChainMiddlewaresArrayInput interface { + pulumi.Input + + ToMiddlewareSpecChainMiddlewaresArrayOutput() MiddlewareSpecChainMiddlewaresArrayOutput + ToMiddlewareSpecChainMiddlewaresArrayOutputWithContext(context.Context) MiddlewareSpecChainMiddlewaresArrayOutput +} + +type MiddlewareSpecChainMiddlewaresArray []MiddlewareSpecChainMiddlewaresInput + +func (MiddlewareSpecChainMiddlewaresArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MiddlewareSpecChainMiddlewares)(nil)).Elem() +} + +func (i MiddlewareSpecChainMiddlewaresArray) ToMiddlewareSpecChainMiddlewaresArrayOutput() MiddlewareSpecChainMiddlewaresArrayOutput { + return i.ToMiddlewareSpecChainMiddlewaresArrayOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecChainMiddlewaresArray) ToMiddlewareSpecChainMiddlewaresArrayOutputWithContext(ctx context.Context) MiddlewareSpecChainMiddlewaresArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecChainMiddlewaresArrayOutput) +} + +func (i MiddlewareSpecChainMiddlewaresArray) ToOutput(ctx context.Context) pulumix.Output[[]MiddlewareSpecChainMiddlewares] { + return pulumix.Output[[]MiddlewareSpecChainMiddlewares]{ + OutputState: i.ToMiddlewareSpecChainMiddlewaresArrayOutputWithContext(ctx).OutputState, + } +} + +// MiddlewareRef is a reference to a Middleware resource. +type MiddlewareSpecChainMiddlewaresOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecChainMiddlewaresOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecChainMiddlewares)(nil)).Elem() +} + +func (o MiddlewareSpecChainMiddlewaresOutput) ToMiddlewareSpecChainMiddlewaresOutput() MiddlewareSpecChainMiddlewaresOutput { + return o +} + +func (o MiddlewareSpecChainMiddlewaresOutput) ToMiddlewareSpecChainMiddlewaresOutputWithContext(ctx context.Context) MiddlewareSpecChainMiddlewaresOutput { + return o +} + +func (o MiddlewareSpecChainMiddlewaresOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecChainMiddlewares] { + return pulumix.Output[MiddlewareSpecChainMiddlewares]{ + OutputState: o.OutputState, + } +} + +// Name defines the name of the referenced Middleware resource. +func (o MiddlewareSpecChainMiddlewaresOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v MiddlewareSpecChainMiddlewares) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Middleware resource. +func (o MiddlewareSpecChainMiddlewaresOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecChainMiddlewares) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecChainMiddlewaresArrayOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecChainMiddlewaresArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MiddlewareSpecChainMiddlewares)(nil)).Elem() +} + +func (o MiddlewareSpecChainMiddlewaresArrayOutput) ToMiddlewareSpecChainMiddlewaresArrayOutput() MiddlewareSpecChainMiddlewaresArrayOutput { + return o +} + +func (o MiddlewareSpecChainMiddlewaresArrayOutput) ToMiddlewareSpecChainMiddlewaresArrayOutputWithContext(ctx context.Context) MiddlewareSpecChainMiddlewaresArrayOutput { + return o +} + +func (o MiddlewareSpecChainMiddlewaresArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]MiddlewareSpecChainMiddlewares] { + return pulumix.Output[[]MiddlewareSpecChainMiddlewares]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecChainMiddlewaresArrayOutput) Index(i pulumi.IntInput) MiddlewareSpecChainMiddlewaresOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MiddlewareSpecChainMiddlewares { + return vs[0].([]MiddlewareSpecChainMiddlewares)[vs[1].(int)] + }).(MiddlewareSpecChainMiddlewaresOutput) +} + +// CircuitBreaker holds the circuit breaker configuration. +type MiddlewareSpecCircuitBreaker struct { + // CheckPeriod is the interval between successive checks of the circuit breaker condition (when in standby state). + CheckPeriod interface{} `pulumi:"checkPeriod"` + // Expression is the condition that triggers the tripped state. + Expression *string `pulumi:"expression"` + // FallbackDuration is the duration for which the circuit breaker will wait before trying to recover (from a tripped state). + FallbackDuration interface{} `pulumi:"fallbackDuration"` + // RecoveryDuration is the duration for which the circuit breaker will try to recover (as soon as it is in recovering state). + RecoveryDuration interface{} `pulumi:"recoveryDuration"` +} + +// MiddlewareSpecCircuitBreakerInput is an input type that accepts MiddlewareSpecCircuitBreakerArgs and MiddlewareSpecCircuitBreakerOutput values. +// You can construct a concrete instance of `MiddlewareSpecCircuitBreakerInput` via: +// +// MiddlewareSpecCircuitBreakerArgs{...} +type MiddlewareSpecCircuitBreakerInput interface { + pulumi.Input + + ToMiddlewareSpecCircuitBreakerOutput() MiddlewareSpecCircuitBreakerOutput + ToMiddlewareSpecCircuitBreakerOutputWithContext(context.Context) MiddlewareSpecCircuitBreakerOutput +} + +// CircuitBreaker holds the circuit breaker configuration. +type MiddlewareSpecCircuitBreakerArgs struct { + // CheckPeriod is the interval between successive checks of the circuit breaker condition (when in standby state). + CheckPeriod pulumi.Input `pulumi:"checkPeriod"` + // Expression is the condition that triggers the tripped state. + Expression pulumi.StringPtrInput `pulumi:"expression"` + // FallbackDuration is the duration for which the circuit breaker will wait before trying to recover (from a tripped state). + FallbackDuration pulumi.Input `pulumi:"fallbackDuration"` + // RecoveryDuration is the duration for which the circuit breaker will try to recover (as soon as it is in recovering state). + RecoveryDuration pulumi.Input `pulumi:"recoveryDuration"` +} + +func (MiddlewareSpecCircuitBreakerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecCircuitBreaker)(nil)).Elem() +} + +func (i MiddlewareSpecCircuitBreakerArgs) ToMiddlewareSpecCircuitBreakerOutput() MiddlewareSpecCircuitBreakerOutput { + return i.ToMiddlewareSpecCircuitBreakerOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecCircuitBreakerArgs) ToMiddlewareSpecCircuitBreakerOutputWithContext(ctx context.Context) MiddlewareSpecCircuitBreakerOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecCircuitBreakerOutput) +} + +func (i MiddlewareSpecCircuitBreakerArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecCircuitBreaker] { + return pulumix.Output[MiddlewareSpecCircuitBreaker]{ + OutputState: i.ToMiddlewareSpecCircuitBreakerOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecCircuitBreakerArgs) ToMiddlewareSpecCircuitBreakerPtrOutput() MiddlewareSpecCircuitBreakerPtrOutput { + return i.ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecCircuitBreakerArgs) ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(ctx context.Context) MiddlewareSpecCircuitBreakerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecCircuitBreakerOutput).ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(ctx) +} + +// MiddlewareSpecCircuitBreakerPtrInput is an input type that accepts MiddlewareSpecCircuitBreakerArgs, MiddlewareSpecCircuitBreakerPtr and MiddlewareSpecCircuitBreakerPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecCircuitBreakerPtrInput` via: +// +// MiddlewareSpecCircuitBreakerArgs{...} +// +// or: +// +// nil +type MiddlewareSpecCircuitBreakerPtrInput interface { + pulumi.Input + + ToMiddlewareSpecCircuitBreakerPtrOutput() MiddlewareSpecCircuitBreakerPtrOutput + ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(context.Context) MiddlewareSpecCircuitBreakerPtrOutput +} + +type middlewareSpecCircuitBreakerPtrType MiddlewareSpecCircuitBreakerArgs + +func MiddlewareSpecCircuitBreakerPtr(v *MiddlewareSpecCircuitBreakerArgs) MiddlewareSpecCircuitBreakerPtrInput { + return (*middlewareSpecCircuitBreakerPtrType)(v) +} + +func (*middlewareSpecCircuitBreakerPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecCircuitBreaker)(nil)).Elem() +} + +func (i *middlewareSpecCircuitBreakerPtrType) ToMiddlewareSpecCircuitBreakerPtrOutput() MiddlewareSpecCircuitBreakerPtrOutput { + return i.ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecCircuitBreakerPtrType) ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(ctx context.Context) MiddlewareSpecCircuitBreakerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecCircuitBreakerPtrOutput) +} + +func (i *middlewareSpecCircuitBreakerPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecCircuitBreaker] { + return pulumix.Output[*MiddlewareSpecCircuitBreaker]{ + OutputState: i.ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(ctx).OutputState, + } +} + +// CircuitBreaker holds the circuit breaker configuration. +type MiddlewareSpecCircuitBreakerOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecCircuitBreakerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecCircuitBreaker)(nil)).Elem() +} + +func (o MiddlewareSpecCircuitBreakerOutput) ToMiddlewareSpecCircuitBreakerOutput() MiddlewareSpecCircuitBreakerOutput { + return o +} + +func (o MiddlewareSpecCircuitBreakerOutput) ToMiddlewareSpecCircuitBreakerOutputWithContext(ctx context.Context) MiddlewareSpecCircuitBreakerOutput { + return o +} + +func (o MiddlewareSpecCircuitBreakerOutput) ToMiddlewareSpecCircuitBreakerPtrOutput() MiddlewareSpecCircuitBreakerPtrOutput { + return o.ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecCircuitBreakerOutput) ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(ctx context.Context) MiddlewareSpecCircuitBreakerPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecCircuitBreaker) *MiddlewareSpecCircuitBreaker { + return &v + }).(MiddlewareSpecCircuitBreakerPtrOutput) +} + +func (o MiddlewareSpecCircuitBreakerOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecCircuitBreaker] { + return pulumix.Output[MiddlewareSpecCircuitBreaker]{ + OutputState: o.OutputState, + } +} + +// CheckPeriod is the interval between successive checks of the circuit breaker condition (when in standby state). +func (o MiddlewareSpecCircuitBreakerOutput) CheckPeriod() pulumi.AnyOutput { + return o.ApplyT(func(v MiddlewareSpecCircuitBreaker) interface{} { return v.CheckPeriod }).(pulumi.AnyOutput) +} + +// Expression is the condition that triggers the tripped state. +func (o MiddlewareSpecCircuitBreakerOutput) Expression() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecCircuitBreaker) *string { return v.Expression }).(pulumi.StringPtrOutput) +} + +// FallbackDuration is the duration for which the circuit breaker will wait before trying to recover (from a tripped state). +func (o MiddlewareSpecCircuitBreakerOutput) FallbackDuration() pulumi.AnyOutput { + return o.ApplyT(func(v MiddlewareSpecCircuitBreaker) interface{} { return v.FallbackDuration }).(pulumi.AnyOutput) +} + +// RecoveryDuration is the duration for which the circuit breaker will try to recover (as soon as it is in recovering state). +func (o MiddlewareSpecCircuitBreakerOutput) RecoveryDuration() pulumi.AnyOutput { + return o.ApplyT(func(v MiddlewareSpecCircuitBreaker) interface{} { return v.RecoveryDuration }).(pulumi.AnyOutput) +} + +type MiddlewareSpecCircuitBreakerPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecCircuitBreakerPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecCircuitBreaker)(nil)).Elem() +} + +func (o MiddlewareSpecCircuitBreakerPtrOutput) ToMiddlewareSpecCircuitBreakerPtrOutput() MiddlewareSpecCircuitBreakerPtrOutput { + return o +} + +func (o MiddlewareSpecCircuitBreakerPtrOutput) ToMiddlewareSpecCircuitBreakerPtrOutputWithContext(ctx context.Context) MiddlewareSpecCircuitBreakerPtrOutput { + return o +} + +func (o MiddlewareSpecCircuitBreakerPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecCircuitBreaker] { + return pulumix.Output[*MiddlewareSpecCircuitBreaker]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecCircuitBreakerPtrOutput) Elem() MiddlewareSpecCircuitBreakerOutput { + return o.ApplyT(func(v *MiddlewareSpecCircuitBreaker) MiddlewareSpecCircuitBreaker { + if v != nil { + return *v + } + var ret MiddlewareSpecCircuitBreaker + return ret + }).(MiddlewareSpecCircuitBreakerOutput) +} + +// CheckPeriod is the interval between successive checks of the circuit breaker condition (when in standby state). +func (o MiddlewareSpecCircuitBreakerPtrOutput) CheckPeriod() pulumi.AnyOutput { + return o.ApplyT(func(v *MiddlewareSpecCircuitBreaker) interface{} { + if v == nil { + return nil + } + return v.CheckPeriod + }).(pulumi.AnyOutput) +} + +// Expression is the condition that triggers the tripped state. +func (o MiddlewareSpecCircuitBreakerPtrOutput) Expression() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecCircuitBreaker) *string { + if v == nil { + return nil + } + return v.Expression + }).(pulumi.StringPtrOutput) +} + +// FallbackDuration is the duration for which the circuit breaker will wait before trying to recover (from a tripped state). +func (o MiddlewareSpecCircuitBreakerPtrOutput) FallbackDuration() pulumi.AnyOutput { + return o.ApplyT(func(v *MiddlewareSpecCircuitBreaker) interface{} { + if v == nil { + return nil + } + return v.FallbackDuration + }).(pulumi.AnyOutput) +} + +// RecoveryDuration is the duration for which the circuit breaker will try to recover (as soon as it is in recovering state). +func (o MiddlewareSpecCircuitBreakerPtrOutput) RecoveryDuration() pulumi.AnyOutput { + return o.ApplyT(func(v *MiddlewareSpecCircuitBreaker) interface{} { + if v == nil { + return nil + } + return v.RecoveryDuration + }).(pulumi.AnyOutput) +} + +// Compress holds the compress middleware configuration. This middleware compresses responses before sending them to the client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/ +type MiddlewareSpecCompress struct { + // ExcludedContentTypes defines the list of content types to compare the Content-Type header of the incoming requests and responses before compressing. + ExcludedContentTypes []string `pulumi:"excludedContentTypes"` + // MinResponseBodyBytes defines the minimum amount of bytes a response body must have to be compressed. Default: 1024. + MinResponseBodyBytes *int `pulumi:"minResponseBodyBytes"` +} + +// MiddlewareSpecCompressInput is an input type that accepts MiddlewareSpecCompressArgs and MiddlewareSpecCompressOutput values. +// You can construct a concrete instance of `MiddlewareSpecCompressInput` via: +// +// MiddlewareSpecCompressArgs{...} +type MiddlewareSpecCompressInput interface { + pulumi.Input + + ToMiddlewareSpecCompressOutput() MiddlewareSpecCompressOutput + ToMiddlewareSpecCompressOutputWithContext(context.Context) MiddlewareSpecCompressOutput +} + +// Compress holds the compress middleware configuration. This middleware compresses responses before sending them to the client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/ +type MiddlewareSpecCompressArgs struct { + // ExcludedContentTypes defines the list of content types to compare the Content-Type header of the incoming requests and responses before compressing. + ExcludedContentTypes pulumi.StringArrayInput `pulumi:"excludedContentTypes"` + // MinResponseBodyBytes defines the minimum amount of bytes a response body must have to be compressed. Default: 1024. + MinResponseBodyBytes pulumi.IntPtrInput `pulumi:"minResponseBodyBytes"` +} + +func (MiddlewareSpecCompressArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecCompress)(nil)).Elem() +} + +func (i MiddlewareSpecCompressArgs) ToMiddlewareSpecCompressOutput() MiddlewareSpecCompressOutput { + return i.ToMiddlewareSpecCompressOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecCompressArgs) ToMiddlewareSpecCompressOutputWithContext(ctx context.Context) MiddlewareSpecCompressOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecCompressOutput) +} + +func (i MiddlewareSpecCompressArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecCompress] { + return pulumix.Output[MiddlewareSpecCompress]{ + OutputState: i.ToMiddlewareSpecCompressOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecCompressArgs) ToMiddlewareSpecCompressPtrOutput() MiddlewareSpecCompressPtrOutput { + return i.ToMiddlewareSpecCompressPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecCompressArgs) ToMiddlewareSpecCompressPtrOutputWithContext(ctx context.Context) MiddlewareSpecCompressPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecCompressOutput).ToMiddlewareSpecCompressPtrOutputWithContext(ctx) +} + +// MiddlewareSpecCompressPtrInput is an input type that accepts MiddlewareSpecCompressArgs, MiddlewareSpecCompressPtr and MiddlewareSpecCompressPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecCompressPtrInput` via: +// +// MiddlewareSpecCompressArgs{...} +// +// or: +// +// nil +type MiddlewareSpecCompressPtrInput interface { + pulumi.Input + + ToMiddlewareSpecCompressPtrOutput() MiddlewareSpecCompressPtrOutput + ToMiddlewareSpecCompressPtrOutputWithContext(context.Context) MiddlewareSpecCompressPtrOutput +} + +type middlewareSpecCompressPtrType MiddlewareSpecCompressArgs + +func MiddlewareSpecCompressPtr(v *MiddlewareSpecCompressArgs) MiddlewareSpecCompressPtrInput { + return (*middlewareSpecCompressPtrType)(v) +} + +func (*middlewareSpecCompressPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecCompress)(nil)).Elem() +} + +func (i *middlewareSpecCompressPtrType) ToMiddlewareSpecCompressPtrOutput() MiddlewareSpecCompressPtrOutput { + return i.ToMiddlewareSpecCompressPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecCompressPtrType) ToMiddlewareSpecCompressPtrOutputWithContext(ctx context.Context) MiddlewareSpecCompressPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecCompressPtrOutput) +} + +func (i *middlewareSpecCompressPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecCompress] { + return pulumix.Output[*MiddlewareSpecCompress]{ + OutputState: i.ToMiddlewareSpecCompressPtrOutputWithContext(ctx).OutputState, + } +} + +// Compress holds the compress middleware configuration. This middleware compresses responses before sending them to the client, using gzip compression. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/compress/ +type MiddlewareSpecCompressOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecCompressOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecCompress)(nil)).Elem() +} + +func (o MiddlewareSpecCompressOutput) ToMiddlewareSpecCompressOutput() MiddlewareSpecCompressOutput { + return o +} + +func (o MiddlewareSpecCompressOutput) ToMiddlewareSpecCompressOutputWithContext(ctx context.Context) MiddlewareSpecCompressOutput { + return o +} + +func (o MiddlewareSpecCompressOutput) ToMiddlewareSpecCompressPtrOutput() MiddlewareSpecCompressPtrOutput { + return o.ToMiddlewareSpecCompressPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecCompressOutput) ToMiddlewareSpecCompressPtrOutputWithContext(ctx context.Context) MiddlewareSpecCompressPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecCompress) *MiddlewareSpecCompress { + return &v + }).(MiddlewareSpecCompressPtrOutput) +} + +func (o MiddlewareSpecCompressOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecCompress] { + return pulumix.Output[MiddlewareSpecCompress]{ + OutputState: o.OutputState, + } +} + +// ExcludedContentTypes defines the list of content types to compare the Content-Type header of the incoming requests and responses before compressing. +func (o MiddlewareSpecCompressOutput) ExcludedContentTypes() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecCompress) []string { return v.ExcludedContentTypes }).(pulumi.StringArrayOutput) +} + +// MinResponseBodyBytes defines the minimum amount of bytes a response body must have to be compressed. Default: 1024. +func (o MiddlewareSpecCompressOutput) MinResponseBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecCompress) *int { return v.MinResponseBodyBytes }).(pulumi.IntPtrOutput) +} + +type MiddlewareSpecCompressPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecCompressPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecCompress)(nil)).Elem() +} + +func (o MiddlewareSpecCompressPtrOutput) ToMiddlewareSpecCompressPtrOutput() MiddlewareSpecCompressPtrOutput { + return o +} + +func (o MiddlewareSpecCompressPtrOutput) ToMiddlewareSpecCompressPtrOutputWithContext(ctx context.Context) MiddlewareSpecCompressPtrOutput { + return o +} + +func (o MiddlewareSpecCompressPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecCompress] { + return pulumix.Output[*MiddlewareSpecCompress]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecCompressPtrOutput) Elem() MiddlewareSpecCompressOutput { + return o.ApplyT(func(v *MiddlewareSpecCompress) MiddlewareSpecCompress { + if v != nil { + return *v + } + var ret MiddlewareSpecCompress + return ret + }).(MiddlewareSpecCompressOutput) +} + +// ExcludedContentTypes defines the list of content types to compare the Content-Type header of the incoming requests and responses before compressing. +func (o MiddlewareSpecCompressPtrOutput) ExcludedContentTypes() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecCompress) []string { + if v == nil { + return nil + } + return v.ExcludedContentTypes + }).(pulumi.StringArrayOutput) +} + +// MinResponseBodyBytes defines the minimum amount of bytes a response body must have to be compressed. Default: 1024. +func (o MiddlewareSpecCompressPtrOutput) MinResponseBodyBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecCompress) *int { + if v == nil { + return nil + } + return v.MinResponseBodyBytes + }).(pulumi.IntPtrOutput) +} + +// ContentType holds the content-type middleware configuration. This middleware exists to enable the correct behavior until at least the default one can be changed in a future version. +type MiddlewareSpecContentType struct { + // AutoDetect specifies whether to let the `Content-Type` header, if it has not been set by the backend, be automatically set to a value derived from the contents of the response. As a proxy, the default behavior should be to leave the header alone, regardless of what the backend did with it. However, the historic default was to always auto-detect and set the header if it was nil, and it is going to be kept that way in order to support users currently relying on it. + AutoDetect *bool `pulumi:"autoDetect"` +} + +// MiddlewareSpecContentTypeInput is an input type that accepts MiddlewareSpecContentTypeArgs and MiddlewareSpecContentTypeOutput values. +// You can construct a concrete instance of `MiddlewareSpecContentTypeInput` via: +// +// MiddlewareSpecContentTypeArgs{...} +type MiddlewareSpecContentTypeInput interface { + pulumi.Input + + ToMiddlewareSpecContentTypeOutput() MiddlewareSpecContentTypeOutput + ToMiddlewareSpecContentTypeOutputWithContext(context.Context) MiddlewareSpecContentTypeOutput +} + +// ContentType holds the content-type middleware configuration. This middleware exists to enable the correct behavior until at least the default one can be changed in a future version. +type MiddlewareSpecContentTypeArgs struct { + // AutoDetect specifies whether to let the `Content-Type` header, if it has not been set by the backend, be automatically set to a value derived from the contents of the response. As a proxy, the default behavior should be to leave the header alone, regardless of what the backend did with it. However, the historic default was to always auto-detect and set the header if it was nil, and it is going to be kept that way in order to support users currently relying on it. + AutoDetect pulumi.BoolPtrInput `pulumi:"autoDetect"` +} + +func (MiddlewareSpecContentTypeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecContentType)(nil)).Elem() +} + +func (i MiddlewareSpecContentTypeArgs) ToMiddlewareSpecContentTypeOutput() MiddlewareSpecContentTypeOutput { + return i.ToMiddlewareSpecContentTypeOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecContentTypeArgs) ToMiddlewareSpecContentTypeOutputWithContext(ctx context.Context) MiddlewareSpecContentTypeOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecContentTypeOutput) +} + +func (i MiddlewareSpecContentTypeArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecContentType] { + return pulumix.Output[MiddlewareSpecContentType]{ + OutputState: i.ToMiddlewareSpecContentTypeOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecContentTypeArgs) ToMiddlewareSpecContentTypePtrOutput() MiddlewareSpecContentTypePtrOutput { + return i.ToMiddlewareSpecContentTypePtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecContentTypeArgs) ToMiddlewareSpecContentTypePtrOutputWithContext(ctx context.Context) MiddlewareSpecContentTypePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecContentTypeOutput).ToMiddlewareSpecContentTypePtrOutputWithContext(ctx) +} + +// MiddlewareSpecContentTypePtrInput is an input type that accepts MiddlewareSpecContentTypeArgs, MiddlewareSpecContentTypePtr and MiddlewareSpecContentTypePtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecContentTypePtrInput` via: +// +// MiddlewareSpecContentTypeArgs{...} +// +// or: +// +// nil +type MiddlewareSpecContentTypePtrInput interface { + pulumi.Input + + ToMiddlewareSpecContentTypePtrOutput() MiddlewareSpecContentTypePtrOutput + ToMiddlewareSpecContentTypePtrOutputWithContext(context.Context) MiddlewareSpecContentTypePtrOutput +} + +type middlewareSpecContentTypePtrType MiddlewareSpecContentTypeArgs + +func MiddlewareSpecContentTypePtr(v *MiddlewareSpecContentTypeArgs) MiddlewareSpecContentTypePtrInput { + return (*middlewareSpecContentTypePtrType)(v) +} + +func (*middlewareSpecContentTypePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecContentType)(nil)).Elem() +} + +func (i *middlewareSpecContentTypePtrType) ToMiddlewareSpecContentTypePtrOutput() MiddlewareSpecContentTypePtrOutput { + return i.ToMiddlewareSpecContentTypePtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecContentTypePtrType) ToMiddlewareSpecContentTypePtrOutputWithContext(ctx context.Context) MiddlewareSpecContentTypePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecContentTypePtrOutput) +} + +func (i *middlewareSpecContentTypePtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecContentType] { + return pulumix.Output[*MiddlewareSpecContentType]{ + OutputState: i.ToMiddlewareSpecContentTypePtrOutputWithContext(ctx).OutputState, + } +} + +// ContentType holds the content-type middleware configuration. This middleware exists to enable the correct behavior until at least the default one can be changed in a future version. +type MiddlewareSpecContentTypeOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecContentTypeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecContentType)(nil)).Elem() +} + +func (o MiddlewareSpecContentTypeOutput) ToMiddlewareSpecContentTypeOutput() MiddlewareSpecContentTypeOutput { + return o +} + +func (o MiddlewareSpecContentTypeOutput) ToMiddlewareSpecContentTypeOutputWithContext(ctx context.Context) MiddlewareSpecContentTypeOutput { + return o +} + +func (o MiddlewareSpecContentTypeOutput) ToMiddlewareSpecContentTypePtrOutput() MiddlewareSpecContentTypePtrOutput { + return o.ToMiddlewareSpecContentTypePtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecContentTypeOutput) ToMiddlewareSpecContentTypePtrOutputWithContext(ctx context.Context) MiddlewareSpecContentTypePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecContentType) *MiddlewareSpecContentType { + return &v + }).(MiddlewareSpecContentTypePtrOutput) +} + +func (o MiddlewareSpecContentTypeOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecContentType] { + return pulumix.Output[MiddlewareSpecContentType]{ + OutputState: o.OutputState, + } +} + +// AutoDetect specifies whether to let the `Content-Type` header, if it has not been set by the backend, be automatically set to a value derived from the contents of the response. As a proxy, the default behavior should be to leave the header alone, regardless of what the backend did with it. However, the historic default was to always auto-detect and set the header if it was nil, and it is going to be kept that way in order to support users currently relying on it. +func (o MiddlewareSpecContentTypeOutput) AutoDetect() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecContentType) *bool { return v.AutoDetect }).(pulumi.BoolPtrOutput) +} + +type MiddlewareSpecContentTypePtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecContentTypePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecContentType)(nil)).Elem() +} + +func (o MiddlewareSpecContentTypePtrOutput) ToMiddlewareSpecContentTypePtrOutput() MiddlewareSpecContentTypePtrOutput { + return o +} + +func (o MiddlewareSpecContentTypePtrOutput) ToMiddlewareSpecContentTypePtrOutputWithContext(ctx context.Context) MiddlewareSpecContentTypePtrOutput { + return o +} + +func (o MiddlewareSpecContentTypePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecContentType] { + return pulumix.Output[*MiddlewareSpecContentType]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecContentTypePtrOutput) Elem() MiddlewareSpecContentTypeOutput { + return o.ApplyT(func(v *MiddlewareSpecContentType) MiddlewareSpecContentType { + if v != nil { + return *v + } + var ret MiddlewareSpecContentType + return ret + }).(MiddlewareSpecContentTypeOutput) +} + +// AutoDetect specifies whether to let the `Content-Type` header, if it has not been set by the backend, be automatically set to a value derived from the contents of the response. As a proxy, the default behavior should be to leave the header alone, regardless of what the backend did with it. However, the historic default was to always auto-detect and set the header if it was nil, and it is going to be kept that way in order to support users currently relying on it. +func (o MiddlewareSpecContentTypePtrOutput) AutoDetect() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecContentType) *bool { + if v == nil { + return nil + } + return v.AutoDetect + }).(pulumi.BoolPtrOutput) +} + +// DigestAuth holds the digest auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/ +type MiddlewareSpecDigestAuth struct { + // HeaderField defines a header field to store the authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield + HeaderField *string `pulumi:"headerField"` + // Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. Default: traefik. + Realm *string `pulumi:"realm"` + // RemoveHeader defines whether to remove the authorization header before forwarding the request to the backend. + RemoveHeader *bool `pulumi:"removeHeader"` + // Secret is the name of the referenced Kubernetes Secret containing user credentials. + Secret *string `pulumi:"secret"` +} + +// MiddlewareSpecDigestAuthInput is an input type that accepts MiddlewareSpecDigestAuthArgs and MiddlewareSpecDigestAuthOutput values. +// You can construct a concrete instance of `MiddlewareSpecDigestAuthInput` via: +// +// MiddlewareSpecDigestAuthArgs{...} +type MiddlewareSpecDigestAuthInput interface { + pulumi.Input + + ToMiddlewareSpecDigestAuthOutput() MiddlewareSpecDigestAuthOutput + ToMiddlewareSpecDigestAuthOutputWithContext(context.Context) MiddlewareSpecDigestAuthOutput +} + +// DigestAuth holds the digest auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/ +type MiddlewareSpecDigestAuthArgs struct { + // HeaderField defines a header field to store the authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield + HeaderField pulumi.StringPtrInput `pulumi:"headerField"` + // Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. Default: traefik. + Realm pulumi.StringPtrInput `pulumi:"realm"` + // RemoveHeader defines whether to remove the authorization header before forwarding the request to the backend. + RemoveHeader pulumi.BoolPtrInput `pulumi:"removeHeader"` + // Secret is the name of the referenced Kubernetes Secret containing user credentials. + Secret pulumi.StringPtrInput `pulumi:"secret"` +} + +func (MiddlewareSpecDigestAuthArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecDigestAuth)(nil)).Elem() +} + +func (i MiddlewareSpecDigestAuthArgs) ToMiddlewareSpecDigestAuthOutput() MiddlewareSpecDigestAuthOutput { + return i.ToMiddlewareSpecDigestAuthOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecDigestAuthArgs) ToMiddlewareSpecDigestAuthOutputWithContext(ctx context.Context) MiddlewareSpecDigestAuthOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecDigestAuthOutput) +} + +func (i MiddlewareSpecDigestAuthArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecDigestAuth] { + return pulumix.Output[MiddlewareSpecDigestAuth]{ + OutputState: i.ToMiddlewareSpecDigestAuthOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecDigestAuthArgs) ToMiddlewareSpecDigestAuthPtrOutput() MiddlewareSpecDigestAuthPtrOutput { + return i.ToMiddlewareSpecDigestAuthPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecDigestAuthArgs) ToMiddlewareSpecDigestAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecDigestAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecDigestAuthOutput).ToMiddlewareSpecDigestAuthPtrOutputWithContext(ctx) +} + +// MiddlewareSpecDigestAuthPtrInput is an input type that accepts MiddlewareSpecDigestAuthArgs, MiddlewareSpecDigestAuthPtr and MiddlewareSpecDigestAuthPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecDigestAuthPtrInput` via: +// +// MiddlewareSpecDigestAuthArgs{...} +// +// or: +// +// nil +type MiddlewareSpecDigestAuthPtrInput interface { + pulumi.Input + + ToMiddlewareSpecDigestAuthPtrOutput() MiddlewareSpecDigestAuthPtrOutput + ToMiddlewareSpecDigestAuthPtrOutputWithContext(context.Context) MiddlewareSpecDigestAuthPtrOutput +} + +type middlewareSpecDigestAuthPtrType MiddlewareSpecDigestAuthArgs + +func MiddlewareSpecDigestAuthPtr(v *MiddlewareSpecDigestAuthArgs) MiddlewareSpecDigestAuthPtrInput { + return (*middlewareSpecDigestAuthPtrType)(v) +} + +func (*middlewareSpecDigestAuthPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecDigestAuth)(nil)).Elem() +} + +func (i *middlewareSpecDigestAuthPtrType) ToMiddlewareSpecDigestAuthPtrOutput() MiddlewareSpecDigestAuthPtrOutput { + return i.ToMiddlewareSpecDigestAuthPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecDigestAuthPtrType) ToMiddlewareSpecDigestAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecDigestAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecDigestAuthPtrOutput) +} + +func (i *middlewareSpecDigestAuthPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecDigestAuth] { + return pulumix.Output[*MiddlewareSpecDigestAuth]{ + OutputState: i.ToMiddlewareSpecDigestAuthPtrOutputWithContext(ctx).OutputState, + } +} + +// DigestAuth holds the digest auth middleware configuration. This middleware restricts access to your services to known users. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/digestauth/ +type MiddlewareSpecDigestAuthOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecDigestAuthOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecDigestAuth)(nil)).Elem() +} + +func (o MiddlewareSpecDigestAuthOutput) ToMiddlewareSpecDigestAuthOutput() MiddlewareSpecDigestAuthOutput { + return o +} + +func (o MiddlewareSpecDigestAuthOutput) ToMiddlewareSpecDigestAuthOutputWithContext(ctx context.Context) MiddlewareSpecDigestAuthOutput { + return o +} + +func (o MiddlewareSpecDigestAuthOutput) ToMiddlewareSpecDigestAuthPtrOutput() MiddlewareSpecDigestAuthPtrOutput { + return o.ToMiddlewareSpecDigestAuthPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecDigestAuthOutput) ToMiddlewareSpecDigestAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecDigestAuthPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecDigestAuth) *MiddlewareSpecDigestAuth { + return &v + }).(MiddlewareSpecDigestAuthPtrOutput) +} + +func (o MiddlewareSpecDigestAuthOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecDigestAuth] { + return pulumix.Output[MiddlewareSpecDigestAuth]{ + OutputState: o.OutputState, + } +} + +// HeaderField defines a header field to store the authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield +func (o MiddlewareSpecDigestAuthOutput) HeaderField() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecDigestAuth) *string { return v.HeaderField }).(pulumi.StringPtrOutput) +} + +// Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. Default: traefik. +func (o MiddlewareSpecDigestAuthOutput) Realm() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecDigestAuth) *string { return v.Realm }).(pulumi.StringPtrOutput) +} + +// RemoveHeader defines whether to remove the authorization header before forwarding the request to the backend. +func (o MiddlewareSpecDigestAuthOutput) RemoveHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecDigestAuth) *bool { return v.RemoveHeader }).(pulumi.BoolPtrOutput) +} + +// Secret is the name of the referenced Kubernetes Secret containing user credentials. +func (o MiddlewareSpecDigestAuthOutput) Secret() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecDigestAuth) *string { return v.Secret }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecDigestAuthPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecDigestAuthPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecDigestAuth)(nil)).Elem() +} + +func (o MiddlewareSpecDigestAuthPtrOutput) ToMiddlewareSpecDigestAuthPtrOutput() MiddlewareSpecDigestAuthPtrOutput { + return o +} + +func (o MiddlewareSpecDigestAuthPtrOutput) ToMiddlewareSpecDigestAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecDigestAuthPtrOutput { + return o +} + +func (o MiddlewareSpecDigestAuthPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecDigestAuth] { + return pulumix.Output[*MiddlewareSpecDigestAuth]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecDigestAuthPtrOutput) Elem() MiddlewareSpecDigestAuthOutput { + return o.ApplyT(func(v *MiddlewareSpecDigestAuth) MiddlewareSpecDigestAuth { + if v != nil { + return *v + } + var ret MiddlewareSpecDigestAuth + return ret + }).(MiddlewareSpecDigestAuthOutput) +} + +// HeaderField defines a header field to store the authenticated user. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/basicauth/#headerfield +func (o MiddlewareSpecDigestAuthPtrOutput) HeaderField() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecDigestAuth) *string { + if v == nil { + return nil + } + return v.HeaderField + }).(pulumi.StringPtrOutput) +} + +// Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. Default: traefik. +func (o MiddlewareSpecDigestAuthPtrOutput) Realm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecDigestAuth) *string { + if v == nil { + return nil + } + return v.Realm + }).(pulumi.StringPtrOutput) +} + +// RemoveHeader defines whether to remove the authorization header before forwarding the request to the backend. +func (o MiddlewareSpecDigestAuthPtrOutput) RemoveHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecDigestAuth) *bool { + if v == nil { + return nil + } + return v.RemoveHeader + }).(pulumi.BoolPtrOutput) +} + +// Secret is the name of the referenced Kubernetes Secret containing user credentials. +func (o MiddlewareSpecDigestAuthPtrOutput) Secret() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecDigestAuth) *string { + if v == nil { + return nil + } + return v.Secret + }).(pulumi.StringPtrOutput) +} + +// ErrorPage holds the custom error middleware configuration. This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/ +type MiddlewareSpecErrors struct { + // Query defines the URL for the error page (hosted by service). The {status} variable can be used in order to insert the status code in the URL. + Query *string `pulumi:"query"` + // Service defines the reference to a Kubernetes Service that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service + Service *MiddlewareSpecErrorsService `pulumi:"service"` + // Status defines which status or range of statuses should result in an error page. It can be either a status code as a number (500), as multiple comma-separated numbers (500,502), as ranges by separating two codes with a dash (500-599), or a combination of the two (404,418,500-599). + Status []string `pulumi:"status"` +} + +// MiddlewareSpecErrorsInput is an input type that accepts MiddlewareSpecErrorsArgs and MiddlewareSpecErrorsOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsInput` via: +// +// MiddlewareSpecErrorsArgs{...} +type MiddlewareSpecErrorsInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsOutput() MiddlewareSpecErrorsOutput + ToMiddlewareSpecErrorsOutputWithContext(context.Context) MiddlewareSpecErrorsOutput +} + +// ErrorPage holds the custom error middleware configuration. This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/ +type MiddlewareSpecErrorsArgs struct { + // Query defines the URL for the error page (hosted by service). The {status} variable can be used in order to insert the status code in the URL. + Query pulumi.StringPtrInput `pulumi:"query"` + // Service defines the reference to a Kubernetes Service that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service + Service MiddlewareSpecErrorsServicePtrInput `pulumi:"service"` + // Status defines which status or range of statuses should result in an error page. It can be either a status code as a number (500), as multiple comma-separated numbers (500,502), as ranges by separating two codes with a dash (500-599), or a combination of the two (404,418,500-599). + Status pulumi.StringArrayInput `pulumi:"status"` +} + +func (MiddlewareSpecErrorsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrors)(nil)).Elem() +} + +func (i MiddlewareSpecErrorsArgs) ToMiddlewareSpecErrorsOutput() MiddlewareSpecErrorsOutput { + return i.ToMiddlewareSpecErrorsOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsArgs) ToMiddlewareSpecErrorsOutputWithContext(ctx context.Context) MiddlewareSpecErrorsOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsOutput) +} + +func (i MiddlewareSpecErrorsArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrors] { + return pulumix.Output[MiddlewareSpecErrors]{ + OutputState: i.ToMiddlewareSpecErrorsOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecErrorsArgs) ToMiddlewareSpecErrorsPtrOutput() MiddlewareSpecErrorsPtrOutput { + return i.ToMiddlewareSpecErrorsPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsArgs) ToMiddlewareSpecErrorsPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsOutput).ToMiddlewareSpecErrorsPtrOutputWithContext(ctx) +} + +// MiddlewareSpecErrorsPtrInput is an input type that accepts MiddlewareSpecErrorsArgs, MiddlewareSpecErrorsPtr and MiddlewareSpecErrorsPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsPtrInput` via: +// +// MiddlewareSpecErrorsArgs{...} +// +// or: +// +// nil +type MiddlewareSpecErrorsPtrInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsPtrOutput() MiddlewareSpecErrorsPtrOutput + ToMiddlewareSpecErrorsPtrOutputWithContext(context.Context) MiddlewareSpecErrorsPtrOutput +} + +type middlewareSpecErrorsPtrType MiddlewareSpecErrorsArgs + +func MiddlewareSpecErrorsPtr(v *MiddlewareSpecErrorsArgs) MiddlewareSpecErrorsPtrInput { + return (*middlewareSpecErrorsPtrType)(v) +} + +func (*middlewareSpecErrorsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrors)(nil)).Elem() +} + +func (i *middlewareSpecErrorsPtrType) ToMiddlewareSpecErrorsPtrOutput() MiddlewareSpecErrorsPtrOutput { + return i.ToMiddlewareSpecErrorsPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecErrorsPtrType) ToMiddlewareSpecErrorsPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsPtrOutput) +} + +func (i *middlewareSpecErrorsPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrors] { + return pulumix.Output[*MiddlewareSpecErrors]{ + OutputState: i.ToMiddlewareSpecErrorsPtrOutputWithContext(ctx).OutputState, + } +} + +// ErrorPage holds the custom error middleware configuration. This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/ +type MiddlewareSpecErrorsOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrors)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsOutput) ToMiddlewareSpecErrorsOutput() MiddlewareSpecErrorsOutput { + return o +} + +func (o MiddlewareSpecErrorsOutput) ToMiddlewareSpecErrorsOutputWithContext(ctx context.Context) MiddlewareSpecErrorsOutput { + return o +} + +func (o MiddlewareSpecErrorsOutput) ToMiddlewareSpecErrorsPtrOutput() MiddlewareSpecErrorsPtrOutput { + return o.ToMiddlewareSpecErrorsPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecErrorsOutput) ToMiddlewareSpecErrorsPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecErrors) *MiddlewareSpecErrors { + return &v + }).(MiddlewareSpecErrorsPtrOutput) +} + +func (o MiddlewareSpecErrorsOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrors] { + return pulumix.Output[MiddlewareSpecErrors]{ + OutputState: o.OutputState, + } +} + +// Query defines the URL for the error page (hosted by service). The {status} variable can be used in order to insert the status code in the URL. +func (o MiddlewareSpecErrorsOutput) Query() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrors) *string { return v.Query }).(pulumi.StringPtrOutput) +} + +// Service defines the reference to a Kubernetes Service that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service +func (o MiddlewareSpecErrorsOutput) Service() MiddlewareSpecErrorsServicePtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrors) *MiddlewareSpecErrorsService { return v.Service }).(MiddlewareSpecErrorsServicePtrOutput) +} + +// Status defines which status or range of statuses should result in an error page. It can be either a status code as a number (500), as multiple comma-separated numbers (500,502), as ranges by separating two codes with a dash (500-599), or a combination of the two (404,418,500-599). +func (o MiddlewareSpecErrorsOutput) Status() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecErrors) []string { return v.Status }).(pulumi.StringArrayOutput) +} + +type MiddlewareSpecErrorsPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrors)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsPtrOutput) ToMiddlewareSpecErrorsPtrOutput() MiddlewareSpecErrorsPtrOutput { + return o +} + +func (o MiddlewareSpecErrorsPtrOutput) ToMiddlewareSpecErrorsPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsPtrOutput { + return o +} + +func (o MiddlewareSpecErrorsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrors] { + return pulumix.Output[*MiddlewareSpecErrors]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecErrorsPtrOutput) Elem() MiddlewareSpecErrorsOutput { + return o.ApplyT(func(v *MiddlewareSpecErrors) MiddlewareSpecErrors { + if v != nil { + return *v + } + var ret MiddlewareSpecErrors + return ret + }).(MiddlewareSpecErrorsOutput) +} + +// Query defines the URL for the error page (hosted by service). The {status} variable can be used in order to insert the status code in the URL. +func (o MiddlewareSpecErrorsPtrOutput) Query() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrors) *string { + if v == nil { + return nil + } + return v.Query + }).(pulumi.StringPtrOutput) +} + +// Service defines the reference to a Kubernetes Service that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service +func (o MiddlewareSpecErrorsPtrOutput) Service() MiddlewareSpecErrorsServicePtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrors) *MiddlewareSpecErrorsService { + if v == nil { + return nil + } + return v.Service + }).(MiddlewareSpecErrorsServicePtrOutput) +} + +// Status defines which status or range of statuses should result in an error page. It can be either a status code as a number (500), as multiple comma-separated numbers (500,502), as ranges by separating two codes with a dash (500-599), or a combination of the two (404,418,500-599). +func (o MiddlewareSpecErrorsPtrOutput) Status() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecErrors) []string { + if v == nil { + return nil + } + return v.Status + }).(pulumi.StringArrayOutput) +} + +// Service defines the reference to a Kubernetes Service that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service +type MiddlewareSpecErrorsService struct { + // Kind defines the kind of the Service. + Kind *string `pulumi:"kind"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace *string `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB *bool `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader *bool `pulumi:"passHostHeader"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port interface{} `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding *MiddlewareSpecErrorsServiceResponseForwarding `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme *string `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport *string `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky *MiddlewareSpecErrorsServiceSticky `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy *string `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight *int `pulumi:"weight"` +} + +// MiddlewareSpecErrorsServiceInput is an input type that accepts MiddlewareSpecErrorsServiceArgs and MiddlewareSpecErrorsServiceOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsServiceInput` via: +// +// MiddlewareSpecErrorsServiceArgs{...} +type MiddlewareSpecErrorsServiceInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsServiceOutput() MiddlewareSpecErrorsServiceOutput + ToMiddlewareSpecErrorsServiceOutputWithContext(context.Context) MiddlewareSpecErrorsServiceOutput +} + +// Service defines the reference to a Kubernetes Service that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service +type MiddlewareSpecErrorsServiceArgs struct { + // Kind defines the kind of the Service. + Kind pulumi.StringPtrInput `pulumi:"kind"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB pulumi.BoolPtrInput `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader pulumi.BoolPtrInput `pulumi:"passHostHeader"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port pulumi.Input `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding MiddlewareSpecErrorsServiceResponseForwardingPtrInput `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme pulumi.StringPtrInput `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport pulumi.StringPtrInput `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky MiddlewareSpecErrorsServiceStickyPtrInput `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy pulumi.StringPtrInput `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (MiddlewareSpecErrorsServiceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrorsService)(nil)).Elem() +} + +func (i MiddlewareSpecErrorsServiceArgs) ToMiddlewareSpecErrorsServiceOutput() MiddlewareSpecErrorsServiceOutput { + return i.ToMiddlewareSpecErrorsServiceOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsServiceArgs) ToMiddlewareSpecErrorsServiceOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceOutput) +} + +func (i MiddlewareSpecErrorsServiceArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrorsService] { + return pulumix.Output[MiddlewareSpecErrorsService]{ + OutputState: i.ToMiddlewareSpecErrorsServiceOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecErrorsServiceArgs) ToMiddlewareSpecErrorsServicePtrOutput() MiddlewareSpecErrorsServicePtrOutput { + return i.ToMiddlewareSpecErrorsServicePtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsServiceArgs) ToMiddlewareSpecErrorsServicePtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServicePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceOutput).ToMiddlewareSpecErrorsServicePtrOutputWithContext(ctx) +} + +// MiddlewareSpecErrorsServicePtrInput is an input type that accepts MiddlewareSpecErrorsServiceArgs, MiddlewareSpecErrorsServicePtr and MiddlewareSpecErrorsServicePtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsServicePtrInput` via: +// +// MiddlewareSpecErrorsServiceArgs{...} +// +// or: +// +// nil +type MiddlewareSpecErrorsServicePtrInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsServicePtrOutput() MiddlewareSpecErrorsServicePtrOutput + ToMiddlewareSpecErrorsServicePtrOutputWithContext(context.Context) MiddlewareSpecErrorsServicePtrOutput +} + +type middlewareSpecErrorsServicePtrType MiddlewareSpecErrorsServiceArgs + +func MiddlewareSpecErrorsServicePtr(v *MiddlewareSpecErrorsServiceArgs) MiddlewareSpecErrorsServicePtrInput { + return (*middlewareSpecErrorsServicePtrType)(v) +} + +func (*middlewareSpecErrorsServicePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrorsService)(nil)).Elem() +} + +func (i *middlewareSpecErrorsServicePtrType) ToMiddlewareSpecErrorsServicePtrOutput() MiddlewareSpecErrorsServicePtrOutput { + return i.ToMiddlewareSpecErrorsServicePtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecErrorsServicePtrType) ToMiddlewareSpecErrorsServicePtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServicePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServicePtrOutput) +} + +func (i *middlewareSpecErrorsServicePtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrorsService] { + return pulumix.Output[*MiddlewareSpecErrorsService]{ + OutputState: i.ToMiddlewareSpecErrorsServicePtrOutputWithContext(ctx).OutputState, + } +} + +// Service defines the reference to a Kubernetes Service that will serve the error page. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/errorpages/#service +type MiddlewareSpecErrorsServiceOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsServiceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrorsService)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsServiceOutput) ToMiddlewareSpecErrorsServiceOutput() MiddlewareSpecErrorsServiceOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceOutput) ToMiddlewareSpecErrorsServiceOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceOutput) ToMiddlewareSpecErrorsServicePtrOutput() MiddlewareSpecErrorsServicePtrOutput { + return o.ToMiddlewareSpecErrorsServicePtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecErrorsServiceOutput) ToMiddlewareSpecErrorsServicePtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServicePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecErrorsService) *MiddlewareSpecErrorsService { + return &v + }).(MiddlewareSpecErrorsServicePtrOutput) +} + +func (o MiddlewareSpecErrorsServiceOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrorsService] { + return pulumix.Output[MiddlewareSpecErrorsService]{ + OutputState: o.OutputState, + } +} + +// Kind defines the kind of the Service. +func (o MiddlewareSpecErrorsServiceOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *string { return v.Kind }).(pulumi.StringPtrOutput) +} + +// Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. +func (o MiddlewareSpecErrorsServiceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. +func (o MiddlewareSpecErrorsServiceOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. +func (o MiddlewareSpecErrorsServiceOutput) NativeLB() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *bool { return v.NativeLB }).(pulumi.BoolPtrOutput) +} + +// PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. +func (o MiddlewareSpecErrorsServiceOutput) PassHostHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *bool { return v.PassHostHeader }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of a Kubernetes Service. This can be a reference to a named port. +func (o MiddlewareSpecErrorsServiceOutput) Port() pulumi.AnyOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) interface{} { return v.Port }).(pulumi.AnyOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +func (o MiddlewareSpecErrorsServiceOutput) ResponseForwarding() MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *MiddlewareSpecErrorsServiceResponseForwarding { + return v.ResponseForwarding + }).(MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) +} + +// Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. +func (o MiddlewareSpecErrorsServiceOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *string { return v.Scheme }).(pulumi.StringPtrOutput) +} + +// ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. +func (o MiddlewareSpecErrorsServiceOutput) ServersTransport() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *string { return v.ServersTransport }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +func (o MiddlewareSpecErrorsServiceOutput) Sticky() MiddlewareSpecErrorsServiceStickyPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *MiddlewareSpecErrorsServiceSticky { return v.Sticky }).(MiddlewareSpecErrorsServiceStickyPtrOutput) +} + +// Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. +func (o MiddlewareSpecErrorsServiceOutput) Strategy() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *string { return v.Strategy }).(pulumi.StringPtrOutput) +} + +// Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). +func (o MiddlewareSpecErrorsServiceOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsService) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type MiddlewareSpecErrorsServicePtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsServicePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrorsService)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsServicePtrOutput) ToMiddlewareSpecErrorsServicePtrOutput() MiddlewareSpecErrorsServicePtrOutput { + return o +} + +func (o MiddlewareSpecErrorsServicePtrOutput) ToMiddlewareSpecErrorsServicePtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServicePtrOutput { + return o +} + +func (o MiddlewareSpecErrorsServicePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrorsService] { + return pulumix.Output[*MiddlewareSpecErrorsService]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecErrorsServicePtrOutput) Elem() MiddlewareSpecErrorsServiceOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) MiddlewareSpecErrorsService { + if v != nil { + return *v + } + var ret MiddlewareSpecErrorsService + return ret + }).(MiddlewareSpecErrorsServiceOutput) +} + +// Kind defines the kind of the Service. +func (o MiddlewareSpecErrorsServicePtrOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *string { + if v == nil { + return nil + } + return v.Kind + }).(pulumi.StringPtrOutput) +} + +// Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. +func (o MiddlewareSpecErrorsServicePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. +func (o MiddlewareSpecErrorsServicePtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *string { + if v == nil { + return nil + } + return v.Namespace + }).(pulumi.StringPtrOutput) +} + +// NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. +func (o MiddlewareSpecErrorsServicePtrOutput) NativeLB() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *bool { + if v == nil { + return nil + } + return v.NativeLB + }).(pulumi.BoolPtrOutput) +} + +// PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. +func (o MiddlewareSpecErrorsServicePtrOutput) PassHostHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *bool { + if v == nil { + return nil + } + return v.PassHostHeader + }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of a Kubernetes Service. This can be a reference to a named port. +func (o MiddlewareSpecErrorsServicePtrOutput) Port() pulumi.AnyOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) interface{} { + if v == nil { + return nil + } + return v.Port + }).(pulumi.AnyOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +func (o MiddlewareSpecErrorsServicePtrOutput) ResponseForwarding() MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *MiddlewareSpecErrorsServiceResponseForwarding { + if v == nil { + return nil + } + return v.ResponseForwarding + }).(MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) +} + +// Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. +func (o MiddlewareSpecErrorsServicePtrOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *string { + if v == nil { + return nil + } + return v.Scheme + }).(pulumi.StringPtrOutput) +} + +// ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. +func (o MiddlewareSpecErrorsServicePtrOutput) ServersTransport() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *string { + if v == nil { + return nil + } + return v.ServersTransport + }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +func (o MiddlewareSpecErrorsServicePtrOutput) Sticky() MiddlewareSpecErrorsServiceStickyPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *MiddlewareSpecErrorsServiceSticky { + if v == nil { + return nil + } + return v.Sticky + }).(MiddlewareSpecErrorsServiceStickyPtrOutput) +} + +// Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. +func (o MiddlewareSpecErrorsServicePtrOutput) Strategy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *string { + if v == nil { + return nil + } + return v.Strategy + }).(pulumi.StringPtrOutput) +} + +// Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). +func (o MiddlewareSpecErrorsServicePtrOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsService) *int { + if v == nil { + return nil + } + return v.Weight + }).(pulumi.IntPtrOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type MiddlewareSpecErrorsServiceResponseForwarding struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval *string `pulumi:"flushInterval"` +} + +// MiddlewareSpecErrorsServiceResponseForwardingInput is an input type that accepts MiddlewareSpecErrorsServiceResponseForwardingArgs and MiddlewareSpecErrorsServiceResponseForwardingOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsServiceResponseForwardingInput` via: +// +// MiddlewareSpecErrorsServiceResponseForwardingArgs{...} +type MiddlewareSpecErrorsServiceResponseForwardingInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsServiceResponseForwardingOutput() MiddlewareSpecErrorsServiceResponseForwardingOutput + ToMiddlewareSpecErrorsServiceResponseForwardingOutputWithContext(context.Context) MiddlewareSpecErrorsServiceResponseForwardingOutput +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type MiddlewareSpecErrorsServiceResponseForwardingArgs struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval pulumi.StringPtrInput `pulumi:"flushInterval"` +} + +func (MiddlewareSpecErrorsServiceResponseForwardingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrorsServiceResponseForwarding)(nil)).Elem() +} + +func (i MiddlewareSpecErrorsServiceResponseForwardingArgs) ToMiddlewareSpecErrorsServiceResponseForwardingOutput() MiddlewareSpecErrorsServiceResponseForwardingOutput { + return i.ToMiddlewareSpecErrorsServiceResponseForwardingOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsServiceResponseForwardingArgs) ToMiddlewareSpecErrorsServiceResponseForwardingOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceResponseForwardingOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceResponseForwardingOutput) +} + +func (i MiddlewareSpecErrorsServiceResponseForwardingArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrorsServiceResponseForwarding] { + return pulumix.Output[MiddlewareSpecErrorsServiceResponseForwarding]{ + OutputState: i.ToMiddlewareSpecErrorsServiceResponseForwardingOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecErrorsServiceResponseForwardingArgs) ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutput() MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return i.ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsServiceResponseForwardingArgs) ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceResponseForwardingOutput).ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(ctx) +} + +// MiddlewareSpecErrorsServiceResponseForwardingPtrInput is an input type that accepts MiddlewareSpecErrorsServiceResponseForwardingArgs, MiddlewareSpecErrorsServiceResponseForwardingPtr and MiddlewareSpecErrorsServiceResponseForwardingPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsServiceResponseForwardingPtrInput` via: +// +// MiddlewareSpecErrorsServiceResponseForwardingArgs{...} +// +// or: +// +// nil +type MiddlewareSpecErrorsServiceResponseForwardingPtrInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutput() MiddlewareSpecErrorsServiceResponseForwardingPtrOutput + ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(context.Context) MiddlewareSpecErrorsServiceResponseForwardingPtrOutput +} + +type middlewareSpecErrorsServiceResponseForwardingPtrType MiddlewareSpecErrorsServiceResponseForwardingArgs + +func MiddlewareSpecErrorsServiceResponseForwardingPtr(v *MiddlewareSpecErrorsServiceResponseForwardingArgs) MiddlewareSpecErrorsServiceResponseForwardingPtrInput { + return (*middlewareSpecErrorsServiceResponseForwardingPtrType)(v) +} + +func (*middlewareSpecErrorsServiceResponseForwardingPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrorsServiceResponseForwarding)(nil)).Elem() +} + +func (i *middlewareSpecErrorsServiceResponseForwardingPtrType) ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutput() MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return i.ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecErrorsServiceResponseForwardingPtrType) ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) +} + +func (i *middlewareSpecErrorsServiceResponseForwardingPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrorsServiceResponseForwarding] { + return pulumix.Output[*MiddlewareSpecErrorsServiceResponseForwarding]{ + OutputState: i.ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(ctx).OutputState, + } +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type MiddlewareSpecErrorsServiceResponseForwardingOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsServiceResponseForwardingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrorsServiceResponseForwarding)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsServiceResponseForwardingOutput) ToMiddlewareSpecErrorsServiceResponseForwardingOutput() MiddlewareSpecErrorsServiceResponseForwardingOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceResponseForwardingOutput) ToMiddlewareSpecErrorsServiceResponseForwardingOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceResponseForwardingOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceResponseForwardingOutput) ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutput() MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return o.ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecErrorsServiceResponseForwardingOutput) ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecErrorsServiceResponseForwarding) *MiddlewareSpecErrorsServiceResponseForwarding { + return &v + }).(MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) +} + +func (o MiddlewareSpecErrorsServiceResponseForwardingOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrorsServiceResponseForwarding] { + return pulumix.Output[MiddlewareSpecErrorsServiceResponseForwarding]{ + OutputState: o.OutputState, + } +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o MiddlewareSpecErrorsServiceResponseForwardingOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsServiceResponseForwarding) *string { return v.FlushInterval }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecErrorsServiceResponseForwardingPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrorsServiceResponseForwarding)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutput() MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) ToMiddlewareSpecErrorsServiceResponseForwardingPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceResponseForwardingPtrOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrorsServiceResponseForwarding] { + return pulumix.Output[*MiddlewareSpecErrorsServiceResponseForwarding]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) Elem() MiddlewareSpecErrorsServiceResponseForwardingOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsServiceResponseForwarding) MiddlewareSpecErrorsServiceResponseForwarding { + if v != nil { + return *v + } + var ret MiddlewareSpecErrorsServiceResponseForwarding + return ret + }).(MiddlewareSpecErrorsServiceResponseForwardingOutput) +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o MiddlewareSpecErrorsServiceResponseForwardingPtrOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsServiceResponseForwarding) *string { + if v == nil { + return nil + } + return v.FlushInterval + }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type MiddlewareSpecErrorsServiceSticky struct { + // Cookie defines the sticky cookie configuration. + Cookie *MiddlewareSpecErrorsServiceStickyCookie `pulumi:"cookie"` +} + +// MiddlewareSpecErrorsServiceStickyInput is an input type that accepts MiddlewareSpecErrorsServiceStickyArgs and MiddlewareSpecErrorsServiceStickyOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsServiceStickyInput` via: +// +// MiddlewareSpecErrorsServiceStickyArgs{...} +type MiddlewareSpecErrorsServiceStickyInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsServiceStickyOutput() MiddlewareSpecErrorsServiceStickyOutput + ToMiddlewareSpecErrorsServiceStickyOutputWithContext(context.Context) MiddlewareSpecErrorsServiceStickyOutput +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type MiddlewareSpecErrorsServiceStickyArgs struct { + // Cookie defines the sticky cookie configuration. + Cookie MiddlewareSpecErrorsServiceStickyCookiePtrInput `pulumi:"cookie"` +} + +func (MiddlewareSpecErrorsServiceStickyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrorsServiceSticky)(nil)).Elem() +} + +func (i MiddlewareSpecErrorsServiceStickyArgs) ToMiddlewareSpecErrorsServiceStickyOutput() MiddlewareSpecErrorsServiceStickyOutput { + return i.ToMiddlewareSpecErrorsServiceStickyOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsServiceStickyArgs) ToMiddlewareSpecErrorsServiceStickyOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceStickyOutput) +} + +func (i MiddlewareSpecErrorsServiceStickyArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrorsServiceSticky] { + return pulumix.Output[MiddlewareSpecErrorsServiceSticky]{ + OutputState: i.ToMiddlewareSpecErrorsServiceStickyOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecErrorsServiceStickyArgs) ToMiddlewareSpecErrorsServiceStickyPtrOutput() MiddlewareSpecErrorsServiceStickyPtrOutput { + return i.ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsServiceStickyArgs) ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceStickyOutput).ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(ctx) +} + +// MiddlewareSpecErrorsServiceStickyPtrInput is an input type that accepts MiddlewareSpecErrorsServiceStickyArgs, MiddlewareSpecErrorsServiceStickyPtr and MiddlewareSpecErrorsServiceStickyPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsServiceStickyPtrInput` via: +// +// MiddlewareSpecErrorsServiceStickyArgs{...} +// +// or: +// +// nil +type MiddlewareSpecErrorsServiceStickyPtrInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsServiceStickyPtrOutput() MiddlewareSpecErrorsServiceStickyPtrOutput + ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(context.Context) MiddlewareSpecErrorsServiceStickyPtrOutput +} + +type middlewareSpecErrorsServiceStickyPtrType MiddlewareSpecErrorsServiceStickyArgs + +func MiddlewareSpecErrorsServiceStickyPtr(v *MiddlewareSpecErrorsServiceStickyArgs) MiddlewareSpecErrorsServiceStickyPtrInput { + return (*middlewareSpecErrorsServiceStickyPtrType)(v) +} + +func (*middlewareSpecErrorsServiceStickyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrorsServiceSticky)(nil)).Elem() +} + +func (i *middlewareSpecErrorsServiceStickyPtrType) ToMiddlewareSpecErrorsServiceStickyPtrOutput() MiddlewareSpecErrorsServiceStickyPtrOutput { + return i.ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecErrorsServiceStickyPtrType) ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceStickyPtrOutput) +} + +func (i *middlewareSpecErrorsServiceStickyPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrorsServiceSticky] { + return pulumix.Output[*MiddlewareSpecErrorsServiceSticky]{ + OutputState: i.ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(ctx).OutputState, + } +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type MiddlewareSpecErrorsServiceStickyOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsServiceStickyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrorsServiceSticky)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsServiceStickyOutput) ToMiddlewareSpecErrorsServiceStickyOutput() MiddlewareSpecErrorsServiceStickyOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceStickyOutput) ToMiddlewareSpecErrorsServiceStickyOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceStickyOutput) ToMiddlewareSpecErrorsServiceStickyPtrOutput() MiddlewareSpecErrorsServiceStickyPtrOutput { + return o.ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecErrorsServiceStickyOutput) ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecErrorsServiceSticky) *MiddlewareSpecErrorsServiceSticky { + return &v + }).(MiddlewareSpecErrorsServiceStickyPtrOutput) +} + +func (o MiddlewareSpecErrorsServiceStickyOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrorsServiceSticky] { + return pulumix.Output[MiddlewareSpecErrorsServiceSticky]{ + OutputState: o.OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +func (o MiddlewareSpecErrorsServiceStickyOutput) Cookie() MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsServiceSticky) *MiddlewareSpecErrorsServiceStickyCookie { return v.Cookie }).(MiddlewareSpecErrorsServiceStickyCookiePtrOutput) +} + +type MiddlewareSpecErrorsServiceStickyPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsServiceStickyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrorsServiceSticky)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsServiceStickyPtrOutput) ToMiddlewareSpecErrorsServiceStickyPtrOutput() MiddlewareSpecErrorsServiceStickyPtrOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceStickyPtrOutput) ToMiddlewareSpecErrorsServiceStickyPtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyPtrOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceStickyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrorsServiceSticky] { + return pulumix.Output[*MiddlewareSpecErrorsServiceSticky]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecErrorsServiceStickyPtrOutput) Elem() MiddlewareSpecErrorsServiceStickyOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsServiceSticky) MiddlewareSpecErrorsServiceSticky { + if v != nil { + return *v + } + var ret MiddlewareSpecErrorsServiceSticky + return ret + }).(MiddlewareSpecErrorsServiceStickyOutput) +} + +// Cookie defines the sticky cookie configuration. +func (o MiddlewareSpecErrorsServiceStickyPtrOutput) Cookie() MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsServiceSticky) *MiddlewareSpecErrorsServiceStickyCookie { + if v == nil { + return nil + } + return v.Cookie + }).(MiddlewareSpecErrorsServiceStickyCookiePtrOutput) +} + +// Cookie defines the sticky cookie configuration. +type MiddlewareSpecErrorsServiceStickyCookie struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly *bool `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name *string `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite *string `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure *bool `pulumi:"secure"` +} + +// MiddlewareSpecErrorsServiceStickyCookieInput is an input type that accepts MiddlewareSpecErrorsServiceStickyCookieArgs and MiddlewareSpecErrorsServiceStickyCookieOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsServiceStickyCookieInput` via: +// +// MiddlewareSpecErrorsServiceStickyCookieArgs{...} +type MiddlewareSpecErrorsServiceStickyCookieInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsServiceStickyCookieOutput() MiddlewareSpecErrorsServiceStickyCookieOutput + ToMiddlewareSpecErrorsServiceStickyCookieOutputWithContext(context.Context) MiddlewareSpecErrorsServiceStickyCookieOutput +} + +// Cookie defines the sticky cookie configuration. +type MiddlewareSpecErrorsServiceStickyCookieArgs struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly pulumi.BoolPtrInput `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name pulumi.StringPtrInput `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite pulumi.StringPtrInput `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure pulumi.BoolPtrInput `pulumi:"secure"` +} + +func (MiddlewareSpecErrorsServiceStickyCookieArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrorsServiceStickyCookie)(nil)).Elem() +} + +func (i MiddlewareSpecErrorsServiceStickyCookieArgs) ToMiddlewareSpecErrorsServiceStickyCookieOutput() MiddlewareSpecErrorsServiceStickyCookieOutput { + return i.ToMiddlewareSpecErrorsServiceStickyCookieOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsServiceStickyCookieArgs) ToMiddlewareSpecErrorsServiceStickyCookieOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyCookieOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceStickyCookieOutput) +} + +func (i MiddlewareSpecErrorsServiceStickyCookieArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrorsServiceStickyCookie] { + return pulumix.Output[MiddlewareSpecErrorsServiceStickyCookie]{ + OutputState: i.ToMiddlewareSpecErrorsServiceStickyCookieOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecErrorsServiceStickyCookieArgs) ToMiddlewareSpecErrorsServiceStickyCookiePtrOutput() MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return i.ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecErrorsServiceStickyCookieArgs) ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceStickyCookieOutput).ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(ctx) +} + +// MiddlewareSpecErrorsServiceStickyCookiePtrInput is an input type that accepts MiddlewareSpecErrorsServiceStickyCookieArgs, MiddlewareSpecErrorsServiceStickyCookiePtr and MiddlewareSpecErrorsServiceStickyCookiePtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecErrorsServiceStickyCookiePtrInput` via: +// +// MiddlewareSpecErrorsServiceStickyCookieArgs{...} +// +// or: +// +// nil +type MiddlewareSpecErrorsServiceStickyCookiePtrInput interface { + pulumi.Input + + ToMiddlewareSpecErrorsServiceStickyCookiePtrOutput() MiddlewareSpecErrorsServiceStickyCookiePtrOutput + ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(context.Context) MiddlewareSpecErrorsServiceStickyCookiePtrOutput +} + +type middlewareSpecErrorsServiceStickyCookiePtrType MiddlewareSpecErrorsServiceStickyCookieArgs + +func MiddlewareSpecErrorsServiceStickyCookiePtr(v *MiddlewareSpecErrorsServiceStickyCookieArgs) MiddlewareSpecErrorsServiceStickyCookiePtrInput { + return (*middlewareSpecErrorsServiceStickyCookiePtrType)(v) +} + +func (*middlewareSpecErrorsServiceStickyCookiePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrorsServiceStickyCookie)(nil)).Elem() +} + +func (i *middlewareSpecErrorsServiceStickyCookiePtrType) ToMiddlewareSpecErrorsServiceStickyCookiePtrOutput() MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return i.ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecErrorsServiceStickyCookiePtrType) ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecErrorsServiceStickyCookiePtrOutput) +} + +func (i *middlewareSpecErrorsServiceStickyCookiePtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrorsServiceStickyCookie] { + return pulumix.Output[*MiddlewareSpecErrorsServiceStickyCookie]{ + OutputState: i.ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(ctx).OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +type MiddlewareSpecErrorsServiceStickyCookieOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsServiceStickyCookieOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecErrorsServiceStickyCookie)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsServiceStickyCookieOutput) ToMiddlewareSpecErrorsServiceStickyCookieOutput() MiddlewareSpecErrorsServiceStickyCookieOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceStickyCookieOutput) ToMiddlewareSpecErrorsServiceStickyCookieOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyCookieOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceStickyCookieOutput) ToMiddlewareSpecErrorsServiceStickyCookiePtrOutput() MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return o.ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecErrorsServiceStickyCookieOutput) ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecErrorsServiceStickyCookie) *MiddlewareSpecErrorsServiceStickyCookie { + return &v + }).(MiddlewareSpecErrorsServiceStickyCookiePtrOutput) +} + +func (o MiddlewareSpecErrorsServiceStickyCookieOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecErrorsServiceStickyCookie] { + return pulumix.Output[MiddlewareSpecErrorsServiceStickyCookie]{ + OutputState: o.OutputState, + } +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o MiddlewareSpecErrorsServiceStickyCookieOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsServiceStickyCookie) *bool { return v.HttpOnly }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o MiddlewareSpecErrorsServiceStickyCookieOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsServiceStickyCookie) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o MiddlewareSpecErrorsServiceStickyCookieOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsServiceStickyCookie) *string { return v.SameSite }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o MiddlewareSpecErrorsServiceStickyCookieOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecErrorsServiceStickyCookie) *bool { return v.Secure }).(pulumi.BoolPtrOutput) +} + +type MiddlewareSpecErrorsServiceStickyCookiePtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecErrorsServiceStickyCookiePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecErrorsServiceStickyCookie)(nil)).Elem() +} + +func (o MiddlewareSpecErrorsServiceStickyCookiePtrOutput) ToMiddlewareSpecErrorsServiceStickyCookiePtrOutput() MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceStickyCookiePtrOutput) ToMiddlewareSpecErrorsServiceStickyCookiePtrOutputWithContext(ctx context.Context) MiddlewareSpecErrorsServiceStickyCookiePtrOutput { + return o +} + +func (o MiddlewareSpecErrorsServiceStickyCookiePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecErrorsServiceStickyCookie] { + return pulumix.Output[*MiddlewareSpecErrorsServiceStickyCookie]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecErrorsServiceStickyCookiePtrOutput) Elem() MiddlewareSpecErrorsServiceStickyCookieOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsServiceStickyCookie) MiddlewareSpecErrorsServiceStickyCookie { + if v != nil { + return *v + } + var ret MiddlewareSpecErrorsServiceStickyCookie + return ret + }).(MiddlewareSpecErrorsServiceStickyCookieOutput) +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o MiddlewareSpecErrorsServiceStickyCookiePtrOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsServiceStickyCookie) *bool { + if v == nil { + return nil + } + return v.HttpOnly + }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o MiddlewareSpecErrorsServiceStickyCookiePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsServiceStickyCookie) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o MiddlewareSpecErrorsServiceStickyCookiePtrOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsServiceStickyCookie) *string { + if v == nil { + return nil + } + return v.SameSite + }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o MiddlewareSpecErrorsServiceStickyCookiePtrOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecErrorsServiceStickyCookie) *bool { + if v == nil { + return nil + } + return v.Secure + }).(pulumi.BoolPtrOutput) +} + +// ForwardAuth holds the forward auth middleware configuration. This middleware delegates the request authentication to a Service. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/ +type MiddlewareSpecForwardAuth struct { + // Address defines the authentication server address. + Address *string `pulumi:"address"` + // AuthRequestHeaders defines the list of the headers to copy from the request to the authentication server. If not set or empty then all request headers are passed. + AuthRequestHeaders []string `pulumi:"authRequestHeaders"` + // AuthResponseHeaders defines the list of headers to copy from the authentication server response and set on forwarded request, replacing any existing conflicting headers. + AuthResponseHeaders []string `pulumi:"authResponseHeaders"` + // AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/#authresponseheadersregex + AuthResponseHeadersRegex *string `pulumi:"authResponseHeadersRegex"` + // TLS defines the configuration used to secure the connection to the authentication server. + Tls *MiddlewareSpecForwardAuthTls `pulumi:"tls"` + // TrustForwardHeader defines whether to trust (ie: forward) all X-Forwarded-* headers. + TrustForwardHeader *bool `pulumi:"trustForwardHeader"` +} + +// MiddlewareSpecForwardAuthInput is an input type that accepts MiddlewareSpecForwardAuthArgs and MiddlewareSpecForwardAuthOutput values. +// You can construct a concrete instance of `MiddlewareSpecForwardAuthInput` via: +// +// MiddlewareSpecForwardAuthArgs{...} +type MiddlewareSpecForwardAuthInput interface { + pulumi.Input + + ToMiddlewareSpecForwardAuthOutput() MiddlewareSpecForwardAuthOutput + ToMiddlewareSpecForwardAuthOutputWithContext(context.Context) MiddlewareSpecForwardAuthOutput +} + +// ForwardAuth holds the forward auth middleware configuration. This middleware delegates the request authentication to a Service. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/ +type MiddlewareSpecForwardAuthArgs struct { + // Address defines the authentication server address. + Address pulumi.StringPtrInput `pulumi:"address"` + // AuthRequestHeaders defines the list of the headers to copy from the request to the authentication server. If not set or empty then all request headers are passed. + AuthRequestHeaders pulumi.StringArrayInput `pulumi:"authRequestHeaders"` + // AuthResponseHeaders defines the list of headers to copy from the authentication server response and set on forwarded request, replacing any existing conflicting headers. + AuthResponseHeaders pulumi.StringArrayInput `pulumi:"authResponseHeaders"` + // AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/#authresponseheadersregex + AuthResponseHeadersRegex pulumi.StringPtrInput `pulumi:"authResponseHeadersRegex"` + // TLS defines the configuration used to secure the connection to the authentication server. + Tls MiddlewareSpecForwardAuthTlsPtrInput `pulumi:"tls"` + // TrustForwardHeader defines whether to trust (ie: forward) all X-Forwarded-* headers. + TrustForwardHeader pulumi.BoolPtrInput `pulumi:"trustForwardHeader"` +} + +func (MiddlewareSpecForwardAuthArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecForwardAuth)(nil)).Elem() +} + +func (i MiddlewareSpecForwardAuthArgs) ToMiddlewareSpecForwardAuthOutput() MiddlewareSpecForwardAuthOutput { + return i.ToMiddlewareSpecForwardAuthOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecForwardAuthArgs) ToMiddlewareSpecForwardAuthOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecForwardAuthOutput) +} + +func (i MiddlewareSpecForwardAuthArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecForwardAuth] { + return pulumix.Output[MiddlewareSpecForwardAuth]{ + OutputState: i.ToMiddlewareSpecForwardAuthOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecForwardAuthArgs) ToMiddlewareSpecForwardAuthPtrOutput() MiddlewareSpecForwardAuthPtrOutput { + return i.ToMiddlewareSpecForwardAuthPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecForwardAuthArgs) ToMiddlewareSpecForwardAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecForwardAuthOutput).ToMiddlewareSpecForwardAuthPtrOutputWithContext(ctx) +} + +// MiddlewareSpecForwardAuthPtrInput is an input type that accepts MiddlewareSpecForwardAuthArgs, MiddlewareSpecForwardAuthPtr and MiddlewareSpecForwardAuthPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecForwardAuthPtrInput` via: +// +// MiddlewareSpecForwardAuthArgs{...} +// +// or: +// +// nil +type MiddlewareSpecForwardAuthPtrInput interface { + pulumi.Input + + ToMiddlewareSpecForwardAuthPtrOutput() MiddlewareSpecForwardAuthPtrOutput + ToMiddlewareSpecForwardAuthPtrOutputWithContext(context.Context) MiddlewareSpecForwardAuthPtrOutput +} + +type middlewareSpecForwardAuthPtrType MiddlewareSpecForwardAuthArgs + +func MiddlewareSpecForwardAuthPtr(v *MiddlewareSpecForwardAuthArgs) MiddlewareSpecForwardAuthPtrInput { + return (*middlewareSpecForwardAuthPtrType)(v) +} + +func (*middlewareSpecForwardAuthPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecForwardAuth)(nil)).Elem() +} + +func (i *middlewareSpecForwardAuthPtrType) ToMiddlewareSpecForwardAuthPtrOutput() MiddlewareSpecForwardAuthPtrOutput { + return i.ToMiddlewareSpecForwardAuthPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecForwardAuthPtrType) ToMiddlewareSpecForwardAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecForwardAuthPtrOutput) +} + +func (i *middlewareSpecForwardAuthPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecForwardAuth] { + return pulumix.Output[*MiddlewareSpecForwardAuth]{ + OutputState: i.ToMiddlewareSpecForwardAuthPtrOutputWithContext(ctx).OutputState, + } +} + +// ForwardAuth holds the forward auth middleware configuration. This middleware delegates the request authentication to a Service. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/ +type MiddlewareSpecForwardAuthOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecForwardAuthOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecForwardAuth)(nil)).Elem() +} + +func (o MiddlewareSpecForwardAuthOutput) ToMiddlewareSpecForwardAuthOutput() MiddlewareSpecForwardAuthOutput { + return o +} + +func (o MiddlewareSpecForwardAuthOutput) ToMiddlewareSpecForwardAuthOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthOutput { + return o +} + +func (o MiddlewareSpecForwardAuthOutput) ToMiddlewareSpecForwardAuthPtrOutput() MiddlewareSpecForwardAuthPtrOutput { + return o.ToMiddlewareSpecForwardAuthPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecForwardAuthOutput) ToMiddlewareSpecForwardAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecForwardAuth) *MiddlewareSpecForwardAuth { + return &v + }).(MiddlewareSpecForwardAuthPtrOutput) +} + +func (o MiddlewareSpecForwardAuthOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecForwardAuth] { + return pulumix.Output[MiddlewareSpecForwardAuth]{ + OutputState: o.OutputState, + } +} + +// Address defines the authentication server address. +func (o MiddlewareSpecForwardAuthOutput) Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuth) *string { return v.Address }).(pulumi.StringPtrOutput) +} + +// AuthRequestHeaders defines the list of the headers to copy from the request to the authentication server. If not set or empty then all request headers are passed. +func (o MiddlewareSpecForwardAuthOutput) AuthRequestHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuth) []string { return v.AuthRequestHeaders }).(pulumi.StringArrayOutput) +} + +// AuthResponseHeaders defines the list of headers to copy from the authentication server response and set on forwarded request, replacing any existing conflicting headers. +func (o MiddlewareSpecForwardAuthOutput) AuthResponseHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuth) []string { return v.AuthResponseHeaders }).(pulumi.StringArrayOutput) +} + +// AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/#authresponseheadersregex +func (o MiddlewareSpecForwardAuthOutput) AuthResponseHeadersRegex() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuth) *string { return v.AuthResponseHeadersRegex }).(pulumi.StringPtrOutput) +} + +// TLS defines the configuration used to secure the connection to the authentication server. +func (o MiddlewareSpecForwardAuthOutput) Tls() MiddlewareSpecForwardAuthTlsPtrOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuth) *MiddlewareSpecForwardAuthTls { return v.Tls }).(MiddlewareSpecForwardAuthTlsPtrOutput) +} + +// TrustForwardHeader defines whether to trust (ie: forward) all X-Forwarded-* headers. +func (o MiddlewareSpecForwardAuthOutput) TrustForwardHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuth) *bool { return v.TrustForwardHeader }).(pulumi.BoolPtrOutput) +} + +type MiddlewareSpecForwardAuthPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecForwardAuthPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecForwardAuth)(nil)).Elem() +} + +func (o MiddlewareSpecForwardAuthPtrOutput) ToMiddlewareSpecForwardAuthPtrOutput() MiddlewareSpecForwardAuthPtrOutput { + return o +} + +func (o MiddlewareSpecForwardAuthPtrOutput) ToMiddlewareSpecForwardAuthPtrOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthPtrOutput { + return o +} + +func (o MiddlewareSpecForwardAuthPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecForwardAuth] { + return pulumix.Output[*MiddlewareSpecForwardAuth]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecForwardAuthPtrOutput) Elem() MiddlewareSpecForwardAuthOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuth) MiddlewareSpecForwardAuth { + if v != nil { + return *v + } + var ret MiddlewareSpecForwardAuth + return ret + }).(MiddlewareSpecForwardAuthOutput) +} + +// Address defines the authentication server address. +func (o MiddlewareSpecForwardAuthPtrOutput) Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuth) *string { + if v == nil { + return nil + } + return v.Address + }).(pulumi.StringPtrOutput) +} + +// AuthRequestHeaders defines the list of the headers to copy from the request to the authentication server. If not set or empty then all request headers are passed. +func (o MiddlewareSpecForwardAuthPtrOutput) AuthRequestHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuth) []string { + if v == nil { + return nil + } + return v.AuthRequestHeaders + }).(pulumi.StringArrayOutput) +} + +// AuthResponseHeaders defines the list of headers to copy from the authentication server response and set on forwarded request, replacing any existing conflicting headers. +func (o MiddlewareSpecForwardAuthPtrOutput) AuthResponseHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuth) []string { + if v == nil { + return nil + } + return v.AuthResponseHeaders + }).(pulumi.StringArrayOutput) +} + +// AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/forwardauth/#authresponseheadersregex +func (o MiddlewareSpecForwardAuthPtrOutput) AuthResponseHeadersRegex() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuth) *string { + if v == nil { + return nil + } + return v.AuthResponseHeadersRegex + }).(pulumi.StringPtrOutput) +} + +// TLS defines the configuration used to secure the connection to the authentication server. +func (o MiddlewareSpecForwardAuthPtrOutput) Tls() MiddlewareSpecForwardAuthTlsPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuth) *MiddlewareSpecForwardAuthTls { + if v == nil { + return nil + } + return v.Tls + }).(MiddlewareSpecForwardAuthTlsPtrOutput) +} + +// TrustForwardHeader defines whether to trust (ie: forward) all X-Forwarded-* headers. +func (o MiddlewareSpecForwardAuthPtrOutput) TrustForwardHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuth) *bool { + if v == nil { + return nil + } + return v.TrustForwardHeader + }).(pulumi.BoolPtrOutput) +} + +// TLS defines the configuration used to secure the connection to the authentication server. +type MiddlewareSpecForwardAuthTls struct { + CaOptional *bool `pulumi:"caOptional"` + // CASecret is the name of the referenced Kubernetes Secret containing the CA to validate the server certificate. The CA certificate is extracted from key `tls.ca` or `ca.crt`. + CaSecret *string `pulumi:"caSecret"` + // CertSecret is the name of the referenced Kubernetes Secret containing the client certificate. The client certificate is extracted from the keys `tls.crt` and `tls.key`. + CertSecret *string `pulumi:"certSecret"` + // InsecureSkipVerify defines whether the server certificates should be validated. + InsecureSkipVerify *bool `pulumi:"insecureSkipVerify"` +} + +// MiddlewareSpecForwardAuthTlsInput is an input type that accepts MiddlewareSpecForwardAuthTlsArgs and MiddlewareSpecForwardAuthTlsOutput values. +// You can construct a concrete instance of `MiddlewareSpecForwardAuthTlsInput` via: +// +// MiddlewareSpecForwardAuthTlsArgs{...} +type MiddlewareSpecForwardAuthTlsInput interface { + pulumi.Input + + ToMiddlewareSpecForwardAuthTlsOutput() MiddlewareSpecForwardAuthTlsOutput + ToMiddlewareSpecForwardAuthTlsOutputWithContext(context.Context) MiddlewareSpecForwardAuthTlsOutput +} + +// TLS defines the configuration used to secure the connection to the authentication server. +type MiddlewareSpecForwardAuthTlsArgs struct { + CaOptional pulumi.BoolPtrInput `pulumi:"caOptional"` + // CASecret is the name of the referenced Kubernetes Secret containing the CA to validate the server certificate. The CA certificate is extracted from key `tls.ca` or `ca.crt`. + CaSecret pulumi.StringPtrInput `pulumi:"caSecret"` + // CertSecret is the name of the referenced Kubernetes Secret containing the client certificate. The client certificate is extracted from the keys `tls.crt` and `tls.key`. + CertSecret pulumi.StringPtrInput `pulumi:"certSecret"` + // InsecureSkipVerify defines whether the server certificates should be validated. + InsecureSkipVerify pulumi.BoolPtrInput `pulumi:"insecureSkipVerify"` +} + +func (MiddlewareSpecForwardAuthTlsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecForwardAuthTls)(nil)).Elem() +} + +func (i MiddlewareSpecForwardAuthTlsArgs) ToMiddlewareSpecForwardAuthTlsOutput() MiddlewareSpecForwardAuthTlsOutput { + return i.ToMiddlewareSpecForwardAuthTlsOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecForwardAuthTlsArgs) ToMiddlewareSpecForwardAuthTlsOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthTlsOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecForwardAuthTlsOutput) +} + +func (i MiddlewareSpecForwardAuthTlsArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecForwardAuthTls] { + return pulumix.Output[MiddlewareSpecForwardAuthTls]{ + OutputState: i.ToMiddlewareSpecForwardAuthTlsOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecForwardAuthTlsArgs) ToMiddlewareSpecForwardAuthTlsPtrOutput() MiddlewareSpecForwardAuthTlsPtrOutput { + return i.ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecForwardAuthTlsArgs) ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecForwardAuthTlsOutput).ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(ctx) +} + +// MiddlewareSpecForwardAuthTlsPtrInput is an input type that accepts MiddlewareSpecForwardAuthTlsArgs, MiddlewareSpecForwardAuthTlsPtr and MiddlewareSpecForwardAuthTlsPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecForwardAuthTlsPtrInput` via: +// +// MiddlewareSpecForwardAuthTlsArgs{...} +// +// or: +// +// nil +type MiddlewareSpecForwardAuthTlsPtrInput interface { + pulumi.Input + + ToMiddlewareSpecForwardAuthTlsPtrOutput() MiddlewareSpecForwardAuthTlsPtrOutput + ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(context.Context) MiddlewareSpecForwardAuthTlsPtrOutput +} + +type middlewareSpecForwardAuthTlsPtrType MiddlewareSpecForwardAuthTlsArgs + +func MiddlewareSpecForwardAuthTlsPtr(v *MiddlewareSpecForwardAuthTlsArgs) MiddlewareSpecForwardAuthTlsPtrInput { + return (*middlewareSpecForwardAuthTlsPtrType)(v) +} + +func (*middlewareSpecForwardAuthTlsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecForwardAuthTls)(nil)).Elem() +} + +func (i *middlewareSpecForwardAuthTlsPtrType) ToMiddlewareSpecForwardAuthTlsPtrOutput() MiddlewareSpecForwardAuthTlsPtrOutput { + return i.ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecForwardAuthTlsPtrType) ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecForwardAuthTlsPtrOutput) +} + +func (i *middlewareSpecForwardAuthTlsPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecForwardAuthTls] { + return pulumix.Output[*MiddlewareSpecForwardAuthTls]{ + OutputState: i.ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(ctx).OutputState, + } +} + +// TLS defines the configuration used to secure the connection to the authentication server. +type MiddlewareSpecForwardAuthTlsOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecForwardAuthTlsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecForwardAuthTls)(nil)).Elem() +} + +func (o MiddlewareSpecForwardAuthTlsOutput) ToMiddlewareSpecForwardAuthTlsOutput() MiddlewareSpecForwardAuthTlsOutput { + return o +} + +func (o MiddlewareSpecForwardAuthTlsOutput) ToMiddlewareSpecForwardAuthTlsOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthTlsOutput { + return o +} + +func (o MiddlewareSpecForwardAuthTlsOutput) ToMiddlewareSpecForwardAuthTlsPtrOutput() MiddlewareSpecForwardAuthTlsPtrOutput { + return o.ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecForwardAuthTlsOutput) ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthTlsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecForwardAuthTls) *MiddlewareSpecForwardAuthTls { + return &v + }).(MiddlewareSpecForwardAuthTlsPtrOutput) +} + +func (o MiddlewareSpecForwardAuthTlsOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecForwardAuthTls] { + return pulumix.Output[MiddlewareSpecForwardAuthTls]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecForwardAuthTlsOutput) CaOptional() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuthTls) *bool { return v.CaOptional }).(pulumi.BoolPtrOutput) +} + +// CASecret is the name of the referenced Kubernetes Secret containing the CA to validate the server certificate. The CA certificate is extracted from key `tls.ca` or `ca.crt`. +func (o MiddlewareSpecForwardAuthTlsOutput) CaSecret() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuthTls) *string { return v.CaSecret }).(pulumi.StringPtrOutput) +} + +// CertSecret is the name of the referenced Kubernetes Secret containing the client certificate. The client certificate is extracted from the keys `tls.crt` and `tls.key`. +func (o MiddlewareSpecForwardAuthTlsOutput) CertSecret() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuthTls) *string { return v.CertSecret }).(pulumi.StringPtrOutput) +} + +// InsecureSkipVerify defines whether the server certificates should be validated. +func (o MiddlewareSpecForwardAuthTlsOutput) InsecureSkipVerify() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecForwardAuthTls) *bool { return v.InsecureSkipVerify }).(pulumi.BoolPtrOutput) +} + +type MiddlewareSpecForwardAuthTlsPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecForwardAuthTlsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecForwardAuthTls)(nil)).Elem() +} + +func (o MiddlewareSpecForwardAuthTlsPtrOutput) ToMiddlewareSpecForwardAuthTlsPtrOutput() MiddlewareSpecForwardAuthTlsPtrOutput { + return o +} + +func (o MiddlewareSpecForwardAuthTlsPtrOutput) ToMiddlewareSpecForwardAuthTlsPtrOutputWithContext(ctx context.Context) MiddlewareSpecForwardAuthTlsPtrOutput { + return o +} + +func (o MiddlewareSpecForwardAuthTlsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecForwardAuthTls] { + return pulumix.Output[*MiddlewareSpecForwardAuthTls]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecForwardAuthTlsPtrOutput) Elem() MiddlewareSpecForwardAuthTlsOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuthTls) MiddlewareSpecForwardAuthTls { + if v != nil { + return *v + } + var ret MiddlewareSpecForwardAuthTls + return ret + }).(MiddlewareSpecForwardAuthTlsOutput) +} + +func (o MiddlewareSpecForwardAuthTlsPtrOutput) CaOptional() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuthTls) *bool { + if v == nil { + return nil + } + return v.CaOptional + }).(pulumi.BoolPtrOutput) +} + +// CASecret is the name of the referenced Kubernetes Secret containing the CA to validate the server certificate. The CA certificate is extracted from key `tls.ca` or `ca.crt`. +func (o MiddlewareSpecForwardAuthTlsPtrOutput) CaSecret() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuthTls) *string { + if v == nil { + return nil + } + return v.CaSecret + }).(pulumi.StringPtrOutput) +} + +// CertSecret is the name of the referenced Kubernetes Secret containing the client certificate. The client certificate is extracted from the keys `tls.crt` and `tls.key`. +func (o MiddlewareSpecForwardAuthTlsPtrOutput) CertSecret() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuthTls) *string { + if v == nil { + return nil + } + return v.CertSecret + }).(pulumi.StringPtrOutput) +} + +// InsecureSkipVerify defines whether the server certificates should be validated. +func (o MiddlewareSpecForwardAuthTlsPtrOutput) InsecureSkipVerify() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecForwardAuthTls) *bool { + if v == nil { + return nil + } + return v.InsecureSkipVerify + }).(pulumi.BoolPtrOutput) +} + +// Headers holds the headers middleware configuration. This middleware manages the requests and responses headers. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders +type MiddlewareSpecHeaders struct { + // AccessControlAllowCredentials defines whether the request can include user credentials. + AccessControlAllowCredentials *bool `pulumi:"accessControlAllowCredentials"` + // AccessControlAllowHeaders defines the Access-Control-Request-Headers values sent in preflight response. + AccessControlAllowHeaders []string `pulumi:"accessControlAllowHeaders"` + // AccessControlAllowMethods defines the Access-Control-Request-Method values sent in preflight response. + AccessControlAllowMethods []string `pulumi:"accessControlAllowMethods"` + // AccessControlAllowOriginList is a list of allowable origins. Can also be a wildcard origin "*". + AccessControlAllowOriginList []string `pulumi:"accessControlAllowOriginList"` + // AccessControlAllowOriginListRegex is a list of allowable origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/). + AccessControlAllowOriginListRegex []string `pulumi:"accessControlAllowOriginListRegex"` + // AccessControlExposeHeaders defines the Access-Control-Expose-Headers values sent in preflight response. + AccessControlExposeHeaders []string `pulumi:"accessControlExposeHeaders"` + // AccessControlMaxAge defines the time that a preflight request may be cached. + AccessControlMaxAge *int `pulumi:"accessControlMaxAge"` + // AddVaryHeader defines whether the Vary header is automatically added/updated when the AccessControlAllowOriginList is set. + AddVaryHeader *bool `pulumi:"addVaryHeader"` + // AllowedHosts defines the fully qualified list of allowed domain names. + AllowedHosts []string `pulumi:"allowedHosts"` + // BrowserXSSFilter defines whether to add the X-XSS-Protection header with the value 1; mode=block. + BrowserXssFilter *bool `pulumi:"browserXssFilter"` + // ContentSecurityPolicy defines the Content-Security-Policy header value. + ContentSecurityPolicy *string `pulumi:"contentSecurityPolicy"` + // ContentTypeNosniff defines whether to add the X-Content-Type-Options header with the nosniff value. + ContentTypeNosniff *bool `pulumi:"contentTypeNosniff"` + // CustomBrowserXSSValue defines the X-XSS-Protection header value. This overrides the BrowserXssFilter option. + CustomBrowserXSSValue *string `pulumi:"customBrowserXSSValue"` + // CustomFrameOptionsValue defines the X-Frame-Options header value. This overrides the FrameDeny option. + CustomFrameOptionsValue *string `pulumi:"customFrameOptionsValue"` + // CustomRequestHeaders defines the header names and values to apply to the request. + CustomRequestHeaders map[string]string `pulumi:"customRequestHeaders"` + // CustomResponseHeaders defines the header names and values to apply to the response. + CustomResponseHeaders map[string]string `pulumi:"customResponseHeaders"` + // Deprecated: use PermissionsPolicy instead. + FeaturePolicy *string `pulumi:"featurePolicy"` + // ForceSTSHeader defines whether to add the STS header even when the connection is HTTP. + ForceSTSHeader *bool `pulumi:"forceSTSHeader"` + // FrameDeny defines whether to add the X-Frame-Options header with the DENY value. + FrameDeny *bool `pulumi:"frameDeny"` + // HostsProxyHeaders defines the header keys that may hold a proxied hostname value for the request. + HostsProxyHeaders []string `pulumi:"hostsProxyHeaders"` + // IsDevelopment defines whether to mitigate the unwanted effects of the AllowedHosts, SSL, and STS options when developing. Usually testing takes place using HTTP, not HTTPS, and on localhost, not your production domain. If you would like your development environment to mimic production with complete Host blocking, SSL redirects, and STS headers, leave this as false. + IsDevelopment *bool `pulumi:"isDevelopment"` + // PermissionsPolicy defines the Permissions-Policy header value. This allows sites to control browser features. + PermissionsPolicy *string `pulumi:"permissionsPolicy"` + // PublicKey is the public key that implements HPKP to prevent MITM attacks with forged certificates. + PublicKey *string `pulumi:"publicKey"` + // ReferrerPolicy defines the Referrer-Policy header value. This allows sites to control whether browsers forward the Referer header to other sites. + ReferrerPolicy *string `pulumi:"referrerPolicy"` + // Deprecated: use RedirectRegex instead. + SslForceHost *bool `pulumi:"sslForceHost"` + // Deprecated: use RedirectRegex instead. + SslHost *string `pulumi:"sslHost"` + // SSLProxyHeaders defines the header keys with associated values that would indicate a valid HTTPS request. It can be useful when using other proxies (example: "X-Forwarded-Proto": "https"). + SslProxyHeaders map[string]string `pulumi:"sslProxyHeaders"` + // Deprecated: use EntryPoint redirection or RedirectScheme instead. + SslRedirect *bool `pulumi:"sslRedirect"` + // Deprecated: use EntryPoint redirection or RedirectScheme instead. + SslTemporaryRedirect *bool `pulumi:"sslTemporaryRedirect"` + // STSIncludeSubdomains defines whether the includeSubDomains directive is appended to the Strict-Transport-Security header. + StsIncludeSubdomains *bool `pulumi:"stsIncludeSubdomains"` + // STSPreload defines whether the preload flag is appended to the Strict-Transport-Security header. + StsPreload *bool `pulumi:"stsPreload"` + // STSSeconds defines the max-age of the Strict-Transport-Security header. If set to 0, the header is not set. + StsSeconds *int `pulumi:"stsSeconds"` +} + +// MiddlewareSpecHeadersInput is an input type that accepts MiddlewareSpecHeadersArgs and MiddlewareSpecHeadersOutput values. +// You can construct a concrete instance of `MiddlewareSpecHeadersInput` via: +// +// MiddlewareSpecHeadersArgs{...} +type MiddlewareSpecHeadersInput interface { + pulumi.Input + + ToMiddlewareSpecHeadersOutput() MiddlewareSpecHeadersOutput + ToMiddlewareSpecHeadersOutputWithContext(context.Context) MiddlewareSpecHeadersOutput +} + +// Headers holds the headers middleware configuration. This middleware manages the requests and responses headers. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders +type MiddlewareSpecHeadersArgs struct { + // AccessControlAllowCredentials defines whether the request can include user credentials. + AccessControlAllowCredentials pulumi.BoolPtrInput `pulumi:"accessControlAllowCredentials"` + // AccessControlAllowHeaders defines the Access-Control-Request-Headers values sent in preflight response. + AccessControlAllowHeaders pulumi.StringArrayInput `pulumi:"accessControlAllowHeaders"` + // AccessControlAllowMethods defines the Access-Control-Request-Method values sent in preflight response. + AccessControlAllowMethods pulumi.StringArrayInput `pulumi:"accessControlAllowMethods"` + // AccessControlAllowOriginList is a list of allowable origins. Can also be a wildcard origin "*". + AccessControlAllowOriginList pulumi.StringArrayInput `pulumi:"accessControlAllowOriginList"` + // AccessControlAllowOriginListRegex is a list of allowable origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/). + AccessControlAllowOriginListRegex pulumi.StringArrayInput `pulumi:"accessControlAllowOriginListRegex"` + // AccessControlExposeHeaders defines the Access-Control-Expose-Headers values sent in preflight response. + AccessControlExposeHeaders pulumi.StringArrayInput `pulumi:"accessControlExposeHeaders"` + // AccessControlMaxAge defines the time that a preflight request may be cached. + AccessControlMaxAge pulumi.IntPtrInput `pulumi:"accessControlMaxAge"` + // AddVaryHeader defines whether the Vary header is automatically added/updated when the AccessControlAllowOriginList is set. + AddVaryHeader pulumi.BoolPtrInput `pulumi:"addVaryHeader"` + // AllowedHosts defines the fully qualified list of allowed domain names. + AllowedHosts pulumi.StringArrayInput `pulumi:"allowedHosts"` + // BrowserXSSFilter defines whether to add the X-XSS-Protection header with the value 1; mode=block. + BrowserXssFilter pulumi.BoolPtrInput `pulumi:"browserXssFilter"` + // ContentSecurityPolicy defines the Content-Security-Policy header value. + ContentSecurityPolicy pulumi.StringPtrInput `pulumi:"contentSecurityPolicy"` + // ContentTypeNosniff defines whether to add the X-Content-Type-Options header with the nosniff value. + ContentTypeNosniff pulumi.BoolPtrInput `pulumi:"contentTypeNosniff"` + // CustomBrowserXSSValue defines the X-XSS-Protection header value. This overrides the BrowserXssFilter option. + CustomBrowserXSSValue pulumi.StringPtrInput `pulumi:"customBrowserXSSValue"` + // CustomFrameOptionsValue defines the X-Frame-Options header value. This overrides the FrameDeny option. + CustomFrameOptionsValue pulumi.StringPtrInput `pulumi:"customFrameOptionsValue"` + // CustomRequestHeaders defines the header names and values to apply to the request. + CustomRequestHeaders pulumi.StringMapInput `pulumi:"customRequestHeaders"` + // CustomResponseHeaders defines the header names and values to apply to the response. + CustomResponseHeaders pulumi.StringMapInput `pulumi:"customResponseHeaders"` + // Deprecated: use PermissionsPolicy instead. + FeaturePolicy pulumi.StringPtrInput `pulumi:"featurePolicy"` + // ForceSTSHeader defines whether to add the STS header even when the connection is HTTP. + ForceSTSHeader pulumi.BoolPtrInput `pulumi:"forceSTSHeader"` + // FrameDeny defines whether to add the X-Frame-Options header with the DENY value. + FrameDeny pulumi.BoolPtrInput `pulumi:"frameDeny"` + // HostsProxyHeaders defines the header keys that may hold a proxied hostname value for the request. + HostsProxyHeaders pulumi.StringArrayInput `pulumi:"hostsProxyHeaders"` + // IsDevelopment defines whether to mitigate the unwanted effects of the AllowedHosts, SSL, and STS options when developing. Usually testing takes place using HTTP, not HTTPS, and on localhost, not your production domain. If you would like your development environment to mimic production with complete Host blocking, SSL redirects, and STS headers, leave this as false. + IsDevelopment pulumi.BoolPtrInput `pulumi:"isDevelopment"` + // PermissionsPolicy defines the Permissions-Policy header value. This allows sites to control browser features. + PermissionsPolicy pulumi.StringPtrInput `pulumi:"permissionsPolicy"` + // PublicKey is the public key that implements HPKP to prevent MITM attacks with forged certificates. + PublicKey pulumi.StringPtrInput `pulumi:"publicKey"` + // ReferrerPolicy defines the Referrer-Policy header value. This allows sites to control whether browsers forward the Referer header to other sites. + ReferrerPolicy pulumi.StringPtrInput `pulumi:"referrerPolicy"` + // Deprecated: use RedirectRegex instead. + SslForceHost pulumi.BoolPtrInput `pulumi:"sslForceHost"` + // Deprecated: use RedirectRegex instead. + SslHost pulumi.StringPtrInput `pulumi:"sslHost"` + // SSLProxyHeaders defines the header keys with associated values that would indicate a valid HTTPS request. It can be useful when using other proxies (example: "X-Forwarded-Proto": "https"). + SslProxyHeaders pulumi.StringMapInput `pulumi:"sslProxyHeaders"` + // Deprecated: use EntryPoint redirection or RedirectScheme instead. + SslRedirect pulumi.BoolPtrInput `pulumi:"sslRedirect"` + // Deprecated: use EntryPoint redirection or RedirectScheme instead. + SslTemporaryRedirect pulumi.BoolPtrInput `pulumi:"sslTemporaryRedirect"` + // STSIncludeSubdomains defines whether the includeSubDomains directive is appended to the Strict-Transport-Security header. + StsIncludeSubdomains pulumi.BoolPtrInput `pulumi:"stsIncludeSubdomains"` + // STSPreload defines whether the preload flag is appended to the Strict-Transport-Security header. + StsPreload pulumi.BoolPtrInput `pulumi:"stsPreload"` + // STSSeconds defines the max-age of the Strict-Transport-Security header. If set to 0, the header is not set. + StsSeconds pulumi.IntPtrInput `pulumi:"stsSeconds"` +} + +func (MiddlewareSpecHeadersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecHeaders)(nil)).Elem() +} + +func (i MiddlewareSpecHeadersArgs) ToMiddlewareSpecHeadersOutput() MiddlewareSpecHeadersOutput { + return i.ToMiddlewareSpecHeadersOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecHeadersArgs) ToMiddlewareSpecHeadersOutputWithContext(ctx context.Context) MiddlewareSpecHeadersOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecHeadersOutput) +} + +func (i MiddlewareSpecHeadersArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecHeaders] { + return pulumix.Output[MiddlewareSpecHeaders]{ + OutputState: i.ToMiddlewareSpecHeadersOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecHeadersArgs) ToMiddlewareSpecHeadersPtrOutput() MiddlewareSpecHeadersPtrOutput { + return i.ToMiddlewareSpecHeadersPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecHeadersArgs) ToMiddlewareSpecHeadersPtrOutputWithContext(ctx context.Context) MiddlewareSpecHeadersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecHeadersOutput).ToMiddlewareSpecHeadersPtrOutputWithContext(ctx) +} + +// MiddlewareSpecHeadersPtrInput is an input type that accepts MiddlewareSpecHeadersArgs, MiddlewareSpecHeadersPtr and MiddlewareSpecHeadersPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecHeadersPtrInput` via: +// +// MiddlewareSpecHeadersArgs{...} +// +// or: +// +// nil +type MiddlewareSpecHeadersPtrInput interface { + pulumi.Input + + ToMiddlewareSpecHeadersPtrOutput() MiddlewareSpecHeadersPtrOutput + ToMiddlewareSpecHeadersPtrOutputWithContext(context.Context) MiddlewareSpecHeadersPtrOutput +} + +type middlewareSpecHeadersPtrType MiddlewareSpecHeadersArgs + +func MiddlewareSpecHeadersPtr(v *MiddlewareSpecHeadersArgs) MiddlewareSpecHeadersPtrInput { + return (*middlewareSpecHeadersPtrType)(v) +} + +func (*middlewareSpecHeadersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecHeaders)(nil)).Elem() +} + +func (i *middlewareSpecHeadersPtrType) ToMiddlewareSpecHeadersPtrOutput() MiddlewareSpecHeadersPtrOutput { + return i.ToMiddlewareSpecHeadersPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecHeadersPtrType) ToMiddlewareSpecHeadersPtrOutputWithContext(ctx context.Context) MiddlewareSpecHeadersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecHeadersPtrOutput) +} + +func (i *middlewareSpecHeadersPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecHeaders] { + return pulumix.Output[*MiddlewareSpecHeaders]{ + OutputState: i.ToMiddlewareSpecHeadersPtrOutputWithContext(ctx).OutputState, + } +} + +// Headers holds the headers middleware configuration. This middleware manages the requests and responses headers. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/headers/#customrequestheaders +type MiddlewareSpecHeadersOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecHeadersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecHeaders)(nil)).Elem() +} + +func (o MiddlewareSpecHeadersOutput) ToMiddlewareSpecHeadersOutput() MiddlewareSpecHeadersOutput { + return o +} + +func (o MiddlewareSpecHeadersOutput) ToMiddlewareSpecHeadersOutputWithContext(ctx context.Context) MiddlewareSpecHeadersOutput { + return o +} + +func (o MiddlewareSpecHeadersOutput) ToMiddlewareSpecHeadersPtrOutput() MiddlewareSpecHeadersPtrOutput { + return o.ToMiddlewareSpecHeadersPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecHeadersOutput) ToMiddlewareSpecHeadersPtrOutputWithContext(ctx context.Context) MiddlewareSpecHeadersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecHeaders) *MiddlewareSpecHeaders { + return &v + }).(MiddlewareSpecHeadersPtrOutput) +} + +func (o MiddlewareSpecHeadersOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecHeaders] { + return pulumix.Output[MiddlewareSpecHeaders]{ + OutputState: o.OutputState, + } +} + +// AccessControlAllowCredentials defines whether the request can include user credentials. +func (o MiddlewareSpecHeadersOutput) AccessControlAllowCredentials() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.AccessControlAllowCredentials }).(pulumi.BoolPtrOutput) +} + +// AccessControlAllowHeaders defines the Access-Control-Request-Headers values sent in preflight response. +func (o MiddlewareSpecHeadersOutput) AccessControlAllowHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) []string { return v.AccessControlAllowHeaders }).(pulumi.StringArrayOutput) +} + +// AccessControlAllowMethods defines the Access-Control-Request-Method values sent in preflight response. +func (o MiddlewareSpecHeadersOutput) AccessControlAllowMethods() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) []string { return v.AccessControlAllowMethods }).(pulumi.StringArrayOutput) +} + +// AccessControlAllowOriginList is a list of allowable origins. Can also be a wildcard origin "*". +func (o MiddlewareSpecHeadersOutput) AccessControlAllowOriginList() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) []string { return v.AccessControlAllowOriginList }).(pulumi.StringArrayOutput) +} + +// AccessControlAllowOriginListRegex is a list of allowable origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/). +func (o MiddlewareSpecHeadersOutput) AccessControlAllowOriginListRegex() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) []string { return v.AccessControlAllowOriginListRegex }).(pulumi.StringArrayOutput) +} + +// AccessControlExposeHeaders defines the Access-Control-Expose-Headers values sent in preflight response. +func (o MiddlewareSpecHeadersOutput) AccessControlExposeHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) []string { return v.AccessControlExposeHeaders }).(pulumi.StringArrayOutput) +} + +// AccessControlMaxAge defines the time that a preflight request may be cached. +func (o MiddlewareSpecHeadersOutput) AccessControlMaxAge() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *int { return v.AccessControlMaxAge }).(pulumi.IntPtrOutput) +} + +// AddVaryHeader defines whether the Vary header is automatically added/updated when the AccessControlAllowOriginList is set. +func (o MiddlewareSpecHeadersOutput) AddVaryHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.AddVaryHeader }).(pulumi.BoolPtrOutput) +} + +// AllowedHosts defines the fully qualified list of allowed domain names. +func (o MiddlewareSpecHeadersOutput) AllowedHosts() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) []string { return v.AllowedHosts }).(pulumi.StringArrayOutput) +} + +// BrowserXSSFilter defines whether to add the X-XSS-Protection header with the value 1; mode=block. +func (o MiddlewareSpecHeadersOutput) BrowserXssFilter() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.BrowserXssFilter }).(pulumi.BoolPtrOutput) +} + +// ContentSecurityPolicy defines the Content-Security-Policy header value. +func (o MiddlewareSpecHeadersOutput) ContentSecurityPolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *string { return v.ContentSecurityPolicy }).(pulumi.StringPtrOutput) +} + +// ContentTypeNosniff defines whether to add the X-Content-Type-Options header with the nosniff value. +func (o MiddlewareSpecHeadersOutput) ContentTypeNosniff() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.ContentTypeNosniff }).(pulumi.BoolPtrOutput) +} + +// CustomBrowserXSSValue defines the X-XSS-Protection header value. This overrides the BrowserXssFilter option. +func (o MiddlewareSpecHeadersOutput) CustomBrowserXSSValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *string { return v.CustomBrowserXSSValue }).(pulumi.StringPtrOutput) +} + +// CustomFrameOptionsValue defines the X-Frame-Options header value. This overrides the FrameDeny option. +func (o MiddlewareSpecHeadersOutput) CustomFrameOptionsValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *string { return v.CustomFrameOptionsValue }).(pulumi.StringPtrOutput) +} + +// CustomRequestHeaders defines the header names and values to apply to the request. +func (o MiddlewareSpecHeadersOutput) CustomRequestHeaders() pulumi.StringMapOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) map[string]string { return v.CustomRequestHeaders }).(pulumi.StringMapOutput) +} + +// CustomResponseHeaders defines the header names and values to apply to the response. +func (o MiddlewareSpecHeadersOutput) CustomResponseHeaders() pulumi.StringMapOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) map[string]string { return v.CustomResponseHeaders }).(pulumi.StringMapOutput) +} + +// Deprecated: use PermissionsPolicy instead. +func (o MiddlewareSpecHeadersOutput) FeaturePolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *string { return v.FeaturePolicy }).(pulumi.StringPtrOutput) +} + +// ForceSTSHeader defines whether to add the STS header even when the connection is HTTP. +func (o MiddlewareSpecHeadersOutput) ForceSTSHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.ForceSTSHeader }).(pulumi.BoolPtrOutput) +} + +// FrameDeny defines whether to add the X-Frame-Options header with the DENY value. +func (o MiddlewareSpecHeadersOutput) FrameDeny() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.FrameDeny }).(pulumi.BoolPtrOutput) +} + +// HostsProxyHeaders defines the header keys that may hold a proxied hostname value for the request. +func (o MiddlewareSpecHeadersOutput) HostsProxyHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) []string { return v.HostsProxyHeaders }).(pulumi.StringArrayOutput) +} + +// IsDevelopment defines whether to mitigate the unwanted effects of the AllowedHosts, SSL, and STS options when developing. Usually testing takes place using HTTP, not HTTPS, and on localhost, not your production domain. If you would like your development environment to mimic production with complete Host blocking, SSL redirects, and STS headers, leave this as false. +func (o MiddlewareSpecHeadersOutput) IsDevelopment() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.IsDevelopment }).(pulumi.BoolPtrOutput) +} + +// PermissionsPolicy defines the Permissions-Policy header value. This allows sites to control browser features. +func (o MiddlewareSpecHeadersOutput) PermissionsPolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *string { return v.PermissionsPolicy }).(pulumi.StringPtrOutput) +} + +// PublicKey is the public key that implements HPKP to prevent MITM attacks with forged certificates. +func (o MiddlewareSpecHeadersOutput) PublicKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *string { return v.PublicKey }).(pulumi.StringPtrOutput) +} + +// ReferrerPolicy defines the Referrer-Policy header value. This allows sites to control whether browsers forward the Referer header to other sites. +func (o MiddlewareSpecHeadersOutput) ReferrerPolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *string { return v.ReferrerPolicy }).(pulumi.StringPtrOutput) +} + +// Deprecated: use RedirectRegex instead. +func (o MiddlewareSpecHeadersOutput) SslForceHost() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.SslForceHost }).(pulumi.BoolPtrOutput) +} + +// Deprecated: use RedirectRegex instead. +func (o MiddlewareSpecHeadersOutput) SslHost() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *string { return v.SslHost }).(pulumi.StringPtrOutput) +} + +// SSLProxyHeaders defines the header keys with associated values that would indicate a valid HTTPS request. It can be useful when using other proxies (example: "X-Forwarded-Proto": "https"). +func (o MiddlewareSpecHeadersOutput) SslProxyHeaders() pulumi.StringMapOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) map[string]string { return v.SslProxyHeaders }).(pulumi.StringMapOutput) +} + +// Deprecated: use EntryPoint redirection or RedirectScheme instead. +func (o MiddlewareSpecHeadersOutput) SslRedirect() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.SslRedirect }).(pulumi.BoolPtrOutput) +} + +// Deprecated: use EntryPoint redirection or RedirectScheme instead. +func (o MiddlewareSpecHeadersOutput) SslTemporaryRedirect() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.SslTemporaryRedirect }).(pulumi.BoolPtrOutput) +} + +// STSIncludeSubdomains defines whether the includeSubDomains directive is appended to the Strict-Transport-Security header. +func (o MiddlewareSpecHeadersOutput) StsIncludeSubdomains() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.StsIncludeSubdomains }).(pulumi.BoolPtrOutput) +} + +// STSPreload defines whether the preload flag is appended to the Strict-Transport-Security header. +func (o MiddlewareSpecHeadersOutput) StsPreload() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *bool { return v.StsPreload }).(pulumi.BoolPtrOutput) +} + +// STSSeconds defines the max-age of the Strict-Transport-Security header. If set to 0, the header is not set. +func (o MiddlewareSpecHeadersOutput) StsSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecHeaders) *int { return v.StsSeconds }).(pulumi.IntPtrOutput) +} + +type MiddlewareSpecHeadersPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecHeadersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecHeaders)(nil)).Elem() +} + +func (o MiddlewareSpecHeadersPtrOutput) ToMiddlewareSpecHeadersPtrOutput() MiddlewareSpecHeadersPtrOutput { + return o +} + +func (o MiddlewareSpecHeadersPtrOutput) ToMiddlewareSpecHeadersPtrOutputWithContext(ctx context.Context) MiddlewareSpecHeadersPtrOutput { + return o +} + +func (o MiddlewareSpecHeadersPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecHeaders] { + return pulumix.Output[*MiddlewareSpecHeaders]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecHeadersPtrOutput) Elem() MiddlewareSpecHeadersOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) MiddlewareSpecHeaders { + if v != nil { + return *v + } + var ret MiddlewareSpecHeaders + return ret + }).(MiddlewareSpecHeadersOutput) +} + +// AccessControlAllowCredentials defines whether the request can include user credentials. +func (o MiddlewareSpecHeadersPtrOutput) AccessControlAllowCredentials() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.AccessControlAllowCredentials + }).(pulumi.BoolPtrOutput) +} + +// AccessControlAllowHeaders defines the Access-Control-Request-Headers values sent in preflight response. +func (o MiddlewareSpecHeadersPtrOutput) AccessControlAllowHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) []string { + if v == nil { + return nil + } + return v.AccessControlAllowHeaders + }).(pulumi.StringArrayOutput) +} + +// AccessControlAllowMethods defines the Access-Control-Request-Method values sent in preflight response. +func (o MiddlewareSpecHeadersPtrOutput) AccessControlAllowMethods() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) []string { + if v == nil { + return nil + } + return v.AccessControlAllowMethods + }).(pulumi.StringArrayOutput) +} + +// AccessControlAllowOriginList is a list of allowable origins. Can also be a wildcard origin "*". +func (o MiddlewareSpecHeadersPtrOutput) AccessControlAllowOriginList() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) []string { + if v == nil { + return nil + } + return v.AccessControlAllowOriginList + }).(pulumi.StringArrayOutput) +} + +// AccessControlAllowOriginListRegex is a list of allowable origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/). +func (o MiddlewareSpecHeadersPtrOutput) AccessControlAllowOriginListRegex() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) []string { + if v == nil { + return nil + } + return v.AccessControlAllowOriginListRegex + }).(pulumi.StringArrayOutput) +} + +// AccessControlExposeHeaders defines the Access-Control-Expose-Headers values sent in preflight response. +func (o MiddlewareSpecHeadersPtrOutput) AccessControlExposeHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) []string { + if v == nil { + return nil + } + return v.AccessControlExposeHeaders + }).(pulumi.StringArrayOutput) +} + +// AccessControlMaxAge defines the time that a preflight request may be cached. +func (o MiddlewareSpecHeadersPtrOutput) AccessControlMaxAge() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *int { + if v == nil { + return nil + } + return v.AccessControlMaxAge + }).(pulumi.IntPtrOutput) +} + +// AddVaryHeader defines whether the Vary header is automatically added/updated when the AccessControlAllowOriginList is set. +func (o MiddlewareSpecHeadersPtrOutput) AddVaryHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.AddVaryHeader + }).(pulumi.BoolPtrOutput) +} + +// AllowedHosts defines the fully qualified list of allowed domain names. +func (o MiddlewareSpecHeadersPtrOutput) AllowedHosts() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) []string { + if v == nil { + return nil + } + return v.AllowedHosts + }).(pulumi.StringArrayOutput) +} + +// BrowserXSSFilter defines whether to add the X-XSS-Protection header with the value 1; mode=block. +func (o MiddlewareSpecHeadersPtrOutput) BrowserXssFilter() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.BrowserXssFilter + }).(pulumi.BoolPtrOutput) +} + +// ContentSecurityPolicy defines the Content-Security-Policy header value. +func (o MiddlewareSpecHeadersPtrOutput) ContentSecurityPolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *string { + if v == nil { + return nil + } + return v.ContentSecurityPolicy + }).(pulumi.StringPtrOutput) +} + +// ContentTypeNosniff defines whether to add the X-Content-Type-Options header with the nosniff value. +func (o MiddlewareSpecHeadersPtrOutput) ContentTypeNosniff() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.ContentTypeNosniff + }).(pulumi.BoolPtrOutput) +} + +// CustomBrowserXSSValue defines the X-XSS-Protection header value. This overrides the BrowserXssFilter option. +func (o MiddlewareSpecHeadersPtrOutput) CustomBrowserXSSValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *string { + if v == nil { + return nil + } + return v.CustomBrowserXSSValue + }).(pulumi.StringPtrOutput) +} + +// CustomFrameOptionsValue defines the X-Frame-Options header value. This overrides the FrameDeny option. +func (o MiddlewareSpecHeadersPtrOutput) CustomFrameOptionsValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *string { + if v == nil { + return nil + } + return v.CustomFrameOptionsValue + }).(pulumi.StringPtrOutput) +} + +// CustomRequestHeaders defines the header names and values to apply to the request. +func (o MiddlewareSpecHeadersPtrOutput) CustomRequestHeaders() pulumi.StringMapOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) map[string]string { + if v == nil { + return nil + } + return v.CustomRequestHeaders + }).(pulumi.StringMapOutput) +} + +// CustomResponseHeaders defines the header names and values to apply to the response. +func (o MiddlewareSpecHeadersPtrOutput) CustomResponseHeaders() pulumi.StringMapOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) map[string]string { + if v == nil { + return nil + } + return v.CustomResponseHeaders + }).(pulumi.StringMapOutput) +} + +// Deprecated: use PermissionsPolicy instead. +func (o MiddlewareSpecHeadersPtrOutput) FeaturePolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *string { + if v == nil { + return nil + } + return v.FeaturePolicy + }).(pulumi.StringPtrOutput) +} + +// ForceSTSHeader defines whether to add the STS header even when the connection is HTTP. +func (o MiddlewareSpecHeadersPtrOutput) ForceSTSHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.ForceSTSHeader + }).(pulumi.BoolPtrOutput) +} + +// FrameDeny defines whether to add the X-Frame-Options header with the DENY value. +func (o MiddlewareSpecHeadersPtrOutput) FrameDeny() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.FrameDeny + }).(pulumi.BoolPtrOutput) +} + +// HostsProxyHeaders defines the header keys that may hold a proxied hostname value for the request. +func (o MiddlewareSpecHeadersPtrOutput) HostsProxyHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) []string { + if v == nil { + return nil + } + return v.HostsProxyHeaders + }).(pulumi.StringArrayOutput) +} + +// IsDevelopment defines whether to mitigate the unwanted effects of the AllowedHosts, SSL, and STS options when developing. Usually testing takes place using HTTP, not HTTPS, and on localhost, not your production domain. If you would like your development environment to mimic production with complete Host blocking, SSL redirects, and STS headers, leave this as false. +func (o MiddlewareSpecHeadersPtrOutput) IsDevelopment() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.IsDevelopment + }).(pulumi.BoolPtrOutput) +} + +// PermissionsPolicy defines the Permissions-Policy header value. This allows sites to control browser features. +func (o MiddlewareSpecHeadersPtrOutput) PermissionsPolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *string { + if v == nil { + return nil + } + return v.PermissionsPolicy + }).(pulumi.StringPtrOutput) +} + +// PublicKey is the public key that implements HPKP to prevent MITM attacks with forged certificates. +func (o MiddlewareSpecHeadersPtrOutput) PublicKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *string { + if v == nil { + return nil + } + return v.PublicKey + }).(pulumi.StringPtrOutput) +} + +// ReferrerPolicy defines the Referrer-Policy header value. This allows sites to control whether browsers forward the Referer header to other sites. +func (o MiddlewareSpecHeadersPtrOutput) ReferrerPolicy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *string { + if v == nil { + return nil + } + return v.ReferrerPolicy + }).(pulumi.StringPtrOutput) +} + +// Deprecated: use RedirectRegex instead. +func (o MiddlewareSpecHeadersPtrOutput) SslForceHost() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.SslForceHost + }).(pulumi.BoolPtrOutput) +} + +// Deprecated: use RedirectRegex instead. +func (o MiddlewareSpecHeadersPtrOutput) SslHost() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *string { + if v == nil { + return nil + } + return v.SslHost + }).(pulumi.StringPtrOutput) +} + +// SSLProxyHeaders defines the header keys with associated values that would indicate a valid HTTPS request. It can be useful when using other proxies (example: "X-Forwarded-Proto": "https"). +func (o MiddlewareSpecHeadersPtrOutput) SslProxyHeaders() pulumi.StringMapOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) map[string]string { + if v == nil { + return nil + } + return v.SslProxyHeaders + }).(pulumi.StringMapOutput) +} + +// Deprecated: use EntryPoint redirection or RedirectScheme instead. +func (o MiddlewareSpecHeadersPtrOutput) SslRedirect() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.SslRedirect + }).(pulumi.BoolPtrOutput) +} + +// Deprecated: use EntryPoint redirection or RedirectScheme instead. +func (o MiddlewareSpecHeadersPtrOutput) SslTemporaryRedirect() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.SslTemporaryRedirect + }).(pulumi.BoolPtrOutput) +} + +// STSIncludeSubdomains defines whether the includeSubDomains directive is appended to the Strict-Transport-Security header. +func (o MiddlewareSpecHeadersPtrOutput) StsIncludeSubdomains() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.StsIncludeSubdomains + }).(pulumi.BoolPtrOutput) +} + +// STSPreload defines whether the preload flag is appended to the Strict-Transport-Security header. +func (o MiddlewareSpecHeadersPtrOutput) StsPreload() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *bool { + if v == nil { + return nil + } + return v.StsPreload + }).(pulumi.BoolPtrOutput) +} + +// STSSeconds defines the max-age of the Strict-Transport-Security header. If set to 0, the header is not set. +func (o MiddlewareSpecHeadersPtrOutput) StsSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecHeaders) *int { + if v == nil { + return nil + } + return v.StsSeconds + }).(pulumi.IntPtrOutput) +} + +// CustomRequestHeaders defines the header names and values to apply to the request. +type MiddlewareSpecHeadersCustomRequestHeaders struct { +} + +// CustomResponseHeaders defines the header names and values to apply to the response. +type MiddlewareSpecHeadersCustomResponseHeaders struct { +} + +// SSLProxyHeaders defines the header keys with associated values that would indicate a valid HTTPS request. It can be useful when using other proxies (example: "X-Forwarded-Proto": "https"). +type MiddlewareSpecHeadersSslProxyHeaders struct { +} + +// InFlightReq holds the in-flight request middleware configuration. This middleware limits the number of requests being processed and served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/ +type MiddlewareSpecInFlightReq struct { + // Amount defines the maximum amount of allowed simultaneous in-flight request. The middleware responds with HTTP 429 Too Many Requests if there are already amount requests in progress (based on the same sourceCriterion strategy). + Amount *int `pulumi:"amount"` + // SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the requestHost. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion + SourceCriterion *MiddlewareSpecInFlightReqSourceCriterion `pulumi:"sourceCriterion"` +} + +// MiddlewareSpecInFlightReqInput is an input type that accepts MiddlewareSpecInFlightReqArgs and MiddlewareSpecInFlightReqOutput values. +// You can construct a concrete instance of `MiddlewareSpecInFlightReqInput` via: +// +// MiddlewareSpecInFlightReqArgs{...} +type MiddlewareSpecInFlightReqInput interface { + pulumi.Input + + ToMiddlewareSpecInFlightReqOutput() MiddlewareSpecInFlightReqOutput + ToMiddlewareSpecInFlightReqOutputWithContext(context.Context) MiddlewareSpecInFlightReqOutput +} + +// InFlightReq holds the in-flight request middleware configuration. This middleware limits the number of requests being processed and served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/ +type MiddlewareSpecInFlightReqArgs struct { + // Amount defines the maximum amount of allowed simultaneous in-flight request. The middleware responds with HTTP 429 Too Many Requests if there are already amount requests in progress (based on the same sourceCriterion strategy). + Amount pulumi.IntPtrInput `pulumi:"amount"` + // SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the requestHost. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion + SourceCriterion MiddlewareSpecInFlightReqSourceCriterionPtrInput `pulumi:"sourceCriterion"` +} + +func (MiddlewareSpecInFlightReqArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecInFlightReq)(nil)).Elem() +} + +func (i MiddlewareSpecInFlightReqArgs) ToMiddlewareSpecInFlightReqOutput() MiddlewareSpecInFlightReqOutput { + return i.ToMiddlewareSpecInFlightReqOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecInFlightReqArgs) ToMiddlewareSpecInFlightReqOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecInFlightReqOutput) +} + +func (i MiddlewareSpecInFlightReqArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecInFlightReq] { + return pulumix.Output[MiddlewareSpecInFlightReq]{ + OutputState: i.ToMiddlewareSpecInFlightReqOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecInFlightReqArgs) ToMiddlewareSpecInFlightReqPtrOutput() MiddlewareSpecInFlightReqPtrOutput { + return i.ToMiddlewareSpecInFlightReqPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecInFlightReqArgs) ToMiddlewareSpecInFlightReqPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecInFlightReqOutput).ToMiddlewareSpecInFlightReqPtrOutputWithContext(ctx) +} + +// MiddlewareSpecInFlightReqPtrInput is an input type that accepts MiddlewareSpecInFlightReqArgs, MiddlewareSpecInFlightReqPtr and MiddlewareSpecInFlightReqPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecInFlightReqPtrInput` via: +// +// MiddlewareSpecInFlightReqArgs{...} +// +// or: +// +// nil +type MiddlewareSpecInFlightReqPtrInput interface { + pulumi.Input + + ToMiddlewareSpecInFlightReqPtrOutput() MiddlewareSpecInFlightReqPtrOutput + ToMiddlewareSpecInFlightReqPtrOutputWithContext(context.Context) MiddlewareSpecInFlightReqPtrOutput +} + +type middlewareSpecInFlightReqPtrType MiddlewareSpecInFlightReqArgs + +func MiddlewareSpecInFlightReqPtr(v *MiddlewareSpecInFlightReqArgs) MiddlewareSpecInFlightReqPtrInput { + return (*middlewareSpecInFlightReqPtrType)(v) +} + +func (*middlewareSpecInFlightReqPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecInFlightReq)(nil)).Elem() +} + +func (i *middlewareSpecInFlightReqPtrType) ToMiddlewareSpecInFlightReqPtrOutput() MiddlewareSpecInFlightReqPtrOutput { + return i.ToMiddlewareSpecInFlightReqPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecInFlightReqPtrType) ToMiddlewareSpecInFlightReqPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecInFlightReqPtrOutput) +} + +func (i *middlewareSpecInFlightReqPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecInFlightReq] { + return pulumix.Output[*MiddlewareSpecInFlightReq]{ + OutputState: i.ToMiddlewareSpecInFlightReqPtrOutputWithContext(ctx).OutputState, + } +} + +// InFlightReq holds the in-flight request middleware configuration. This middleware limits the number of requests being processed and served concurrently. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/ +type MiddlewareSpecInFlightReqOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecInFlightReqOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecInFlightReq)(nil)).Elem() +} + +func (o MiddlewareSpecInFlightReqOutput) ToMiddlewareSpecInFlightReqOutput() MiddlewareSpecInFlightReqOutput { + return o +} + +func (o MiddlewareSpecInFlightReqOutput) ToMiddlewareSpecInFlightReqOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqOutput { + return o +} + +func (o MiddlewareSpecInFlightReqOutput) ToMiddlewareSpecInFlightReqPtrOutput() MiddlewareSpecInFlightReqPtrOutput { + return o.ToMiddlewareSpecInFlightReqPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecInFlightReqOutput) ToMiddlewareSpecInFlightReqPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecInFlightReq) *MiddlewareSpecInFlightReq { + return &v + }).(MiddlewareSpecInFlightReqPtrOutput) +} + +func (o MiddlewareSpecInFlightReqOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecInFlightReq] { + return pulumix.Output[MiddlewareSpecInFlightReq]{ + OutputState: o.OutputState, + } +} + +// Amount defines the maximum amount of allowed simultaneous in-flight request. The middleware responds with HTTP 429 Too Many Requests if there are already amount requests in progress (based on the same sourceCriterion strategy). +func (o MiddlewareSpecInFlightReqOutput) Amount() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecInFlightReq) *int { return v.Amount }).(pulumi.IntPtrOutput) +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the requestHost. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion +func (o MiddlewareSpecInFlightReqOutput) SourceCriterion() MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return o.ApplyT(func(v MiddlewareSpecInFlightReq) *MiddlewareSpecInFlightReqSourceCriterion { return v.SourceCriterion }).(MiddlewareSpecInFlightReqSourceCriterionPtrOutput) +} + +type MiddlewareSpecInFlightReqPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecInFlightReqPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecInFlightReq)(nil)).Elem() +} + +func (o MiddlewareSpecInFlightReqPtrOutput) ToMiddlewareSpecInFlightReqPtrOutput() MiddlewareSpecInFlightReqPtrOutput { + return o +} + +func (o MiddlewareSpecInFlightReqPtrOutput) ToMiddlewareSpecInFlightReqPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqPtrOutput { + return o +} + +func (o MiddlewareSpecInFlightReqPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecInFlightReq] { + return pulumix.Output[*MiddlewareSpecInFlightReq]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecInFlightReqPtrOutput) Elem() MiddlewareSpecInFlightReqOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReq) MiddlewareSpecInFlightReq { + if v != nil { + return *v + } + var ret MiddlewareSpecInFlightReq + return ret + }).(MiddlewareSpecInFlightReqOutput) +} + +// Amount defines the maximum amount of allowed simultaneous in-flight request. The middleware responds with HTTP 429 Too Many Requests if there are already amount requests in progress (based on the same sourceCriterion strategy). +func (o MiddlewareSpecInFlightReqPtrOutput) Amount() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReq) *int { + if v == nil { + return nil + } + return v.Amount + }).(pulumi.IntPtrOutput) +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the requestHost. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion +func (o MiddlewareSpecInFlightReqPtrOutput) SourceCriterion() MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReq) *MiddlewareSpecInFlightReqSourceCriterion { + if v == nil { + return nil + } + return v.SourceCriterion + }).(MiddlewareSpecInFlightReqSourceCriterionPtrOutput) +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the requestHost. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion +type MiddlewareSpecInFlightReqSourceCriterion struct { + // IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy + IpStrategy *MiddlewareSpecInFlightReqSourceCriterionIpStrategy `pulumi:"ipStrategy"` + // RequestHeaderName defines the name of the header used to group incoming requests. + RequestHeaderName *string `pulumi:"requestHeaderName"` + // RequestHost defines whether to consider the request Host as the source. + RequestHost *bool `pulumi:"requestHost"` +} + +// MiddlewareSpecInFlightReqSourceCriterionInput is an input type that accepts MiddlewareSpecInFlightReqSourceCriterionArgs and MiddlewareSpecInFlightReqSourceCriterionOutput values. +// You can construct a concrete instance of `MiddlewareSpecInFlightReqSourceCriterionInput` via: +// +// MiddlewareSpecInFlightReqSourceCriterionArgs{...} +type MiddlewareSpecInFlightReqSourceCriterionInput interface { + pulumi.Input + + ToMiddlewareSpecInFlightReqSourceCriterionOutput() MiddlewareSpecInFlightReqSourceCriterionOutput + ToMiddlewareSpecInFlightReqSourceCriterionOutputWithContext(context.Context) MiddlewareSpecInFlightReqSourceCriterionOutput +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the requestHost. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion +type MiddlewareSpecInFlightReqSourceCriterionArgs struct { + // IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy + IpStrategy MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrInput `pulumi:"ipStrategy"` + // RequestHeaderName defines the name of the header used to group incoming requests. + RequestHeaderName pulumi.StringPtrInput `pulumi:"requestHeaderName"` + // RequestHost defines whether to consider the request Host as the source. + RequestHost pulumi.BoolPtrInput `pulumi:"requestHost"` +} + +func (MiddlewareSpecInFlightReqSourceCriterionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecInFlightReqSourceCriterion)(nil)).Elem() +} + +func (i MiddlewareSpecInFlightReqSourceCriterionArgs) ToMiddlewareSpecInFlightReqSourceCriterionOutput() MiddlewareSpecInFlightReqSourceCriterionOutput { + return i.ToMiddlewareSpecInFlightReqSourceCriterionOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecInFlightReqSourceCriterionArgs) ToMiddlewareSpecInFlightReqSourceCriterionOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecInFlightReqSourceCriterionOutput) +} + +func (i MiddlewareSpecInFlightReqSourceCriterionArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecInFlightReqSourceCriterion] { + return pulumix.Output[MiddlewareSpecInFlightReqSourceCriterion]{ + OutputState: i.ToMiddlewareSpecInFlightReqSourceCriterionOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecInFlightReqSourceCriterionArgs) ToMiddlewareSpecInFlightReqSourceCriterionPtrOutput() MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return i.ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecInFlightReqSourceCriterionArgs) ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecInFlightReqSourceCriterionOutput).ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(ctx) +} + +// MiddlewareSpecInFlightReqSourceCriterionPtrInput is an input type that accepts MiddlewareSpecInFlightReqSourceCriterionArgs, MiddlewareSpecInFlightReqSourceCriterionPtr and MiddlewareSpecInFlightReqSourceCriterionPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecInFlightReqSourceCriterionPtrInput` via: +// +// MiddlewareSpecInFlightReqSourceCriterionArgs{...} +// +// or: +// +// nil +type MiddlewareSpecInFlightReqSourceCriterionPtrInput interface { + pulumi.Input + + ToMiddlewareSpecInFlightReqSourceCriterionPtrOutput() MiddlewareSpecInFlightReqSourceCriterionPtrOutput + ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(context.Context) MiddlewareSpecInFlightReqSourceCriterionPtrOutput +} + +type middlewareSpecInFlightReqSourceCriterionPtrType MiddlewareSpecInFlightReqSourceCriterionArgs + +func MiddlewareSpecInFlightReqSourceCriterionPtr(v *MiddlewareSpecInFlightReqSourceCriterionArgs) MiddlewareSpecInFlightReqSourceCriterionPtrInput { + return (*middlewareSpecInFlightReqSourceCriterionPtrType)(v) +} + +func (*middlewareSpecInFlightReqSourceCriterionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecInFlightReqSourceCriterion)(nil)).Elem() +} + +func (i *middlewareSpecInFlightReqSourceCriterionPtrType) ToMiddlewareSpecInFlightReqSourceCriterionPtrOutput() MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return i.ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecInFlightReqSourceCriterionPtrType) ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecInFlightReqSourceCriterionPtrOutput) +} + +func (i *middlewareSpecInFlightReqSourceCriterionPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecInFlightReqSourceCriterion] { + return pulumix.Output[*MiddlewareSpecInFlightReqSourceCriterion]{ + OutputState: i.ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(ctx).OutputState, + } +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the requestHost. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/inflightreq/#sourcecriterion +type MiddlewareSpecInFlightReqSourceCriterionOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecInFlightReqSourceCriterionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecInFlightReqSourceCriterion)(nil)).Elem() +} + +func (o MiddlewareSpecInFlightReqSourceCriterionOutput) ToMiddlewareSpecInFlightReqSourceCriterionOutput() MiddlewareSpecInFlightReqSourceCriterionOutput { + return o +} + +func (o MiddlewareSpecInFlightReqSourceCriterionOutput) ToMiddlewareSpecInFlightReqSourceCriterionOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionOutput { + return o +} + +func (o MiddlewareSpecInFlightReqSourceCriterionOutput) ToMiddlewareSpecInFlightReqSourceCriterionPtrOutput() MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return o.ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecInFlightReqSourceCriterionOutput) ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecInFlightReqSourceCriterion) *MiddlewareSpecInFlightReqSourceCriterion { + return &v + }).(MiddlewareSpecInFlightReqSourceCriterionPtrOutput) +} + +func (o MiddlewareSpecInFlightReqSourceCriterionOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecInFlightReqSourceCriterion] { + return pulumix.Output[MiddlewareSpecInFlightReqSourceCriterion]{ + OutputState: o.OutputState, + } +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +func (o MiddlewareSpecInFlightReqSourceCriterionOutput) IpStrategy() MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return o.ApplyT(func(v MiddlewareSpecInFlightReqSourceCriterion) *MiddlewareSpecInFlightReqSourceCriterionIpStrategy { + return v.IpStrategy + }).(MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) +} + +// RequestHeaderName defines the name of the header used to group incoming requests. +func (o MiddlewareSpecInFlightReqSourceCriterionOutput) RequestHeaderName() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecInFlightReqSourceCriterion) *string { return v.RequestHeaderName }).(pulumi.StringPtrOutput) +} + +// RequestHost defines whether to consider the request Host as the source. +func (o MiddlewareSpecInFlightReqSourceCriterionOutput) RequestHost() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecInFlightReqSourceCriterion) *bool { return v.RequestHost }).(pulumi.BoolPtrOutput) +} + +type MiddlewareSpecInFlightReqSourceCriterionPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecInFlightReqSourceCriterionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecInFlightReqSourceCriterion)(nil)).Elem() +} + +func (o MiddlewareSpecInFlightReqSourceCriterionPtrOutput) ToMiddlewareSpecInFlightReqSourceCriterionPtrOutput() MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return o +} + +func (o MiddlewareSpecInFlightReqSourceCriterionPtrOutput) ToMiddlewareSpecInFlightReqSourceCriterionPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionPtrOutput { + return o +} + +func (o MiddlewareSpecInFlightReqSourceCriterionPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecInFlightReqSourceCriterion] { + return pulumix.Output[*MiddlewareSpecInFlightReqSourceCriterion]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecInFlightReqSourceCriterionPtrOutput) Elem() MiddlewareSpecInFlightReqSourceCriterionOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReqSourceCriterion) MiddlewareSpecInFlightReqSourceCriterion { + if v != nil { + return *v + } + var ret MiddlewareSpecInFlightReqSourceCriterion + return ret + }).(MiddlewareSpecInFlightReqSourceCriterionOutput) +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +func (o MiddlewareSpecInFlightReqSourceCriterionPtrOutput) IpStrategy() MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReqSourceCriterion) *MiddlewareSpecInFlightReqSourceCriterionIpStrategy { + if v == nil { + return nil + } + return v.IpStrategy + }).(MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) +} + +// RequestHeaderName defines the name of the header used to group incoming requests. +func (o MiddlewareSpecInFlightReqSourceCriterionPtrOutput) RequestHeaderName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReqSourceCriterion) *string { + if v == nil { + return nil + } + return v.RequestHeaderName + }).(pulumi.StringPtrOutput) +} + +// RequestHost defines whether to consider the request Host as the source. +func (o MiddlewareSpecInFlightReqSourceCriterionPtrOutput) RequestHost() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReqSourceCriterion) *bool { + if v == nil { + return nil + } + return v.RequestHost + }).(pulumi.BoolPtrOutput) +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +type MiddlewareSpecInFlightReqSourceCriterionIpStrategy struct { + // Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). + Depth *int `pulumi:"depth"` + // ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. + ExcludedIPs []string `pulumi:"excludedIPs"` +} + +// MiddlewareSpecInFlightReqSourceCriterionIpStrategyInput is an input type that accepts MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs and MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput values. +// You can construct a concrete instance of `MiddlewareSpecInFlightReqSourceCriterionIpStrategyInput` via: +// +// MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs{...} +type MiddlewareSpecInFlightReqSourceCriterionIpStrategyInput interface { + pulumi.Input + + ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput() MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput + ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyOutputWithContext(context.Context) MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +type MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs struct { + // Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). + Depth pulumi.IntPtrInput `pulumi:"depth"` + // ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. + ExcludedIPs pulumi.StringArrayInput `pulumi:"excludedIPs"` +} + +func (MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecInFlightReqSourceCriterionIpStrategy)(nil)).Elem() +} + +func (i MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput() MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput { + return i.ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) +} + +func (i MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecInFlightReqSourceCriterionIpStrategy] { + return pulumix.Output[MiddlewareSpecInFlightReqSourceCriterionIpStrategy]{ + OutputState: i.ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput() MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return i.ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput).ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(ctx) +} + +// MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrInput is an input type that accepts MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs, MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtr and MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrInput` via: +// +// MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs{...} +// +// or: +// +// nil +type MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrInput interface { + pulumi.Input + + ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput() MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput + ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(context.Context) MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput +} + +type middlewareSpecInFlightReqSourceCriterionIpStrategyPtrType MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs + +func MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtr(v *MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs) MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrInput { + return (*middlewareSpecInFlightReqSourceCriterionIpStrategyPtrType)(v) +} + +func (*middlewareSpecInFlightReqSourceCriterionIpStrategyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecInFlightReqSourceCriterionIpStrategy)(nil)).Elem() +} + +func (i *middlewareSpecInFlightReqSourceCriterionIpStrategyPtrType) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput() MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return i.ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecInFlightReqSourceCriterionIpStrategyPtrType) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) +} + +func (i *middlewareSpecInFlightReqSourceCriterionIpStrategyPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecInFlightReqSourceCriterionIpStrategy] { + return pulumix.Output[*MiddlewareSpecInFlightReqSourceCriterionIpStrategy]{ + OutputState: i.ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(ctx).OutputState, + } +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +type MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecInFlightReqSourceCriterionIpStrategy)(nil)).Elem() +} + +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput() MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput { + return o +} + +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput { + return o +} + +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput() MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return o.ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecInFlightReqSourceCriterionIpStrategy) *MiddlewareSpecInFlightReqSourceCriterionIpStrategy { + return &v + }).(MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) +} + +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecInFlightReqSourceCriterionIpStrategy] { + return pulumix.Output[MiddlewareSpecInFlightReqSourceCriterionIpStrategy]{ + OutputState: o.OutputState, + } +} + +// Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) Depth() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecInFlightReqSourceCriterionIpStrategy) *int { return v.Depth }).(pulumi.IntPtrOutput) +} + +// ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) ExcludedIPs() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecInFlightReqSourceCriterionIpStrategy) []string { return v.ExcludedIPs }).(pulumi.StringArrayOutput) +} + +type MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecInFlightReqSourceCriterionIpStrategy)(nil)).Elem() +} + +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput() MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return o +} + +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) ToMiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput { + return o +} + +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecInFlightReqSourceCriterionIpStrategy] { + return pulumix.Output[*MiddlewareSpecInFlightReqSourceCriterionIpStrategy]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) Elem() MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReqSourceCriterionIpStrategy) MiddlewareSpecInFlightReqSourceCriterionIpStrategy { + if v != nil { + return *v + } + var ret MiddlewareSpecInFlightReqSourceCriterionIpStrategy + return ret + }).(MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput) +} + +// Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) Depth() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReqSourceCriterionIpStrategy) *int { + if v == nil { + return nil + } + return v.Depth + }).(pulumi.IntPtrOutput) +} + +// ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. +func (o MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput) ExcludedIPs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecInFlightReqSourceCriterionIpStrategy) []string { + if v == nil { + return nil + } + return v.ExcludedIPs + }).(pulumi.StringArrayOutput) +} + +// IPWhiteList holds the IP whitelist middleware configuration. This middleware accepts / refuses requests based on the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/ +type MiddlewareSpecIpWhiteList struct { + // IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy + IpStrategy *MiddlewareSpecIpWhiteListIpStrategy `pulumi:"ipStrategy"` + // SourceRange defines the set of allowed IPs (or ranges of allowed IPs by using CIDR notation). + SourceRange []string `pulumi:"sourceRange"` +} + +// MiddlewareSpecIpWhiteListInput is an input type that accepts MiddlewareSpecIpWhiteListArgs and MiddlewareSpecIpWhiteListOutput values. +// You can construct a concrete instance of `MiddlewareSpecIpWhiteListInput` via: +// +// MiddlewareSpecIpWhiteListArgs{...} +type MiddlewareSpecIpWhiteListInput interface { + pulumi.Input + + ToMiddlewareSpecIpWhiteListOutput() MiddlewareSpecIpWhiteListOutput + ToMiddlewareSpecIpWhiteListOutputWithContext(context.Context) MiddlewareSpecIpWhiteListOutput +} + +// IPWhiteList holds the IP whitelist middleware configuration. This middleware accepts / refuses requests based on the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/ +type MiddlewareSpecIpWhiteListArgs struct { + // IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy + IpStrategy MiddlewareSpecIpWhiteListIpStrategyPtrInput `pulumi:"ipStrategy"` + // SourceRange defines the set of allowed IPs (or ranges of allowed IPs by using CIDR notation). + SourceRange pulumi.StringArrayInput `pulumi:"sourceRange"` +} + +func (MiddlewareSpecIpWhiteListArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecIpWhiteList)(nil)).Elem() +} + +func (i MiddlewareSpecIpWhiteListArgs) ToMiddlewareSpecIpWhiteListOutput() MiddlewareSpecIpWhiteListOutput { + return i.ToMiddlewareSpecIpWhiteListOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecIpWhiteListArgs) ToMiddlewareSpecIpWhiteListOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecIpWhiteListOutput) +} + +func (i MiddlewareSpecIpWhiteListArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecIpWhiteList] { + return pulumix.Output[MiddlewareSpecIpWhiteList]{ + OutputState: i.ToMiddlewareSpecIpWhiteListOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecIpWhiteListArgs) ToMiddlewareSpecIpWhiteListPtrOutput() MiddlewareSpecIpWhiteListPtrOutput { + return i.ToMiddlewareSpecIpWhiteListPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecIpWhiteListArgs) ToMiddlewareSpecIpWhiteListPtrOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecIpWhiteListOutput).ToMiddlewareSpecIpWhiteListPtrOutputWithContext(ctx) +} + +// MiddlewareSpecIpWhiteListPtrInput is an input type that accepts MiddlewareSpecIpWhiteListArgs, MiddlewareSpecIpWhiteListPtr and MiddlewareSpecIpWhiteListPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecIpWhiteListPtrInput` via: +// +// MiddlewareSpecIpWhiteListArgs{...} +// +// or: +// +// nil +type MiddlewareSpecIpWhiteListPtrInput interface { + pulumi.Input + + ToMiddlewareSpecIpWhiteListPtrOutput() MiddlewareSpecIpWhiteListPtrOutput + ToMiddlewareSpecIpWhiteListPtrOutputWithContext(context.Context) MiddlewareSpecIpWhiteListPtrOutput +} + +type middlewareSpecIpWhiteListPtrType MiddlewareSpecIpWhiteListArgs + +func MiddlewareSpecIpWhiteListPtr(v *MiddlewareSpecIpWhiteListArgs) MiddlewareSpecIpWhiteListPtrInput { + return (*middlewareSpecIpWhiteListPtrType)(v) +} + +func (*middlewareSpecIpWhiteListPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecIpWhiteList)(nil)).Elem() +} + +func (i *middlewareSpecIpWhiteListPtrType) ToMiddlewareSpecIpWhiteListPtrOutput() MiddlewareSpecIpWhiteListPtrOutput { + return i.ToMiddlewareSpecIpWhiteListPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecIpWhiteListPtrType) ToMiddlewareSpecIpWhiteListPtrOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecIpWhiteListPtrOutput) +} + +func (i *middlewareSpecIpWhiteListPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecIpWhiteList] { + return pulumix.Output[*MiddlewareSpecIpWhiteList]{ + OutputState: i.ToMiddlewareSpecIpWhiteListPtrOutputWithContext(ctx).OutputState, + } +} + +// IPWhiteList holds the IP whitelist middleware configuration. This middleware accepts / refuses requests based on the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/ +type MiddlewareSpecIpWhiteListOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecIpWhiteListOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecIpWhiteList)(nil)).Elem() +} + +func (o MiddlewareSpecIpWhiteListOutput) ToMiddlewareSpecIpWhiteListOutput() MiddlewareSpecIpWhiteListOutput { + return o +} + +func (o MiddlewareSpecIpWhiteListOutput) ToMiddlewareSpecIpWhiteListOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListOutput { + return o +} + +func (o MiddlewareSpecIpWhiteListOutput) ToMiddlewareSpecIpWhiteListPtrOutput() MiddlewareSpecIpWhiteListPtrOutput { + return o.ToMiddlewareSpecIpWhiteListPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecIpWhiteListOutput) ToMiddlewareSpecIpWhiteListPtrOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecIpWhiteList) *MiddlewareSpecIpWhiteList { + return &v + }).(MiddlewareSpecIpWhiteListPtrOutput) +} + +func (o MiddlewareSpecIpWhiteListOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecIpWhiteList] { + return pulumix.Output[MiddlewareSpecIpWhiteList]{ + OutputState: o.OutputState, + } +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +func (o MiddlewareSpecIpWhiteListOutput) IpStrategy() MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return o.ApplyT(func(v MiddlewareSpecIpWhiteList) *MiddlewareSpecIpWhiteListIpStrategy { return v.IpStrategy }).(MiddlewareSpecIpWhiteListIpStrategyPtrOutput) +} + +// SourceRange defines the set of allowed IPs (or ranges of allowed IPs by using CIDR notation). +func (o MiddlewareSpecIpWhiteListOutput) SourceRange() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecIpWhiteList) []string { return v.SourceRange }).(pulumi.StringArrayOutput) +} + +type MiddlewareSpecIpWhiteListPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecIpWhiteListPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecIpWhiteList)(nil)).Elem() +} + +func (o MiddlewareSpecIpWhiteListPtrOutput) ToMiddlewareSpecIpWhiteListPtrOutput() MiddlewareSpecIpWhiteListPtrOutput { + return o +} + +func (o MiddlewareSpecIpWhiteListPtrOutput) ToMiddlewareSpecIpWhiteListPtrOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListPtrOutput { + return o +} + +func (o MiddlewareSpecIpWhiteListPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecIpWhiteList] { + return pulumix.Output[*MiddlewareSpecIpWhiteList]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecIpWhiteListPtrOutput) Elem() MiddlewareSpecIpWhiteListOutput { + return o.ApplyT(func(v *MiddlewareSpecIpWhiteList) MiddlewareSpecIpWhiteList { + if v != nil { + return *v + } + var ret MiddlewareSpecIpWhiteList + return ret + }).(MiddlewareSpecIpWhiteListOutput) +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +func (o MiddlewareSpecIpWhiteListPtrOutput) IpStrategy() MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecIpWhiteList) *MiddlewareSpecIpWhiteListIpStrategy { + if v == nil { + return nil + } + return v.IpStrategy + }).(MiddlewareSpecIpWhiteListIpStrategyPtrOutput) +} + +// SourceRange defines the set of allowed IPs (or ranges of allowed IPs by using CIDR notation). +func (o MiddlewareSpecIpWhiteListPtrOutput) SourceRange() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecIpWhiteList) []string { + if v == nil { + return nil + } + return v.SourceRange + }).(pulumi.StringArrayOutput) +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +type MiddlewareSpecIpWhiteListIpStrategy struct { + // Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). + Depth *int `pulumi:"depth"` + // ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. + ExcludedIPs []string `pulumi:"excludedIPs"` +} + +// MiddlewareSpecIpWhiteListIpStrategyInput is an input type that accepts MiddlewareSpecIpWhiteListIpStrategyArgs and MiddlewareSpecIpWhiteListIpStrategyOutput values. +// You can construct a concrete instance of `MiddlewareSpecIpWhiteListIpStrategyInput` via: +// +// MiddlewareSpecIpWhiteListIpStrategyArgs{...} +type MiddlewareSpecIpWhiteListIpStrategyInput interface { + pulumi.Input + + ToMiddlewareSpecIpWhiteListIpStrategyOutput() MiddlewareSpecIpWhiteListIpStrategyOutput + ToMiddlewareSpecIpWhiteListIpStrategyOutputWithContext(context.Context) MiddlewareSpecIpWhiteListIpStrategyOutput +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +type MiddlewareSpecIpWhiteListIpStrategyArgs struct { + // Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). + Depth pulumi.IntPtrInput `pulumi:"depth"` + // ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. + ExcludedIPs pulumi.StringArrayInput `pulumi:"excludedIPs"` +} + +func (MiddlewareSpecIpWhiteListIpStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecIpWhiteListIpStrategy)(nil)).Elem() +} + +func (i MiddlewareSpecIpWhiteListIpStrategyArgs) ToMiddlewareSpecIpWhiteListIpStrategyOutput() MiddlewareSpecIpWhiteListIpStrategyOutput { + return i.ToMiddlewareSpecIpWhiteListIpStrategyOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecIpWhiteListIpStrategyArgs) ToMiddlewareSpecIpWhiteListIpStrategyOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListIpStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecIpWhiteListIpStrategyOutput) +} + +func (i MiddlewareSpecIpWhiteListIpStrategyArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecIpWhiteListIpStrategy] { + return pulumix.Output[MiddlewareSpecIpWhiteListIpStrategy]{ + OutputState: i.ToMiddlewareSpecIpWhiteListIpStrategyOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecIpWhiteListIpStrategyArgs) ToMiddlewareSpecIpWhiteListIpStrategyPtrOutput() MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return i.ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecIpWhiteListIpStrategyArgs) ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecIpWhiteListIpStrategyOutput).ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(ctx) +} + +// MiddlewareSpecIpWhiteListIpStrategyPtrInput is an input type that accepts MiddlewareSpecIpWhiteListIpStrategyArgs, MiddlewareSpecIpWhiteListIpStrategyPtr and MiddlewareSpecIpWhiteListIpStrategyPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecIpWhiteListIpStrategyPtrInput` via: +// +// MiddlewareSpecIpWhiteListIpStrategyArgs{...} +// +// or: +// +// nil +type MiddlewareSpecIpWhiteListIpStrategyPtrInput interface { + pulumi.Input + + ToMiddlewareSpecIpWhiteListIpStrategyPtrOutput() MiddlewareSpecIpWhiteListIpStrategyPtrOutput + ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(context.Context) MiddlewareSpecIpWhiteListIpStrategyPtrOutput +} + +type middlewareSpecIpWhiteListIpStrategyPtrType MiddlewareSpecIpWhiteListIpStrategyArgs + +func MiddlewareSpecIpWhiteListIpStrategyPtr(v *MiddlewareSpecIpWhiteListIpStrategyArgs) MiddlewareSpecIpWhiteListIpStrategyPtrInput { + return (*middlewareSpecIpWhiteListIpStrategyPtrType)(v) +} + +func (*middlewareSpecIpWhiteListIpStrategyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecIpWhiteListIpStrategy)(nil)).Elem() +} + +func (i *middlewareSpecIpWhiteListIpStrategyPtrType) ToMiddlewareSpecIpWhiteListIpStrategyPtrOutput() MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return i.ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecIpWhiteListIpStrategyPtrType) ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecIpWhiteListIpStrategyPtrOutput) +} + +func (i *middlewareSpecIpWhiteListIpStrategyPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecIpWhiteListIpStrategy] { + return pulumix.Output[*MiddlewareSpecIpWhiteListIpStrategy]{ + OutputState: i.ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(ctx).OutputState, + } +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +type MiddlewareSpecIpWhiteListIpStrategyOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecIpWhiteListIpStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecIpWhiteListIpStrategy)(nil)).Elem() +} + +func (o MiddlewareSpecIpWhiteListIpStrategyOutput) ToMiddlewareSpecIpWhiteListIpStrategyOutput() MiddlewareSpecIpWhiteListIpStrategyOutput { + return o +} + +func (o MiddlewareSpecIpWhiteListIpStrategyOutput) ToMiddlewareSpecIpWhiteListIpStrategyOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListIpStrategyOutput { + return o +} + +func (o MiddlewareSpecIpWhiteListIpStrategyOutput) ToMiddlewareSpecIpWhiteListIpStrategyPtrOutput() MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return o.ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecIpWhiteListIpStrategyOutput) ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecIpWhiteListIpStrategy) *MiddlewareSpecIpWhiteListIpStrategy { + return &v + }).(MiddlewareSpecIpWhiteListIpStrategyPtrOutput) +} + +func (o MiddlewareSpecIpWhiteListIpStrategyOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecIpWhiteListIpStrategy] { + return pulumix.Output[MiddlewareSpecIpWhiteListIpStrategy]{ + OutputState: o.OutputState, + } +} + +// Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). +func (o MiddlewareSpecIpWhiteListIpStrategyOutput) Depth() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecIpWhiteListIpStrategy) *int { return v.Depth }).(pulumi.IntPtrOutput) +} + +// ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. +func (o MiddlewareSpecIpWhiteListIpStrategyOutput) ExcludedIPs() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecIpWhiteListIpStrategy) []string { return v.ExcludedIPs }).(pulumi.StringArrayOutput) +} + +type MiddlewareSpecIpWhiteListIpStrategyPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecIpWhiteListIpStrategyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecIpWhiteListIpStrategy)(nil)).Elem() +} + +func (o MiddlewareSpecIpWhiteListIpStrategyPtrOutput) ToMiddlewareSpecIpWhiteListIpStrategyPtrOutput() MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return o +} + +func (o MiddlewareSpecIpWhiteListIpStrategyPtrOutput) ToMiddlewareSpecIpWhiteListIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecIpWhiteListIpStrategyPtrOutput { + return o +} + +func (o MiddlewareSpecIpWhiteListIpStrategyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecIpWhiteListIpStrategy] { + return pulumix.Output[*MiddlewareSpecIpWhiteListIpStrategy]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecIpWhiteListIpStrategyPtrOutput) Elem() MiddlewareSpecIpWhiteListIpStrategyOutput { + return o.ApplyT(func(v *MiddlewareSpecIpWhiteListIpStrategy) MiddlewareSpecIpWhiteListIpStrategy { + if v != nil { + return *v + } + var ret MiddlewareSpecIpWhiteListIpStrategy + return ret + }).(MiddlewareSpecIpWhiteListIpStrategyOutput) +} + +// Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). +func (o MiddlewareSpecIpWhiteListIpStrategyPtrOutput) Depth() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecIpWhiteListIpStrategy) *int { + if v == nil { + return nil + } + return v.Depth + }).(pulumi.IntPtrOutput) +} + +// ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. +func (o MiddlewareSpecIpWhiteListIpStrategyPtrOutput) ExcludedIPs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecIpWhiteListIpStrategy) []string { + if v == nil { + return nil + } + return v.ExcludedIPs + }).(pulumi.StringArrayOutput) +} + +// PassTLSClientCert holds the pass TLS client cert middleware configuration. This middleware adds the selected data from the passed client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/ +type MiddlewareSpecPassTLSClientCert struct { + // Info selects the specific client certificate details you want to add to the X-Forwarded-Tls-Client-Cert-Info header. + Info *MiddlewareSpecPassTLSClientCertInfo `pulumi:"info"` + // PEM sets the X-Forwarded-Tls-Client-Cert header with the certificate. + Pem *bool `pulumi:"pem"` +} + +// MiddlewareSpecPassTLSClientCertInput is an input type that accepts MiddlewareSpecPassTLSClientCertArgs and MiddlewareSpecPassTLSClientCertOutput values. +// You can construct a concrete instance of `MiddlewareSpecPassTLSClientCertInput` via: +// +// MiddlewareSpecPassTLSClientCertArgs{...} +type MiddlewareSpecPassTLSClientCertInput interface { + pulumi.Input + + ToMiddlewareSpecPassTLSClientCertOutput() MiddlewareSpecPassTLSClientCertOutput + ToMiddlewareSpecPassTLSClientCertOutputWithContext(context.Context) MiddlewareSpecPassTLSClientCertOutput +} + +// PassTLSClientCert holds the pass TLS client cert middleware configuration. This middleware adds the selected data from the passed client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/ +type MiddlewareSpecPassTLSClientCertArgs struct { + // Info selects the specific client certificate details you want to add to the X-Forwarded-Tls-Client-Cert-Info header. + Info MiddlewareSpecPassTLSClientCertInfoPtrInput `pulumi:"info"` + // PEM sets the X-Forwarded-Tls-Client-Cert header with the certificate. + Pem pulumi.BoolPtrInput `pulumi:"pem"` +} + +func (MiddlewareSpecPassTLSClientCertArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecPassTLSClientCert)(nil)).Elem() +} + +func (i MiddlewareSpecPassTLSClientCertArgs) ToMiddlewareSpecPassTLSClientCertOutput() MiddlewareSpecPassTLSClientCertOutput { + return i.ToMiddlewareSpecPassTLSClientCertOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecPassTLSClientCertArgs) ToMiddlewareSpecPassTLSClientCertOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertOutput) +} + +func (i MiddlewareSpecPassTLSClientCertArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecPassTLSClientCert] { + return pulumix.Output[MiddlewareSpecPassTLSClientCert]{ + OutputState: i.ToMiddlewareSpecPassTLSClientCertOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecPassTLSClientCertArgs) ToMiddlewareSpecPassTLSClientCertPtrOutput() MiddlewareSpecPassTLSClientCertPtrOutput { + return i.ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecPassTLSClientCertArgs) ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertOutput).ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(ctx) +} + +// MiddlewareSpecPassTLSClientCertPtrInput is an input type that accepts MiddlewareSpecPassTLSClientCertArgs, MiddlewareSpecPassTLSClientCertPtr and MiddlewareSpecPassTLSClientCertPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecPassTLSClientCertPtrInput` via: +// +// MiddlewareSpecPassTLSClientCertArgs{...} +// +// or: +// +// nil +type MiddlewareSpecPassTLSClientCertPtrInput interface { + pulumi.Input + + ToMiddlewareSpecPassTLSClientCertPtrOutput() MiddlewareSpecPassTLSClientCertPtrOutput + ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(context.Context) MiddlewareSpecPassTLSClientCertPtrOutput +} + +type middlewareSpecPassTLSClientCertPtrType MiddlewareSpecPassTLSClientCertArgs + +func MiddlewareSpecPassTLSClientCertPtr(v *MiddlewareSpecPassTLSClientCertArgs) MiddlewareSpecPassTLSClientCertPtrInput { + return (*middlewareSpecPassTLSClientCertPtrType)(v) +} + +func (*middlewareSpecPassTLSClientCertPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecPassTLSClientCert)(nil)).Elem() +} + +func (i *middlewareSpecPassTLSClientCertPtrType) ToMiddlewareSpecPassTLSClientCertPtrOutput() MiddlewareSpecPassTLSClientCertPtrOutput { + return i.ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecPassTLSClientCertPtrType) ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertPtrOutput) +} + +func (i *middlewareSpecPassTLSClientCertPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecPassTLSClientCert] { + return pulumix.Output[*MiddlewareSpecPassTLSClientCert]{ + OutputState: i.ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(ctx).OutputState, + } +} + +// PassTLSClientCert holds the pass TLS client cert middleware configuration. This middleware adds the selected data from the passed client TLS certificate to a header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/passtlsclientcert/ +type MiddlewareSpecPassTLSClientCertOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecPassTLSClientCertOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecPassTLSClientCert)(nil)).Elem() +} + +func (o MiddlewareSpecPassTLSClientCertOutput) ToMiddlewareSpecPassTLSClientCertOutput() MiddlewareSpecPassTLSClientCertOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertOutput) ToMiddlewareSpecPassTLSClientCertOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertOutput) ToMiddlewareSpecPassTLSClientCertPtrOutput() MiddlewareSpecPassTLSClientCertPtrOutput { + return o.ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecPassTLSClientCertOutput) ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecPassTLSClientCert) *MiddlewareSpecPassTLSClientCert { + return &v + }).(MiddlewareSpecPassTLSClientCertPtrOutput) +} + +func (o MiddlewareSpecPassTLSClientCertOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecPassTLSClientCert] { + return pulumix.Output[MiddlewareSpecPassTLSClientCert]{ + OutputState: o.OutputState, + } +} + +// Info selects the specific client certificate details you want to add to the X-Forwarded-Tls-Client-Cert-Info header. +func (o MiddlewareSpecPassTLSClientCertOutput) Info() MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCert) *MiddlewareSpecPassTLSClientCertInfo { return v.Info }).(MiddlewareSpecPassTLSClientCertInfoPtrOutput) +} + +// PEM sets the X-Forwarded-Tls-Client-Cert header with the certificate. +func (o MiddlewareSpecPassTLSClientCertOutput) Pem() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCert) *bool { return v.Pem }).(pulumi.BoolPtrOutput) +} + +type MiddlewareSpecPassTLSClientCertPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecPassTLSClientCertPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecPassTLSClientCert)(nil)).Elem() +} + +func (o MiddlewareSpecPassTLSClientCertPtrOutput) ToMiddlewareSpecPassTLSClientCertPtrOutput() MiddlewareSpecPassTLSClientCertPtrOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertPtrOutput) ToMiddlewareSpecPassTLSClientCertPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertPtrOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecPassTLSClientCert] { + return pulumix.Output[*MiddlewareSpecPassTLSClientCert]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecPassTLSClientCertPtrOutput) Elem() MiddlewareSpecPassTLSClientCertOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCert) MiddlewareSpecPassTLSClientCert { + if v != nil { + return *v + } + var ret MiddlewareSpecPassTLSClientCert + return ret + }).(MiddlewareSpecPassTLSClientCertOutput) +} + +// Info selects the specific client certificate details you want to add to the X-Forwarded-Tls-Client-Cert-Info header. +func (o MiddlewareSpecPassTLSClientCertPtrOutput) Info() MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCert) *MiddlewareSpecPassTLSClientCertInfo { + if v == nil { + return nil + } + return v.Info + }).(MiddlewareSpecPassTLSClientCertInfoPtrOutput) +} + +// PEM sets the X-Forwarded-Tls-Client-Cert header with the certificate. +func (o MiddlewareSpecPassTLSClientCertPtrOutput) Pem() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCert) *bool { + if v == nil { + return nil + } + return v.Pem + }).(pulumi.BoolPtrOutput) +} + +// Info selects the specific client certificate details you want to add to the X-Forwarded-Tls-Client-Cert-Info header. +type MiddlewareSpecPassTLSClientCertInfo struct { + // Issuer defines the client certificate issuer details to add to the X-Forwarded-Tls-Client-Cert-Info header. + Issuer *MiddlewareSpecPassTLSClientCertInfoIssuer `pulumi:"issuer"` + // NotAfter defines whether to add the Not After information from the Validity part. + NotAfter *bool `pulumi:"notAfter"` + // NotBefore defines whether to add the Not Before information from the Validity part. + NotBefore *bool `pulumi:"notBefore"` + // Sans defines whether to add the Subject Alternative Name information from the Subject Alternative Name part. + Sans *bool `pulumi:"sans"` + // SerialNumber defines whether to add the client serialNumber information. + SerialNumber *bool `pulumi:"serialNumber"` + // Subject defines the client certificate subject details to add to the X-Forwarded-Tls-Client-Cert-Info header. + Subject *MiddlewareSpecPassTLSClientCertInfoSubject `pulumi:"subject"` +} + +// MiddlewareSpecPassTLSClientCertInfoInput is an input type that accepts MiddlewareSpecPassTLSClientCertInfoArgs and MiddlewareSpecPassTLSClientCertInfoOutput values. +// You can construct a concrete instance of `MiddlewareSpecPassTLSClientCertInfoInput` via: +// +// MiddlewareSpecPassTLSClientCertInfoArgs{...} +type MiddlewareSpecPassTLSClientCertInfoInput interface { + pulumi.Input + + ToMiddlewareSpecPassTLSClientCertInfoOutput() MiddlewareSpecPassTLSClientCertInfoOutput + ToMiddlewareSpecPassTLSClientCertInfoOutputWithContext(context.Context) MiddlewareSpecPassTLSClientCertInfoOutput +} + +// Info selects the specific client certificate details you want to add to the X-Forwarded-Tls-Client-Cert-Info header. +type MiddlewareSpecPassTLSClientCertInfoArgs struct { + // Issuer defines the client certificate issuer details to add to the X-Forwarded-Tls-Client-Cert-Info header. + Issuer MiddlewareSpecPassTLSClientCertInfoIssuerPtrInput `pulumi:"issuer"` + // NotAfter defines whether to add the Not After information from the Validity part. + NotAfter pulumi.BoolPtrInput `pulumi:"notAfter"` + // NotBefore defines whether to add the Not Before information from the Validity part. + NotBefore pulumi.BoolPtrInput `pulumi:"notBefore"` + // Sans defines whether to add the Subject Alternative Name information from the Subject Alternative Name part. + Sans pulumi.BoolPtrInput `pulumi:"sans"` + // SerialNumber defines whether to add the client serialNumber information. + SerialNumber pulumi.BoolPtrInput `pulumi:"serialNumber"` + // Subject defines the client certificate subject details to add to the X-Forwarded-Tls-Client-Cert-Info header. + Subject MiddlewareSpecPassTLSClientCertInfoSubjectPtrInput `pulumi:"subject"` +} + +func (MiddlewareSpecPassTLSClientCertInfoArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfo)(nil)).Elem() +} + +func (i MiddlewareSpecPassTLSClientCertInfoArgs) ToMiddlewareSpecPassTLSClientCertInfoOutput() MiddlewareSpecPassTLSClientCertInfoOutput { + return i.ToMiddlewareSpecPassTLSClientCertInfoOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecPassTLSClientCertInfoArgs) ToMiddlewareSpecPassTLSClientCertInfoOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertInfoOutput) +} + +func (i MiddlewareSpecPassTLSClientCertInfoArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecPassTLSClientCertInfo] { + return pulumix.Output[MiddlewareSpecPassTLSClientCertInfo]{ + OutputState: i.ToMiddlewareSpecPassTLSClientCertInfoOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecPassTLSClientCertInfoArgs) ToMiddlewareSpecPassTLSClientCertInfoPtrOutput() MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return i.ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecPassTLSClientCertInfoArgs) ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertInfoOutput).ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(ctx) +} + +// MiddlewareSpecPassTLSClientCertInfoPtrInput is an input type that accepts MiddlewareSpecPassTLSClientCertInfoArgs, MiddlewareSpecPassTLSClientCertInfoPtr and MiddlewareSpecPassTLSClientCertInfoPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecPassTLSClientCertInfoPtrInput` via: +// +// MiddlewareSpecPassTLSClientCertInfoArgs{...} +// +// or: +// +// nil +type MiddlewareSpecPassTLSClientCertInfoPtrInput interface { + pulumi.Input + + ToMiddlewareSpecPassTLSClientCertInfoPtrOutput() MiddlewareSpecPassTLSClientCertInfoPtrOutput + ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(context.Context) MiddlewareSpecPassTLSClientCertInfoPtrOutput +} + +type middlewareSpecPassTLSClientCertInfoPtrType MiddlewareSpecPassTLSClientCertInfoArgs + +func MiddlewareSpecPassTLSClientCertInfoPtr(v *MiddlewareSpecPassTLSClientCertInfoArgs) MiddlewareSpecPassTLSClientCertInfoPtrInput { + return (*middlewareSpecPassTLSClientCertInfoPtrType)(v) +} + +func (*middlewareSpecPassTLSClientCertInfoPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecPassTLSClientCertInfo)(nil)).Elem() +} + +func (i *middlewareSpecPassTLSClientCertInfoPtrType) ToMiddlewareSpecPassTLSClientCertInfoPtrOutput() MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return i.ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecPassTLSClientCertInfoPtrType) ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertInfoPtrOutput) +} + +func (i *middlewareSpecPassTLSClientCertInfoPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecPassTLSClientCertInfo] { + return pulumix.Output[*MiddlewareSpecPassTLSClientCertInfo]{ + OutputState: i.ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(ctx).OutputState, + } +} + +// Info selects the specific client certificate details you want to add to the X-Forwarded-Tls-Client-Cert-Info header. +type MiddlewareSpecPassTLSClientCertInfoOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecPassTLSClientCertInfoOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfo)(nil)).Elem() +} + +func (o MiddlewareSpecPassTLSClientCertInfoOutput) ToMiddlewareSpecPassTLSClientCertInfoOutput() MiddlewareSpecPassTLSClientCertInfoOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoOutput) ToMiddlewareSpecPassTLSClientCertInfoOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoOutput) ToMiddlewareSpecPassTLSClientCertInfoPtrOutput() MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return o.ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecPassTLSClientCertInfoOutput) ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecPassTLSClientCertInfo) *MiddlewareSpecPassTLSClientCertInfo { + return &v + }).(MiddlewareSpecPassTLSClientCertInfoPtrOutput) +} + +func (o MiddlewareSpecPassTLSClientCertInfoOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecPassTLSClientCertInfo] { + return pulumix.Output[MiddlewareSpecPassTLSClientCertInfo]{ + OutputState: o.OutputState, + } +} + +// Issuer defines the client certificate issuer details to add to the X-Forwarded-Tls-Client-Cert-Info header. +func (o MiddlewareSpecPassTLSClientCertInfoOutput) Issuer() MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfo) *MiddlewareSpecPassTLSClientCertInfoIssuer { + return v.Issuer + }).(MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) +} + +// NotAfter defines whether to add the Not After information from the Validity part. +func (o MiddlewareSpecPassTLSClientCertInfoOutput) NotAfter() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfo) *bool { return v.NotAfter }).(pulumi.BoolPtrOutput) +} + +// NotBefore defines whether to add the Not Before information from the Validity part. +func (o MiddlewareSpecPassTLSClientCertInfoOutput) NotBefore() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfo) *bool { return v.NotBefore }).(pulumi.BoolPtrOutput) +} + +// Sans defines whether to add the Subject Alternative Name information from the Subject Alternative Name part. +func (o MiddlewareSpecPassTLSClientCertInfoOutput) Sans() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfo) *bool { return v.Sans }).(pulumi.BoolPtrOutput) +} + +// SerialNumber defines whether to add the client serialNumber information. +func (o MiddlewareSpecPassTLSClientCertInfoOutput) SerialNumber() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfo) *bool { return v.SerialNumber }).(pulumi.BoolPtrOutput) +} + +// Subject defines the client certificate subject details to add to the X-Forwarded-Tls-Client-Cert-Info header. +func (o MiddlewareSpecPassTLSClientCertInfoOutput) Subject() MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfo) *MiddlewareSpecPassTLSClientCertInfoSubject { + return v.Subject + }).(MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) +} + +type MiddlewareSpecPassTLSClientCertInfoPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecPassTLSClientCertInfoPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecPassTLSClientCertInfo)(nil)).Elem() +} + +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) ToMiddlewareSpecPassTLSClientCertInfoPtrOutput() MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) ToMiddlewareSpecPassTLSClientCertInfoPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoPtrOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecPassTLSClientCertInfo] { + return pulumix.Output[*MiddlewareSpecPassTLSClientCertInfo]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) Elem() MiddlewareSpecPassTLSClientCertInfoOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfo) MiddlewareSpecPassTLSClientCertInfo { + if v != nil { + return *v + } + var ret MiddlewareSpecPassTLSClientCertInfo + return ret + }).(MiddlewareSpecPassTLSClientCertInfoOutput) +} + +// Issuer defines the client certificate issuer details to add to the X-Forwarded-Tls-Client-Cert-Info header. +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) Issuer() MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfo) *MiddlewareSpecPassTLSClientCertInfoIssuer { + if v == nil { + return nil + } + return v.Issuer + }).(MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) +} + +// NotAfter defines whether to add the Not After information from the Validity part. +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) NotAfter() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfo) *bool { + if v == nil { + return nil + } + return v.NotAfter + }).(pulumi.BoolPtrOutput) +} + +// NotBefore defines whether to add the Not Before information from the Validity part. +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) NotBefore() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfo) *bool { + if v == nil { + return nil + } + return v.NotBefore + }).(pulumi.BoolPtrOutput) +} + +// Sans defines whether to add the Subject Alternative Name information from the Subject Alternative Name part. +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) Sans() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfo) *bool { + if v == nil { + return nil + } + return v.Sans + }).(pulumi.BoolPtrOutput) +} + +// SerialNumber defines whether to add the client serialNumber information. +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) SerialNumber() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfo) *bool { + if v == nil { + return nil + } + return v.SerialNumber + }).(pulumi.BoolPtrOutput) +} + +// Subject defines the client certificate subject details to add to the X-Forwarded-Tls-Client-Cert-Info header. +func (o MiddlewareSpecPassTLSClientCertInfoPtrOutput) Subject() MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfo) *MiddlewareSpecPassTLSClientCertInfoSubject { + if v == nil { + return nil + } + return v.Subject + }).(MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) +} + +// Issuer defines the client certificate issuer details to add to the X-Forwarded-Tls-Client-Cert-Info header. +type MiddlewareSpecPassTLSClientCertInfoIssuer struct { + // CommonName defines whether to add the organizationalUnit information into the issuer. + CommonName *bool `pulumi:"commonName"` + // Country defines whether to add the country information into the issuer. + Country *bool `pulumi:"country"` + // DomainComponent defines whether to add the domainComponent information into the issuer. + DomainComponent *bool `pulumi:"domainComponent"` + // Locality defines whether to add the locality information into the issuer. + Locality *bool `pulumi:"locality"` + // Organization defines whether to add the organization information into the issuer. + Organization *bool `pulumi:"organization"` + // Province defines whether to add the province information into the issuer. + Province *bool `pulumi:"province"` + // SerialNumber defines whether to add the serialNumber information into the issuer. + SerialNumber *bool `pulumi:"serialNumber"` +} + +// MiddlewareSpecPassTLSClientCertInfoIssuerInput is an input type that accepts MiddlewareSpecPassTLSClientCertInfoIssuerArgs and MiddlewareSpecPassTLSClientCertInfoIssuerOutput values. +// You can construct a concrete instance of `MiddlewareSpecPassTLSClientCertInfoIssuerInput` via: +// +// MiddlewareSpecPassTLSClientCertInfoIssuerArgs{...} +type MiddlewareSpecPassTLSClientCertInfoIssuerInput interface { + pulumi.Input + + ToMiddlewareSpecPassTLSClientCertInfoIssuerOutput() MiddlewareSpecPassTLSClientCertInfoIssuerOutput + ToMiddlewareSpecPassTLSClientCertInfoIssuerOutputWithContext(context.Context) MiddlewareSpecPassTLSClientCertInfoIssuerOutput +} + +// Issuer defines the client certificate issuer details to add to the X-Forwarded-Tls-Client-Cert-Info header. +type MiddlewareSpecPassTLSClientCertInfoIssuerArgs struct { + // CommonName defines whether to add the organizationalUnit information into the issuer. + CommonName pulumi.BoolPtrInput `pulumi:"commonName"` + // Country defines whether to add the country information into the issuer. + Country pulumi.BoolPtrInput `pulumi:"country"` + // DomainComponent defines whether to add the domainComponent information into the issuer. + DomainComponent pulumi.BoolPtrInput `pulumi:"domainComponent"` + // Locality defines whether to add the locality information into the issuer. + Locality pulumi.BoolPtrInput `pulumi:"locality"` + // Organization defines whether to add the organization information into the issuer. + Organization pulumi.BoolPtrInput `pulumi:"organization"` + // Province defines whether to add the province information into the issuer. + Province pulumi.BoolPtrInput `pulumi:"province"` + // SerialNumber defines whether to add the serialNumber information into the issuer. + SerialNumber pulumi.BoolPtrInput `pulumi:"serialNumber"` +} + +func (MiddlewareSpecPassTLSClientCertInfoIssuerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoIssuer)(nil)).Elem() +} + +func (i MiddlewareSpecPassTLSClientCertInfoIssuerArgs) ToMiddlewareSpecPassTLSClientCertInfoIssuerOutput() MiddlewareSpecPassTLSClientCertInfoIssuerOutput { + return i.ToMiddlewareSpecPassTLSClientCertInfoIssuerOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecPassTLSClientCertInfoIssuerArgs) ToMiddlewareSpecPassTLSClientCertInfoIssuerOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoIssuerOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertInfoIssuerOutput) +} + +func (i MiddlewareSpecPassTLSClientCertInfoIssuerArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecPassTLSClientCertInfoIssuer] { + return pulumix.Output[MiddlewareSpecPassTLSClientCertInfoIssuer]{ + OutputState: i.ToMiddlewareSpecPassTLSClientCertInfoIssuerOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecPassTLSClientCertInfoIssuerArgs) ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput() MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return i.ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecPassTLSClientCertInfoIssuerArgs) ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertInfoIssuerOutput).ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(ctx) +} + +// MiddlewareSpecPassTLSClientCertInfoIssuerPtrInput is an input type that accepts MiddlewareSpecPassTLSClientCertInfoIssuerArgs, MiddlewareSpecPassTLSClientCertInfoIssuerPtr and MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecPassTLSClientCertInfoIssuerPtrInput` via: +// +// MiddlewareSpecPassTLSClientCertInfoIssuerArgs{...} +// +// or: +// +// nil +type MiddlewareSpecPassTLSClientCertInfoIssuerPtrInput interface { + pulumi.Input + + ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput() MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput + ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(context.Context) MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput +} + +type middlewareSpecPassTLSClientCertInfoIssuerPtrType MiddlewareSpecPassTLSClientCertInfoIssuerArgs + +func MiddlewareSpecPassTLSClientCertInfoIssuerPtr(v *MiddlewareSpecPassTLSClientCertInfoIssuerArgs) MiddlewareSpecPassTLSClientCertInfoIssuerPtrInput { + return (*middlewareSpecPassTLSClientCertInfoIssuerPtrType)(v) +} + +func (*middlewareSpecPassTLSClientCertInfoIssuerPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecPassTLSClientCertInfoIssuer)(nil)).Elem() +} + +func (i *middlewareSpecPassTLSClientCertInfoIssuerPtrType) ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput() MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return i.ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecPassTLSClientCertInfoIssuerPtrType) ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) +} + +func (i *middlewareSpecPassTLSClientCertInfoIssuerPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecPassTLSClientCertInfoIssuer] { + return pulumix.Output[*MiddlewareSpecPassTLSClientCertInfoIssuer]{ + OutputState: i.ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(ctx).OutputState, + } +} + +// Issuer defines the client certificate issuer details to add to the X-Forwarded-Tls-Client-Cert-Info header. +type MiddlewareSpecPassTLSClientCertInfoIssuerOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecPassTLSClientCertInfoIssuerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoIssuer)(nil)).Elem() +} + +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) ToMiddlewareSpecPassTLSClientCertInfoIssuerOutput() MiddlewareSpecPassTLSClientCertInfoIssuerOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) ToMiddlewareSpecPassTLSClientCertInfoIssuerOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoIssuerOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput() MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return o.ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecPassTLSClientCertInfoIssuer) *MiddlewareSpecPassTLSClientCertInfoIssuer { + return &v + }).(MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) +} + +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecPassTLSClientCertInfoIssuer] { + return pulumix.Output[MiddlewareSpecPassTLSClientCertInfoIssuer]{ + OutputState: o.OutputState, + } +} + +// CommonName defines whether to add the organizationalUnit information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) CommonName() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { return v.CommonName }).(pulumi.BoolPtrOutput) +} + +// Country defines whether to add the country information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) Country() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { return v.Country }).(pulumi.BoolPtrOutput) +} + +// DomainComponent defines whether to add the domainComponent information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) DomainComponent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { return v.DomainComponent }).(pulumi.BoolPtrOutput) +} + +// Locality defines whether to add the locality information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) Locality() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { return v.Locality }).(pulumi.BoolPtrOutput) +} + +// Organization defines whether to add the organization information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) Organization() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { return v.Organization }).(pulumi.BoolPtrOutput) +} + +// Province defines whether to add the province information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) Province() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { return v.Province }).(pulumi.BoolPtrOutput) +} + +// SerialNumber defines whether to add the serialNumber information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerOutput) SerialNumber() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { return v.SerialNumber }).(pulumi.BoolPtrOutput) +} + +type MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecPassTLSClientCertInfoIssuer)(nil)).Elem() +} + +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput() MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) ToMiddlewareSpecPassTLSClientCertInfoIssuerPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecPassTLSClientCertInfoIssuer] { + return pulumix.Output[*MiddlewareSpecPassTLSClientCertInfoIssuer]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) Elem() MiddlewareSpecPassTLSClientCertInfoIssuerOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoIssuer) MiddlewareSpecPassTLSClientCertInfoIssuer { + if v != nil { + return *v + } + var ret MiddlewareSpecPassTLSClientCertInfoIssuer + return ret + }).(MiddlewareSpecPassTLSClientCertInfoIssuerOutput) +} + +// CommonName defines whether to add the organizationalUnit information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) CommonName() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { + if v == nil { + return nil + } + return v.CommonName + }).(pulumi.BoolPtrOutput) +} + +// Country defines whether to add the country information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) Country() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { + if v == nil { + return nil + } + return v.Country + }).(pulumi.BoolPtrOutput) +} + +// DomainComponent defines whether to add the domainComponent information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) DomainComponent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { + if v == nil { + return nil + } + return v.DomainComponent + }).(pulumi.BoolPtrOutput) +} + +// Locality defines whether to add the locality information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) Locality() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { + if v == nil { + return nil + } + return v.Locality + }).(pulumi.BoolPtrOutput) +} + +// Organization defines whether to add the organization information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) Organization() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { + if v == nil { + return nil + } + return v.Organization + }).(pulumi.BoolPtrOutput) +} + +// Province defines whether to add the province information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) Province() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { + if v == nil { + return nil + } + return v.Province + }).(pulumi.BoolPtrOutput) +} + +// SerialNumber defines whether to add the serialNumber information into the issuer. +func (o MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput) SerialNumber() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoIssuer) *bool { + if v == nil { + return nil + } + return v.SerialNumber + }).(pulumi.BoolPtrOutput) +} + +// Subject defines the client certificate subject details to add to the X-Forwarded-Tls-Client-Cert-Info header. +type MiddlewareSpecPassTLSClientCertInfoSubject struct { + // CommonName defines whether to add the organizationalUnit information into the subject. + CommonName *bool `pulumi:"commonName"` + // Country defines whether to add the country information into the subject. + Country *bool `pulumi:"country"` + // DomainComponent defines whether to add the domainComponent information into the subject. + DomainComponent *bool `pulumi:"domainComponent"` + // Locality defines whether to add the locality information into the subject. + Locality *bool `pulumi:"locality"` + // Organization defines whether to add the organization information into the subject. + Organization *bool `pulumi:"organization"` + // OrganizationalUnit defines whether to add the organizationalUnit information into the subject. + OrganizationalUnit *bool `pulumi:"organizationalUnit"` + // Province defines whether to add the province information into the subject. + Province *bool `pulumi:"province"` + // SerialNumber defines whether to add the serialNumber information into the subject. + SerialNumber *bool `pulumi:"serialNumber"` +} + +// MiddlewareSpecPassTLSClientCertInfoSubjectInput is an input type that accepts MiddlewareSpecPassTLSClientCertInfoSubjectArgs and MiddlewareSpecPassTLSClientCertInfoSubjectOutput values. +// You can construct a concrete instance of `MiddlewareSpecPassTLSClientCertInfoSubjectInput` via: +// +// MiddlewareSpecPassTLSClientCertInfoSubjectArgs{...} +type MiddlewareSpecPassTLSClientCertInfoSubjectInput interface { + pulumi.Input + + ToMiddlewareSpecPassTLSClientCertInfoSubjectOutput() MiddlewareSpecPassTLSClientCertInfoSubjectOutput + ToMiddlewareSpecPassTLSClientCertInfoSubjectOutputWithContext(context.Context) MiddlewareSpecPassTLSClientCertInfoSubjectOutput +} + +// Subject defines the client certificate subject details to add to the X-Forwarded-Tls-Client-Cert-Info header. +type MiddlewareSpecPassTLSClientCertInfoSubjectArgs struct { + // CommonName defines whether to add the organizationalUnit information into the subject. + CommonName pulumi.BoolPtrInput `pulumi:"commonName"` + // Country defines whether to add the country information into the subject. + Country pulumi.BoolPtrInput `pulumi:"country"` + // DomainComponent defines whether to add the domainComponent information into the subject. + DomainComponent pulumi.BoolPtrInput `pulumi:"domainComponent"` + // Locality defines whether to add the locality information into the subject. + Locality pulumi.BoolPtrInput `pulumi:"locality"` + // Organization defines whether to add the organization information into the subject. + Organization pulumi.BoolPtrInput `pulumi:"organization"` + // OrganizationalUnit defines whether to add the organizationalUnit information into the subject. + OrganizationalUnit pulumi.BoolPtrInput `pulumi:"organizationalUnit"` + // Province defines whether to add the province information into the subject. + Province pulumi.BoolPtrInput `pulumi:"province"` + // SerialNumber defines whether to add the serialNumber information into the subject. + SerialNumber pulumi.BoolPtrInput `pulumi:"serialNumber"` +} + +func (MiddlewareSpecPassTLSClientCertInfoSubjectArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoSubject)(nil)).Elem() +} + +func (i MiddlewareSpecPassTLSClientCertInfoSubjectArgs) ToMiddlewareSpecPassTLSClientCertInfoSubjectOutput() MiddlewareSpecPassTLSClientCertInfoSubjectOutput { + return i.ToMiddlewareSpecPassTLSClientCertInfoSubjectOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecPassTLSClientCertInfoSubjectArgs) ToMiddlewareSpecPassTLSClientCertInfoSubjectOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoSubjectOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertInfoSubjectOutput) +} + +func (i MiddlewareSpecPassTLSClientCertInfoSubjectArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecPassTLSClientCertInfoSubject] { + return pulumix.Output[MiddlewareSpecPassTLSClientCertInfoSubject]{ + OutputState: i.ToMiddlewareSpecPassTLSClientCertInfoSubjectOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecPassTLSClientCertInfoSubjectArgs) ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput() MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return i.ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecPassTLSClientCertInfoSubjectArgs) ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertInfoSubjectOutput).ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(ctx) +} + +// MiddlewareSpecPassTLSClientCertInfoSubjectPtrInput is an input type that accepts MiddlewareSpecPassTLSClientCertInfoSubjectArgs, MiddlewareSpecPassTLSClientCertInfoSubjectPtr and MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecPassTLSClientCertInfoSubjectPtrInput` via: +// +// MiddlewareSpecPassTLSClientCertInfoSubjectArgs{...} +// +// or: +// +// nil +type MiddlewareSpecPassTLSClientCertInfoSubjectPtrInput interface { + pulumi.Input + + ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput() MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput + ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(context.Context) MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput +} + +type middlewareSpecPassTLSClientCertInfoSubjectPtrType MiddlewareSpecPassTLSClientCertInfoSubjectArgs + +func MiddlewareSpecPassTLSClientCertInfoSubjectPtr(v *MiddlewareSpecPassTLSClientCertInfoSubjectArgs) MiddlewareSpecPassTLSClientCertInfoSubjectPtrInput { + return (*middlewareSpecPassTLSClientCertInfoSubjectPtrType)(v) +} + +func (*middlewareSpecPassTLSClientCertInfoSubjectPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecPassTLSClientCertInfoSubject)(nil)).Elem() +} + +func (i *middlewareSpecPassTLSClientCertInfoSubjectPtrType) ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput() MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return i.ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecPassTLSClientCertInfoSubjectPtrType) ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) +} + +func (i *middlewareSpecPassTLSClientCertInfoSubjectPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecPassTLSClientCertInfoSubject] { + return pulumix.Output[*MiddlewareSpecPassTLSClientCertInfoSubject]{ + OutputState: i.ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(ctx).OutputState, + } +} + +// Subject defines the client certificate subject details to add to the X-Forwarded-Tls-Client-Cert-Info header. +type MiddlewareSpecPassTLSClientCertInfoSubjectOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecPassTLSClientCertInfoSubjectOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoSubject)(nil)).Elem() +} + +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) ToMiddlewareSpecPassTLSClientCertInfoSubjectOutput() MiddlewareSpecPassTLSClientCertInfoSubjectOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) ToMiddlewareSpecPassTLSClientCertInfoSubjectOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoSubjectOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput() MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return o.ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecPassTLSClientCertInfoSubject) *MiddlewareSpecPassTLSClientCertInfoSubject { + return &v + }).(MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) +} + +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecPassTLSClientCertInfoSubject] { + return pulumix.Output[MiddlewareSpecPassTLSClientCertInfoSubject]{ + OutputState: o.OutputState, + } +} + +// CommonName defines whether to add the organizationalUnit information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) CommonName() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoSubject) *bool { return v.CommonName }).(pulumi.BoolPtrOutput) +} + +// Country defines whether to add the country information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) Country() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoSubject) *bool { return v.Country }).(pulumi.BoolPtrOutput) +} + +// DomainComponent defines whether to add the domainComponent information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) DomainComponent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoSubject) *bool { return v.DomainComponent }).(pulumi.BoolPtrOutput) +} + +// Locality defines whether to add the locality information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) Locality() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoSubject) *bool { return v.Locality }).(pulumi.BoolPtrOutput) +} + +// Organization defines whether to add the organization information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) Organization() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoSubject) *bool { return v.Organization }).(pulumi.BoolPtrOutput) +} + +// OrganizationalUnit defines whether to add the organizationalUnit information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) OrganizationalUnit() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoSubject) *bool { return v.OrganizationalUnit }).(pulumi.BoolPtrOutput) +} + +// Province defines whether to add the province information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) Province() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoSubject) *bool { return v.Province }).(pulumi.BoolPtrOutput) +} + +// SerialNumber defines whether to add the serialNumber information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectOutput) SerialNumber() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecPassTLSClientCertInfoSubject) *bool { return v.SerialNumber }).(pulumi.BoolPtrOutput) +} + +type MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecPassTLSClientCertInfoSubject)(nil)).Elem() +} + +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput() MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) ToMiddlewareSpecPassTLSClientCertInfoSubjectPtrOutputWithContext(ctx context.Context) MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput { + return o +} + +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecPassTLSClientCertInfoSubject] { + return pulumix.Output[*MiddlewareSpecPassTLSClientCertInfoSubject]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) Elem() MiddlewareSpecPassTLSClientCertInfoSubjectOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoSubject) MiddlewareSpecPassTLSClientCertInfoSubject { + if v != nil { + return *v + } + var ret MiddlewareSpecPassTLSClientCertInfoSubject + return ret + }).(MiddlewareSpecPassTLSClientCertInfoSubjectOutput) +} + +// CommonName defines whether to add the organizationalUnit information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) CommonName() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoSubject) *bool { + if v == nil { + return nil + } + return v.CommonName + }).(pulumi.BoolPtrOutput) +} + +// Country defines whether to add the country information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) Country() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoSubject) *bool { + if v == nil { + return nil + } + return v.Country + }).(pulumi.BoolPtrOutput) +} + +// DomainComponent defines whether to add the domainComponent information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) DomainComponent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoSubject) *bool { + if v == nil { + return nil + } + return v.DomainComponent + }).(pulumi.BoolPtrOutput) +} + +// Locality defines whether to add the locality information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) Locality() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoSubject) *bool { + if v == nil { + return nil + } + return v.Locality + }).(pulumi.BoolPtrOutput) +} + +// Organization defines whether to add the organization information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) Organization() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoSubject) *bool { + if v == nil { + return nil + } + return v.Organization + }).(pulumi.BoolPtrOutput) +} + +// OrganizationalUnit defines whether to add the organizationalUnit information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) OrganizationalUnit() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoSubject) *bool { + if v == nil { + return nil + } + return v.OrganizationalUnit + }).(pulumi.BoolPtrOutput) +} + +// Province defines whether to add the province information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) Province() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoSubject) *bool { + if v == nil { + return nil + } + return v.Province + }).(pulumi.BoolPtrOutput) +} + +// SerialNumber defines whether to add the serialNumber information into the subject. +func (o MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput) SerialNumber() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecPassTLSClientCertInfoSubject) *bool { + if v == nil { + return nil + } + return v.SerialNumber + }).(pulumi.BoolPtrOutput) +} + +// Plugin defines the middleware plugin configuration. More info: https://doc.traefik.io/traefik/plugins/ +type MiddlewareSpecPlugin struct { +} + +// RateLimit holds the rate limit configuration. This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/ +type MiddlewareSpecRateLimit struct { + // Average is the maximum rate, by default in requests/s, allowed for the given source. It defaults to 0, which means no rate limiting. The rate is actually defined by dividing Average by Period. So for a rate below 1req/s, one needs to define a Period larger than a second. + Average *int `pulumi:"average"` + // Burst is the maximum number of requests allowed to arrive in the same arbitrarily small period of time. It defaults to 1. + Burst *int `pulumi:"burst"` + // Period, in combination with Average, defines the actual maximum rate, such as: r = Average / Period. It defaults to a second. + Period interface{} `pulumi:"period"` + // SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the request's remote address field (as an ipStrategy). + SourceCriterion *MiddlewareSpecRateLimitSourceCriterion `pulumi:"sourceCriterion"` +} + +// MiddlewareSpecRateLimitInput is an input type that accepts MiddlewareSpecRateLimitArgs and MiddlewareSpecRateLimitOutput values. +// You can construct a concrete instance of `MiddlewareSpecRateLimitInput` via: +// +// MiddlewareSpecRateLimitArgs{...} +type MiddlewareSpecRateLimitInput interface { + pulumi.Input + + ToMiddlewareSpecRateLimitOutput() MiddlewareSpecRateLimitOutput + ToMiddlewareSpecRateLimitOutputWithContext(context.Context) MiddlewareSpecRateLimitOutput +} + +// RateLimit holds the rate limit configuration. This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/ +type MiddlewareSpecRateLimitArgs struct { + // Average is the maximum rate, by default in requests/s, allowed for the given source. It defaults to 0, which means no rate limiting. The rate is actually defined by dividing Average by Period. So for a rate below 1req/s, one needs to define a Period larger than a second. + Average pulumi.IntPtrInput `pulumi:"average"` + // Burst is the maximum number of requests allowed to arrive in the same arbitrarily small period of time. It defaults to 1. + Burst pulumi.IntPtrInput `pulumi:"burst"` + // Period, in combination with Average, defines the actual maximum rate, such as: r = Average / Period. It defaults to a second. + Period pulumi.Input `pulumi:"period"` + // SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the request's remote address field (as an ipStrategy). + SourceCriterion MiddlewareSpecRateLimitSourceCriterionPtrInput `pulumi:"sourceCriterion"` +} + +func (MiddlewareSpecRateLimitArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRateLimit)(nil)).Elem() +} + +func (i MiddlewareSpecRateLimitArgs) ToMiddlewareSpecRateLimitOutput() MiddlewareSpecRateLimitOutput { + return i.ToMiddlewareSpecRateLimitOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRateLimitArgs) ToMiddlewareSpecRateLimitOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRateLimitOutput) +} + +func (i MiddlewareSpecRateLimitArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRateLimit] { + return pulumix.Output[MiddlewareSpecRateLimit]{ + OutputState: i.ToMiddlewareSpecRateLimitOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecRateLimitArgs) ToMiddlewareSpecRateLimitPtrOutput() MiddlewareSpecRateLimitPtrOutput { + return i.ToMiddlewareSpecRateLimitPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRateLimitArgs) ToMiddlewareSpecRateLimitPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRateLimitOutput).ToMiddlewareSpecRateLimitPtrOutputWithContext(ctx) +} + +// MiddlewareSpecRateLimitPtrInput is an input type that accepts MiddlewareSpecRateLimitArgs, MiddlewareSpecRateLimitPtr and MiddlewareSpecRateLimitPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecRateLimitPtrInput` via: +// +// MiddlewareSpecRateLimitArgs{...} +// +// or: +// +// nil +type MiddlewareSpecRateLimitPtrInput interface { + pulumi.Input + + ToMiddlewareSpecRateLimitPtrOutput() MiddlewareSpecRateLimitPtrOutput + ToMiddlewareSpecRateLimitPtrOutputWithContext(context.Context) MiddlewareSpecRateLimitPtrOutput +} + +type middlewareSpecRateLimitPtrType MiddlewareSpecRateLimitArgs + +func MiddlewareSpecRateLimitPtr(v *MiddlewareSpecRateLimitArgs) MiddlewareSpecRateLimitPtrInput { + return (*middlewareSpecRateLimitPtrType)(v) +} + +func (*middlewareSpecRateLimitPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRateLimit)(nil)).Elem() +} + +func (i *middlewareSpecRateLimitPtrType) ToMiddlewareSpecRateLimitPtrOutput() MiddlewareSpecRateLimitPtrOutput { + return i.ToMiddlewareSpecRateLimitPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecRateLimitPtrType) ToMiddlewareSpecRateLimitPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRateLimitPtrOutput) +} + +func (i *middlewareSpecRateLimitPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRateLimit] { + return pulumix.Output[*MiddlewareSpecRateLimit]{ + OutputState: i.ToMiddlewareSpecRateLimitPtrOutputWithContext(ctx).OutputState, + } +} + +// RateLimit holds the rate limit configuration. This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ratelimit/ +type MiddlewareSpecRateLimitOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRateLimitOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRateLimit)(nil)).Elem() +} + +func (o MiddlewareSpecRateLimitOutput) ToMiddlewareSpecRateLimitOutput() MiddlewareSpecRateLimitOutput { + return o +} + +func (o MiddlewareSpecRateLimitOutput) ToMiddlewareSpecRateLimitOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitOutput { + return o +} + +func (o MiddlewareSpecRateLimitOutput) ToMiddlewareSpecRateLimitPtrOutput() MiddlewareSpecRateLimitPtrOutput { + return o.ToMiddlewareSpecRateLimitPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecRateLimitOutput) ToMiddlewareSpecRateLimitPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecRateLimit) *MiddlewareSpecRateLimit { + return &v + }).(MiddlewareSpecRateLimitPtrOutput) +} + +func (o MiddlewareSpecRateLimitOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRateLimit] { + return pulumix.Output[MiddlewareSpecRateLimit]{ + OutputState: o.OutputState, + } +} + +// Average is the maximum rate, by default in requests/s, allowed for the given source. It defaults to 0, which means no rate limiting. The rate is actually defined by dividing Average by Period. So for a rate below 1req/s, one needs to define a Period larger than a second. +func (o MiddlewareSpecRateLimitOutput) Average() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRateLimit) *int { return v.Average }).(pulumi.IntPtrOutput) +} + +// Burst is the maximum number of requests allowed to arrive in the same arbitrarily small period of time. It defaults to 1. +func (o MiddlewareSpecRateLimitOutput) Burst() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRateLimit) *int { return v.Burst }).(pulumi.IntPtrOutput) +} + +// Period, in combination with Average, defines the actual maximum rate, such as: r = Average / Period. It defaults to a second. +func (o MiddlewareSpecRateLimitOutput) Period() pulumi.AnyOutput { + return o.ApplyT(func(v MiddlewareSpecRateLimit) interface{} { return v.Period }).(pulumi.AnyOutput) +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the request's remote address field (as an ipStrategy). +func (o MiddlewareSpecRateLimitOutput) SourceCriterion() MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRateLimit) *MiddlewareSpecRateLimitSourceCriterion { return v.SourceCriterion }).(MiddlewareSpecRateLimitSourceCriterionPtrOutput) +} + +type MiddlewareSpecRateLimitPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRateLimitPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRateLimit)(nil)).Elem() +} + +func (o MiddlewareSpecRateLimitPtrOutput) ToMiddlewareSpecRateLimitPtrOutput() MiddlewareSpecRateLimitPtrOutput { + return o +} + +func (o MiddlewareSpecRateLimitPtrOutput) ToMiddlewareSpecRateLimitPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitPtrOutput { + return o +} + +func (o MiddlewareSpecRateLimitPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRateLimit] { + return pulumix.Output[*MiddlewareSpecRateLimit]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecRateLimitPtrOutput) Elem() MiddlewareSpecRateLimitOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimit) MiddlewareSpecRateLimit { + if v != nil { + return *v + } + var ret MiddlewareSpecRateLimit + return ret + }).(MiddlewareSpecRateLimitOutput) +} + +// Average is the maximum rate, by default in requests/s, allowed for the given source. It defaults to 0, which means no rate limiting. The rate is actually defined by dividing Average by Period. So for a rate below 1req/s, one needs to define a Period larger than a second. +func (o MiddlewareSpecRateLimitPtrOutput) Average() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimit) *int { + if v == nil { + return nil + } + return v.Average + }).(pulumi.IntPtrOutput) +} + +// Burst is the maximum number of requests allowed to arrive in the same arbitrarily small period of time. It defaults to 1. +func (o MiddlewareSpecRateLimitPtrOutput) Burst() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimit) *int { + if v == nil { + return nil + } + return v.Burst + }).(pulumi.IntPtrOutput) +} + +// Period, in combination with Average, defines the actual maximum rate, such as: r = Average / Period. It defaults to a second. +func (o MiddlewareSpecRateLimitPtrOutput) Period() pulumi.AnyOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimit) interface{} { + if v == nil { + return nil + } + return v.Period + }).(pulumi.AnyOutput) +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the request's remote address field (as an ipStrategy). +func (o MiddlewareSpecRateLimitPtrOutput) SourceCriterion() MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimit) *MiddlewareSpecRateLimitSourceCriterion { + if v == nil { + return nil + } + return v.SourceCriterion + }).(MiddlewareSpecRateLimitSourceCriterionPtrOutput) +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the request's remote address field (as an ipStrategy). +type MiddlewareSpecRateLimitSourceCriterion struct { + // IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy + IpStrategy *MiddlewareSpecRateLimitSourceCriterionIpStrategy `pulumi:"ipStrategy"` + // RequestHeaderName defines the name of the header used to group incoming requests. + RequestHeaderName *string `pulumi:"requestHeaderName"` + // RequestHost defines whether to consider the request Host as the source. + RequestHost *bool `pulumi:"requestHost"` +} + +// MiddlewareSpecRateLimitSourceCriterionInput is an input type that accepts MiddlewareSpecRateLimitSourceCriterionArgs and MiddlewareSpecRateLimitSourceCriterionOutput values. +// You can construct a concrete instance of `MiddlewareSpecRateLimitSourceCriterionInput` via: +// +// MiddlewareSpecRateLimitSourceCriterionArgs{...} +type MiddlewareSpecRateLimitSourceCriterionInput interface { + pulumi.Input + + ToMiddlewareSpecRateLimitSourceCriterionOutput() MiddlewareSpecRateLimitSourceCriterionOutput + ToMiddlewareSpecRateLimitSourceCriterionOutputWithContext(context.Context) MiddlewareSpecRateLimitSourceCriterionOutput +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the request's remote address field (as an ipStrategy). +type MiddlewareSpecRateLimitSourceCriterionArgs struct { + // IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy + IpStrategy MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrInput `pulumi:"ipStrategy"` + // RequestHeaderName defines the name of the header used to group incoming requests. + RequestHeaderName pulumi.StringPtrInput `pulumi:"requestHeaderName"` + // RequestHost defines whether to consider the request Host as the source. + RequestHost pulumi.BoolPtrInput `pulumi:"requestHost"` +} + +func (MiddlewareSpecRateLimitSourceCriterionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRateLimitSourceCriterion)(nil)).Elem() +} + +func (i MiddlewareSpecRateLimitSourceCriterionArgs) ToMiddlewareSpecRateLimitSourceCriterionOutput() MiddlewareSpecRateLimitSourceCriterionOutput { + return i.ToMiddlewareSpecRateLimitSourceCriterionOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRateLimitSourceCriterionArgs) ToMiddlewareSpecRateLimitSourceCriterionOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRateLimitSourceCriterionOutput) +} + +func (i MiddlewareSpecRateLimitSourceCriterionArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRateLimitSourceCriterion] { + return pulumix.Output[MiddlewareSpecRateLimitSourceCriterion]{ + OutputState: i.ToMiddlewareSpecRateLimitSourceCriterionOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecRateLimitSourceCriterionArgs) ToMiddlewareSpecRateLimitSourceCriterionPtrOutput() MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return i.ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRateLimitSourceCriterionArgs) ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRateLimitSourceCriterionOutput).ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(ctx) +} + +// MiddlewareSpecRateLimitSourceCriterionPtrInput is an input type that accepts MiddlewareSpecRateLimitSourceCriterionArgs, MiddlewareSpecRateLimitSourceCriterionPtr and MiddlewareSpecRateLimitSourceCriterionPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecRateLimitSourceCriterionPtrInput` via: +// +// MiddlewareSpecRateLimitSourceCriterionArgs{...} +// +// or: +// +// nil +type MiddlewareSpecRateLimitSourceCriterionPtrInput interface { + pulumi.Input + + ToMiddlewareSpecRateLimitSourceCriterionPtrOutput() MiddlewareSpecRateLimitSourceCriterionPtrOutput + ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(context.Context) MiddlewareSpecRateLimitSourceCriterionPtrOutput +} + +type middlewareSpecRateLimitSourceCriterionPtrType MiddlewareSpecRateLimitSourceCriterionArgs + +func MiddlewareSpecRateLimitSourceCriterionPtr(v *MiddlewareSpecRateLimitSourceCriterionArgs) MiddlewareSpecRateLimitSourceCriterionPtrInput { + return (*middlewareSpecRateLimitSourceCriterionPtrType)(v) +} + +func (*middlewareSpecRateLimitSourceCriterionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRateLimitSourceCriterion)(nil)).Elem() +} + +func (i *middlewareSpecRateLimitSourceCriterionPtrType) ToMiddlewareSpecRateLimitSourceCriterionPtrOutput() MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return i.ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecRateLimitSourceCriterionPtrType) ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRateLimitSourceCriterionPtrOutput) +} + +func (i *middlewareSpecRateLimitSourceCriterionPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRateLimitSourceCriterion] { + return pulumix.Output[*MiddlewareSpecRateLimitSourceCriterion]{ + OutputState: i.ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(ctx).OutputState, + } +} + +// SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the request's remote address field (as an ipStrategy). +type MiddlewareSpecRateLimitSourceCriterionOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRateLimitSourceCriterionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRateLimitSourceCriterion)(nil)).Elem() +} + +func (o MiddlewareSpecRateLimitSourceCriterionOutput) ToMiddlewareSpecRateLimitSourceCriterionOutput() MiddlewareSpecRateLimitSourceCriterionOutput { + return o +} + +func (o MiddlewareSpecRateLimitSourceCriterionOutput) ToMiddlewareSpecRateLimitSourceCriterionOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionOutput { + return o +} + +func (o MiddlewareSpecRateLimitSourceCriterionOutput) ToMiddlewareSpecRateLimitSourceCriterionPtrOutput() MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return o.ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecRateLimitSourceCriterionOutput) ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecRateLimitSourceCriterion) *MiddlewareSpecRateLimitSourceCriterion { + return &v + }).(MiddlewareSpecRateLimitSourceCriterionPtrOutput) +} + +func (o MiddlewareSpecRateLimitSourceCriterionOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRateLimitSourceCriterion] { + return pulumix.Output[MiddlewareSpecRateLimitSourceCriterion]{ + OutputState: o.OutputState, + } +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +func (o MiddlewareSpecRateLimitSourceCriterionOutput) IpStrategy() MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRateLimitSourceCriterion) *MiddlewareSpecRateLimitSourceCriterionIpStrategy { + return v.IpStrategy + }).(MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) +} + +// RequestHeaderName defines the name of the header used to group incoming requests. +func (o MiddlewareSpecRateLimitSourceCriterionOutput) RequestHeaderName() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRateLimitSourceCriterion) *string { return v.RequestHeaderName }).(pulumi.StringPtrOutput) +} + +// RequestHost defines whether to consider the request Host as the source. +func (o MiddlewareSpecRateLimitSourceCriterionOutput) RequestHost() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRateLimitSourceCriterion) *bool { return v.RequestHost }).(pulumi.BoolPtrOutput) +} + +type MiddlewareSpecRateLimitSourceCriterionPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRateLimitSourceCriterionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRateLimitSourceCriterion)(nil)).Elem() +} + +func (o MiddlewareSpecRateLimitSourceCriterionPtrOutput) ToMiddlewareSpecRateLimitSourceCriterionPtrOutput() MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return o +} + +func (o MiddlewareSpecRateLimitSourceCriterionPtrOutput) ToMiddlewareSpecRateLimitSourceCriterionPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionPtrOutput { + return o +} + +func (o MiddlewareSpecRateLimitSourceCriterionPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRateLimitSourceCriterion] { + return pulumix.Output[*MiddlewareSpecRateLimitSourceCriterion]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecRateLimitSourceCriterionPtrOutput) Elem() MiddlewareSpecRateLimitSourceCriterionOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimitSourceCriterion) MiddlewareSpecRateLimitSourceCriterion { + if v != nil { + return *v + } + var ret MiddlewareSpecRateLimitSourceCriterion + return ret + }).(MiddlewareSpecRateLimitSourceCriterionOutput) +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +func (o MiddlewareSpecRateLimitSourceCriterionPtrOutput) IpStrategy() MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimitSourceCriterion) *MiddlewareSpecRateLimitSourceCriterionIpStrategy { + if v == nil { + return nil + } + return v.IpStrategy + }).(MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) +} + +// RequestHeaderName defines the name of the header used to group incoming requests. +func (o MiddlewareSpecRateLimitSourceCriterionPtrOutput) RequestHeaderName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimitSourceCriterion) *string { + if v == nil { + return nil + } + return v.RequestHeaderName + }).(pulumi.StringPtrOutput) +} + +// RequestHost defines whether to consider the request Host as the source. +func (o MiddlewareSpecRateLimitSourceCriterionPtrOutput) RequestHost() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimitSourceCriterion) *bool { + if v == nil { + return nil + } + return v.RequestHost + }).(pulumi.BoolPtrOutput) +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +type MiddlewareSpecRateLimitSourceCriterionIpStrategy struct { + // Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). + Depth *int `pulumi:"depth"` + // ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. + ExcludedIPs []string `pulumi:"excludedIPs"` +} + +// MiddlewareSpecRateLimitSourceCriterionIpStrategyInput is an input type that accepts MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs and MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput values. +// You can construct a concrete instance of `MiddlewareSpecRateLimitSourceCriterionIpStrategyInput` via: +// +// MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs{...} +type MiddlewareSpecRateLimitSourceCriterionIpStrategyInput interface { + pulumi.Input + + ToMiddlewareSpecRateLimitSourceCriterionIpStrategyOutput() MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput + ToMiddlewareSpecRateLimitSourceCriterionIpStrategyOutputWithContext(context.Context) MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +type MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs struct { + // Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). + Depth pulumi.IntPtrInput `pulumi:"depth"` + // ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. + ExcludedIPs pulumi.StringArrayInput `pulumi:"excludedIPs"` +} + +func (MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRateLimitSourceCriterionIpStrategy)(nil)).Elem() +} + +func (i MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyOutput() MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput { + return i.ToMiddlewareSpecRateLimitSourceCriterionIpStrategyOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) +} + +func (i MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRateLimitSourceCriterionIpStrategy] { + return pulumix.Output[MiddlewareSpecRateLimitSourceCriterionIpStrategy]{ + OutputState: i.ToMiddlewareSpecRateLimitSourceCriterionIpStrategyOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput() MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return i.ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput).ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(ctx) +} + +// MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrInput is an input type that accepts MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs, MiddlewareSpecRateLimitSourceCriterionIpStrategyPtr and MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrInput` via: +// +// MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs{...} +// +// or: +// +// nil +type MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrInput interface { + pulumi.Input + + ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput() MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput + ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(context.Context) MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput +} + +type middlewareSpecRateLimitSourceCriterionIpStrategyPtrType MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs + +func MiddlewareSpecRateLimitSourceCriterionIpStrategyPtr(v *MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs) MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrInput { + return (*middlewareSpecRateLimitSourceCriterionIpStrategyPtrType)(v) +} + +func (*middlewareSpecRateLimitSourceCriterionIpStrategyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRateLimitSourceCriterionIpStrategy)(nil)).Elem() +} + +func (i *middlewareSpecRateLimitSourceCriterionIpStrategyPtrType) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput() MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return i.ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecRateLimitSourceCriterionIpStrategyPtrType) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) +} + +func (i *middlewareSpecRateLimitSourceCriterionIpStrategyPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRateLimitSourceCriterionIpStrategy] { + return pulumix.Output[*MiddlewareSpecRateLimitSourceCriterionIpStrategy]{ + OutputState: i.ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(ctx).OutputState, + } +} + +// IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/ipwhitelist/#ipstrategy +type MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRateLimitSourceCriterionIpStrategy)(nil)).Elem() +} + +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyOutput() MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput { + return o +} + +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput { + return o +} + +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput() MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return o.ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecRateLimitSourceCriterionIpStrategy) *MiddlewareSpecRateLimitSourceCriterionIpStrategy { + return &v + }).(MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) +} + +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRateLimitSourceCriterionIpStrategy] { + return pulumix.Output[MiddlewareSpecRateLimitSourceCriterionIpStrategy]{ + OutputState: o.OutputState, + } +} + +// Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) Depth() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRateLimitSourceCriterionIpStrategy) *int { return v.Depth }).(pulumi.IntPtrOutput) +} + +// ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) ExcludedIPs() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecRateLimitSourceCriterionIpStrategy) []string { return v.ExcludedIPs }).(pulumi.StringArrayOutput) +} + +type MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRateLimitSourceCriterionIpStrategy)(nil)).Elem() +} + +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput() MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return o +} + +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) ToMiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutputWithContext(ctx context.Context) MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput { + return o +} + +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRateLimitSourceCriterionIpStrategy] { + return pulumix.Output[*MiddlewareSpecRateLimitSourceCriterionIpStrategy]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) Elem() MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimitSourceCriterionIpStrategy) MiddlewareSpecRateLimitSourceCriterionIpStrategy { + if v != nil { + return *v + } + var ret MiddlewareSpecRateLimitSourceCriterionIpStrategy + return ret + }).(MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput) +} + +// Depth tells Traefik to use the X-Forwarded-For header and take the IP located at the depth position (starting from the right). +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) Depth() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimitSourceCriterionIpStrategy) *int { + if v == nil { + return nil + } + return v.Depth + }).(pulumi.IntPtrOutput) +} + +// ExcludedIPs configures Traefik to scan the X-Forwarded-For header and select the first IP not in the list. +func (o MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput) ExcludedIPs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecRateLimitSourceCriterionIpStrategy) []string { + if v == nil { + return nil + } + return v.ExcludedIPs + }).(pulumi.StringArrayOutput) +} + +// RedirectRegex holds the redirect regex middleware configuration. This middleware redirects a request using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex +type MiddlewareSpecRedirectRegex struct { + // Permanent defines whether the redirection is permanent (301). + Permanent *bool `pulumi:"permanent"` + // Regex defines the regex used to match and capture elements from the request URL. + Regex *string `pulumi:"regex"` + // Replacement defines how to modify the URL to have the new target URL. + Replacement *string `pulumi:"replacement"` +} + +// MiddlewareSpecRedirectRegexInput is an input type that accepts MiddlewareSpecRedirectRegexArgs and MiddlewareSpecRedirectRegexOutput values. +// You can construct a concrete instance of `MiddlewareSpecRedirectRegexInput` via: +// +// MiddlewareSpecRedirectRegexArgs{...} +type MiddlewareSpecRedirectRegexInput interface { + pulumi.Input + + ToMiddlewareSpecRedirectRegexOutput() MiddlewareSpecRedirectRegexOutput + ToMiddlewareSpecRedirectRegexOutputWithContext(context.Context) MiddlewareSpecRedirectRegexOutput +} + +// RedirectRegex holds the redirect regex middleware configuration. This middleware redirects a request using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex +type MiddlewareSpecRedirectRegexArgs struct { + // Permanent defines whether the redirection is permanent (301). + Permanent pulumi.BoolPtrInput `pulumi:"permanent"` + // Regex defines the regex used to match and capture elements from the request URL. + Regex pulumi.StringPtrInput `pulumi:"regex"` + // Replacement defines how to modify the URL to have the new target URL. + Replacement pulumi.StringPtrInput `pulumi:"replacement"` +} + +func (MiddlewareSpecRedirectRegexArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRedirectRegex)(nil)).Elem() +} + +func (i MiddlewareSpecRedirectRegexArgs) ToMiddlewareSpecRedirectRegexOutput() MiddlewareSpecRedirectRegexOutput { + return i.ToMiddlewareSpecRedirectRegexOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRedirectRegexArgs) ToMiddlewareSpecRedirectRegexOutputWithContext(ctx context.Context) MiddlewareSpecRedirectRegexOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRedirectRegexOutput) +} + +func (i MiddlewareSpecRedirectRegexArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRedirectRegex] { + return pulumix.Output[MiddlewareSpecRedirectRegex]{ + OutputState: i.ToMiddlewareSpecRedirectRegexOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecRedirectRegexArgs) ToMiddlewareSpecRedirectRegexPtrOutput() MiddlewareSpecRedirectRegexPtrOutput { + return i.ToMiddlewareSpecRedirectRegexPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRedirectRegexArgs) ToMiddlewareSpecRedirectRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecRedirectRegexPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRedirectRegexOutput).ToMiddlewareSpecRedirectRegexPtrOutputWithContext(ctx) +} + +// MiddlewareSpecRedirectRegexPtrInput is an input type that accepts MiddlewareSpecRedirectRegexArgs, MiddlewareSpecRedirectRegexPtr and MiddlewareSpecRedirectRegexPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecRedirectRegexPtrInput` via: +// +// MiddlewareSpecRedirectRegexArgs{...} +// +// or: +// +// nil +type MiddlewareSpecRedirectRegexPtrInput interface { + pulumi.Input + + ToMiddlewareSpecRedirectRegexPtrOutput() MiddlewareSpecRedirectRegexPtrOutput + ToMiddlewareSpecRedirectRegexPtrOutputWithContext(context.Context) MiddlewareSpecRedirectRegexPtrOutput +} + +type middlewareSpecRedirectRegexPtrType MiddlewareSpecRedirectRegexArgs + +func MiddlewareSpecRedirectRegexPtr(v *MiddlewareSpecRedirectRegexArgs) MiddlewareSpecRedirectRegexPtrInput { + return (*middlewareSpecRedirectRegexPtrType)(v) +} + +func (*middlewareSpecRedirectRegexPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRedirectRegex)(nil)).Elem() +} + +func (i *middlewareSpecRedirectRegexPtrType) ToMiddlewareSpecRedirectRegexPtrOutput() MiddlewareSpecRedirectRegexPtrOutput { + return i.ToMiddlewareSpecRedirectRegexPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecRedirectRegexPtrType) ToMiddlewareSpecRedirectRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecRedirectRegexPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRedirectRegexPtrOutput) +} + +func (i *middlewareSpecRedirectRegexPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRedirectRegex] { + return pulumix.Output[*MiddlewareSpecRedirectRegex]{ + OutputState: i.ToMiddlewareSpecRedirectRegexPtrOutputWithContext(ctx).OutputState, + } +} + +// RedirectRegex holds the redirect regex middleware configuration. This middleware redirects a request using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectregex/#regex +type MiddlewareSpecRedirectRegexOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRedirectRegexOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRedirectRegex)(nil)).Elem() +} + +func (o MiddlewareSpecRedirectRegexOutput) ToMiddlewareSpecRedirectRegexOutput() MiddlewareSpecRedirectRegexOutput { + return o +} + +func (o MiddlewareSpecRedirectRegexOutput) ToMiddlewareSpecRedirectRegexOutputWithContext(ctx context.Context) MiddlewareSpecRedirectRegexOutput { + return o +} + +func (o MiddlewareSpecRedirectRegexOutput) ToMiddlewareSpecRedirectRegexPtrOutput() MiddlewareSpecRedirectRegexPtrOutput { + return o.ToMiddlewareSpecRedirectRegexPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecRedirectRegexOutput) ToMiddlewareSpecRedirectRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecRedirectRegexPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecRedirectRegex) *MiddlewareSpecRedirectRegex { + return &v + }).(MiddlewareSpecRedirectRegexPtrOutput) +} + +func (o MiddlewareSpecRedirectRegexOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRedirectRegex] { + return pulumix.Output[MiddlewareSpecRedirectRegex]{ + OutputState: o.OutputState, + } +} + +// Permanent defines whether the redirection is permanent (301). +func (o MiddlewareSpecRedirectRegexOutput) Permanent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRedirectRegex) *bool { return v.Permanent }).(pulumi.BoolPtrOutput) +} + +// Regex defines the regex used to match and capture elements from the request URL. +func (o MiddlewareSpecRedirectRegexOutput) Regex() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRedirectRegex) *string { return v.Regex }).(pulumi.StringPtrOutput) +} + +// Replacement defines how to modify the URL to have the new target URL. +func (o MiddlewareSpecRedirectRegexOutput) Replacement() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRedirectRegex) *string { return v.Replacement }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecRedirectRegexPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRedirectRegexPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRedirectRegex)(nil)).Elem() +} + +func (o MiddlewareSpecRedirectRegexPtrOutput) ToMiddlewareSpecRedirectRegexPtrOutput() MiddlewareSpecRedirectRegexPtrOutput { + return o +} + +func (o MiddlewareSpecRedirectRegexPtrOutput) ToMiddlewareSpecRedirectRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecRedirectRegexPtrOutput { + return o +} + +func (o MiddlewareSpecRedirectRegexPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRedirectRegex] { + return pulumix.Output[*MiddlewareSpecRedirectRegex]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecRedirectRegexPtrOutput) Elem() MiddlewareSpecRedirectRegexOutput { + return o.ApplyT(func(v *MiddlewareSpecRedirectRegex) MiddlewareSpecRedirectRegex { + if v != nil { + return *v + } + var ret MiddlewareSpecRedirectRegex + return ret + }).(MiddlewareSpecRedirectRegexOutput) +} + +// Permanent defines whether the redirection is permanent (301). +func (o MiddlewareSpecRedirectRegexPtrOutput) Permanent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRedirectRegex) *bool { + if v == nil { + return nil + } + return v.Permanent + }).(pulumi.BoolPtrOutput) +} + +// Regex defines the regex used to match and capture elements from the request URL. +func (o MiddlewareSpecRedirectRegexPtrOutput) Regex() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRedirectRegex) *string { + if v == nil { + return nil + } + return v.Regex + }).(pulumi.StringPtrOutput) +} + +// Replacement defines how to modify the URL to have the new target URL. +func (o MiddlewareSpecRedirectRegexPtrOutput) Replacement() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRedirectRegex) *string { + if v == nil { + return nil + } + return v.Replacement + }).(pulumi.StringPtrOutput) +} + +// RedirectScheme holds the redirect scheme middleware configuration. This middleware redirects requests from a scheme/port to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/ +type MiddlewareSpecRedirectScheme struct { + // Permanent defines whether the redirection is permanent (301). + Permanent *bool `pulumi:"permanent"` + // Port defines the port of the new URL. + Port *string `pulumi:"port"` + // Scheme defines the scheme of the new URL. + Scheme *string `pulumi:"scheme"` +} + +// MiddlewareSpecRedirectSchemeInput is an input type that accepts MiddlewareSpecRedirectSchemeArgs and MiddlewareSpecRedirectSchemeOutput values. +// You can construct a concrete instance of `MiddlewareSpecRedirectSchemeInput` via: +// +// MiddlewareSpecRedirectSchemeArgs{...} +type MiddlewareSpecRedirectSchemeInput interface { + pulumi.Input + + ToMiddlewareSpecRedirectSchemeOutput() MiddlewareSpecRedirectSchemeOutput + ToMiddlewareSpecRedirectSchemeOutputWithContext(context.Context) MiddlewareSpecRedirectSchemeOutput +} + +// RedirectScheme holds the redirect scheme middleware configuration. This middleware redirects requests from a scheme/port to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/ +type MiddlewareSpecRedirectSchemeArgs struct { + // Permanent defines whether the redirection is permanent (301). + Permanent pulumi.BoolPtrInput `pulumi:"permanent"` + // Port defines the port of the new URL. + Port pulumi.StringPtrInput `pulumi:"port"` + // Scheme defines the scheme of the new URL. + Scheme pulumi.StringPtrInput `pulumi:"scheme"` +} + +func (MiddlewareSpecRedirectSchemeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRedirectScheme)(nil)).Elem() +} + +func (i MiddlewareSpecRedirectSchemeArgs) ToMiddlewareSpecRedirectSchemeOutput() MiddlewareSpecRedirectSchemeOutput { + return i.ToMiddlewareSpecRedirectSchemeOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRedirectSchemeArgs) ToMiddlewareSpecRedirectSchemeOutputWithContext(ctx context.Context) MiddlewareSpecRedirectSchemeOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRedirectSchemeOutput) +} + +func (i MiddlewareSpecRedirectSchemeArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRedirectScheme] { + return pulumix.Output[MiddlewareSpecRedirectScheme]{ + OutputState: i.ToMiddlewareSpecRedirectSchemeOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecRedirectSchemeArgs) ToMiddlewareSpecRedirectSchemePtrOutput() MiddlewareSpecRedirectSchemePtrOutput { + return i.ToMiddlewareSpecRedirectSchemePtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRedirectSchemeArgs) ToMiddlewareSpecRedirectSchemePtrOutputWithContext(ctx context.Context) MiddlewareSpecRedirectSchemePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRedirectSchemeOutput).ToMiddlewareSpecRedirectSchemePtrOutputWithContext(ctx) +} + +// MiddlewareSpecRedirectSchemePtrInput is an input type that accepts MiddlewareSpecRedirectSchemeArgs, MiddlewareSpecRedirectSchemePtr and MiddlewareSpecRedirectSchemePtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecRedirectSchemePtrInput` via: +// +// MiddlewareSpecRedirectSchemeArgs{...} +// +// or: +// +// nil +type MiddlewareSpecRedirectSchemePtrInput interface { + pulumi.Input + + ToMiddlewareSpecRedirectSchemePtrOutput() MiddlewareSpecRedirectSchemePtrOutput + ToMiddlewareSpecRedirectSchemePtrOutputWithContext(context.Context) MiddlewareSpecRedirectSchemePtrOutput +} + +type middlewareSpecRedirectSchemePtrType MiddlewareSpecRedirectSchemeArgs + +func MiddlewareSpecRedirectSchemePtr(v *MiddlewareSpecRedirectSchemeArgs) MiddlewareSpecRedirectSchemePtrInput { + return (*middlewareSpecRedirectSchemePtrType)(v) +} + +func (*middlewareSpecRedirectSchemePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRedirectScheme)(nil)).Elem() +} + +func (i *middlewareSpecRedirectSchemePtrType) ToMiddlewareSpecRedirectSchemePtrOutput() MiddlewareSpecRedirectSchemePtrOutput { + return i.ToMiddlewareSpecRedirectSchemePtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecRedirectSchemePtrType) ToMiddlewareSpecRedirectSchemePtrOutputWithContext(ctx context.Context) MiddlewareSpecRedirectSchemePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRedirectSchemePtrOutput) +} + +func (i *middlewareSpecRedirectSchemePtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRedirectScheme] { + return pulumix.Output[*MiddlewareSpecRedirectScheme]{ + OutputState: i.ToMiddlewareSpecRedirectSchemePtrOutputWithContext(ctx).OutputState, + } +} + +// RedirectScheme holds the redirect scheme middleware configuration. This middleware redirects requests from a scheme/port to another. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/redirectscheme/ +type MiddlewareSpecRedirectSchemeOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRedirectSchemeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRedirectScheme)(nil)).Elem() +} + +func (o MiddlewareSpecRedirectSchemeOutput) ToMiddlewareSpecRedirectSchemeOutput() MiddlewareSpecRedirectSchemeOutput { + return o +} + +func (o MiddlewareSpecRedirectSchemeOutput) ToMiddlewareSpecRedirectSchemeOutputWithContext(ctx context.Context) MiddlewareSpecRedirectSchemeOutput { + return o +} + +func (o MiddlewareSpecRedirectSchemeOutput) ToMiddlewareSpecRedirectSchemePtrOutput() MiddlewareSpecRedirectSchemePtrOutput { + return o.ToMiddlewareSpecRedirectSchemePtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecRedirectSchemeOutput) ToMiddlewareSpecRedirectSchemePtrOutputWithContext(ctx context.Context) MiddlewareSpecRedirectSchemePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecRedirectScheme) *MiddlewareSpecRedirectScheme { + return &v + }).(MiddlewareSpecRedirectSchemePtrOutput) +} + +func (o MiddlewareSpecRedirectSchemeOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRedirectScheme] { + return pulumix.Output[MiddlewareSpecRedirectScheme]{ + OutputState: o.OutputState, + } +} + +// Permanent defines whether the redirection is permanent (301). +func (o MiddlewareSpecRedirectSchemeOutput) Permanent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRedirectScheme) *bool { return v.Permanent }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of the new URL. +func (o MiddlewareSpecRedirectSchemeOutput) Port() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRedirectScheme) *string { return v.Port }).(pulumi.StringPtrOutput) +} + +// Scheme defines the scheme of the new URL. +func (o MiddlewareSpecRedirectSchemeOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRedirectScheme) *string { return v.Scheme }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecRedirectSchemePtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRedirectSchemePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRedirectScheme)(nil)).Elem() +} + +func (o MiddlewareSpecRedirectSchemePtrOutput) ToMiddlewareSpecRedirectSchemePtrOutput() MiddlewareSpecRedirectSchemePtrOutput { + return o +} + +func (o MiddlewareSpecRedirectSchemePtrOutput) ToMiddlewareSpecRedirectSchemePtrOutputWithContext(ctx context.Context) MiddlewareSpecRedirectSchemePtrOutput { + return o +} + +func (o MiddlewareSpecRedirectSchemePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRedirectScheme] { + return pulumix.Output[*MiddlewareSpecRedirectScheme]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecRedirectSchemePtrOutput) Elem() MiddlewareSpecRedirectSchemeOutput { + return o.ApplyT(func(v *MiddlewareSpecRedirectScheme) MiddlewareSpecRedirectScheme { + if v != nil { + return *v + } + var ret MiddlewareSpecRedirectScheme + return ret + }).(MiddlewareSpecRedirectSchemeOutput) +} + +// Permanent defines whether the redirection is permanent (301). +func (o MiddlewareSpecRedirectSchemePtrOutput) Permanent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRedirectScheme) *bool { + if v == nil { + return nil + } + return v.Permanent + }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of the new URL. +func (o MiddlewareSpecRedirectSchemePtrOutput) Port() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRedirectScheme) *string { + if v == nil { + return nil + } + return v.Port + }).(pulumi.StringPtrOutput) +} + +// Scheme defines the scheme of the new URL. +func (o MiddlewareSpecRedirectSchemePtrOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRedirectScheme) *string { + if v == nil { + return nil + } + return v.Scheme + }).(pulumi.StringPtrOutput) +} + +// ReplacePath holds the replace path middleware configuration. This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/ +type MiddlewareSpecReplacePath struct { + // Path defines the path to use as replacement in the request URL. + Path *string `pulumi:"path"` +} + +// MiddlewareSpecReplacePathInput is an input type that accepts MiddlewareSpecReplacePathArgs and MiddlewareSpecReplacePathOutput values. +// You can construct a concrete instance of `MiddlewareSpecReplacePathInput` via: +// +// MiddlewareSpecReplacePathArgs{...} +type MiddlewareSpecReplacePathInput interface { + pulumi.Input + + ToMiddlewareSpecReplacePathOutput() MiddlewareSpecReplacePathOutput + ToMiddlewareSpecReplacePathOutputWithContext(context.Context) MiddlewareSpecReplacePathOutput +} + +// ReplacePath holds the replace path middleware configuration. This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/ +type MiddlewareSpecReplacePathArgs struct { + // Path defines the path to use as replacement in the request URL. + Path pulumi.StringPtrInput `pulumi:"path"` +} + +func (MiddlewareSpecReplacePathArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecReplacePath)(nil)).Elem() +} + +func (i MiddlewareSpecReplacePathArgs) ToMiddlewareSpecReplacePathOutput() MiddlewareSpecReplacePathOutput { + return i.ToMiddlewareSpecReplacePathOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecReplacePathArgs) ToMiddlewareSpecReplacePathOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecReplacePathOutput) +} + +func (i MiddlewareSpecReplacePathArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecReplacePath] { + return pulumix.Output[MiddlewareSpecReplacePath]{ + OutputState: i.ToMiddlewareSpecReplacePathOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecReplacePathArgs) ToMiddlewareSpecReplacePathPtrOutput() MiddlewareSpecReplacePathPtrOutput { + return i.ToMiddlewareSpecReplacePathPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecReplacePathArgs) ToMiddlewareSpecReplacePathPtrOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecReplacePathOutput).ToMiddlewareSpecReplacePathPtrOutputWithContext(ctx) +} + +// MiddlewareSpecReplacePathPtrInput is an input type that accepts MiddlewareSpecReplacePathArgs, MiddlewareSpecReplacePathPtr and MiddlewareSpecReplacePathPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecReplacePathPtrInput` via: +// +// MiddlewareSpecReplacePathArgs{...} +// +// or: +// +// nil +type MiddlewareSpecReplacePathPtrInput interface { + pulumi.Input + + ToMiddlewareSpecReplacePathPtrOutput() MiddlewareSpecReplacePathPtrOutput + ToMiddlewareSpecReplacePathPtrOutputWithContext(context.Context) MiddlewareSpecReplacePathPtrOutput +} + +type middlewareSpecReplacePathPtrType MiddlewareSpecReplacePathArgs + +func MiddlewareSpecReplacePathPtr(v *MiddlewareSpecReplacePathArgs) MiddlewareSpecReplacePathPtrInput { + return (*middlewareSpecReplacePathPtrType)(v) +} + +func (*middlewareSpecReplacePathPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecReplacePath)(nil)).Elem() +} + +func (i *middlewareSpecReplacePathPtrType) ToMiddlewareSpecReplacePathPtrOutput() MiddlewareSpecReplacePathPtrOutput { + return i.ToMiddlewareSpecReplacePathPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecReplacePathPtrType) ToMiddlewareSpecReplacePathPtrOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecReplacePathPtrOutput) +} + +func (i *middlewareSpecReplacePathPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecReplacePath] { + return pulumix.Output[*MiddlewareSpecReplacePath]{ + OutputState: i.ToMiddlewareSpecReplacePathPtrOutputWithContext(ctx).OutputState, + } +} + +// ReplacePath holds the replace path middleware configuration. This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepath/ +type MiddlewareSpecReplacePathOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecReplacePathOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecReplacePath)(nil)).Elem() +} + +func (o MiddlewareSpecReplacePathOutput) ToMiddlewareSpecReplacePathOutput() MiddlewareSpecReplacePathOutput { + return o +} + +func (o MiddlewareSpecReplacePathOutput) ToMiddlewareSpecReplacePathOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathOutput { + return o +} + +func (o MiddlewareSpecReplacePathOutput) ToMiddlewareSpecReplacePathPtrOutput() MiddlewareSpecReplacePathPtrOutput { + return o.ToMiddlewareSpecReplacePathPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecReplacePathOutput) ToMiddlewareSpecReplacePathPtrOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecReplacePath) *MiddlewareSpecReplacePath { + return &v + }).(MiddlewareSpecReplacePathPtrOutput) +} + +func (o MiddlewareSpecReplacePathOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecReplacePath] { + return pulumix.Output[MiddlewareSpecReplacePath]{ + OutputState: o.OutputState, + } +} + +// Path defines the path to use as replacement in the request URL. +func (o MiddlewareSpecReplacePathOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecReplacePath) *string { return v.Path }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecReplacePathPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecReplacePathPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecReplacePath)(nil)).Elem() +} + +func (o MiddlewareSpecReplacePathPtrOutput) ToMiddlewareSpecReplacePathPtrOutput() MiddlewareSpecReplacePathPtrOutput { + return o +} + +func (o MiddlewareSpecReplacePathPtrOutput) ToMiddlewareSpecReplacePathPtrOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathPtrOutput { + return o +} + +func (o MiddlewareSpecReplacePathPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecReplacePath] { + return pulumix.Output[*MiddlewareSpecReplacePath]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecReplacePathPtrOutput) Elem() MiddlewareSpecReplacePathOutput { + return o.ApplyT(func(v *MiddlewareSpecReplacePath) MiddlewareSpecReplacePath { + if v != nil { + return *v + } + var ret MiddlewareSpecReplacePath + return ret + }).(MiddlewareSpecReplacePathOutput) +} + +// Path defines the path to use as replacement in the request URL. +func (o MiddlewareSpecReplacePathPtrOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecReplacePath) *string { + if v == nil { + return nil + } + return v.Path + }).(pulumi.StringPtrOutput) +} + +// ReplacePathRegex holds the replace path regex middleware configuration. This middleware replaces the path of a URL using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/ +type MiddlewareSpecReplacePathRegex struct { + // Regex defines the regular expression used to match and capture the path from the request URL. + Regex *string `pulumi:"regex"` + // Replacement defines the replacement path format, which can include captured variables. + Replacement *string `pulumi:"replacement"` +} + +// MiddlewareSpecReplacePathRegexInput is an input type that accepts MiddlewareSpecReplacePathRegexArgs and MiddlewareSpecReplacePathRegexOutput values. +// You can construct a concrete instance of `MiddlewareSpecReplacePathRegexInput` via: +// +// MiddlewareSpecReplacePathRegexArgs{...} +type MiddlewareSpecReplacePathRegexInput interface { + pulumi.Input + + ToMiddlewareSpecReplacePathRegexOutput() MiddlewareSpecReplacePathRegexOutput + ToMiddlewareSpecReplacePathRegexOutputWithContext(context.Context) MiddlewareSpecReplacePathRegexOutput +} + +// ReplacePathRegex holds the replace path regex middleware configuration. This middleware replaces the path of a URL using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/ +type MiddlewareSpecReplacePathRegexArgs struct { + // Regex defines the regular expression used to match and capture the path from the request URL. + Regex pulumi.StringPtrInput `pulumi:"regex"` + // Replacement defines the replacement path format, which can include captured variables. + Replacement pulumi.StringPtrInput `pulumi:"replacement"` +} + +func (MiddlewareSpecReplacePathRegexArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecReplacePathRegex)(nil)).Elem() +} + +func (i MiddlewareSpecReplacePathRegexArgs) ToMiddlewareSpecReplacePathRegexOutput() MiddlewareSpecReplacePathRegexOutput { + return i.ToMiddlewareSpecReplacePathRegexOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecReplacePathRegexArgs) ToMiddlewareSpecReplacePathRegexOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathRegexOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecReplacePathRegexOutput) +} + +func (i MiddlewareSpecReplacePathRegexArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecReplacePathRegex] { + return pulumix.Output[MiddlewareSpecReplacePathRegex]{ + OutputState: i.ToMiddlewareSpecReplacePathRegexOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecReplacePathRegexArgs) ToMiddlewareSpecReplacePathRegexPtrOutput() MiddlewareSpecReplacePathRegexPtrOutput { + return i.ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecReplacePathRegexArgs) ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathRegexPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecReplacePathRegexOutput).ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(ctx) +} + +// MiddlewareSpecReplacePathRegexPtrInput is an input type that accepts MiddlewareSpecReplacePathRegexArgs, MiddlewareSpecReplacePathRegexPtr and MiddlewareSpecReplacePathRegexPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecReplacePathRegexPtrInput` via: +// +// MiddlewareSpecReplacePathRegexArgs{...} +// +// or: +// +// nil +type MiddlewareSpecReplacePathRegexPtrInput interface { + pulumi.Input + + ToMiddlewareSpecReplacePathRegexPtrOutput() MiddlewareSpecReplacePathRegexPtrOutput + ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(context.Context) MiddlewareSpecReplacePathRegexPtrOutput +} + +type middlewareSpecReplacePathRegexPtrType MiddlewareSpecReplacePathRegexArgs + +func MiddlewareSpecReplacePathRegexPtr(v *MiddlewareSpecReplacePathRegexArgs) MiddlewareSpecReplacePathRegexPtrInput { + return (*middlewareSpecReplacePathRegexPtrType)(v) +} + +func (*middlewareSpecReplacePathRegexPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecReplacePathRegex)(nil)).Elem() +} + +func (i *middlewareSpecReplacePathRegexPtrType) ToMiddlewareSpecReplacePathRegexPtrOutput() MiddlewareSpecReplacePathRegexPtrOutput { + return i.ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecReplacePathRegexPtrType) ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathRegexPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecReplacePathRegexPtrOutput) +} + +func (i *middlewareSpecReplacePathRegexPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecReplacePathRegex] { + return pulumix.Output[*MiddlewareSpecReplacePathRegex]{ + OutputState: i.ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(ctx).OutputState, + } +} + +// ReplacePathRegex holds the replace path regex middleware configuration. This middleware replaces the path of a URL using regex matching and replacement. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/replacepathregex/ +type MiddlewareSpecReplacePathRegexOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecReplacePathRegexOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecReplacePathRegex)(nil)).Elem() +} + +func (o MiddlewareSpecReplacePathRegexOutput) ToMiddlewareSpecReplacePathRegexOutput() MiddlewareSpecReplacePathRegexOutput { + return o +} + +func (o MiddlewareSpecReplacePathRegexOutput) ToMiddlewareSpecReplacePathRegexOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathRegexOutput { + return o +} + +func (o MiddlewareSpecReplacePathRegexOutput) ToMiddlewareSpecReplacePathRegexPtrOutput() MiddlewareSpecReplacePathRegexPtrOutput { + return o.ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecReplacePathRegexOutput) ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathRegexPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecReplacePathRegex) *MiddlewareSpecReplacePathRegex { + return &v + }).(MiddlewareSpecReplacePathRegexPtrOutput) +} + +func (o MiddlewareSpecReplacePathRegexOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecReplacePathRegex] { + return pulumix.Output[MiddlewareSpecReplacePathRegex]{ + OutputState: o.OutputState, + } +} + +// Regex defines the regular expression used to match and capture the path from the request URL. +func (o MiddlewareSpecReplacePathRegexOutput) Regex() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecReplacePathRegex) *string { return v.Regex }).(pulumi.StringPtrOutput) +} + +// Replacement defines the replacement path format, which can include captured variables. +func (o MiddlewareSpecReplacePathRegexOutput) Replacement() pulumi.StringPtrOutput { + return o.ApplyT(func(v MiddlewareSpecReplacePathRegex) *string { return v.Replacement }).(pulumi.StringPtrOutput) +} + +type MiddlewareSpecReplacePathRegexPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecReplacePathRegexPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecReplacePathRegex)(nil)).Elem() +} + +func (o MiddlewareSpecReplacePathRegexPtrOutput) ToMiddlewareSpecReplacePathRegexPtrOutput() MiddlewareSpecReplacePathRegexPtrOutput { + return o +} + +func (o MiddlewareSpecReplacePathRegexPtrOutput) ToMiddlewareSpecReplacePathRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecReplacePathRegexPtrOutput { + return o +} + +func (o MiddlewareSpecReplacePathRegexPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecReplacePathRegex] { + return pulumix.Output[*MiddlewareSpecReplacePathRegex]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecReplacePathRegexPtrOutput) Elem() MiddlewareSpecReplacePathRegexOutput { + return o.ApplyT(func(v *MiddlewareSpecReplacePathRegex) MiddlewareSpecReplacePathRegex { + if v != nil { + return *v + } + var ret MiddlewareSpecReplacePathRegex + return ret + }).(MiddlewareSpecReplacePathRegexOutput) +} + +// Regex defines the regular expression used to match and capture the path from the request URL. +func (o MiddlewareSpecReplacePathRegexPtrOutput) Regex() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecReplacePathRegex) *string { + if v == nil { + return nil + } + return v.Regex + }).(pulumi.StringPtrOutput) +} + +// Replacement defines the replacement path format, which can include captured variables. +func (o MiddlewareSpecReplacePathRegexPtrOutput) Replacement() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecReplacePathRegex) *string { + if v == nil { + return nil + } + return v.Replacement + }).(pulumi.StringPtrOutput) +} + +// Retry holds the retry middleware configuration. This middleware reissues requests a given number of times to a backend server if that server does not reply. As soon as the server answers, the middleware stops retrying, regardless of the response status. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/ +type MiddlewareSpecRetry struct { + // Attempts defines how many times the request should be retried. + Attempts *int `pulumi:"attempts"` + // InitialInterval defines the first wait time in the exponential backoff series. The maximum interval is calculated as twice the initialInterval. If unspecified, requests will be retried immediately. The value of initialInterval should be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration. + InitialInterval interface{} `pulumi:"initialInterval"` +} + +// MiddlewareSpecRetryInput is an input type that accepts MiddlewareSpecRetryArgs and MiddlewareSpecRetryOutput values. +// You can construct a concrete instance of `MiddlewareSpecRetryInput` via: +// +// MiddlewareSpecRetryArgs{...} +type MiddlewareSpecRetryInput interface { + pulumi.Input + + ToMiddlewareSpecRetryOutput() MiddlewareSpecRetryOutput + ToMiddlewareSpecRetryOutputWithContext(context.Context) MiddlewareSpecRetryOutput +} + +// Retry holds the retry middleware configuration. This middleware reissues requests a given number of times to a backend server if that server does not reply. As soon as the server answers, the middleware stops retrying, regardless of the response status. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/ +type MiddlewareSpecRetryArgs struct { + // Attempts defines how many times the request should be retried. + Attempts pulumi.IntPtrInput `pulumi:"attempts"` + // InitialInterval defines the first wait time in the exponential backoff series. The maximum interval is calculated as twice the initialInterval. If unspecified, requests will be retried immediately. The value of initialInterval should be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration. + InitialInterval pulumi.Input `pulumi:"initialInterval"` +} + +func (MiddlewareSpecRetryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRetry)(nil)).Elem() +} + +func (i MiddlewareSpecRetryArgs) ToMiddlewareSpecRetryOutput() MiddlewareSpecRetryOutput { + return i.ToMiddlewareSpecRetryOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRetryArgs) ToMiddlewareSpecRetryOutputWithContext(ctx context.Context) MiddlewareSpecRetryOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRetryOutput) +} + +func (i MiddlewareSpecRetryArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRetry] { + return pulumix.Output[MiddlewareSpecRetry]{ + OutputState: i.ToMiddlewareSpecRetryOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecRetryArgs) ToMiddlewareSpecRetryPtrOutput() MiddlewareSpecRetryPtrOutput { + return i.ToMiddlewareSpecRetryPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecRetryArgs) ToMiddlewareSpecRetryPtrOutputWithContext(ctx context.Context) MiddlewareSpecRetryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRetryOutput).ToMiddlewareSpecRetryPtrOutputWithContext(ctx) +} + +// MiddlewareSpecRetryPtrInput is an input type that accepts MiddlewareSpecRetryArgs, MiddlewareSpecRetryPtr and MiddlewareSpecRetryPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecRetryPtrInput` via: +// +// MiddlewareSpecRetryArgs{...} +// +// or: +// +// nil +type MiddlewareSpecRetryPtrInput interface { + pulumi.Input + + ToMiddlewareSpecRetryPtrOutput() MiddlewareSpecRetryPtrOutput + ToMiddlewareSpecRetryPtrOutputWithContext(context.Context) MiddlewareSpecRetryPtrOutput +} + +type middlewareSpecRetryPtrType MiddlewareSpecRetryArgs + +func MiddlewareSpecRetryPtr(v *MiddlewareSpecRetryArgs) MiddlewareSpecRetryPtrInput { + return (*middlewareSpecRetryPtrType)(v) +} + +func (*middlewareSpecRetryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRetry)(nil)).Elem() +} + +func (i *middlewareSpecRetryPtrType) ToMiddlewareSpecRetryPtrOutput() MiddlewareSpecRetryPtrOutput { + return i.ToMiddlewareSpecRetryPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecRetryPtrType) ToMiddlewareSpecRetryPtrOutputWithContext(ctx context.Context) MiddlewareSpecRetryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecRetryPtrOutput) +} + +func (i *middlewareSpecRetryPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRetry] { + return pulumix.Output[*MiddlewareSpecRetry]{ + OutputState: i.ToMiddlewareSpecRetryPtrOutputWithContext(ctx).OutputState, + } +} + +// Retry holds the retry middleware configuration. This middleware reissues requests a given number of times to a backend server if that server does not reply. As soon as the server answers, the middleware stops retrying, regardless of the response status. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/retry/ +type MiddlewareSpecRetryOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRetryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecRetry)(nil)).Elem() +} + +func (o MiddlewareSpecRetryOutput) ToMiddlewareSpecRetryOutput() MiddlewareSpecRetryOutput { + return o +} + +func (o MiddlewareSpecRetryOutput) ToMiddlewareSpecRetryOutputWithContext(ctx context.Context) MiddlewareSpecRetryOutput { + return o +} + +func (o MiddlewareSpecRetryOutput) ToMiddlewareSpecRetryPtrOutput() MiddlewareSpecRetryPtrOutput { + return o.ToMiddlewareSpecRetryPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecRetryOutput) ToMiddlewareSpecRetryPtrOutputWithContext(ctx context.Context) MiddlewareSpecRetryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecRetry) *MiddlewareSpecRetry { + return &v + }).(MiddlewareSpecRetryPtrOutput) +} + +func (o MiddlewareSpecRetryOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecRetry] { + return pulumix.Output[MiddlewareSpecRetry]{ + OutputState: o.OutputState, + } +} + +// Attempts defines how many times the request should be retried. +func (o MiddlewareSpecRetryOutput) Attempts() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareSpecRetry) *int { return v.Attempts }).(pulumi.IntPtrOutput) +} + +// InitialInterval defines the first wait time in the exponential backoff series. The maximum interval is calculated as twice the initialInterval. If unspecified, requests will be retried immediately. The value of initialInterval should be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration. +func (o MiddlewareSpecRetryOutput) InitialInterval() pulumi.AnyOutput { + return o.ApplyT(func(v MiddlewareSpecRetry) interface{} { return v.InitialInterval }).(pulumi.AnyOutput) +} + +type MiddlewareSpecRetryPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecRetryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecRetry)(nil)).Elem() +} + +func (o MiddlewareSpecRetryPtrOutput) ToMiddlewareSpecRetryPtrOutput() MiddlewareSpecRetryPtrOutput { + return o +} + +func (o MiddlewareSpecRetryPtrOutput) ToMiddlewareSpecRetryPtrOutputWithContext(ctx context.Context) MiddlewareSpecRetryPtrOutput { + return o +} + +func (o MiddlewareSpecRetryPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecRetry] { + return pulumix.Output[*MiddlewareSpecRetry]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecRetryPtrOutput) Elem() MiddlewareSpecRetryOutput { + return o.ApplyT(func(v *MiddlewareSpecRetry) MiddlewareSpecRetry { + if v != nil { + return *v + } + var ret MiddlewareSpecRetry + return ret + }).(MiddlewareSpecRetryOutput) +} + +// Attempts defines how many times the request should be retried. +func (o MiddlewareSpecRetryPtrOutput) Attempts() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecRetry) *int { + if v == nil { + return nil + } + return v.Attempts + }).(pulumi.IntPtrOutput) +} + +// InitialInterval defines the first wait time in the exponential backoff series. The maximum interval is calculated as twice the initialInterval. If unspecified, requests will be retried immediately. The value of initialInterval should be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration. +func (o MiddlewareSpecRetryPtrOutput) InitialInterval() pulumi.AnyOutput { + return o.ApplyT(func(v *MiddlewareSpecRetry) interface{} { + if v == nil { + return nil + } + return v.InitialInterval + }).(pulumi.AnyOutput) +} + +// StripPrefix holds the strip prefix middleware configuration. This middleware removes the specified prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/ +type MiddlewareSpecStripPrefix struct { + // ForceSlash ensures that the resulting stripped path is not the empty string, by replacing it with / when necessary. Default: true. + ForceSlash *bool `pulumi:"forceSlash"` + // Prefixes defines the prefixes to strip from the request URL. + Prefixes []string `pulumi:"prefixes"` +} + +// MiddlewareSpecStripPrefixInput is an input type that accepts MiddlewareSpecStripPrefixArgs and MiddlewareSpecStripPrefixOutput values. +// You can construct a concrete instance of `MiddlewareSpecStripPrefixInput` via: +// +// MiddlewareSpecStripPrefixArgs{...} +type MiddlewareSpecStripPrefixInput interface { + pulumi.Input + + ToMiddlewareSpecStripPrefixOutput() MiddlewareSpecStripPrefixOutput + ToMiddlewareSpecStripPrefixOutputWithContext(context.Context) MiddlewareSpecStripPrefixOutput +} + +// StripPrefix holds the strip prefix middleware configuration. This middleware removes the specified prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/ +type MiddlewareSpecStripPrefixArgs struct { + // ForceSlash ensures that the resulting stripped path is not the empty string, by replacing it with / when necessary. Default: true. + ForceSlash pulumi.BoolPtrInput `pulumi:"forceSlash"` + // Prefixes defines the prefixes to strip from the request URL. + Prefixes pulumi.StringArrayInput `pulumi:"prefixes"` +} + +func (MiddlewareSpecStripPrefixArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecStripPrefix)(nil)).Elem() +} + +func (i MiddlewareSpecStripPrefixArgs) ToMiddlewareSpecStripPrefixOutput() MiddlewareSpecStripPrefixOutput { + return i.ToMiddlewareSpecStripPrefixOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecStripPrefixArgs) ToMiddlewareSpecStripPrefixOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecStripPrefixOutput) +} + +func (i MiddlewareSpecStripPrefixArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecStripPrefix] { + return pulumix.Output[MiddlewareSpecStripPrefix]{ + OutputState: i.ToMiddlewareSpecStripPrefixOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecStripPrefixArgs) ToMiddlewareSpecStripPrefixPtrOutput() MiddlewareSpecStripPrefixPtrOutput { + return i.ToMiddlewareSpecStripPrefixPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecStripPrefixArgs) ToMiddlewareSpecStripPrefixPtrOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecStripPrefixOutput).ToMiddlewareSpecStripPrefixPtrOutputWithContext(ctx) +} + +// MiddlewareSpecStripPrefixPtrInput is an input type that accepts MiddlewareSpecStripPrefixArgs, MiddlewareSpecStripPrefixPtr and MiddlewareSpecStripPrefixPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecStripPrefixPtrInput` via: +// +// MiddlewareSpecStripPrefixArgs{...} +// +// or: +// +// nil +type MiddlewareSpecStripPrefixPtrInput interface { + pulumi.Input + + ToMiddlewareSpecStripPrefixPtrOutput() MiddlewareSpecStripPrefixPtrOutput + ToMiddlewareSpecStripPrefixPtrOutputWithContext(context.Context) MiddlewareSpecStripPrefixPtrOutput +} + +type middlewareSpecStripPrefixPtrType MiddlewareSpecStripPrefixArgs + +func MiddlewareSpecStripPrefixPtr(v *MiddlewareSpecStripPrefixArgs) MiddlewareSpecStripPrefixPtrInput { + return (*middlewareSpecStripPrefixPtrType)(v) +} + +func (*middlewareSpecStripPrefixPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecStripPrefix)(nil)).Elem() +} + +func (i *middlewareSpecStripPrefixPtrType) ToMiddlewareSpecStripPrefixPtrOutput() MiddlewareSpecStripPrefixPtrOutput { + return i.ToMiddlewareSpecStripPrefixPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecStripPrefixPtrType) ToMiddlewareSpecStripPrefixPtrOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecStripPrefixPtrOutput) +} + +func (i *middlewareSpecStripPrefixPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecStripPrefix] { + return pulumix.Output[*MiddlewareSpecStripPrefix]{ + OutputState: i.ToMiddlewareSpecStripPrefixPtrOutputWithContext(ctx).OutputState, + } +} + +// StripPrefix holds the strip prefix middleware configuration. This middleware removes the specified prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefix/ +type MiddlewareSpecStripPrefixOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecStripPrefixOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecStripPrefix)(nil)).Elem() +} + +func (o MiddlewareSpecStripPrefixOutput) ToMiddlewareSpecStripPrefixOutput() MiddlewareSpecStripPrefixOutput { + return o +} + +func (o MiddlewareSpecStripPrefixOutput) ToMiddlewareSpecStripPrefixOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixOutput { + return o +} + +func (o MiddlewareSpecStripPrefixOutput) ToMiddlewareSpecStripPrefixPtrOutput() MiddlewareSpecStripPrefixPtrOutput { + return o.ToMiddlewareSpecStripPrefixPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecStripPrefixOutput) ToMiddlewareSpecStripPrefixPtrOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecStripPrefix) *MiddlewareSpecStripPrefix { + return &v + }).(MiddlewareSpecStripPrefixPtrOutput) +} + +func (o MiddlewareSpecStripPrefixOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecStripPrefix] { + return pulumix.Output[MiddlewareSpecStripPrefix]{ + OutputState: o.OutputState, + } +} + +// ForceSlash ensures that the resulting stripped path is not the empty string, by replacing it with / when necessary. Default: true. +func (o MiddlewareSpecStripPrefixOutput) ForceSlash() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MiddlewareSpecStripPrefix) *bool { return v.ForceSlash }).(pulumi.BoolPtrOutput) +} + +// Prefixes defines the prefixes to strip from the request URL. +func (o MiddlewareSpecStripPrefixOutput) Prefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecStripPrefix) []string { return v.Prefixes }).(pulumi.StringArrayOutput) +} + +type MiddlewareSpecStripPrefixPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecStripPrefixPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecStripPrefix)(nil)).Elem() +} + +func (o MiddlewareSpecStripPrefixPtrOutput) ToMiddlewareSpecStripPrefixPtrOutput() MiddlewareSpecStripPrefixPtrOutput { + return o +} + +func (o MiddlewareSpecStripPrefixPtrOutput) ToMiddlewareSpecStripPrefixPtrOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixPtrOutput { + return o +} + +func (o MiddlewareSpecStripPrefixPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecStripPrefix] { + return pulumix.Output[*MiddlewareSpecStripPrefix]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecStripPrefixPtrOutput) Elem() MiddlewareSpecStripPrefixOutput { + return o.ApplyT(func(v *MiddlewareSpecStripPrefix) MiddlewareSpecStripPrefix { + if v != nil { + return *v + } + var ret MiddlewareSpecStripPrefix + return ret + }).(MiddlewareSpecStripPrefixOutput) +} + +// ForceSlash ensures that the resulting stripped path is not the empty string, by replacing it with / when necessary. Default: true. +func (o MiddlewareSpecStripPrefixPtrOutput) ForceSlash() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MiddlewareSpecStripPrefix) *bool { + if v == nil { + return nil + } + return v.ForceSlash + }).(pulumi.BoolPtrOutput) +} + +// Prefixes defines the prefixes to strip from the request URL. +func (o MiddlewareSpecStripPrefixPtrOutput) Prefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecStripPrefix) []string { + if v == nil { + return nil + } + return v.Prefixes + }).(pulumi.StringArrayOutput) +} + +// StripPrefixRegex holds the strip prefix regex middleware configuration. This middleware removes the matching prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/ +type MiddlewareSpecStripPrefixRegex struct { + // Regex defines the regular expression to match the path prefix from the request URL. + Regex []string `pulumi:"regex"` +} + +// MiddlewareSpecStripPrefixRegexInput is an input type that accepts MiddlewareSpecStripPrefixRegexArgs and MiddlewareSpecStripPrefixRegexOutput values. +// You can construct a concrete instance of `MiddlewareSpecStripPrefixRegexInput` via: +// +// MiddlewareSpecStripPrefixRegexArgs{...} +type MiddlewareSpecStripPrefixRegexInput interface { + pulumi.Input + + ToMiddlewareSpecStripPrefixRegexOutput() MiddlewareSpecStripPrefixRegexOutput + ToMiddlewareSpecStripPrefixRegexOutputWithContext(context.Context) MiddlewareSpecStripPrefixRegexOutput +} + +// StripPrefixRegex holds the strip prefix regex middleware configuration. This middleware removes the matching prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/ +type MiddlewareSpecStripPrefixRegexArgs struct { + // Regex defines the regular expression to match the path prefix from the request URL. + Regex pulumi.StringArrayInput `pulumi:"regex"` +} + +func (MiddlewareSpecStripPrefixRegexArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecStripPrefixRegex)(nil)).Elem() +} + +func (i MiddlewareSpecStripPrefixRegexArgs) ToMiddlewareSpecStripPrefixRegexOutput() MiddlewareSpecStripPrefixRegexOutput { + return i.ToMiddlewareSpecStripPrefixRegexOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecStripPrefixRegexArgs) ToMiddlewareSpecStripPrefixRegexOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixRegexOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecStripPrefixRegexOutput) +} + +func (i MiddlewareSpecStripPrefixRegexArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecStripPrefixRegex] { + return pulumix.Output[MiddlewareSpecStripPrefixRegex]{ + OutputState: i.ToMiddlewareSpecStripPrefixRegexOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareSpecStripPrefixRegexArgs) ToMiddlewareSpecStripPrefixRegexPtrOutput() MiddlewareSpecStripPrefixRegexPtrOutput { + return i.ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareSpecStripPrefixRegexArgs) ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixRegexPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecStripPrefixRegexOutput).ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(ctx) +} + +// MiddlewareSpecStripPrefixRegexPtrInput is an input type that accepts MiddlewareSpecStripPrefixRegexArgs, MiddlewareSpecStripPrefixRegexPtr and MiddlewareSpecStripPrefixRegexPtrOutput values. +// You can construct a concrete instance of `MiddlewareSpecStripPrefixRegexPtrInput` via: +// +// MiddlewareSpecStripPrefixRegexArgs{...} +// +// or: +// +// nil +type MiddlewareSpecStripPrefixRegexPtrInput interface { + pulumi.Input + + ToMiddlewareSpecStripPrefixRegexPtrOutput() MiddlewareSpecStripPrefixRegexPtrOutput + ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(context.Context) MiddlewareSpecStripPrefixRegexPtrOutput +} + +type middlewareSpecStripPrefixRegexPtrType MiddlewareSpecStripPrefixRegexArgs + +func MiddlewareSpecStripPrefixRegexPtr(v *MiddlewareSpecStripPrefixRegexArgs) MiddlewareSpecStripPrefixRegexPtrInput { + return (*middlewareSpecStripPrefixRegexPtrType)(v) +} + +func (*middlewareSpecStripPrefixRegexPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecStripPrefixRegex)(nil)).Elem() +} + +func (i *middlewareSpecStripPrefixRegexPtrType) ToMiddlewareSpecStripPrefixRegexPtrOutput() MiddlewareSpecStripPrefixRegexPtrOutput { + return i.ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(context.Background()) +} + +func (i *middlewareSpecStripPrefixRegexPtrType) ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixRegexPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareSpecStripPrefixRegexPtrOutput) +} + +func (i *middlewareSpecStripPrefixRegexPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecStripPrefixRegex] { + return pulumix.Output[*MiddlewareSpecStripPrefixRegex]{ + OutputState: i.ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(ctx).OutputState, + } +} + +// StripPrefixRegex holds the strip prefix regex middleware configuration. This middleware removes the matching prefixes from the URL path. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/stripprefixregex/ +type MiddlewareSpecStripPrefixRegexOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecStripPrefixRegexOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareSpecStripPrefixRegex)(nil)).Elem() +} + +func (o MiddlewareSpecStripPrefixRegexOutput) ToMiddlewareSpecStripPrefixRegexOutput() MiddlewareSpecStripPrefixRegexOutput { + return o +} + +func (o MiddlewareSpecStripPrefixRegexOutput) ToMiddlewareSpecStripPrefixRegexOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixRegexOutput { + return o +} + +func (o MiddlewareSpecStripPrefixRegexOutput) ToMiddlewareSpecStripPrefixRegexPtrOutput() MiddlewareSpecStripPrefixRegexPtrOutput { + return o.ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareSpecStripPrefixRegexOutput) ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixRegexPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareSpecStripPrefixRegex) *MiddlewareSpecStripPrefixRegex { + return &v + }).(MiddlewareSpecStripPrefixRegexPtrOutput) +} + +func (o MiddlewareSpecStripPrefixRegexOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareSpecStripPrefixRegex] { + return pulumix.Output[MiddlewareSpecStripPrefixRegex]{ + OutputState: o.OutputState, + } +} + +// Regex defines the regular expression to match the path prefix from the request URL. +func (o MiddlewareSpecStripPrefixRegexOutput) Regex() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareSpecStripPrefixRegex) []string { return v.Regex }).(pulumi.StringArrayOutput) +} + +type MiddlewareSpecStripPrefixRegexPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareSpecStripPrefixRegexPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareSpecStripPrefixRegex)(nil)).Elem() +} + +func (o MiddlewareSpecStripPrefixRegexPtrOutput) ToMiddlewareSpecStripPrefixRegexPtrOutput() MiddlewareSpecStripPrefixRegexPtrOutput { + return o +} + +func (o MiddlewareSpecStripPrefixRegexPtrOutput) ToMiddlewareSpecStripPrefixRegexPtrOutputWithContext(ctx context.Context) MiddlewareSpecStripPrefixRegexPtrOutput { + return o +} + +func (o MiddlewareSpecStripPrefixRegexPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareSpecStripPrefixRegex] { + return pulumix.Output[*MiddlewareSpecStripPrefixRegex]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareSpecStripPrefixRegexPtrOutput) Elem() MiddlewareSpecStripPrefixRegexOutput { + return o.ApplyT(func(v *MiddlewareSpecStripPrefixRegex) MiddlewareSpecStripPrefixRegex { + if v != nil { + return *v + } + var ret MiddlewareSpecStripPrefixRegex + return ret + }).(MiddlewareSpecStripPrefixRegexOutput) +} + +// Regex defines the regular expression to match the path prefix from the request URL. +func (o MiddlewareSpecStripPrefixRegexPtrOutput) Regex() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareSpecStripPrefixRegex) []string { + if v == nil { + return nil + } + return v.Regex + }).(pulumi.StringArrayOutput) +} + +// MiddlewareTCP is the CRD implementation of a Traefik TCP middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/overview/ +type MiddlewareTCPType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. + Spec MiddlewareTCPSpec `pulumi:"spec"` +} + +type MiddlewareTCPMetadata struct { +} + +// MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. +type MiddlewareTCPSpec struct { + // InFlightConn defines the InFlightConn middleware configuration. + InFlightConn *MiddlewareTCPSpecInFlightConn `pulumi:"inFlightConn"` + // IPWhiteList defines the IPWhiteList middleware configuration. + IpWhiteList *MiddlewareTCPSpecIpWhiteList `pulumi:"ipWhiteList"` +} + +// MiddlewareTCPSpecInput is an input type that accepts MiddlewareTCPSpecArgs and MiddlewareTCPSpecOutput values. +// You can construct a concrete instance of `MiddlewareTCPSpecInput` via: +// +// MiddlewareTCPSpecArgs{...} +type MiddlewareTCPSpecInput interface { + pulumi.Input + + ToMiddlewareTCPSpecOutput() MiddlewareTCPSpecOutput + ToMiddlewareTCPSpecOutputWithContext(context.Context) MiddlewareTCPSpecOutput +} + +// MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. +type MiddlewareTCPSpecArgs struct { + // InFlightConn defines the InFlightConn middleware configuration. + InFlightConn MiddlewareTCPSpecInFlightConnPtrInput `pulumi:"inFlightConn"` + // IPWhiteList defines the IPWhiteList middleware configuration. + IpWhiteList MiddlewareTCPSpecIpWhiteListPtrInput `pulumi:"ipWhiteList"` +} + +func (MiddlewareTCPSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareTCPSpec)(nil)).Elem() +} + +func (i MiddlewareTCPSpecArgs) ToMiddlewareTCPSpecOutput() MiddlewareTCPSpecOutput { + return i.ToMiddlewareTCPSpecOutputWithContext(context.Background()) +} + +func (i MiddlewareTCPSpecArgs) ToMiddlewareTCPSpecOutputWithContext(ctx context.Context) MiddlewareTCPSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPSpecOutput) +} + +func (i MiddlewareTCPSpecArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareTCPSpec] { + return pulumix.Output[MiddlewareTCPSpec]{ + OutputState: i.ToMiddlewareTCPSpecOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareTCPSpecArgs) ToMiddlewareTCPSpecPtrOutput() MiddlewareTCPSpecPtrOutput { + return i.ToMiddlewareTCPSpecPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareTCPSpecArgs) ToMiddlewareTCPSpecPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPSpecOutput).ToMiddlewareTCPSpecPtrOutputWithContext(ctx) +} + +// MiddlewareTCPSpecPtrInput is an input type that accepts MiddlewareTCPSpecArgs, MiddlewareTCPSpecPtr and MiddlewareTCPSpecPtrOutput values. +// You can construct a concrete instance of `MiddlewareTCPSpecPtrInput` via: +// +// MiddlewareTCPSpecArgs{...} +// +// or: +// +// nil +type MiddlewareTCPSpecPtrInput interface { + pulumi.Input + + ToMiddlewareTCPSpecPtrOutput() MiddlewareTCPSpecPtrOutput + ToMiddlewareTCPSpecPtrOutputWithContext(context.Context) MiddlewareTCPSpecPtrOutput +} + +type middlewareTCPSpecPtrType MiddlewareTCPSpecArgs + +func MiddlewareTCPSpecPtr(v *MiddlewareTCPSpecArgs) MiddlewareTCPSpecPtrInput { + return (*middlewareTCPSpecPtrType)(v) +} + +func (*middlewareTCPSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareTCPSpec)(nil)).Elem() +} + +func (i *middlewareTCPSpecPtrType) ToMiddlewareTCPSpecPtrOutput() MiddlewareTCPSpecPtrOutput { + return i.ToMiddlewareTCPSpecPtrOutputWithContext(context.Background()) +} + +func (i *middlewareTCPSpecPtrType) ToMiddlewareTCPSpecPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPSpecPtrOutput) +} + +func (i *middlewareTCPSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareTCPSpec] { + return pulumix.Output[*MiddlewareTCPSpec]{ + OutputState: i.ToMiddlewareTCPSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// MiddlewareTCPSpec defines the desired state of a MiddlewareTCP. +type MiddlewareTCPSpecOutput struct{ *pulumi.OutputState } + +func (MiddlewareTCPSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareTCPSpec)(nil)).Elem() +} + +func (o MiddlewareTCPSpecOutput) ToMiddlewareTCPSpecOutput() MiddlewareTCPSpecOutput { + return o +} + +func (o MiddlewareTCPSpecOutput) ToMiddlewareTCPSpecOutputWithContext(ctx context.Context) MiddlewareTCPSpecOutput { + return o +} + +func (o MiddlewareTCPSpecOutput) ToMiddlewareTCPSpecPtrOutput() MiddlewareTCPSpecPtrOutput { + return o.ToMiddlewareTCPSpecPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareTCPSpecOutput) ToMiddlewareTCPSpecPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareTCPSpec) *MiddlewareTCPSpec { + return &v + }).(MiddlewareTCPSpecPtrOutput) +} + +func (o MiddlewareTCPSpecOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareTCPSpec] { + return pulumix.Output[MiddlewareTCPSpec]{ + OutputState: o.OutputState, + } +} + +// InFlightConn defines the InFlightConn middleware configuration. +func (o MiddlewareTCPSpecOutput) InFlightConn() MiddlewareTCPSpecInFlightConnPtrOutput { + return o.ApplyT(func(v MiddlewareTCPSpec) *MiddlewareTCPSpecInFlightConn { return v.InFlightConn }).(MiddlewareTCPSpecInFlightConnPtrOutput) +} + +// IPWhiteList defines the IPWhiteList middleware configuration. +func (o MiddlewareTCPSpecOutput) IpWhiteList() MiddlewareTCPSpecIpWhiteListPtrOutput { + return o.ApplyT(func(v MiddlewareTCPSpec) *MiddlewareTCPSpecIpWhiteList { return v.IpWhiteList }).(MiddlewareTCPSpecIpWhiteListPtrOutput) +} + +type MiddlewareTCPSpecPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareTCPSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareTCPSpec)(nil)).Elem() +} + +func (o MiddlewareTCPSpecPtrOutput) ToMiddlewareTCPSpecPtrOutput() MiddlewareTCPSpecPtrOutput { + return o +} + +func (o MiddlewareTCPSpecPtrOutput) ToMiddlewareTCPSpecPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecPtrOutput { + return o +} + +func (o MiddlewareTCPSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareTCPSpec] { + return pulumix.Output[*MiddlewareTCPSpec]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareTCPSpecPtrOutput) Elem() MiddlewareTCPSpecOutput { + return o.ApplyT(func(v *MiddlewareTCPSpec) MiddlewareTCPSpec { + if v != nil { + return *v + } + var ret MiddlewareTCPSpec + return ret + }).(MiddlewareTCPSpecOutput) +} + +// InFlightConn defines the InFlightConn middleware configuration. +func (o MiddlewareTCPSpecPtrOutput) InFlightConn() MiddlewareTCPSpecInFlightConnPtrOutput { + return o.ApplyT(func(v *MiddlewareTCPSpec) *MiddlewareTCPSpecInFlightConn { + if v == nil { + return nil + } + return v.InFlightConn + }).(MiddlewareTCPSpecInFlightConnPtrOutput) +} + +// IPWhiteList defines the IPWhiteList middleware configuration. +func (o MiddlewareTCPSpecPtrOutput) IpWhiteList() MiddlewareTCPSpecIpWhiteListPtrOutput { + return o.ApplyT(func(v *MiddlewareTCPSpec) *MiddlewareTCPSpecIpWhiteList { + if v == nil { + return nil + } + return v.IpWhiteList + }).(MiddlewareTCPSpecIpWhiteListPtrOutput) +} + +// InFlightConn defines the InFlightConn middleware configuration. +type MiddlewareTCPSpecInFlightConn struct { + // Amount defines the maximum amount of allowed simultaneous connections. The middleware closes the connection if there are already amount connections opened. + Amount *int `pulumi:"amount"` +} + +// MiddlewareTCPSpecInFlightConnInput is an input type that accepts MiddlewareTCPSpecInFlightConnArgs and MiddlewareTCPSpecInFlightConnOutput values. +// You can construct a concrete instance of `MiddlewareTCPSpecInFlightConnInput` via: +// +// MiddlewareTCPSpecInFlightConnArgs{...} +type MiddlewareTCPSpecInFlightConnInput interface { + pulumi.Input + + ToMiddlewareTCPSpecInFlightConnOutput() MiddlewareTCPSpecInFlightConnOutput + ToMiddlewareTCPSpecInFlightConnOutputWithContext(context.Context) MiddlewareTCPSpecInFlightConnOutput +} + +// InFlightConn defines the InFlightConn middleware configuration. +type MiddlewareTCPSpecInFlightConnArgs struct { + // Amount defines the maximum amount of allowed simultaneous connections. The middleware closes the connection if there are already amount connections opened. + Amount pulumi.IntPtrInput `pulumi:"amount"` +} + +func (MiddlewareTCPSpecInFlightConnArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareTCPSpecInFlightConn)(nil)).Elem() +} + +func (i MiddlewareTCPSpecInFlightConnArgs) ToMiddlewareTCPSpecInFlightConnOutput() MiddlewareTCPSpecInFlightConnOutput { + return i.ToMiddlewareTCPSpecInFlightConnOutputWithContext(context.Background()) +} + +func (i MiddlewareTCPSpecInFlightConnArgs) ToMiddlewareTCPSpecInFlightConnOutputWithContext(ctx context.Context) MiddlewareTCPSpecInFlightConnOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPSpecInFlightConnOutput) +} + +func (i MiddlewareTCPSpecInFlightConnArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareTCPSpecInFlightConn] { + return pulumix.Output[MiddlewareTCPSpecInFlightConn]{ + OutputState: i.ToMiddlewareTCPSpecInFlightConnOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareTCPSpecInFlightConnArgs) ToMiddlewareTCPSpecInFlightConnPtrOutput() MiddlewareTCPSpecInFlightConnPtrOutput { + return i.ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareTCPSpecInFlightConnArgs) ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecInFlightConnPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPSpecInFlightConnOutput).ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(ctx) +} + +// MiddlewareTCPSpecInFlightConnPtrInput is an input type that accepts MiddlewareTCPSpecInFlightConnArgs, MiddlewareTCPSpecInFlightConnPtr and MiddlewareTCPSpecInFlightConnPtrOutput values. +// You can construct a concrete instance of `MiddlewareTCPSpecInFlightConnPtrInput` via: +// +// MiddlewareTCPSpecInFlightConnArgs{...} +// +// or: +// +// nil +type MiddlewareTCPSpecInFlightConnPtrInput interface { + pulumi.Input + + ToMiddlewareTCPSpecInFlightConnPtrOutput() MiddlewareTCPSpecInFlightConnPtrOutput + ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(context.Context) MiddlewareTCPSpecInFlightConnPtrOutput +} + +type middlewareTCPSpecInFlightConnPtrType MiddlewareTCPSpecInFlightConnArgs + +func MiddlewareTCPSpecInFlightConnPtr(v *MiddlewareTCPSpecInFlightConnArgs) MiddlewareTCPSpecInFlightConnPtrInput { + return (*middlewareTCPSpecInFlightConnPtrType)(v) +} + +func (*middlewareTCPSpecInFlightConnPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareTCPSpecInFlightConn)(nil)).Elem() +} + +func (i *middlewareTCPSpecInFlightConnPtrType) ToMiddlewareTCPSpecInFlightConnPtrOutput() MiddlewareTCPSpecInFlightConnPtrOutput { + return i.ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(context.Background()) +} + +func (i *middlewareTCPSpecInFlightConnPtrType) ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecInFlightConnPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPSpecInFlightConnPtrOutput) +} + +func (i *middlewareTCPSpecInFlightConnPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareTCPSpecInFlightConn] { + return pulumix.Output[*MiddlewareTCPSpecInFlightConn]{ + OutputState: i.ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(ctx).OutputState, + } +} + +// InFlightConn defines the InFlightConn middleware configuration. +type MiddlewareTCPSpecInFlightConnOutput struct{ *pulumi.OutputState } + +func (MiddlewareTCPSpecInFlightConnOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareTCPSpecInFlightConn)(nil)).Elem() +} + +func (o MiddlewareTCPSpecInFlightConnOutput) ToMiddlewareTCPSpecInFlightConnOutput() MiddlewareTCPSpecInFlightConnOutput { + return o +} + +func (o MiddlewareTCPSpecInFlightConnOutput) ToMiddlewareTCPSpecInFlightConnOutputWithContext(ctx context.Context) MiddlewareTCPSpecInFlightConnOutput { + return o +} + +func (o MiddlewareTCPSpecInFlightConnOutput) ToMiddlewareTCPSpecInFlightConnPtrOutput() MiddlewareTCPSpecInFlightConnPtrOutput { + return o.ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareTCPSpecInFlightConnOutput) ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecInFlightConnPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareTCPSpecInFlightConn) *MiddlewareTCPSpecInFlightConn { + return &v + }).(MiddlewareTCPSpecInFlightConnPtrOutput) +} + +func (o MiddlewareTCPSpecInFlightConnOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareTCPSpecInFlightConn] { + return pulumix.Output[MiddlewareTCPSpecInFlightConn]{ + OutputState: o.OutputState, + } +} + +// Amount defines the maximum amount of allowed simultaneous connections. The middleware closes the connection if there are already amount connections opened. +func (o MiddlewareTCPSpecInFlightConnOutput) Amount() pulumi.IntPtrOutput { + return o.ApplyT(func(v MiddlewareTCPSpecInFlightConn) *int { return v.Amount }).(pulumi.IntPtrOutput) +} + +type MiddlewareTCPSpecInFlightConnPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareTCPSpecInFlightConnPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareTCPSpecInFlightConn)(nil)).Elem() +} + +func (o MiddlewareTCPSpecInFlightConnPtrOutput) ToMiddlewareTCPSpecInFlightConnPtrOutput() MiddlewareTCPSpecInFlightConnPtrOutput { + return o +} + +func (o MiddlewareTCPSpecInFlightConnPtrOutput) ToMiddlewareTCPSpecInFlightConnPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecInFlightConnPtrOutput { + return o +} + +func (o MiddlewareTCPSpecInFlightConnPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareTCPSpecInFlightConn] { + return pulumix.Output[*MiddlewareTCPSpecInFlightConn]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareTCPSpecInFlightConnPtrOutput) Elem() MiddlewareTCPSpecInFlightConnOutput { + return o.ApplyT(func(v *MiddlewareTCPSpecInFlightConn) MiddlewareTCPSpecInFlightConn { + if v != nil { + return *v + } + var ret MiddlewareTCPSpecInFlightConn + return ret + }).(MiddlewareTCPSpecInFlightConnOutput) +} + +// Amount defines the maximum amount of allowed simultaneous connections. The middleware closes the connection if there are already amount connections opened. +func (o MiddlewareTCPSpecInFlightConnPtrOutput) Amount() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MiddlewareTCPSpecInFlightConn) *int { + if v == nil { + return nil + } + return v.Amount + }).(pulumi.IntPtrOutput) +} + +// IPWhiteList defines the IPWhiteList middleware configuration. +type MiddlewareTCPSpecIpWhiteList struct { + // SourceRange defines the allowed IPs (or ranges of allowed IPs by using CIDR notation). + SourceRange []string `pulumi:"sourceRange"` +} + +// MiddlewareTCPSpecIpWhiteListInput is an input type that accepts MiddlewareTCPSpecIpWhiteListArgs and MiddlewareTCPSpecIpWhiteListOutput values. +// You can construct a concrete instance of `MiddlewareTCPSpecIpWhiteListInput` via: +// +// MiddlewareTCPSpecIpWhiteListArgs{...} +type MiddlewareTCPSpecIpWhiteListInput interface { + pulumi.Input + + ToMiddlewareTCPSpecIpWhiteListOutput() MiddlewareTCPSpecIpWhiteListOutput + ToMiddlewareTCPSpecIpWhiteListOutputWithContext(context.Context) MiddlewareTCPSpecIpWhiteListOutput +} + +// IPWhiteList defines the IPWhiteList middleware configuration. +type MiddlewareTCPSpecIpWhiteListArgs struct { + // SourceRange defines the allowed IPs (or ranges of allowed IPs by using CIDR notation). + SourceRange pulumi.StringArrayInput `pulumi:"sourceRange"` +} + +func (MiddlewareTCPSpecIpWhiteListArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareTCPSpecIpWhiteList)(nil)).Elem() +} + +func (i MiddlewareTCPSpecIpWhiteListArgs) ToMiddlewareTCPSpecIpWhiteListOutput() MiddlewareTCPSpecIpWhiteListOutput { + return i.ToMiddlewareTCPSpecIpWhiteListOutputWithContext(context.Background()) +} + +func (i MiddlewareTCPSpecIpWhiteListArgs) ToMiddlewareTCPSpecIpWhiteListOutputWithContext(ctx context.Context) MiddlewareTCPSpecIpWhiteListOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPSpecIpWhiteListOutput) +} + +func (i MiddlewareTCPSpecIpWhiteListArgs) ToOutput(ctx context.Context) pulumix.Output[MiddlewareTCPSpecIpWhiteList] { + return pulumix.Output[MiddlewareTCPSpecIpWhiteList]{ + OutputState: i.ToMiddlewareTCPSpecIpWhiteListOutputWithContext(ctx).OutputState, + } +} + +func (i MiddlewareTCPSpecIpWhiteListArgs) ToMiddlewareTCPSpecIpWhiteListPtrOutput() MiddlewareTCPSpecIpWhiteListPtrOutput { + return i.ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(context.Background()) +} + +func (i MiddlewareTCPSpecIpWhiteListArgs) ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecIpWhiteListPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPSpecIpWhiteListOutput).ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(ctx) +} + +// MiddlewareTCPSpecIpWhiteListPtrInput is an input type that accepts MiddlewareTCPSpecIpWhiteListArgs, MiddlewareTCPSpecIpWhiteListPtr and MiddlewareTCPSpecIpWhiteListPtrOutput values. +// You can construct a concrete instance of `MiddlewareTCPSpecIpWhiteListPtrInput` via: +// +// MiddlewareTCPSpecIpWhiteListArgs{...} +// +// or: +// +// nil +type MiddlewareTCPSpecIpWhiteListPtrInput interface { + pulumi.Input + + ToMiddlewareTCPSpecIpWhiteListPtrOutput() MiddlewareTCPSpecIpWhiteListPtrOutput + ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(context.Context) MiddlewareTCPSpecIpWhiteListPtrOutput +} + +type middlewareTCPSpecIpWhiteListPtrType MiddlewareTCPSpecIpWhiteListArgs + +func MiddlewareTCPSpecIpWhiteListPtr(v *MiddlewareTCPSpecIpWhiteListArgs) MiddlewareTCPSpecIpWhiteListPtrInput { + return (*middlewareTCPSpecIpWhiteListPtrType)(v) +} + +func (*middlewareTCPSpecIpWhiteListPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareTCPSpecIpWhiteList)(nil)).Elem() +} + +func (i *middlewareTCPSpecIpWhiteListPtrType) ToMiddlewareTCPSpecIpWhiteListPtrOutput() MiddlewareTCPSpecIpWhiteListPtrOutput { + return i.ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(context.Background()) +} + +func (i *middlewareTCPSpecIpWhiteListPtrType) ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecIpWhiteListPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MiddlewareTCPSpecIpWhiteListPtrOutput) +} + +func (i *middlewareTCPSpecIpWhiteListPtrType) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareTCPSpecIpWhiteList] { + return pulumix.Output[*MiddlewareTCPSpecIpWhiteList]{ + OutputState: i.ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(ctx).OutputState, + } +} + +// IPWhiteList defines the IPWhiteList middleware configuration. +type MiddlewareTCPSpecIpWhiteListOutput struct{ *pulumi.OutputState } + +func (MiddlewareTCPSpecIpWhiteListOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MiddlewareTCPSpecIpWhiteList)(nil)).Elem() +} + +func (o MiddlewareTCPSpecIpWhiteListOutput) ToMiddlewareTCPSpecIpWhiteListOutput() MiddlewareTCPSpecIpWhiteListOutput { + return o +} + +func (o MiddlewareTCPSpecIpWhiteListOutput) ToMiddlewareTCPSpecIpWhiteListOutputWithContext(ctx context.Context) MiddlewareTCPSpecIpWhiteListOutput { + return o +} + +func (o MiddlewareTCPSpecIpWhiteListOutput) ToMiddlewareTCPSpecIpWhiteListPtrOutput() MiddlewareTCPSpecIpWhiteListPtrOutput { + return o.ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(context.Background()) +} + +func (o MiddlewareTCPSpecIpWhiteListOutput) ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecIpWhiteListPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MiddlewareTCPSpecIpWhiteList) *MiddlewareTCPSpecIpWhiteList { + return &v + }).(MiddlewareTCPSpecIpWhiteListPtrOutput) +} + +func (o MiddlewareTCPSpecIpWhiteListOutput) ToOutput(ctx context.Context) pulumix.Output[MiddlewareTCPSpecIpWhiteList] { + return pulumix.Output[MiddlewareTCPSpecIpWhiteList]{ + OutputState: o.OutputState, + } +} + +// SourceRange defines the allowed IPs (or ranges of allowed IPs by using CIDR notation). +func (o MiddlewareTCPSpecIpWhiteListOutput) SourceRange() pulumi.StringArrayOutput { + return o.ApplyT(func(v MiddlewareTCPSpecIpWhiteList) []string { return v.SourceRange }).(pulumi.StringArrayOutput) +} + +type MiddlewareTCPSpecIpWhiteListPtrOutput struct{ *pulumi.OutputState } + +func (MiddlewareTCPSpecIpWhiteListPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MiddlewareTCPSpecIpWhiteList)(nil)).Elem() +} + +func (o MiddlewareTCPSpecIpWhiteListPtrOutput) ToMiddlewareTCPSpecIpWhiteListPtrOutput() MiddlewareTCPSpecIpWhiteListPtrOutput { + return o +} + +func (o MiddlewareTCPSpecIpWhiteListPtrOutput) ToMiddlewareTCPSpecIpWhiteListPtrOutputWithContext(ctx context.Context) MiddlewareTCPSpecIpWhiteListPtrOutput { + return o +} + +func (o MiddlewareTCPSpecIpWhiteListPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*MiddlewareTCPSpecIpWhiteList] { + return pulumix.Output[*MiddlewareTCPSpecIpWhiteList]{ + OutputState: o.OutputState, + } +} + +func (o MiddlewareTCPSpecIpWhiteListPtrOutput) Elem() MiddlewareTCPSpecIpWhiteListOutput { + return o.ApplyT(func(v *MiddlewareTCPSpecIpWhiteList) MiddlewareTCPSpecIpWhiteList { + if v != nil { + return *v + } + var ret MiddlewareTCPSpecIpWhiteList + return ret + }).(MiddlewareTCPSpecIpWhiteListOutput) +} + +// SourceRange defines the allowed IPs (or ranges of allowed IPs by using CIDR notation). +func (o MiddlewareTCPSpecIpWhiteListPtrOutput) SourceRange() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MiddlewareTCPSpecIpWhiteList) []string { + if v == nil { + return nil + } + return v.SourceRange + }).(pulumi.StringArrayOutput) +} + +// ServersTransport is the CRD implementation of a ServersTransport. If no serversTransport is specified, the default@internal will be used. The default@internal serversTransport is created from the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#serverstransport_1 +type ServersTransportType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // ServersTransportSpec defines the desired state of a ServersTransport. + Spec ServersTransportSpec `pulumi:"spec"` +} + +type ServersTransportMetadata struct { +} + +// ServersTransportSpec defines the desired state of a ServersTransport. +type ServersTransportSpec struct { + // CertificatesSecrets defines a list of secret storing client certificates for mTLS. + CertificatesSecrets []string `pulumi:"certificatesSecrets"` + // DisableHTTP2 disables HTTP/2 for connections with backend servers. + DisableHTTP2 *bool `pulumi:"disableHTTP2"` + // ForwardingTimeouts defines the timeouts for requests forwarded to the backend servers. + ForwardingTimeouts *ServersTransportSpecForwardingTimeouts `pulumi:"forwardingTimeouts"` + // InsecureSkipVerify disables SSL certificate verification. + InsecureSkipVerify *bool `pulumi:"insecureSkipVerify"` + // MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host. + MaxIdleConnsPerHost *int `pulumi:"maxIdleConnsPerHost"` + // PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification. + PeerCertURI *string `pulumi:"peerCertURI"` + // RootCAsSecrets defines a list of CA secret used to validate self-signed certificate. + RootCAsSecrets []string `pulumi:"rootCAsSecrets"` + // ServerName defines the server name used to contact the server. + ServerName *string `pulumi:"serverName"` +} + +// ServersTransportSpecInput is an input type that accepts ServersTransportSpecArgs and ServersTransportSpecOutput values. +// You can construct a concrete instance of `ServersTransportSpecInput` via: +// +// ServersTransportSpecArgs{...} +type ServersTransportSpecInput interface { + pulumi.Input + + ToServersTransportSpecOutput() ServersTransportSpecOutput + ToServersTransportSpecOutputWithContext(context.Context) ServersTransportSpecOutput +} + +// ServersTransportSpec defines the desired state of a ServersTransport. +type ServersTransportSpecArgs struct { + // CertificatesSecrets defines a list of secret storing client certificates for mTLS. + CertificatesSecrets pulumi.StringArrayInput `pulumi:"certificatesSecrets"` + // DisableHTTP2 disables HTTP/2 for connections with backend servers. + DisableHTTP2 pulumi.BoolPtrInput `pulumi:"disableHTTP2"` + // ForwardingTimeouts defines the timeouts for requests forwarded to the backend servers. + ForwardingTimeouts ServersTransportSpecForwardingTimeoutsPtrInput `pulumi:"forwardingTimeouts"` + // InsecureSkipVerify disables SSL certificate verification. + InsecureSkipVerify pulumi.BoolPtrInput `pulumi:"insecureSkipVerify"` + // MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host. + MaxIdleConnsPerHost pulumi.IntPtrInput `pulumi:"maxIdleConnsPerHost"` + // PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification. + PeerCertURI pulumi.StringPtrInput `pulumi:"peerCertURI"` + // RootCAsSecrets defines a list of CA secret used to validate self-signed certificate. + RootCAsSecrets pulumi.StringArrayInput `pulumi:"rootCAsSecrets"` + // ServerName defines the server name used to contact the server. + ServerName pulumi.StringPtrInput `pulumi:"serverName"` +} + +func (ServersTransportSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportSpec)(nil)).Elem() +} + +func (i ServersTransportSpecArgs) ToServersTransportSpecOutput() ServersTransportSpecOutput { + return i.ToServersTransportSpecOutputWithContext(context.Background()) +} + +func (i ServersTransportSpecArgs) ToServersTransportSpecOutputWithContext(ctx context.Context) ServersTransportSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportSpecOutput) +} + +func (i ServersTransportSpecArgs) ToOutput(ctx context.Context) pulumix.Output[ServersTransportSpec] { + return pulumix.Output[ServersTransportSpec]{ + OutputState: i.ToServersTransportSpecOutputWithContext(ctx).OutputState, + } +} + +func (i ServersTransportSpecArgs) ToServersTransportSpecPtrOutput() ServersTransportSpecPtrOutput { + return i.ToServersTransportSpecPtrOutputWithContext(context.Background()) +} + +func (i ServersTransportSpecArgs) ToServersTransportSpecPtrOutputWithContext(ctx context.Context) ServersTransportSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportSpecOutput).ToServersTransportSpecPtrOutputWithContext(ctx) +} + +// ServersTransportSpecPtrInput is an input type that accepts ServersTransportSpecArgs, ServersTransportSpecPtr and ServersTransportSpecPtrOutput values. +// You can construct a concrete instance of `ServersTransportSpecPtrInput` via: +// +// ServersTransportSpecArgs{...} +// +// or: +// +// nil +type ServersTransportSpecPtrInput interface { + pulumi.Input + + ToServersTransportSpecPtrOutput() ServersTransportSpecPtrOutput + ToServersTransportSpecPtrOutputWithContext(context.Context) ServersTransportSpecPtrOutput +} + +type serversTransportSpecPtrType ServersTransportSpecArgs + +func ServersTransportSpecPtr(v *ServersTransportSpecArgs) ServersTransportSpecPtrInput { + return (*serversTransportSpecPtrType)(v) +} + +func (*serversTransportSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportSpec)(nil)).Elem() +} + +func (i *serversTransportSpecPtrType) ToServersTransportSpecPtrOutput() ServersTransportSpecPtrOutput { + return i.ToServersTransportSpecPtrOutputWithContext(context.Background()) +} + +func (i *serversTransportSpecPtrType) ToServersTransportSpecPtrOutputWithContext(ctx context.Context) ServersTransportSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportSpecPtrOutput) +} + +func (i *serversTransportSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportSpec] { + return pulumix.Output[*ServersTransportSpec]{ + OutputState: i.ToServersTransportSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// ServersTransportSpec defines the desired state of a ServersTransport. +type ServersTransportSpecOutput struct{ *pulumi.OutputState } + +func (ServersTransportSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportSpec)(nil)).Elem() +} + +func (o ServersTransportSpecOutput) ToServersTransportSpecOutput() ServersTransportSpecOutput { + return o +} + +func (o ServersTransportSpecOutput) ToServersTransportSpecOutputWithContext(ctx context.Context) ServersTransportSpecOutput { + return o +} + +func (o ServersTransportSpecOutput) ToServersTransportSpecPtrOutput() ServersTransportSpecPtrOutput { + return o.ToServersTransportSpecPtrOutputWithContext(context.Background()) +} + +func (o ServersTransportSpecOutput) ToServersTransportSpecPtrOutputWithContext(ctx context.Context) ServersTransportSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServersTransportSpec) *ServersTransportSpec { + return &v + }).(ServersTransportSpecPtrOutput) +} + +func (o ServersTransportSpecOutput) ToOutput(ctx context.Context) pulumix.Output[ServersTransportSpec] { + return pulumix.Output[ServersTransportSpec]{ + OutputState: o.OutputState, + } +} + +// CertificatesSecrets defines a list of secret storing client certificates for mTLS. +func (o ServersTransportSpecOutput) CertificatesSecrets() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServersTransportSpec) []string { return v.CertificatesSecrets }).(pulumi.StringArrayOutput) +} + +// DisableHTTP2 disables HTTP/2 for connections with backend servers. +func (o ServersTransportSpecOutput) DisableHTTP2() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServersTransportSpec) *bool { return v.DisableHTTP2 }).(pulumi.BoolPtrOutput) +} + +// ForwardingTimeouts defines the timeouts for requests forwarded to the backend servers. +func (o ServersTransportSpecOutput) ForwardingTimeouts() ServersTransportSpecForwardingTimeoutsPtrOutput { + return o.ApplyT(func(v ServersTransportSpec) *ServersTransportSpecForwardingTimeouts { return v.ForwardingTimeouts }).(ServersTransportSpecForwardingTimeoutsPtrOutput) +} + +// InsecureSkipVerify disables SSL certificate verification. +func (o ServersTransportSpecOutput) InsecureSkipVerify() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServersTransportSpec) *bool { return v.InsecureSkipVerify }).(pulumi.BoolPtrOutput) +} + +// MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host. +func (o ServersTransportSpecOutput) MaxIdleConnsPerHost() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServersTransportSpec) *int { return v.MaxIdleConnsPerHost }).(pulumi.IntPtrOutput) +} + +// PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification. +func (o ServersTransportSpecOutput) PeerCertURI() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServersTransportSpec) *string { return v.PeerCertURI }).(pulumi.StringPtrOutput) +} + +// RootCAsSecrets defines a list of CA secret used to validate self-signed certificate. +func (o ServersTransportSpecOutput) RootCAsSecrets() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServersTransportSpec) []string { return v.RootCAsSecrets }).(pulumi.StringArrayOutput) +} + +// ServerName defines the server name used to contact the server. +func (o ServersTransportSpecOutput) ServerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServersTransportSpec) *string { return v.ServerName }).(pulumi.StringPtrOutput) +} + +type ServersTransportSpecPtrOutput struct{ *pulumi.OutputState } + +func (ServersTransportSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportSpec)(nil)).Elem() +} + +func (o ServersTransportSpecPtrOutput) ToServersTransportSpecPtrOutput() ServersTransportSpecPtrOutput { + return o +} + +func (o ServersTransportSpecPtrOutput) ToServersTransportSpecPtrOutputWithContext(ctx context.Context) ServersTransportSpecPtrOutput { + return o +} + +func (o ServersTransportSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportSpec] { + return pulumix.Output[*ServersTransportSpec]{ + OutputState: o.OutputState, + } +} + +func (o ServersTransportSpecPtrOutput) Elem() ServersTransportSpecOutput { + return o.ApplyT(func(v *ServersTransportSpec) ServersTransportSpec { + if v != nil { + return *v + } + var ret ServersTransportSpec + return ret + }).(ServersTransportSpecOutput) +} + +// CertificatesSecrets defines a list of secret storing client certificates for mTLS. +func (o ServersTransportSpecPtrOutput) CertificatesSecrets() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServersTransportSpec) []string { + if v == nil { + return nil + } + return v.CertificatesSecrets + }).(pulumi.StringArrayOutput) +} + +// DisableHTTP2 disables HTTP/2 for connections with backend servers. +func (o ServersTransportSpecPtrOutput) DisableHTTP2() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServersTransportSpec) *bool { + if v == nil { + return nil + } + return v.DisableHTTP2 + }).(pulumi.BoolPtrOutput) +} + +// ForwardingTimeouts defines the timeouts for requests forwarded to the backend servers. +func (o ServersTransportSpecPtrOutput) ForwardingTimeouts() ServersTransportSpecForwardingTimeoutsPtrOutput { + return o.ApplyT(func(v *ServersTransportSpec) *ServersTransportSpecForwardingTimeouts { + if v == nil { + return nil + } + return v.ForwardingTimeouts + }).(ServersTransportSpecForwardingTimeoutsPtrOutput) +} + +// InsecureSkipVerify disables SSL certificate verification. +func (o ServersTransportSpecPtrOutput) InsecureSkipVerify() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServersTransportSpec) *bool { + if v == nil { + return nil + } + return v.InsecureSkipVerify + }).(pulumi.BoolPtrOutput) +} + +// MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host. +func (o ServersTransportSpecPtrOutput) MaxIdleConnsPerHost() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServersTransportSpec) *int { + if v == nil { + return nil + } + return v.MaxIdleConnsPerHost + }).(pulumi.IntPtrOutput) +} + +// PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification. +func (o ServersTransportSpecPtrOutput) PeerCertURI() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServersTransportSpec) *string { + if v == nil { + return nil + } + return v.PeerCertURI + }).(pulumi.StringPtrOutput) +} + +// RootCAsSecrets defines a list of CA secret used to validate self-signed certificate. +func (o ServersTransportSpecPtrOutput) RootCAsSecrets() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServersTransportSpec) []string { + if v == nil { + return nil + } + return v.RootCAsSecrets + }).(pulumi.StringArrayOutput) +} + +// ServerName defines the server name used to contact the server. +func (o ServersTransportSpecPtrOutput) ServerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServersTransportSpec) *string { + if v == nil { + return nil + } + return v.ServerName + }).(pulumi.StringPtrOutput) +} + +// ForwardingTimeouts defines the timeouts for requests forwarded to the backend servers. +type ServersTransportSpecForwardingTimeouts struct { + // DialTimeout is the amount of time to wait until a connection to a backend server can be established. + DialTimeout interface{} `pulumi:"dialTimeout"` + // IdleConnTimeout is the maximum period for which an idle HTTP keep-alive connection will remain open before closing itself. + IdleConnTimeout interface{} `pulumi:"idleConnTimeout"` + // PingTimeout is the timeout after which the HTTP/2 connection will be closed if a response to ping is not received. + PingTimeout interface{} `pulumi:"pingTimeout"` + // ReadIdleTimeout is the timeout after which a health check using ping frame will be carried out if no frame is received on the HTTP/2 connection. + ReadIdleTimeout interface{} `pulumi:"readIdleTimeout"` + // ResponseHeaderTimeout is the amount of time to wait for a server's response headers after fully writing the request (including its body, if any). + ResponseHeaderTimeout interface{} `pulumi:"responseHeaderTimeout"` +} + +// ServersTransportSpecForwardingTimeoutsInput is an input type that accepts ServersTransportSpecForwardingTimeoutsArgs and ServersTransportSpecForwardingTimeoutsOutput values. +// You can construct a concrete instance of `ServersTransportSpecForwardingTimeoutsInput` via: +// +// ServersTransportSpecForwardingTimeoutsArgs{...} +type ServersTransportSpecForwardingTimeoutsInput interface { + pulumi.Input + + ToServersTransportSpecForwardingTimeoutsOutput() ServersTransportSpecForwardingTimeoutsOutput + ToServersTransportSpecForwardingTimeoutsOutputWithContext(context.Context) ServersTransportSpecForwardingTimeoutsOutput +} + +// ForwardingTimeouts defines the timeouts for requests forwarded to the backend servers. +type ServersTransportSpecForwardingTimeoutsArgs struct { + // DialTimeout is the amount of time to wait until a connection to a backend server can be established. + DialTimeout pulumi.Input `pulumi:"dialTimeout"` + // IdleConnTimeout is the maximum period for which an idle HTTP keep-alive connection will remain open before closing itself. + IdleConnTimeout pulumi.Input `pulumi:"idleConnTimeout"` + // PingTimeout is the timeout after which the HTTP/2 connection will be closed if a response to ping is not received. + PingTimeout pulumi.Input `pulumi:"pingTimeout"` + // ReadIdleTimeout is the timeout after which a health check using ping frame will be carried out if no frame is received on the HTTP/2 connection. + ReadIdleTimeout pulumi.Input `pulumi:"readIdleTimeout"` + // ResponseHeaderTimeout is the amount of time to wait for a server's response headers after fully writing the request (including its body, if any). + ResponseHeaderTimeout pulumi.Input `pulumi:"responseHeaderTimeout"` +} + +func (ServersTransportSpecForwardingTimeoutsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportSpecForwardingTimeouts)(nil)).Elem() +} + +func (i ServersTransportSpecForwardingTimeoutsArgs) ToServersTransportSpecForwardingTimeoutsOutput() ServersTransportSpecForwardingTimeoutsOutput { + return i.ToServersTransportSpecForwardingTimeoutsOutputWithContext(context.Background()) +} + +func (i ServersTransportSpecForwardingTimeoutsArgs) ToServersTransportSpecForwardingTimeoutsOutputWithContext(ctx context.Context) ServersTransportSpecForwardingTimeoutsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportSpecForwardingTimeoutsOutput) +} + +func (i ServersTransportSpecForwardingTimeoutsArgs) ToOutput(ctx context.Context) pulumix.Output[ServersTransportSpecForwardingTimeouts] { + return pulumix.Output[ServersTransportSpecForwardingTimeouts]{ + OutputState: i.ToServersTransportSpecForwardingTimeoutsOutputWithContext(ctx).OutputState, + } +} + +func (i ServersTransportSpecForwardingTimeoutsArgs) ToServersTransportSpecForwardingTimeoutsPtrOutput() ServersTransportSpecForwardingTimeoutsPtrOutput { + return i.ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(context.Background()) +} + +func (i ServersTransportSpecForwardingTimeoutsArgs) ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(ctx context.Context) ServersTransportSpecForwardingTimeoutsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportSpecForwardingTimeoutsOutput).ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(ctx) +} + +// ServersTransportSpecForwardingTimeoutsPtrInput is an input type that accepts ServersTransportSpecForwardingTimeoutsArgs, ServersTransportSpecForwardingTimeoutsPtr and ServersTransportSpecForwardingTimeoutsPtrOutput values. +// You can construct a concrete instance of `ServersTransportSpecForwardingTimeoutsPtrInput` via: +// +// ServersTransportSpecForwardingTimeoutsArgs{...} +// +// or: +// +// nil +type ServersTransportSpecForwardingTimeoutsPtrInput interface { + pulumi.Input + + ToServersTransportSpecForwardingTimeoutsPtrOutput() ServersTransportSpecForwardingTimeoutsPtrOutput + ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(context.Context) ServersTransportSpecForwardingTimeoutsPtrOutput +} + +type serversTransportSpecForwardingTimeoutsPtrType ServersTransportSpecForwardingTimeoutsArgs + +func ServersTransportSpecForwardingTimeoutsPtr(v *ServersTransportSpecForwardingTimeoutsArgs) ServersTransportSpecForwardingTimeoutsPtrInput { + return (*serversTransportSpecForwardingTimeoutsPtrType)(v) +} + +func (*serversTransportSpecForwardingTimeoutsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportSpecForwardingTimeouts)(nil)).Elem() +} + +func (i *serversTransportSpecForwardingTimeoutsPtrType) ToServersTransportSpecForwardingTimeoutsPtrOutput() ServersTransportSpecForwardingTimeoutsPtrOutput { + return i.ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(context.Background()) +} + +func (i *serversTransportSpecForwardingTimeoutsPtrType) ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(ctx context.Context) ServersTransportSpecForwardingTimeoutsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportSpecForwardingTimeoutsPtrOutput) +} + +func (i *serversTransportSpecForwardingTimeoutsPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportSpecForwardingTimeouts] { + return pulumix.Output[*ServersTransportSpecForwardingTimeouts]{ + OutputState: i.ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(ctx).OutputState, + } +} + +// ForwardingTimeouts defines the timeouts for requests forwarded to the backend servers. +type ServersTransportSpecForwardingTimeoutsOutput struct{ *pulumi.OutputState } + +func (ServersTransportSpecForwardingTimeoutsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportSpecForwardingTimeouts)(nil)).Elem() +} + +func (o ServersTransportSpecForwardingTimeoutsOutput) ToServersTransportSpecForwardingTimeoutsOutput() ServersTransportSpecForwardingTimeoutsOutput { + return o +} + +func (o ServersTransportSpecForwardingTimeoutsOutput) ToServersTransportSpecForwardingTimeoutsOutputWithContext(ctx context.Context) ServersTransportSpecForwardingTimeoutsOutput { + return o +} + +func (o ServersTransportSpecForwardingTimeoutsOutput) ToServersTransportSpecForwardingTimeoutsPtrOutput() ServersTransportSpecForwardingTimeoutsPtrOutput { + return o.ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(context.Background()) +} + +func (o ServersTransportSpecForwardingTimeoutsOutput) ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(ctx context.Context) ServersTransportSpecForwardingTimeoutsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServersTransportSpecForwardingTimeouts) *ServersTransportSpecForwardingTimeouts { + return &v + }).(ServersTransportSpecForwardingTimeoutsPtrOutput) +} + +func (o ServersTransportSpecForwardingTimeoutsOutput) ToOutput(ctx context.Context) pulumix.Output[ServersTransportSpecForwardingTimeouts] { + return pulumix.Output[ServersTransportSpecForwardingTimeouts]{ + OutputState: o.OutputState, + } +} + +// DialTimeout is the amount of time to wait until a connection to a backend server can be established. +func (o ServersTransportSpecForwardingTimeoutsOutput) DialTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v ServersTransportSpecForwardingTimeouts) interface{} { return v.DialTimeout }).(pulumi.AnyOutput) +} + +// IdleConnTimeout is the maximum period for which an idle HTTP keep-alive connection will remain open before closing itself. +func (o ServersTransportSpecForwardingTimeoutsOutput) IdleConnTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v ServersTransportSpecForwardingTimeouts) interface{} { return v.IdleConnTimeout }).(pulumi.AnyOutput) +} + +// PingTimeout is the timeout after which the HTTP/2 connection will be closed if a response to ping is not received. +func (o ServersTransportSpecForwardingTimeoutsOutput) PingTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v ServersTransportSpecForwardingTimeouts) interface{} { return v.PingTimeout }).(pulumi.AnyOutput) +} + +// ReadIdleTimeout is the timeout after which a health check using ping frame will be carried out if no frame is received on the HTTP/2 connection. +func (o ServersTransportSpecForwardingTimeoutsOutput) ReadIdleTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v ServersTransportSpecForwardingTimeouts) interface{} { return v.ReadIdleTimeout }).(pulumi.AnyOutput) +} + +// ResponseHeaderTimeout is the amount of time to wait for a server's response headers after fully writing the request (including its body, if any). +func (o ServersTransportSpecForwardingTimeoutsOutput) ResponseHeaderTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v ServersTransportSpecForwardingTimeouts) interface{} { return v.ResponseHeaderTimeout }).(pulumi.AnyOutput) +} + +type ServersTransportSpecForwardingTimeoutsPtrOutput struct{ *pulumi.OutputState } + +func (ServersTransportSpecForwardingTimeoutsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportSpecForwardingTimeouts)(nil)).Elem() +} + +func (o ServersTransportSpecForwardingTimeoutsPtrOutput) ToServersTransportSpecForwardingTimeoutsPtrOutput() ServersTransportSpecForwardingTimeoutsPtrOutput { + return o +} + +func (o ServersTransportSpecForwardingTimeoutsPtrOutput) ToServersTransportSpecForwardingTimeoutsPtrOutputWithContext(ctx context.Context) ServersTransportSpecForwardingTimeoutsPtrOutput { + return o +} + +func (o ServersTransportSpecForwardingTimeoutsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportSpecForwardingTimeouts] { + return pulumix.Output[*ServersTransportSpecForwardingTimeouts]{ + OutputState: o.OutputState, + } +} + +func (o ServersTransportSpecForwardingTimeoutsPtrOutput) Elem() ServersTransportSpecForwardingTimeoutsOutput { + return o.ApplyT(func(v *ServersTransportSpecForwardingTimeouts) ServersTransportSpecForwardingTimeouts { + if v != nil { + return *v + } + var ret ServersTransportSpecForwardingTimeouts + return ret + }).(ServersTransportSpecForwardingTimeoutsOutput) +} + +// DialTimeout is the amount of time to wait until a connection to a backend server can be established. +func (o ServersTransportSpecForwardingTimeoutsPtrOutput) DialTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v *ServersTransportSpecForwardingTimeouts) interface{} { + if v == nil { + return nil + } + return v.DialTimeout + }).(pulumi.AnyOutput) +} + +// IdleConnTimeout is the maximum period for which an idle HTTP keep-alive connection will remain open before closing itself. +func (o ServersTransportSpecForwardingTimeoutsPtrOutput) IdleConnTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v *ServersTransportSpecForwardingTimeouts) interface{} { + if v == nil { + return nil + } + return v.IdleConnTimeout + }).(pulumi.AnyOutput) +} + +// PingTimeout is the timeout after which the HTTP/2 connection will be closed if a response to ping is not received. +func (o ServersTransportSpecForwardingTimeoutsPtrOutput) PingTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v *ServersTransportSpecForwardingTimeouts) interface{} { + if v == nil { + return nil + } + return v.PingTimeout + }).(pulumi.AnyOutput) +} + +// ReadIdleTimeout is the timeout after which a health check using ping frame will be carried out if no frame is received on the HTTP/2 connection. +func (o ServersTransportSpecForwardingTimeoutsPtrOutput) ReadIdleTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v *ServersTransportSpecForwardingTimeouts) interface{} { + if v == nil { + return nil + } + return v.ReadIdleTimeout + }).(pulumi.AnyOutput) +} + +// ResponseHeaderTimeout is the amount of time to wait for a server's response headers after fully writing the request (including its body, if any). +func (o ServersTransportSpecForwardingTimeoutsPtrOutput) ResponseHeaderTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v *ServersTransportSpecForwardingTimeouts) interface{} { + if v == nil { + return nil + } + return v.ResponseHeaderTimeout + }).(pulumi.AnyOutput) +} + +// ServersTransportTCP is the CRD implementation of a TCPServersTransport. If no tcpServersTransport is specified, a default one named default@internal will be used. The default@internal tcpServersTransport can be configured in the static configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_3 +type ServersTransportTCPType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. + Spec ServersTransportTCPSpec `pulumi:"spec"` +} + +type ServersTransportTCPMetadata struct { +} + +// ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. +type ServersTransportTCPSpec struct { + // DialKeepAlive is the interval between keep-alive probes for an active network connection. If zero, keep-alive probes are sent with a default value (currently 15 seconds), if supported by the protocol and operating system. Network protocols or operating systems that do not support keep-alives ignore this field. If negative, keep-alive probes are disabled. + DialKeepAlive interface{} `pulumi:"dialKeepAlive"` + // DialTimeout is the amount of time to wait until a connection to a backend server can be established. + DialTimeout interface{} `pulumi:"dialTimeout"` + // TerminationDelay defines the delay to wait before fully terminating the connection, after one connected peer has closed its writing capability. + TerminationDelay interface{} `pulumi:"terminationDelay"` + // TLS defines the TLS configuration + Tls *ServersTransportTCPSpecTls `pulumi:"tls"` +} + +// ServersTransportTCPSpecInput is an input type that accepts ServersTransportTCPSpecArgs and ServersTransportTCPSpecOutput values. +// You can construct a concrete instance of `ServersTransportTCPSpecInput` via: +// +// ServersTransportTCPSpecArgs{...} +type ServersTransportTCPSpecInput interface { + pulumi.Input + + ToServersTransportTCPSpecOutput() ServersTransportTCPSpecOutput + ToServersTransportTCPSpecOutputWithContext(context.Context) ServersTransportTCPSpecOutput +} + +// ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. +type ServersTransportTCPSpecArgs struct { + // DialKeepAlive is the interval between keep-alive probes for an active network connection. If zero, keep-alive probes are sent with a default value (currently 15 seconds), if supported by the protocol and operating system. Network protocols or operating systems that do not support keep-alives ignore this field. If negative, keep-alive probes are disabled. + DialKeepAlive pulumi.Input `pulumi:"dialKeepAlive"` + // DialTimeout is the amount of time to wait until a connection to a backend server can be established. + DialTimeout pulumi.Input `pulumi:"dialTimeout"` + // TerminationDelay defines the delay to wait before fully terminating the connection, after one connected peer has closed its writing capability. + TerminationDelay pulumi.Input `pulumi:"terminationDelay"` + // TLS defines the TLS configuration + Tls ServersTransportTCPSpecTlsPtrInput `pulumi:"tls"` +} + +func (ServersTransportTCPSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportTCPSpec)(nil)).Elem() +} + +func (i ServersTransportTCPSpecArgs) ToServersTransportTCPSpecOutput() ServersTransportTCPSpecOutput { + return i.ToServersTransportTCPSpecOutputWithContext(context.Background()) +} + +func (i ServersTransportTCPSpecArgs) ToServersTransportTCPSpecOutputWithContext(ctx context.Context) ServersTransportTCPSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPSpecOutput) +} + +func (i ServersTransportTCPSpecArgs) ToOutput(ctx context.Context) pulumix.Output[ServersTransportTCPSpec] { + return pulumix.Output[ServersTransportTCPSpec]{ + OutputState: i.ToServersTransportTCPSpecOutputWithContext(ctx).OutputState, + } +} + +func (i ServersTransportTCPSpecArgs) ToServersTransportTCPSpecPtrOutput() ServersTransportTCPSpecPtrOutput { + return i.ToServersTransportTCPSpecPtrOutputWithContext(context.Background()) +} + +func (i ServersTransportTCPSpecArgs) ToServersTransportTCPSpecPtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPSpecOutput).ToServersTransportTCPSpecPtrOutputWithContext(ctx) +} + +// ServersTransportTCPSpecPtrInput is an input type that accepts ServersTransportTCPSpecArgs, ServersTransportTCPSpecPtr and ServersTransportTCPSpecPtrOutput values. +// You can construct a concrete instance of `ServersTransportTCPSpecPtrInput` via: +// +// ServersTransportTCPSpecArgs{...} +// +// or: +// +// nil +type ServersTransportTCPSpecPtrInput interface { + pulumi.Input + + ToServersTransportTCPSpecPtrOutput() ServersTransportTCPSpecPtrOutput + ToServersTransportTCPSpecPtrOutputWithContext(context.Context) ServersTransportTCPSpecPtrOutput +} + +type serversTransportTCPSpecPtrType ServersTransportTCPSpecArgs + +func ServersTransportTCPSpecPtr(v *ServersTransportTCPSpecArgs) ServersTransportTCPSpecPtrInput { + return (*serversTransportTCPSpecPtrType)(v) +} + +func (*serversTransportTCPSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportTCPSpec)(nil)).Elem() +} + +func (i *serversTransportTCPSpecPtrType) ToServersTransportTCPSpecPtrOutput() ServersTransportTCPSpecPtrOutput { + return i.ToServersTransportTCPSpecPtrOutputWithContext(context.Background()) +} + +func (i *serversTransportTCPSpecPtrType) ToServersTransportTCPSpecPtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPSpecPtrOutput) +} + +func (i *serversTransportTCPSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportTCPSpec] { + return pulumix.Output[*ServersTransportTCPSpec]{ + OutputState: i.ToServersTransportTCPSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. +type ServersTransportTCPSpecOutput struct{ *pulumi.OutputState } + +func (ServersTransportTCPSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportTCPSpec)(nil)).Elem() +} + +func (o ServersTransportTCPSpecOutput) ToServersTransportTCPSpecOutput() ServersTransportTCPSpecOutput { + return o +} + +func (o ServersTransportTCPSpecOutput) ToServersTransportTCPSpecOutputWithContext(ctx context.Context) ServersTransportTCPSpecOutput { + return o +} + +func (o ServersTransportTCPSpecOutput) ToServersTransportTCPSpecPtrOutput() ServersTransportTCPSpecPtrOutput { + return o.ToServersTransportTCPSpecPtrOutputWithContext(context.Background()) +} + +func (o ServersTransportTCPSpecOutput) ToServersTransportTCPSpecPtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServersTransportTCPSpec) *ServersTransportTCPSpec { + return &v + }).(ServersTransportTCPSpecPtrOutput) +} + +func (o ServersTransportTCPSpecOutput) ToOutput(ctx context.Context) pulumix.Output[ServersTransportTCPSpec] { + return pulumix.Output[ServersTransportTCPSpec]{ + OutputState: o.OutputState, + } +} + +// DialKeepAlive is the interval between keep-alive probes for an active network connection. If zero, keep-alive probes are sent with a default value (currently 15 seconds), if supported by the protocol and operating system. Network protocols or operating systems that do not support keep-alives ignore this field. If negative, keep-alive probes are disabled. +func (o ServersTransportTCPSpecOutput) DialKeepAlive() pulumi.AnyOutput { + return o.ApplyT(func(v ServersTransportTCPSpec) interface{} { return v.DialKeepAlive }).(pulumi.AnyOutput) +} + +// DialTimeout is the amount of time to wait until a connection to a backend server can be established. +func (o ServersTransportTCPSpecOutput) DialTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v ServersTransportTCPSpec) interface{} { return v.DialTimeout }).(pulumi.AnyOutput) +} + +// TerminationDelay defines the delay to wait before fully terminating the connection, after one connected peer has closed its writing capability. +func (o ServersTransportTCPSpecOutput) TerminationDelay() pulumi.AnyOutput { + return o.ApplyT(func(v ServersTransportTCPSpec) interface{} { return v.TerminationDelay }).(pulumi.AnyOutput) +} + +// TLS defines the TLS configuration +func (o ServersTransportTCPSpecOutput) Tls() ServersTransportTCPSpecTlsPtrOutput { + return o.ApplyT(func(v ServersTransportTCPSpec) *ServersTransportTCPSpecTls { return v.Tls }).(ServersTransportTCPSpecTlsPtrOutput) +} + +type ServersTransportTCPSpecPtrOutput struct{ *pulumi.OutputState } + +func (ServersTransportTCPSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportTCPSpec)(nil)).Elem() +} + +func (o ServersTransportTCPSpecPtrOutput) ToServersTransportTCPSpecPtrOutput() ServersTransportTCPSpecPtrOutput { + return o +} + +func (o ServersTransportTCPSpecPtrOutput) ToServersTransportTCPSpecPtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecPtrOutput { + return o +} + +func (o ServersTransportTCPSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportTCPSpec] { + return pulumix.Output[*ServersTransportTCPSpec]{ + OutputState: o.OutputState, + } +} + +func (o ServersTransportTCPSpecPtrOutput) Elem() ServersTransportTCPSpecOutput { + return o.ApplyT(func(v *ServersTransportTCPSpec) ServersTransportTCPSpec { + if v != nil { + return *v + } + var ret ServersTransportTCPSpec + return ret + }).(ServersTransportTCPSpecOutput) +} + +// DialKeepAlive is the interval between keep-alive probes for an active network connection. If zero, keep-alive probes are sent with a default value (currently 15 seconds), if supported by the protocol and operating system. Network protocols or operating systems that do not support keep-alives ignore this field. If negative, keep-alive probes are disabled. +func (o ServersTransportTCPSpecPtrOutput) DialKeepAlive() pulumi.AnyOutput { + return o.ApplyT(func(v *ServersTransportTCPSpec) interface{} { + if v == nil { + return nil + } + return v.DialKeepAlive + }).(pulumi.AnyOutput) +} + +// DialTimeout is the amount of time to wait until a connection to a backend server can be established. +func (o ServersTransportTCPSpecPtrOutput) DialTimeout() pulumi.AnyOutput { + return o.ApplyT(func(v *ServersTransportTCPSpec) interface{} { + if v == nil { + return nil + } + return v.DialTimeout + }).(pulumi.AnyOutput) +} + +// TerminationDelay defines the delay to wait before fully terminating the connection, after one connected peer has closed its writing capability. +func (o ServersTransportTCPSpecPtrOutput) TerminationDelay() pulumi.AnyOutput { + return o.ApplyT(func(v *ServersTransportTCPSpec) interface{} { + if v == nil { + return nil + } + return v.TerminationDelay + }).(pulumi.AnyOutput) +} + +// TLS defines the TLS configuration +func (o ServersTransportTCPSpecPtrOutput) Tls() ServersTransportTCPSpecTlsPtrOutput { + return o.ApplyT(func(v *ServersTransportTCPSpec) *ServersTransportTCPSpecTls { + if v == nil { + return nil + } + return v.Tls + }).(ServersTransportTCPSpecTlsPtrOutput) +} + +// TLS defines the TLS configuration +type ServersTransportTCPSpecTls struct { + // CertificatesSecrets defines a list of secret storing client certificates for mTLS. + CertificatesSecrets []string `pulumi:"certificatesSecrets"` + // InsecureSkipVerify disables TLS certificate verification. + InsecureSkipVerify *bool `pulumi:"insecureSkipVerify"` + // MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host. PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification. + PeerCertURI *string `pulumi:"peerCertURI"` + // RootCAsSecrets defines a list of CA secret used to validate self-signed certificates. + RootCAsSecrets []string `pulumi:"rootCAsSecrets"` + // ServerName defines the server name used to contact the server. + ServerName *string `pulumi:"serverName"` + // Spiffe defines the SPIFFE configuration. + Spiffe *ServersTransportTCPSpecTlsSpiffe `pulumi:"spiffe"` +} + +// ServersTransportTCPSpecTlsInput is an input type that accepts ServersTransportTCPSpecTlsArgs and ServersTransportTCPSpecTlsOutput values. +// You can construct a concrete instance of `ServersTransportTCPSpecTlsInput` via: +// +// ServersTransportTCPSpecTlsArgs{...} +type ServersTransportTCPSpecTlsInput interface { + pulumi.Input + + ToServersTransportTCPSpecTlsOutput() ServersTransportTCPSpecTlsOutput + ToServersTransportTCPSpecTlsOutputWithContext(context.Context) ServersTransportTCPSpecTlsOutput +} + +// TLS defines the TLS configuration +type ServersTransportTCPSpecTlsArgs struct { + // CertificatesSecrets defines a list of secret storing client certificates for mTLS. + CertificatesSecrets pulumi.StringArrayInput `pulumi:"certificatesSecrets"` + // InsecureSkipVerify disables TLS certificate verification. + InsecureSkipVerify pulumi.BoolPtrInput `pulumi:"insecureSkipVerify"` + // MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host. PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification. + PeerCertURI pulumi.StringPtrInput `pulumi:"peerCertURI"` + // RootCAsSecrets defines a list of CA secret used to validate self-signed certificates. + RootCAsSecrets pulumi.StringArrayInput `pulumi:"rootCAsSecrets"` + // ServerName defines the server name used to contact the server. + ServerName pulumi.StringPtrInput `pulumi:"serverName"` + // Spiffe defines the SPIFFE configuration. + Spiffe ServersTransportTCPSpecTlsSpiffePtrInput `pulumi:"spiffe"` +} + +func (ServersTransportTCPSpecTlsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportTCPSpecTls)(nil)).Elem() +} + +func (i ServersTransportTCPSpecTlsArgs) ToServersTransportTCPSpecTlsOutput() ServersTransportTCPSpecTlsOutput { + return i.ToServersTransportTCPSpecTlsOutputWithContext(context.Background()) +} + +func (i ServersTransportTCPSpecTlsArgs) ToServersTransportTCPSpecTlsOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPSpecTlsOutput) +} + +func (i ServersTransportTCPSpecTlsArgs) ToOutput(ctx context.Context) pulumix.Output[ServersTransportTCPSpecTls] { + return pulumix.Output[ServersTransportTCPSpecTls]{ + OutputState: i.ToServersTransportTCPSpecTlsOutputWithContext(ctx).OutputState, + } +} + +func (i ServersTransportTCPSpecTlsArgs) ToServersTransportTCPSpecTlsPtrOutput() ServersTransportTCPSpecTlsPtrOutput { + return i.ToServersTransportTCPSpecTlsPtrOutputWithContext(context.Background()) +} + +func (i ServersTransportTCPSpecTlsArgs) ToServersTransportTCPSpecTlsPtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPSpecTlsOutput).ToServersTransportTCPSpecTlsPtrOutputWithContext(ctx) +} + +// ServersTransportTCPSpecTlsPtrInput is an input type that accepts ServersTransportTCPSpecTlsArgs, ServersTransportTCPSpecTlsPtr and ServersTransportTCPSpecTlsPtrOutput values. +// You can construct a concrete instance of `ServersTransportTCPSpecTlsPtrInput` via: +// +// ServersTransportTCPSpecTlsArgs{...} +// +// or: +// +// nil +type ServersTransportTCPSpecTlsPtrInput interface { + pulumi.Input + + ToServersTransportTCPSpecTlsPtrOutput() ServersTransportTCPSpecTlsPtrOutput + ToServersTransportTCPSpecTlsPtrOutputWithContext(context.Context) ServersTransportTCPSpecTlsPtrOutput +} + +type serversTransportTCPSpecTlsPtrType ServersTransportTCPSpecTlsArgs + +func ServersTransportTCPSpecTlsPtr(v *ServersTransportTCPSpecTlsArgs) ServersTransportTCPSpecTlsPtrInput { + return (*serversTransportTCPSpecTlsPtrType)(v) +} + +func (*serversTransportTCPSpecTlsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportTCPSpecTls)(nil)).Elem() +} + +func (i *serversTransportTCPSpecTlsPtrType) ToServersTransportTCPSpecTlsPtrOutput() ServersTransportTCPSpecTlsPtrOutput { + return i.ToServersTransportTCPSpecTlsPtrOutputWithContext(context.Background()) +} + +func (i *serversTransportTCPSpecTlsPtrType) ToServersTransportTCPSpecTlsPtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPSpecTlsPtrOutput) +} + +func (i *serversTransportTCPSpecTlsPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportTCPSpecTls] { + return pulumix.Output[*ServersTransportTCPSpecTls]{ + OutputState: i.ToServersTransportTCPSpecTlsPtrOutputWithContext(ctx).OutputState, + } +} + +// TLS defines the TLS configuration +type ServersTransportTCPSpecTlsOutput struct{ *pulumi.OutputState } + +func (ServersTransportTCPSpecTlsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportTCPSpecTls)(nil)).Elem() +} + +func (o ServersTransportTCPSpecTlsOutput) ToServersTransportTCPSpecTlsOutput() ServersTransportTCPSpecTlsOutput { + return o +} + +func (o ServersTransportTCPSpecTlsOutput) ToServersTransportTCPSpecTlsOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsOutput { + return o +} + +func (o ServersTransportTCPSpecTlsOutput) ToServersTransportTCPSpecTlsPtrOutput() ServersTransportTCPSpecTlsPtrOutput { + return o.ToServersTransportTCPSpecTlsPtrOutputWithContext(context.Background()) +} + +func (o ServersTransportTCPSpecTlsOutput) ToServersTransportTCPSpecTlsPtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServersTransportTCPSpecTls) *ServersTransportTCPSpecTls { + return &v + }).(ServersTransportTCPSpecTlsPtrOutput) +} + +func (o ServersTransportTCPSpecTlsOutput) ToOutput(ctx context.Context) pulumix.Output[ServersTransportTCPSpecTls] { + return pulumix.Output[ServersTransportTCPSpecTls]{ + OutputState: o.OutputState, + } +} + +// CertificatesSecrets defines a list of secret storing client certificates for mTLS. +func (o ServersTransportTCPSpecTlsOutput) CertificatesSecrets() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServersTransportTCPSpecTls) []string { return v.CertificatesSecrets }).(pulumi.StringArrayOutput) +} + +// InsecureSkipVerify disables TLS certificate verification. +func (o ServersTransportTCPSpecTlsOutput) InsecureSkipVerify() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServersTransportTCPSpecTls) *bool { return v.InsecureSkipVerify }).(pulumi.BoolPtrOutput) +} + +// MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host. PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification. +func (o ServersTransportTCPSpecTlsOutput) PeerCertURI() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServersTransportTCPSpecTls) *string { return v.PeerCertURI }).(pulumi.StringPtrOutput) +} + +// RootCAsSecrets defines a list of CA secret used to validate self-signed certificates. +func (o ServersTransportTCPSpecTlsOutput) RootCAsSecrets() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServersTransportTCPSpecTls) []string { return v.RootCAsSecrets }).(pulumi.StringArrayOutput) +} + +// ServerName defines the server name used to contact the server. +func (o ServersTransportTCPSpecTlsOutput) ServerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServersTransportTCPSpecTls) *string { return v.ServerName }).(pulumi.StringPtrOutput) +} + +// Spiffe defines the SPIFFE configuration. +func (o ServersTransportTCPSpecTlsOutput) Spiffe() ServersTransportTCPSpecTlsSpiffePtrOutput { + return o.ApplyT(func(v ServersTransportTCPSpecTls) *ServersTransportTCPSpecTlsSpiffe { return v.Spiffe }).(ServersTransportTCPSpecTlsSpiffePtrOutput) +} + +type ServersTransportTCPSpecTlsPtrOutput struct{ *pulumi.OutputState } + +func (ServersTransportTCPSpecTlsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportTCPSpecTls)(nil)).Elem() +} + +func (o ServersTransportTCPSpecTlsPtrOutput) ToServersTransportTCPSpecTlsPtrOutput() ServersTransportTCPSpecTlsPtrOutput { + return o +} + +func (o ServersTransportTCPSpecTlsPtrOutput) ToServersTransportTCPSpecTlsPtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsPtrOutput { + return o +} + +func (o ServersTransportTCPSpecTlsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportTCPSpecTls] { + return pulumix.Output[*ServersTransportTCPSpecTls]{ + OutputState: o.OutputState, + } +} + +func (o ServersTransportTCPSpecTlsPtrOutput) Elem() ServersTransportTCPSpecTlsOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTls) ServersTransportTCPSpecTls { + if v != nil { + return *v + } + var ret ServersTransportTCPSpecTls + return ret + }).(ServersTransportTCPSpecTlsOutput) +} + +// CertificatesSecrets defines a list of secret storing client certificates for mTLS. +func (o ServersTransportTCPSpecTlsPtrOutput) CertificatesSecrets() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTls) []string { + if v == nil { + return nil + } + return v.CertificatesSecrets + }).(pulumi.StringArrayOutput) +} + +// InsecureSkipVerify disables TLS certificate verification. +func (o ServersTransportTCPSpecTlsPtrOutput) InsecureSkipVerify() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTls) *bool { + if v == nil { + return nil + } + return v.InsecureSkipVerify + }).(pulumi.BoolPtrOutput) +} + +// MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host. PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification. +func (o ServersTransportTCPSpecTlsPtrOutput) PeerCertURI() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTls) *string { + if v == nil { + return nil + } + return v.PeerCertURI + }).(pulumi.StringPtrOutput) +} + +// RootCAsSecrets defines a list of CA secret used to validate self-signed certificates. +func (o ServersTransportTCPSpecTlsPtrOutput) RootCAsSecrets() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTls) []string { + if v == nil { + return nil + } + return v.RootCAsSecrets + }).(pulumi.StringArrayOutput) +} + +// ServerName defines the server name used to contact the server. +func (o ServersTransportTCPSpecTlsPtrOutput) ServerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTls) *string { + if v == nil { + return nil + } + return v.ServerName + }).(pulumi.StringPtrOutput) +} + +// Spiffe defines the SPIFFE configuration. +func (o ServersTransportTCPSpecTlsPtrOutput) Spiffe() ServersTransportTCPSpecTlsSpiffePtrOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTls) *ServersTransportTCPSpecTlsSpiffe { + if v == nil { + return nil + } + return v.Spiffe + }).(ServersTransportTCPSpecTlsSpiffePtrOutput) +} + +// Spiffe defines the SPIFFE configuration. +type ServersTransportTCPSpecTlsSpiffe struct { + // IDs defines the allowed SPIFFE IDs (takes precedence over the SPIFFE TrustDomain). + Ids []string `pulumi:"ids"` + // TrustDomain defines the allowed SPIFFE trust domain. + TrustDomain *string `pulumi:"trustDomain"` +} + +// ServersTransportTCPSpecTlsSpiffeInput is an input type that accepts ServersTransportTCPSpecTlsSpiffeArgs and ServersTransportTCPSpecTlsSpiffeOutput values. +// You can construct a concrete instance of `ServersTransportTCPSpecTlsSpiffeInput` via: +// +// ServersTransportTCPSpecTlsSpiffeArgs{...} +type ServersTransportTCPSpecTlsSpiffeInput interface { + pulumi.Input + + ToServersTransportTCPSpecTlsSpiffeOutput() ServersTransportTCPSpecTlsSpiffeOutput + ToServersTransportTCPSpecTlsSpiffeOutputWithContext(context.Context) ServersTransportTCPSpecTlsSpiffeOutput +} + +// Spiffe defines the SPIFFE configuration. +type ServersTransportTCPSpecTlsSpiffeArgs struct { + // IDs defines the allowed SPIFFE IDs (takes precedence over the SPIFFE TrustDomain). + Ids pulumi.StringArrayInput `pulumi:"ids"` + // TrustDomain defines the allowed SPIFFE trust domain. + TrustDomain pulumi.StringPtrInput `pulumi:"trustDomain"` +} + +func (ServersTransportTCPSpecTlsSpiffeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportTCPSpecTlsSpiffe)(nil)).Elem() +} + +func (i ServersTransportTCPSpecTlsSpiffeArgs) ToServersTransportTCPSpecTlsSpiffeOutput() ServersTransportTCPSpecTlsSpiffeOutput { + return i.ToServersTransportTCPSpecTlsSpiffeOutputWithContext(context.Background()) +} + +func (i ServersTransportTCPSpecTlsSpiffeArgs) ToServersTransportTCPSpecTlsSpiffeOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsSpiffeOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPSpecTlsSpiffeOutput) +} + +func (i ServersTransportTCPSpecTlsSpiffeArgs) ToOutput(ctx context.Context) pulumix.Output[ServersTransportTCPSpecTlsSpiffe] { + return pulumix.Output[ServersTransportTCPSpecTlsSpiffe]{ + OutputState: i.ToServersTransportTCPSpecTlsSpiffeOutputWithContext(ctx).OutputState, + } +} + +func (i ServersTransportTCPSpecTlsSpiffeArgs) ToServersTransportTCPSpecTlsSpiffePtrOutput() ServersTransportTCPSpecTlsSpiffePtrOutput { + return i.ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(context.Background()) +} + +func (i ServersTransportTCPSpecTlsSpiffeArgs) ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsSpiffePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPSpecTlsSpiffeOutput).ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(ctx) +} + +// ServersTransportTCPSpecTlsSpiffePtrInput is an input type that accepts ServersTransportTCPSpecTlsSpiffeArgs, ServersTransportTCPSpecTlsSpiffePtr and ServersTransportTCPSpecTlsSpiffePtrOutput values. +// You can construct a concrete instance of `ServersTransportTCPSpecTlsSpiffePtrInput` via: +// +// ServersTransportTCPSpecTlsSpiffeArgs{...} +// +// or: +// +// nil +type ServersTransportTCPSpecTlsSpiffePtrInput interface { + pulumi.Input + + ToServersTransportTCPSpecTlsSpiffePtrOutput() ServersTransportTCPSpecTlsSpiffePtrOutput + ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(context.Context) ServersTransportTCPSpecTlsSpiffePtrOutput +} + +type serversTransportTCPSpecTlsSpiffePtrType ServersTransportTCPSpecTlsSpiffeArgs + +func ServersTransportTCPSpecTlsSpiffePtr(v *ServersTransportTCPSpecTlsSpiffeArgs) ServersTransportTCPSpecTlsSpiffePtrInput { + return (*serversTransportTCPSpecTlsSpiffePtrType)(v) +} + +func (*serversTransportTCPSpecTlsSpiffePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportTCPSpecTlsSpiffe)(nil)).Elem() +} + +func (i *serversTransportTCPSpecTlsSpiffePtrType) ToServersTransportTCPSpecTlsSpiffePtrOutput() ServersTransportTCPSpecTlsSpiffePtrOutput { + return i.ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(context.Background()) +} + +func (i *serversTransportTCPSpecTlsSpiffePtrType) ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsSpiffePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPSpecTlsSpiffePtrOutput) +} + +func (i *serversTransportTCPSpecTlsSpiffePtrType) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportTCPSpecTlsSpiffe] { + return pulumix.Output[*ServersTransportTCPSpecTlsSpiffe]{ + OutputState: i.ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(ctx).OutputState, + } +} + +// Spiffe defines the SPIFFE configuration. +type ServersTransportTCPSpecTlsSpiffeOutput struct{ *pulumi.OutputState } + +func (ServersTransportTCPSpecTlsSpiffeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServersTransportTCPSpecTlsSpiffe)(nil)).Elem() +} + +func (o ServersTransportTCPSpecTlsSpiffeOutput) ToServersTransportTCPSpecTlsSpiffeOutput() ServersTransportTCPSpecTlsSpiffeOutput { + return o +} + +func (o ServersTransportTCPSpecTlsSpiffeOutput) ToServersTransportTCPSpecTlsSpiffeOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsSpiffeOutput { + return o +} + +func (o ServersTransportTCPSpecTlsSpiffeOutput) ToServersTransportTCPSpecTlsSpiffePtrOutput() ServersTransportTCPSpecTlsSpiffePtrOutput { + return o.ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(context.Background()) +} + +func (o ServersTransportTCPSpecTlsSpiffeOutput) ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsSpiffePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServersTransportTCPSpecTlsSpiffe) *ServersTransportTCPSpecTlsSpiffe { + return &v + }).(ServersTransportTCPSpecTlsSpiffePtrOutput) +} + +func (o ServersTransportTCPSpecTlsSpiffeOutput) ToOutput(ctx context.Context) pulumix.Output[ServersTransportTCPSpecTlsSpiffe] { + return pulumix.Output[ServersTransportTCPSpecTlsSpiffe]{ + OutputState: o.OutputState, + } +} + +// IDs defines the allowed SPIFFE IDs (takes precedence over the SPIFFE TrustDomain). +func (o ServersTransportTCPSpecTlsSpiffeOutput) Ids() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServersTransportTCPSpecTlsSpiffe) []string { return v.Ids }).(pulumi.StringArrayOutput) +} + +// TrustDomain defines the allowed SPIFFE trust domain. +func (o ServersTransportTCPSpecTlsSpiffeOutput) TrustDomain() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServersTransportTCPSpecTlsSpiffe) *string { return v.TrustDomain }).(pulumi.StringPtrOutput) +} + +type ServersTransportTCPSpecTlsSpiffePtrOutput struct{ *pulumi.OutputState } + +func (ServersTransportTCPSpecTlsSpiffePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportTCPSpecTlsSpiffe)(nil)).Elem() +} + +func (o ServersTransportTCPSpecTlsSpiffePtrOutput) ToServersTransportTCPSpecTlsSpiffePtrOutput() ServersTransportTCPSpecTlsSpiffePtrOutput { + return o +} + +func (o ServersTransportTCPSpecTlsSpiffePtrOutput) ToServersTransportTCPSpecTlsSpiffePtrOutputWithContext(ctx context.Context) ServersTransportTCPSpecTlsSpiffePtrOutput { + return o +} + +func (o ServersTransportTCPSpecTlsSpiffePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportTCPSpecTlsSpiffe] { + return pulumix.Output[*ServersTransportTCPSpecTlsSpiffe]{ + OutputState: o.OutputState, + } +} + +func (o ServersTransportTCPSpecTlsSpiffePtrOutput) Elem() ServersTransportTCPSpecTlsSpiffeOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTlsSpiffe) ServersTransportTCPSpecTlsSpiffe { + if v != nil { + return *v + } + var ret ServersTransportTCPSpecTlsSpiffe + return ret + }).(ServersTransportTCPSpecTlsSpiffeOutput) +} + +// IDs defines the allowed SPIFFE IDs (takes precedence over the SPIFFE TrustDomain). +func (o ServersTransportTCPSpecTlsSpiffePtrOutput) Ids() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTlsSpiffe) []string { + if v == nil { + return nil + } + return v.Ids + }).(pulumi.StringArrayOutput) +} + +// TrustDomain defines the allowed SPIFFE trust domain. +func (o ServersTransportTCPSpecTlsSpiffePtrOutput) TrustDomain() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServersTransportTCPSpecTlsSpiffe) *string { + if v == nil { + return nil + } + return v.TrustDomain + }).(pulumi.StringPtrOutput) +} + +// TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +type TLSOptionType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // TLSOptionSpec defines the desired state of a TLSOption. + Spec TLSOptionSpec `pulumi:"spec"` +} + +type TLSOptionMetadata struct { +} + +// TLSOptionSpec defines the desired state of a TLSOption. +type TLSOptionSpec struct { + // ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#alpn-protocols + AlpnProtocols []string `pulumi:"alpnProtocols"` + // CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#cipher-suites + CipherSuites []string `pulumi:"cipherSuites"` + // ClientAuth defines the server's policy for TLS Client Authentication. + ClientAuth *TLSOptionSpecClientAuth `pulumi:"clientAuth"` + // CurvePreferences defines the preferred elliptic curves in a specific order. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#curve-preferences + CurvePreferences []string `pulumi:"curvePreferences"` + // MaxVersion defines the maximum TLS version that Traefik will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. Default: None. + MaxVersion *string `pulumi:"maxVersion"` + // MinVersion defines the minimum TLS version that Traefik will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. Default: VersionTLS10. + MinVersion *string `pulumi:"minVersion"` + // PreferServerCipherSuites defines whether the server chooses a cipher suite among his own instead of among the client's. It is enabled automatically when minVersion or maxVersion is set. Deprecated: https://github.com/golang/go/issues/45430 + PreferServerCipherSuites *bool `pulumi:"preferServerCipherSuites"` + // SniStrict defines whether Traefik allows connections from clients connections that do not specify a server_name extension. + SniStrict *bool `pulumi:"sniStrict"` +} + +// TLSOptionSpecInput is an input type that accepts TLSOptionSpecArgs and TLSOptionSpecOutput values. +// You can construct a concrete instance of `TLSOptionSpecInput` via: +// +// TLSOptionSpecArgs{...} +type TLSOptionSpecInput interface { + pulumi.Input + + ToTLSOptionSpecOutput() TLSOptionSpecOutput + ToTLSOptionSpecOutputWithContext(context.Context) TLSOptionSpecOutput +} + +// TLSOptionSpec defines the desired state of a TLSOption. +type TLSOptionSpecArgs struct { + // ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#alpn-protocols + AlpnProtocols pulumi.StringArrayInput `pulumi:"alpnProtocols"` + // CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#cipher-suites + CipherSuites pulumi.StringArrayInput `pulumi:"cipherSuites"` + // ClientAuth defines the server's policy for TLS Client Authentication. + ClientAuth TLSOptionSpecClientAuthPtrInput `pulumi:"clientAuth"` + // CurvePreferences defines the preferred elliptic curves in a specific order. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#curve-preferences + CurvePreferences pulumi.StringArrayInput `pulumi:"curvePreferences"` + // MaxVersion defines the maximum TLS version that Traefik will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. Default: None. + MaxVersion pulumi.StringPtrInput `pulumi:"maxVersion"` + // MinVersion defines the minimum TLS version that Traefik will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. Default: VersionTLS10. + MinVersion pulumi.StringPtrInput `pulumi:"minVersion"` + // PreferServerCipherSuites defines whether the server chooses a cipher suite among his own instead of among the client's. It is enabled automatically when minVersion or maxVersion is set. Deprecated: https://github.com/golang/go/issues/45430 + PreferServerCipherSuites pulumi.BoolPtrInput `pulumi:"preferServerCipherSuites"` + // SniStrict defines whether Traefik allows connections from clients connections that do not specify a server_name extension. + SniStrict pulumi.BoolPtrInput `pulumi:"sniStrict"` +} + +func (TLSOptionSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TLSOptionSpec)(nil)).Elem() +} + +func (i TLSOptionSpecArgs) ToTLSOptionSpecOutput() TLSOptionSpecOutput { + return i.ToTLSOptionSpecOutputWithContext(context.Background()) +} + +func (i TLSOptionSpecArgs) ToTLSOptionSpecOutputWithContext(ctx context.Context) TLSOptionSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSOptionSpecOutput) +} + +func (i TLSOptionSpecArgs) ToOutput(ctx context.Context) pulumix.Output[TLSOptionSpec] { + return pulumix.Output[TLSOptionSpec]{ + OutputState: i.ToTLSOptionSpecOutputWithContext(ctx).OutputState, + } +} + +func (i TLSOptionSpecArgs) ToTLSOptionSpecPtrOutput() TLSOptionSpecPtrOutput { + return i.ToTLSOptionSpecPtrOutputWithContext(context.Background()) +} + +func (i TLSOptionSpecArgs) ToTLSOptionSpecPtrOutputWithContext(ctx context.Context) TLSOptionSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSOptionSpecOutput).ToTLSOptionSpecPtrOutputWithContext(ctx) +} + +// TLSOptionSpecPtrInput is an input type that accepts TLSOptionSpecArgs, TLSOptionSpecPtr and TLSOptionSpecPtrOutput values. +// You can construct a concrete instance of `TLSOptionSpecPtrInput` via: +// +// TLSOptionSpecArgs{...} +// +// or: +// +// nil +type TLSOptionSpecPtrInput interface { + pulumi.Input + + ToTLSOptionSpecPtrOutput() TLSOptionSpecPtrOutput + ToTLSOptionSpecPtrOutputWithContext(context.Context) TLSOptionSpecPtrOutput +} + +type tlsoptionSpecPtrType TLSOptionSpecArgs + +func TLSOptionSpecPtr(v *TLSOptionSpecArgs) TLSOptionSpecPtrInput { + return (*tlsoptionSpecPtrType)(v) +} + +func (*tlsoptionSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TLSOptionSpec)(nil)).Elem() +} + +func (i *tlsoptionSpecPtrType) ToTLSOptionSpecPtrOutput() TLSOptionSpecPtrOutput { + return i.ToTLSOptionSpecPtrOutputWithContext(context.Background()) +} + +func (i *tlsoptionSpecPtrType) ToTLSOptionSpecPtrOutputWithContext(ctx context.Context) TLSOptionSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSOptionSpecPtrOutput) +} + +func (i *tlsoptionSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*TLSOptionSpec] { + return pulumix.Output[*TLSOptionSpec]{ + OutputState: i.ToTLSOptionSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// TLSOptionSpec defines the desired state of a TLSOption. +type TLSOptionSpecOutput struct{ *pulumi.OutputState } + +func (TLSOptionSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TLSOptionSpec)(nil)).Elem() +} + +func (o TLSOptionSpecOutput) ToTLSOptionSpecOutput() TLSOptionSpecOutput { + return o +} + +func (o TLSOptionSpecOutput) ToTLSOptionSpecOutputWithContext(ctx context.Context) TLSOptionSpecOutput { + return o +} + +func (o TLSOptionSpecOutput) ToTLSOptionSpecPtrOutput() TLSOptionSpecPtrOutput { + return o.ToTLSOptionSpecPtrOutputWithContext(context.Background()) +} + +func (o TLSOptionSpecOutput) ToTLSOptionSpecPtrOutputWithContext(ctx context.Context) TLSOptionSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TLSOptionSpec) *TLSOptionSpec { + return &v + }).(TLSOptionSpecPtrOutput) +} + +func (o TLSOptionSpecOutput) ToOutput(ctx context.Context) pulumix.Output[TLSOptionSpec] { + return pulumix.Output[TLSOptionSpec]{ + OutputState: o.OutputState, + } +} + +// ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#alpn-protocols +func (o TLSOptionSpecOutput) AlpnProtocols() pulumi.StringArrayOutput { + return o.ApplyT(func(v TLSOptionSpec) []string { return v.AlpnProtocols }).(pulumi.StringArrayOutput) +} + +// CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#cipher-suites +func (o TLSOptionSpecOutput) CipherSuites() pulumi.StringArrayOutput { + return o.ApplyT(func(v TLSOptionSpec) []string { return v.CipherSuites }).(pulumi.StringArrayOutput) +} + +// ClientAuth defines the server's policy for TLS Client Authentication. +func (o TLSOptionSpecOutput) ClientAuth() TLSOptionSpecClientAuthPtrOutput { + return o.ApplyT(func(v TLSOptionSpec) *TLSOptionSpecClientAuth { return v.ClientAuth }).(TLSOptionSpecClientAuthPtrOutput) +} + +// CurvePreferences defines the preferred elliptic curves in a specific order. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#curve-preferences +func (o TLSOptionSpecOutput) CurvePreferences() pulumi.StringArrayOutput { + return o.ApplyT(func(v TLSOptionSpec) []string { return v.CurvePreferences }).(pulumi.StringArrayOutput) +} + +// MaxVersion defines the maximum TLS version that Traefik will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. Default: None. +func (o TLSOptionSpecOutput) MaxVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v TLSOptionSpec) *string { return v.MaxVersion }).(pulumi.StringPtrOutput) +} + +// MinVersion defines the minimum TLS version that Traefik will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. Default: VersionTLS10. +func (o TLSOptionSpecOutput) MinVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v TLSOptionSpec) *string { return v.MinVersion }).(pulumi.StringPtrOutput) +} + +// PreferServerCipherSuites defines whether the server chooses a cipher suite among his own instead of among the client's. It is enabled automatically when minVersion or maxVersion is set. Deprecated: https://github.com/golang/go/issues/45430 +func (o TLSOptionSpecOutput) PreferServerCipherSuites() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TLSOptionSpec) *bool { return v.PreferServerCipherSuites }).(pulumi.BoolPtrOutput) +} + +// SniStrict defines whether Traefik allows connections from clients connections that do not specify a server_name extension. +func (o TLSOptionSpecOutput) SniStrict() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TLSOptionSpec) *bool { return v.SniStrict }).(pulumi.BoolPtrOutput) +} + +type TLSOptionSpecPtrOutput struct{ *pulumi.OutputState } + +func (TLSOptionSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TLSOptionSpec)(nil)).Elem() +} + +func (o TLSOptionSpecPtrOutput) ToTLSOptionSpecPtrOutput() TLSOptionSpecPtrOutput { + return o +} + +func (o TLSOptionSpecPtrOutput) ToTLSOptionSpecPtrOutputWithContext(ctx context.Context) TLSOptionSpecPtrOutput { + return o +} + +func (o TLSOptionSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TLSOptionSpec] { + return pulumix.Output[*TLSOptionSpec]{ + OutputState: o.OutputState, + } +} + +func (o TLSOptionSpecPtrOutput) Elem() TLSOptionSpecOutput { + return o.ApplyT(func(v *TLSOptionSpec) TLSOptionSpec { + if v != nil { + return *v + } + var ret TLSOptionSpec + return ret + }).(TLSOptionSpecOutput) +} + +// ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#alpn-protocols +func (o TLSOptionSpecPtrOutput) AlpnProtocols() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TLSOptionSpec) []string { + if v == nil { + return nil + } + return v.AlpnProtocols + }).(pulumi.StringArrayOutput) +} + +// CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#cipher-suites +func (o TLSOptionSpecPtrOutput) CipherSuites() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TLSOptionSpec) []string { + if v == nil { + return nil + } + return v.CipherSuites + }).(pulumi.StringArrayOutput) +} + +// ClientAuth defines the server's policy for TLS Client Authentication. +func (o TLSOptionSpecPtrOutput) ClientAuth() TLSOptionSpecClientAuthPtrOutput { + return o.ApplyT(func(v *TLSOptionSpec) *TLSOptionSpecClientAuth { + if v == nil { + return nil + } + return v.ClientAuth + }).(TLSOptionSpecClientAuthPtrOutput) +} + +// CurvePreferences defines the preferred elliptic curves in a specific order. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#curve-preferences +func (o TLSOptionSpecPtrOutput) CurvePreferences() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TLSOptionSpec) []string { + if v == nil { + return nil + } + return v.CurvePreferences + }).(pulumi.StringArrayOutput) +} + +// MaxVersion defines the maximum TLS version that Traefik will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. Default: None. +func (o TLSOptionSpecPtrOutput) MaxVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSOptionSpec) *string { + if v == nil { + return nil + } + return v.MaxVersion + }).(pulumi.StringPtrOutput) +} + +// MinVersion defines the minimum TLS version that Traefik will accept. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. Default: VersionTLS10. +func (o TLSOptionSpecPtrOutput) MinVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSOptionSpec) *string { + if v == nil { + return nil + } + return v.MinVersion + }).(pulumi.StringPtrOutput) +} + +// PreferServerCipherSuites defines whether the server chooses a cipher suite among his own instead of among the client's. It is enabled automatically when minVersion or maxVersion is set. Deprecated: https://github.com/golang/go/issues/45430 +func (o TLSOptionSpecPtrOutput) PreferServerCipherSuites() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TLSOptionSpec) *bool { + if v == nil { + return nil + } + return v.PreferServerCipherSuites + }).(pulumi.BoolPtrOutput) +} + +// SniStrict defines whether Traefik allows connections from clients connections that do not specify a server_name extension. +func (o TLSOptionSpecPtrOutput) SniStrict() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TLSOptionSpec) *bool { + if v == nil { + return nil + } + return v.SniStrict + }).(pulumi.BoolPtrOutput) +} + +// ClientAuth defines the server's policy for TLS Client Authentication. +type TLSOptionSpecClientAuth struct { + // ClientAuthType defines the client authentication type to apply. + ClientAuthType *string `pulumi:"clientAuthType"` + // SecretNames defines the names of the referenced Kubernetes Secret storing certificate details. + SecretNames []string `pulumi:"secretNames"` +} + +// TLSOptionSpecClientAuthInput is an input type that accepts TLSOptionSpecClientAuthArgs and TLSOptionSpecClientAuthOutput values. +// You can construct a concrete instance of `TLSOptionSpecClientAuthInput` via: +// +// TLSOptionSpecClientAuthArgs{...} +type TLSOptionSpecClientAuthInput interface { + pulumi.Input + + ToTLSOptionSpecClientAuthOutput() TLSOptionSpecClientAuthOutput + ToTLSOptionSpecClientAuthOutputWithContext(context.Context) TLSOptionSpecClientAuthOutput +} + +// ClientAuth defines the server's policy for TLS Client Authentication. +type TLSOptionSpecClientAuthArgs struct { + // ClientAuthType defines the client authentication type to apply. + ClientAuthType pulumi.StringPtrInput `pulumi:"clientAuthType"` + // SecretNames defines the names of the referenced Kubernetes Secret storing certificate details. + SecretNames pulumi.StringArrayInput `pulumi:"secretNames"` +} + +func (TLSOptionSpecClientAuthArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TLSOptionSpecClientAuth)(nil)).Elem() +} + +func (i TLSOptionSpecClientAuthArgs) ToTLSOptionSpecClientAuthOutput() TLSOptionSpecClientAuthOutput { + return i.ToTLSOptionSpecClientAuthOutputWithContext(context.Background()) +} + +func (i TLSOptionSpecClientAuthArgs) ToTLSOptionSpecClientAuthOutputWithContext(ctx context.Context) TLSOptionSpecClientAuthOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSOptionSpecClientAuthOutput) +} + +func (i TLSOptionSpecClientAuthArgs) ToOutput(ctx context.Context) pulumix.Output[TLSOptionSpecClientAuth] { + return pulumix.Output[TLSOptionSpecClientAuth]{ + OutputState: i.ToTLSOptionSpecClientAuthOutputWithContext(ctx).OutputState, + } +} + +func (i TLSOptionSpecClientAuthArgs) ToTLSOptionSpecClientAuthPtrOutput() TLSOptionSpecClientAuthPtrOutput { + return i.ToTLSOptionSpecClientAuthPtrOutputWithContext(context.Background()) +} + +func (i TLSOptionSpecClientAuthArgs) ToTLSOptionSpecClientAuthPtrOutputWithContext(ctx context.Context) TLSOptionSpecClientAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSOptionSpecClientAuthOutput).ToTLSOptionSpecClientAuthPtrOutputWithContext(ctx) +} + +// TLSOptionSpecClientAuthPtrInput is an input type that accepts TLSOptionSpecClientAuthArgs, TLSOptionSpecClientAuthPtr and TLSOptionSpecClientAuthPtrOutput values. +// You can construct a concrete instance of `TLSOptionSpecClientAuthPtrInput` via: +// +// TLSOptionSpecClientAuthArgs{...} +// +// or: +// +// nil +type TLSOptionSpecClientAuthPtrInput interface { + pulumi.Input + + ToTLSOptionSpecClientAuthPtrOutput() TLSOptionSpecClientAuthPtrOutput + ToTLSOptionSpecClientAuthPtrOutputWithContext(context.Context) TLSOptionSpecClientAuthPtrOutput +} + +type tlsoptionSpecClientAuthPtrType TLSOptionSpecClientAuthArgs + +func TLSOptionSpecClientAuthPtr(v *TLSOptionSpecClientAuthArgs) TLSOptionSpecClientAuthPtrInput { + return (*tlsoptionSpecClientAuthPtrType)(v) +} + +func (*tlsoptionSpecClientAuthPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TLSOptionSpecClientAuth)(nil)).Elem() +} + +func (i *tlsoptionSpecClientAuthPtrType) ToTLSOptionSpecClientAuthPtrOutput() TLSOptionSpecClientAuthPtrOutput { + return i.ToTLSOptionSpecClientAuthPtrOutputWithContext(context.Background()) +} + +func (i *tlsoptionSpecClientAuthPtrType) ToTLSOptionSpecClientAuthPtrOutputWithContext(ctx context.Context) TLSOptionSpecClientAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSOptionSpecClientAuthPtrOutput) +} + +func (i *tlsoptionSpecClientAuthPtrType) ToOutput(ctx context.Context) pulumix.Output[*TLSOptionSpecClientAuth] { + return pulumix.Output[*TLSOptionSpecClientAuth]{ + OutputState: i.ToTLSOptionSpecClientAuthPtrOutputWithContext(ctx).OutputState, + } +} + +// ClientAuth defines the server's policy for TLS Client Authentication. +type TLSOptionSpecClientAuthOutput struct{ *pulumi.OutputState } + +func (TLSOptionSpecClientAuthOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TLSOptionSpecClientAuth)(nil)).Elem() +} + +func (o TLSOptionSpecClientAuthOutput) ToTLSOptionSpecClientAuthOutput() TLSOptionSpecClientAuthOutput { + return o +} + +func (o TLSOptionSpecClientAuthOutput) ToTLSOptionSpecClientAuthOutputWithContext(ctx context.Context) TLSOptionSpecClientAuthOutput { + return o +} + +func (o TLSOptionSpecClientAuthOutput) ToTLSOptionSpecClientAuthPtrOutput() TLSOptionSpecClientAuthPtrOutput { + return o.ToTLSOptionSpecClientAuthPtrOutputWithContext(context.Background()) +} + +func (o TLSOptionSpecClientAuthOutput) ToTLSOptionSpecClientAuthPtrOutputWithContext(ctx context.Context) TLSOptionSpecClientAuthPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TLSOptionSpecClientAuth) *TLSOptionSpecClientAuth { + return &v + }).(TLSOptionSpecClientAuthPtrOutput) +} + +func (o TLSOptionSpecClientAuthOutput) ToOutput(ctx context.Context) pulumix.Output[TLSOptionSpecClientAuth] { + return pulumix.Output[TLSOptionSpecClientAuth]{ + OutputState: o.OutputState, + } +} + +// ClientAuthType defines the client authentication type to apply. +func (o TLSOptionSpecClientAuthOutput) ClientAuthType() pulumi.StringPtrOutput { + return o.ApplyT(func(v TLSOptionSpecClientAuth) *string { return v.ClientAuthType }).(pulumi.StringPtrOutput) +} + +// SecretNames defines the names of the referenced Kubernetes Secret storing certificate details. +func (o TLSOptionSpecClientAuthOutput) SecretNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v TLSOptionSpecClientAuth) []string { return v.SecretNames }).(pulumi.StringArrayOutput) +} + +type TLSOptionSpecClientAuthPtrOutput struct{ *pulumi.OutputState } + +func (TLSOptionSpecClientAuthPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TLSOptionSpecClientAuth)(nil)).Elem() +} + +func (o TLSOptionSpecClientAuthPtrOutput) ToTLSOptionSpecClientAuthPtrOutput() TLSOptionSpecClientAuthPtrOutput { + return o +} + +func (o TLSOptionSpecClientAuthPtrOutput) ToTLSOptionSpecClientAuthPtrOutputWithContext(ctx context.Context) TLSOptionSpecClientAuthPtrOutput { + return o +} + +func (o TLSOptionSpecClientAuthPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TLSOptionSpecClientAuth] { + return pulumix.Output[*TLSOptionSpecClientAuth]{ + OutputState: o.OutputState, + } +} + +func (o TLSOptionSpecClientAuthPtrOutput) Elem() TLSOptionSpecClientAuthOutput { + return o.ApplyT(func(v *TLSOptionSpecClientAuth) TLSOptionSpecClientAuth { + if v != nil { + return *v + } + var ret TLSOptionSpecClientAuth + return ret + }).(TLSOptionSpecClientAuthOutput) +} + +// ClientAuthType defines the client authentication type to apply. +func (o TLSOptionSpecClientAuthPtrOutput) ClientAuthType() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSOptionSpecClientAuth) *string { + if v == nil { + return nil + } + return v.ClientAuthType + }).(pulumi.StringPtrOutput) +} + +// SecretNames defines the names of the referenced Kubernetes Secret storing certificate details. +func (o TLSOptionSpecClientAuthPtrOutput) SecretNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TLSOptionSpecClientAuth) []string { + if v == nil { + return nil + } + return v.SecretNames + }).(pulumi.StringArrayOutput) +} + +// TLSStore is the CRD implementation of a Traefik TLS Store. For the time being, only the TLSStore named default is supported. This means that you cannot have two stores that are named default in different Kubernetes namespaces. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#certificates-stores +type TLSStoreType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // TLSStoreSpec defines the desired state of a TLSStore. + Spec TLSStoreSpec `pulumi:"spec"` +} + +type TLSStoreMetadata struct { +} + +// TLSStoreSpec defines the desired state of a TLSStore. +type TLSStoreSpec struct { + // Certificates is a list of secret names, each secret holding a key/certificate pair to add to the store. + Certificates []TLSStoreSpecCertificates `pulumi:"certificates"` + // DefaultCertificate defines the default certificate configuration. + DefaultCertificate *TLSStoreSpecDefaultCertificate `pulumi:"defaultCertificate"` + // DefaultGeneratedCert defines the default generated certificate configuration. + DefaultGeneratedCert *TLSStoreSpecDefaultGeneratedCert `pulumi:"defaultGeneratedCert"` +} + +// TLSStoreSpecInput is an input type that accepts TLSStoreSpecArgs and TLSStoreSpecOutput values. +// You can construct a concrete instance of `TLSStoreSpecInput` via: +// +// TLSStoreSpecArgs{...} +type TLSStoreSpecInput interface { + pulumi.Input + + ToTLSStoreSpecOutput() TLSStoreSpecOutput + ToTLSStoreSpecOutputWithContext(context.Context) TLSStoreSpecOutput +} + +// TLSStoreSpec defines the desired state of a TLSStore. +type TLSStoreSpecArgs struct { + // Certificates is a list of secret names, each secret holding a key/certificate pair to add to the store. + Certificates TLSStoreSpecCertificatesArrayInput `pulumi:"certificates"` + // DefaultCertificate defines the default certificate configuration. + DefaultCertificate TLSStoreSpecDefaultCertificatePtrInput `pulumi:"defaultCertificate"` + // DefaultGeneratedCert defines the default generated certificate configuration. + DefaultGeneratedCert TLSStoreSpecDefaultGeneratedCertPtrInput `pulumi:"defaultGeneratedCert"` +} + +func (TLSStoreSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpec)(nil)).Elem() +} + +func (i TLSStoreSpecArgs) ToTLSStoreSpecOutput() TLSStoreSpecOutput { + return i.ToTLSStoreSpecOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecArgs) ToTLSStoreSpecOutputWithContext(ctx context.Context) TLSStoreSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecOutput) +} + +func (i TLSStoreSpecArgs) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpec] { + return pulumix.Output[TLSStoreSpec]{ + OutputState: i.ToTLSStoreSpecOutputWithContext(ctx).OutputState, + } +} + +func (i TLSStoreSpecArgs) ToTLSStoreSpecPtrOutput() TLSStoreSpecPtrOutput { + return i.ToTLSStoreSpecPtrOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecArgs) ToTLSStoreSpecPtrOutputWithContext(ctx context.Context) TLSStoreSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecOutput).ToTLSStoreSpecPtrOutputWithContext(ctx) +} + +// TLSStoreSpecPtrInput is an input type that accepts TLSStoreSpecArgs, TLSStoreSpecPtr and TLSStoreSpecPtrOutput values. +// You can construct a concrete instance of `TLSStoreSpecPtrInput` via: +// +// TLSStoreSpecArgs{...} +// +// or: +// +// nil +type TLSStoreSpecPtrInput interface { + pulumi.Input + + ToTLSStoreSpecPtrOutput() TLSStoreSpecPtrOutput + ToTLSStoreSpecPtrOutputWithContext(context.Context) TLSStoreSpecPtrOutput +} + +type tlsstoreSpecPtrType TLSStoreSpecArgs + +func TLSStoreSpecPtr(v *TLSStoreSpecArgs) TLSStoreSpecPtrInput { + return (*tlsstoreSpecPtrType)(v) +} + +func (*tlsstoreSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStoreSpec)(nil)).Elem() +} + +func (i *tlsstoreSpecPtrType) ToTLSStoreSpecPtrOutput() TLSStoreSpecPtrOutput { + return i.ToTLSStoreSpecPtrOutputWithContext(context.Background()) +} + +func (i *tlsstoreSpecPtrType) ToTLSStoreSpecPtrOutputWithContext(ctx context.Context) TLSStoreSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecPtrOutput) +} + +func (i *tlsstoreSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*TLSStoreSpec] { + return pulumix.Output[*TLSStoreSpec]{ + OutputState: i.ToTLSStoreSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// TLSStoreSpec defines the desired state of a TLSStore. +type TLSStoreSpecOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpec)(nil)).Elem() +} + +func (o TLSStoreSpecOutput) ToTLSStoreSpecOutput() TLSStoreSpecOutput { + return o +} + +func (o TLSStoreSpecOutput) ToTLSStoreSpecOutputWithContext(ctx context.Context) TLSStoreSpecOutput { + return o +} + +func (o TLSStoreSpecOutput) ToTLSStoreSpecPtrOutput() TLSStoreSpecPtrOutput { + return o.ToTLSStoreSpecPtrOutputWithContext(context.Background()) +} + +func (o TLSStoreSpecOutput) ToTLSStoreSpecPtrOutputWithContext(ctx context.Context) TLSStoreSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TLSStoreSpec) *TLSStoreSpec { + return &v + }).(TLSStoreSpecPtrOutput) +} + +func (o TLSStoreSpecOutput) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpec] { + return pulumix.Output[TLSStoreSpec]{ + OutputState: o.OutputState, + } +} + +// Certificates is a list of secret names, each secret holding a key/certificate pair to add to the store. +func (o TLSStoreSpecOutput) Certificates() TLSStoreSpecCertificatesArrayOutput { + return o.ApplyT(func(v TLSStoreSpec) []TLSStoreSpecCertificates { return v.Certificates }).(TLSStoreSpecCertificatesArrayOutput) +} + +// DefaultCertificate defines the default certificate configuration. +func (o TLSStoreSpecOutput) DefaultCertificate() TLSStoreSpecDefaultCertificatePtrOutput { + return o.ApplyT(func(v TLSStoreSpec) *TLSStoreSpecDefaultCertificate { return v.DefaultCertificate }).(TLSStoreSpecDefaultCertificatePtrOutput) +} + +// DefaultGeneratedCert defines the default generated certificate configuration. +func (o TLSStoreSpecOutput) DefaultGeneratedCert() TLSStoreSpecDefaultGeneratedCertPtrOutput { + return o.ApplyT(func(v TLSStoreSpec) *TLSStoreSpecDefaultGeneratedCert { return v.DefaultGeneratedCert }).(TLSStoreSpecDefaultGeneratedCertPtrOutput) +} + +type TLSStoreSpecPtrOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStoreSpec)(nil)).Elem() +} + +func (o TLSStoreSpecPtrOutput) ToTLSStoreSpecPtrOutput() TLSStoreSpecPtrOutput { + return o +} + +func (o TLSStoreSpecPtrOutput) ToTLSStoreSpecPtrOutputWithContext(ctx context.Context) TLSStoreSpecPtrOutput { + return o +} + +func (o TLSStoreSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TLSStoreSpec] { + return pulumix.Output[*TLSStoreSpec]{ + OutputState: o.OutputState, + } +} + +func (o TLSStoreSpecPtrOutput) Elem() TLSStoreSpecOutput { + return o.ApplyT(func(v *TLSStoreSpec) TLSStoreSpec { + if v != nil { + return *v + } + var ret TLSStoreSpec + return ret + }).(TLSStoreSpecOutput) +} + +// Certificates is a list of secret names, each secret holding a key/certificate pair to add to the store. +func (o TLSStoreSpecPtrOutput) Certificates() TLSStoreSpecCertificatesArrayOutput { + return o.ApplyT(func(v *TLSStoreSpec) []TLSStoreSpecCertificates { + if v == nil { + return nil + } + return v.Certificates + }).(TLSStoreSpecCertificatesArrayOutput) +} + +// DefaultCertificate defines the default certificate configuration. +func (o TLSStoreSpecPtrOutput) DefaultCertificate() TLSStoreSpecDefaultCertificatePtrOutput { + return o.ApplyT(func(v *TLSStoreSpec) *TLSStoreSpecDefaultCertificate { + if v == nil { + return nil + } + return v.DefaultCertificate + }).(TLSStoreSpecDefaultCertificatePtrOutput) +} + +// DefaultGeneratedCert defines the default generated certificate configuration. +func (o TLSStoreSpecPtrOutput) DefaultGeneratedCert() TLSStoreSpecDefaultGeneratedCertPtrOutput { + return o.ApplyT(func(v *TLSStoreSpec) *TLSStoreSpecDefaultGeneratedCert { + if v == nil { + return nil + } + return v.DefaultGeneratedCert + }).(TLSStoreSpecDefaultGeneratedCertPtrOutput) +} + +// Certificate holds a secret name for the TLSStore resource. +type TLSStoreSpecCertificates struct { + // SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. + SecretName string `pulumi:"secretName"` +} + +// TLSStoreSpecCertificatesInput is an input type that accepts TLSStoreSpecCertificatesArgs and TLSStoreSpecCertificatesOutput values. +// You can construct a concrete instance of `TLSStoreSpecCertificatesInput` via: +// +// TLSStoreSpecCertificatesArgs{...} +type TLSStoreSpecCertificatesInput interface { + pulumi.Input + + ToTLSStoreSpecCertificatesOutput() TLSStoreSpecCertificatesOutput + ToTLSStoreSpecCertificatesOutputWithContext(context.Context) TLSStoreSpecCertificatesOutput +} + +// Certificate holds a secret name for the TLSStore resource. +type TLSStoreSpecCertificatesArgs struct { + // SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. + SecretName pulumi.StringInput `pulumi:"secretName"` +} + +func (TLSStoreSpecCertificatesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpecCertificates)(nil)).Elem() +} + +func (i TLSStoreSpecCertificatesArgs) ToTLSStoreSpecCertificatesOutput() TLSStoreSpecCertificatesOutput { + return i.ToTLSStoreSpecCertificatesOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecCertificatesArgs) ToTLSStoreSpecCertificatesOutputWithContext(ctx context.Context) TLSStoreSpecCertificatesOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecCertificatesOutput) +} + +func (i TLSStoreSpecCertificatesArgs) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpecCertificates] { + return pulumix.Output[TLSStoreSpecCertificates]{ + OutputState: i.ToTLSStoreSpecCertificatesOutputWithContext(ctx).OutputState, + } +} + +// TLSStoreSpecCertificatesArrayInput is an input type that accepts TLSStoreSpecCertificatesArray and TLSStoreSpecCertificatesArrayOutput values. +// You can construct a concrete instance of `TLSStoreSpecCertificatesArrayInput` via: +// +// TLSStoreSpecCertificatesArray{ TLSStoreSpecCertificatesArgs{...} } +type TLSStoreSpecCertificatesArrayInput interface { + pulumi.Input + + ToTLSStoreSpecCertificatesArrayOutput() TLSStoreSpecCertificatesArrayOutput + ToTLSStoreSpecCertificatesArrayOutputWithContext(context.Context) TLSStoreSpecCertificatesArrayOutput +} + +type TLSStoreSpecCertificatesArray []TLSStoreSpecCertificatesInput + +func (TLSStoreSpecCertificatesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TLSStoreSpecCertificates)(nil)).Elem() +} + +func (i TLSStoreSpecCertificatesArray) ToTLSStoreSpecCertificatesArrayOutput() TLSStoreSpecCertificatesArrayOutput { + return i.ToTLSStoreSpecCertificatesArrayOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecCertificatesArray) ToTLSStoreSpecCertificatesArrayOutputWithContext(ctx context.Context) TLSStoreSpecCertificatesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecCertificatesArrayOutput) +} + +func (i TLSStoreSpecCertificatesArray) ToOutput(ctx context.Context) pulumix.Output[[]TLSStoreSpecCertificates] { + return pulumix.Output[[]TLSStoreSpecCertificates]{ + OutputState: i.ToTLSStoreSpecCertificatesArrayOutputWithContext(ctx).OutputState, + } +} + +// Certificate holds a secret name for the TLSStore resource. +type TLSStoreSpecCertificatesOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecCertificatesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpecCertificates)(nil)).Elem() +} + +func (o TLSStoreSpecCertificatesOutput) ToTLSStoreSpecCertificatesOutput() TLSStoreSpecCertificatesOutput { + return o +} + +func (o TLSStoreSpecCertificatesOutput) ToTLSStoreSpecCertificatesOutputWithContext(ctx context.Context) TLSStoreSpecCertificatesOutput { + return o +} + +func (o TLSStoreSpecCertificatesOutput) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpecCertificates] { + return pulumix.Output[TLSStoreSpecCertificates]{ + OutputState: o.OutputState, + } +} + +// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. +func (o TLSStoreSpecCertificatesOutput) SecretName() pulumi.StringOutput { + return o.ApplyT(func(v TLSStoreSpecCertificates) string { return v.SecretName }).(pulumi.StringOutput) +} + +type TLSStoreSpecCertificatesArrayOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecCertificatesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TLSStoreSpecCertificates)(nil)).Elem() +} + +func (o TLSStoreSpecCertificatesArrayOutput) ToTLSStoreSpecCertificatesArrayOutput() TLSStoreSpecCertificatesArrayOutput { + return o +} + +func (o TLSStoreSpecCertificatesArrayOutput) ToTLSStoreSpecCertificatesArrayOutputWithContext(ctx context.Context) TLSStoreSpecCertificatesArrayOutput { + return o +} + +func (o TLSStoreSpecCertificatesArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]TLSStoreSpecCertificates] { + return pulumix.Output[[]TLSStoreSpecCertificates]{ + OutputState: o.OutputState, + } +} + +func (o TLSStoreSpecCertificatesArrayOutput) Index(i pulumi.IntInput) TLSStoreSpecCertificatesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TLSStoreSpecCertificates { + return vs[0].([]TLSStoreSpecCertificates)[vs[1].(int)] + }).(TLSStoreSpecCertificatesOutput) +} + +// DefaultCertificate defines the default certificate configuration. +type TLSStoreSpecDefaultCertificate struct { + // SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. + SecretName string `pulumi:"secretName"` +} + +// TLSStoreSpecDefaultCertificateInput is an input type that accepts TLSStoreSpecDefaultCertificateArgs and TLSStoreSpecDefaultCertificateOutput values. +// You can construct a concrete instance of `TLSStoreSpecDefaultCertificateInput` via: +// +// TLSStoreSpecDefaultCertificateArgs{...} +type TLSStoreSpecDefaultCertificateInput interface { + pulumi.Input + + ToTLSStoreSpecDefaultCertificateOutput() TLSStoreSpecDefaultCertificateOutput + ToTLSStoreSpecDefaultCertificateOutputWithContext(context.Context) TLSStoreSpecDefaultCertificateOutput +} + +// DefaultCertificate defines the default certificate configuration. +type TLSStoreSpecDefaultCertificateArgs struct { + // SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. + SecretName pulumi.StringInput `pulumi:"secretName"` +} + +func (TLSStoreSpecDefaultCertificateArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpecDefaultCertificate)(nil)).Elem() +} + +func (i TLSStoreSpecDefaultCertificateArgs) ToTLSStoreSpecDefaultCertificateOutput() TLSStoreSpecDefaultCertificateOutput { + return i.ToTLSStoreSpecDefaultCertificateOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecDefaultCertificateArgs) ToTLSStoreSpecDefaultCertificateOutputWithContext(ctx context.Context) TLSStoreSpecDefaultCertificateOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecDefaultCertificateOutput) +} + +func (i TLSStoreSpecDefaultCertificateArgs) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpecDefaultCertificate] { + return pulumix.Output[TLSStoreSpecDefaultCertificate]{ + OutputState: i.ToTLSStoreSpecDefaultCertificateOutputWithContext(ctx).OutputState, + } +} + +func (i TLSStoreSpecDefaultCertificateArgs) ToTLSStoreSpecDefaultCertificatePtrOutput() TLSStoreSpecDefaultCertificatePtrOutput { + return i.ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecDefaultCertificateArgs) ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultCertificatePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecDefaultCertificateOutput).ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(ctx) +} + +// TLSStoreSpecDefaultCertificatePtrInput is an input type that accepts TLSStoreSpecDefaultCertificateArgs, TLSStoreSpecDefaultCertificatePtr and TLSStoreSpecDefaultCertificatePtrOutput values. +// You can construct a concrete instance of `TLSStoreSpecDefaultCertificatePtrInput` via: +// +// TLSStoreSpecDefaultCertificateArgs{...} +// +// or: +// +// nil +type TLSStoreSpecDefaultCertificatePtrInput interface { + pulumi.Input + + ToTLSStoreSpecDefaultCertificatePtrOutput() TLSStoreSpecDefaultCertificatePtrOutput + ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(context.Context) TLSStoreSpecDefaultCertificatePtrOutput +} + +type tlsstoreSpecDefaultCertificatePtrType TLSStoreSpecDefaultCertificateArgs + +func TLSStoreSpecDefaultCertificatePtr(v *TLSStoreSpecDefaultCertificateArgs) TLSStoreSpecDefaultCertificatePtrInput { + return (*tlsstoreSpecDefaultCertificatePtrType)(v) +} + +func (*tlsstoreSpecDefaultCertificatePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStoreSpecDefaultCertificate)(nil)).Elem() +} + +func (i *tlsstoreSpecDefaultCertificatePtrType) ToTLSStoreSpecDefaultCertificatePtrOutput() TLSStoreSpecDefaultCertificatePtrOutput { + return i.ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(context.Background()) +} + +func (i *tlsstoreSpecDefaultCertificatePtrType) ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultCertificatePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecDefaultCertificatePtrOutput) +} + +func (i *tlsstoreSpecDefaultCertificatePtrType) ToOutput(ctx context.Context) pulumix.Output[*TLSStoreSpecDefaultCertificate] { + return pulumix.Output[*TLSStoreSpecDefaultCertificate]{ + OutputState: i.ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(ctx).OutputState, + } +} + +// DefaultCertificate defines the default certificate configuration. +type TLSStoreSpecDefaultCertificateOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecDefaultCertificateOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpecDefaultCertificate)(nil)).Elem() +} + +func (o TLSStoreSpecDefaultCertificateOutput) ToTLSStoreSpecDefaultCertificateOutput() TLSStoreSpecDefaultCertificateOutput { + return o +} + +func (o TLSStoreSpecDefaultCertificateOutput) ToTLSStoreSpecDefaultCertificateOutputWithContext(ctx context.Context) TLSStoreSpecDefaultCertificateOutput { + return o +} + +func (o TLSStoreSpecDefaultCertificateOutput) ToTLSStoreSpecDefaultCertificatePtrOutput() TLSStoreSpecDefaultCertificatePtrOutput { + return o.ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(context.Background()) +} + +func (o TLSStoreSpecDefaultCertificateOutput) ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultCertificatePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TLSStoreSpecDefaultCertificate) *TLSStoreSpecDefaultCertificate { + return &v + }).(TLSStoreSpecDefaultCertificatePtrOutput) +} + +func (o TLSStoreSpecDefaultCertificateOutput) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpecDefaultCertificate] { + return pulumix.Output[TLSStoreSpecDefaultCertificate]{ + OutputState: o.OutputState, + } +} + +// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. +func (o TLSStoreSpecDefaultCertificateOutput) SecretName() pulumi.StringOutput { + return o.ApplyT(func(v TLSStoreSpecDefaultCertificate) string { return v.SecretName }).(pulumi.StringOutput) +} + +type TLSStoreSpecDefaultCertificatePtrOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecDefaultCertificatePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStoreSpecDefaultCertificate)(nil)).Elem() +} + +func (o TLSStoreSpecDefaultCertificatePtrOutput) ToTLSStoreSpecDefaultCertificatePtrOutput() TLSStoreSpecDefaultCertificatePtrOutput { + return o +} + +func (o TLSStoreSpecDefaultCertificatePtrOutput) ToTLSStoreSpecDefaultCertificatePtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultCertificatePtrOutput { + return o +} + +func (o TLSStoreSpecDefaultCertificatePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TLSStoreSpecDefaultCertificate] { + return pulumix.Output[*TLSStoreSpecDefaultCertificate]{ + OutputState: o.OutputState, + } +} + +func (o TLSStoreSpecDefaultCertificatePtrOutput) Elem() TLSStoreSpecDefaultCertificateOutput { + return o.ApplyT(func(v *TLSStoreSpecDefaultCertificate) TLSStoreSpecDefaultCertificate { + if v != nil { + return *v + } + var ret TLSStoreSpecDefaultCertificate + return ret + }).(TLSStoreSpecDefaultCertificateOutput) +} + +// SecretName is the name of the referenced Kubernetes Secret to specify the certificate details. +func (o TLSStoreSpecDefaultCertificatePtrOutput) SecretName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSStoreSpecDefaultCertificate) *string { + if v == nil { + return nil + } + return &v.SecretName + }).(pulumi.StringPtrOutput) +} + +// DefaultGeneratedCert defines the default generated certificate configuration. +type TLSStoreSpecDefaultGeneratedCert struct { + // Domain is the domain definition for the DefaultCertificate. + Domain *TLSStoreSpecDefaultGeneratedCertDomain `pulumi:"domain"` + // Resolver is the name of the resolver that will be used to issue the DefaultCertificate. + Resolver *string `pulumi:"resolver"` +} + +// TLSStoreSpecDefaultGeneratedCertInput is an input type that accepts TLSStoreSpecDefaultGeneratedCertArgs and TLSStoreSpecDefaultGeneratedCertOutput values. +// You can construct a concrete instance of `TLSStoreSpecDefaultGeneratedCertInput` via: +// +// TLSStoreSpecDefaultGeneratedCertArgs{...} +type TLSStoreSpecDefaultGeneratedCertInput interface { + pulumi.Input + + ToTLSStoreSpecDefaultGeneratedCertOutput() TLSStoreSpecDefaultGeneratedCertOutput + ToTLSStoreSpecDefaultGeneratedCertOutputWithContext(context.Context) TLSStoreSpecDefaultGeneratedCertOutput +} + +// DefaultGeneratedCert defines the default generated certificate configuration. +type TLSStoreSpecDefaultGeneratedCertArgs struct { + // Domain is the domain definition for the DefaultCertificate. + Domain TLSStoreSpecDefaultGeneratedCertDomainPtrInput `pulumi:"domain"` + // Resolver is the name of the resolver that will be used to issue the DefaultCertificate. + Resolver pulumi.StringPtrInput `pulumi:"resolver"` +} + +func (TLSStoreSpecDefaultGeneratedCertArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpecDefaultGeneratedCert)(nil)).Elem() +} + +func (i TLSStoreSpecDefaultGeneratedCertArgs) ToTLSStoreSpecDefaultGeneratedCertOutput() TLSStoreSpecDefaultGeneratedCertOutput { + return i.ToTLSStoreSpecDefaultGeneratedCertOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecDefaultGeneratedCertArgs) ToTLSStoreSpecDefaultGeneratedCertOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecDefaultGeneratedCertOutput) +} + +func (i TLSStoreSpecDefaultGeneratedCertArgs) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpecDefaultGeneratedCert] { + return pulumix.Output[TLSStoreSpecDefaultGeneratedCert]{ + OutputState: i.ToTLSStoreSpecDefaultGeneratedCertOutputWithContext(ctx).OutputState, + } +} + +func (i TLSStoreSpecDefaultGeneratedCertArgs) ToTLSStoreSpecDefaultGeneratedCertPtrOutput() TLSStoreSpecDefaultGeneratedCertPtrOutput { + return i.ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecDefaultGeneratedCertArgs) ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecDefaultGeneratedCertOutput).ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(ctx) +} + +// TLSStoreSpecDefaultGeneratedCertPtrInput is an input type that accepts TLSStoreSpecDefaultGeneratedCertArgs, TLSStoreSpecDefaultGeneratedCertPtr and TLSStoreSpecDefaultGeneratedCertPtrOutput values. +// You can construct a concrete instance of `TLSStoreSpecDefaultGeneratedCertPtrInput` via: +// +// TLSStoreSpecDefaultGeneratedCertArgs{...} +// +// or: +// +// nil +type TLSStoreSpecDefaultGeneratedCertPtrInput interface { + pulumi.Input + + ToTLSStoreSpecDefaultGeneratedCertPtrOutput() TLSStoreSpecDefaultGeneratedCertPtrOutput + ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(context.Context) TLSStoreSpecDefaultGeneratedCertPtrOutput +} + +type tlsstoreSpecDefaultGeneratedCertPtrType TLSStoreSpecDefaultGeneratedCertArgs + +func TLSStoreSpecDefaultGeneratedCertPtr(v *TLSStoreSpecDefaultGeneratedCertArgs) TLSStoreSpecDefaultGeneratedCertPtrInput { + return (*tlsstoreSpecDefaultGeneratedCertPtrType)(v) +} + +func (*tlsstoreSpecDefaultGeneratedCertPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStoreSpecDefaultGeneratedCert)(nil)).Elem() +} + +func (i *tlsstoreSpecDefaultGeneratedCertPtrType) ToTLSStoreSpecDefaultGeneratedCertPtrOutput() TLSStoreSpecDefaultGeneratedCertPtrOutput { + return i.ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(context.Background()) +} + +func (i *tlsstoreSpecDefaultGeneratedCertPtrType) ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecDefaultGeneratedCertPtrOutput) +} + +func (i *tlsstoreSpecDefaultGeneratedCertPtrType) ToOutput(ctx context.Context) pulumix.Output[*TLSStoreSpecDefaultGeneratedCert] { + return pulumix.Output[*TLSStoreSpecDefaultGeneratedCert]{ + OutputState: i.ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(ctx).OutputState, + } +} + +// DefaultGeneratedCert defines the default generated certificate configuration. +type TLSStoreSpecDefaultGeneratedCertOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecDefaultGeneratedCertOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpecDefaultGeneratedCert)(nil)).Elem() +} + +func (o TLSStoreSpecDefaultGeneratedCertOutput) ToTLSStoreSpecDefaultGeneratedCertOutput() TLSStoreSpecDefaultGeneratedCertOutput { + return o +} + +func (o TLSStoreSpecDefaultGeneratedCertOutput) ToTLSStoreSpecDefaultGeneratedCertOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertOutput { + return o +} + +func (o TLSStoreSpecDefaultGeneratedCertOutput) ToTLSStoreSpecDefaultGeneratedCertPtrOutput() TLSStoreSpecDefaultGeneratedCertPtrOutput { + return o.ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(context.Background()) +} + +func (o TLSStoreSpecDefaultGeneratedCertOutput) ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TLSStoreSpecDefaultGeneratedCert) *TLSStoreSpecDefaultGeneratedCert { + return &v + }).(TLSStoreSpecDefaultGeneratedCertPtrOutput) +} + +func (o TLSStoreSpecDefaultGeneratedCertOutput) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpecDefaultGeneratedCert] { + return pulumix.Output[TLSStoreSpecDefaultGeneratedCert]{ + OutputState: o.OutputState, + } +} + +// Domain is the domain definition for the DefaultCertificate. +func (o TLSStoreSpecDefaultGeneratedCertOutput) Domain() TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return o.ApplyT(func(v TLSStoreSpecDefaultGeneratedCert) *TLSStoreSpecDefaultGeneratedCertDomain { return v.Domain }).(TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) +} + +// Resolver is the name of the resolver that will be used to issue the DefaultCertificate. +func (o TLSStoreSpecDefaultGeneratedCertOutput) Resolver() pulumi.StringPtrOutput { + return o.ApplyT(func(v TLSStoreSpecDefaultGeneratedCert) *string { return v.Resolver }).(pulumi.StringPtrOutput) +} + +type TLSStoreSpecDefaultGeneratedCertPtrOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecDefaultGeneratedCertPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStoreSpecDefaultGeneratedCert)(nil)).Elem() +} + +func (o TLSStoreSpecDefaultGeneratedCertPtrOutput) ToTLSStoreSpecDefaultGeneratedCertPtrOutput() TLSStoreSpecDefaultGeneratedCertPtrOutput { + return o +} + +func (o TLSStoreSpecDefaultGeneratedCertPtrOutput) ToTLSStoreSpecDefaultGeneratedCertPtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertPtrOutput { + return o +} + +func (o TLSStoreSpecDefaultGeneratedCertPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TLSStoreSpecDefaultGeneratedCert] { + return pulumix.Output[*TLSStoreSpecDefaultGeneratedCert]{ + OutputState: o.OutputState, + } +} + +func (o TLSStoreSpecDefaultGeneratedCertPtrOutput) Elem() TLSStoreSpecDefaultGeneratedCertOutput { + return o.ApplyT(func(v *TLSStoreSpecDefaultGeneratedCert) TLSStoreSpecDefaultGeneratedCert { + if v != nil { + return *v + } + var ret TLSStoreSpecDefaultGeneratedCert + return ret + }).(TLSStoreSpecDefaultGeneratedCertOutput) +} + +// Domain is the domain definition for the DefaultCertificate. +func (o TLSStoreSpecDefaultGeneratedCertPtrOutput) Domain() TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return o.ApplyT(func(v *TLSStoreSpecDefaultGeneratedCert) *TLSStoreSpecDefaultGeneratedCertDomain { + if v == nil { + return nil + } + return v.Domain + }).(TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) +} + +// Resolver is the name of the resolver that will be used to issue the DefaultCertificate. +func (o TLSStoreSpecDefaultGeneratedCertPtrOutput) Resolver() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSStoreSpecDefaultGeneratedCert) *string { + if v == nil { + return nil + } + return v.Resolver + }).(pulumi.StringPtrOutput) +} + +// Domain is the domain definition for the DefaultCertificate. +type TLSStoreSpecDefaultGeneratedCertDomain struct { + // Main defines the main domain name. + Main *string `pulumi:"main"` + // SANs defines the subject alternative domain names. + Sans []string `pulumi:"sans"` +} + +// TLSStoreSpecDefaultGeneratedCertDomainInput is an input type that accepts TLSStoreSpecDefaultGeneratedCertDomainArgs and TLSStoreSpecDefaultGeneratedCertDomainOutput values. +// You can construct a concrete instance of `TLSStoreSpecDefaultGeneratedCertDomainInput` via: +// +// TLSStoreSpecDefaultGeneratedCertDomainArgs{...} +type TLSStoreSpecDefaultGeneratedCertDomainInput interface { + pulumi.Input + + ToTLSStoreSpecDefaultGeneratedCertDomainOutput() TLSStoreSpecDefaultGeneratedCertDomainOutput + ToTLSStoreSpecDefaultGeneratedCertDomainOutputWithContext(context.Context) TLSStoreSpecDefaultGeneratedCertDomainOutput +} + +// Domain is the domain definition for the DefaultCertificate. +type TLSStoreSpecDefaultGeneratedCertDomainArgs struct { + // Main defines the main domain name. + Main pulumi.StringPtrInput `pulumi:"main"` + // SANs defines the subject alternative domain names. + Sans pulumi.StringArrayInput `pulumi:"sans"` +} + +func (TLSStoreSpecDefaultGeneratedCertDomainArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpecDefaultGeneratedCertDomain)(nil)).Elem() +} + +func (i TLSStoreSpecDefaultGeneratedCertDomainArgs) ToTLSStoreSpecDefaultGeneratedCertDomainOutput() TLSStoreSpecDefaultGeneratedCertDomainOutput { + return i.ToTLSStoreSpecDefaultGeneratedCertDomainOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecDefaultGeneratedCertDomainArgs) ToTLSStoreSpecDefaultGeneratedCertDomainOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertDomainOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecDefaultGeneratedCertDomainOutput) +} + +func (i TLSStoreSpecDefaultGeneratedCertDomainArgs) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpecDefaultGeneratedCertDomain] { + return pulumix.Output[TLSStoreSpecDefaultGeneratedCertDomain]{ + OutputState: i.ToTLSStoreSpecDefaultGeneratedCertDomainOutputWithContext(ctx).OutputState, + } +} + +func (i TLSStoreSpecDefaultGeneratedCertDomainArgs) ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutput() TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return i.ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(context.Background()) +} + +func (i TLSStoreSpecDefaultGeneratedCertDomainArgs) ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecDefaultGeneratedCertDomainOutput).ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(ctx) +} + +// TLSStoreSpecDefaultGeneratedCertDomainPtrInput is an input type that accepts TLSStoreSpecDefaultGeneratedCertDomainArgs, TLSStoreSpecDefaultGeneratedCertDomainPtr and TLSStoreSpecDefaultGeneratedCertDomainPtrOutput values. +// You can construct a concrete instance of `TLSStoreSpecDefaultGeneratedCertDomainPtrInput` via: +// +// TLSStoreSpecDefaultGeneratedCertDomainArgs{...} +// +// or: +// +// nil +type TLSStoreSpecDefaultGeneratedCertDomainPtrInput interface { + pulumi.Input + + ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutput() TLSStoreSpecDefaultGeneratedCertDomainPtrOutput + ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(context.Context) TLSStoreSpecDefaultGeneratedCertDomainPtrOutput +} + +type tlsstoreSpecDefaultGeneratedCertDomainPtrType TLSStoreSpecDefaultGeneratedCertDomainArgs + +func TLSStoreSpecDefaultGeneratedCertDomainPtr(v *TLSStoreSpecDefaultGeneratedCertDomainArgs) TLSStoreSpecDefaultGeneratedCertDomainPtrInput { + return (*tlsstoreSpecDefaultGeneratedCertDomainPtrType)(v) +} + +func (*tlsstoreSpecDefaultGeneratedCertDomainPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStoreSpecDefaultGeneratedCertDomain)(nil)).Elem() +} + +func (i *tlsstoreSpecDefaultGeneratedCertDomainPtrType) ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutput() TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return i.ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(context.Background()) +} + +func (i *tlsstoreSpecDefaultGeneratedCertDomainPtrType) ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) +} + +func (i *tlsstoreSpecDefaultGeneratedCertDomainPtrType) ToOutput(ctx context.Context) pulumix.Output[*TLSStoreSpecDefaultGeneratedCertDomain] { + return pulumix.Output[*TLSStoreSpecDefaultGeneratedCertDomain]{ + OutputState: i.ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(ctx).OutputState, + } +} + +// Domain is the domain definition for the DefaultCertificate. +type TLSStoreSpecDefaultGeneratedCertDomainOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecDefaultGeneratedCertDomainOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TLSStoreSpecDefaultGeneratedCertDomain)(nil)).Elem() +} + +func (o TLSStoreSpecDefaultGeneratedCertDomainOutput) ToTLSStoreSpecDefaultGeneratedCertDomainOutput() TLSStoreSpecDefaultGeneratedCertDomainOutput { + return o +} + +func (o TLSStoreSpecDefaultGeneratedCertDomainOutput) ToTLSStoreSpecDefaultGeneratedCertDomainOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertDomainOutput { + return o +} + +func (o TLSStoreSpecDefaultGeneratedCertDomainOutput) ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutput() TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return o.ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(context.Background()) +} + +func (o TLSStoreSpecDefaultGeneratedCertDomainOutput) ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TLSStoreSpecDefaultGeneratedCertDomain) *TLSStoreSpecDefaultGeneratedCertDomain { + return &v + }).(TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) +} + +func (o TLSStoreSpecDefaultGeneratedCertDomainOutput) ToOutput(ctx context.Context) pulumix.Output[TLSStoreSpecDefaultGeneratedCertDomain] { + return pulumix.Output[TLSStoreSpecDefaultGeneratedCertDomain]{ + OutputState: o.OutputState, + } +} + +// Main defines the main domain name. +func (o TLSStoreSpecDefaultGeneratedCertDomainOutput) Main() pulumi.StringPtrOutput { + return o.ApplyT(func(v TLSStoreSpecDefaultGeneratedCertDomain) *string { return v.Main }).(pulumi.StringPtrOutput) +} + +// SANs defines the subject alternative domain names. +func (o TLSStoreSpecDefaultGeneratedCertDomainOutput) Sans() pulumi.StringArrayOutput { + return o.ApplyT(func(v TLSStoreSpecDefaultGeneratedCertDomain) []string { return v.Sans }).(pulumi.StringArrayOutput) +} + +type TLSStoreSpecDefaultGeneratedCertDomainPtrOutput struct{ *pulumi.OutputState } + +func (TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStoreSpecDefaultGeneratedCertDomain)(nil)).Elem() +} + +func (o TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutput() TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return o +} + +func (o TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) ToTLSStoreSpecDefaultGeneratedCertDomainPtrOutputWithContext(ctx context.Context) TLSStoreSpecDefaultGeneratedCertDomainPtrOutput { + return o +} + +func (o TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TLSStoreSpecDefaultGeneratedCertDomain] { + return pulumix.Output[*TLSStoreSpecDefaultGeneratedCertDomain]{ + OutputState: o.OutputState, + } +} + +func (o TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) Elem() TLSStoreSpecDefaultGeneratedCertDomainOutput { + return o.ApplyT(func(v *TLSStoreSpecDefaultGeneratedCertDomain) TLSStoreSpecDefaultGeneratedCertDomain { + if v != nil { + return *v + } + var ret TLSStoreSpecDefaultGeneratedCertDomain + return ret + }).(TLSStoreSpecDefaultGeneratedCertDomainOutput) +} + +// Main defines the main domain name. +func (o TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) Main() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSStoreSpecDefaultGeneratedCertDomain) *string { + if v == nil { + return nil + } + return v.Main + }).(pulumi.StringPtrOutput) +} + +// SANs defines the subject alternative domain names. +func (o TLSStoreSpecDefaultGeneratedCertDomainPtrOutput) Sans() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TLSStoreSpecDefaultGeneratedCertDomain) []string { + if v == nil { + return nil + } + return v.Sans + }).(pulumi.StringArrayOutput) +} + +// TraefikService is the CRD implementation of a Traefik Service. TraefikService object allows to: - Apply weight to Services on load-balancing - Mirror traffic on services More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-traefikservice +type TraefikServiceType struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata v1.ObjectMeta `pulumi:"metadata"` + // TraefikServiceSpec defines the desired state of a TraefikService. + Spec TraefikServiceSpec `pulumi:"spec"` +} + +type TraefikServiceMetadata struct { +} + +// TraefikServiceSpec defines the desired state of a TraefikService. +type TraefikServiceSpec struct { + // Mirroring defines the Mirroring service configuration. + Mirroring *TraefikServiceSpecMirroring `pulumi:"mirroring"` + // Weighted defines the Weighted Round Robin configuration. + Weighted *TraefikServiceSpecWeighted `pulumi:"weighted"` +} + +// TraefikServiceSpecInput is an input type that accepts TraefikServiceSpecArgs and TraefikServiceSpecOutput values. +// You can construct a concrete instance of `TraefikServiceSpecInput` via: +// +// TraefikServiceSpecArgs{...} +type TraefikServiceSpecInput interface { + pulumi.Input + + ToTraefikServiceSpecOutput() TraefikServiceSpecOutput + ToTraefikServiceSpecOutputWithContext(context.Context) TraefikServiceSpecOutput +} + +// TraefikServiceSpec defines the desired state of a TraefikService. +type TraefikServiceSpecArgs struct { + // Mirroring defines the Mirroring service configuration. + Mirroring TraefikServiceSpecMirroringPtrInput `pulumi:"mirroring"` + // Weighted defines the Weighted Round Robin configuration. + Weighted TraefikServiceSpecWeightedPtrInput `pulumi:"weighted"` +} + +func (TraefikServiceSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpec)(nil)).Elem() +} + +func (i TraefikServiceSpecArgs) ToTraefikServiceSpecOutput() TraefikServiceSpecOutput { + return i.ToTraefikServiceSpecOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecArgs) ToTraefikServiceSpecOutputWithContext(ctx context.Context) TraefikServiceSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecOutput) +} + +func (i TraefikServiceSpecArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpec] { + return pulumix.Output[TraefikServiceSpec]{ + OutputState: i.ToTraefikServiceSpecOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecArgs) ToTraefikServiceSpecPtrOutput() TraefikServiceSpecPtrOutput { + return i.ToTraefikServiceSpecPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecArgs) ToTraefikServiceSpecPtrOutputWithContext(ctx context.Context) TraefikServiceSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecOutput).ToTraefikServiceSpecPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecPtrInput is an input type that accepts TraefikServiceSpecArgs, TraefikServiceSpecPtr and TraefikServiceSpecPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecPtrInput` via: +// +// TraefikServiceSpecArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecPtrOutput() TraefikServiceSpecPtrOutput + ToTraefikServiceSpecPtrOutputWithContext(context.Context) TraefikServiceSpecPtrOutput +} + +type traefikServiceSpecPtrType TraefikServiceSpecArgs + +func TraefikServiceSpecPtr(v *TraefikServiceSpecArgs) TraefikServiceSpecPtrInput { + return (*traefikServiceSpecPtrType)(v) +} + +func (*traefikServiceSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpec)(nil)).Elem() +} + +func (i *traefikServiceSpecPtrType) ToTraefikServiceSpecPtrOutput() TraefikServiceSpecPtrOutput { + return i.ToTraefikServiceSpecPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecPtrType) ToTraefikServiceSpecPtrOutputWithContext(ctx context.Context) TraefikServiceSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecPtrOutput) +} + +func (i *traefikServiceSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpec] { + return pulumix.Output[*TraefikServiceSpec]{ + OutputState: i.ToTraefikServiceSpecPtrOutputWithContext(ctx).OutputState, + } +} + +// TraefikServiceSpec defines the desired state of a TraefikService. +type TraefikServiceSpecOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpec)(nil)).Elem() +} + +func (o TraefikServiceSpecOutput) ToTraefikServiceSpecOutput() TraefikServiceSpecOutput { + return o +} + +func (o TraefikServiceSpecOutput) ToTraefikServiceSpecOutputWithContext(ctx context.Context) TraefikServiceSpecOutput { + return o +} + +func (o TraefikServiceSpecOutput) ToTraefikServiceSpecPtrOutput() TraefikServiceSpecPtrOutput { + return o.ToTraefikServiceSpecPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecOutput) ToTraefikServiceSpecPtrOutputWithContext(ctx context.Context) TraefikServiceSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpec) *TraefikServiceSpec { + return &v + }).(TraefikServiceSpecPtrOutput) +} + +func (o TraefikServiceSpecOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpec] { + return pulumix.Output[TraefikServiceSpec]{ + OutputState: o.OutputState, + } +} + +// Mirroring defines the Mirroring service configuration. +func (o TraefikServiceSpecOutput) Mirroring() TraefikServiceSpecMirroringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpec) *TraefikServiceSpecMirroring { return v.Mirroring }).(TraefikServiceSpecMirroringPtrOutput) +} + +// Weighted defines the Weighted Round Robin configuration. +func (o TraefikServiceSpecOutput) Weighted() TraefikServiceSpecWeightedPtrOutput { + return o.ApplyT(func(v TraefikServiceSpec) *TraefikServiceSpecWeighted { return v.Weighted }).(TraefikServiceSpecWeightedPtrOutput) +} + +type TraefikServiceSpecPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpec)(nil)).Elem() +} + +func (o TraefikServiceSpecPtrOutput) ToTraefikServiceSpecPtrOutput() TraefikServiceSpecPtrOutput { + return o +} + +func (o TraefikServiceSpecPtrOutput) ToTraefikServiceSpecPtrOutputWithContext(ctx context.Context) TraefikServiceSpecPtrOutput { + return o +} + +func (o TraefikServiceSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpec] { + return pulumix.Output[*TraefikServiceSpec]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecPtrOutput) Elem() TraefikServiceSpecOutput { + return o.ApplyT(func(v *TraefikServiceSpec) TraefikServiceSpec { + if v != nil { + return *v + } + var ret TraefikServiceSpec + return ret + }).(TraefikServiceSpecOutput) +} + +// Mirroring defines the Mirroring service configuration. +func (o TraefikServiceSpecPtrOutput) Mirroring() TraefikServiceSpecMirroringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpec) *TraefikServiceSpecMirroring { + if v == nil { + return nil + } + return v.Mirroring + }).(TraefikServiceSpecMirroringPtrOutput) +} + +// Weighted defines the Weighted Round Robin configuration. +func (o TraefikServiceSpecPtrOutput) Weighted() TraefikServiceSpecWeightedPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpec) *TraefikServiceSpecWeighted { + if v == nil { + return nil + } + return v.Weighted + }).(TraefikServiceSpecWeightedPtrOutput) +} + +// Mirroring defines the Mirroring service configuration. +type TraefikServiceSpecMirroring struct { + // Kind defines the kind of the Service. + Kind *string `pulumi:"kind"` + // MaxBodySize defines the maximum size allowed for the body of the request. If the body is larger, the request is not mirrored. Default value is -1, which means unlimited size. + MaxBodySize *int `pulumi:"maxBodySize"` + // Mirrors defines the list of mirrors where Traefik will duplicate the traffic. + Mirrors []TraefikServiceSpecMirroringMirrors `pulumi:"mirrors"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace *string `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB *bool `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader *bool `pulumi:"passHostHeader"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port interface{} `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding *TraefikServiceSpecMirroringResponseForwarding `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme *string `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport *string `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky *TraefikServiceSpecMirroringSticky `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy *string `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight *int `pulumi:"weight"` +} + +// TraefikServiceSpecMirroringInput is an input type that accepts TraefikServiceSpecMirroringArgs and TraefikServiceSpecMirroringOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringInput` via: +// +// TraefikServiceSpecMirroringArgs{...} +type TraefikServiceSpecMirroringInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringOutput() TraefikServiceSpecMirroringOutput + ToTraefikServiceSpecMirroringOutputWithContext(context.Context) TraefikServiceSpecMirroringOutput +} + +// Mirroring defines the Mirroring service configuration. +type TraefikServiceSpecMirroringArgs struct { + // Kind defines the kind of the Service. + Kind pulumi.StringPtrInput `pulumi:"kind"` + // MaxBodySize defines the maximum size allowed for the body of the request. If the body is larger, the request is not mirrored. Default value is -1, which means unlimited size. + MaxBodySize pulumi.IntPtrInput `pulumi:"maxBodySize"` + // Mirrors defines the list of mirrors where Traefik will duplicate the traffic. + Mirrors TraefikServiceSpecMirroringMirrorsArrayInput `pulumi:"mirrors"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB pulumi.BoolPtrInput `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader pulumi.BoolPtrInput `pulumi:"passHostHeader"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port pulumi.Input `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding TraefikServiceSpecMirroringResponseForwardingPtrInput `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme pulumi.StringPtrInput `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport pulumi.StringPtrInput `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky TraefikServiceSpecMirroringStickyPtrInput `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy pulumi.StringPtrInput `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (TraefikServiceSpecMirroringArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroring)(nil)).Elem() +} + +func (i TraefikServiceSpecMirroringArgs) ToTraefikServiceSpecMirroringOutput() TraefikServiceSpecMirroringOutput { + return i.ToTraefikServiceSpecMirroringOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringArgs) ToTraefikServiceSpecMirroringOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringOutput) +} + +func (i TraefikServiceSpecMirroringArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroring] { + return pulumix.Output[TraefikServiceSpecMirroring]{ + OutputState: i.ToTraefikServiceSpecMirroringOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecMirroringArgs) ToTraefikServiceSpecMirroringPtrOutput() TraefikServiceSpecMirroringPtrOutput { + return i.ToTraefikServiceSpecMirroringPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringArgs) ToTraefikServiceSpecMirroringPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringOutput).ToTraefikServiceSpecMirroringPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecMirroringPtrInput is an input type that accepts TraefikServiceSpecMirroringArgs, TraefikServiceSpecMirroringPtr and TraefikServiceSpecMirroringPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringPtrInput` via: +// +// TraefikServiceSpecMirroringArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecMirroringPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringPtrOutput() TraefikServiceSpecMirroringPtrOutput + ToTraefikServiceSpecMirroringPtrOutputWithContext(context.Context) TraefikServiceSpecMirroringPtrOutput +} + +type traefikServiceSpecMirroringPtrType TraefikServiceSpecMirroringArgs + +func TraefikServiceSpecMirroringPtr(v *TraefikServiceSpecMirroringArgs) TraefikServiceSpecMirroringPtrInput { + return (*traefikServiceSpecMirroringPtrType)(v) +} + +func (*traefikServiceSpecMirroringPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroring)(nil)).Elem() +} + +func (i *traefikServiceSpecMirroringPtrType) ToTraefikServiceSpecMirroringPtrOutput() TraefikServiceSpecMirroringPtrOutput { + return i.ToTraefikServiceSpecMirroringPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecMirroringPtrType) ToTraefikServiceSpecMirroringPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringPtrOutput) +} + +func (i *traefikServiceSpecMirroringPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroring] { + return pulumix.Output[*TraefikServiceSpecMirroring]{ + OutputState: i.ToTraefikServiceSpecMirroringPtrOutputWithContext(ctx).OutputState, + } +} + +// Mirroring defines the Mirroring service configuration. +type TraefikServiceSpecMirroringOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroring)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringOutput) ToTraefikServiceSpecMirroringOutput() TraefikServiceSpecMirroringOutput { + return o +} + +func (o TraefikServiceSpecMirroringOutput) ToTraefikServiceSpecMirroringOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringOutput { + return o +} + +func (o TraefikServiceSpecMirroringOutput) ToTraefikServiceSpecMirroringPtrOutput() TraefikServiceSpecMirroringPtrOutput { + return o.ToTraefikServiceSpecMirroringPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecMirroringOutput) ToTraefikServiceSpecMirroringPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecMirroring) *TraefikServiceSpecMirroring { + return &v + }).(TraefikServiceSpecMirroringPtrOutput) +} + +func (o TraefikServiceSpecMirroringOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroring] { + return pulumix.Output[TraefikServiceSpecMirroring]{ + OutputState: o.OutputState, + } +} + +// Kind defines the kind of the Service. +func (o TraefikServiceSpecMirroringOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *string { return v.Kind }).(pulumi.StringPtrOutput) +} + +// MaxBodySize defines the maximum size allowed for the body of the request. If the body is larger, the request is not mirrored. Default value is -1, which means unlimited size. +func (o TraefikServiceSpecMirroringOutput) MaxBodySize() pulumi.IntPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *int { return v.MaxBodySize }).(pulumi.IntPtrOutput) +} + +// Mirrors defines the list of mirrors where Traefik will duplicate the traffic. +func (o TraefikServiceSpecMirroringOutput) Mirrors() TraefikServiceSpecMirroringMirrorsArrayOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) []TraefikServiceSpecMirroringMirrors { return v.Mirrors }).(TraefikServiceSpecMirroringMirrorsArrayOutput) +} + +// Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. +func (o TraefikServiceSpecMirroringOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. +func (o TraefikServiceSpecMirroringOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. +func (o TraefikServiceSpecMirroringOutput) NativeLB() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *bool { return v.NativeLB }).(pulumi.BoolPtrOutput) +} + +// PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. +func (o TraefikServiceSpecMirroringOutput) PassHostHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *bool { return v.PassHostHeader }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of a Kubernetes Service. This can be a reference to a named port. +func (o TraefikServiceSpecMirroringOutput) Port() pulumi.AnyOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) interface{} { return v.Port }).(pulumi.AnyOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +func (o TraefikServiceSpecMirroringOutput) ResponseForwarding() TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *TraefikServiceSpecMirroringResponseForwarding { + return v.ResponseForwarding + }).(TraefikServiceSpecMirroringResponseForwardingPtrOutput) +} + +// Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. +func (o TraefikServiceSpecMirroringOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *string { return v.Scheme }).(pulumi.StringPtrOutput) +} + +// ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. +func (o TraefikServiceSpecMirroringOutput) ServersTransport() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *string { return v.ServersTransport }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +func (o TraefikServiceSpecMirroringOutput) Sticky() TraefikServiceSpecMirroringStickyPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *TraefikServiceSpecMirroringSticky { return v.Sticky }).(TraefikServiceSpecMirroringStickyPtrOutput) +} + +// Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. +func (o TraefikServiceSpecMirroringOutput) Strategy() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *string { return v.Strategy }).(pulumi.StringPtrOutput) +} + +// Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). +func (o TraefikServiceSpecMirroringOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroring) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type TraefikServiceSpecMirroringPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroring)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringPtrOutput) ToTraefikServiceSpecMirroringPtrOutput() TraefikServiceSpecMirroringPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringPtrOutput) ToTraefikServiceSpecMirroringPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroring] { + return pulumix.Output[*TraefikServiceSpecMirroring]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecMirroringPtrOutput) Elem() TraefikServiceSpecMirroringOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) TraefikServiceSpecMirroring { + if v != nil { + return *v + } + var ret TraefikServiceSpecMirroring + return ret + }).(TraefikServiceSpecMirroringOutput) +} + +// Kind defines the kind of the Service. +func (o TraefikServiceSpecMirroringPtrOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *string { + if v == nil { + return nil + } + return v.Kind + }).(pulumi.StringPtrOutput) +} + +// MaxBodySize defines the maximum size allowed for the body of the request. If the body is larger, the request is not mirrored. Default value is -1, which means unlimited size. +func (o TraefikServiceSpecMirroringPtrOutput) MaxBodySize() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *int { + if v == nil { + return nil + } + return v.MaxBodySize + }).(pulumi.IntPtrOutput) +} + +// Mirrors defines the list of mirrors where Traefik will duplicate the traffic. +func (o TraefikServiceSpecMirroringPtrOutput) Mirrors() TraefikServiceSpecMirroringMirrorsArrayOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) []TraefikServiceSpecMirroringMirrors { + if v == nil { + return nil + } + return v.Mirrors + }).(TraefikServiceSpecMirroringMirrorsArrayOutput) +} + +// Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. +func (o TraefikServiceSpecMirroringPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. +func (o TraefikServiceSpecMirroringPtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *string { + if v == nil { + return nil + } + return v.Namespace + }).(pulumi.StringPtrOutput) +} + +// NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. +func (o TraefikServiceSpecMirroringPtrOutput) NativeLB() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *bool { + if v == nil { + return nil + } + return v.NativeLB + }).(pulumi.BoolPtrOutput) +} + +// PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. +func (o TraefikServiceSpecMirroringPtrOutput) PassHostHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *bool { + if v == nil { + return nil + } + return v.PassHostHeader + }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of a Kubernetes Service. This can be a reference to a named port. +func (o TraefikServiceSpecMirroringPtrOutput) Port() pulumi.AnyOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) interface{} { + if v == nil { + return nil + } + return v.Port + }).(pulumi.AnyOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +func (o TraefikServiceSpecMirroringPtrOutput) ResponseForwarding() TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *TraefikServiceSpecMirroringResponseForwarding { + if v == nil { + return nil + } + return v.ResponseForwarding + }).(TraefikServiceSpecMirroringResponseForwardingPtrOutput) +} + +// Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. +func (o TraefikServiceSpecMirroringPtrOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *string { + if v == nil { + return nil + } + return v.Scheme + }).(pulumi.StringPtrOutput) +} + +// ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. +func (o TraefikServiceSpecMirroringPtrOutput) ServersTransport() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *string { + if v == nil { + return nil + } + return v.ServersTransport + }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +func (o TraefikServiceSpecMirroringPtrOutput) Sticky() TraefikServiceSpecMirroringStickyPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *TraefikServiceSpecMirroringSticky { + if v == nil { + return nil + } + return v.Sticky + }).(TraefikServiceSpecMirroringStickyPtrOutput) +} + +// Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. +func (o TraefikServiceSpecMirroringPtrOutput) Strategy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *string { + if v == nil { + return nil + } + return v.Strategy + }).(pulumi.StringPtrOutput) +} + +// Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). +func (o TraefikServiceSpecMirroringPtrOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroring) *int { + if v == nil { + return nil + } + return v.Weight + }).(pulumi.IntPtrOutput) +} + +// MirrorService holds the mirror configuration. +type TraefikServiceSpecMirroringMirrors struct { + // Kind defines the kind of the Service. + Kind *string `pulumi:"kind"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace *string `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB *bool `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader *bool `pulumi:"passHostHeader"` + // Percent defines the part of the traffic to mirror. Supported values: 0 to 100. + Percent *int `pulumi:"percent"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port interface{} `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding *TraefikServiceSpecMirroringMirrorsResponseForwarding `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme *string `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport *string `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky *TraefikServiceSpecMirroringMirrorsSticky `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy *string `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight *int `pulumi:"weight"` +} + +// TraefikServiceSpecMirroringMirrorsInput is an input type that accepts TraefikServiceSpecMirroringMirrorsArgs and TraefikServiceSpecMirroringMirrorsOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringMirrorsInput` via: +// +// TraefikServiceSpecMirroringMirrorsArgs{...} +type TraefikServiceSpecMirroringMirrorsInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringMirrorsOutput() TraefikServiceSpecMirroringMirrorsOutput + ToTraefikServiceSpecMirroringMirrorsOutputWithContext(context.Context) TraefikServiceSpecMirroringMirrorsOutput +} + +// MirrorService holds the mirror configuration. +type TraefikServiceSpecMirroringMirrorsArgs struct { + // Kind defines the kind of the Service. + Kind pulumi.StringPtrInput `pulumi:"kind"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB pulumi.BoolPtrInput `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader pulumi.BoolPtrInput `pulumi:"passHostHeader"` + // Percent defines the part of the traffic to mirror. Supported values: 0 to 100. + Percent pulumi.IntPtrInput `pulumi:"percent"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port pulumi.Input `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding TraefikServiceSpecMirroringMirrorsResponseForwardingPtrInput `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme pulumi.StringPtrInput `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport pulumi.StringPtrInput `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky TraefikServiceSpecMirroringMirrorsStickyPtrInput `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy pulumi.StringPtrInput `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (TraefikServiceSpecMirroringMirrorsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringMirrors)(nil)).Elem() +} + +func (i TraefikServiceSpecMirroringMirrorsArgs) ToTraefikServiceSpecMirroringMirrorsOutput() TraefikServiceSpecMirroringMirrorsOutput { + return i.ToTraefikServiceSpecMirroringMirrorsOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringMirrorsArgs) ToTraefikServiceSpecMirroringMirrorsOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsOutput) +} + +func (i TraefikServiceSpecMirroringMirrorsArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringMirrors] { + return pulumix.Output[TraefikServiceSpecMirroringMirrors]{ + OutputState: i.ToTraefikServiceSpecMirroringMirrorsOutputWithContext(ctx).OutputState, + } +} + +// TraefikServiceSpecMirroringMirrorsArrayInput is an input type that accepts TraefikServiceSpecMirroringMirrorsArray and TraefikServiceSpecMirroringMirrorsArrayOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringMirrorsArrayInput` via: +// +// TraefikServiceSpecMirroringMirrorsArray{ TraefikServiceSpecMirroringMirrorsArgs{...} } +type TraefikServiceSpecMirroringMirrorsArrayInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringMirrorsArrayOutput() TraefikServiceSpecMirroringMirrorsArrayOutput + ToTraefikServiceSpecMirroringMirrorsArrayOutputWithContext(context.Context) TraefikServiceSpecMirroringMirrorsArrayOutput +} + +type TraefikServiceSpecMirroringMirrorsArray []TraefikServiceSpecMirroringMirrorsInput + +func (TraefikServiceSpecMirroringMirrorsArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TraefikServiceSpecMirroringMirrors)(nil)).Elem() +} + +func (i TraefikServiceSpecMirroringMirrorsArray) ToTraefikServiceSpecMirroringMirrorsArrayOutput() TraefikServiceSpecMirroringMirrorsArrayOutput { + return i.ToTraefikServiceSpecMirroringMirrorsArrayOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringMirrorsArray) ToTraefikServiceSpecMirroringMirrorsArrayOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsArrayOutput) +} + +func (i TraefikServiceSpecMirroringMirrorsArray) ToOutput(ctx context.Context) pulumix.Output[[]TraefikServiceSpecMirroringMirrors] { + return pulumix.Output[[]TraefikServiceSpecMirroringMirrors]{ + OutputState: i.ToTraefikServiceSpecMirroringMirrorsArrayOutputWithContext(ctx).OutputState, + } +} + +// MirrorService holds the mirror configuration. +type TraefikServiceSpecMirroringMirrorsOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringMirrorsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringMirrors)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringMirrorsOutput) ToTraefikServiceSpecMirroringMirrorsOutput() TraefikServiceSpecMirroringMirrorsOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsOutput) ToTraefikServiceSpecMirroringMirrorsOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringMirrors] { + return pulumix.Output[TraefikServiceSpecMirroringMirrors]{ + OutputState: o.OutputState, + } +} + +// Kind defines the kind of the Service. +func (o TraefikServiceSpecMirroringMirrorsOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *string { return v.Kind }).(pulumi.StringPtrOutput) +} + +// Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. +func (o TraefikServiceSpecMirroringMirrorsOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. +func (o TraefikServiceSpecMirroringMirrorsOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. +func (o TraefikServiceSpecMirroringMirrorsOutput) NativeLB() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *bool { return v.NativeLB }).(pulumi.BoolPtrOutput) +} + +// PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. +func (o TraefikServiceSpecMirroringMirrorsOutput) PassHostHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *bool { return v.PassHostHeader }).(pulumi.BoolPtrOutput) +} + +// Percent defines the part of the traffic to mirror. Supported values: 0 to 100. +func (o TraefikServiceSpecMirroringMirrorsOutput) Percent() pulumi.IntPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *int { return v.Percent }).(pulumi.IntPtrOutput) +} + +// Port defines the port of a Kubernetes Service. This can be a reference to a named port. +func (o TraefikServiceSpecMirroringMirrorsOutput) Port() pulumi.AnyOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) interface{} { return v.Port }).(pulumi.AnyOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +func (o TraefikServiceSpecMirroringMirrorsOutput) ResponseForwarding() TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *TraefikServiceSpecMirroringMirrorsResponseForwarding { + return v.ResponseForwarding + }).(TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput) +} + +// Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. +func (o TraefikServiceSpecMirroringMirrorsOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *string { return v.Scheme }).(pulumi.StringPtrOutput) +} + +// ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. +func (o TraefikServiceSpecMirroringMirrorsOutput) ServersTransport() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *string { return v.ServersTransport }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +func (o TraefikServiceSpecMirroringMirrorsOutput) Sticky() TraefikServiceSpecMirroringMirrorsStickyPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *TraefikServiceSpecMirroringMirrorsSticky { return v.Sticky }).(TraefikServiceSpecMirroringMirrorsStickyPtrOutput) +} + +// Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. +func (o TraefikServiceSpecMirroringMirrorsOutput) Strategy() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *string { return v.Strategy }).(pulumi.StringPtrOutput) +} + +// Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). +func (o TraefikServiceSpecMirroringMirrorsOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrors) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type TraefikServiceSpecMirroringMirrorsArrayOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringMirrorsArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TraefikServiceSpecMirroringMirrors)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringMirrorsArrayOutput) ToTraefikServiceSpecMirroringMirrorsArrayOutput() TraefikServiceSpecMirroringMirrorsArrayOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsArrayOutput) ToTraefikServiceSpecMirroringMirrorsArrayOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsArrayOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]TraefikServiceSpecMirroringMirrors] { + return pulumix.Output[[]TraefikServiceSpecMirroringMirrors]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecMirroringMirrorsArrayOutput) Index(i pulumi.IntInput) TraefikServiceSpecMirroringMirrorsOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TraefikServiceSpecMirroringMirrors { + return vs[0].([]TraefikServiceSpecMirroringMirrors)[vs[1].(int)] + }).(TraefikServiceSpecMirroringMirrorsOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type TraefikServiceSpecMirroringMirrorsResponseForwarding struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval *string `pulumi:"flushInterval"` +} + +// TraefikServiceSpecMirroringMirrorsResponseForwardingInput is an input type that accepts TraefikServiceSpecMirroringMirrorsResponseForwardingArgs and TraefikServiceSpecMirroringMirrorsResponseForwardingOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringMirrorsResponseForwardingInput` via: +// +// TraefikServiceSpecMirroringMirrorsResponseForwardingArgs{...} +type TraefikServiceSpecMirroringMirrorsResponseForwardingInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringMirrorsResponseForwardingOutput() TraefikServiceSpecMirroringMirrorsResponseForwardingOutput + ToTraefikServiceSpecMirroringMirrorsResponseForwardingOutputWithContext(context.Context) TraefikServiceSpecMirroringMirrorsResponseForwardingOutput +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type TraefikServiceSpecMirroringMirrorsResponseForwardingArgs struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval pulumi.StringPtrInput `pulumi:"flushInterval"` +} + +func (TraefikServiceSpecMirroringMirrorsResponseForwardingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsResponseForwarding)(nil)).Elem() +} + +func (i TraefikServiceSpecMirroringMirrorsResponseForwardingArgs) ToTraefikServiceSpecMirroringMirrorsResponseForwardingOutput() TraefikServiceSpecMirroringMirrorsResponseForwardingOutput { + return i.ToTraefikServiceSpecMirroringMirrorsResponseForwardingOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringMirrorsResponseForwardingArgs) ToTraefikServiceSpecMirroringMirrorsResponseForwardingOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsResponseForwardingOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsResponseForwardingOutput) +} + +func (i TraefikServiceSpecMirroringMirrorsResponseForwardingArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringMirrorsResponseForwarding] { + return pulumix.Output[TraefikServiceSpecMirroringMirrorsResponseForwarding]{ + OutputState: i.ToTraefikServiceSpecMirroringMirrorsResponseForwardingOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecMirroringMirrorsResponseForwardingArgs) ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput() TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput { + return i.ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringMirrorsResponseForwardingArgs) ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsResponseForwardingOutput).ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecMirroringMirrorsResponseForwardingPtrInput is an input type that accepts TraefikServiceSpecMirroringMirrorsResponseForwardingArgs, TraefikServiceSpecMirroringMirrorsResponseForwardingPtr and TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringMirrorsResponseForwardingPtrInput` via: +// +// TraefikServiceSpecMirroringMirrorsResponseForwardingArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecMirroringMirrorsResponseForwardingPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput() TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput + ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(context.Context) TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput +} + +type traefikServiceSpecMirroringMirrorsResponseForwardingPtrType TraefikServiceSpecMirroringMirrorsResponseForwardingArgs + +func TraefikServiceSpecMirroringMirrorsResponseForwardingPtr(v *TraefikServiceSpecMirroringMirrorsResponseForwardingArgs) TraefikServiceSpecMirroringMirrorsResponseForwardingPtrInput { + return (*traefikServiceSpecMirroringMirrorsResponseForwardingPtrType)(v) +} + +func (*traefikServiceSpecMirroringMirrorsResponseForwardingPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringMirrorsResponseForwarding)(nil)).Elem() +} + +func (i *traefikServiceSpecMirroringMirrorsResponseForwardingPtrType) ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput() TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput { + return i.ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecMirroringMirrorsResponseForwardingPtrType) ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput) +} + +func (i *traefikServiceSpecMirroringMirrorsResponseForwardingPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringMirrorsResponseForwarding] { + return pulumix.Output[*TraefikServiceSpecMirroringMirrorsResponseForwarding]{ + OutputState: i.ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(ctx).OutputState, + } +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type TraefikServiceSpecMirroringMirrorsResponseForwardingOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringMirrorsResponseForwardingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsResponseForwarding)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingOutput) ToTraefikServiceSpecMirroringMirrorsResponseForwardingOutput() TraefikServiceSpecMirroringMirrorsResponseForwardingOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingOutput) ToTraefikServiceSpecMirroringMirrorsResponseForwardingOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsResponseForwardingOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingOutput) ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput() TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput { + return o.ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingOutput) ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecMirroringMirrorsResponseForwarding) *TraefikServiceSpecMirroringMirrorsResponseForwarding { + return &v + }).(TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput) +} + +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringMirrorsResponseForwarding] { + return pulumix.Output[TraefikServiceSpecMirroringMirrorsResponseForwarding]{ + OutputState: o.OutputState, + } +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrorsResponseForwarding) *string { return v.FlushInterval }).(pulumi.StringPtrOutput) +} + +type TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringMirrorsResponseForwarding)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput) ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput() TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput) ToTraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringMirrorsResponseForwarding] { + return pulumix.Output[*TraefikServiceSpecMirroringMirrorsResponseForwarding]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput) Elem() TraefikServiceSpecMirroringMirrorsResponseForwardingOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringMirrorsResponseForwarding) TraefikServiceSpecMirroringMirrorsResponseForwarding { + if v != nil { + return *v + } + var ret TraefikServiceSpecMirroringMirrorsResponseForwarding + return ret + }).(TraefikServiceSpecMirroringMirrorsResponseForwardingOutput) +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringMirrorsResponseForwarding) *string { + if v == nil { + return nil + } + return v.FlushInterval + }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type TraefikServiceSpecMirroringMirrorsSticky struct { + // Cookie defines the sticky cookie configuration. + Cookie *TraefikServiceSpecMirroringMirrorsStickyCookie `pulumi:"cookie"` +} + +// TraefikServiceSpecMirroringMirrorsStickyInput is an input type that accepts TraefikServiceSpecMirroringMirrorsStickyArgs and TraefikServiceSpecMirroringMirrorsStickyOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringMirrorsStickyInput` via: +// +// TraefikServiceSpecMirroringMirrorsStickyArgs{...} +type TraefikServiceSpecMirroringMirrorsStickyInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringMirrorsStickyOutput() TraefikServiceSpecMirroringMirrorsStickyOutput + ToTraefikServiceSpecMirroringMirrorsStickyOutputWithContext(context.Context) TraefikServiceSpecMirroringMirrorsStickyOutput +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type TraefikServiceSpecMirroringMirrorsStickyArgs struct { + // Cookie defines the sticky cookie configuration. + Cookie TraefikServiceSpecMirroringMirrorsStickyCookiePtrInput `pulumi:"cookie"` +} + +func (TraefikServiceSpecMirroringMirrorsStickyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsSticky)(nil)).Elem() +} + +func (i TraefikServiceSpecMirroringMirrorsStickyArgs) ToTraefikServiceSpecMirroringMirrorsStickyOutput() TraefikServiceSpecMirroringMirrorsStickyOutput { + return i.ToTraefikServiceSpecMirroringMirrorsStickyOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringMirrorsStickyArgs) ToTraefikServiceSpecMirroringMirrorsStickyOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsStickyOutput) +} + +func (i TraefikServiceSpecMirroringMirrorsStickyArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringMirrorsSticky] { + return pulumix.Output[TraefikServiceSpecMirroringMirrorsSticky]{ + OutputState: i.ToTraefikServiceSpecMirroringMirrorsStickyOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecMirroringMirrorsStickyArgs) ToTraefikServiceSpecMirroringMirrorsStickyPtrOutput() TraefikServiceSpecMirroringMirrorsStickyPtrOutput { + return i.ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringMirrorsStickyArgs) ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsStickyOutput).ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecMirroringMirrorsStickyPtrInput is an input type that accepts TraefikServiceSpecMirroringMirrorsStickyArgs, TraefikServiceSpecMirroringMirrorsStickyPtr and TraefikServiceSpecMirroringMirrorsStickyPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringMirrorsStickyPtrInput` via: +// +// TraefikServiceSpecMirroringMirrorsStickyArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecMirroringMirrorsStickyPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringMirrorsStickyPtrOutput() TraefikServiceSpecMirroringMirrorsStickyPtrOutput + ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(context.Context) TraefikServiceSpecMirroringMirrorsStickyPtrOutput +} + +type traefikServiceSpecMirroringMirrorsStickyPtrType TraefikServiceSpecMirroringMirrorsStickyArgs + +func TraefikServiceSpecMirroringMirrorsStickyPtr(v *TraefikServiceSpecMirroringMirrorsStickyArgs) TraefikServiceSpecMirroringMirrorsStickyPtrInput { + return (*traefikServiceSpecMirroringMirrorsStickyPtrType)(v) +} + +func (*traefikServiceSpecMirroringMirrorsStickyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringMirrorsSticky)(nil)).Elem() +} + +func (i *traefikServiceSpecMirroringMirrorsStickyPtrType) ToTraefikServiceSpecMirroringMirrorsStickyPtrOutput() TraefikServiceSpecMirroringMirrorsStickyPtrOutput { + return i.ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecMirroringMirrorsStickyPtrType) ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsStickyPtrOutput) +} + +func (i *traefikServiceSpecMirroringMirrorsStickyPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringMirrorsSticky] { + return pulumix.Output[*TraefikServiceSpecMirroringMirrorsSticky]{ + OutputState: i.ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(ctx).OutputState, + } +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type TraefikServiceSpecMirroringMirrorsStickyOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringMirrorsStickyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsSticky)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringMirrorsStickyOutput) ToTraefikServiceSpecMirroringMirrorsStickyOutput() TraefikServiceSpecMirroringMirrorsStickyOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsStickyOutput) ToTraefikServiceSpecMirroringMirrorsStickyOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsStickyOutput) ToTraefikServiceSpecMirroringMirrorsStickyPtrOutput() TraefikServiceSpecMirroringMirrorsStickyPtrOutput { + return o.ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecMirroringMirrorsStickyOutput) ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecMirroringMirrorsSticky) *TraefikServiceSpecMirroringMirrorsSticky { + return &v + }).(TraefikServiceSpecMirroringMirrorsStickyPtrOutput) +} + +func (o TraefikServiceSpecMirroringMirrorsStickyOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringMirrorsSticky] { + return pulumix.Output[TraefikServiceSpecMirroringMirrorsSticky]{ + OutputState: o.OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +func (o TraefikServiceSpecMirroringMirrorsStickyOutput) Cookie() TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrorsSticky) *TraefikServiceSpecMirroringMirrorsStickyCookie { + return v.Cookie + }).(TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) +} + +type TraefikServiceSpecMirroringMirrorsStickyPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringMirrorsStickyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringMirrorsSticky)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringMirrorsStickyPtrOutput) ToTraefikServiceSpecMirroringMirrorsStickyPtrOutput() TraefikServiceSpecMirroringMirrorsStickyPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsStickyPtrOutput) ToTraefikServiceSpecMirroringMirrorsStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsStickyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringMirrorsSticky] { + return pulumix.Output[*TraefikServiceSpecMirroringMirrorsSticky]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecMirroringMirrorsStickyPtrOutput) Elem() TraefikServiceSpecMirroringMirrorsStickyOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringMirrorsSticky) TraefikServiceSpecMirroringMirrorsSticky { + if v != nil { + return *v + } + var ret TraefikServiceSpecMirroringMirrorsSticky + return ret + }).(TraefikServiceSpecMirroringMirrorsStickyOutput) +} + +// Cookie defines the sticky cookie configuration. +func (o TraefikServiceSpecMirroringMirrorsStickyPtrOutput) Cookie() TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringMirrorsSticky) *TraefikServiceSpecMirroringMirrorsStickyCookie { + if v == nil { + return nil + } + return v.Cookie + }).(TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecMirroringMirrorsStickyCookie struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly *bool `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name *string `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite *string `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure *bool `pulumi:"secure"` +} + +// TraefikServiceSpecMirroringMirrorsStickyCookieInput is an input type that accepts TraefikServiceSpecMirroringMirrorsStickyCookieArgs and TraefikServiceSpecMirroringMirrorsStickyCookieOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringMirrorsStickyCookieInput` via: +// +// TraefikServiceSpecMirroringMirrorsStickyCookieArgs{...} +type TraefikServiceSpecMirroringMirrorsStickyCookieInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringMirrorsStickyCookieOutput() TraefikServiceSpecMirroringMirrorsStickyCookieOutput + ToTraefikServiceSpecMirroringMirrorsStickyCookieOutputWithContext(context.Context) TraefikServiceSpecMirroringMirrorsStickyCookieOutput +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecMirroringMirrorsStickyCookieArgs struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly pulumi.BoolPtrInput `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name pulumi.StringPtrInput `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite pulumi.StringPtrInput `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure pulumi.BoolPtrInput `pulumi:"secure"` +} + +func (TraefikServiceSpecMirroringMirrorsStickyCookieArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsStickyCookie)(nil)).Elem() +} + +func (i TraefikServiceSpecMirroringMirrorsStickyCookieArgs) ToTraefikServiceSpecMirroringMirrorsStickyCookieOutput() TraefikServiceSpecMirroringMirrorsStickyCookieOutput { + return i.ToTraefikServiceSpecMirroringMirrorsStickyCookieOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringMirrorsStickyCookieArgs) ToTraefikServiceSpecMirroringMirrorsStickyCookieOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyCookieOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsStickyCookieOutput) +} + +func (i TraefikServiceSpecMirroringMirrorsStickyCookieArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringMirrorsStickyCookie] { + return pulumix.Output[TraefikServiceSpecMirroringMirrorsStickyCookie]{ + OutputState: i.ToTraefikServiceSpecMirroringMirrorsStickyCookieOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecMirroringMirrorsStickyCookieArgs) ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput() TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return i.ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringMirrorsStickyCookieArgs) ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsStickyCookieOutput).ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(ctx) +} + +// TraefikServiceSpecMirroringMirrorsStickyCookiePtrInput is an input type that accepts TraefikServiceSpecMirroringMirrorsStickyCookieArgs, TraefikServiceSpecMirroringMirrorsStickyCookiePtr and TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringMirrorsStickyCookiePtrInput` via: +// +// TraefikServiceSpecMirroringMirrorsStickyCookieArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecMirroringMirrorsStickyCookiePtrInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput() TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput + ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(context.Context) TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput +} + +type traefikServiceSpecMirroringMirrorsStickyCookiePtrType TraefikServiceSpecMirroringMirrorsStickyCookieArgs + +func TraefikServiceSpecMirroringMirrorsStickyCookiePtr(v *TraefikServiceSpecMirroringMirrorsStickyCookieArgs) TraefikServiceSpecMirroringMirrorsStickyCookiePtrInput { + return (*traefikServiceSpecMirroringMirrorsStickyCookiePtrType)(v) +} + +func (*traefikServiceSpecMirroringMirrorsStickyCookiePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringMirrorsStickyCookie)(nil)).Elem() +} + +func (i *traefikServiceSpecMirroringMirrorsStickyCookiePtrType) ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput() TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return i.ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecMirroringMirrorsStickyCookiePtrType) ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) +} + +func (i *traefikServiceSpecMirroringMirrorsStickyCookiePtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringMirrorsStickyCookie] { + return pulumix.Output[*TraefikServiceSpecMirroringMirrorsStickyCookie]{ + OutputState: i.ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(ctx).OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecMirroringMirrorsStickyCookieOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringMirrorsStickyCookieOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsStickyCookie)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringMirrorsStickyCookieOutput) ToTraefikServiceSpecMirroringMirrorsStickyCookieOutput() TraefikServiceSpecMirroringMirrorsStickyCookieOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsStickyCookieOutput) ToTraefikServiceSpecMirroringMirrorsStickyCookieOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyCookieOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsStickyCookieOutput) ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput() TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return o.ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecMirroringMirrorsStickyCookieOutput) ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecMirroringMirrorsStickyCookie) *TraefikServiceSpecMirroringMirrorsStickyCookie { + return &v + }).(TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) +} + +func (o TraefikServiceSpecMirroringMirrorsStickyCookieOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringMirrorsStickyCookie] { + return pulumix.Output[TraefikServiceSpecMirroringMirrorsStickyCookie]{ + OutputState: o.OutputState, + } +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o TraefikServiceSpecMirroringMirrorsStickyCookieOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrorsStickyCookie) *bool { return v.HttpOnly }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o TraefikServiceSpecMirroringMirrorsStickyCookieOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrorsStickyCookie) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o TraefikServiceSpecMirroringMirrorsStickyCookieOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrorsStickyCookie) *string { return v.SameSite }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o TraefikServiceSpecMirroringMirrorsStickyCookieOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringMirrorsStickyCookie) *bool { return v.Secure }).(pulumi.BoolPtrOutput) +} + +type TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringMirrorsStickyCookie)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput() TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) ToTraefikServiceSpecMirroringMirrorsStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringMirrorsStickyCookie] { + return pulumix.Output[*TraefikServiceSpecMirroringMirrorsStickyCookie]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) Elem() TraefikServiceSpecMirroringMirrorsStickyCookieOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringMirrorsStickyCookie) TraefikServiceSpecMirroringMirrorsStickyCookie { + if v != nil { + return *v + } + var ret TraefikServiceSpecMirroringMirrorsStickyCookie + return ret + }).(TraefikServiceSpecMirroringMirrorsStickyCookieOutput) +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringMirrorsStickyCookie) *bool { + if v == nil { + return nil + } + return v.HttpOnly + }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringMirrorsStickyCookie) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringMirrorsStickyCookie) *string { + if v == nil { + return nil + } + return v.SameSite + }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringMirrorsStickyCookie) *bool { + if v == nil { + return nil + } + return v.Secure + }).(pulumi.BoolPtrOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type TraefikServiceSpecMirroringResponseForwarding struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval *string `pulumi:"flushInterval"` +} + +// TraefikServiceSpecMirroringResponseForwardingInput is an input type that accepts TraefikServiceSpecMirroringResponseForwardingArgs and TraefikServiceSpecMirroringResponseForwardingOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringResponseForwardingInput` via: +// +// TraefikServiceSpecMirroringResponseForwardingArgs{...} +type TraefikServiceSpecMirroringResponseForwardingInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringResponseForwardingOutput() TraefikServiceSpecMirroringResponseForwardingOutput + ToTraefikServiceSpecMirroringResponseForwardingOutputWithContext(context.Context) TraefikServiceSpecMirroringResponseForwardingOutput +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type TraefikServiceSpecMirroringResponseForwardingArgs struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval pulumi.StringPtrInput `pulumi:"flushInterval"` +} + +func (TraefikServiceSpecMirroringResponseForwardingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringResponseForwarding)(nil)).Elem() +} + +func (i TraefikServiceSpecMirroringResponseForwardingArgs) ToTraefikServiceSpecMirroringResponseForwardingOutput() TraefikServiceSpecMirroringResponseForwardingOutput { + return i.ToTraefikServiceSpecMirroringResponseForwardingOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringResponseForwardingArgs) ToTraefikServiceSpecMirroringResponseForwardingOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringResponseForwardingOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringResponseForwardingOutput) +} + +func (i TraefikServiceSpecMirroringResponseForwardingArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringResponseForwarding] { + return pulumix.Output[TraefikServiceSpecMirroringResponseForwarding]{ + OutputState: i.ToTraefikServiceSpecMirroringResponseForwardingOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecMirroringResponseForwardingArgs) ToTraefikServiceSpecMirroringResponseForwardingPtrOutput() TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return i.ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringResponseForwardingArgs) ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringResponseForwardingOutput).ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecMirroringResponseForwardingPtrInput is an input type that accepts TraefikServiceSpecMirroringResponseForwardingArgs, TraefikServiceSpecMirroringResponseForwardingPtr and TraefikServiceSpecMirroringResponseForwardingPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringResponseForwardingPtrInput` via: +// +// TraefikServiceSpecMirroringResponseForwardingArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecMirroringResponseForwardingPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringResponseForwardingPtrOutput() TraefikServiceSpecMirroringResponseForwardingPtrOutput + ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(context.Context) TraefikServiceSpecMirroringResponseForwardingPtrOutput +} + +type traefikServiceSpecMirroringResponseForwardingPtrType TraefikServiceSpecMirroringResponseForwardingArgs + +func TraefikServiceSpecMirroringResponseForwardingPtr(v *TraefikServiceSpecMirroringResponseForwardingArgs) TraefikServiceSpecMirroringResponseForwardingPtrInput { + return (*traefikServiceSpecMirroringResponseForwardingPtrType)(v) +} + +func (*traefikServiceSpecMirroringResponseForwardingPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringResponseForwarding)(nil)).Elem() +} + +func (i *traefikServiceSpecMirroringResponseForwardingPtrType) ToTraefikServiceSpecMirroringResponseForwardingPtrOutput() TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return i.ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecMirroringResponseForwardingPtrType) ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringResponseForwardingPtrOutput) +} + +func (i *traefikServiceSpecMirroringResponseForwardingPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringResponseForwarding] { + return pulumix.Output[*TraefikServiceSpecMirroringResponseForwarding]{ + OutputState: i.ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(ctx).OutputState, + } +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type TraefikServiceSpecMirroringResponseForwardingOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringResponseForwardingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringResponseForwarding)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringResponseForwardingOutput) ToTraefikServiceSpecMirroringResponseForwardingOutput() TraefikServiceSpecMirroringResponseForwardingOutput { + return o +} + +func (o TraefikServiceSpecMirroringResponseForwardingOutput) ToTraefikServiceSpecMirroringResponseForwardingOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringResponseForwardingOutput { + return o +} + +func (o TraefikServiceSpecMirroringResponseForwardingOutput) ToTraefikServiceSpecMirroringResponseForwardingPtrOutput() TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return o.ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecMirroringResponseForwardingOutput) ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecMirroringResponseForwarding) *TraefikServiceSpecMirroringResponseForwarding { + return &v + }).(TraefikServiceSpecMirroringResponseForwardingPtrOutput) +} + +func (o TraefikServiceSpecMirroringResponseForwardingOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringResponseForwarding] { + return pulumix.Output[TraefikServiceSpecMirroringResponseForwarding]{ + OutputState: o.OutputState, + } +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o TraefikServiceSpecMirroringResponseForwardingOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringResponseForwarding) *string { return v.FlushInterval }).(pulumi.StringPtrOutput) +} + +type TraefikServiceSpecMirroringResponseForwardingPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringResponseForwardingPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringResponseForwarding)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringResponseForwardingPtrOutput) ToTraefikServiceSpecMirroringResponseForwardingPtrOutput() TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringResponseForwardingPtrOutput) ToTraefikServiceSpecMirroringResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringResponseForwardingPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringResponseForwardingPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringResponseForwarding] { + return pulumix.Output[*TraefikServiceSpecMirroringResponseForwarding]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecMirroringResponseForwardingPtrOutput) Elem() TraefikServiceSpecMirroringResponseForwardingOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringResponseForwarding) TraefikServiceSpecMirroringResponseForwarding { + if v != nil { + return *v + } + var ret TraefikServiceSpecMirroringResponseForwarding + return ret + }).(TraefikServiceSpecMirroringResponseForwardingOutput) +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o TraefikServiceSpecMirroringResponseForwardingPtrOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringResponseForwarding) *string { + if v == nil { + return nil + } + return v.FlushInterval + }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type TraefikServiceSpecMirroringSticky struct { + // Cookie defines the sticky cookie configuration. + Cookie *TraefikServiceSpecMirroringStickyCookie `pulumi:"cookie"` +} + +// TraefikServiceSpecMirroringStickyInput is an input type that accepts TraefikServiceSpecMirroringStickyArgs and TraefikServiceSpecMirroringStickyOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringStickyInput` via: +// +// TraefikServiceSpecMirroringStickyArgs{...} +type TraefikServiceSpecMirroringStickyInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringStickyOutput() TraefikServiceSpecMirroringStickyOutput + ToTraefikServiceSpecMirroringStickyOutputWithContext(context.Context) TraefikServiceSpecMirroringStickyOutput +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type TraefikServiceSpecMirroringStickyArgs struct { + // Cookie defines the sticky cookie configuration. + Cookie TraefikServiceSpecMirroringStickyCookiePtrInput `pulumi:"cookie"` +} + +func (TraefikServiceSpecMirroringStickyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringSticky)(nil)).Elem() +} + +func (i TraefikServiceSpecMirroringStickyArgs) ToTraefikServiceSpecMirroringStickyOutput() TraefikServiceSpecMirroringStickyOutput { + return i.ToTraefikServiceSpecMirroringStickyOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringStickyArgs) ToTraefikServiceSpecMirroringStickyOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringStickyOutput) +} + +func (i TraefikServiceSpecMirroringStickyArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringSticky] { + return pulumix.Output[TraefikServiceSpecMirroringSticky]{ + OutputState: i.ToTraefikServiceSpecMirroringStickyOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecMirroringStickyArgs) ToTraefikServiceSpecMirroringStickyPtrOutput() TraefikServiceSpecMirroringStickyPtrOutput { + return i.ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringStickyArgs) ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringStickyOutput).ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecMirroringStickyPtrInput is an input type that accepts TraefikServiceSpecMirroringStickyArgs, TraefikServiceSpecMirroringStickyPtr and TraefikServiceSpecMirroringStickyPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringStickyPtrInput` via: +// +// TraefikServiceSpecMirroringStickyArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecMirroringStickyPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringStickyPtrOutput() TraefikServiceSpecMirroringStickyPtrOutput + ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(context.Context) TraefikServiceSpecMirroringStickyPtrOutput +} + +type traefikServiceSpecMirroringStickyPtrType TraefikServiceSpecMirroringStickyArgs + +func TraefikServiceSpecMirroringStickyPtr(v *TraefikServiceSpecMirroringStickyArgs) TraefikServiceSpecMirroringStickyPtrInput { + return (*traefikServiceSpecMirroringStickyPtrType)(v) +} + +func (*traefikServiceSpecMirroringStickyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringSticky)(nil)).Elem() +} + +func (i *traefikServiceSpecMirroringStickyPtrType) ToTraefikServiceSpecMirroringStickyPtrOutput() TraefikServiceSpecMirroringStickyPtrOutput { + return i.ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecMirroringStickyPtrType) ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringStickyPtrOutput) +} + +func (i *traefikServiceSpecMirroringStickyPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringSticky] { + return pulumix.Output[*TraefikServiceSpecMirroringSticky]{ + OutputState: i.ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(ctx).OutputState, + } +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type TraefikServiceSpecMirroringStickyOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringStickyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringSticky)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringStickyOutput) ToTraefikServiceSpecMirroringStickyOutput() TraefikServiceSpecMirroringStickyOutput { + return o +} + +func (o TraefikServiceSpecMirroringStickyOutput) ToTraefikServiceSpecMirroringStickyOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyOutput { + return o +} + +func (o TraefikServiceSpecMirroringStickyOutput) ToTraefikServiceSpecMirroringStickyPtrOutput() TraefikServiceSpecMirroringStickyPtrOutput { + return o.ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecMirroringStickyOutput) ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecMirroringSticky) *TraefikServiceSpecMirroringSticky { + return &v + }).(TraefikServiceSpecMirroringStickyPtrOutput) +} + +func (o TraefikServiceSpecMirroringStickyOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringSticky] { + return pulumix.Output[TraefikServiceSpecMirroringSticky]{ + OutputState: o.OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +func (o TraefikServiceSpecMirroringStickyOutput) Cookie() TraefikServiceSpecMirroringStickyCookiePtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringSticky) *TraefikServiceSpecMirroringStickyCookie { return v.Cookie }).(TraefikServiceSpecMirroringStickyCookiePtrOutput) +} + +type TraefikServiceSpecMirroringStickyPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringStickyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringSticky)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringStickyPtrOutput) ToTraefikServiceSpecMirroringStickyPtrOutput() TraefikServiceSpecMirroringStickyPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringStickyPtrOutput) ToTraefikServiceSpecMirroringStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyPtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringStickyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringSticky] { + return pulumix.Output[*TraefikServiceSpecMirroringSticky]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecMirroringStickyPtrOutput) Elem() TraefikServiceSpecMirroringStickyOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringSticky) TraefikServiceSpecMirroringSticky { + if v != nil { + return *v + } + var ret TraefikServiceSpecMirroringSticky + return ret + }).(TraefikServiceSpecMirroringStickyOutput) +} + +// Cookie defines the sticky cookie configuration. +func (o TraefikServiceSpecMirroringStickyPtrOutput) Cookie() TraefikServiceSpecMirroringStickyCookiePtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringSticky) *TraefikServiceSpecMirroringStickyCookie { + if v == nil { + return nil + } + return v.Cookie + }).(TraefikServiceSpecMirroringStickyCookiePtrOutput) +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecMirroringStickyCookie struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly *bool `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name *string `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite *string `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure *bool `pulumi:"secure"` +} + +// TraefikServiceSpecMirroringStickyCookieInput is an input type that accepts TraefikServiceSpecMirroringStickyCookieArgs and TraefikServiceSpecMirroringStickyCookieOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringStickyCookieInput` via: +// +// TraefikServiceSpecMirroringStickyCookieArgs{...} +type TraefikServiceSpecMirroringStickyCookieInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringStickyCookieOutput() TraefikServiceSpecMirroringStickyCookieOutput + ToTraefikServiceSpecMirroringStickyCookieOutputWithContext(context.Context) TraefikServiceSpecMirroringStickyCookieOutput +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecMirroringStickyCookieArgs struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly pulumi.BoolPtrInput `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name pulumi.StringPtrInput `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite pulumi.StringPtrInput `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure pulumi.BoolPtrInput `pulumi:"secure"` +} + +func (TraefikServiceSpecMirroringStickyCookieArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringStickyCookie)(nil)).Elem() +} + +func (i TraefikServiceSpecMirroringStickyCookieArgs) ToTraefikServiceSpecMirroringStickyCookieOutput() TraefikServiceSpecMirroringStickyCookieOutput { + return i.ToTraefikServiceSpecMirroringStickyCookieOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringStickyCookieArgs) ToTraefikServiceSpecMirroringStickyCookieOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyCookieOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringStickyCookieOutput) +} + +func (i TraefikServiceSpecMirroringStickyCookieArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringStickyCookie] { + return pulumix.Output[TraefikServiceSpecMirroringStickyCookie]{ + OutputState: i.ToTraefikServiceSpecMirroringStickyCookieOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecMirroringStickyCookieArgs) ToTraefikServiceSpecMirroringStickyCookiePtrOutput() TraefikServiceSpecMirroringStickyCookiePtrOutput { + return i.ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecMirroringStickyCookieArgs) ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringStickyCookieOutput).ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(ctx) +} + +// TraefikServiceSpecMirroringStickyCookiePtrInput is an input type that accepts TraefikServiceSpecMirroringStickyCookieArgs, TraefikServiceSpecMirroringStickyCookiePtr and TraefikServiceSpecMirroringStickyCookiePtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecMirroringStickyCookiePtrInput` via: +// +// TraefikServiceSpecMirroringStickyCookieArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecMirroringStickyCookiePtrInput interface { + pulumi.Input + + ToTraefikServiceSpecMirroringStickyCookiePtrOutput() TraefikServiceSpecMirroringStickyCookiePtrOutput + ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(context.Context) TraefikServiceSpecMirroringStickyCookiePtrOutput +} + +type traefikServiceSpecMirroringStickyCookiePtrType TraefikServiceSpecMirroringStickyCookieArgs + +func TraefikServiceSpecMirroringStickyCookiePtr(v *TraefikServiceSpecMirroringStickyCookieArgs) TraefikServiceSpecMirroringStickyCookiePtrInput { + return (*traefikServiceSpecMirroringStickyCookiePtrType)(v) +} + +func (*traefikServiceSpecMirroringStickyCookiePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringStickyCookie)(nil)).Elem() +} + +func (i *traefikServiceSpecMirroringStickyCookiePtrType) ToTraefikServiceSpecMirroringStickyCookiePtrOutput() TraefikServiceSpecMirroringStickyCookiePtrOutput { + return i.ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecMirroringStickyCookiePtrType) ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecMirroringStickyCookiePtrOutput) +} + +func (i *traefikServiceSpecMirroringStickyCookiePtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringStickyCookie] { + return pulumix.Output[*TraefikServiceSpecMirroringStickyCookie]{ + OutputState: i.ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(ctx).OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecMirroringStickyCookieOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringStickyCookieOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecMirroringStickyCookie)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringStickyCookieOutput) ToTraefikServiceSpecMirroringStickyCookieOutput() TraefikServiceSpecMirroringStickyCookieOutput { + return o +} + +func (o TraefikServiceSpecMirroringStickyCookieOutput) ToTraefikServiceSpecMirroringStickyCookieOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyCookieOutput { + return o +} + +func (o TraefikServiceSpecMirroringStickyCookieOutput) ToTraefikServiceSpecMirroringStickyCookiePtrOutput() TraefikServiceSpecMirroringStickyCookiePtrOutput { + return o.ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecMirroringStickyCookieOutput) ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyCookiePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecMirroringStickyCookie) *TraefikServiceSpecMirroringStickyCookie { + return &v + }).(TraefikServiceSpecMirroringStickyCookiePtrOutput) +} + +func (o TraefikServiceSpecMirroringStickyCookieOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecMirroringStickyCookie] { + return pulumix.Output[TraefikServiceSpecMirroringStickyCookie]{ + OutputState: o.OutputState, + } +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o TraefikServiceSpecMirroringStickyCookieOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringStickyCookie) *bool { return v.HttpOnly }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o TraefikServiceSpecMirroringStickyCookieOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringStickyCookie) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o TraefikServiceSpecMirroringStickyCookieOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringStickyCookie) *string { return v.SameSite }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o TraefikServiceSpecMirroringStickyCookieOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecMirroringStickyCookie) *bool { return v.Secure }).(pulumi.BoolPtrOutput) +} + +type TraefikServiceSpecMirroringStickyCookiePtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecMirroringStickyCookiePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecMirroringStickyCookie)(nil)).Elem() +} + +func (o TraefikServiceSpecMirroringStickyCookiePtrOutput) ToTraefikServiceSpecMirroringStickyCookiePtrOutput() TraefikServiceSpecMirroringStickyCookiePtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringStickyCookiePtrOutput) ToTraefikServiceSpecMirroringStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecMirroringStickyCookiePtrOutput { + return o +} + +func (o TraefikServiceSpecMirroringStickyCookiePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecMirroringStickyCookie] { + return pulumix.Output[*TraefikServiceSpecMirroringStickyCookie]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecMirroringStickyCookiePtrOutput) Elem() TraefikServiceSpecMirroringStickyCookieOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringStickyCookie) TraefikServiceSpecMirroringStickyCookie { + if v != nil { + return *v + } + var ret TraefikServiceSpecMirroringStickyCookie + return ret + }).(TraefikServiceSpecMirroringStickyCookieOutput) +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o TraefikServiceSpecMirroringStickyCookiePtrOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringStickyCookie) *bool { + if v == nil { + return nil + } + return v.HttpOnly + }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o TraefikServiceSpecMirroringStickyCookiePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringStickyCookie) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o TraefikServiceSpecMirroringStickyCookiePtrOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringStickyCookie) *string { + if v == nil { + return nil + } + return v.SameSite + }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o TraefikServiceSpecMirroringStickyCookiePtrOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecMirroringStickyCookie) *bool { + if v == nil { + return nil + } + return v.Secure + }).(pulumi.BoolPtrOutput) +} + +// Weighted defines the Weighted Round Robin configuration. +type TraefikServiceSpecWeighted struct { + // Services defines the list of Kubernetes Service and/or TraefikService to load-balance, with weight. + Services []TraefikServiceSpecWeightedServices `pulumi:"services"` + // Sticky defines whether sticky sessions are enabled. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing + Sticky *TraefikServiceSpecWeightedSticky `pulumi:"sticky"` +} + +// TraefikServiceSpecWeightedInput is an input type that accepts TraefikServiceSpecWeightedArgs and TraefikServiceSpecWeightedOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedInput` via: +// +// TraefikServiceSpecWeightedArgs{...} +type TraefikServiceSpecWeightedInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedOutput() TraefikServiceSpecWeightedOutput + ToTraefikServiceSpecWeightedOutputWithContext(context.Context) TraefikServiceSpecWeightedOutput +} + +// Weighted defines the Weighted Round Robin configuration. +type TraefikServiceSpecWeightedArgs struct { + // Services defines the list of Kubernetes Service and/or TraefikService to load-balance, with weight. + Services TraefikServiceSpecWeightedServicesArrayInput `pulumi:"services"` + // Sticky defines whether sticky sessions are enabled. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing + Sticky TraefikServiceSpecWeightedStickyPtrInput `pulumi:"sticky"` +} + +func (TraefikServiceSpecWeightedArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeighted)(nil)).Elem() +} + +func (i TraefikServiceSpecWeightedArgs) ToTraefikServiceSpecWeightedOutput() TraefikServiceSpecWeightedOutput { + return i.ToTraefikServiceSpecWeightedOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedArgs) ToTraefikServiceSpecWeightedOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedOutput) +} + +func (i TraefikServiceSpecWeightedArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeighted] { + return pulumix.Output[TraefikServiceSpecWeighted]{ + OutputState: i.ToTraefikServiceSpecWeightedOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecWeightedArgs) ToTraefikServiceSpecWeightedPtrOutput() TraefikServiceSpecWeightedPtrOutput { + return i.ToTraefikServiceSpecWeightedPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedArgs) ToTraefikServiceSpecWeightedPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedOutput).ToTraefikServiceSpecWeightedPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecWeightedPtrInput is an input type that accepts TraefikServiceSpecWeightedArgs, TraefikServiceSpecWeightedPtr and TraefikServiceSpecWeightedPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedPtrInput` via: +// +// TraefikServiceSpecWeightedArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecWeightedPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedPtrOutput() TraefikServiceSpecWeightedPtrOutput + ToTraefikServiceSpecWeightedPtrOutputWithContext(context.Context) TraefikServiceSpecWeightedPtrOutput +} + +type traefikServiceSpecWeightedPtrType TraefikServiceSpecWeightedArgs + +func TraefikServiceSpecWeightedPtr(v *TraefikServiceSpecWeightedArgs) TraefikServiceSpecWeightedPtrInput { + return (*traefikServiceSpecWeightedPtrType)(v) +} + +func (*traefikServiceSpecWeightedPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeighted)(nil)).Elem() +} + +func (i *traefikServiceSpecWeightedPtrType) ToTraefikServiceSpecWeightedPtrOutput() TraefikServiceSpecWeightedPtrOutput { + return i.ToTraefikServiceSpecWeightedPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecWeightedPtrType) ToTraefikServiceSpecWeightedPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedPtrOutput) +} + +func (i *traefikServiceSpecWeightedPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeighted] { + return pulumix.Output[*TraefikServiceSpecWeighted]{ + OutputState: i.ToTraefikServiceSpecWeightedPtrOutputWithContext(ctx).OutputState, + } +} + +// Weighted defines the Weighted Round Robin configuration. +type TraefikServiceSpecWeightedOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeighted)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedOutput) ToTraefikServiceSpecWeightedOutput() TraefikServiceSpecWeightedOutput { + return o +} + +func (o TraefikServiceSpecWeightedOutput) ToTraefikServiceSpecWeightedOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedOutput { + return o +} + +func (o TraefikServiceSpecWeightedOutput) ToTraefikServiceSpecWeightedPtrOutput() TraefikServiceSpecWeightedPtrOutput { + return o.ToTraefikServiceSpecWeightedPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecWeightedOutput) ToTraefikServiceSpecWeightedPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecWeighted) *TraefikServiceSpecWeighted { + return &v + }).(TraefikServiceSpecWeightedPtrOutput) +} + +func (o TraefikServiceSpecWeightedOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeighted] { + return pulumix.Output[TraefikServiceSpecWeighted]{ + OutputState: o.OutputState, + } +} + +// Services defines the list of Kubernetes Service and/or TraefikService to load-balance, with weight. +func (o TraefikServiceSpecWeightedOutput) Services() TraefikServiceSpecWeightedServicesArrayOutput { + return o.ApplyT(func(v TraefikServiceSpecWeighted) []TraefikServiceSpecWeightedServices { return v.Services }).(TraefikServiceSpecWeightedServicesArrayOutput) +} + +// Sticky defines whether sticky sessions are enabled. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing +func (o TraefikServiceSpecWeightedOutput) Sticky() TraefikServiceSpecWeightedStickyPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeighted) *TraefikServiceSpecWeightedSticky { return v.Sticky }).(TraefikServiceSpecWeightedStickyPtrOutput) +} + +type TraefikServiceSpecWeightedPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeighted)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedPtrOutput) ToTraefikServiceSpecWeightedPtrOutput() TraefikServiceSpecWeightedPtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedPtrOutput) ToTraefikServiceSpecWeightedPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedPtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeighted] { + return pulumix.Output[*TraefikServiceSpecWeighted]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecWeightedPtrOutput) Elem() TraefikServiceSpecWeightedOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeighted) TraefikServiceSpecWeighted { + if v != nil { + return *v + } + var ret TraefikServiceSpecWeighted + return ret + }).(TraefikServiceSpecWeightedOutput) +} + +// Services defines the list of Kubernetes Service and/or TraefikService to load-balance, with weight. +func (o TraefikServiceSpecWeightedPtrOutput) Services() TraefikServiceSpecWeightedServicesArrayOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeighted) []TraefikServiceSpecWeightedServices { + if v == nil { + return nil + } + return v.Services + }).(TraefikServiceSpecWeightedServicesArrayOutput) +} + +// Sticky defines whether sticky sessions are enabled. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing +func (o TraefikServiceSpecWeightedPtrOutput) Sticky() TraefikServiceSpecWeightedStickyPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeighted) *TraefikServiceSpecWeightedSticky { + if v == nil { + return nil + } + return v.Sticky + }).(TraefikServiceSpecWeightedStickyPtrOutput) +} + +// Service defines an upstream HTTP service to proxy traffic to. +type TraefikServiceSpecWeightedServices struct { + // Kind defines the kind of the Service. + Kind *string `pulumi:"kind"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name string `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace *string `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB *bool `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader *bool `pulumi:"passHostHeader"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port interface{} `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding *TraefikServiceSpecWeightedServicesResponseForwarding `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme *string `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport *string `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky *TraefikServiceSpecWeightedServicesSticky `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy *string `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight *int `pulumi:"weight"` +} + +// TraefikServiceSpecWeightedServicesInput is an input type that accepts TraefikServiceSpecWeightedServicesArgs and TraefikServiceSpecWeightedServicesOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedServicesInput` via: +// +// TraefikServiceSpecWeightedServicesArgs{...} +type TraefikServiceSpecWeightedServicesInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedServicesOutput() TraefikServiceSpecWeightedServicesOutput + ToTraefikServiceSpecWeightedServicesOutputWithContext(context.Context) TraefikServiceSpecWeightedServicesOutput +} + +// Service defines an upstream HTTP service to proxy traffic to. +type TraefikServiceSpecWeightedServicesArgs struct { + // Kind defines the kind of the Service. + Kind pulumi.StringPtrInput `pulumi:"kind"` + // Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. + Name pulumi.StringInput `pulumi:"name"` + // Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + // NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. + NativeLB pulumi.BoolPtrInput `pulumi:"nativeLB"` + // PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. + PassHostHeader pulumi.BoolPtrInput `pulumi:"passHostHeader"` + // Port defines the port of a Kubernetes Service. This can be a reference to a named port. + Port pulumi.Input `pulumi:"port"` + // ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. + ResponseForwarding TraefikServiceSpecWeightedServicesResponseForwardingPtrInput `pulumi:"responseForwarding"` + // Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. + Scheme pulumi.StringPtrInput `pulumi:"scheme"` + // ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. + ServersTransport pulumi.StringPtrInput `pulumi:"serversTransport"` + // Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions + Sticky TraefikServiceSpecWeightedServicesStickyPtrInput `pulumi:"sticky"` + // Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. + Strategy pulumi.StringPtrInput `pulumi:"strategy"` + // Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (TraefikServiceSpecWeightedServicesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedServices)(nil)).Elem() +} + +func (i TraefikServiceSpecWeightedServicesArgs) ToTraefikServiceSpecWeightedServicesOutput() TraefikServiceSpecWeightedServicesOutput { + return i.ToTraefikServiceSpecWeightedServicesOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedServicesArgs) ToTraefikServiceSpecWeightedServicesOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesOutput) +} + +func (i TraefikServiceSpecWeightedServicesArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedServices] { + return pulumix.Output[TraefikServiceSpecWeightedServices]{ + OutputState: i.ToTraefikServiceSpecWeightedServicesOutputWithContext(ctx).OutputState, + } +} + +// TraefikServiceSpecWeightedServicesArrayInput is an input type that accepts TraefikServiceSpecWeightedServicesArray and TraefikServiceSpecWeightedServicesArrayOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedServicesArrayInput` via: +// +// TraefikServiceSpecWeightedServicesArray{ TraefikServiceSpecWeightedServicesArgs{...} } +type TraefikServiceSpecWeightedServicesArrayInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedServicesArrayOutput() TraefikServiceSpecWeightedServicesArrayOutput + ToTraefikServiceSpecWeightedServicesArrayOutputWithContext(context.Context) TraefikServiceSpecWeightedServicesArrayOutput +} + +type TraefikServiceSpecWeightedServicesArray []TraefikServiceSpecWeightedServicesInput + +func (TraefikServiceSpecWeightedServicesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TraefikServiceSpecWeightedServices)(nil)).Elem() +} + +func (i TraefikServiceSpecWeightedServicesArray) ToTraefikServiceSpecWeightedServicesArrayOutput() TraefikServiceSpecWeightedServicesArrayOutput { + return i.ToTraefikServiceSpecWeightedServicesArrayOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedServicesArray) ToTraefikServiceSpecWeightedServicesArrayOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesArrayOutput) +} + +func (i TraefikServiceSpecWeightedServicesArray) ToOutput(ctx context.Context) pulumix.Output[[]TraefikServiceSpecWeightedServices] { + return pulumix.Output[[]TraefikServiceSpecWeightedServices]{ + OutputState: i.ToTraefikServiceSpecWeightedServicesArrayOutputWithContext(ctx).OutputState, + } +} + +// Service defines an upstream HTTP service to proxy traffic to. +type TraefikServiceSpecWeightedServicesOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedServicesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedServices)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedServicesOutput) ToTraefikServiceSpecWeightedServicesOutput() TraefikServiceSpecWeightedServicesOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesOutput) ToTraefikServiceSpecWeightedServicesOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedServices] { + return pulumix.Output[TraefikServiceSpecWeightedServices]{ + OutputState: o.OutputState, + } +} + +// Kind defines the kind of the Service. +func (o TraefikServiceSpecWeightedServicesOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *string { return v.Kind }).(pulumi.StringPtrOutput) +} + +// Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field. +func (o TraefikServiceSpecWeightedServicesOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) string { return v.Name }).(pulumi.StringOutput) +} + +// Namespace defines the namespace of the referenced Kubernetes Service or TraefikService. +func (o TraefikServiceSpecWeightedServicesOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false. +func (o TraefikServiceSpecWeightedServicesOutput) NativeLB() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *bool { return v.NativeLB }).(pulumi.BoolPtrOutput) +} + +// PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true. +func (o TraefikServiceSpecWeightedServicesOutput) PassHostHeader() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *bool { return v.PassHostHeader }).(pulumi.BoolPtrOutput) +} + +// Port defines the port of a Kubernetes Service. This can be a reference to a named port. +func (o TraefikServiceSpecWeightedServicesOutput) Port() pulumi.AnyOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) interface{} { return v.Port }).(pulumi.AnyOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +func (o TraefikServiceSpecWeightedServicesOutput) ResponseForwarding() TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *TraefikServiceSpecWeightedServicesResponseForwarding { + return v.ResponseForwarding + }).(TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput) +} + +// Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise. +func (o TraefikServiceSpecWeightedServicesOutput) Scheme() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *string { return v.Scheme }).(pulumi.StringPtrOutput) +} + +// ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service. +func (o TraefikServiceSpecWeightedServicesOutput) ServersTransport() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *string { return v.ServersTransport }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +func (o TraefikServiceSpecWeightedServicesOutput) Sticky() TraefikServiceSpecWeightedServicesStickyPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *TraefikServiceSpecWeightedServicesSticky { return v.Sticky }).(TraefikServiceSpecWeightedServicesStickyPtrOutput) +} + +// Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment. +func (o TraefikServiceSpecWeightedServicesOutput) Strategy() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *string { return v.Strategy }).(pulumi.StringPtrOutput) +} + +// Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin). +func (o TraefikServiceSpecWeightedServicesOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServices) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type TraefikServiceSpecWeightedServicesArrayOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedServicesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TraefikServiceSpecWeightedServices)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedServicesArrayOutput) ToTraefikServiceSpecWeightedServicesArrayOutput() TraefikServiceSpecWeightedServicesArrayOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesArrayOutput) ToTraefikServiceSpecWeightedServicesArrayOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesArrayOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]TraefikServiceSpecWeightedServices] { + return pulumix.Output[[]TraefikServiceSpecWeightedServices]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecWeightedServicesArrayOutput) Index(i pulumi.IntInput) TraefikServiceSpecWeightedServicesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TraefikServiceSpecWeightedServices { + return vs[0].([]TraefikServiceSpecWeightedServices)[vs[1].(int)] + }).(TraefikServiceSpecWeightedServicesOutput) +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type TraefikServiceSpecWeightedServicesResponseForwarding struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval *string `pulumi:"flushInterval"` +} + +// TraefikServiceSpecWeightedServicesResponseForwardingInput is an input type that accepts TraefikServiceSpecWeightedServicesResponseForwardingArgs and TraefikServiceSpecWeightedServicesResponseForwardingOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedServicesResponseForwardingInput` via: +// +// TraefikServiceSpecWeightedServicesResponseForwardingArgs{...} +type TraefikServiceSpecWeightedServicesResponseForwardingInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedServicesResponseForwardingOutput() TraefikServiceSpecWeightedServicesResponseForwardingOutput + ToTraefikServiceSpecWeightedServicesResponseForwardingOutputWithContext(context.Context) TraefikServiceSpecWeightedServicesResponseForwardingOutput +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type TraefikServiceSpecWeightedServicesResponseForwardingArgs struct { + // FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms + FlushInterval pulumi.StringPtrInput `pulumi:"flushInterval"` +} + +func (TraefikServiceSpecWeightedServicesResponseForwardingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedServicesResponseForwarding)(nil)).Elem() +} + +func (i TraefikServiceSpecWeightedServicesResponseForwardingArgs) ToTraefikServiceSpecWeightedServicesResponseForwardingOutput() TraefikServiceSpecWeightedServicesResponseForwardingOutput { + return i.ToTraefikServiceSpecWeightedServicesResponseForwardingOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedServicesResponseForwardingArgs) ToTraefikServiceSpecWeightedServicesResponseForwardingOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesResponseForwardingOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesResponseForwardingOutput) +} + +func (i TraefikServiceSpecWeightedServicesResponseForwardingArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedServicesResponseForwarding] { + return pulumix.Output[TraefikServiceSpecWeightedServicesResponseForwarding]{ + OutputState: i.ToTraefikServiceSpecWeightedServicesResponseForwardingOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecWeightedServicesResponseForwardingArgs) ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutput() TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput { + return i.ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedServicesResponseForwardingArgs) ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesResponseForwardingOutput).ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecWeightedServicesResponseForwardingPtrInput is an input type that accepts TraefikServiceSpecWeightedServicesResponseForwardingArgs, TraefikServiceSpecWeightedServicesResponseForwardingPtr and TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedServicesResponseForwardingPtrInput` via: +// +// TraefikServiceSpecWeightedServicesResponseForwardingArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecWeightedServicesResponseForwardingPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutput() TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput + ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(context.Context) TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput +} + +type traefikServiceSpecWeightedServicesResponseForwardingPtrType TraefikServiceSpecWeightedServicesResponseForwardingArgs + +func TraefikServiceSpecWeightedServicesResponseForwardingPtr(v *TraefikServiceSpecWeightedServicesResponseForwardingArgs) TraefikServiceSpecWeightedServicesResponseForwardingPtrInput { + return (*traefikServiceSpecWeightedServicesResponseForwardingPtrType)(v) +} + +func (*traefikServiceSpecWeightedServicesResponseForwardingPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedServicesResponseForwarding)(nil)).Elem() +} + +func (i *traefikServiceSpecWeightedServicesResponseForwardingPtrType) ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutput() TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput { + return i.ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecWeightedServicesResponseForwardingPtrType) ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput) +} + +func (i *traefikServiceSpecWeightedServicesResponseForwardingPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedServicesResponseForwarding] { + return pulumix.Output[*TraefikServiceSpecWeightedServicesResponseForwarding]{ + OutputState: i.ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(ctx).OutputState, + } +} + +// ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client. +type TraefikServiceSpecWeightedServicesResponseForwardingOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedServicesResponseForwardingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedServicesResponseForwarding)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedServicesResponseForwardingOutput) ToTraefikServiceSpecWeightedServicesResponseForwardingOutput() TraefikServiceSpecWeightedServicesResponseForwardingOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesResponseForwardingOutput) ToTraefikServiceSpecWeightedServicesResponseForwardingOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesResponseForwardingOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesResponseForwardingOutput) ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutput() TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput { + return o.ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecWeightedServicesResponseForwardingOutput) ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecWeightedServicesResponseForwarding) *TraefikServiceSpecWeightedServicesResponseForwarding { + return &v + }).(TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput) +} + +func (o TraefikServiceSpecWeightedServicesResponseForwardingOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedServicesResponseForwarding] { + return pulumix.Output[TraefikServiceSpecWeightedServicesResponseForwarding]{ + OutputState: o.OutputState, + } +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o TraefikServiceSpecWeightedServicesResponseForwardingOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServicesResponseForwarding) *string { return v.FlushInterval }).(pulumi.StringPtrOutput) +} + +type TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedServicesResponseForwarding)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput) ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutput() TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput) ToTraefikServiceSpecWeightedServicesResponseForwardingPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedServicesResponseForwarding] { + return pulumix.Output[*TraefikServiceSpecWeightedServicesResponseForwarding]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput) Elem() TraefikServiceSpecWeightedServicesResponseForwardingOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedServicesResponseForwarding) TraefikServiceSpecWeightedServicesResponseForwarding { + if v != nil { + return *v + } + var ret TraefikServiceSpecWeightedServicesResponseForwarding + return ret + }).(TraefikServiceSpecWeightedServicesResponseForwardingOutput) +} + +// FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms +func (o TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput) FlushInterval() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedServicesResponseForwarding) *string { + if v == nil { + return nil + } + return v.FlushInterval + }).(pulumi.StringPtrOutput) +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type TraefikServiceSpecWeightedServicesSticky struct { + // Cookie defines the sticky cookie configuration. + Cookie *TraefikServiceSpecWeightedServicesStickyCookie `pulumi:"cookie"` +} + +// TraefikServiceSpecWeightedServicesStickyInput is an input type that accepts TraefikServiceSpecWeightedServicesStickyArgs and TraefikServiceSpecWeightedServicesStickyOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedServicesStickyInput` via: +// +// TraefikServiceSpecWeightedServicesStickyArgs{...} +type TraefikServiceSpecWeightedServicesStickyInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedServicesStickyOutput() TraefikServiceSpecWeightedServicesStickyOutput + ToTraefikServiceSpecWeightedServicesStickyOutputWithContext(context.Context) TraefikServiceSpecWeightedServicesStickyOutput +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type TraefikServiceSpecWeightedServicesStickyArgs struct { + // Cookie defines the sticky cookie configuration. + Cookie TraefikServiceSpecWeightedServicesStickyCookiePtrInput `pulumi:"cookie"` +} + +func (TraefikServiceSpecWeightedServicesStickyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedServicesSticky)(nil)).Elem() +} + +func (i TraefikServiceSpecWeightedServicesStickyArgs) ToTraefikServiceSpecWeightedServicesStickyOutput() TraefikServiceSpecWeightedServicesStickyOutput { + return i.ToTraefikServiceSpecWeightedServicesStickyOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedServicesStickyArgs) ToTraefikServiceSpecWeightedServicesStickyOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesStickyOutput) +} + +func (i TraefikServiceSpecWeightedServicesStickyArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedServicesSticky] { + return pulumix.Output[TraefikServiceSpecWeightedServicesSticky]{ + OutputState: i.ToTraefikServiceSpecWeightedServicesStickyOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecWeightedServicesStickyArgs) ToTraefikServiceSpecWeightedServicesStickyPtrOutput() TraefikServiceSpecWeightedServicesStickyPtrOutput { + return i.ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedServicesStickyArgs) ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesStickyOutput).ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecWeightedServicesStickyPtrInput is an input type that accepts TraefikServiceSpecWeightedServicesStickyArgs, TraefikServiceSpecWeightedServicesStickyPtr and TraefikServiceSpecWeightedServicesStickyPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedServicesStickyPtrInput` via: +// +// TraefikServiceSpecWeightedServicesStickyArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecWeightedServicesStickyPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedServicesStickyPtrOutput() TraefikServiceSpecWeightedServicesStickyPtrOutput + ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(context.Context) TraefikServiceSpecWeightedServicesStickyPtrOutput +} + +type traefikServiceSpecWeightedServicesStickyPtrType TraefikServiceSpecWeightedServicesStickyArgs + +func TraefikServiceSpecWeightedServicesStickyPtr(v *TraefikServiceSpecWeightedServicesStickyArgs) TraefikServiceSpecWeightedServicesStickyPtrInput { + return (*traefikServiceSpecWeightedServicesStickyPtrType)(v) +} + +func (*traefikServiceSpecWeightedServicesStickyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedServicesSticky)(nil)).Elem() +} + +func (i *traefikServiceSpecWeightedServicesStickyPtrType) ToTraefikServiceSpecWeightedServicesStickyPtrOutput() TraefikServiceSpecWeightedServicesStickyPtrOutput { + return i.ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecWeightedServicesStickyPtrType) ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesStickyPtrOutput) +} + +func (i *traefikServiceSpecWeightedServicesStickyPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedServicesSticky] { + return pulumix.Output[*TraefikServiceSpecWeightedServicesSticky]{ + OutputState: i.ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(ctx).OutputState, + } +} + +// Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions +type TraefikServiceSpecWeightedServicesStickyOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedServicesStickyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedServicesSticky)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedServicesStickyOutput) ToTraefikServiceSpecWeightedServicesStickyOutput() TraefikServiceSpecWeightedServicesStickyOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesStickyOutput) ToTraefikServiceSpecWeightedServicesStickyOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesStickyOutput) ToTraefikServiceSpecWeightedServicesStickyPtrOutput() TraefikServiceSpecWeightedServicesStickyPtrOutput { + return o.ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecWeightedServicesStickyOutput) ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecWeightedServicesSticky) *TraefikServiceSpecWeightedServicesSticky { + return &v + }).(TraefikServiceSpecWeightedServicesStickyPtrOutput) +} + +func (o TraefikServiceSpecWeightedServicesStickyOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedServicesSticky] { + return pulumix.Output[TraefikServiceSpecWeightedServicesSticky]{ + OutputState: o.OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +func (o TraefikServiceSpecWeightedServicesStickyOutput) Cookie() TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServicesSticky) *TraefikServiceSpecWeightedServicesStickyCookie { + return v.Cookie + }).(TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) +} + +type TraefikServiceSpecWeightedServicesStickyPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedServicesStickyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedServicesSticky)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedServicesStickyPtrOutput) ToTraefikServiceSpecWeightedServicesStickyPtrOutput() TraefikServiceSpecWeightedServicesStickyPtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesStickyPtrOutput) ToTraefikServiceSpecWeightedServicesStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyPtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesStickyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedServicesSticky] { + return pulumix.Output[*TraefikServiceSpecWeightedServicesSticky]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecWeightedServicesStickyPtrOutput) Elem() TraefikServiceSpecWeightedServicesStickyOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedServicesSticky) TraefikServiceSpecWeightedServicesSticky { + if v != nil { + return *v + } + var ret TraefikServiceSpecWeightedServicesSticky + return ret + }).(TraefikServiceSpecWeightedServicesStickyOutput) +} + +// Cookie defines the sticky cookie configuration. +func (o TraefikServiceSpecWeightedServicesStickyPtrOutput) Cookie() TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedServicesSticky) *TraefikServiceSpecWeightedServicesStickyCookie { + if v == nil { + return nil + } + return v.Cookie + }).(TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecWeightedServicesStickyCookie struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly *bool `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name *string `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite *string `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure *bool `pulumi:"secure"` +} + +// TraefikServiceSpecWeightedServicesStickyCookieInput is an input type that accepts TraefikServiceSpecWeightedServicesStickyCookieArgs and TraefikServiceSpecWeightedServicesStickyCookieOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedServicesStickyCookieInput` via: +// +// TraefikServiceSpecWeightedServicesStickyCookieArgs{...} +type TraefikServiceSpecWeightedServicesStickyCookieInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedServicesStickyCookieOutput() TraefikServiceSpecWeightedServicesStickyCookieOutput + ToTraefikServiceSpecWeightedServicesStickyCookieOutputWithContext(context.Context) TraefikServiceSpecWeightedServicesStickyCookieOutput +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecWeightedServicesStickyCookieArgs struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly pulumi.BoolPtrInput `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name pulumi.StringPtrInput `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite pulumi.StringPtrInput `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure pulumi.BoolPtrInput `pulumi:"secure"` +} + +func (TraefikServiceSpecWeightedServicesStickyCookieArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedServicesStickyCookie)(nil)).Elem() +} + +func (i TraefikServiceSpecWeightedServicesStickyCookieArgs) ToTraefikServiceSpecWeightedServicesStickyCookieOutput() TraefikServiceSpecWeightedServicesStickyCookieOutput { + return i.ToTraefikServiceSpecWeightedServicesStickyCookieOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedServicesStickyCookieArgs) ToTraefikServiceSpecWeightedServicesStickyCookieOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyCookieOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesStickyCookieOutput) +} + +func (i TraefikServiceSpecWeightedServicesStickyCookieArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedServicesStickyCookie] { + return pulumix.Output[TraefikServiceSpecWeightedServicesStickyCookie]{ + OutputState: i.ToTraefikServiceSpecWeightedServicesStickyCookieOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecWeightedServicesStickyCookieArgs) ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutput() TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return i.ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedServicesStickyCookieArgs) ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesStickyCookieOutput).ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(ctx) +} + +// TraefikServiceSpecWeightedServicesStickyCookiePtrInput is an input type that accepts TraefikServiceSpecWeightedServicesStickyCookieArgs, TraefikServiceSpecWeightedServicesStickyCookiePtr and TraefikServiceSpecWeightedServicesStickyCookiePtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedServicesStickyCookiePtrInput` via: +// +// TraefikServiceSpecWeightedServicesStickyCookieArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecWeightedServicesStickyCookiePtrInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutput() TraefikServiceSpecWeightedServicesStickyCookiePtrOutput + ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(context.Context) TraefikServiceSpecWeightedServicesStickyCookiePtrOutput +} + +type traefikServiceSpecWeightedServicesStickyCookiePtrType TraefikServiceSpecWeightedServicesStickyCookieArgs + +func TraefikServiceSpecWeightedServicesStickyCookiePtr(v *TraefikServiceSpecWeightedServicesStickyCookieArgs) TraefikServiceSpecWeightedServicesStickyCookiePtrInput { + return (*traefikServiceSpecWeightedServicesStickyCookiePtrType)(v) +} + +func (*traefikServiceSpecWeightedServicesStickyCookiePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedServicesStickyCookie)(nil)).Elem() +} + +func (i *traefikServiceSpecWeightedServicesStickyCookiePtrType) ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutput() TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return i.ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecWeightedServicesStickyCookiePtrType) ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) +} + +func (i *traefikServiceSpecWeightedServicesStickyCookiePtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedServicesStickyCookie] { + return pulumix.Output[*TraefikServiceSpecWeightedServicesStickyCookie]{ + OutputState: i.ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(ctx).OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecWeightedServicesStickyCookieOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedServicesStickyCookieOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedServicesStickyCookie)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedServicesStickyCookieOutput) ToTraefikServiceSpecWeightedServicesStickyCookieOutput() TraefikServiceSpecWeightedServicesStickyCookieOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesStickyCookieOutput) ToTraefikServiceSpecWeightedServicesStickyCookieOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyCookieOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesStickyCookieOutput) ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutput() TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return o.ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecWeightedServicesStickyCookieOutput) ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecWeightedServicesStickyCookie) *TraefikServiceSpecWeightedServicesStickyCookie { + return &v + }).(TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) +} + +func (o TraefikServiceSpecWeightedServicesStickyCookieOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedServicesStickyCookie] { + return pulumix.Output[TraefikServiceSpecWeightedServicesStickyCookie]{ + OutputState: o.OutputState, + } +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o TraefikServiceSpecWeightedServicesStickyCookieOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServicesStickyCookie) *bool { return v.HttpOnly }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o TraefikServiceSpecWeightedServicesStickyCookieOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServicesStickyCookie) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o TraefikServiceSpecWeightedServicesStickyCookieOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServicesStickyCookie) *string { return v.SameSite }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o TraefikServiceSpecWeightedServicesStickyCookieOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedServicesStickyCookie) *bool { return v.Secure }).(pulumi.BoolPtrOutput) +} + +type TraefikServiceSpecWeightedServicesStickyCookiePtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedServicesStickyCookie)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutput() TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) ToTraefikServiceSpecWeightedServicesStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedServicesStickyCookiePtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedServicesStickyCookie] { + return pulumix.Output[*TraefikServiceSpecWeightedServicesStickyCookie]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) Elem() TraefikServiceSpecWeightedServicesStickyCookieOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedServicesStickyCookie) TraefikServiceSpecWeightedServicesStickyCookie { + if v != nil { + return *v + } + var ret TraefikServiceSpecWeightedServicesStickyCookie + return ret + }).(TraefikServiceSpecWeightedServicesStickyCookieOutput) +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedServicesStickyCookie) *bool { + if v == nil { + return nil + } + return v.HttpOnly + }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedServicesStickyCookie) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedServicesStickyCookie) *string { + if v == nil { + return nil + } + return v.SameSite + }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o TraefikServiceSpecWeightedServicesStickyCookiePtrOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedServicesStickyCookie) *bool { + if v == nil { + return nil + } + return v.Secure + }).(pulumi.BoolPtrOutput) +} + +// Sticky defines whether sticky sessions are enabled. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing +type TraefikServiceSpecWeightedSticky struct { + // Cookie defines the sticky cookie configuration. + Cookie *TraefikServiceSpecWeightedStickyCookie `pulumi:"cookie"` +} + +// TraefikServiceSpecWeightedStickyInput is an input type that accepts TraefikServiceSpecWeightedStickyArgs and TraefikServiceSpecWeightedStickyOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedStickyInput` via: +// +// TraefikServiceSpecWeightedStickyArgs{...} +type TraefikServiceSpecWeightedStickyInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedStickyOutput() TraefikServiceSpecWeightedStickyOutput + ToTraefikServiceSpecWeightedStickyOutputWithContext(context.Context) TraefikServiceSpecWeightedStickyOutput +} + +// Sticky defines whether sticky sessions are enabled. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing +type TraefikServiceSpecWeightedStickyArgs struct { + // Cookie defines the sticky cookie configuration. + Cookie TraefikServiceSpecWeightedStickyCookiePtrInput `pulumi:"cookie"` +} + +func (TraefikServiceSpecWeightedStickyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedSticky)(nil)).Elem() +} + +func (i TraefikServiceSpecWeightedStickyArgs) ToTraefikServiceSpecWeightedStickyOutput() TraefikServiceSpecWeightedStickyOutput { + return i.ToTraefikServiceSpecWeightedStickyOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedStickyArgs) ToTraefikServiceSpecWeightedStickyOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedStickyOutput) +} + +func (i TraefikServiceSpecWeightedStickyArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedSticky] { + return pulumix.Output[TraefikServiceSpecWeightedSticky]{ + OutputState: i.ToTraefikServiceSpecWeightedStickyOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecWeightedStickyArgs) ToTraefikServiceSpecWeightedStickyPtrOutput() TraefikServiceSpecWeightedStickyPtrOutput { + return i.ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedStickyArgs) ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedStickyOutput).ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(ctx) +} + +// TraefikServiceSpecWeightedStickyPtrInput is an input type that accepts TraefikServiceSpecWeightedStickyArgs, TraefikServiceSpecWeightedStickyPtr and TraefikServiceSpecWeightedStickyPtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedStickyPtrInput` via: +// +// TraefikServiceSpecWeightedStickyArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecWeightedStickyPtrInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedStickyPtrOutput() TraefikServiceSpecWeightedStickyPtrOutput + ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(context.Context) TraefikServiceSpecWeightedStickyPtrOutput +} + +type traefikServiceSpecWeightedStickyPtrType TraefikServiceSpecWeightedStickyArgs + +func TraefikServiceSpecWeightedStickyPtr(v *TraefikServiceSpecWeightedStickyArgs) TraefikServiceSpecWeightedStickyPtrInput { + return (*traefikServiceSpecWeightedStickyPtrType)(v) +} + +func (*traefikServiceSpecWeightedStickyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedSticky)(nil)).Elem() +} + +func (i *traefikServiceSpecWeightedStickyPtrType) ToTraefikServiceSpecWeightedStickyPtrOutput() TraefikServiceSpecWeightedStickyPtrOutput { + return i.ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecWeightedStickyPtrType) ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedStickyPtrOutput) +} + +func (i *traefikServiceSpecWeightedStickyPtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedSticky] { + return pulumix.Output[*TraefikServiceSpecWeightedSticky]{ + OutputState: i.ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(ctx).OutputState, + } +} + +// Sticky defines whether sticky sessions are enabled. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing +type TraefikServiceSpecWeightedStickyOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedStickyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedSticky)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedStickyOutput) ToTraefikServiceSpecWeightedStickyOutput() TraefikServiceSpecWeightedStickyOutput { + return o +} + +func (o TraefikServiceSpecWeightedStickyOutput) ToTraefikServiceSpecWeightedStickyOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyOutput { + return o +} + +func (o TraefikServiceSpecWeightedStickyOutput) ToTraefikServiceSpecWeightedStickyPtrOutput() TraefikServiceSpecWeightedStickyPtrOutput { + return o.ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecWeightedStickyOutput) ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecWeightedSticky) *TraefikServiceSpecWeightedSticky { + return &v + }).(TraefikServiceSpecWeightedStickyPtrOutput) +} + +func (o TraefikServiceSpecWeightedStickyOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedSticky] { + return pulumix.Output[TraefikServiceSpecWeightedSticky]{ + OutputState: o.OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +func (o TraefikServiceSpecWeightedStickyOutput) Cookie() TraefikServiceSpecWeightedStickyCookiePtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedSticky) *TraefikServiceSpecWeightedStickyCookie { return v.Cookie }).(TraefikServiceSpecWeightedStickyCookiePtrOutput) +} + +type TraefikServiceSpecWeightedStickyPtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedStickyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedSticky)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedStickyPtrOutput) ToTraefikServiceSpecWeightedStickyPtrOutput() TraefikServiceSpecWeightedStickyPtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedStickyPtrOutput) ToTraefikServiceSpecWeightedStickyPtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyPtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedStickyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedSticky] { + return pulumix.Output[*TraefikServiceSpecWeightedSticky]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecWeightedStickyPtrOutput) Elem() TraefikServiceSpecWeightedStickyOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedSticky) TraefikServiceSpecWeightedSticky { + if v != nil { + return *v + } + var ret TraefikServiceSpecWeightedSticky + return ret + }).(TraefikServiceSpecWeightedStickyOutput) +} + +// Cookie defines the sticky cookie configuration. +func (o TraefikServiceSpecWeightedStickyPtrOutput) Cookie() TraefikServiceSpecWeightedStickyCookiePtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedSticky) *TraefikServiceSpecWeightedStickyCookie { + if v == nil { + return nil + } + return v.Cookie + }).(TraefikServiceSpecWeightedStickyCookiePtrOutput) +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecWeightedStickyCookie struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly *bool `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name *string `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite *string `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure *bool `pulumi:"secure"` +} + +// TraefikServiceSpecWeightedStickyCookieInput is an input type that accepts TraefikServiceSpecWeightedStickyCookieArgs and TraefikServiceSpecWeightedStickyCookieOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedStickyCookieInput` via: +// +// TraefikServiceSpecWeightedStickyCookieArgs{...} +type TraefikServiceSpecWeightedStickyCookieInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedStickyCookieOutput() TraefikServiceSpecWeightedStickyCookieOutput + ToTraefikServiceSpecWeightedStickyCookieOutputWithContext(context.Context) TraefikServiceSpecWeightedStickyCookieOutput +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecWeightedStickyCookieArgs struct { + // HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. + HttpOnly pulumi.BoolPtrInput `pulumi:"httpOnly"` + // Name defines the Cookie name. + Name pulumi.StringPtrInput `pulumi:"name"` + // SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite + SameSite pulumi.StringPtrInput `pulumi:"sameSite"` + // Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). + Secure pulumi.BoolPtrInput `pulumi:"secure"` +} + +func (TraefikServiceSpecWeightedStickyCookieArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedStickyCookie)(nil)).Elem() +} + +func (i TraefikServiceSpecWeightedStickyCookieArgs) ToTraefikServiceSpecWeightedStickyCookieOutput() TraefikServiceSpecWeightedStickyCookieOutput { + return i.ToTraefikServiceSpecWeightedStickyCookieOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedStickyCookieArgs) ToTraefikServiceSpecWeightedStickyCookieOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyCookieOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedStickyCookieOutput) +} + +func (i TraefikServiceSpecWeightedStickyCookieArgs) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedStickyCookie] { + return pulumix.Output[TraefikServiceSpecWeightedStickyCookie]{ + OutputState: i.ToTraefikServiceSpecWeightedStickyCookieOutputWithContext(ctx).OutputState, + } +} + +func (i TraefikServiceSpecWeightedStickyCookieArgs) ToTraefikServiceSpecWeightedStickyCookiePtrOutput() TraefikServiceSpecWeightedStickyCookiePtrOutput { + return i.ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i TraefikServiceSpecWeightedStickyCookieArgs) ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedStickyCookieOutput).ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(ctx) +} + +// TraefikServiceSpecWeightedStickyCookiePtrInput is an input type that accepts TraefikServiceSpecWeightedStickyCookieArgs, TraefikServiceSpecWeightedStickyCookiePtr and TraefikServiceSpecWeightedStickyCookiePtrOutput values. +// You can construct a concrete instance of `TraefikServiceSpecWeightedStickyCookiePtrInput` via: +// +// TraefikServiceSpecWeightedStickyCookieArgs{...} +// +// or: +// +// nil +type TraefikServiceSpecWeightedStickyCookiePtrInput interface { + pulumi.Input + + ToTraefikServiceSpecWeightedStickyCookiePtrOutput() TraefikServiceSpecWeightedStickyCookiePtrOutput + ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(context.Context) TraefikServiceSpecWeightedStickyCookiePtrOutput +} + +type traefikServiceSpecWeightedStickyCookiePtrType TraefikServiceSpecWeightedStickyCookieArgs + +func TraefikServiceSpecWeightedStickyCookiePtr(v *TraefikServiceSpecWeightedStickyCookieArgs) TraefikServiceSpecWeightedStickyCookiePtrInput { + return (*traefikServiceSpecWeightedStickyCookiePtrType)(v) +} + +func (*traefikServiceSpecWeightedStickyCookiePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedStickyCookie)(nil)).Elem() +} + +func (i *traefikServiceSpecWeightedStickyCookiePtrType) ToTraefikServiceSpecWeightedStickyCookiePtrOutput() TraefikServiceSpecWeightedStickyCookiePtrOutput { + return i.ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(context.Background()) +} + +func (i *traefikServiceSpecWeightedStickyCookiePtrType) ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyCookiePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceSpecWeightedStickyCookiePtrOutput) +} + +func (i *traefikServiceSpecWeightedStickyCookiePtrType) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedStickyCookie] { + return pulumix.Output[*TraefikServiceSpecWeightedStickyCookie]{ + OutputState: i.ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(ctx).OutputState, + } +} + +// Cookie defines the sticky cookie configuration. +type TraefikServiceSpecWeightedStickyCookieOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedStickyCookieOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TraefikServiceSpecWeightedStickyCookie)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedStickyCookieOutput) ToTraefikServiceSpecWeightedStickyCookieOutput() TraefikServiceSpecWeightedStickyCookieOutput { + return o +} + +func (o TraefikServiceSpecWeightedStickyCookieOutput) ToTraefikServiceSpecWeightedStickyCookieOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyCookieOutput { + return o +} + +func (o TraefikServiceSpecWeightedStickyCookieOutput) ToTraefikServiceSpecWeightedStickyCookiePtrOutput() TraefikServiceSpecWeightedStickyCookiePtrOutput { + return o.ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(context.Background()) +} + +func (o TraefikServiceSpecWeightedStickyCookieOutput) ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyCookiePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TraefikServiceSpecWeightedStickyCookie) *TraefikServiceSpecWeightedStickyCookie { + return &v + }).(TraefikServiceSpecWeightedStickyCookiePtrOutput) +} + +func (o TraefikServiceSpecWeightedStickyCookieOutput) ToOutput(ctx context.Context) pulumix.Output[TraefikServiceSpecWeightedStickyCookie] { + return pulumix.Output[TraefikServiceSpecWeightedStickyCookie]{ + OutputState: o.OutputState, + } +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o TraefikServiceSpecWeightedStickyCookieOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedStickyCookie) *bool { return v.HttpOnly }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o TraefikServiceSpecWeightedStickyCookieOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedStickyCookie) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o TraefikServiceSpecWeightedStickyCookieOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedStickyCookie) *string { return v.SameSite }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o TraefikServiceSpecWeightedStickyCookieOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TraefikServiceSpecWeightedStickyCookie) *bool { return v.Secure }).(pulumi.BoolPtrOutput) +} + +type TraefikServiceSpecWeightedStickyCookiePtrOutput struct{ *pulumi.OutputState } + +func (TraefikServiceSpecWeightedStickyCookiePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikServiceSpecWeightedStickyCookie)(nil)).Elem() +} + +func (o TraefikServiceSpecWeightedStickyCookiePtrOutput) ToTraefikServiceSpecWeightedStickyCookiePtrOutput() TraefikServiceSpecWeightedStickyCookiePtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedStickyCookiePtrOutput) ToTraefikServiceSpecWeightedStickyCookiePtrOutputWithContext(ctx context.Context) TraefikServiceSpecWeightedStickyCookiePtrOutput { + return o +} + +func (o TraefikServiceSpecWeightedStickyCookiePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikServiceSpecWeightedStickyCookie] { + return pulumix.Output[*TraefikServiceSpecWeightedStickyCookie]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceSpecWeightedStickyCookiePtrOutput) Elem() TraefikServiceSpecWeightedStickyCookieOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedStickyCookie) TraefikServiceSpecWeightedStickyCookie { + if v != nil { + return *v + } + var ret TraefikServiceSpecWeightedStickyCookie + return ret + }).(TraefikServiceSpecWeightedStickyCookieOutput) +} + +// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. +func (o TraefikServiceSpecWeightedStickyCookiePtrOutput) HttpOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedStickyCookie) *bool { + if v == nil { + return nil + } + return v.HttpOnly + }).(pulumi.BoolPtrOutput) +} + +// Name defines the Cookie name. +func (o TraefikServiceSpecWeightedStickyCookiePtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedStickyCookie) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +func (o TraefikServiceSpecWeightedStickyCookiePtrOutput) SameSite() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedStickyCookie) *string { + if v == nil { + return nil + } + return v.SameSite + }).(pulumi.StringPtrOutput) +} + +// Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS). +func (o TraefikServiceSpecWeightedStickyCookiePtrOutput) Secure() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TraefikServiceSpecWeightedStickyCookie) *bool { + if v == nil { + return nil + } + return v.Secure + }).(pulumi.BoolPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecInput)(nil)).Elem(), IngressRouteSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecPtrInput)(nil)).Elem(), IngressRouteSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesInput)(nil)).Elem(), IngressRouteSpecRoutesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesArrayInput)(nil)).Elem(), IngressRouteSpecRoutesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesMiddlewaresInput)(nil)).Elem(), IngressRouteSpecRoutesMiddlewaresArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesMiddlewaresArrayInput)(nil)).Elem(), IngressRouteSpecRoutesMiddlewaresArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesServicesInput)(nil)).Elem(), IngressRouteSpecRoutesServicesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesServicesArrayInput)(nil)).Elem(), IngressRouteSpecRoutesServicesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesServicesResponseForwardingInput)(nil)).Elem(), IngressRouteSpecRoutesServicesResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesServicesResponseForwardingPtrInput)(nil)).Elem(), IngressRouteSpecRoutesServicesResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesServicesStickyInput)(nil)).Elem(), IngressRouteSpecRoutesServicesStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesServicesStickyPtrInput)(nil)).Elem(), IngressRouteSpecRoutesServicesStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesServicesStickyCookieInput)(nil)).Elem(), IngressRouteSpecRoutesServicesStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecRoutesServicesStickyCookiePtrInput)(nil)).Elem(), IngressRouteSpecRoutesServicesStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecTlsInput)(nil)).Elem(), IngressRouteSpecTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecTlsPtrInput)(nil)).Elem(), IngressRouteSpecTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecTlsDomainsInput)(nil)).Elem(), IngressRouteSpecTlsDomainsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecTlsDomainsArrayInput)(nil)).Elem(), IngressRouteSpecTlsDomainsArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecTlsOptionsInput)(nil)).Elem(), IngressRouteSpecTlsOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecTlsOptionsPtrInput)(nil)).Elem(), IngressRouteSpecTlsOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecTlsStoreInput)(nil)).Elem(), IngressRouteSpecTlsStoreArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteSpecTlsStorePtrInput)(nil)).Elem(), IngressRouteSpecTlsStoreArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecInput)(nil)).Elem(), IngressRouteTCPSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecPtrInput)(nil)).Elem(), IngressRouteTCPSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecRoutesInput)(nil)).Elem(), IngressRouteTCPSpecRoutesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecRoutesArrayInput)(nil)).Elem(), IngressRouteTCPSpecRoutesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecRoutesMiddlewaresInput)(nil)).Elem(), IngressRouteTCPSpecRoutesMiddlewaresArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecRoutesMiddlewaresArrayInput)(nil)).Elem(), IngressRouteTCPSpecRoutesMiddlewaresArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecRoutesServicesInput)(nil)).Elem(), IngressRouteTCPSpecRoutesServicesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecRoutesServicesArrayInput)(nil)).Elem(), IngressRouteTCPSpecRoutesServicesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecRoutesServicesProxyProtocolInput)(nil)).Elem(), IngressRouteTCPSpecRoutesServicesProxyProtocolArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecRoutesServicesProxyProtocolPtrInput)(nil)).Elem(), IngressRouteTCPSpecRoutesServicesProxyProtocolArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecTlsInput)(nil)).Elem(), IngressRouteTCPSpecTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecTlsPtrInput)(nil)).Elem(), IngressRouteTCPSpecTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecTlsDomainsInput)(nil)).Elem(), IngressRouteTCPSpecTlsDomainsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecTlsDomainsArrayInput)(nil)).Elem(), IngressRouteTCPSpecTlsDomainsArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecTlsOptionsInput)(nil)).Elem(), IngressRouteTCPSpecTlsOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecTlsOptionsPtrInput)(nil)).Elem(), IngressRouteTCPSpecTlsOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecTlsStoreInput)(nil)).Elem(), IngressRouteTCPSpecTlsStoreArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteTCPSpecTlsStorePtrInput)(nil)).Elem(), IngressRouteTCPSpecTlsStoreArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteUDPSpecInput)(nil)).Elem(), IngressRouteUDPSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteUDPSpecPtrInput)(nil)).Elem(), IngressRouteUDPSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteUDPSpecRoutesInput)(nil)).Elem(), IngressRouteUDPSpecRoutesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteUDPSpecRoutesArrayInput)(nil)).Elem(), IngressRouteUDPSpecRoutesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteUDPSpecRoutesServicesInput)(nil)).Elem(), IngressRouteUDPSpecRoutesServicesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*IngressRouteUDPSpecRoutesServicesArrayInput)(nil)).Elem(), IngressRouteUDPSpecRoutesServicesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecInput)(nil)).Elem(), MiddlewareSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecPtrInput)(nil)).Elem(), MiddlewareSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecAddPrefixInput)(nil)).Elem(), MiddlewareSpecAddPrefixArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecAddPrefixPtrInput)(nil)).Elem(), MiddlewareSpecAddPrefixArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecBasicAuthInput)(nil)).Elem(), MiddlewareSpecBasicAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecBasicAuthPtrInput)(nil)).Elem(), MiddlewareSpecBasicAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecBufferingInput)(nil)).Elem(), MiddlewareSpecBufferingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecBufferingPtrInput)(nil)).Elem(), MiddlewareSpecBufferingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecChainInput)(nil)).Elem(), MiddlewareSpecChainArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecChainPtrInput)(nil)).Elem(), MiddlewareSpecChainArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecChainMiddlewaresInput)(nil)).Elem(), MiddlewareSpecChainMiddlewaresArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecChainMiddlewaresArrayInput)(nil)).Elem(), MiddlewareSpecChainMiddlewaresArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecCircuitBreakerInput)(nil)).Elem(), MiddlewareSpecCircuitBreakerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecCircuitBreakerPtrInput)(nil)).Elem(), MiddlewareSpecCircuitBreakerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecCompressInput)(nil)).Elem(), MiddlewareSpecCompressArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecCompressPtrInput)(nil)).Elem(), MiddlewareSpecCompressArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecContentTypeInput)(nil)).Elem(), MiddlewareSpecContentTypeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecContentTypePtrInput)(nil)).Elem(), MiddlewareSpecContentTypeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecDigestAuthInput)(nil)).Elem(), MiddlewareSpecDigestAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecDigestAuthPtrInput)(nil)).Elem(), MiddlewareSpecDigestAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsInput)(nil)).Elem(), MiddlewareSpecErrorsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsPtrInput)(nil)).Elem(), MiddlewareSpecErrorsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsServiceInput)(nil)).Elem(), MiddlewareSpecErrorsServiceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsServicePtrInput)(nil)).Elem(), MiddlewareSpecErrorsServiceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsServiceResponseForwardingInput)(nil)).Elem(), MiddlewareSpecErrorsServiceResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsServiceResponseForwardingPtrInput)(nil)).Elem(), MiddlewareSpecErrorsServiceResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsServiceStickyInput)(nil)).Elem(), MiddlewareSpecErrorsServiceStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsServiceStickyPtrInput)(nil)).Elem(), MiddlewareSpecErrorsServiceStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsServiceStickyCookieInput)(nil)).Elem(), MiddlewareSpecErrorsServiceStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecErrorsServiceStickyCookiePtrInput)(nil)).Elem(), MiddlewareSpecErrorsServiceStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecForwardAuthInput)(nil)).Elem(), MiddlewareSpecForwardAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecForwardAuthPtrInput)(nil)).Elem(), MiddlewareSpecForwardAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecForwardAuthTlsInput)(nil)).Elem(), MiddlewareSpecForwardAuthTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecForwardAuthTlsPtrInput)(nil)).Elem(), MiddlewareSpecForwardAuthTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecHeadersInput)(nil)).Elem(), MiddlewareSpecHeadersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecHeadersPtrInput)(nil)).Elem(), MiddlewareSpecHeadersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecInFlightReqInput)(nil)).Elem(), MiddlewareSpecInFlightReqArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecInFlightReqPtrInput)(nil)).Elem(), MiddlewareSpecInFlightReqArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecInFlightReqSourceCriterionInput)(nil)).Elem(), MiddlewareSpecInFlightReqSourceCriterionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecInFlightReqSourceCriterionPtrInput)(nil)).Elem(), MiddlewareSpecInFlightReqSourceCriterionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecInFlightReqSourceCriterionIpStrategyInput)(nil)).Elem(), MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrInput)(nil)).Elem(), MiddlewareSpecInFlightReqSourceCriterionIpStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecIpWhiteListInput)(nil)).Elem(), MiddlewareSpecIpWhiteListArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecIpWhiteListPtrInput)(nil)).Elem(), MiddlewareSpecIpWhiteListArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecIpWhiteListIpStrategyInput)(nil)).Elem(), MiddlewareSpecIpWhiteListIpStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecIpWhiteListIpStrategyPtrInput)(nil)).Elem(), MiddlewareSpecIpWhiteListIpStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInput)(nil)).Elem(), MiddlewareSpecPassTLSClientCertArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecPassTLSClientCertPtrInput)(nil)).Elem(), MiddlewareSpecPassTLSClientCertArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoInput)(nil)).Elem(), MiddlewareSpecPassTLSClientCertInfoArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoPtrInput)(nil)).Elem(), MiddlewareSpecPassTLSClientCertInfoArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoIssuerInput)(nil)).Elem(), MiddlewareSpecPassTLSClientCertInfoIssuerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoIssuerPtrInput)(nil)).Elem(), MiddlewareSpecPassTLSClientCertInfoIssuerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoSubjectInput)(nil)).Elem(), MiddlewareSpecPassTLSClientCertInfoSubjectArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecPassTLSClientCertInfoSubjectPtrInput)(nil)).Elem(), MiddlewareSpecPassTLSClientCertInfoSubjectArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRateLimitInput)(nil)).Elem(), MiddlewareSpecRateLimitArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRateLimitPtrInput)(nil)).Elem(), MiddlewareSpecRateLimitArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRateLimitSourceCriterionInput)(nil)).Elem(), MiddlewareSpecRateLimitSourceCriterionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRateLimitSourceCriterionPtrInput)(nil)).Elem(), MiddlewareSpecRateLimitSourceCriterionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRateLimitSourceCriterionIpStrategyInput)(nil)).Elem(), MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrInput)(nil)).Elem(), MiddlewareSpecRateLimitSourceCriterionIpStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRedirectRegexInput)(nil)).Elem(), MiddlewareSpecRedirectRegexArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRedirectRegexPtrInput)(nil)).Elem(), MiddlewareSpecRedirectRegexArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRedirectSchemeInput)(nil)).Elem(), MiddlewareSpecRedirectSchemeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRedirectSchemePtrInput)(nil)).Elem(), MiddlewareSpecRedirectSchemeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecReplacePathInput)(nil)).Elem(), MiddlewareSpecReplacePathArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecReplacePathPtrInput)(nil)).Elem(), MiddlewareSpecReplacePathArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecReplacePathRegexInput)(nil)).Elem(), MiddlewareSpecReplacePathRegexArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecReplacePathRegexPtrInput)(nil)).Elem(), MiddlewareSpecReplacePathRegexArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRetryInput)(nil)).Elem(), MiddlewareSpecRetryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecRetryPtrInput)(nil)).Elem(), MiddlewareSpecRetryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecStripPrefixInput)(nil)).Elem(), MiddlewareSpecStripPrefixArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecStripPrefixPtrInput)(nil)).Elem(), MiddlewareSpecStripPrefixArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecStripPrefixRegexInput)(nil)).Elem(), MiddlewareSpecStripPrefixRegexArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareSpecStripPrefixRegexPtrInput)(nil)).Elem(), MiddlewareSpecStripPrefixRegexArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareTCPSpecInput)(nil)).Elem(), MiddlewareTCPSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareTCPSpecPtrInput)(nil)).Elem(), MiddlewareTCPSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareTCPSpecInFlightConnInput)(nil)).Elem(), MiddlewareTCPSpecInFlightConnArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareTCPSpecInFlightConnPtrInput)(nil)).Elem(), MiddlewareTCPSpecInFlightConnArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareTCPSpecIpWhiteListInput)(nil)).Elem(), MiddlewareTCPSpecIpWhiteListArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MiddlewareTCPSpecIpWhiteListPtrInput)(nil)).Elem(), MiddlewareTCPSpecIpWhiteListArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportSpecInput)(nil)).Elem(), ServersTransportSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportSpecPtrInput)(nil)).Elem(), ServersTransportSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportSpecForwardingTimeoutsInput)(nil)).Elem(), ServersTransportSpecForwardingTimeoutsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportSpecForwardingTimeoutsPtrInput)(nil)).Elem(), ServersTransportSpecForwardingTimeoutsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportTCPSpecInput)(nil)).Elem(), ServersTransportTCPSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportTCPSpecPtrInput)(nil)).Elem(), ServersTransportTCPSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportTCPSpecTlsInput)(nil)).Elem(), ServersTransportTCPSpecTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportTCPSpecTlsPtrInput)(nil)).Elem(), ServersTransportTCPSpecTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportTCPSpecTlsSpiffeInput)(nil)).Elem(), ServersTransportTCPSpecTlsSpiffeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportTCPSpecTlsSpiffePtrInput)(nil)).Elem(), ServersTransportTCPSpecTlsSpiffeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSOptionSpecInput)(nil)).Elem(), TLSOptionSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSOptionSpecPtrInput)(nil)).Elem(), TLSOptionSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSOptionSpecClientAuthInput)(nil)).Elem(), TLSOptionSpecClientAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSOptionSpecClientAuthPtrInput)(nil)).Elem(), TLSOptionSpecClientAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecInput)(nil)).Elem(), TLSStoreSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecPtrInput)(nil)).Elem(), TLSStoreSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecCertificatesInput)(nil)).Elem(), TLSStoreSpecCertificatesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecCertificatesArrayInput)(nil)).Elem(), TLSStoreSpecCertificatesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecDefaultCertificateInput)(nil)).Elem(), TLSStoreSpecDefaultCertificateArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecDefaultCertificatePtrInput)(nil)).Elem(), TLSStoreSpecDefaultCertificateArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecDefaultGeneratedCertInput)(nil)).Elem(), TLSStoreSpecDefaultGeneratedCertArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecDefaultGeneratedCertPtrInput)(nil)).Elem(), TLSStoreSpecDefaultGeneratedCertArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecDefaultGeneratedCertDomainInput)(nil)).Elem(), TLSStoreSpecDefaultGeneratedCertDomainArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreSpecDefaultGeneratedCertDomainPtrInput)(nil)).Elem(), TLSStoreSpecDefaultGeneratedCertDomainArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecInput)(nil)).Elem(), TraefikServiceSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecPtrInput)(nil)).Elem(), TraefikServiceSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringInput)(nil)).Elem(), TraefikServiceSpecMirroringArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringPtrInput)(nil)).Elem(), TraefikServiceSpecMirroringArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsInput)(nil)).Elem(), TraefikServiceSpecMirroringMirrorsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsArrayInput)(nil)).Elem(), TraefikServiceSpecMirroringMirrorsArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsResponseForwardingInput)(nil)).Elem(), TraefikServiceSpecMirroringMirrorsResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsResponseForwardingPtrInput)(nil)).Elem(), TraefikServiceSpecMirroringMirrorsResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsStickyInput)(nil)).Elem(), TraefikServiceSpecMirroringMirrorsStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsStickyPtrInput)(nil)).Elem(), TraefikServiceSpecMirroringMirrorsStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsStickyCookieInput)(nil)).Elem(), TraefikServiceSpecMirroringMirrorsStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringMirrorsStickyCookiePtrInput)(nil)).Elem(), TraefikServiceSpecMirroringMirrorsStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringResponseForwardingInput)(nil)).Elem(), TraefikServiceSpecMirroringResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringResponseForwardingPtrInput)(nil)).Elem(), TraefikServiceSpecMirroringResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringStickyInput)(nil)).Elem(), TraefikServiceSpecMirroringStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringStickyPtrInput)(nil)).Elem(), TraefikServiceSpecMirroringStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringStickyCookieInput)(nil)).Elem(), TraefikServiceSpecMirroringStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecMirroringStickyCookiePtrInput)(nil)).Elem(), TraefikServiceSpecMirroringStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedInput)(nil)).Elem(), TraefikServiceSpecWeightedArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedPtrInput)(nil)).Elem(), TraefikServiceSpecWeightedArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedServicesInput)(nil)).Elem(), TraefikServiceSpecWeightedServicesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedServicesArrayInput)(nil)).Elem(), TraefikServiceSpecWeightedServicesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedServicesResponseForwardingInput)(nil)).Elem(), TraefikServiceSpecWeightedServicesResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedServicesResponseForwardingPtrInput)(nil)).Elem(), TraefikServiceSpecWeightedServicesResponseForwardingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedServicesStickyInput)(nil)).Elem(), TraefikServiceSpecWeightedServicesStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedServicesStickyPtrInput)(nil)).Elem(), TraefikServiceSpecWeightedServicesStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedServicesStickyCookieInput)(nil)).Elem(), TraefikServiceSpecWeightedServicesStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedServicesStickyCookiePtrInput)(nil)).Elem(), TraefikServiceSpecWeightedServicesStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedStickyInput)(nil)).Elem(), TraefikServiceSpecWeightedStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedStickyPtrInput)(nil)).Elem(), TraefikServiceSpecWeightedStickyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedStickyCookieInput)(nil)).Elem(), TraefikServiceSpecWeightedStickyCookieArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceSpecWeightedStickyCookiePtrInput)(nil)).Elem(), TraefikServiceSpecWeightedStickyCookieArgs{}) + pulumi.RegisterOutputType(IngressRouteSpecOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesArrayOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesMiddlewaresOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesMiddlewaresArrayOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesServicesOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesServicesArrayOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesServicesResponseForwardingOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesServicesResponseForwardingPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesServicesStickyOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesServicesStickyPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesServicesStickyCookieOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecRoutesServicesStickyCookiePtrOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecTlsOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecTlsPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecTlsDomainsOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecTlsDomainsArrayOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecTlsOptionsOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecTlsOptionsPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecTlsStoreOutput{}) + pulumi.RegisterOutputType(IngressRouteSpecTlsStorePtrOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecRoutesOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecRoutesArrayOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecRoutesMiddlewaresOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecRoutesMiddlewaresArrayOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecRoutesServicesOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecRoutesServicesArrayOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecRoutesServicesProxyProtocolOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecRoutesServicesProxyProtocolPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecTlsOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecTlsPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecTlsDomainsOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecTlsDomainsArrayOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecTlsOptionsOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecTlsOptionsPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecTlsStoreOutput{}) + pulumi.RegisterOutputType(IngressRouteTCPSpecTlsStorePtrOutput{}) + pulumi.RegisterOutputType(IngressRouteUDPSpecOutput{}) + pulumi.RegisterOutputType(IngressRouteUDPSpecPtrOutput{}) + pulumi.RegisterOutputType(IngressRouteUDPSpecRoutesOutput{}) + pulumi.RegisterOutputType(IngressRouteUDPSpecRoutesArrayOutput{}) + pulumi.RegisterOutputType(IngressRouteUDPSpecRoutesServicesOutput{}) + pulumi.RegisterOutputType(IngressRouteUDPSpecRoutesServicesArrayOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecAddPrefixOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecAddPrefixPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecBasicAuthOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecBasicAuthPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecBufferingOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecBufferingPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecChainOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecChainPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecChainMiddlewaresOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecChainMiddlewaresArrayOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecCircuitBreakerOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecCircuitBreakerPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecCompressOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecCompressPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecContentTypeOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecContentTypePtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecDigestAuthOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecDigestAuthPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsServiceOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsServicePtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsServiceResponseForwardingOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsServiceResponseForwardingPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsServiceStickyOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsServiceStickyPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsServiceStickyCookieOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecErrorsServiceStickyCookiePtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecForwardAuthOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecForwardAuthPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecForwardAuthTlsOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecForwardAuthTlsPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecHeadersOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecHeadersPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecInFlightReqOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecInFlightReqPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecInFlightReqSourceCriterionOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecInFlightReqSourceCriterionPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecInFlightReqSourceCriterionIpStrategyOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecInFlightReqSourceCriterionIpStrategyPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecIpWhiteListOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecIpWhiteListPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecIpWhiteListIpStrategyOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecIpWhiteListIpStrategyPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecPassTLSClientCertOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecPassTLSClientCertPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecPassTLSClientCertInfoOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecPassTLSClientCertInfoPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecPassTLSClientCertInfoIssuerOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecPassTLSClientCertInfoIssuerPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecPassTLSClientCertInfoSubjectOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecPassTLSClientCertInfoSubjectPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRateLimitOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRateLimitPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRateLimitSourceCriterionOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRateLimitSourceCriterionPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRateLimitSourceCriterionIpStrategyOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRateLimitSourceCriterionIpStrategyPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRedirectRegexOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRedirectRegexPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRedirectSchemeOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRedirectSchemePtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecReplacePathOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecReplacePathPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecReplacePathRegexOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecReplacePathRegexPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRetryOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecRetryPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecStripPrefixOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecStripPrefixPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecStripPrefixRegexOutput{}) + pulumi.RegisterOutputType(MiddlewareSpecStripPrefixRegexPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareTCPSpecOutput{}) + pulumi.RegisterOutputType(MiddlewareTCPSpecPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareTCPSpecInFlightConnOutput{}) + pulumi.RegisterOutputType(MiddlewareTCPSpecInFlightConnPtrOutput{}) + pulumi.RegisterOutputType(MiddlewareTCPSpecIpWhiteListOutput{}) + pulumi.RegisterOutputType(MiddlewareTCPSpecIpWhiteListPtrOutput{}) + pulumi.RegisterOutputType(ServersTransportSpecOutput{}) + pulumi.RegisterOutputType(ServersTransportSpecPtrOutput{}) + pulumi.RegisterOutputType(ServersTransportSpecForwardingTimeoutsOutput{}) + pulumi.RegisterOutputType(ServersTransportSpecForwardingTimeoutsPtrOutput{}) + pulumi.RegisterOutputType(ServersTransportTCPSpecOutput{}) + pulumi.RegisterOutputType(ServersTransportTCPSpecPtrOutput{}) + pulumi.RegisterOutputType(ServersTransportTCPSpecTlsOutput{}) + pulumi.RegisterOutputType(ServersTransportTCPSpecTlsPtrOutput{}) + pulumi.RegisterOutputType(ServersTransportTCPSpecTlsSpiffeOutput{}) + pulumi.RegisterOutputType(ServersTransportTCPSpecTlsSpiffePtrOutput{}) + pulumi.RegisterOutputType(TLSOptionSpecOutput{}) + pulumi.RegisterOutputType(TLSOptionSpecPtrOutput{}) + pulumi.RegisterOutputType(TLSOptionSpecClientAuthOutput{}) + pulumi.RegisterOutputType(TLSOptionSpecClientAuthPtrOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecPtrOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecCertificatesOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecCertificatesArrayOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecDefaultCertificateOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecDefaultCertificatePtrOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecDefaultGeneratedCertOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecDefaultGeneratedCertPtrOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecDefaultGeneratedCertDomainOutput{}) + pulumi.RegisterOutputType(TLSStoreSpecDefaultGeneratedCertDomainPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringMirrorsOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringMirrorsArrayOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringMirrorsResponseForwardingOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringMirrorsResponseForwardingPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringMirrorsStickyOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringMirrorsStickyPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringMirrorsStickyCookieOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringMirrorsStickyCookiePtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringResponseForwardingOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringResponseForwardingPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringStickyOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringStickyPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringStickyCookieOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecMirroringStickyCookiePtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedServicesOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedServicesArrayOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedServicesResponseForwardingOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedServicesResponseForwardingPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedServicesStickyOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedServicesStickyPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedServicesStickyCookieOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedServicesStickyCookiePtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedStickyOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedStickyPtrOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedStickyCookieOutput{}) + pulumi.RegisterOutputType(TraefikServiceSpecWeightedStickyCookiePtrOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/serversTransport.go b/crds/kubernetes/traefik/v1alpha1/serversTransport.go new file mode 100644 index 0000000..153e56d --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/serversTransport.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// ServersTransport is the CRD implementation of a ServersTransport. If no serversTransport is specified, the default@internal will be used. The default@internal serversTransport is created from the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#serverstransport_1 +type ServersTransport struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // ServersTransportSpec defines the desired state of a ServersTransport. + Spec ServersTransportSpecOutput `pulumi:"spec"` +} + +// NewServersTransport registers a new resource with the given unique name, arguments, and options. +func NewServersTransport(ctx *pulumi.Context, + name string, args *ServersTransportArgs, opts ...pulumi.ResourceOption) (*ServersTransport, error) { + if args == nil { + args = &ServersTransportArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("ServersTransport") + opts = internal.PkgResourceDefaultOpts(opts) + var resource ServersTransport + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:ServersTransport", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetServersTransport gets an existing ServersTransport resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetServersTransport(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ServersTransportState, opts ...pulumi.ResourceOption) (*ServersTransport, error) { + var resource ServersTransport + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:ServersTransport", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ServersTransport resources. +type serversTransportState struct { +} + +type ServersTransportState struct { +} + +func (ServersTransportState) ElementType() reflect.Type { + return reflect.TypeOf((*serversTransportState)(nil)).Elem() +} + +type serversTransportArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // ServersTransportSpec defines the desired state of a ServersTransport. + Spec *ServersTransportSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a ServersTransport resource. +type ServersTransportArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // ServersTransportSpec defines the desired state of a ServersTransport. + Spec ServersTransportSpecPtrInput +} + +func (ServersTransportArgs) ElementType() reflect.Type { + return reflect.TypeOf((*serversTransportArgs)(nil)).Elem() +} + +type ServersTransportInput interface { + pulumi.Input + + ToServersTransportOutput() ServersTransportOutput + ToServersTransportOutputWithContext(ctx context.Context) ServersTransportOutput +} + +func (*ServersTransport) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransport)(nil)).Elem() +} + +func (i *ServersTransport) ToServersTransportOutput() ServersTransportOutput { + return i.ToServersTransportOutputWithContext(context.Background()) +} + +func (i *ServersTransport) ToServersTransportOutputWithContext(ctx context.Context) ServersTransportOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportOutput) +} + +func (i *ServersTransport) ToOutput(ctx context.Context) pulumix.Output[*ServersTransport] { + return pulumix.Output[*ServersTransport]{ + OutputState: i.ToServersTransportOutputWithContext(ctx).OutputState, + } +} + +type ServersTransportOutput struct{ *pulumi.OutputState } + +func (ServersTransportOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransport)(nil)).Elem() +} + +func (o ServersTransportOutput) ToServersTransportOutput() ServersTransportOutput { + return o +} + +func (o ServersTransportOutput) ToServersTransportOutputWithContext(ctx context.Context) ServersTransportOutput { + return o +} + +func (o ServersTransportOutput) ToOutput(ctx context.Context) pulumix.Output[*ServersTransport] { + return pulumix.Output[*ServersTransport]{ + OutputState: o.OutputState, + } +} + +func (o ServersTransportOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServersTransport) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o ServersTransportOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServersTransport) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o ServersTransportOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *ServersTransport) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// ServersTransportSpec defines the desired state of a ServersTransport. +func (o ServersTransportOutput) Spec() ServersTransportSpecOutput { + return o.ApplyT(func(v *ServersTransport) ServersTransportSpecOutput { return v.Spec }).(ServersTransportSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportInput)(nil)).Elem(), &ServersTransport{}) + pulumi.RegisterOutputType(ServersTransportOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/serversTransportTCP.go b/crds/kubernetes/traefik/v1alpha1/serversTransportTCP.go new file mode 100644 index 0000000..35a3317 --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/serversTransportTCP.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// ServersTransportTCP is the CRD implementation of a TCPServersTransport. If no tcpServersTransport is specified, a default one named default@internal will be used. The default@internal tcpServersTransport can be configured in the static configuration. More info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_3 +type ServersTransportTCP struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. + Spec ServersTransportTCPSpecOutput `pulumi:"spec"` +} + +// NewServersTransportTCP registers a new resource with the given unique name, arguments, and options. +func NewServersTransportTCP(ctx *pulumi.Context, + name string, args *ServersTransportTCPArgs, opts ...pulumi.ResourceOption) (*ServersTransportTCP, error) { + if args == nil { + args = &ServersTransportTCPArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("ServersTransportTCP") + opts = internal.PkgResourceDefaultOpts(opts) + var resource ServersTransportTCP + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:ServersTransportTCP", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetServersTransportTCP gets an existing ServersTransportTCP resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetServersTransportTCP(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ServersTransportTCPState, opts ...pulumi.ResourceOption) (*ServersTransportTCP, error) { + var resource ServersTransportTCP + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:ServersTransportTCP", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ServersTransportTCP resources. +type serversTransportTCPState struct { +} + +type ServersTransportTCPState struct { +} + +func (ServersTransportTCPState) ElementType() reflect.Type { + return reflect.TypeOf((*serversTransportTCPState)(nil)).Elem() +} + +type serversTransportTCPArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. + Spec *ServersTransportTCPSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a ServersTransportTCP resource. +type ServersTransportTCPArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. + Spec ServersTransportTCPSpecPtrInput +} + +func (ServersTransportTCPArgs) ElementType() reflect.Type { + return reflect.TypeOf((*serversTransportTCPArgs)(nil)).Elem() +} + +type ServersTransportTCPInput interface { + pulumi.Input + + ToServersTransportTCPOutput() ServersTransportTCPOutput + ToServersTransportTCPOutputWithContext(ctx context.Context) ServersTransportTCPOutput +} + +func (*ServersTransportTCP) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportTCP)(nil)).Elem() +} + +func (i *ServersTransportTCP) ToServersTransportTCPOutput() ServersTransportTCPOutput { + return i.ToServersTransportTCPOutputWithContext(context.Background()) +} + +func (i *ServersTransportTCP) ToServersTransportTCPOutputWithContext(ctx context.Context) ServersTransportTCPOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServersTransportTCPOutput) +} + +func (i *ServersTransportTCP) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportTCP] { + return pulumix.Output[*ServersTransportTCP]{ + OutputState: i.ToServersTransportTCPOutputWithContext(ctx).OutputState, + } +} + +type ServersTransportTCPOutput struct{ *pulumi.OutputState } + +func (ServersTransportTCPOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServersTransportTCP)(nil)).Elem() +} + +func (o ServersTransportTCPOutput) ToServersTransportTCPOutput() ServersTransportTCPOutput { + return o +} + +func (o ServersTransportTCPOutput) ToServersTransportTCPOutputWithContext(ctx context.Context) ServersTransportTCPOutput { + return o +} + +func (o ServersTransportTCPOutput) ToOutput(ctx context.Context) pulumix.Output[*ServersTransportTCP] { + return pulumix.Output[*ServersTransportTCP]{ + OutputState: o.OutputState, + } +} + +func (o ServersTransportTCPOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServersTransportTCP) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o ServersTransportTCPOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServersTransportTCP) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o ServersTransportTCPOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *ServersTransportTCP) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. +func (o ServersTransportTCPOutput) Spec() ServersTransportTCPSpecOutput { + return o.ApplyT(func(v *ServersTransportTCP) ServersTransportTCPSpecOutput { return v.Spec }).(ServersTransportTCPSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ServersTransportTCPInput)(nil)).Elem(), &ServersTransportTCP{}) + pulumi.RegisterOutputType(ServersTransportTCPOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/tlsoption.go b/crds/kubernetes/traefik/v1alpha1/tlsoption.go new file mode 100644 index 0000000..b3c1860 --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/tlsoption.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options +type TLSOption struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // TLSOptionSpec defines the desired state of a TLSOption. + Spec TLSOptionSpecOutput `pulumi:"spec"` +} + +// NewTLSOption registers a new resource with the given unique name, arguments, and options. +func NewTLSOption(ctx *pulumi.Context, + name string, args *TLSOptionArgs, opts ...pulumi.ResourceOption) (*TLSOption, error) { + if args == nil { + args = &TLSOptionArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("TLSOption") + opts = internal.PkgResourceDefaultOpts(opts) + var resource TLSOption + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:TLSOption", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTLSOption gets an existing TLSOption resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetTLSOption(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TLSOptionState, opts ...pulumi.ResourceOption) (*TLSOption, error) { + var resource TLSOption + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:TLSOption", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering TLSOption resources. +type tlsoptionState struct { +} + +type TLSOptionState struct { +} + +func (TLSOptionState) ElementType() reflect.Type { + return reflect.TypeOf((*tlsoptionState)(nil)).Elem() +} + +type tlsoptionArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // TLSOptionSpec defines the desired state of a TLSOption. + Spec *TLSOptionSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a TLSOption resource. +type TLSOptionArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // TLSOptionSpec defines the desired state of a TLSOption. + Spec TLSOptionSpecPtrInput +} + +func (TLSOptionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*tlsoptionArgs)(nil)).Elem() +} + +type TLSOptionInput interface { + pulumi.Input + + ToTLSOptionOutput() TLSOptionOutput + ToTLSOptionOutputWithContext(ctx context.Context) TLSOptionOutput +} + +func (*TLSOption) ElementType() reflect.Type { + return reflect.TypeOf((**TLSOption)(nil)).Elem() +} + +func (i *TLSOption) ToTLSOptionOutput() TLSOptionOutput { + return i.ToTLSOptionOutputWithContext(context.Background()) +} + +func (i *TLSOption) ToTLSOptionOutputWithContext(ctx context.Context) TLSOptionOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSOptionOutput) +} + +func (i *TLSOption) ToOutput(ctx context.Context) pulumix.Output[*TLSOption] { + return pulumix.Output[*TLSOption]{ + OutputState: i.ToTLSOptionOutputWithContext(ctx).OutputState, + } +} + +type TLSOptionOutput struct{ *pulumi.OutputState } + +func (TLSOptionOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TLSOption)(nil)).Elem() +} + +func (o TLSOptionOutput) ToTLSOptionOutput() TLSOptionOutput { + return o +} + +func (o TLSOptionOutput) ToTLSOptionOutputWithContext(ctx context.Context) TLSOptionOutput { + return o +} + +func (o TLSOptionOutput) ToOutput(ctx context.Context) pulumix.Output[*TLSOption] { + return pulumix.Output[*TLSOption]{ + OutputState: o.OutputState, + } +} + +func (o TLSOptionOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSOption) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o TLSOptionOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSOption) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o TLSOptionOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *TLSOption) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// TLSOptionSpec defines the desired state of a TLSOption. +func (o TLSOptionOutput) Spec() TLSOptionSpecOutput { + return o.ApplyT(func(v *TLSOption) TLSOptionSpecOutput { return v.Spec }).(TLSOptionSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TLSOptionInput)(nil)).Elem(), &TLSOption{}) + pulumi.RegisterOutputType(TLSOptionOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/tlsstore.go b/crds/kubernetes/traefik/v1alpha1/tlsstore.go new file mode 100644 index 0000000..b364825 --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/tlsstore.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// TLSStore is the CRD implementation of a Traefik TLS Store. For the time being, only the TLSStore named default is supported. This means that you cannot have two stores that are named default in different Kubernetes namespaces. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#certificates-stores +type TLSStore struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // TLSStoreSpec defines the desired state of a TLSStore. + Spec TLSStoreSpecOutput `pulumi:"spec"` +} + +// NewTLSStore registers a new resource with the given unique name, arguments, and options. +func NewTLSStore(ctx *pulumi.Context, + name string, args *TLSStoreArgs, opts ...pulumi.ResourceOption) (*TLSStore, error) { + if args == nil { + args = &TLSStoreArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("TLSStore") + opts = internal.PkgResourceDefaultOpts(opts) + var resource TLSStore + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:TLSStore", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTLSStore gets an existing TLSStore resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetTLSStore(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TLSStoreState, opts ...pulumi.ResourceOption) (*TLSStore, error) { + var resource TLSStore + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:TLSStore", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering TLSStore resources. +type tlsstoreState struct { +} + +type TLSStoreState struct { +} + +func (TLSStoreState) ElementType() reflect.Type { + return reflect.TypeOf((*tlsstoreState)(nil)).Elem() +} + +type tlsstoreArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // TLSStoreSpec defines the desired state of a TLSStore. + Spec *TLSStoreSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a TLSStore resource. +type TLSStoreArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // TLSStoreSpec defines the desired state of a TLSStore. + Spec TLSStoreSpecPtrInput +} + +func (TLSStoreArgs) ElementType() reflect.Type { + return reflect.TypeOf((*tlsstoreArgs)(nil)).Elem() +} + +type TLSStoreInput interface { + pulumi.Input + + ToTLSStoreOutput() TLSStoreOutput + ToTLSStoreOutputWithContext(ctx context.Context) TLSStoreOutput +} + +func (*TLSStore) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStore)(nil)).Elem() +} + +func (i *TLSStore) ToTLSStoreOutput() TLSStoreOutput { + return i.ToTLSStoreOutputWithContext(context.Background()) +} + +func (i *TLSStore) ToTLSStoreOutputWithContext(ctx context.Context) TLSStoreOutput { + return pulumi.ToOutputWithContext(ctx, i).(TLSStoreOutput) +} + +func (i *TLSStore) ToOutput(ctx context.Context) pulumix.Output[*TLSStore] { + return pulumix.Output[*TLSStore]{ + OutputState: i.ToTLSStoreOutputWithContext(ctx).OutputState, + } +} + +type TLSStoreOutput struct{ *pulumi.OutputState } + +func (TLSStoreOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TLSStore)(nil)).Elem() +} + +func (o TLSStoreOutput) ToTLSStoreOutput() TLSStoreOutput { + return o +} + +func (o TLSStoreOutput) ToTLSStoreOutputWithContext(ctx context.Context) TLSStoreOutput { + return o +} + +func (o TLSStoreOutput) ToOutput(ctx context.Context) pulumix.Output[*TLSStore] { + return pulumix.Output[*TLSStore]{ + OutputState: o.OutputState, + } +} + +func (o TLSStoreOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSStore) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o TLSStoreOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TLSStore) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o TLSStoreOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *TLSStore) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// TLSStoreSpec defines the desired state of a TLSStore. +func (o TLSStoreOutput) Spec() TLSStoreSpecOutput { + return o.ApplyT(func(v *TLSStore) TLSStoreSpecOutput { return v.Spec }).(TLSStoreSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TLSStoreInput)(nil)).Elem(), &TLSStore{}) + pulumi.RegisterOutputType(TLSStoreOutput{}) +} diff --git a/crds/kubernetes/traefik/v1alpha1/traefikService.go b/crds/kubernetes/traefik/v1alpha1/traefikService.go new file mode 100644 index 0000000..41aeb90 --- /dev/null +++ b/crds/kubernetes/traefik/v1alpha1/traefikService.go @@ -0,0 +1,154 @@ +// Code generated by crd2pulumi DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package v1alpha1 + +import ( + "context" + "reflect" + + "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal" + v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// TraefikService is the CRD implementation of a Traefik Service. TraefikService object allows to: - Apply weight to Services on load-balancing - Mirror traffic on services More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-traefikservice +type TraefikService struct { + pulumi.CustomResourceState + + ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"` + Kind pulumi.StringPtrOutput `pulumi:"kind"` + Metadata v1.ObjectMetaOutput `pulumi:"metadata"` + // TraefikServiceSpec defines the desired state of a TraefikService. + Spec TraefikServiceSpecOutput `pulumi:"spec"` +} + +// NewTraefikService registers a new resource with the given unique name, arguments, and options. +func NewTraefikService(ctx *pulumi.Context, + name string, args *TraefikServiceArgs, opts ...pulumi.ResourceOption) (*TraefikService, error) { + if args == nil { + args = &TraefikServiceArgs{} + } + + args.ApiVersion = pulumi.StringPtr("traefik.io/v1alpha1") + args.Kind = pulumi.StringPtr("TraefikService") + opts = internal.PkgResourceDefaultOpts(opts) + var resource TraefikService + err := ctx.RegisterResource("kubernetes:traefik.io/v1alpha1:TraefikService", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTraefikService gets an existing TraefikService resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetTraefikService(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TraefikServiceState, opts ...pulumi.ResourceOption) (*TraefikService, error) { + var resource TraefikService + err := ctx.ReadResource("kubernetes:traefik.io/v1alpha1:TraefikService", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering TraefikService resources. +type traefikServiceState struct { +} + +type TraefikServiceState struct { +} + +func (TraefikServiceState) ElementType() reflect.Type { + return reflect.TypeOf((*traefikServiceState)(nil)).Elem() +} + +type traefikServiceArgs struct { + ApiVersion *string `pulumi:"apiVersion"` + Kind *string `pulumi:"kind"` + Metadata *v1.ObjectMeta `pulumi:"metadata"` + // TraefikServiceSpec defines the desired state of a TraefikService. + Spec *TraefikServiceSpec `pulumi:"spec"` +} + +// The set of arguments for constructing a TraefikService resource. +type TraefikServiceArgs struct { + ApiVersion pulumi.StringPtrInput + Kind pulumi.StringPtrInput + Metadata v1.ObjectMetaPtrInput + // TraefikServiceSpec defines the desired state of a TraefikService. + Spec TraefikServiceSpecPtrInput +} + +func (TraefikServiceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*traefikServiceArgs)(nil)).Elem() +} + +type TraefikServiceInput interface { + pulumi.Input + + ToTraefikServiceOutput() TraefikServiceOutput + ToTraefikServiceOutputWithContext(ctx context.Context) TraefikServiceOutput +} + +func (*TraefikService) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikService)(nil)).Elem() +} + +func (i *TraefikService) ToTraefikServiceOutput() TraefikServiceOutput { + return i.ToTraefikServiceOutputWithContext(context.Background()) +} + +func (i *TraefikService) ToTraefikServiceOutputWithContext(ctx context.Context) TraefikServiceOutput { + return pulumi.ToOutputWithContext(ctx, i).(TraefikServiceOutput) +} + +func (i *TraefikService) ToOutput(ctx context.Context) pulumix.Output[*TraefikService] { + return pulumix.Output[*TraefikService]{ + OutputState: i.ToTraefikServiceOutputWithContext(ctx).OutputState, + } +} + +type TraefikServiceOutput struct{ *pulumi.OutputState } + +func (TraefikServiceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TraefikService)(nil)).Elem() +} + +func (o TraefikServiceOutput) ToTraefikServiceOutput() TraefikServiceOutput { + return o +} + +func (o TraefikServiceOutput) ToTraefikServiceOutputWithContext(ctx context.Context) TraefikServiceOutput { + return o +} + +func (o TraefikServiceOutput) ToOutput(ctx context.Context) pulumix.Output[*TraefikService] { + return pulumix.Output[*TraefikService]{ + OutputState: o.OutputState, + } +} + +func (o TraefikServiceOutput) ApiVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikService) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput) +} + +func (o TraefikServiceOutput) Kind() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TraefikService) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput) +} + +func (o TraefikServiceOutput) Metadata() v1.ObjectMetaOutput { + return o.ApplyT(func(v *TraefikService) v1.ObjectMetaOutput { return v.Metadata }).(v1.ObjectMetaOutput) +} + +// TraefikServiceSpec defines the desired state of a TraefikService. +func (o TraefikServiceOutput) Spec() TraefikServiceSpecOutput { + return o.ApplyT(func(v *TraefikService) TraefikServiceSpecOutput { return v.Spec }).(TraefikServiceSpecOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TraefikServiceInput)(nil)).Elem(), &TraefikService{}) + pulumi.RegisterOutputType(TraefikServiceOutput{}) +} diff --git a/main.go b/main.go index e599d40..0b62208 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,8 @@ func main() { Env: map[string]string{ "version": "1.0.0", }, + Dns: pulumi.StringRef("pulumi-test-nginx.localdomain"), + AllowAllOrigin: true, }) if err != nil { return err diff --git a/pkg/application/generic.go b/pkg/application/generic.go index 434a76d..158dc28 100644 --- a/pkg/application/generic.go +++ b/pkg/application/generic.go @@ -2,7 +2,8 @@ package application import ( v1 "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/certmanager/v1" - "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/externaldns/v1alpha1" + dnsv1alpha1 "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/externaldns/v1alpha1" + traefikv1alpha1 "antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/traefik/v1alpha1" "errors" "fmt" appsv1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/apps/v1" @@ -18,12 +19,13 @@ const ( ) type Configuration struct { - Name string - Namespace string - Image string - Dns *string - Replicas *int - Env map[string]string + Name string + Namespace string + Image string + Dns *string + Replicas *int + Env map[string]string + AllowAllOrigin bool } type internalConfiguration struct { @@ -37,6 +39,7 @@ type internalConfiguration struct { ShouldCreateDns bool ShouldCreateCertificate bool ShouldCreateIngress bool + ResponseHeaders *traefikv1alpha1.MiddlewareSpecHeadersArgs } type Application struct { @@ -68,6 +71,12 @@ func NewApplication(ctx *pulumi.Context, publicConfiguration *Configuration) (*A configuration.ShouldCreateCertificate = true } + if publicConfiguration.AllowAllOrigin { + configuration.ResponseHeaders = &traefikv1alpha1.MiddlewareSpecHeadersArgs{ + AccessControlAllowOriginList: toPulumiStringArray([]string{"*"}), + } + } + return createResources(ctx, configuration) } else { return nil, errors.New("missing required value Name or Image during generic application construction") @@ -105,7 +114,12 @@ func createResources(ctx *pulumi.Context, configuration *internalConfiguration, return nil, err } - _, err = createIngress(ctx, configuration, namespace, certificate, service, application) + headerMiddleware, err := createMiddlewareAddResponseHeader(ctx, configuration, namespace, application) + if err != nil { + return nil, err + } + + _, err = createIngress(ctx, configuration, namespace, certificate, service, application, headerMiddleware) if err != nil { return nil, err } @@ -125,14 +139,48 @@ func createResources(ctx *pulumi.Context, configuration *internalConfiguration, return application, nil } -func createIngress( +func toPulumiStringArray(values []string) pulumi.StringArray { + array := pulumi.StringArray{} + for _, value := range values { + array = append(array, pulumi.String(value)) + } + return array +} + +func createMiddlewareAddResponseHeader( ctx *pulumi.Context, configuration *internalConfiguration, - namespace *corev1.Namespace, certificate *v1.Certificate, service *corev1.Service, + namespace *corev1.Namespace, application *Application, -) (*netv1.Ingress, error) { +) (*traefikv1alpha1.Middleware, error) { + middlewareName := fmt.Sprintf("%s-response-header-middleware", configuration.Name) + return traefikv1alpha1.NewMiddleware(ctx, middlewareName, &traefikv1alpha1.MiddlewareArgs{ + Metadata: &metav1.ObjectMetaArgs{ + Namespace: namespace.Metadata.Name(), + Labels: pulumi.StringMap{ + "app.kubernetes.io/part-of": pulumi.String(configuration.Name), + "app.kubernetes.io/managed-by": pulumi.String("pulumi"), + }, + }, + Spec: &traefikv1alpha1.MiddlewareSpecArgs{ + Headers: configuration.ResponseHeaders, + }, + }, pulumi.Parent(application)) +} + +func createIngress(ctx *pulumi.Context, configuration *internalConfiguration, namespace *corev1.Namespace, certificate *v1.Certificate, service *corev1.Service, application *Application, responseHeaderMiddleware *traefikv1alpha1.Middleware) (*netv1.Ingress, error) { if configuration.ShouldCreateIngress { host := pulumi.String(configuration.Dns) + middlewares := pulumi.All(namespace.Metadata.Name().Elem(), responseHeaderMiddleware.Metadata.Name().Elem()).ApplyT(func(args []interface{}) string { + return fmt.Sprintf("kube-ingress-gzip-compress@kubernetescrd,%s-%s@kubernetescrd", + args[0], args[1], + ) + }).(pulumi.StringOutput) + ingressAnnotations := pulumi.StringMap{ + "traefik.ingress.kubernetes.io/router.middlewares": middlewares, + "traefik.ingress.kubernetes.io/router.entrypoints": pulumi.String("websecure"), + } + return netv1.NewIngress(ctx, configuration.Name, &netv1.IngressArgs{ Metadata: &metav1.ObjectMetaArgs{ Namespace: namespace.Metadata.Name(), @@ -140,10 +188,7 @@ func createIngress( "app.kubernetes.io/part-of": pulumi.String(configuration.Name), "app.kubernetes.io/managed-by": pulumi.String("pulumi"), }, - Annotations: pulumi.StringMap{ - "traefik.ingress.kubernetes.io/router.middlewares": pulumi.String("kube-ingress-gzip-compress@kubernetescrd"), - "traefik.ingress.kubernetes.io/router.entrypoints": pulumi.String("websecure"), - }, + Annotations: ingressAnnotations, }, Spec: &netv1.IngressSpecArgs{ IngressClassName: nil, @@ -208,9 +253,9 @@ func createCertificate( return nil, nil } -func createDNSRecord(ctx *pulumi.Context, configuration *internalConfiguration, namespace *corev1.Namespace, application *Application) (*v1alpha1.DNSEndpoint, error) { +func createDNSRecord(ctx *pulumi.Context, configuration *internalConfiguration, namespace *corev1.Namespace, application *Application) (*dnsv1alpha1.DNSEndpoint, error) { if configuration.ShouldCreateDns { - return v1alpha1.NewDNSEndpoint(ctx, fmt.Sprintf("%s-record", configuration.Name), &v1alpha1.DNSEndpointArgs{ + return dnsv1alpha1.NewDNSEndpoint(ctx, fmt.Sprintf("%s-record", configuration.Name), &dnsv1alpha1.DNSEndpointArgs{ Metadata: &metav1.ObjectMetaArgs{ Namespace: namespace.Metadata.Name(), Labels: pulumi.StringMap{ @@ -218,9 +263,9 @@ func createDNSRecord(ctx *pulumi.Context, configuration *internalConfiguration, "app.kubernetes.io/managed-by": pulumi.String("pulumi"), }, }, - Spec: &v1alpha1.DNSEndpointSpecArgs{ - Endpoints: &v1alpha1.DNSEndpointSpecEndpointsArray{ - &v1alpha1.DNSEndpointSpecEndpointsArgs{ + Spec: &dnsv1alpha1.DNSEndpointSpecArgs{ + Endpoints: &dnsv1alpha1.DNSEndpointSpecEndpointsArray{ + &dnsv1alpha1.DNSEndpointSpecEndpointsArgs{ DnsName: pulumi.String(configuration.Dns), RecordTTL: pulumi.Int(defaultRecordTTL), RecordType: pulumi.String("CNAME"),