pkg/webhook/pod_mutator.go (42 lines of code) (raw):

package webhook import ( "context" "github.com/aws/aws-application-networking-k8s/pkg/utils/gwlog" "github.com/aws/aws-application-networking-k8s/pkg/webhook/core" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/webhook/admission" ) const ( apiPathMutatePod = "/mutate-pod" ) func NewPodMutator(log gwlog.Logger, scheme *runtime.Scheme, podReadinessGateInjector *PodReadinessGateInjector) *podMutator { return &podMutator{ log: log, podReadinessGateInjector: podReadinessGateInjector, scheme: scheme, } } var _ core.Mutator = &podMutator{} type podMutator struct { log gwlog.Logger podReadinessGateInjector *PodReadinessGateInjector scheme *runtime.Scheme } func (m *podMutator) Prototype(_ admission.Request) (runtime.Object, error) { return &corev1.Pod{}, nil } func (m *podMutator) MutateCreate(ctx context.Context, obj runtime.Object) (runtime.Object, error) { pod := obj.(*corev1.Pod) if err := m.podReadinessGateInjector.MutateCreate(ctx, pod); err != nil { return pod, err } return pod, nil } func (m *podMutator) MutateUpdate(ctx context.Context, obj runtime.Object, oldObj runtime.Object) (runtime.Object, error) { return obj, nil } func (m *podMutator) SetupWithManager(log gwlog.Logger, mgr ctrl.Manager) { mgr.GetWebhookServer().Register(apiPathMutatePod, core.MutatingWebhookForMutator(log, m.scheme, m)) }