| /* |
| 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 v1 |
| |
| import ( |
| appsv1 "k8s.io/api/apps/v1" |
| "k8s.io/apimachinery/pkg/runtime" |
| "k8s.io/apimachinery/pkg/util/intstr" |
| ) |
| |
| func addDefaultingFuncs(scheme *runtime.Scheme) error { |
| return RegisterDefaults(scheme) |
| } |
| |
| // SetDefaults_Deployment sets additional defaults compared to its counterpart |
| // in extensions. These addons are: |
| // - MaxUnavailable during rolling update set to 25% (1 in extensions) |
| // - MaxSurge value during rolling update set to 25% (1 in extensions) |
| // - RevisionHistoryLimit set to 10 (not set in extensions) |
| // - ProgressDeadlineSeconds set to 600s (not set in extensions) |
| func SetDefaults_Deployment(obj *appsv1.Deployment) { |
| // Set DeploymentSpec.Replicas to 1 if it is not set. |
| if obj.Spec.Replicas == nil { |
| obj.Spec.Replicas = new(int32) |
| *obj.Spec.Replicas = 1 |
| } |
| strategy := &obj.Spec.Strategy |
| // Set default DeploymentStrategyType as RollingUpdate. |
| if strategy.Type == "" { |
| strategy.Type = appsv1.RollingUpdateDeploymentStrategyType |
| } |
| if strategy.Type == appsv1.RollingUpdateDeploymentStrategyType { |
| if strategy.RollingUpdate == nil { |
| rollingUpdate := appsv1.RollingUpdateDeployment{} |
| strategy.RollingUpdate = &rollingUpdate |
| } |
| if strategy.RollingUpdate.MaxUnavailable == nil { |
| // Set default MaxUnavailable as 25% by default. |
| maxUnavailable := intstr.FromString("25%") |
| strategy.RollingUpdate.MaxUnavailable = &maxUnavailable |
| } |
| if strategy.RollingUpdate.MaxSurge == nil { |
| // Set default MaxSurge as 25% by default. |
| maxSurge := intstr.FromString("25%") |
| strategy.RollingUpdate.MaxSurge = &maxSurge |
| } |
| } |
| if obj.Spec.RevisionHistoryLimit == nil { |
| obj.Spec.RevisionHistoryLimit = new(int32) |
| *obj.Spec.RevisionHistoryLimit = 10 |
| } |
| if obj.Spec.ProgressDeadlineSeconds == nil { |
| obj.Spec.ProgressDeadlineSeconds = new(int32) |
| *obj.Spec.ProgressDeadlineSeconds = 600 |
| } |
| } |
| |
| func SetDefaults_DaemonSet(obj *appsv1.DaemonSet) { |
| updateStrategy := &obj.Spec.UpdateStrategy |
| if updateStrategy.Type == "" { |
| updateStrategy.Type = appsv1.RollingUpdateDaemonSetStrategyType |
| } |
| if updateStrategy.Type == appsv1.RollingUpdateDaemonSetStrategyType { |
| if updateStrategy.RollingUpdate == nil { |
| rollingUpdate := appsv1.RollingUpdateDaemonSet{} |
| updateStrategy.RollingUpdate = &rollingUpdate |
| } |
| if updateStrategy.RollingUpdate.MaxUnavailable == nil { |
| // Set default MaxUnavailable as 1 by default. |
| maxUnavailable := intstr.FromInt(1) |
| updateStrategy.RollingUpdate.MaxUnavailable = &maxUnavailable |
| } |
| } |
| if obj.Spec.RevisionHistoryLimit == nil { |
| obj.Spec.RevisionHistoryLimit = new(int32) |
| *obj.Spec.RevisionHistoryLimit = 10 |
| } |
| } |
| |
| func SetDefaults_StatefulSet(obj *appsv1.StatefulSet) { |
| if len(obj.Spec.PodManagementPolicy) == 0 { |
| obj.Spec.PodManagementPolicy = appsv1.OrderedReadyPodManagement |
| } |
| |
| if obj.Spec.UpdateStrategy.Type == "" { |
| obj.Spec.UpdateStrategy.Type = appsv1.RollingUpdateStatefulSetStrategyType |
| |
| // UpdateStrategy.RollingUpdate will take default values below. |
| obj.Spec.UpdateStrategy.RollingUpdate = &appsv1.RollingUpdateStatefulSetStrategy{} |
| } |
| |
| if obj.Spec.UpdateStrategy.Type == appsv1.RollingUpdateStatefulSetStrategyType && |
| obj.Spec.UpdateStrategy.RollingUpdate != nil && |
| obj.Spec.UpdateStrategy.RollingUpdate.Partition == nil { |
| obj.Spec.UpdateStrategy.RollingUpdate.Partition = new(int32) |
| *obj.Spec.UpdateStrategy.RollingUpdate.Partition = 0 |
| } |
| |
| if obj.Spec.Replicas == nil { |
| obj.Spec.Replicas = new(int32) |
| *obj.Spec.Replicas = 1 |
| } |
| if obj.Spec.RevisionHistoryLimit == nil { |
| obj.Spec.RevisionHistoryLimit = new(int32) |
| *obj.Spec.RevisionHistoryLimit = 10 |
| } |
| } |
| func SetDefaults_ReplicaSet(obj *appsv1.ReplicaSet) { |
| if obj.Spec.Replicas == nil { |
| obj.Spec.Replicas = new(int32) |
| *obj.Spec.Replicas = 1 |
| } |
| } |