# Copyright 2018 Google LLC
#
# Licensed 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.

substitutions:
  '_ZONE': 'us-west1-b'
  '_TEST': 'hyperdisk_test'
  '_INPUT_IMAGE': 'cos-109-17800-218-44'
  '_INPUT_PROJECT': 'cos-cloud'
  '_SERVICE_ACCOUNT': 'compute@cloud-image-docker-builder.google.com.iam.gserviceaccount.com'
  '_COS_CUSTOMIZER': 'cos_customizer'
steps:
- name: 'gcr.io/cloud-builders/docker'
  entrypoint: '/bin/bash'
  args:
  - '-c'
  - |
    if [[ ${_COS_CUSTOMIZER} == 'cos_customizer' ]]; then
      docker build -f src/cmd/cos_customizer/Dockerfile -t cos_customizer .
    fi
- name: '${_COS_CUSTOMIZER}'
  args: ['start-image-build',
         '-build-context=testing/${_TEST}',
         '-image-name=${_INPUT_IMAGE}',
         '-image-project=${_INPUT_PROJECT}',
         '-gcs-bucket=${_PROJECT_NAME}_cloudbuild',
         '-gcs-workdir=customizer-$BUILD_ID']
- name: '${_COS_CUSTOMIZER}'
  args: ['run-script',
         '-script=preload.sh']
- name: '${_COS_CUSTOMIZER}'
  args: ['finish-image-build',
         '-zone=${_ZONE}',
         '-project=$PROJECT_ID',
         '-disk-type=hyperdisk-balanced',
         '-machine-type=n4-standard-2',
         '-image-name=preload-test-$BUILD_ID',
         '-image-project=$PROJECT_ID',
         '-service-account=${_SERVICE_ACCOUNT}']
- name: 'gcr.io/compute-image-tools/daisy'
  args: ['-project=$PROJECT_ID', '-zone=${_ZONE}', '-var:image_name',
         'preload-test-$BUILD_ID', '-var:image_project', '$PROJECT_ID',
         '-var:daisy_gcs_bucket', '${_PROJECT_NAME}-daisy-bkt',
         '-var:test_cfg', '../${_TEST}/preload_test.cfg', 'testing/util/run_test.wf.json']
timeout: '7200s'
