#cloud-config
#
# Copyright 2017 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
#
#    https://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.

write_files:
  - path: /etc/systemd/system/cos-gpu-installer.service
    permissions: 0755
    owner: root
    content: |
      [Unit]
      Description=Run the GPU driver installer container
      Requires=network-online.target gcr-online.target
      After=network-online.target gcr-online.target

      [Service]
      User=root
      Type=oneshot
      RemainAfterExit=true
      # The default stateful path to store user provided installer script and
      # provided environment variables.
      Environment=STATEFUL_PATH=/var/lib/nvidia
      ExecStartPre=/bin/mkdir -p ${STATEFUL_PATH}
      ExecStartPre=/bin/bash -c "/usr/share/google/get_metadata_value attributes/run-installer-script > /tmp/run_installer.sh && cp -f /tmp/run_installer.sh ${STATEFUL_PATH}/run_installer.sh || true"
      ExecStart=/bin/bash ${STATEFUL_PATH}/run_installer.sh
      StandardOutput=journal+console
      StandardError=journal+console

  - path: /etc/systemd/system/cuda-vector-add.service
    permissions: 0755
    owner: root
    content: |
      [Unit]
      Description=Run a CUDA Vector Addition Workload
      Requires=cos-gpu-installer.service
      After=cos-gpu-installer.service

      [Service]
      User=root
      Type=oneshot
      RemainAfterExit=true
      ExecStartPre=/bin/bash -c "/usr/share/google/get_metadata_value attributes/run-cuda-test-script > /tmp/run_cuda_test.sh"
      ExecStart=/bin/bash /tmp/run_cuda_test.sh
      StandardOutput=journal+console
      StandardError=journal+console

runcmd:
  - systemctl daemon-reload
  - systemctl enable cos-gpu-installer.service
  - systemctl enable cuda-vector-add.service
  - systemctl start cos-gpu-installer.service
  - systemctl start cuda-vector-add.service
