defaults.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /*
  2. Copyright 2017 The Kubernetes Authors.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. */
  13. package v1beta1
  14. import (
  15. admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
  16. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  17. "k8s.io/apimachinery/pkg/runtime"
  18. utilpointer "k8s.io/utils/pointer"
  19. )
  20. func addDefaultingFuncs(scheme *runtime.Scheme) error {
  21. return RegisterDefaults(scheme)
  22. }
  23. func SetDefaults_ValidatingWebhook(obj *admissionregistrationv1beta1.ValidatingWebhook) {
  24. if obj.FailurePolicy == nil {
  25. policy := admissionregistrationv1beta1.Ignore
  26. obj.FailurePolicy = &policy
  27. }
  28. if obj.MatchPolicy == nil {
  29. policy := admissionregistrationv1beta1.Exact
  30. obj.MatchPolicy = &policy
  31. }
  32. if obj.NamespaceSelector == nil {
  33. selector := metav1.LabelSelector{}
  34. obj.NamespaceSelector = &selector
  35. }
  36. if obj.ObjectSelector == nil {
  37. selector := metav1.LabelSelector{}
  38. obj.ObjectSelector = &selector
  39. }
  40. if obj.SideEffects == nil {
  41. // TODO: revisit/remove this default and possibly make the field required when promoting to v1
  42. unknown := admissionregistrationv1beta1.SideEffectClassUnknown
  43. obj.SideEffects = &unknown
  44. }
  45. if obj.TimeoutSeconds == nil {
  46. obj.TimeoutSeconds = new(int32)
  47. *obj.TimeoutSeconds = 30
  48. }
  49. if len(obj.AdmissionReviewVersions) == 0 {
  50. obj.AdmissionReviewVersions = []string{admissionregistrationv1beta1.SchemeGroupVersion.Version}
  51. }
  52. }
  53. func SetDefaults_MutatingWebhook(obj *admissionregistrationv1beta1.MutatingWebhook) {
  54. if obj.FailurePolicy == nil {
  55. policy := admissionregistrationv1beta1.Ignore
  56. obj.FailurePolicy = &policy
  57. }
  58. if obj.MatchPolicy == nil {
  59. policy := admissionregistrationv1beta1.Exact
  60. obj.MatchPolicy = &policy
  61. }
  62. if obj.NamespaceSelector == nil {
  63. selector := metav1.LabelSelector{}
  64. obj.NamespaceSelector = &selector
  65. }
  66. if obj.ObjectSelector == nil {
  67. selector := metav1.LabelSelector{}
  68. obj.ObjectSelector = &selector
  69. }
  70. if obj.SideEffects == nil {
  71. // TODO: revisit/remove this default and possibly make the field required when promoting to v1
  72. unknown := admissionregistrationv1beta1.SideEffectClassUnknown
  73. obj.SideEffects = &unknown
  74. }
  75. if obj.TimeoutSeconds == nil {
  76. obj.TimeoutSeconds = new(int32)
  77. *obj.TimeoutSeconds = 30
  78. }
  79. if obj.ReinvocationPolicy == nil {
  80. never := admissionregistrationv1beta1.NeverReinvocationPolicy
  81. obj.ReinvocationPolicy = &never
  82. }
  83. if len(obj.AdmissionReviewVersions) == 0 {
  84. obj.AdmissionReviewVersions = []string{admissionregistrationv1beta1.SchemeGroupVersion.Version}
  85. }
  86. }
  87. func SetDefaults_Rule(obj *admissionregistrationv1beta1.Rule) {
  88. if obj.Scope == nil {
  89. s := admissionregistrationv1beta1.AllScopes
  90. obj.Scope = &s
  91. }
  92. }
  93. // SetDefaults_ServiceReference sets defaults for Webhook's ServiceReference
  94. func SetDefaults_ServiceReference(obj *admissionregistrationv1beta1.ServiceReference) {
  95. if obj.Port == nil {
  96. obj.Port = utilpointer.Int32Ptr(443)
  97. }
  98. }