...

Source file src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/defaults.go

Documentation: k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1

     1  /*
     2  Copyright 2017 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package v1beta1
    18  
    19  import (
    20  	"strings"
    21  
    22  	"k8s.io/apimachinery/pkg/runtime"
    23  	utilpointer "k8s.io/utils/pointer"
    24  )
    25  
    26  func addDefaultingFuncs(scheme *runtime.Scheme) error {
    27  	return RegisterDefaults(scheme)
    28  }
    29  
    30  func SetDefaults_CustomResourceDefinition(obj *CustomResourceDefinition) {
    31  	SetDefaults_CustomResourceDefinitionSpec(&obj.Spec)
    32  	if len(obj.Status.StoredVersions) == 0 {
    33  		for _, v := range obj.Spec.Versions {
    34  			if v.Storage {
    35  				obj.Status.StoredVersions = append(obj.Status.StoredVersions, v.Name)
    36  				break
    37  			}
    38  		}
    39  	}
    40  }
    41  
    42  func SetDefaults_CustomResourceDefinitionSpec(obj *CustomResourceDefinitionSpec) {
    43  	if len(obj.Scope) == 0 {
    44  		obj.Scope = NamespaceScoped
    45  	}
    46  	if len(obj.Names.Singular) == 0 {
    47  		obj.Names.Singular = strings.ToLower(obj.Names.Kind)
    48  	}
    49  	if len(obj.Names.ListKind) == 0 && len(obj.Names.Kind) > 0 {
    50  		obj.Names.ListKind = obj.Names.Kind + "List"
    51  	}
    52  	// If there is no list of versions, create on using deprecated Version field.
    53  	if len(obj.Versions) == 0 && len(obj.Version) != 0 {
    54  		obj.Versions = []CustomResourceDefinitionVersion{{
    55  			Name:    obj.Version,
    56  			Storage: true,
    57  			Served:  true,
    58  		}}
    59  	}
    60  	// For backward compatibility set the version field to the first item in versions list.
    61  	if len(obj.Version) == 0 && len(obj.Versions) != 0 {
    62  		obj.Version = obj.Versions[0].Name
    63  	}
    64  	if obj.Conversion == nil {
    65  		obj.Conversion = &CustomResourceConversion{
    66  			Strategy: NoneConverter,
    67  		}
    68  	}
    69  	if obj.Conversion.Strategy == WebhookConverter && len(obj.Conversion.ConversionReviewVersions) == 0 {
    70  		obj.Conversion.ConversionReviewVersions = []string{SchemeGroupVersion.Version}
    71  	}
    72  	if obj.PreserveUnknownFields == nil {
    73  		obj.PreserveUnknownFields = utilpointer.BoolPtr(true)
    74  	}
    75  }
    76  
    77  // SetDefaults_ServiceReference sets defaults for Webhook's ServiceReference
    78  func SetDefaults_ServiceReference(obj *ServiceReference) {
    79  	if obj.Port == nil {
    80  		obj.Port = utilpointer.Int32Ptr(443)
    81  	}
    82  }
    83  

View as plain text