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

# Claim an EBS PersistentVolume.
# Dynamic provisioning through the storageClassName
# see: https://kubernetes.io/docs/concepts/storage/dynamic-provisioning/
# kube API server must have --enable-admission-plugins DefaultStorageClass
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ebs-claim-auto
spec:
  storageClassName: gp2
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
kind: Pod
apiVersion: v1
metadata:
  name: pod-with-volume
  labels:
    applicationId: "pod-with-ebs-auto"
    queue: "root.sandbox"
spec:
  schedulerName: yunikorn
  containers:
    - name: pod-with-ebs-auto
      image: alpine
      resources:
        requests:
          cpu: "100m"
          memory: "500M"
      # Mount the EBS volume in the container
      volumeMounts:
        - name: ebs-auto
          mountPath: "/var/tmp/mytest"
      # Write to a file inside our mounted path
      command: ["/bin/sh"]
      args: ["-c", "while true; do date >> /var/tmp/mytest/dates.txt; sleep 5; done"]
  # Add the EBS volume claim
  volumes:
    - name: ebs-auto
      persistentVolumeClaim:
        claimName: ebs-claim-auto

