Skip to content

Commit

Permalink
Clear alpha MountPropagation fields.
Browse files Browse the repository at this point in the history
According to api_changes.md, alpha fields must be cleared when corresponding
feature is disabled.
  • Loading branch information
jsafrane committed Sep 4, 2017
1 parent 156c4b4 commit 876109a
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
16 changes: 16 additions & 0 deletions pkg/api/pod/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,4 +243,20 @@ func DropDisabledAlphaFields(podSpec *api.PodSpec) {
}
}
}
for i := range podSpec.Containers {
DropDisabledVolumeMountsAlphaFields(podSpec.Containers[i].VolumeMounts)
}
for i := range podSpec.InitContainers {
DropDisabledVolumeMountsAlphaFields(podSpec.InitContainers[i].VolumeMounts)
}
}

// DropDisabledVolumeMountsAlphaFields removes disabled fields from []VolumeMount.
// This should be called from PrepareForCreate/PrepareForUpdate for all resources containing a VolumeMount
func DropDisabledVolumeMountsAlphaFields(volumeMounts []api.VolumeMount) {
if !utilfeature.DefaultFeatureGate.Enabled(features.MountPropagation) {
for i := range volumeMounts {
volumeMounts[i].MountPropagation = nil
}
}
}
1 change: 1 addition & 0 deletions pkg/registry/settings/podpreset/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ go_library(
],
deps = [
"//pkg/api:go_default_library",
"//pkg/api/pod:go_default_library",
"//pkg/apis/settings:go_default_library",
"//pkg/apis/settings/validation:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
Expand Down
6 changes: 6 additions & 0 deletions pkg/registry/settings/podpreset/strategy.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/storage/names"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/pod"
"k8s.io/kubernetes/pkg/apis/settings"
"k8s.io/kubernetes/pkg/apis/settings/validation"
)
Expand All @@ -44,13 +45,18 @@ func (podPresetStrategy) NamespaceScoped() bool {
func (podPresetStrategy) PrepareForCreate(ctx genericapirequest.Context, obj runtime.Object) {
pip := obj.(*settings.PodPreset)
pip.Generation = 1

pod.DropDisabledVolumeMountsAlphaFields(pip.Spec.VolumeMounts)
}

// PrepareForUpdate clears fields that are not allowed to be set by end users on update.
func (podPresetStrategy) PrepareForUpdate(ctx genericapirequest.Context, obj, old runtime.Object) {
newPodPreset := obj.(*settings.PodPreset)
oldPodPreset := old.(*settings.PodPreset)

pod.DropDisabledVolumeMountsAlphaFields(oldPodPreset.Spec.VolumeMounts)
pod.DropDisabledVolumeMountsAlphaFields(newPodPreset.Spec.VolumeMounts)

// Update is not allowed
newPodPreset.Spec = oldPodPreset.Spec
}
Expand Down

0 comments on commit 876109a

Please sign in to comment.