annotate files/fbhyve.in @ 774:75a8b69c04f0

farray.sh: Implement Shell sort using Ciura gaps (A102549)
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 23 Oct 2024 22:52:14 +0200
parents 24129dd789f0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
1 #!/bin/sh
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
2 # -*- indent-tabs-mode: nil -*-
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
3
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
4 # PROVIDE: fbhyve
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
5 # REQUIRE: LOGIN FILESYSTEMS
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
6 # KEYWORD: shutdown nojail
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
7 #
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
8
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
9 # @(#)%%SIMPLEVERSIONTAG%%
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
10
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
11 #
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
12 # Add the following lines to /etc/rc.conf to enable bhyve:
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
13 #
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
14 # fbhyve_enable (bool): Set to "NO" by default.
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
15 # Acts as default for all listed VMs.
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
16 # Set it to "YES" to enable bhyve.
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
17 # fbhyve_list (str): Set to "" by default.
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
18 # Define the names of your VMs here.
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
19 # fbhyve_tmux_session_prefix (str): All tmux session names will have this
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
20 # prefix string.
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
21 # fbhyve_configdir (str): Where by default config files for all VMs live.
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
22 # Default: $PREFIX/etc/fbhyve
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
23 #
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
24 #
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
25 # fbhyve_<vm>_enable (bool): Allow to enable or disable a specific VM.
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
26 # Set to $fbhyve_enable by default.
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
27 # fbhyve_<vm>_config (str): The bhyve configuration file to use to.
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
28 # The default is $fbhyve_configdir/<vm>.conf
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
29 #
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
30
665
24129dd789f0 Shellcheck for rc-scripts
Franz Glasner <fzglas.hg@dom66.de>
parents: 479
diff changeset
31 # shellcheck disable=SC2034,SC2154,SC2223
24129dd789f0 Shellcheck for rc-scripts
Franz Glasner <fzglas.hg@dom66.de>
parents: 479
diff changeset
32
24129dd789f0 Shellcheck for rc-scripts
Franz Glasner <fzglas.hg@dom66.de>
parents: 479
diff changeset
33 # shellcheck disable=SC1094 # parsing fails: rc.subr contains unknown features
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
34 . /etc/rc.subr
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
35
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
36 name="fbhyve"
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
37 desc="Manage system bhyve virtual machines"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
38 rcvar="fbhyve_enable"
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
39
476
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
40 extra_commands="kill"
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
41 start_precmd="fbhyve_pre_start"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
42 stop_postcmd="fbhyve_post_stop"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
43 status_cmd="fbhyve_status"
476
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
44 kill_cmd="fbhyve_kill"
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
45
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
46
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
47 load_rc_config $name
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
48
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
49 : ${fbhyve_enable:="NO"}
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
50 : ${fbhyve_list=}
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
51 : ${fbhyve_tmux_session_prefix:="${name}_"}
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
52 : ${fbhyve_configdir:="%%FBHYVE_ETCDIR%%"}
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
53
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
54
475
827371176fec Formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 474
diff changeset
55 _fbhyve_vm_exists()
827371176fec Formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 474
diff changeset
56 {
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
57 local _p
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
58 for _p in ${fbhyve_list}; do
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
59 [ "${_p}" = "$1" ] && return 0;
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
60 done
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
61 return 1
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
62 }
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
63
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
64
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
65 if [ $# -eq 2 ]; then
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
66 _vm="$2"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
67 if ! _fbhyve_vm_exists "${_vm}"; then
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
68 echo "ERROR: no VM named \`${_vm}' in \`fbhyve_list'" 1>&2
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
69 exit 1
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
70 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
71 echo "-- VM: ${_vm} --"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
72 _session="${fbhyve_tmux_session_prefix}${_vm}"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
73 _window="${_session}_console"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
74 eval fbhyve_enable="\${fbhyve_${_vm}_enable:-${fbhyve_enable}}"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
75 eval fbhyve_config="\${fbhyve_${_vm}_config:-\"${fbhyve_configdir}/${_vm}.conf\"}"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
76 else
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
77 _ec=0
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
78 _swap=$*; shift; _vmarglist=$*
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
79 _vmlist=${_vmarglist:-${fbhyve_list}}
665
24129dd789f0 Shellcheck for rc-scripts
Franz Glasner <fzglas.hg@dom66.de>
parents: 479
diff changeset
80 # shellcheck disable=SC2086
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
81 set -- ${_swap}
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
82 for _vm in ${_vmlist}; do
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
83 "$0" "$1" "${_vm}"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
84 _vmec=$?
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
85 if [ ${_vmec} -gt ${_ec} ]; then
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
86 _ec=${_vmec}
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
87 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
88 done
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
89 exit ${_ec}
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
90 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
91
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
92 _rundir="%%FBHYVE_RUNDIR%%"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
93 pidfile="${_rundir}/${_vm}.pid"
479
30ba5e272030 fbhyve: put tmux into the required_files
Franz Glasner <fzglas.hg@dom66.de>
parents: 477
diff changeset
94 command="%%LOCALBASE%%/bin/tmux"
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
95 procname="bhyve:" # something like bhyve: <vmname> (bhyve)
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
96
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
97 required_dirs="${_rundir}"
479
30ba5e272030 fbhyve: put tmux into the required_files
Franz Glasner <fzglas.hg@dom66.de>
parents: 477
diff changeset
98 required_files="${fbhyve_config} ${command}"
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
99
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
100 command_args="new-session -ds ${_session} -n ${_window} \"sh -c 'echo \\\$\\\$ >\\\"${pidfile}\\\"; /usr/sbin/bhyve -k \\\"${fbhyve_config}\\\" \\\"${_vm}\\\"'\""
467
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
101
6ecd16725818 Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents: 465
diff changeset
102
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
103 fbhyve_status()
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
104 {
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
105 local _pid _rc
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
106
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
107 _rc=0
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
108 _pid=$(check_pidfile "$pidfile" "$procname")
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
109 if [ -n "${_pid}" ]; then
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
110 echo "VM ${_vm} is running as pid $_pid."
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
111 else
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
112 echo "VM ${_vm} is not running."
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
113 _rc=1
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
114 fi
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
115
665
24129dd789f0 Shellcheck for rc-scripts
Franz Glasner <fzglas.hg@dom66.de>
parents: 479
diff changeset
116 if ${command} has-session -t "${_session}" 2>/dev/null; then
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
117 echo "tmux session ${_session} exists."
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
118 if [ ${_rc} -gt 0 ]; then
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
119 _rc=2
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
120 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
121 else
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
122 echo "tmux session ${_session} does not exist."
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
123 if [ ${_rc} -gt 0 ]; then
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
124 _rc=2
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
125 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
126 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
127 return ${_rc}
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
128 }
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
129
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
130
475
827371176fec Formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 474
diff changeset
131 fbhyve_pre_start()
827371176fec Formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 474
diff changeset
132 {
477
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
133 local _level
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
134
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
135 if [ -z "${rc_force}" ]; then
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
136 _level="ERROR:"
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
137 else
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
138 _level="WARNING:"
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
139 fi
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
140 if ! load_kld -m vmm vmm.ko; then
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
141 echo "ERROR: Cannot load kernel module \`vmm'" 1>&2
477
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
142 [ -z "${rc_force}" ] && return 1
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
143 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
144 if [ -e "/dev/vmm/${_vm}" ]; then
477
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
145 echo "${_level} VM \`${_vm}' already created in the VM monitor" 1>&2
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
146 [ -z "${rc_force}" ] && return 1
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
147 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
148 if ${command} has-session -t "${_session}" 2>/dev/null; then
477
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
149 echo "${_level} tmux session \`${_session}' already exists" 1>&2
3f187ec5c4d9 Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents: 476
diff changeset
150 [ -z "${rc_force}" ] && return 1
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
151 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
152 return 0
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
153 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
154
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
155
475
827371176fec Formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 474
diff changeset
156 fbhyve_post_stop()
827371176fec Formatting
Franz Glasner <fzglas.hg@dom66.de>
parents: 474
diff changeset
157 {
474
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
158 if [ -e "/dev/vmm/${_vm}" ]; then
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
159 /usr/sbin/bhyvectl --vm="${_vm}" --destroy
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
160 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
161 if ${command} has-session -t "${_session}" 2>/dev/null; then
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
162 ${command} kill-session -t "${_session}"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
163 fi
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
164 rm -f "${pidfile}"
57f253106ed6 Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents: 467
diff changeset
165 return 0
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
166 }
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
167
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
168
476
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
169 fbhyve_kill()
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
170 {
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
171 # Just kill without terminating
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
172 if [ -e "/dev/vmm/${_vm}" ]; then
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
173 /usr/sbin/bhyvectl --vm="${_vm}" --force-poweroff 2>/dev/null 1>/dev/null
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
174 fi
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
175 # and do the normal cleanup
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
176 fbhyve_post_stop
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
177 }
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
178
c3ad1105c746 Implement a "kill" extra-commant for fbhyve to do an immediate poweroff of a VM
Franz Glasner <fzglas.hg@dom66.de>
parents: 475
diff changeset
179
464
f1e00e5b2f2d ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff changeset
180 run_rc_command "$1"