{{- /*
Copyright Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: APACHE-2.0
*/}}

{{- if .Values.injector.enabled }}
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
  name: {{ include "vault.injector.fullname.namespace" . }}
  {{- $versionLabel := dict "app.kubernetes.io/version" ( include "common.images.version" ( dict "imageRoot" .Values.injector.image "chart" .Chart ) ) }}
  {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.commonLabels $versionLabel ) "context" . ) }}
  labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }}
    app.kubernetes.io/part-of: vault
    app.kubernetes.io/component: injector
  {{- if .Values.commonAnnotations }}
  annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
  {{- end }}
webhooks:
  - name: vault.hashicorp.com
    failurePolicy: Ignore
    matchPolicy: Exact
    sideEffects: None
    timeoutSeconds: 30
    admissionReviewVersions: ["v1", "v1beta1"]
    clientConfig:
      service:
        name: {{ include "vault.injector.fullname" . }}
        namespace: {{ include "common.names.namespace" . | quote }}
        path: "/mutate"
      {{- if and .Values.injector.webhook.clientConfig (hasKey .Values.injector.webhook.clientConfig "caBundle") }}
      caBundle: {{ .Values.injector.webhook.clientConfig.caBundle }}
      {{- end }}
    rules:
      - operations: ["CREATE", "UPDATE"]
        apiGroups: [""]
        apiVersions: ["v1"]
        resources: ["pods"]
    objectSelector:
      matchExpressions:
        - key: app.kubernetes.io/component
          operator: NotIn
          values:
            - injector
    {{- if .Values.injector.webhook.namespaceSelector }}
    namespaceSelector: {{- include "common.tplvalues.render" (dict "value" .Values.injector.webhook.namespaceSelector  "context" $) | nindent 6 }}
    {{- end}}
{{- end }}
