blob: ba427a01de5bbb4dc35d246e76caa775dca658ce [file] [log] [blame]
#!/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"
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
"${SCRIPT_ROOT}/image_to_live.sh" \
--remote=127.0.0.1 \
--ssh_port=${FLAGS_ssh_port} \
--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}