Compare commits

..

24 Commits

Author SHA1 Message Date
Renovate Bot
7cf3d67f91 chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.144.1 2024-12-22 00:16:35 +00:00
Renovate Bot
0a6c12c27b
chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.143.0 2024-12-16 00:02:32 +01:00
Renovate Bot
577d112568 chore(deps): update module github.com/pulumi/pulumi-kubernetes/sdk/v4 to v4.19.0 2024-12-13 00:21:40 +00:00
c3fb551904
feat(probe): support readiness path 2024-10-07 00:40:51 +02:00
Renovate Bot
ae29216252
chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.132.0 2024-09-29 13:52:56 +02:00
d061ee3d47
feature: customize initial delay seconds and period seconds 2024-09-29 13:47:31 +02:00
Renovate Bot
9361bbd9d3 chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.132.0 2024-09-12 00:35:46 +00:00
Renovate Bot
e52cc60cf3
chore(deps): update module github.com/pulumi/pulumi-kubernetes/sdk/v4 to v4.13.1 2024-06-23 17:26:55 +02:00
Renovate Bot
e92af940a0 chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.121.0 2024-06-23 00:10:13 +00:00
Renovate Bot
5f3440b172 chore(deps): update module github.com/pulumi/pulumi-kubernetes/sdk/v4 to v4.10.0 2024-04-13 00:08:11 +00:00
35aa3a7560
feature: upgrade version 2024-04-12 00:38:03 +02:00
Renovate Bot
8877562f45
chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.112.0 2024-04-12 00:34:56 +02:00
Renovate Bot
554e8ea517 chore(deps): update dependency go to v1.22.2 2024-04-11 22:32:23 +00:00
Renovate Bot
da01ea8c34 chore(deps): update module github.com/pulumi/pulumi-kubernetes/sdk/v4 to v4.9.1 2024-04-11 22:31:28 +00:00
Renovate Bot
713ad7bed1 chore(deps): update dependency go to v1.22.1 2024-03-20 00:08:48 +00:00
Renovate Bot
2c50de6308 chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.105.0 2024-02-13 22:17:39 +00:00
Renovate Bot
f4d93e019a chore(deps): update dependency go to v1.22.0 2024-02-07 00:05:54 +00:00
Renovate Bot
c68e7251f3
chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.104.2 2024-02-03 13:55:52 +01:00
Renovate Bot
af191eec64 chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.104.2 2024-02-03 12:46:11 +00:00
Renovate Bot
d65611184d chore(deps): update dependency go to v1.21.6 2024-01-10 00:12:01 +00:00
Renovate Bot
17d2e093ea chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.96.2 2023-12-09 00:14:36 +00:00
Renovate Bot
85586c381c
chore(deps): update module github.com/pulumi/pulumi-kubernetes/sdk/v4 to v4.5.5 2023-12-06 21:26:00 +01:00
Renovate Bot
29b649678e chore(deps): update module github.com/pulumi/pulumi/sdk/v3 to v3.95.0 2023-12-06 20:20:02 +00:00
Renovate Bot
9bc8531db1 chore(deps): update dependency go to v1.21.5 2023-12-05 22:49:18 +00:00
27 changed files with 19504 additions and 928 deletions

View File

@ -1,7 +1,7 @@
.PHONY: crds
clean:
rm -r crds/
rm -r crds/ || true
crds: clean
crd2pulumi --go ~/Documents/virtualization/kubeadm/cert-manager/cert-manager/1-crds.yaml

View File

@ -0,0 +1,44 @@
// Code generated by crd2pulumi DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package v1alpha2
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:gateway.networking.k8s.io/v1alpha2:UDPRoute":
r = &UDPRoute{}
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",
"gateway.networking.k8s.io/v1alpha2",
&module{version},
)
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,165 @@
// Code generated by crd2pulumi DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package v1alpha2
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"
)
// UDPRoute provides a way to route UDP traffic. When combined with a Gateway listener, it can be used to forward traffic on the port specified by the listener to a set of backends specified by the UDPRoute.
type UDPRoute struct {
pulumi.CustomResourceState
ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"`
Kind pulumi.StringPtrOutput `pulumi:"kind"`
Metadata v1.ObjectMetaPtrOutput `pulumi:"metadata"`
// Spec defines the desired state of UDPRoute.
Spec UDPRouteSpecOutput `pulumi:"spec"`
// Status defines the current state of UDPRoute.
Status UDPRouteStatusPtrOutput `pulumi:"status"`
}
// NewUDPRoute registers a new resource with the given unique name, arguments, and options.
func NewUDPRoute(ctx *pulumi.Context,
name string, args *UDPRouteArgs, opts ...pulumi.ResourceOption) (*UDPRoute, error) {
if args == nil {
args = &UDPRouteArgs{}
}
args.ApiVersion = pulumi.StringPtr("gateway.networking.k8s.io/v1alpha2")
args.Kind = pulumi.StringPtr("UDPRoute")
opts = internal.PkgResourceDefaultOpts(opts)
var resource UDPRoute
err := ctx.RegisterResource("kubernetes:gateway.networking.k8s.io/v1alpha2:UDPRoute", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetUDPRoute gets an existing UDPRoute 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 GetUDPRoute(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *UDPRouteState, opts ...pulumi.ResourceOption) (*UDPRoute, error) {
var resource UDPRoute
err := ctx.ReadResource("kubernetes:gateway.networking.k8s.io/v1alpha2:UDPRoute", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering UDPRoute resources.
type udprouteState struct {
}
type UDPRouteState struct {
}
func (UDPRouteState) ElementType() reflect.Type {
return reflect.TypeOf((*udprouteState)(nil)).Elem()
}
type udprouteArgs struct {
ApiVersion *string `pulumi:"apiVersion"`
Kind *string `pulumi:"kind"`
Metadata *v1.ObjectMeta `pulumi:"metadata"`
// Spec defines the desired state of UDPRoute.
Spec *UDPRouteSpec `pulumi:"spec"`
// Status defines the current state of UDPRoute.
Status *UDPRouteStatus `pulumi:"status"`
}
// The set of arguments for constructing a UDPRoute resource.
type UDPRouteArgs struct {
ApiVersion pulumi.StringPtrInput
Kind pulumi.StringPtrInput
Metadata v1.ObjectMetaPtrInput
// Spec defines the desired state of UDPRoute.
Spec UDPRouteSpecPtrInput
// Status defines the current state of UDPRoute.
Status UDPRouteStatusPtrInput
}
func (UDPRouteArgs) ElementType() reflect.Type {
return reflect.TypeOf((*udprouteArgs)(nil)).Elem()
}
type UDPRouteInput interface {
pulumi.Input
ToUDPRouteOutput() UDPRouteOutput
ToUDPRouteOutputWithContext(ctx context.Context) UDPRouteOutput
}
func (*UDPRoute) ElementType() reflect.Type {
return reflect.TypeOf((**UDPRoute)(nil)).Elem()
}
func (i *UDPRoute) ToUDPRouteOutput() UDPRouteOutput {
return i.ToUDPRouteOutputWithContext(context.Background())
}
func (i *UDPRoute) ToUDPRouteOutputWithContext(ctx context.Context) UDPRouteOutput {
return pulumi.ToOutputWithContext(ctx, i).(UDPRouteOutput)
}
func (i *UDPRoute) ToOutput(ctx context.Context) pulumix.Output[*UDPRoute] {
return pulumix.Output[*UDPRoute]{
OutputState: i.ToUDPRouteOutputWithContext(ctx).OutputState,
}
}
type UDPRouteOutput struct{ *pulumi.OutputState }
func (UDPRouteOutput) ElementType() reflect.Type {
return reflect.TypeOf((**UDPRoute)(nil)).Elem()
}
func (o UDPRouteOutput) ToUDPRouteOutput() UDPRouteOutput {
return o
}
func (o UDPRouteOutput) ToUDPRouteOutputWithContext(ctx context.Context) UDPRouteOutput {
return o
}
func (o UDPRouteOutput) ToOutput(ctx context.Context) pulumix.Output[*UDPRoute] {
return pulumix.Output[*UDPRoute]{
OutputState: o.OutputState,
}
}
func (o UDPRouteOutput) ApiVersion() pulumi.StringPtrOutput {
return o.ApplyT(func(v *UDPRoute) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput)
}
func (o UDPRouteOutput) Kind() pulumi.StringPtrOutput {
return o.ApplyT(func(v *UDPRoute) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput)
}
func (o UDPRouteOutput) Metadata() v1.ObjectMetaPtrOutput {
return o.ApplyT(func(v *UDPRoute) v1.ObjectMetaPtrOutput { return v.Metadata }).(v1.ObjectMetaPtrOutput)
}
// Spec defines the desired state of UDPRoute.
func (o UDPRouteOutput) Spec() UDPRouteSpecOutput {
return o.ApplyT(func(v *UDPRoute) UDPRouteSpecOutput { return v.Spec }).(UDPRouteSpecOutput)
}
// Status defines the current state of UDPRoute.
func (o UDPRouteOutput) Status() UDPRouteStatusPtrOutput {
return o.ApplyT(func(v *UDPRoute) UDPRouteStatusPtrOutput { return v.Status }).(UDPRouteStatusPtrOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*UDPRouteInput)(nil)).Elem(), &UDPRoute{})
pulumi.RegisterOutputType(UDPRouteOutput{})
}

View File

@ -0,0 +1,168 @@
// 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"
)
// AccessControlPolicy defines an access control policy.
type AccessControlPolicy struct {
pulumi.CustomResourceState
ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"`
Kind pulumi.StringPtrOutput `pulumi:"kind"`
Metadata v1.ObjectMetaPtrOutput `pulumi:"metadata"`
// AccessControlPolicySpec configures an access control policy.
Spec AccessControlPolicySpecPtrOutput `pulumi:"spec"`
// The current status of this access control policy.
Status AccessControlPolicyStatusPtrOutput `pulumi:"status"`
}
// NewAccessControlPolicy registers a new resource with the given unique name, arguments, and options.
func NewAccessControlPolicy(ctx *pulumi.Context,
name string, args *AccessControlPolicyArgs, opts ...pulumi.ResourceOption) (*AccessControlPolicy, error) {
if args == nil {
args = &AccessControlPolicyArgs{}
}
args.ApiVersion = pulumi.StringPtr("hub.traefik.io/v1alpha1")
args.Kind = pulumi.StringPtr("AccessControlPolicy")
if args.Spec != nil {
args.Spec = args.Spec.ToAccessControlPolicySpecPtrOutput().ApplyT(func(v *AccessControlPolicySpec) *AccessControlPolicySpec { return v.Defaults() }).(AccessControlPolicySpecPtrOutput)
}
opts = internal.PkgResourceDefaultOpts(opts)
var resource AccessControlPolicy
err := ctx.RegisterResource("kubernetes:hub.traefik.io/v1alpha1:AccessControlPolicy", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetAccessControlPolicy gets an existing AccessControlPolicy 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 GetAccessControlPolicy(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *AccessControlPolicyState, opts ...pulumi.ResourceOption) (*AccessControlPolicy, error) {
var resource AccessControlPolicy
err := ctx.ReadResource("kubernetes:hub.traefik.io/v1alpha1:AccessControlPolicy", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering AccessControlPolicy resources.
type accessControlPolicyState struct {
}
type AccessControlPolicyState struct {
}
func (AccessControlPolicyState) ElementType() reflect.Type {
return reflect.TypeOf((*accessControlPolicyState)(nil)).Elem()
}
type accessControlPolicyArgs struct {
ApiVersion *string `pulumi:"apiVersion"`
Kind *string `pulumi:"kind"`
Metadata *v1.ObjectMeta `pulumi:"metadata"`
// AccessControlPolicySpec configures an access control policy.
Spec *AccessControlPolicySpec `pulumi:"spec"`
// The current status of this access control policy.
Status *AccessControlPolicyStatus `pulumi:"status"`
}
// The set of arguments for constructing a AccessControlPolicy resource.
type AccessControlPolicyArgs struct {
ApiVersion pulumi.StringPtrInput
Kind pulumi.StringPtrInput
Metadata v1.ObjectMetaPtrInput
// AccessControlPolicySpec configures an access control policy.
Spec AccessControlPolicySpecPtrInput
// The current status of this access control policy.
Status AccessControlPolicyStatusPtrInput
}
func (AccessControlPolicyArgs) ElementType() reflect.Type {
return reflect.TypeOf((*accessControlPolicyArgs)(nil)).Elem()
}
type AccessControlPolicyInput interface {
pulumi.Input
ToAccessControlPolicyOutput() AccessControlPolicyOutput
ToAccessControlPolicyOutputWithContext(ctx context.Context) AccessControlPolicyOutput
}
func (*AccessControlPolicy) ElementType() reflect.Type {
return reflect.TypeOf((**AccessControlPolicy)(nil)).Elem()
}
func (i *AccessControlPolicy) ToAccessControlPolicyOutput() AccessControlPolicyOutput {
return i.ToAccessControlPolicyOutputWithContext(context.Background())
}
func (i *AccessControlPolicy) ToAccessControlPolicyOutputWithContext(ctx context.Context) AccessControlPolicyOutput {
return pulumi.ToOutputWithContext(ctx, i).(AccessControlPolicyOutput)
}
func (i *AccessControlPolicy) ToOutput(ctx context.Context) pulumix.Output[*AccessControlPolicy] {
return pulumix.Output[*AccessControlPolicy]{
OutputState: i.ToAccessControlPolicyOutputWithContext(ctx).OutputState,
}
}
type AccessControlPolicyOutput struct{ *pulumi.OutputState }
func (AccessControlPolicyOutput) ElementType() reflect.Type {
return reflect.TypeOf((**AccessControlPolicy)(nil)).Elem()
}
func (o AccessControlPolicyOutput) ToAccessControlPolicyOutput() AccessControlPolicyOutput {
return o
}
func (o AccessControlPolicyOutput) ToAccessControlPolicyOutputWithContext(ctx context.Context) AccessControlPolicyOutput {
return o
}
func (o AccessControlPolicyOutput) ToOutput(ctx context.Context) pulumix.Output[*AccessControlPolicy] {
return pulumix.Output[*AccessControlPolicy]{
OutputState: o.OutputState,
}
}
func (o AccessControlPolicyOutput) ApiVersion() pulumi.StringPtrOutput {
return o.ApplyT(func(v *AccessControlPolicy) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput)
}
func (o AccessControlPolicyOutput) Kind() pulumi.StringPtrOutput {
return o.ApplyT(func(v *AccessControlPolicy) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput)
}
func (o AccessControlPolicyOutput) Metadata() v1.ObjectMetaPtrOutput {
return o.ApplyT(func(v *AccessControlPolicy) v1.ObjectMetaPtrOutput { return v.Metadata }).(v1.ObjectMetaPtrOutput)
}
// AccessControlPolicySpec configures an access control policy.
func (o AccessControlPolicyOutput) Spec() AccessControlPolicySpecPtrOutput {
return o.ApplyT(func(v *AccessControlPolicy) AccessControlPolicySpecPtrOutput { return v.Spec }).(AccessControlPolicySpecPtrOutput)
}
// The current status of this access control policy.
func (o AccessControlPolicyOutput) Status() AccessControlPolicyStatusPtrOutput {
return o.ApplyT(func(v *AccessControlPolicy) AccessControlPolicyStatusPtrOutput { return v.Status }).(AccessControlPolicyStatusPtrOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*AccessControlPolicyInput)(nil)).Elem(), &AccessControlPolicy{})
pulumi.RegisterOutputType(AccessControlPolicyOutput{})
}

View File

@ -0,0 +1,167 @@
// 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"
)
// API defines an HTTP interface that is exposed to external clients. It specifies the supported versions
// and provides instructions for accessing its documentation. Once instantiated, an API object is associated
// with an Ingress, IngressRoute, or HTTPRoute resource, enabling the exposure of the described API to the outside world.
type API struct {
pulumi.CustomResourceState
ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"`
Kind pulumi.StringPtrOutput `pulumi:"kind"`
Metadata v1.ObjectMetaPtrOutput `pulumi:"metadata"`
// APISpec describes the API.
Spec APISpecPtrOutput `pulumi:"spec"`
// The current status of this API.
Status APIStatusPtrOutput `pulumi:"status"`
}
// NewAPI registers a new resource with the given unique name, arguments, and options.
func NewAPI(ctx *pulumi.Context,
name string, args *APIArgs, opts ...pulumi.ResourceOption) (*API, error) {
if args == nil {
args = &APIArgs{}
}
args.ApiVersion = pulumi.StringPtr("hub.traefik.io/v1alpha1")
args.Kind = pulumi.StringPtr("API")
opts = internal.PkgResourceDefaultOpts(opts)
var resource API
err := ctx.RegisterResource("kubernetes:hub.traefik.io/v1alpha1:API", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetAPI gets an existing API 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 GetAPI(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *APIState, opts ...pulumi.ResourceOption) (*API, error) {
var resource API
err := ctx.ReadResource("kubernetes:hub.traefik.io/v1alpha1:API", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering API resources.
type apiState struct {
}
type APIState struct {
}
func (APIState) ElementType() reflect.Type {
return reflect.TypeOf((*apiState)(nil)).Elem()
}
type apiArgs struct {
ApiVersion *string `pulumi:"apiVersion"`
Kind *string `pulumi:"kind"`
Metadata *v1.ObjectMeta `pulumi:"metadata"`
// APISpec describes the API.
Spec *APISpec `pulumi:"spec"`
// The current status of this API.
Status *APIStatus `pulumi:"status"`
}
// The set of arguments for constructing a API resource.
type APIArgs struct {
ApiVersion pulumi.StringPtrInput
Kind pulumi.StringPtrInput
Metadata v1.ObjectMetaPtrInput
// APISpec describes the API.
Spec APISpecPtrInput
// The current status of this API.
Status APIStatusPtrInput
}
func (APIArgs) ElementType() reflect.Type {
return reflect.TypeOf((*apiArgs)(nil)).Elem()
}
type APIInput interface {
pulumi.Input
ToAPIOutput() APIOutput
ToAPIOutputWithContext(ctx context.Context) APIOutput
}
func (*API) ElementType() reflect.Type {
return reflect.TypeOf((**API)(nil)).Elem()
}
func (i *API) ToAPIOutput() APIOutput {
return i.ToAPIOutputWithContext(context.Background())
}
func (i *API) ToAPIOutputWithContext(ctx context.Context) APIOutput {
return pulumi.ToOutputWithContext(ctx, i).(APIOutput)
}
func (i *API) ToOutput(ctx context.Context) pulumix.Output[*API] {
return pulumix.Output[*API]{
OutputState: i.ToAPIOutputWithContext(ctx).OutputState,
}
}
type APIOutput struct{ *pulumi.OutputState }
func (APIOutput) ElementType() reflect.Type {
return reflect.TypeOf((**API)(nil)).Elem()
}
func (o APIOutput) ToAPIOutput() APIOutput {
return o
}
func (o APIOutput) ToAPIOutputWithContext(ctx context.Context) APIOutput {
return o
}
func (o APIOutput) ToOutput(ctx context.Context) pulumix.Output[*API] {
return pulumix.Output[*API]{
OutputState: o.OutputState,
}
}
func (o APIOutput) ApiVersion() pulumi.StringPtrOutput {
return o.ApplyT(func(v *API) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput)
}
func (o APIOutput) Kind() pulumi.StringPtrOutput {
return o.ApplyT(func(v *API) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput)
}
func (o APIOutput) Metadata() v1.ObjectMetaPtrOutput {
return o.ApplyT(func(v *API) v1.ObjectMetaPtrOutput { return v.Metadata }).(v1.ObjectMetaPtrOutput)
}
// APISpec describes the API.
func (o APIOutput) Spec() APISpecPtrOutput {
return o.ApplyT(func(v *API) APISpecPtrOutput { return v.Spec }).(APISpecPtrOutput)
}
// The current status of this API.
func (o APIOutput) Status() APIStatusPtrOutput {
return o.ApplyT(func(v *API) APIStatusPtrOutput { return v.Status }).(APIStatusPtrOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*APIInput)(nil)).Elem(), &API{})
pulumi.RegisterOutputType(APIOutput{})
}

View File

@ -0,0 +1,165 @@
// 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"
)
// APIAccess defines who can access to a set of APIs.
type APIAccess struct {
pulumi.CustomResourceState
ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"`
Kind pulumi.StringPtrOutput `pulumi:"kind"`
Metadata v1.ObjectMetaPtrOutput `pulumi:"metadata"`
// The desired behavior of this APIAccess.
Spec APIAccessSpecPtrOutput `pulumi:"spec"`
// The current status of this APIAccess.
Status APIAccessStatusPtrOutput `pulumi:"status"`
}
// NewAPIAccess registers a new resource with the given unique name, arguments, and options.
func NewAPIAccess(ctx *pulumi.Context,
name string, args *APIAccessArgs, opts ...pulumi.ResourceOption) (*APIAccess, error) {
if args == nil {
args = &APIAccessArgs{}
}
args.ApiVersion = pulumi.StringPtr("hub.traefik.io/v1alpha1")
args.Kind = pulumi.StringPtr("APIAccess")
opts = internal.PkgResourceDefaultOpts(opts)
var resource APIAccess
err := ctx.RegisterResource("kubernetes:hub.traefik.io/v1alpha1:APIAccess", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetAPIAccess gets an existing APIAccess 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 GetAPIAccess(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *APIAccessState, opts ...pulumi.ResourceOption) (*APIAccess, error) {
var resource APIAccess
err := ctx.ReadResource("kubernetes:hub.traefik.io/v1alpha1:APIAccess", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering APIAccess resources.
type apiaccessState struct {
}
type APIAccessState struct {
}
func (APIAccessState) ElementType() reflect.Type {
return reflect.TypeOf((*apiaccessState)(nil)).Elem()
}
type apiaccessArgs struct {
ApiVersion *string `pulumi:"apiVersion"`
Kind *string `pulumi:"kind"`
Metadata *v1.ObjectMeta `pulumi:"metadata"`
// The desired behavior of this APIAccess.
Spec *APIAccessSpec `pulumi:"spec"`
// The current status of this APIAccess.
Status *APIAccessStatus `pulumi:"status"`
}
// The set of arguments for constructing a APIAccess resource.
type APIAccessArgs struct {
ApiVersion pulumi.StringPtrInput
Kind pulumi.StringPtrInput
Metadata v1.ObjectMetaPtrInput
// The desired behavior of this APIAccess.
Spec APIAccessSpecPtrInput
// The current status of this APIAccess.
Status APIAccessStatusPtrInput
}
func (APIAccessArgs) ElementType() reflect.Type {
return reflect.TypeOf((*apiaccessArgs)(nil)).Elem()
}
type APIAccessInput interface {
pulumi.Input
ToAPIAccessOutput() APIAccessOutput
ToAPIAccessOutputWithContext(ctx context.Context) APIAccessOutput
}
func (*APIAccess) ElementType() reflect.Type {
return reflect.TypeOf((**APIAccess)(nil)).Elem()
}
func (i *APIAccess) ToAPIAccessOutput() APIAccessOutput {
return i.ToAPIAccessOutputWithContext(context.Background())
}
func (i *APIAccess) ToAPIAccessOutputWithContext(ctx context.Context) APIAccessOutput {
return pulumi.ToOutputWithContext(ctx, i).(APIAccessOutput)
}
func (i *APIAccess) ToOutput(ctx context.Context) pulumix.Output[*APIAccess] {
return pulumix.Output[*APIAccess]{
OutputState: i.ToAPIAccessOutputWithContext(ctx).OutputState,
}
}
type APIAccessOutput struct{ *pulumi.OutputState }
func (APIAccessOutput) ElementType() reflect.Type {
return reflect.TypeOf((**APIAccess)(nil)).Elem()
}
func (o APIAccessOutput) ToAPIAccessOutput() APIAccessOutput {
return o
}
func (o APIAccessOutput) ToAPIAccessOutputWithContext(ctx context.Context) APIAccessOutput {
return o
}
func (o APIAccessOutput) ToOutput(ctx context.Context) pulumix.Output[*APIAccess] {
return pulumix.Output[*APIAccess]{
OutputState: o.OutputState,
}
}
func (o APIAccessOutput) ApiVersion() pulumi.StringPtrOutput {
return o.ApplyT(func(v *APIAccess) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput)
}
func (o APIAccessOutput) Kind() pulumi.StringPtrOutput {
return o.ApplyT(func(v *APIAccess) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput)
}
func (o APIAccessOutput) Metadata() v1.ObjectMetaPtrOutput {
return o.ApplyT(func(v *APIAccess) v1.ObjectMetaPtrOutput { return v.Metadata }).(v1.ObjectMetaPtrOutput)
}
// The desired behavior of this APIAccess.
func (o APIAccessOutput) Spec() APIAccessSpecPtrOutput {
return o.ApplyT(func(v *APIAccess) APIAccessSpecPtrOutput { return v.Spec }).(APIAccessSpecPtrOutput)
}
// The current status of this APIAccess.
func (o APIAccessOutput) Status() APIAccessStatusPtrOutput {
return o.ApplyT(func(v *APIAccess) APIAccessStatusPtrOutput { return v.Status }).(APIAccessStatusPtrOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*APIAccessInput)(nil)).Elem(), &APIAccess{})
pulumi.RegisterOutputType(APIAccessOutput{})
}

View File

@ -0,0 +1,165 @@
// 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"
)
// APIPortal defines a developer portal for accessing the documentation of APIs.
type APIPortal struct {
pulumi.CustomResourceState
ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"`
Kind pulumi.StringPtrOutput `pulumi:"kind"`
Metadata v1.ObjectMetaPtrOutput `pulumi:"metadata"`
// The desired behavior of this APIPortal.
Spec APIPortalSpecPtrOutput `pulumi:"spec"`
// The current status of this APIPortal.
Status APIPortalStatusPtrOutput `pulumi:"status"`
}
// NewAPIPortal registers a new resource with the given unique name, arguments, and options.
func NewAPIPortal(ctx *pulumi.Context,
name string, args *APIPortalArgs, opts ...pulumi.ResourceOption) (*APIPortal, error) {
if args == nil {
args = &APIPortalArgs{}
}
args.ApiVersion = pulumi.StringPtr("hub.traefik.io/v1alpha1")
args.Kind = pulumi.StringPtr("APIPortal")
opts = internal.PkgResourceDefaultOpts(opts)
var resource APIPortal
err := ctx.RegisterResource("kubernetes:hub.traefik.io/v1alpha1:APIPortal", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetAPIPortal gets an existing APIPortal 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 GetAPIPortal(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *APIPortalState, opts ...pulumi.ResourceOption) (*APIPortal, error) {
var resource APIPortal
err := ctx.ReadResource("kubernetes:hub.traefik.io/v1alpha1:APIPortal", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering APIPortal resources.
type apiportalState struct {
}
type APIPortalState struct {
}
func (APIPortalState) ElementType() reflect.Type {
return reflect.TypeOf((*apiportalState)(nil)).Elem()
}
type apiportalArgs struct {
ApiVersion *string `pulumi:"apiVersion"`
Kind *string `pulumi:"kind"`
Metadata *v1.ObjectMeta `pulumi:"metadata"`
// The desired behavior of this APIPortal.
Spec *APIPortalSpec `pulumi:"spec"`
// The current status of this APIPortal.
Status *APIPortalStatus `pulumi:"status"`
}
// The set of arguments for constructing a APIPortal resource.
type APIPortalArgs struct {
ApiVersion pulumi.StringPtrInput
Kind pulumi.StringPtrInput
Metadata v1.ObjectMetaPtrInput
// The desired behavior of this APIPortal.
Spec APIPortalSpecPtrInput
// The current status of this APIPortal.
Status APIPortalStatusPtrInput
}
func (APIPortalArgs) ElementType() reflect.Type {
return reflect.TypeOf((*apiportalArgs)(nil)).Elem()
}
type APIPortalInput interface {
pulumi.Input
ToAPIPortalOutput() APIPortalOutput
ToAPIPortalOutputWithContext(ctx context.Context) APIPortalOutput
}
func (*APIPortal) ElementType() reflect.Type {
return reflect.TypeOf((**APIPortal)(nil)).Elem()
}
func (i *APIPortal) ToAPIPortalOutput() APIPortalOutput {
return i.ToAPIPortalOutputWithContext(context.Background())
}
func (i *APIPortal) ToAPIPortalOutputWithContext(ctx context.Context) APIPortalOutput {
return pulumi.ToOutputWithContext(ctx, i).(APIPortalOutput)
}
func (i *APIPortal) ToOutput(ctx context.Context) pulumix.Output[*APIPortal] {
return pulumix.Output[*APIPortal]{
OutputState: i.ToAPIPortalOutputWithContext(ctx).OutputState,
}
}
type APIPortalOutput struct{ *pulumi.OutputState }
func (APIPortalOutput) ElementType() reflect.Type {
return reflect.TypeOf((**APIPortal)(nil)).Elem()
}
func (o APIPortalOutput) ToAPIPortalOutput() APIPortalOutput {
return o
}
func (o APIPortalOutput) ToAPIPortalOutputWithContext(ctx context.Context) APIPortalOutput {
return o
}
func (o APIPortalOutput) ToOutput(ctx context.Context) pulumix.Output[*APIPortal] {
return pulumix.Output[*APIPortal]{
OutputState: o.OutputState,
}
}
func (o APIPortalOutput) ApiVersion() pulumi.StringPtrOutput {
return o.ApplyT(func(v *APIPortal) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput)
}
func (o APIPortalOutput) Kind() pulumi.StringPtrOutput {
return o.ApplyT(func(v *APIPortal) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput)
}
func (o APIPortalOutput) Metadata() v1.ObjectMetaPtrOutput {
return o.ApplyT(func(v *APIPortal) v1.ObjectMetaPtrOutput { return v.Metadata }).(v1.ObjectMetaPtrOutput)
}
// The desired behavior of this APIPortal.
func (o APIPortalOutput) Spec() APIPortalSpecPtrOutput {
return o.ApplyT(func(v *APIPortal) APIPortalSpecPtrOutput { return v.Spec }).(APIPortalSpecPtrOutput)
}
// The current status of this APIPortal.
func (o APIPortalOutput) Status() APIPortalStatusPtrOutput {
return o.ApplyT(func(v *APIPortal) APIPortalStatusPtrOutput { return v.Status }).(APIPortalStatusPtrOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*APIPortalInput)(nil)).Elem(), &APIPortal{})
pulumi.RegisterOutputType(APIPortalOutput{})
}

View File

@ -0,0 +1,165 @@
// 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"
)
// APIRateLimit defines how group of consumers are rate limited on a set of APIs.
type APIRateLimit struct {
pulumi.CustomResourceState
ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"`
Kind pulumi.StringPtrOutput `pulumi:"kind"`
Metadata v1.ObjectMetaPtrOutput `pulumi:"metadata"`
// The desired behavior of this APIRateLimit.
Spec APIRateLimitSpecPtrOutput `pulumi:"spec"`
// The current status of this APIRateLimit.
Status APIRateLimitStatusPtrOutput `pulumi:"status"`
}
// NewAPIRateLimit registers a new resource with the given unique name, arguments, and options.
func NewAPIRateLimit(ctx *pulumi.Context,
name string, args *APIRateLimitArgs, opts ...pulumi.ResourceOption) (*APIRateLimit, error) {
if args == nil {
args = &APIRateLimitArgs{}
}
args.ApiVersion = pulumi.StringPtr("hub.traefik.io/v1alpha1")
args.Kind = pulumi.StringPtr("APIRateLimit")
opts = internal.PkgResourceDefaultOpts(opts)
var resource APIRateLimit
err := ctx.RegisterResource("kubernetes:hub.traefik.io/v1alpha1:APIRateLimit", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetAPIRateLimit gets an existing APIRateLimit 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 GetAPIRateLimit(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *APIRateLimitState, opts ...pulumi.ResourceOption) (*APIRateLimit, error) {
var resource APIRateLimit
err := ctx.ReadResource("kubernetes:hub.traefik.io/v1alpha1:APIRateLimit", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering APIRateLimit resources.
type apirateLimitState struct {
}
type APIRateLimitState struct {
}
func (APIRateLimitState) ElementType() reflect.Type {
return reflect.TypeOf((*apirateLimitState)(nil)).Elem()
}
type apirateLimitArgs struct {
ApiVersion *string `pulumi:"apiVersion"`
Kind *string `pulumi:"kind"`
Metadata *v1.ObjectMeta `pulumi:"metadata"`
// The desired behavior of this APIRateLimit.
Spec *APIRateLimitSpec `pulumi:"spec"`
// The current status of this APIRateLimit.
Status *APIRateLimitStatus `pulumi:"status"`
}
// The set of arguments for constructing a APIRateLimit resource.
type APIRateLimitArgs struct {
ApiVersion pulumi.StringPtrInput
Kind pulumi.StringPtrInput
Metadata v1.ObjectMetaPtrInput
// The desired behavior of this APIRateLimit.
Spec APIRateLimitSpecPtrInput
// The current status of this APIRateLimit.
Status APIRateLimitStatusPtrInput
}
func (APIRateLimitArgs) ElementType() reflect.Type {
return reflect.TypeOf((*apirateLimitArgs)(nil)).Elem()
}
type APIRateLimitInput interface {
pulumi.Input
ToAPIRateLimitOutput() APIRateLimitOutput
ToAPIRateLimitOutputWithContext(ctx context.Context) APIRateLimitOutput
}
func (*APIRateLimit) ElementType() reflect.Type {
return reflect.TypeOf((**APIRateLimit)(nil)).Elem()
}
func (i *APIRateLimit) ToAPIRateLimitOutput() APIRateLimitOutput {
return i.ToAPIRateLimitOutputWithContext(context.Background())
}
func (i *APIRateLimit) ToAPIRateLimitOutputWithContext(ctx context.Context) APIRateLimitOutput {
return pulumi.ToOutputWithContext(ctx, i).(APIRateLimitOutput)
}
func (i *APIRateLimit) ToOutput(ctx context.Context) pulumix.Output[*APIRateLimit] {
return pulumix.Output[*APIRateLimit]{
OutputState: i.ToAPIRateLimitOutputWithContext(ctx).OutputState,
}
}
type APIRateLimitOutput struct{ *pulumi.OutputState }
func (APIRateLimitOutput) ElementType() reflect.Type {
return reflect.TypeOf((**APIRateLimit)(nil)).Elem()
}
func (o APIRateLimitOutput) ToAPIRateLimitOutput() APIRateLimitOutput {
return o
}
func (o APIRateLimitOutput) ToAPIRateLimitOutputWithContext(ctx context.Context) APIRateLimitOutput {
return o
}
func (o APIRateLimitOutput) ToOutput(ctx context.Context) pulumix.Output[*APIRateLimit] {
return pulumix.Output[*APIRateLimit]{
OutputState: o.OutputState,
}
}
func (o APIRateLimitOutput) ApiVersion() pulumi.StringPtrOutput {
return o.ApplyT(func(v *APIRateLimit) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput)
}
func (o APIRateLimitOutput) Kind() pulumi.StringPtrOutput {
return o.ApplyT(func(v *APIRateLimit) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput)
}
func (o APIRateLimitOutput) Metadata() v1.ObjectMetaPtrOutput {
return o.ApplyT(func(v *APIRateLimit) v1.ObjectMetaPtrOutput { return v.Metadata }).(v1.ObjectMetaPtrOutput)
}
// The desired behavior of this APIRateLimit.
func (o APIRateLimitOutput) Spec() APIRateLimitSpecPtrOutput {
return o.ApplyT(func(v *APIRateLimit) APIRateLimitSpecPtrOutput { return v.Spec }).(APIRateLimitSpecPtrOutput)
}
// The current status of this APIRateLimit.
func (o APIRateLimitOutput) Status() APIRateLimitStatusPtrOutput {
return o.ApplyT(func(v *APIRateLimit) APIRateLimitStatusPtrOutput { return v.Status }).(APIRateLimitStatusPtrOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*APIRateLimitInput)(nil)).Elem(), &APIRateLimit{})
pulumi.RegisterOutputType(APIRateLimitOutput{})
}

View File

@ -0,0 +1,165 @@
// 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"
)
// APIVersion defines a version of an API.
type APIVersion struct {
pulumi.CustomResourceState
ApiVersion pulumi.StringPtrOutput `pulumi:"apiVersion"`
Kind pulumi.StringPtrOutput `pulumi:"kind"`
Metadata v1.ObjectMetaPtrOutput `pulumi:"metadata"`
// The desired behavior of this APIVersion.
Spec APIVersionSpecPtrOutput `pulumi:"spec"`
// The current status of this APIVersion.
Status APIVersionStatusPtrOutput `pulumi:"status"`
}
// NewAPIVersion registers a new resource with the given unique name, arguments, and options.
func NewAPIVersion(ctx *pulumi.Context,
name string, args *APIVersionArgs, opts ...pulumi.ResourceOption) (*APIVersion, error) {
if args == nil {
args = &APIVersionArgs{}
}
args.ApiVersion = pulumi.StringPtr("hub.traefik.io/v1alpha1")
args.Kind = pulumi.StringPtr("APIVersion")
opts = internal.PkgResourceDefaultOpts(opts)
var resource APIVersion
err := ctx.RegisterResource("kubernetes:hub.traefik.io/v1alpha1:APIVersion", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// GetAPIVersion gets an existing APIVersion 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 GetAPIVersion(ctx *pulumi.Context,
name string, id pulumi.IDInput, state *APIVersionState, opts ...pulumi.ResourceOption) (*APIVersion, error) {
var resource APIVersion
err := ctx.ReadResource("kubernetes:hub.traefik.io/v1alpha1:APIVersion", name, id, state, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
// Input properties used for looking up and filtering APIVersion resources.
type apiversionState struct {
}
type APIVersionState struct {
}
func (APIVersionState) ElementType() reflect.Type {
return reflect.TypeOf((*apiversionState)(nil)).Elem()
}
type apiversionArgs struct {
ApiVersion *string `pulumi:"apiVersion"`
Kind *string `pulumi:"kind"`
Metadata *v1.ObjectMeta `pulumi:"metadata"`
// The desired behavior of this APIVersion.
Spec *APIVersionSpec `pulumi:"spec"`
// The current status of this APIVersion.
Status *APIVersionStatus `pulumi:"status"`
}
// The set of arguments for constructing a APIVersion resource.
type APIVersionArgs struct {
ApiVersion pulumi.StringPtrInput
Kind pulumi.StringPtrInput
Metadata v1.ObjectMetaPtrInput
// The desired behavior of this APIVersion.
Spec APIVersionSpecPtrInput
// The current status of this APIVersion.
Status APIVersionStatusPtrInput
}
func (APIVersionArgs) ElementType() reflect.Type {
return reflect.TypeOf((*apiversionArgs)(nil)).Elem()
}
type APIVersionInput interface {
pulumi.Input
ToAPIVersionOutput() APIVersionOutput
ToAPIVersionOutputWithContext(ctx context.Context) APIVersionOutput
}
func (*APIVersion) ElementType() reflect.Type {
return reflect.TypeOf((**APIVersion)(nil)).Elem()
}
func (i *APIVersion) ToAPIVersionOutput() APIVersionOutput {
return i.ToAPIVersionOutputWithContext(context.Background())
}
func (i *APIVersion) ToAPIVersionOutputWithContext(ctx context.Context) APIVersionOutput {
return pulumi.ToOutputWithContext(ctx, i).(APIVersionOutput)
}
func (i *APIVersion) ToOutput(ctx context.Context) pulumix.Output[*APIVersion] {
return pulumix.Output[*APIVersion]{
OutputState: i.ToAPIVersionOutputWithContext(ctx).OutputState,
}
}
type APIVersionOutput struct{ *pulumi.OutputState }
func (APIVersionOutput) ElementType() reflect.Type {
return reflect.TypeOf((**APIVersion)(nil)).Elem()
}
func (o APIVersionOutput) ToAPIVersionOutput() APIVersionOutput {
return o
}
func (o APIVersionOutput) ToAPIVersionOutputWithContext(ctx context.Context) APIVersionOutput {
return o
}
func (o APIVersionOutput) ToOutput(ctx context.Context) pulumix.Output[*APIVersion] {
return pulumix.Output[*APIVersion]{
OutputState: o.OutputState,
}
}
func (o APIVersionOutput) ApiVersion() pulumi.StringPtrOutput {
return o.ApplyT(func(v *APIVersion) pulumi.StringPtrOutput { return v.ApiVersion }).(pulumi.StringPtrOutput)
}
func (o APIVersionOutput) Kind() pulumi.StringPtrOutput {
return o.ApplyT(func(v *APIVersion) pulumi.StringPtrOutput { return v.Kind }).(pulumi.StringPtrOutput)
}
func (o APIVersionOutput) Metadata() v1.ObjectMetaPtrOutput {
return o.ApplyT(func(v *APIVersion) v1.ObjectMetaPtrOutput { return v.Metadata }).(v1.ObjectMetaPtrOutput)
}
// The desired behavior of this APIVersion.
func (o APIVersionOutput) Spec() APIVersionSpecPtrOutput {
return o.ApplyT(func(v *APIVersion) APIVersionSpecPtrOutput { return v.Spec }).(APIVersionSpecPtrOutput)
}
// The current status of this APIVersion.
func (o APIVersionOutput) Status() APIVersionStatusPtrOutput {
return o.ApplyT(func(v *APIVersion) APIVersionStatusPtrOutput { return v.Status }).(APIVersionStatusPtrOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*APIVersionInput)(nil)).Elem(), &APIVersion{})
pulumi.RegisterOutputType(APIVersionOutput{})
}

View File

@ -0,0 +1,54 @@
// 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:hub.traefik.io/v1alpha1:API":
r = &API{}
case "kubernetes:hub.traefik.io/v1alpha1:APIAccess":
r = &APIAccess{}
case "kubernetes:hub.traefik.io/v1alpha1:APIPortal":
r = &APIPortal{}
case "kubernetes:hub.traefik.io/v1alpha1:APIRateLimit":
r = &APIRateLimit{}
case "kubernetes:hub.traefik.io/v1alpha1:APIVersion":
r = &APIVersion{}
case "kubernetes:hub.traefik.io/v1alpha1:AccessControlPolicy":
r = &AccessControlPolicy{}
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",
"hub.traefik.io/v1alpha1",
&module{version},
)
}

File diff suppressed because it is too large Load Diff

View File

@ -31,6 +31,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi
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":

View File

@ -13,7 +13,8 @@ import (
"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/
// Middleware is the CRD implementation of a Traefik Middleware.
// More info: https://doc.traefik.io/traefik/v3.0/middlewares/http/overview/
type Middleware struct {
pulumi.CustomResourceState

View File

@ -13,7 +13,8 @@ import (
"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/
// MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
// More info: https://doc.traefik.io/traefik/v3.0/middlewares/overview/
type MiddlewareTCP struct {
pulumi.CustomResourceState

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,157 @@
// 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/v3.0/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{})
}

View File

@ -13,7 +13,10 @@ import (
"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
// 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

View File

@ -13,7 +13,8 @@ import (
"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
// 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/v3.0/https/tls/#tls-options
type TLSOption struct {
pulumi.CustomResourceState

View File

@ -13,7 +13,10 @@ import (
"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
// 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/v3.0/https/tls/#certificates-stores
type TLSStore struct {
pulumi.CustomResourceState

View File

@ -13,7 +13,11 @@ import (
"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
// 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/v3.0/routing/providers/kubernetes-crd/#kind-traefikservice
type TraefikService struct {
pulumi.CustomResourceState

69
go.mod
View File

@ -1,91 +1,92 @@
module antoine-roux.tk/projects/go/pulumi-library
go 1.21.4
go 1.22.2
require (
github.com/blang/semver v3.5.1+incompatible
github.com/pulumi/pulumi-kubernetes/sdk/v4 v4.5.4
github.com/pulumi/pulumi/sdk/v3 v3.94.2
github.com/pulumi/pulumi-kubernetes/sdk/v4 v4.19.0
github.com/pulumi/pulumi/sdk/v3 v3.144.1
)
require (
dario.cat/mergo v1.0.0 // indirect
github.com/BurntSushi/toml v1.2.1 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect
github.com/acomagu/bufpipe v1.0.4 // indirect
github.com/ProtonMail/go-crypto v1.0.0 // indirect
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/charmbracelet/bubbles v0.16.1 // indirect
github.com/charmbracelet/bubbletea v0.24.2 // indirect
github.com/charmbracelet/bubbletea v0.25.0 // indirect
github.com/charmbracelet/lipgloss v0.7.1 // indirect
github.com/cheggaaa/pb v1.0.29 // indirect
github.com/cloudflare/circl v1.3.3 // indirect
github.com/cloudflare/circl v1.3.7 // indirect
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
github.com/djherbis/times v1.5.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.5.0 // indirect
github.com/go-git/go-git/v5 v5.9.0 // indirect
github.com/go-git/go-git/v5 v5.12.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/glog v1.1.0 // indirect
github.com/golang/glog v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/hcl/v2 v2.17.0 // indirect
github.com/hashicorp/hcl/v2 v2.22.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-isatty v0.0.18 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
github.com/mattn/go-runewidth v0.0.14 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/mitchellh/go-ps v1.0.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/muesli/reflow v0.3.0 // indirect
github.com/muesli/termenv v0.15.1 // indirect
github.com/muesli/termenv v0.15.2 // indirect
github.com/opentracing/basictracer-go v1.1.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pgavlin/fx v0.1.6 // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/term v1.1.0 // indirect
github.com/pulumi/esc v0.5.6 // indirect
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
github.com/pulumi/esc v0.10.0 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/rogpeppe/go-internal v1.11.0 // indirect
github.com/rogpeppe/go-internal v1.12.0 // indirect
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect
github.com/sergi/go-diff v1.3.1 // indirect
github.com/skeema/knownhosts v1.2.0 // indirect
github.com/spf13/cobra v1.7.0 // indirect
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
github.com/skeema/knownhosts v1.2.2 // indirect
github.com/spf13/cobra v1.8.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/texttheater/golang-levenshtein v1.0.1 // indirect
github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 // indirect
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
github.com/zclconf/go-cty v1.13.2 // indirect
go.uber.org/atomic v1.9.0 // indirect
golang.org/x/crypto v0.14.0 // indirect
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
golang.org/x/mod v0.13.0 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/sync v0.4.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/term v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
golang.org/x/tools v0.14.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 // indirect
google.golang.org/grpc v1.57.1 // indirect
google.golang.org/protobuf v1.31.0 // indirect
golang.org/x/crypto v0.31.0 // indirect
golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect
golang.org/x/mod v0.18.0 // indirect
golang.org/x/net v0.33.0 // indirect
golang.org/x/sync v0.10.0 // indirect
golang.org/x/sys v0.28.0 // indirect
golang.org/x/term v0.27.0 // indirect
golang.org/x/text v0.21.0 // indirect
golang.org/x/tools v0.22.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
google.golang.org/grpc v1.67.1 // indirect
google.golang.org/protobuf v1.35.1 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
lukechampine.com/frand v1.4.2 // indirect
sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 // indirect
)

169
go.sum
View File

@ -1,14 +1,14 @@
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg=
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY=
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA=
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
@ -17,6 +17,8 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFI
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw=
github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
@ -28,17 +30,18 @@ github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY=
github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc=
github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY=
github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg=
github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM=
github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg=
github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo=
github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30=
github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY=
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -51,31 +54,29 @@ github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/El
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4=
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE=
github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo=
github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY=
github.com/go-git/go-git/v5 v5.9.0/go.mod h1:RKIqga24sWdMGZF+1Ekv9kylsDz6LzdTSI2s/OsZWE0=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys=
github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY=
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=
github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@ -83,8 +84,8 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY=
github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4=
github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M=
github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
@ -103,33 +104,31 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A=
github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc=
github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34=
github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs=
github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ=
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0=
@ -137,6 +136,8 @@ github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS6
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU=
github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M=
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@ -145,30 +146,32 @@ github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk=
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pulumi/esc v0.5.6 h1:4WV3X7OEVcChIwbSG+JxhZDdmq/q7lFPaSjHRYlPwmI=
github.com/pulumi/esc v0.5.6/go.mod h1:wpwNfVS5fV7Kd51j4dJ6FWYlKfxdqyppgp0gtkzqH04=
github.com/pulumi/pulumi-kubernetes/sdk/v4 v4.5.4 h1:f+0xGINXUOv64e+GIuYPTUmSCL6cWNI1OoeJx+6rqPk=
github.com/pulumi/pulumi-kubernetes/sdk/v4 v4.5.4/go.mod h1:E71mSAsusn1tMAbUUQlXavRdrbFtYpikkcczeWBr6+w=
github.com/pulumi/pulumi/sdk/v3 v3.94.2 h1:B8W3CCzA2fX/0730o/7KQXdmqrY5KdgGtiAA6rDMVlk=
github.com/pulumi/pulumi/sdk/v3 v3.94.2/go.mod h1:zeqyIODqbb6GrEyhFV6aJET/xBSXSnF7Bw/EjbYZUnU=
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0=
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE=
github.com/pulumi/esc v0.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE=
github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c=
github.com/pulumi/pulumi-kubernetes/sdk/v4 v4.19.0 h1:7AjJpUyW6YHHpZr0bI6Fy1A3/b7ERxq1LAo5mlyNN1Y=
github.com/pulumi/pulumi-kubernetes/sdk/v4 v4.19.0/go.mod h1:ATS+UN8pguMxypQAK+SaPewesU+UN5dpf93PNqVuHzs=
github.com/pulumi/pulumi/sdk/v3 v3.144.1 h1:QQtCDERihhlfvcmRzqHeBmOER1Fg1VkFj9933Lxqv00=
github.com/pulumi/pulumi/sdk/v3 v3.144.1/go.mod h1:/6gxU2XirnLlImBy5OoqV6I4HcjOf+IznNIZNZExZzo=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI=
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs=
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE=
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM=
github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo=
github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A=
github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
@ -178,12 +181,10 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U=
github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8=
github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68=
github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE=
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=
@ -204,18 +205,18 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM=
golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0=
golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@ -227,15 +228,15 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@ -256,15 +257,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@ -272,8 +273,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@ -282,20 +283,18 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc=
golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg=
golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 h1:2FZP5XuJY9zQyGM5N0rtovnoXjiMUEIUMvw0m9wlpLc=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o=
google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg=
google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
@ -310,7 +309,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw=
lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s=
pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA=
pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 h1:hfyJ5ku9yFtLVOiSxa3IN+dx5eBQT9mPmKFypAmg8XM=
sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
pgregory.net/rapid v0.6.1 h1:4eyrDxyht86tT4Ztm+kvlyNBLIk071gR+ZQdhphc9dQ=
pgregory.net/rapid v0.6.1/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=

View File

@ -19,13 +19,13 @@ func main() {
Image: "nginx",
Path: "/api",
Health: "/",
Ready: "/",
},
},
Public: true,
Env: map[string]string{
"version": "1.0.0",
},
//Dns: pulumi.StringRef("pulumi-test-nginx.localdomain"),
Dns: pulumi.StringRef("pulumi-test-nginx.localdomain"),
AllowAllOrigin: true,
})
if err != nil {

View File

@ -20,13 +20,13 @@ type Configuration struct {
Replicas *int
Env map[string]string
AllowAllOrigin bool
Public bool
}
type ImagesConfiguration struct {
Image string
Path string
Health string
Ready string
}
type CreatedApplication struct {
@ -44,7 +44,6 @@ type application struct {
Replicas int
Env map[string]string
AllowAllOrigin bool
Public bool
shouldCreateDns bool
shouldCreateCertificate bool
@ -55,6 +54,7 @@ type service struct {
Image string
Path string
Health string
Ready string
}
func NewApplication(ctx *pulumi.Context, configuration *Configuration) (*CreatedApplication, error) {
@ -66,7 +66,6 @@ func NewApplication(ctx *pulumi.Context, configuration *Configuration) (*Created
Namespace: configuration.Namespace,
Env: configuration.Env,
AllowAllOrigin: configuration.AllowAllOrigin,
Public: configuration.Public,
}
var preventDuplicatePath []string
@ -75,6 +74,7 @@ func NewApplication(ctx *pulumi.Context, configuration *Configuration) (*Created
Image: image.Image,
Path: image.Path,
Health: image.Health,
Ready: image.Ready,
}
if image.Path == "" {
serviceConfiguration.Path = "/"
@ -82,6 +82,9 @@ func NewApplication(ctx *pulumi.Context, configuration *Configuration) (*Created
if image.Health == "" {
serviceConfiguration.Health = "/"
}
if image.Ready == "" {
serviceConfiguration.Ready = "/"
}
if slices.Contains(preventDuplicatePath, serviceConfiguration.Path) {
return nil, errors.New("duplicate path in ingress applicationConfiguration")
}
@ -95,10 +98,6 @@ func NewApplication(ctx *pulumi.Context, configuration *Configuration) (*Created
application.Replicas = 1
}
if configuration.Dns != nil && configuration.Public {
return nil, errors.New("public exposition and DNS are incompatible")
}
if configuration.Dns != nil {
application.Dns = *configuration.Dns
application.shouldCreateDns = true
@ -106,12 +105,6 @@ func NewApplication(ctx *pulumi.Context, configuration *Configuration) (*Created
application.shouldCreateIngress = true
}
if configuration.Public {
application.shouldCreateDns = false
application.shouldCreateCertificate = false
application.shouldCreateIngress = true
}
err := ctx.RegisterComponentResource("pkg:application:CreatedApplication", configuration.Name, application)
if err != nil {
return nil, err
@ -153,6 +146,7 @@ func (application *application) createResources(ctx *pulumi.Context) (*CreatedAp
ImageReference: &workload.ImageReference{
Image: service.Image,
Health: service.Health,
Ready: service.Ready,
},
}
deployment, err := deploymentConfiguration.CreateDeployment(ctx, namespace, application, appLabels)
@ -204,7 +198,6 @@ func (application *application) createResources(ctx *pulumi.Context) (*CreatedAp
application.Name,
application.Dns,
application.AllowAllOrigin,
application.Public,
ingressServices,
)

View File

@ -13,7 +13,6 @@ import (
type IngressConfiguration struct {
Name string
Dns string
Public bool
ResponseHeaders *traefik.MiddlewareSpecHeadersArgs
services []IngressServices
}
@ -23,12 +22,11 @@ type IngressServices struct {
Path string
}
func NewIngressConfiguration(name string, dns string, allowAllOrigin bool, public bool, services []IngressServices) *IngressConfiguration {
func NewIngressConfiguration(name string, dns string, allowAllOrigin bool, services []IngressServices) *IngressConfiguration {
ingressConfiguration := &IngressConfiguration{
Name: name,
Dns: dns,
services: services,
Public: public,
}
if allowAllOrigin {
@ -70,6 +68,7 @@ func (ingress *IngressConfiguration) CreateIngress(
ingressAnnotations := pulumi.StringMap{
"traefik.ingress.kubernetes.io/router.middlewares": middlewares,
"traefik.ingress.kubernetes.io/router.entrypoints": pulumi.String("websecure"),
}
// https routing
@ -89,48 +88,15 @@ func (ingress *IngressConfiguration) CreateIngress(
})
}
var hosts pulumi.StringArray
var certificateSecretName pulumi.StringOutput
var namespaceName pulumi.StringPtrOutput
if ingress.Public {
ingressAnnotations["traefik.ingress.kubernetes.io/router.entrypoints"] = pulumi.String("exp-websecure")
hosts = toPulumiStringArray([]string{"antoine-roux.tk", "antoineroux.tk", "www.antoine-roux.tk", "www.antoineroux.tk"})
publicCertificate, err := certManager.GetCertificate(ctx, "nginxfront-certificate", pulumi.ID("default-public/nginxfront"), nil)
if err != nil {
return err
}
certificateSecretName = publicCertificate.Spec.SecretName()
publicNamespace, err := v1.GetNamespace(ctx, "default-public", pulumi.ID("default-public"), nil)
if err != nil {
return err
}
namespaceName = publicNamespace.Metadata.Name()
} else {
ingressAnnotations["traefik.ingress.kubernetes.io/router.entrypoints"] = pulumi.String("websecure")
hosts = toPulumiStringArray([]string{ingress.Dns})
certificateSecretName = certificate.Spec.SecretName()
// create http redirect to https
err := ingress.createHttpRedirectIngress(ctx, namespace, parentApplication, ingressPaths)
if err != nil {
return err
}
namespaceName = namespace.Metadata.Name()
// create http redirect to https
err := ingress.createHttpRedirectIngress(ctx, namespace, parentApplication, ingressPaths)
if err != nil {
return err
}
var ingressRules networking.IngressRuleArray
for _, host := range hosts {
ingressRules = append(ingressRules, networking.IngressRuleArgs{
Host: host,
Http: &networking.HTTPIngressRuleValueArgs{
Paths: ingressPaths,
},
})
}
_, err := networking.NewIngress(ctx, fmt.Sprintf("%s-https", ingress.Name), &networking.IngressArgs{
_, err = networking.NewIngress(ctx, fmt.Sprintf("%s-https", ingress.Name), &networking.IngressArgs{
Metadata: &meta.ObjectMetaArgs{
Namespace: namespaceName,
Namespace: namespace.Metadata.Name(),
Labels: pulumi.StringMap{
"app.kubernetes.io/part-of": pulumi.String(ingress.Name),
"app.kubernetes.io/managed-by": pulumi.String("pulumi"),
@ -139,11 +105,20 @@ func (ingress *IngressConfiguration) CreateIngress(
},
Spec: &networking.IngressSpecArgs{
IngressClassName: pulumi.String("traefik-internal"),
Rules: &ingressRules,
Rules: &networking.IngressRuleArray{
networking.IngressRuleArgs{
Host: pulumi.StringPtr(ingress.Dns),
Http: &networking.HTTPIngressRuleValueArgs{
Paths: ingressPaths,
},
},
},
Tls: &networking.IngressTLSArray{
networking.IngressTLSArgs{
Hosts: hosts,
SecretName: certificateSecretName,
Hosts: pulumi.StringArray{
pulumi.String(ingress.Dns),
},
SecretName: certificate.Spec.SecretName(),
},
},
},

View File

@ -18,6 +18,7 @@ type DeploymentConfiguration struct {
type ImageReference struct {
Image string
Health string
Ready string
}
func (deployment *DeploymentConfiguration) CreateDeployment(
@ -69,6 +70,14 @@ func (deployment *DeploymentConfiguration) CreateDeployment(
Path: pulumi.String(deployment.ImageReference.Health),
Port: pulumi.Int(80),
},
InitialDelaySeconds: pulumi.Int(70),
PeriodSeconds: pulumi.Int(15),
},
ReadinessProbe: &v1.ProbeArgs{
HttpGet: &v1.HTTPGetActionArgs{
Path: pulumi.String(deployment.ImageReference.Ready),
Port: pulumi.Int(80),
},
},
},
},