| #!/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} |
| |