apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-gerrit-replica-deployment
  labels:
    app: gerrit-replica
    chart: {{ template "gerrit-replica.chart" . }}
    heritage: {{ .Release.Service }}
    release: {{ .Release.Name }}
spec:
  replicas: {{ .Values.gerritReplica.replicas | default 1 }}
  strategy:
    rollingUpdate:
      maxSurge: {{ .Values.gerritReplica.maxSurge }}
      maxUnavailable: {{ .Values.gerritReplica.maxUnavailable }}
  selector:
    matchLabels:
      app: gerrit-replica
  template:
    metadata:
      labels:
        app: gerrit-replica
        chart: {{ template "gerrit-replica.chart" . }}
        heritage: {{ .Release.Service }}
        release: {{ .Release.Name }}
      annotations:
        chartRevision: "{{ .Release.Revision }}"
    spec:
      securityContext:
        fsGroup: 100
      {{ if .Values.images.registry.ImagePullSecret.name -}}
      imagePullSecrets:
      - name: {{ .Values.images.registry.ImagePullSecret.name }}
      {{- end }}
      initContainers:
      - name: site-cleanup
        image: busybox
        securityContext:
          runAsUser: 1000
          runAsGroup: 100
        command:
        - sh
        - -c
        args:
        - |
          # Remove directories that should be mounted rather than exist with the
          # rest of the site
          [ ! -L /var/gerrit/git ] && rm -rf /var/gerrit/git
          rm -f /var/gerrit/logs/gerrit.pid
        volumeMounts:
        - name: gerrit-site
          mountPath: "/var/gerrit"
      # Initialize the volume containing the whole Gerrit-site with defaults
      # Not needed, when running in test mode, since then the configured site will
      # be initialized
      - name: populate-gerrit-site-volume
        image: {{ template "registry" . }}{{ .Values.gerritReplica.images.gerritInit }}:{{ .Values.images.version }}
        imagePullPolicy: {{ .Values.images.imagePullPolicy }}
        command:
        - /bin/ash
        - -ce
        args:
        - |
          /var/tools/gerrit_init.py \
            -c /var/config/gerrit-init.yaml \
            -s /var/gerrit

          # The git repositories will be mounted from a volume
          [ -L /var/gerrit/git ] || rm -rf /var/gerrit/git
          {{ if .Values.gerritReplica.service.ssh.enabled -}}
          rm -f /var/gerrit/etc/ssh_host*key*
          {{- end }}
        volumeMounts:
        - name: gerrit-site
          mountPath: "/var/gerrit"
        - name: gerrit-init-config
          mountPath: "/var/config/gerrit-init.yaml"
          subPath: gerrit-init.yaml
      # If configured, run initialization taking the given Gerrit configuration
      # and persisted volumes into account.
      - name: gerrit-init
        image: {{ template "registry" . }}{{ .Values.gerritReplica.images.gerritInit }}:{{ .Values.images.version }}
        imagePullPolicy: {{ .Values.images.imagePullPolicy }}
        command:
        - /bin/ash
        - -ce
        args:
        - |
          symlink_config_to_site(){
            {{ if .Values.gerritReplica.keystore -}}
            ln -s /var/config/keystore /var/gerrit/etc/keystore
            {{- end }}
            ln -sf /var/config/gerrit.config /var/gerrit/etc/gerrit.config
            ln -sf /var/config/secure.config /var/gerrit/etc/secure.config
            {{ if .Values.gerritReplica.service.ssh.enabled -}}
            ln -sf /var/config/ssh_host_rsa_key /var/gerrit/etc/ssh_host_rsa_key
            {{- end }}
          }

          mkdir -p /var/gerrit/etc
          symlink_config_to_site

          if [ ! -d /var/gerrit/git ]; then
            ln -sf /var/mnt/git /var/gerrit/
          fi

          /var/tools/validate_notedb.py -s /var/gerrit
        volumeMounts:
        - name: gerrit-site
          mountPath: "/var/gerrit"
        - name: git-filesystem
          mountPath: "/var/mnt/git"
        {{- if .Values.gitRepositoryStorage.nfs.enabled }}
        - name: nfs-config
          mountPath: "/etc/idmapd.conf"
          subPath: idmapd.conf
        {{- end }}
        - name: gerrit-init-config
          mountPath: "/var/config/gerrit-init.yaml"
          subPath: gerrit-init.yaml
        {{- if and .Values.gerritReplica.plugins.cache.enabled .Values.gerritReplica.plugins.downloaded }}
        - name: gerrit-plugin-cache
          mountPath: "/var/mnt/plugins"
        {{- end }}
        - name: gerrit-config
          mountPath: "/var/config/gerrit.config"
          subPath: gerrit.config
        - name: gerrit-replica-secure-config
          mountPath: "/var/config/secure.config"
          subPath: secure.config
        {{ if .Values.gerritReplica.keystore -}}
        - name: gerrit-replica-secure-config
          mountPath: "/var/config/keystore"
          subPath: keystore
        {{- end }}
        {{ if .Values.gerritReplica.service.ssh.enabled -}}
        - name: gerrit-replica-ssh
          mountPath: "/var/config/ssh_host_rsa_key"
          subPath: ssh_host_rsa_key
        {{- end }}
      containers:
      - name: gerrit-replica
        image: {{ template "registry" . }}{{ .Values.gerritReplica.images.gerritReplica }}:{{ .Values.images.version }}
        imagePullPolicy: {{ .Values.images.imagePullPolicy }}
        ports:
        - containerPort: 8080
        {{ if .Values.gerritReplica.service.ssh -}}
        - containerPort: 29418
        {{- end }}
        volumeMounts:
        - name: gerrit-site
          mountPath: "/var/gerrit"
        - name: git-filesystem
          mountPath: "/var/mnt/git"
        {{- if .Values.gitRepositoryStorage.nfs.enabled }}
        - name: nfs-config
          mountPath: "/etc/idmapd.conf"
          subPath: idmapd.conf
        {{- end }}
        {{- if and .Values.gerritReplica.plugins.cache.enabled .Values.gerritReplica.plugins.downloaded }}
        - name: gerrit-plugin-cache
          mountPath: "/var/mnt/plugins"
        {{- end }}
        - name: gerrit-config
          mountPath: "/var/config/gerrit.config"
          subPath: gerrit.config
        - name: gerrit-replica-secure-config
          mountPath: "/var/config/secure.config"
          subPath: secure.config
        {{ if .Values.gerritReplica.keystore -}}
        - name: gerrit-replica-secure-config
          mountPath: "/var/config/keystore"
          subPath: keystore
        {{- end }}
        {{ if .Values.gerritReplica.service.ssh.enabled -}}
        - name: gerrit-replica-ssh
          mountPath: "/var/config/ssh_host_rsa_key"
          subPath: ssh_host_rsa_key
        {{- end }}
        resources:
{{ toYaml .Values.gerritReplica.resources | indent 10 }}
      volumes:
      - name: gerrit-site
        {{ if .Values.gerritReplica.persistence.enabled -}}
        persistentVolumeClaim:
          claimName: {{ .Release.Name }}-gerrit-replica-pvc
        {{ else -}}
        emptyDir: {}
        {{- end }}
      - name: git-filesystem
        persistentVolumeClaim:
          {{- if .Values.gitRepositoryStorage.externalPVC.use }}
          claimName: {{ .Values.gitRepositoryStorage.externalPVC.name }}
          {{- else }}
          claimName: {{ .Release.Name }}-git-filesystem-pvc
          {{- end }}
      {{- if and .Values.gerritReplica.plugins.cache.enabled .Values.gerritReplica.plugins.downloaded }}
      - name: gerrit-plugin-cache
        persistentVolumeClaim:
          claimName: {{ .Release.Name }}-plugin-cache-pvc
      {{- end }}
      {{- if .Values.gitRepositoryStorage.nfs.enabled }}
      - name: nfs-config
        configMap:
          name: {{ .Release.Name }}-nfs-configmap
      {{- end }}
      - name: gerrit-init-config
        configMap:
          name: {{ .Release.Name }}-gerrit-init-configmap
      - name: gerrit-config
        configMap:
          name: {{ .Release.Name }}-gerrit-replica-configmap
      - name: gerrit-replica-secure-config
        secret:
          secretName: {{ .Release.Name }}-gerrit-replica-secure-config
      {{ if .Values.gerritReplica.service.ssh.enabled -}}
      - name: gerrit-replica-ssh
        secret:
          secretName: {{ .Release.Name }}-gerrit-replica-ssh-secret
      {{- end }}
