/*
Copyright 2017 The Kubernetes Authors.

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.
*/

package features

import (
	utilfeature "k8s.io/apiserver/pkg/util/feature"
)

const (
	// Every feature gate should add method here following this template:
	//
	// // owner: @username
	// // alpha: v1.4
	// MyFeature() bool

	// owner: @sttts, @nikhita
	// alpha: v1.8
	// beta: v1.9
	//
	// CustomResourceValidation is a list of validation methods for CustomResources
	CustomResourceValidation utilfeature.Feature = "CustomResourceValidation"

	// owner: @sttts, @nikhita
	// alpha: v1.10
	// beta: v1.11
	//
	// CustomResourceSubresources defines the subresources for CustomResources
	CustomResourceSubresources utilfeature.Feature = "CustomResourceSubresources"

	// owner: @mbohlool, @roycaihw
	// alpha: v1.13
	//
	// CustomResourceWebhookConversion defines the webhook conversion for Custom Resources.
	CustomResourceWebhookConversion utilfeature.Feature = "CustomResourceWebhookConversion"
)

func init() {
	utilfeature.DefaultMutableFeatureGate.Add(defaultKubernetesFeatureGates)
}

// defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys.
// To add a new feature, define a key for it above and add it here. The features will be
// available throughout Kubernetes binaries.
var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureSpec{
	CustomResourceValidation:        {Default: true, PreRelease: utilfeature.Beta},
	CustomResourceSubresources:      {Default: true, PreRelease: utilfeature.Beta},
	CustomResourceWebhookConversion: {Default: false, PreRelease: utilfeature.Alpha},
}
