#!/bin/bash

# Copyright (c) 2011 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.
#
# Updates an existing vm image with another image.

. $(dirname "$(readlink -f "$0")")/outside_chroot_common.sh || exit 1
. "${SCRIPT_ROOT}/common.sh" || exit 1
. "${SCRIPT_ROOT}/lib/cros_vm_lib.sh" || die "Unable to load cros_vm_lib.sh"
. "${SCRIPT_ROOT}/remote_access.sh" || die "Unable to load remote_access.sh"

DEFINE_string board "$DEFAULT_BOARD" \
  "The board for which you built autotest." b
DEFINE_string payload "" "Full name of the payload to update with."
DEFINE_string proxy_port "" \
  "Have the client request from this proxy instead of devserver."
DEFINE_boolean quick_test ${FLAGS_FALSE} "Don't perform update, only reboot."
DEFINE_string src_image "" \
  "Create a delta update by passing in the image on the remote machine."
DEFINE_string stateful_update_flag "" "Flags to pass to stateful update." s
DEFINE_string image "" "Path of the image to update to." u
DEFINE_string update_log "update_engine.log" \
  "Path to log for the update_engine."
DEFINE_string update_url "" "Full url of an update image."
DEFINE_string vm_image_path "" "Path of the VM image to update from." v

set -e

# Parse command line.
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"

[ -n "${FLAGS_vm_image_path}" ] || \
  die "You must specify a path to a vm image."

trap stop_kvm EXIT
start_kvm "${FLAGS_vm_image_path}" "${FLAGS_board}"
retry_until_ssh

if [ -n "${FLAGS_image}" ]; then
  IMAGE_ARGS="--image=$(readlink -f ${FLAGS_image})"
fi

if [ -n "${FLAGS_payload}" ]; then
  IMAGE_ARGS="--payload=${FLAGS_payload}"
fi

if [ -n "${FLAGS_proxy_port}" ]; then
  IMAGE_ARGS="${IMAGE_ARGS} --proxy_port=${FLAGS_proxy_port}"
fi

QUICK_TEST_FLAGS=""
if [ "${FLAGS_quick_test}" -eq "${FLAGS_TRUE}" ]; then
  info "Skipping update testing."
  QUICK_TEST_FLAGS="--noupdate --noupdate_stateful"
fi

TMP=$(mktemp -d /tmp/cros_run_vm_update.XXXX)
remote_access_init
remote_sh "update_engine"

"${SCRIPT_ROOT}/image_to_live.sh" \
  --remote=127.0.0.1 \
  --ssh_port=${FLAGS_ssh_port} \
  --private_key=${FLAGS_ssh_private_key} \
  --stateful_update_flag=${FLAGS_stateful_update_flag} \
  --src_image="${FLAGS_src_image}" \
  --noupdate_hostkey \
  --update_log="${FLAGS_update_log}" \
  --update_url="${FLAGS_update_url}" \
  --verify \
  ${IMAGE_ARGS} \
  ${QUICK_TEST_FLAGS}

