1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package polymorphichelpers
- import (
- "fmt"
- appsv1 "k8s.io/api/apps/v1"
- appsv1beta1 "k8s.io/api/apps/v1beta1"
- appsv1beta2 "k8s.io/api/apps/v1beta2"
- batchv1 "k8s.io/api/batch/v1"
- batchv1beta1 "k8s.io/api/batch/v1beta1"
- batchv2alpha1 "k8s.io/api/batch/v2alpha1"
- "k8s.io/api/core/v1"
- extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
- "k8s.io/apimachinery/pkg/runtime"
- )
- func updatePodSpecForObject(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error) {
- switch t := obj.(type) {
- case *v1.Pod:
- return true, fn(&t.Spec)
-
- case *v1.ReplicationController:
- if t.Spec.Template == nil {
- t.Spec.Template = &v1.PodTemplateSpec{}
- }
- return true, fn(&t.Spec.Template.Spec)
-
- case *extensionsv1beta1.Deployment:
- return true, fn(&t.Spec.Template.Spec)
- case *appsv1beta1.Deployment:
- return true, fn(&t.Spec.Template.Spec)
- case *appsv1beta2.Deployment:
- return true, fn(&t.Spec.Template.Spec)
- case *appsv1.Deployment:
- return true, fn(&t.Spec.Template.Spec)
-
- case *extensionsv1beta1.DaemonSet:
- return true, fn(&t.Spec.Template.Spec)
- case *appsv1beta2.DaemonSet:
- return true, fn(&t.Spec.Template.Spec)
- case *appsv1.DaemonSet:
- return true, fn(&t.Spec.Template.Spec)
-
- case *extensionsv1beta1.ReplicaSet:
- return true, fn(&t.Spec.Template.Spec)
- case *appsv1beta2.ReplicaSet:
- return true, fn(&t.Spec.Template.Spec)
- case *appsv1.ReplicaSet:
- return true, fn(&t.Spec.Template.Spec)
-
- case *appsv1beta1.StatefulSet:
- return true, fn(&t.Spec.Template.Spec)
- case *appsv1beta2.StatefulSet:
- return true, fn(&t.Spec.Template.Spec)
- case *appsv1.StatefulSet:
- return true, fn(&t.Spec.Template.Spec)
-
- case *batchv1.Job:
- return true, fn(&t.Spec.Template.Spec)
-
- case *batchv1beta1.CronJob:
- return true, fn(&t.Spec.JobTemplate.Spec.Template.Spec)
- case *batchv2alpha1.CronJob:
- return true, fn(&t.Spec.JobTemplate.Spec.Template.Spec)
- default:
- return false, fmt.Errorf("the object is not a pod or does not have a pod template: %T", t)
- }
- }
|