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

package v1alpha1

import (
	"fmt"

	"antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal"
	"github.com/blang/semver"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

type module struct {
	version semver.Version
}

func (m *module) Version() semver.Version {
	return m.version
}

func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) {
	switch typ {
	case "kubernetes:traefik.io/v1alpha1:IngressRoute":
		r = &IngressRoute{}
	case "kubernetes:traefik.io/v1alpha1:IngressRouteTCP":
		r = &IngressRouteTCP{}
	case "kubernetes:traefik.io/v1alpha1:IngressRouteUDP":
		r = &IngressRouteUDP{}
	case "kubernetes:traefik.io/v1alpha1:Middleware":
		r = &Middleware{}
	case "kubernetes:traefik.io/v1alpha1:MiddlewareTCP":
		r = &MiddlewareTCP{}
	case "kubernetes:traefik.io/v1alpha1:ServersTransport":
		r = &ServersTransport{}
	case "kubernetes:traefik.io/v1alpha1:ServersTransportTCP":
		r = &ServersTransportTCP{}
	case "kubernetes:traefik.io/v1alpha1:TLSOption":
		r = &TLSOption{}
	case "kubernetes:traefik.io/v1alpha1:TLSStore":
		r = &TLSStore{}
	case "kubernetes:traefik.io/v1alpha1:TraefikService":
		r = &TraefikService{}
	default:
		return nil, fmt.Errorf("unknown resource type: %s", typ)
	}

	err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn))
	return
}

func init() {
	version, err := internal.PkgVersion()
	if err != nil {
		version = semver.Version{Major: 1}
	}
	pulumi.RegisterResourceModule(
		"crds",
		"traefik.io/v1alpha1",
		&module{version},
	)
}
