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


# This test uses subnetwork `cos-customizer-test` in default VPC for the preload VM.

substitutions:
  '_TEST': 'network_subnet_test'
  '_INPUT_IMAGE': 'cos-85-13310-1260-8'
  '_INPUT_PROJECT': 'cos-cloud'
steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-f', 'src/cmd/cos_customizer/Dockerfile', '-t', 'cos_customizer', '.']
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  args: [ 'gcloud', 'compute', 'networks', 'subnets',
          'create', 'cos-customizer-test',
          '--project', '${PROJECT_ID}', '--network', 'default', '--region', 'us-central1',
          '--range', '10.124.0.0/20']
- 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',
         '-machine-type=n1-standard-8',
         '-zone=us-central1-a',
         '-project=$PROJECT_ID',
         '-subnet=regions/us-central1/subnetworks/cos-customizer-test',
         '-image-name=preload-test-$BUILD_ID',
         '-image-project=$PROJECT_ID',
         '-service-account=compute@cloud-image-docker-builder.google.com.iam.gserviceaccount.com']
- name: 'gcr.io/compute-image-tools/daisy'
  args: ['-project=$PROJECT_ID', '-zone=us-west1-b', '-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']
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  args: [ 'gcloud', 'compute', 'networks', 'subnets',
          'delete', 'cos-customizer-test',
          '--project', '${PROJECT_ID}', '--region', 'us-central1']
options:
  machineType: 'N1_HIGHCPU_8'
timeout: '7200s'
