#
# 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.
#

apiVersion: v1
kind: List
items:
  - apiVersion: v1
    kind: ConfigMap
    metadata:
      name: pinot-server-config
      namespace: pinot-quickstart
    data:
      pinot-server.conf: |-
        pinot.server.netty.port=8098
        pinot.server.adminapi.port=8097
        pinot.server.instance.dataDir=/var/pinot/server/data/index
        pinot.server.instance.segmentTarDir=/var/pinot/server/data/segmentTar
        pinot.set.instance.id.to.hostname=true
  - apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: pinot-server
      namespace: pinot-quickstart
    spec:
      selector:
        matchLabels:
          app: pinot-server
      serviceName: pinot-server
      replicas: 1
      updateStrategy:
        type: RollingUpdate
      podManagementPolicy: Parallel
      template:
        metadata:
          labels:
            app: pinot-server
        spec:
          terminationGracePeriodSeconds: 30
          containers:
          - image: apachepinot/pinot:release-0.7.1
            imagePullPolicy: Always
            name: pinot-server
            args: [
              "StartServer",
              "-clusterName", "pinot-quickstart",
              "-zkAddress", "zookeeper:2181/pinot",
              "-configFileName", "/var/pinot/server/config/pinot-server.conf"
            ]
            ports:
              - containerPort: 8098
                protocol: TCP
            volumeMounts:
              - name: config
                mountPath: /var/pinot/server/config
              - name: pinot-server-storage
                mountPath: /var/pinot/server/data
          restartPolicy: Always
          volumes:
            - name: config
              configMap:
                name: pinot-server-config
          nodeSelector:
            cloud.google.com/gke-nodepool: pinot-server-pool
      volumeClaimTemplates:
      - metadata:
          name: pinot-server-storage
        spec:
          accessModes:
            - ReadWriteOnce
          storageClassName: "pinot-server"
          resources:
            requests:
              storage: 10G
  - apiVersion: v1
    kind: Service
    metadata:
      name: pinot-server
      namespace: pinot-quickstart
    spec:
      ports:
      # [podname].pinot-server.pinot-quickstart.svc.cluster.local
      - port: 8098
      clusterIP: None
      selector:
        app: pinot-server
