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

Unified Diff: lib/cros_vm_lib.sh

Issue 3419014: Add persist option to vm library. (Closed) Base URL: http://git.chromium.org/git/crosutils.git
Patch Set: Fix nits Created 10 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « bin/cros_run_vm_update ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/cros_vm_lib.sh
diff --git a/lib/cros_vm_lib.sh b/lib/cros_vm_lib.sh
new file mode 100644
index 0000000000000000000000000000000000000000..61d575bfff6bd4b9197f230d8e07163e30547670
--- /dev/null
+++ b/lib/cros_vm_lib.sh
@@ -0,0 +1,73 @@
+# Copyright (c) 2010 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.
+#
+# Common vm functions for use in crosutils.
+
+DEFINE_string kvm_pid "" \
+ "Use this pid file. If it exists and is set, use the vm specified by pid."
+DEFINE_boolean no_graphics ${FLAGS_FALSE} "Runs the KVM instance silently."
+DEFINE_boolean persist "${FLAGS_FALSE}" "Persist vm."
+DEFINE_boolean snapshot ${FLAGS_FALSE} "Don't commit changes to image."
+DEFINE_integer ssh_port 9222 "Port to tunnel ssh traffic over."
+
+
+KVM_PID_FILE=/tmp/kvm.$$.pid
+
+function get_pid() {
+ sudo cat "${KVM_PID_FILE}"
+}
+
+# TODO(rtc): These flags assume that we'll be using KVM on Lucid and won't work
+# on Hardy.
+# $1: Path to the virtual image to start.
+function start_kvm() {
+ # Override default pid file.
+ [ -n "${FLAGS_kvm_pid}" ] && KVM_PID_FILE=${FLAGS_kvm_pid}
+ if [ -e "${KVM_PID_FILE}" ]; then
+ local pid=$(get_pid)
+ # Check if the process exists.
+ if ps -p ${pid} > /dev/null ; then
+ echo "Using a pre-created KVM instance specified by ${FLAGS_kvm_pid}."
+ else
+ # Let's be safe in case they specified a file that isn't a pid file.
+ echo "File ${KVM_PID_FILE} exists but specified pid doesn't."
+ exit 1
+ fi
+ else
+ # No pid specified by PID file. Let's create a VM instance in this case.
+ echo "Starting a KVM instance"
+ local nographics=""
+ local usesnapshot=""
+ if [ ${FLAGS_no_graphics} -eq ${FLAGS_TRUE} ]; then
+ nographics="-nographic"
+ fi
+
+ if [ ${FLAGS_snapshot} -eq ${FLAGS_TRUE} ]; then
+ snapshot="-snapshot"
+ fi
+
+ sudo kvm -m 1024 \
+ -vga std \
+ -pidfile "${KVM_PID_FILE}" \
+ -daemonize \
+ -net nic \
+ ${nographics} \
+ ${snapshot} \
+ -net user,hostfwd=tcp::${FLAGS_ssh_port}-:22 \
+ -hda "${1}"
+ fi
+}
+
+function stop_kvm() {
+ if [ "${FLAGS_persist}" -eq "${FLAGS_TRUE}" ]; then
+ echo "Persist requested. Use --ssh_port ${FLAGS_ssh_port} " \
+ "--kvm_pid ${KVM_PID_FILE} to re-connect to it."
+ else
+ echo "Stopping the KVM instance"
+ local pid=$(get_pid)
+ echo "Killing ${pid}"
+ sudo kill ${pid}
+ sudo rm "${KVM_PID_FILE}"
+ fi
+}
« no previous file with comments | « bin/cros_run_vm_update ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698