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


---

resource_types:
- name: gce-instances
  type: docker-image
  source:
    username: ((!docker-username))
    password: ((!docker-password))
    repository: gcr.io/((gcp-project))/((!docker-image-prefix))gce-instances-resource
    tag: latest

resources:
- name: four-times-a-day
  type: time
  source:
    interval: 6h
- name: geode-benchmarks
  type: git
  source:
    branch: develop
    depth: 1
    uri: https://github.com/apache/geode-benchmarks.git

- name: stoppable-instance
  type: gce-instances
  source:
    filter: 'labels.time-to-live:* AND labels.time-to-live<$(date +%s) AND status:RUNNING'

- name: deletable-instance
  type: gce-instances
  source:
    filter: 'labels.time-to-live:* AND labels.time-to-live<$(($(date +%s) - 86400)) AND status:TERMINATED'

- name: alpine-tools-image
  type: docker-image
  source:
    username: ((docker-username))
    password: ((docker-password))
    repository: gcr.io/((gcp-project))/((pipeline-prefix))alpine-tools
    tag: latest

- name: google-cloud-sdk-image
  type: docker-image
  source:
    repository: google/cloud-sdk
    tag: alpine

jobs:
- name: stop-instance
  plan:
  - aggregate:
    - get: google-cloud-sdk-image
    - get: stoppable-instance
      version: every
      trigger: true
  - task: stop-instances
    image: google-cloud-sdk-image
    config:
      platform: linux
      inputs:
      - name: stoppable-instance
      run:
        path: /bin/sh
        args:
        - -ec
        - |
          gcloud compute instances stop $(cat stoppable-instance/selfLink) --quiet

- name: delete-instance
  plan:
  - aggregate:
    - get: google-cloud-sdk-image
    - get: deletable-instance
      version: every
      trigger: true
  - task: delete-instance
    image: google-cloud-sdk-image
    config:
      platform: linux
      inputs:
      - name: deletable-instance
      run:
        path: /bin/sh
        args:
        - -ec
        - |
          gcloud compute instances delete $(cat deletable-instance/selfLink) --quiet

- name: reap-benchmark-instances
  plan:
  - aggregate:
    - get: alpine-tools-image
    - get: four-times-a-day
      trigger: true
    - get: geode-benchmarks
  - task: reap-benchmark-instances
    image: alpine-tools-image
    config:
      platform: linux
      params:
        AWS_ACCESS_KEY_ID: ((benchmarks-access-key-id))
        AWS_SECRET_ACCESS_KEY: ((benchmarks-secret-access-key))
        AWS_DEFAULT_REGION: us-west-2
        AWS_REGION: us-west-2
      inputs:
      - name: geode-benchmarks
      run:
        path: geode-benchmarks/infrastructure/scripts/aws/expire_clusters.sh
    timeout: 4h
