{{- if .Values.admin.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: {{ .Release.Namespace }}
  name: {{ template "common.names.fullname" . }}-admin
  labels:
    {{- include "shenyu.admin.labels" . | nindent 4 }}
spec:
  selector:
    matchLabels:
      {{- include "shenyu.admin.selectorLabels" . | nindent 6 }}
  replicas: {{ .Values.admin.replicas }}
  template:
    metadata:
      labels:
        {{- include "shenyu.admin.labels" . | nindent 8 }}
    spec:
      {{/* check if database type is valid */}}
      {{- $dataSourceTypeValid := has .Values.dataSource.active (list "h2" "mysql" "pg" "oracle") -}}
      {{- if not $dataSourceTypeValid -}}{{- required "Invalid `.dataSource.active`. Must be one of 'h2', 'mysql', 'pg', 'oracle'" -}}{{- end}}
      {{- if eq .Values.dataSource.active "mysql"}}
      {{- $mysqlConnectorVersion := (required "once `dataSource.active` is set to 'mysql', `dataSource.mysql.connectorVersion` should not be empty" .Values.dataSource.mysql.connectorVersion)}}
      {{- $mysqlJarName := (print "mysql-connector-java-" $mysqlConnectorVersion ".jar") -}}
      initContainers:
        - name: download-mysql-jar
          image: busybox:1.35.0
          command:
            - "sh"
            - "-c"
            - "wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/{{$mysqlConnectorVersion}}/{{$mysqlJarName}};
                wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/{{$mysqlConnectorVersion}}/{{$mysqlJarName}}.md5;
                if [ $(md5sum {{$mysqlJarName}} | cut -d ' ' -f1) = $(cat {{$mysqlJarName}}.md5) ];
                then echo success;
                else echo failed;exit 1;fi;mv /{{$mysqlJarName}} /opt/shenyu-admin/ext-lib/mysql-connector.jar"
          volumeMounts:
            - name: mysql-connector-volume
              mountPath: /opt/shenyu-admin/ext-lib
      {{- end }}
      {{- if eq .Values.dataSource.active "pg"}}
      {{- $pgConnectorVersion := (required "once `dataSource.active` is set to 'pg', `dataSource.pg.connectorVersion` should not be empty" .Values.dataSource.pg.connectorVersion)}}
      {{- $pgJarName := (print "postgresql-" $pgConnectorVersion ".jar") -}}
      initContainers:
        - name: download-pg-jar
          image: busybox:1.35.0
          command:
            - "sh"
            - "-c"
            - "wget https://repo1.maven.org/maven2/org/postgresql/postgresql/{{$pgConnectorVersion}}/{{$pgJarName}};
                wget https://repo1.maven.org/maven2/org/postgresql/postgresql/{{$pgConnectorVersion}}/{{$pgJarName}}.md5;
                if [ $(md5sum {{$pgJarName}} | cut -d ' ' -f1) = $(cat {{$pgJarName}}.md5) ];
                then echo success;
                else echo failed;exit 1;fi;mv /{{$pgJarName}} /opt/shenyu-admin/ext-lib/postgresql-connector.jar"
          volumeMounts:
            - name: pg-connector-volume
              mountPath: /opt/shenyu-admin/ext-lib
      {{- end }}
      {{- if eq .Values.dataSource.active "oracle"}}
      {{- $oracleConnectorVersion := (required "once `dataSource.active` is set to 'oracle', `dataSource.oracle.connectorVersion` should not be empty" .Values.dataSource.oracle.connectorVersion)}}
      {{- $oracleJarName := (print "ojdbc8-" $oracleConnectorVersion ".jar") -}}
      initContainers:
        - name: download-oracle-jar
          image: busybox:1.35.0
          command:
            - "sh"
            - "-c"
            - "wget https://repo1.maven.org/maven2/com/oracle/ojdbc/ojdbc8/{{$oracleConnectorVersion}}/{{$oracleJarName}};
                wget https://repo1.maven.org/maven2/com/oracle/ojdbc/ojdbc8/{{$oracleConnectorVersion}}/{{$oracleJarName}}.md5;
                if [ $(md5sum {{$oracleJarName}} | cut -d ' ' -f1) = $(cat {{$oracleJarName}}.md5) ];
                then echo success;
                else echo failed;exit 1;fi;mv /{{$oracleJarName}} /opt/shenyu-admin/ext-lib/oracle-connector.jar"
          volumeMounts:
            - name: oracle-connector-volume
              mountPath: /opt/shenyu-admin/ext-lib
      {{- end }}
      containers:
        - name: shenyu-admin
          image: {{ .Values.admin.image }}:{{ required "A valid .Values.version entry required!" .Values.version }}
          imagePullPolicy: Always
          ports:
            - containerPort: 9095
          env:
            - name: 'TZ'
              value: 'Asia/Beijing'
            - name: ADMIN_JVM
              value: {{ .Values.admin.javaOpts | quote }}
          resources:
            {{- toYaml .Values.admin.resources | nindent 12 }}
          readinessProbe:
            httpGet:
              # todo change it to /actuator/health/readiness when shenyu-admin support it
              path: /actuator/health
              port: 9095
            periodSeconds: 5
            failureThreshold: 12
          livenessProbe:
            httpGet:
              # todo change it to /actuator/health/liveness when shenyu-admin support it
              path: /actuator/health
              port: 9095
            periodSeconds: 5
            failureThreshold: 12
          volumeMounts:
          - name: shenyu-admin-config
            mountPath: /opt/shenyu-admin/conf/application.yml
            subPath: application.yml
          {{- if eq .Values.dataSource.active "mysql" }}
          - name: mysql-connector-volume
            mountPath: /opt/shenyu-admin/ext-lib
          - name: shenyu-admin-config
            mountPath: /opt/shenyu-admin/conf/application-mysql.yml
            subPath: application-mysql.yml
          {{- end}}
          {{- if eq .Values.dataSource.active "pg" }}
          - name: pg-connector-volume
            mountPath: /opt/shenyu-admin/ext-lib
          - name: shenyu-admin-config
            mountPath: /opt/shenyu-admin/conf/application-pg.yml
            subPath: application-pg.yml
          {{- end}}
          {{- if eq .Values.dataSource.active "oracle" }}
          - name: oracle-connector-volume
            mountPath: /opt/shenyu-admin/ext-lib
          - name: shenyu-admin-config
            mountPath: /opt/shenyu-admin/conf/application-oracle.yml
            subPath: application-oracle.yml
          {{- end}}
      volumes:
        {{- if eq .Values.dataSource.active "mysql" }}
        - name: mysql-connector-volume
          emptyDir: { }
        {{- end }}
        {{- if eq .Values.dataSource.active "pg" }}
        - name: pg-connector-volume
          emptyDir: { }
        {{- end }}
        {{- if eq .Values.dataSource.active "oracle" }}
        - name: oracle-connector-volume
          emptyDir: { }
        {{- end }}
        - name: shenyu-admin-config
          configMap:
            name: {{ template "common.names.fullname" . }}-configmap
            items:
            - key: application-admin.yml
              path: application.yml
            {{- if eq .Values.dataSource.active "h2" }}
            - key: application-h2.yml
              path: application-h2.yml
            {{- end }}
            {{- if eq .Values.dataSource.active "mysql" }}
            - key: application-mysql.yml
              path: application-mysql.yml
            {{- end }}
            {{- if eq .Values.dataSource.active "pg" }}
            - key: application-pg.yml
              path: application-pg.yml
            {{- end }}
            {{- if eq .Values.dataSource.active "oracle" }}
            - key: application-oracle.yml
              path: application-oracle.yml
            {{- end }}
{{- end -}}
