Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Side by Side Diff: lib/cros_vm_lib.sh

Issue 3628002: Add a simple wrapper script around vm lib to start a vm. (Closed) Base URL: http://git.chromium.org/git/crosutils.git
Patch Set: Add echo Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « bin/cros_start_vm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 # 4 #
5 # Common vm functions for use in crosutils. 5 # Common vm functions for use in crosutils.
6 6
7 DEFINE_string kvm_pid "" \ 7 DEFINE_string kvm_pid "" \
8 "Use this pid file. If it exists and is set, use the vm specified by pid." 8 "Use this pid file. If it exists and is set, use the vm specified by pid."
9 DEFINE_boolean no_graphics ${FLAGS_FALSE} "Runs the KVM instance silently." 9 DEFINE_boolean no_graphics ${FLAGS_FALSE} "Runs the KVM instance silently."
10 DEFINE_boolean persist "${FLAGS_FALSE}" "Persist vm." 10 DEFINE_boolean persist "${FLAGS_FALSE}" "Persist vm."
(...skipping 10 matching lines...) Expand all
21 # TODO(rtc): These flags assume that we'll be using KVM on Lucid and won't work 21 # TODO(rtc): These flags assume that we'll be using KVM on Lucid and won't work
22 # on Hardy. 22 # on Hardy.
23 # $1: Path to the virtual image to start. 23 # $1: Path to the virtual image to start.
24 function start_kvm() { 24 function start_kvm() {
25 # Override default pid file. 25 # Override default pid file.
26 [ -n "${FLAGS_kvm_pid}" ] && KVM_PID_FILE=${FLAGS_kvm_pid} 26 [ -n "${FLAGS_kvm_pid}" ] && KVM_PID_FILE=${FLAGS_kvm_pid}
27 if [ -e "${KVM_PID_FILE}" ]; then 27 if [ -e "${KVM_PID_FILE}" ]; then
28 local pid=$(get_pid) 28 local pid=$(get_pid)
29 # Check if the process exists. 29 # Check if the process exists.
30 if ps -p ${pid} > /dev/null ; then 30 if ps -p ${pid} > /dev/null ; then
31 echo "Using a pre-created KVM instance specified by ${FLAGS_kvm_pid}." 31 echo "Using a pre-created KVM instance specified by ${FLAGS_kvm_pid}." >&2
32 else 32 else
33 # Let's be safe in case they specified a file that isn't a pid file. 33 # Let's be safe in case they specified a file that isn't a pid file.
34 echo "File ${KVM_PID_FILE} exists but specified pid doesn't." 34 echo "File ${KVM_PID_FILE} exists but specified pid doesn't." >&2
35 exit 1 35 exit 1
36 fi 36 fi
37 else 37 else
38 # No pid specified by PID file. Let's create a VM instance in this case. 38 # No pid specified by PID file. Let's create a VM instance in this case.
39 echo "Starting a KVM instance" 39 echo "Starting a KVM instance" >&2
40 local nographics="" 40 local nographics=""
41 local usesnapshot="" 41 local usesnapshot=""
42 if [ ${FLAGS_no_graphics} -eq ${FLAGS_TRUE} ]; then 42 if [ ${FLAGS_no_graphics} -eq ${FLAGS_TRUE} ]; then
43 nographics="-nographic" 43 nographics="-nographic"
44 fi 44 fi
45 45
46 if [ ${FLAGS_snapshot} -eq ${FLAGS_TRUE} ]; then 46 if [ ${FLAGS_snapshot} -eq ${FLAGS_TRUE} ]; then
47 snapshot="-snapshot" 47 snapshot="-snapshot"
48 fi 48 fi
49 49
50 sudo kvm -m 1024 \ 50 sudo kvm -m 1024 \
51 -vga std \ 51 -vga std \
52 -pidfile "${KVM_PID_FILE}" \ 52 -pidfile "${KVM_PID_FILE}" \
53 -daemonize \ 53 -daemonize \
54 -net nic \ 54 -net nic \
55 ${nographics} \ 55 ${nographics} \
56 ${snapshot} \ 56 ${snapshot} \
57 -net user,hostfwd=tcp::${FLAGS_ssh_port}-:22 \ 57 -net user,hostfwd=tcp::${FLAGS_ssh_port}-:22 \
58 -hda "${1}" 58 -hda "${1}"
59 59
60 LIVE_VM_IMAGE="${1}" 60 LIVE_VM_IMAGE="${1}"
61 fi 61 fi
62 } 62 }
63 63
64 # Checks to see if we can access the target virtual machine with ssh. 64 # Checks to see if we can access the target virtual machine with ssh.
65 function ssh_ping() { 65 function ssh_ping() {
66 "$(dirname $0)"/../ssh_test.sh \ 66 "$(dirname $0)"/../ssh_test.sh \
67 --ssh_port=${FLAGS_ssh_port} \ 67 --ssh_port=${FLAGS_ssh_port} \
68 --remote=127.0.0.1 68 --remote=127.0.0.1 >&2
69 } 69 }
70 70
71 # Tries to ssh into live image $1 times. After first failure, a try involves 71 # Tries to ssh into live image $1 times. After first failure, a try involves
72 # shutting down and restarting kvm. 72 # shutting down and restarting kvm.
73 function retry_until_ssh() { 73 function retry_until_ssh() {
74 local can_ssh_into=1 74 local can_ssh_into=1
75 local retries=0 75 local retries=0
76 ssh_ping && can_ssh_into=0 76 ssh_ping && can_ssh_into=0
77 77
78 while [ ${can_ssh_into} -eq 1 ] && [ ${retries} -lt ${1} ]; do 78 while [ ${can_ssh_into} -eq 1 ] && [ ${retries} -lt ${1} ]; do
79 echo "Failed to connect to virtual machine, retrying ... " >&2 79 echo "Failed to connect to virtual machine, retrying ... " >&2
80 stop_kvm || echo "Could not stop kvm. Retrying anyway." >&2 80 stop_kvm || echo "Could not stop kvm. Retrying anyway." >&2
81 start_kvm "${LIVE_VM_IMAGE}" 81 start_kvm "${LIVE_VM_IMAGE}"
82 ssh_ping && can_ssh_into=0 82 ssh_ping && can_ssh_into=0
83 retries=$((retries + 1)) 83 retries=$((retries + 1))
84 done 84 done
85 return ${can_ssh_into} 85 return ${can_ssh_into}
86 } 86 }
87 87
88 function stop_kvm() { 88 function stop_kvm() {
89 if [ "${FLAGS_persist}" -eq "${FLAGS_TRUE}" ]; then 89 if [ "${FLAGS_persist}" -eq "${FLAGS_TRUE}" ]; then
90 echo "Persist requested. Use --ssh_port ${FLAGS_ssh_port} " \ 90 echo "Persist requested. Use --ssh_port ${FLAGS_ssh_port} " \
91 "--kvm_pid ${KVM_PID_FILE} to re-connect to it." 91 "--kvm_pid ${KVM_PID_FILE} to re-connect to it." >&2
92 else 92 else
93 echo "Stopping the KVM instance" >&2 93 echo "Stopping the KVM instance" >&2
94 local pid=$(get_pid) 94 local pid=$(get_pid)
95 if [ -n "${pid}" ]; then 95 if [ -n "${pid}" ]; then
96 echo "Killing ${pid}" 96 echo "Killing ${pid}" >&2
97 sudo kill ${pid} 97 sudo kill ${pid}
98 sudo rm "${KVM_PID_FILE}" 98 sudo rm "${KVM_PID_FILE}"
99 else 99 else
100 echo "No kvm pid found to stop." >&2 100 echo "No kvm pid found to stop." >&2
101 return 1 101 return 1
102 fi 102 fi
103 fi 103 fi
104 } 104 }
OLDNEW
« no previous file with comments | « bin/cros_start_vm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698