encapsulating into functions.
Signed-off-by: Liu Yinsi <liuyinsi(a)163.com>
---
providers/qemu/kvm.sh | 160 +++++++++++++++++++++++++-----------------
1 file changed, 97 insertions(+), 63 deletions(-)
diff --git a/providers/qemu/kvm.sh b/providers/qemu/kvm.sh
index fd921dc..c926d3d 100755
--- a/providers/qemu/kvm.sh
+++ b/providers/qemu/kvm.sh
@@ -7,78 +7,112 @@
: ${nr_cpu:=1}
: ${memory:=1G}
-log_file=/srv/cci/serial/logs/${hostname}
-if [ ! -f "$log_file" ]; then
- touch $log_file
- # fluentd refresh time is 1s
- # let fluentd to monitor this file first
- sleep 2
-fi
+check_logfile()
+{
+ log_file=/srv/cci/serial/logs/${hostname}
+ [ -f "$log_file" ] || {
+ touch $log_file
+ # fluentd refresh time is 1s
+ # let fluentd to monitor this file first
+ sleep 2
+ }
+}
+
+qemu_command()
+{
+ qemu=qemu-system-aarch64
+ command -v $qemu >/dev/null || qemu=qemu-kvm
+}
-qemu=qemu-system-aarch64
-command -v $qemu >/dev/null || qemu=qemu-kvm
+write_logfile()
+{
+ ipxe_script=ipxe_script
+ curl http://${SCHED_HOST:-172.17.0.1}:${SCHED_PORT:-3000}/boot.ipxe/mac/${mac} > $ipxe_script
+ cat $ipxe_script >> ${log_file}
+}
-ipxe_script=ipxe_script
-curl http://${SCHED_HOST:-172.17.0.1}:${SCHED_PORT:-3000}/boot.ipxe/mac/${mac} > $ipxe_script
-cat $ipxe_script >> ${log_file}
+parse_ipxe_script()
+{
+ append=
+ initrds=
+ while read a b c
+ do
+ case "$a" in
+ '#')
+ ;;
+ initrd)
+ file=$(basename "$b")
+ wget --timestamping -a ${log_file} --progress=bar:force $b
+ initrds+="$file "
+ ;;
+ kernel)
+ kernel=$(basename "$b")
+ wget --timestamping -a ${log_file} --progress=bar:force $b
+ append=$(echo "$c" | sed -r "s/ initrd=[^ ]+//g")
+ ;;
+ *)
+ ;;
+ esac
+ done < $ipxe_script
+}
-append=
-initrds=
-while read a b c
-do
- case "$a" in
- '#')
- ;;
- initrd)
- file=$(basename "$b")
- wget --timestamping -a ${log_file} --progress=bar:force $b
- initrds+="$file "
- ;;
- kernel)
- kernel=$(basename "$b")
- wget --timestamping -a ${log_file} --progress=bar:force $b
- append=$(echo "$c" | sed -r "s/ initrd=[^ ]+//g")
- ;;
- *)
- ;;
- esac
-done < $ipxe_script
+check_option_value()
+{
+ [ -s "$kernel" ] || {
+ echo "can't get kernel or kernel size is 0"
+ exit
+ }
+
+ [ -n "$initrds" ] || exit
+}
-[ -s "$kernel" ] || {
- echo "can't get kernel or kernel size is 0"
- exit
+get_initrd()
+{
+ initrd=initrd
+ cat $initrds > $initrd
}
-[ -n "$initrds" ] || {
- exit
+print_message()
+{
+ echo $SCHED_PORT
+ echo kernel: $kernel
+ echo initrds: $initrds
+ echo append: $append
+ echo less $log_file
+
+ sleep 5
}
-initrd=initrd
-cat $initrds > $initrd
+run_qemu()
+{
+ kvm=(
+ $qemu
+ -machine virt-4.0,accel=kvm,gic-version=3
+ -kernel $kernel
+ -initrd $initrd
+ -smp $nr_cpu
+ -m $memory
+ -cpu Kunpeng-920
+ -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd
+ -nic tap,model=virtio-net-pci,helper=/usr/libexec/qemu-bridge-helper,br=br0,mac=${mac}
+ -k en-us
+ -no-reboot
+ -nographic
+ -serial file:${log_file}
+ -monitor null
+ )
+
+ "${kvm[@]}" --append "${append}"
+}
-echo $SCHED_PORT
-echo kernel: $kernel
-echo initrds: $initrds
-echo append: $append
-echo less $log_file
+check_logfile
+write_logfile
-sleep 5
+qemu_command
+parse_ipxe_script
+check_option_value
+get_initrd
-kvm=(
- $qemu
- -machine virt-4.0,accel=kvm,gic-version=3
- -kernel $kernel
- -initrd $initrd
- -smp $nr_cpu
- -m $memory
- -cpu Kunpeng-920
- -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd
- -nic tap,model=virtio-net-pci,helper=/usr/libexec/qemu-bridge-helper,br=br0,mac=${mac}
- -k en-us
- -no-reboot
- -nographic
- -serial file:${log_file}
- -monitor null
-)
+print_message
-"${kvm[@]}" --append "${append}"
+run_qemu
--
2.23.0