// Copyright (c) 2022 Alibaba Group Holding Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by applyconfiguration-gen. DO NOT EDIT.

package applyconfiguration

import (
	v1alpha1 "github.com/alibaba/higress/v2/client/pkg/apis/extensions/v1alpha1"
	networkingv1 "github.com/alibaba/higress/v2/client/pkg/apis/networking/v1"
	extensionsv1alpha1 "github.com/alibaba/higress/v2/client/pkg/applyconfiguration/extensions/v1alpha1"
	metav1 "github.com/alibaba/higress/v2/client/pkg/applyconfiguration/meta/v1"
	applyconfigurationnetworkingv1 "github.com/alibaba/higress/v2/client/pkg/applyconfiguration/networking/v1"
	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	schema "k8s.io/apimachinery/pkg/runtime/schema"
)

// ForKind returns an apply configuration type for the given GroupVersionKind, or nil if no
// apply configuration type exists for the given GroupVersionKind.
func ForKind(kind schema.GroupVersionKind) interface{} {
	switch kind {
	// Group=extensions.higress.io, Version=v1alpha1
	case v1alpha1.SchemeGroupVersion.WithKind("WasmPlugin"):
		return &extensionsv1alpha1.WasmPluginApplyConfiguration{}

		// Group=meta.k8s.io, Version=v1
	case v1.SchemeGroupVersion.WithKind("ManagedFieldsEntry"):
		return &metav1.ManagedFieldsEntryApplyConfiguration{}
	case v1.SchemeGroupVersion.WithKind("ObjectMeta"):
		return &metav1.ObjectMetaApplyConfiguration{}
	case v1.SchemeGroupVersion.WithKind("OwnerReference"):
		return &metav1.OwnerReferenceApplyConfiguration{}
	case v1.SchemeGroupVersion.WithKind("TypeMeta"):
		return &metav1.TypeMetaApplyConfiguration{}

		// Group=networking.higress.io, Version=v1
	case networkingv1.SchemeGroupVersion.WithKind("Http2Rpc"):
		return &applyconfigurationnetworkingv1.Http2RpcApplyConfiguration{}
	case networkingv1.SchemeGroupVersion.WithKind("McpBridge"):
		return &applyconfigurationnetworkingv1.McpBridgeApplyConfiguration{}

	}
	return nil
}
