#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.

{{- $platform := .Values.platform -}}
{{- $jobReplicas := .Values.jobReplicas -}}
{{- $apiServerMemory := .Values.apiServerMemory }}

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-tools-config
data:
  HERON_APISERVER_MEM_MIN: {{ $apiServerMemory | quote }}
  HERON_APISERVER_MEM_MAX: {{ $apiServerMemory | quote }}

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-tools
  labels:
    app: {{ .Release.Name }}-tools
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  selector:
    matchLabels:
      app: {{ .Release.Name }}-tools
      release: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}-tools
        release: {{ .Release.Name }}
    spec:
      serviceAccountName: {{ .Release.Name }}-apiserver
      terminationGracePeriodSeconds: 0
      tolerations:
        - key: "node.kubernetes.io/not-ready"
          operator: "Equal"
          effect: "NoExecute"
          tolerationSeconds: 10
        - key: "node.alpha.kubernetes.io/notReady"
          operator: "Equal"
          effect: "NoExecute"
          tolerationSeconds: 10
        - key: "node.alpha.kubernetes.io/unreachable"
          operator: "Equal"
          effect: "NoExecute"
          tolerationSeconds: 10
      initContainers:
        # Wait until the zookeeper pods are up and running
        - name: heron-tools-init-container
          image: {{ .Values.image }}
          imagePullPolicy: {{ .Values.imagePullPolicy }}
          command:
            - sh
            - -c
            - /opt/zookeeper/scripts/wait-for-zookeeper.sh {{ .Release.Name }}-zookeeper {{ .Values.zookeeper.clientPort }}
        - name: init-heron-apiserver
          image: {{ .Values.bookkeeper.image }}
          command: ['sh', '-c', '/opt/bookkeeper/bin/dlog admin bind -l /ledgers -s {{ .Release.Name }}-zookeeper:{{ .Values.zookeeper.clientPort }} -c distributedlog://{{ .Release.Name }}-zookeeper:{{ .Values.zookeeper.clientPort }}/heron']
      containers:
        - name: heron-tracker
          image: {{ .Values.image }}
          imagePullPolicy: {{ .Values.imagePullPolicy }}
          resources:
            requests:
              cpu: "100m"
              memory: "200M"
            limits:
              cpu: "400m"
              memory: "512M"
          ports:
            - containerPort: 8888
              name: api-port
          command: ["sh", "-c"]
          args:
            - >-
              heron-tracker
              --type=zookeeper
              --name={{ .Release.Name }}
              --hostport={{ .Release.Name }}-zookeeper:{{ .Values.zookeeper.clientPort }}
              --rootpath="/heron" 
        - name: heron-ui
          image: {{ .Values.image }}
          imagePullPolicy: {{ .Values.imagePullPolicy }}
          resources:
            requests:
              cpu: "100m"
              memory: "200M"
            limits:
              cpu: "400m"
              memory: "512M"
          ports:
            - containerPort: 8889
              name: app-port
          command: ["sh", "-c"]
          args:
            - >-
              heron-ui
              --port=8889
              --base_url={{ .Values.heron.url }}
        - name: heron-apiserver
          image: {{ .Values.image }}
          imagePullPolicy: {{ .Values.imagePullPolicy }}
          resources:
            requests:
              cpu: "250m"
            limits:
              cpu: "500m"
          command: ["sh", "-c"]
          args:
            - >-
              heron-apiserver
              --base-template kubernetes
              --cluster {{ .Release.Name }}
              -D heron.statemgr.connection.string={{ .Release.Name }}-zookeeper:2181
              -D heron.kubernetes.scheduler.uri=http://localhost:8001
              -D heron.kubernetes.scheduler.namespace={{ .Release.Namespace }}
              -D heron.executor.docker.image={{ .Values.image }}
              -D heron.statefulstorage.classname=org.apache.heron.statefulstorage.dlog.DlogStorage
              -D heron.statefulstorage.dlog.namespace.uri=distributedlog://{{ .Release.Name }}-zookeeper:{{ .Values.zookeeper.clientPort }}/heron
              {{- if eq .Values.uploader.class "dlog" }}
              -D heron.class.uploader=org.apache.heron.uploader.dlog.DLUploader
              -D heron.uploader.dlog.topologies.num.replicas={{ $jobReplicas }}
              -D heron.uploader.dlog.topologies.namespace.uri=distributedlog://{{ .Release.Name }}-zookeeper:{{ .Values.zookeeper.clientPort }}/heron
              {{- else if eq .Values.uploader.class "s3" }}
              -D heron.class.uploader=org.apache.heron.uploader.s3.S3Uploader
              -D heron.uploader.s3.bucket={{ .Values.uploader.s3Bucket }}
              -D heron.uploader.s3.path_prefix={{ .Values.uploader.s3PathPrefix }}
              -D heron.uploader.s3.access_key={{ .Values.uploader.s3AccessKey }}
              -D heron.uploader.s3.secret_key={{ .Values.uploader.s3SecretKey }}
              -D heron.uploader.s3.region={{ .Values.uploader.s3Region }}
              {{- end }}
              {{- if eq .Values.packing "RoundRobin" }}
              -D heron.class.packing.algorithm=org.apache.heron.packing.roundrobin.RoundRobinPacking
              -D heron.class.repacking.algorithm=org.apache.heron.packing.roundrobin.RoundRobinPacking
              {{- else if eq .Values.packing "ResourceCompliantRR" }}
              -D heron.class.packing.algorithm=org.apache.heron.packing.roundrobin.ResourceCompliantRRPacking
              -D heron.class.repacking.algorithm=org.apache.heron.packing.roundrobin.ResourceCompliantRRPacking
              {{- else if eq .Values.packing "FirstFitDecreasing" }}
              -D heron.class.packing.algorithm=org.apache.heron.packing.binpacking.FirstFitDecreasingPacking
              -D heron.class.repacking.algorithm=org.apache.heron.packing.binpacking.FirstFitDecreasingPacking
              {{- end }}
          envFrom:
            - configMapRef:
                name: {{ .Release.Name }}-tools-config

---
##
## Service to expose the heron-ui
##
apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}-ui
  labels:
    app: {{ .Release.Name }}-tools
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  ports:
    - port: 8889
      targetPort: 8889
      protocol: TCP
  selector:
    app: {{ .Release.Name }}-tools
    release: {{ .Release.Name }}

---
##
## Service to expose the heron-tracker
##
apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}-tracker
  labels:
    app: {{ .Release.Name }}-tools
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  ports:
    - port: 8888
      targetPort: 8888
      protocol: TCP
  selector:
    app: {{ .Release.Name }}-tools
    release: {{ .Release.Name }}

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: {{ .Release.Name }}-apiserver
  namespace: {{ .Release.Namespace }}
  labels:
    k8s-app: {{ .Release.Name }}-apiserver

---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: {{ .Release.Name }}-apiserver
  labels:
    app: {{ .Release.Name }}-apiserver
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects: 
- kind: ServiceAccount
  name: {{ .Release.Name }}-apiserver
  namespace: {{ .Release.Namespace }}

---
apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}-apiserver
  labels:
    app: {{ .Release.Name }}-tools
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  ports:
    - port: 9000
      targetPort: 9000
      protocol: TCP
  type: NodePort
  selector:
    app: {{ .Release.Name }}-tools
    release: {{ .Release.Name }}
