#!/bin/bash
#
# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# make_ova.sh -d [vmdk file] -o [ova file] -p[product-name] \
#  -n[image-name] -t ${TEMPLATE_OVF}
#
# This scripts creates .ova file from given disk image and OVA template.
#

set -o xtrace
set -o errexit
set -o nounset

SCRIPT_ROOT=$(dirname $(readlink -f "$0"))
TEMPLATE_PATH=${SCRIPT_ROOT}/template.ovf
WORKSPACE=${SCRIPT_ROOT%\/src\/scripts\/cos}
BOARD=anthos-amd64-vsphere
PRODUCT_NAME="Anthos OnPrem on COS"
IMAGE_NAME="COS"
IMAGE_TYPE="test"
IMAGE_ROOT=${WORKSPACE}/src/build/images/${BOARD}/latest
DISK_FILE=${IMAGE_ROOT}/chromiumos_${IMAGE_TYPE}_image.vmdk
OUTPUT_FILE=${IMAGE_ROOT}/chromiumos_${IMAGE_TYPE}_image.ova

usage() {
  echo "Usage: $0 -b board -d disk.vmdk \
    -p product-name -n image-name \
    -o output-file [-t template.ovf]"
}

while getopts ":b:d:p:n:t:o:h" arg; do
  case $arg in
    b) BOARDD=$OPTARG ;;
    d) DISK_FILE=$OPTARG ;;
    p) PRODUCT_NAME=$OPTARG ;;
    n) IMAGE_NAME=$OPTARG ;;
    t) TEMPLATE_PATH=$OPTARG ;;
    o) OUTPUT_FILE=$OPTARG ;;
    h)
      usage
      exit 0
      ;;
    *)
      usage
      exit 1
      ;;
  esac
done

: "${BOARD?Missing -d BOARD value}"
: "${DISK_FILE?Missing -d DISK_FILE value}"
: "${PRODUCT_NAME?Missing -p PRODUCT_NAME value}"
: "${IMAGE_NAME?Missing -n IMAGE_NAME value}"
: "${TEMPLATE_PATH?Missing -t TEMPLATE_PATH value}"
: "${OUTPUT_FILE?Missing -o OUTPUT_FILE value}"

if [[ ! -f ${TEMPLATE_PATH} ]]; then
  echo "Cannot find template at ${TEMPLATE_PATH}"
  exit 1
fi

XML_NS=(
  -N 'x=http://schemas.dmtf.org/ovf/envelope/1'
  -N 'ovf=http://schemas.dmtf.org/ovf/envelope/1'
  -N 'vssd=http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData'
)

WORK_DIR=$(mktemp -d)
trap 'rm -rf "${WORK_DIR}"' EXIT

# xmlstar does not support multiple updates at once, and we need to provide
# namespaces to every invocation, so disable quoting warning.
# shellcheck disable=SC2086
xmlstarlet ed ${XML_NS[*]} \
  --update '//x:VirtualSystem/@ovf:id' --value "${IMAGE_NAME}" \
  "${TEMPLATE_PATH}" \
  | xmlstarlet ed ${XML_NS[*]} \
    --update '//x:VirtualSystem/x:Name' --value "${IMAGE_NAME}" \
  | xmlstarlet ed ${XML_NS[*]} \
    --update '//vssd:VirtualSystemIdentifier' --value "${IMAGE_NAME}" \
    > "${WORK_DIR}/tmp.ovf"

# Add a disk image to temporary .ovf
cot --force add-disk "${DISK_FILE}" "${WORK_DIR}/tmp.ovf" \
  -o "${WORK_DIR}/image.ovf" \
  -f vmdisk1 -t harddisk -c scsi

# Add product information and convert .ovf to .ova
cot --force edit-product "${WORK_DIR}/image.ovf" \
  -o "${OUTPUT_FILE}" \
  --product "${PRODUCT_NAME}"

