Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
annotate files/fbhyve.in @ 649:4ee9a8042f4a
common.subr: _get_jail_from_path() now just returns when the jail is dying.
But it prints the name of the jail if it is yet dying.
Real error reporting must not consistently be done in the caller.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 27 Sep 2024 21:21:34 +0200 |
| parents | 30ba5e272030 |
| children | 24129dd789f0 |
| 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 |
|
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
31 . /etc/rc.subr |
|
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
32 |
|
467
6ecd16725818
Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents:
465
diff
changeset
|
33 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
|
34 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
|
35 rcvar="fbhyve_enable" |
|
464
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
36 |
|
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
|
37 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
|
38 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
|
39 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
|
40 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
|
41 kill_cmd="fbhyve_kill" |
|
464
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
42 |
|
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
43 |
|
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
44 load_rc_config $name |
|
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
45 |
|
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
|
46 : ${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
|
47 : ${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
|
48 : ${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
|
49 : ${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
|
50 |
|
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 |
| 475 | 52 _fbhyve_vm_exists() |
| 53 { | |
|
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
|
54 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
|
55 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
|
56 [ "${_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
|
57 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
|
58 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
|
59 } |
|
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 |
|
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 |
|
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 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
|
63 _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
|
64 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
|
65 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
|
66 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
|
67 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
|
68 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
|
69 _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
|
70 _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
|
71 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
|
72 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
|
73 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
|
74 _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
|
75 _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
|
76 _vmlist=${_vmarglist:-${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
|
77 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
|
78 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
|
79 "$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
|
80 _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
|
81 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
|
82 _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
|
83 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
|
84 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
|
85 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
|
86 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
|
87 |
|
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 _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
|
89 pidfile="${_rundir}/${_vm}.pid" |
|
479
30ba5e272030
fbhyve: put tmux into the required_files
Franz Glasner <fzglas.hg@dom66.de>
parents:
477
diff
changeset
|
90 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
|
91 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
|
92 |
|
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 required_dirs="${_rundir}" |
|
479
30ba5e272030
fbhyve: put tmux into the required_files
Franz Glasner <fzglas.hg@dom66.de>
parents:
477
diff
changeset
|
94 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
|
95 |
|
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 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
|
97 |
|
6ecd16725818
Begin refactoring bhyve into fbhyve.
Franz Glasner <fzglas.hg@dom66.de>
parents:
465
diff
changeset
|
98 |
|
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 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
|
100 { |
|
57f253106ed6
Implement fbhyve, a management system that runs bhyve virtual machines within tmux sessions
Franz Glasner <fzglas.hg@dom66.de>
parents:
467
diff
changeset
|
101 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
|
102 |
|
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 _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
|
104 _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
|
105 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
|
106 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
|
107 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
|
108 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
|
109 _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
|
110 fi |
|
464
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
111 |
|
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
|
112 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
|
113 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
|
114 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
|
115 _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
|
116 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
|
117 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
|
118 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
|
119 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
|
120 _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
|
121 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
|
122 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
|
123 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
|
124 } |
|
464
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
125 |
|
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
126 |
| 475 | 127 fbhyve_pre_start() |
| 128 { | |
|
477
3f187ec5c4d9
Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents:
476
diff
changeset
|
129 local _level |
|
3f187ec5c4d9
Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents:
476
diff
changeset
|
130 |
|
3f187ec5c4d9
Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents:
476
diff
changeset
|
131 if [ -z "${rc_force}" ]; then |
|
3f187ec5c4d9
Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents:
476
diff
changeset
|
132 _level="ERROR:" |
|
3f187ec5c4d9
Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents:
476
diff
changeset
|
133 else |
|
3f187ec5c4d9
Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents:
476
diff
changeset
|
134 _level="WARNING:" |
|
3f187ec5c4d9
Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents:
476
diff
changeset
|
135 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
|
136 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
|
137 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
|
138 [ -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
|
139 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
|
140 if [ -e "/dev/vmm/${_vm}" ]; then |
|
477
3f187ec5c4d9
Extra support for "forcestart" in fbhyve
Franz Glasner <fzglas.hg@dom66.de>
parents:
476
diff
changeset
|
141 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
|
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 ${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
|
145 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
|
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 return 0 |
|
464
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
149 } |
|
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
150 |
|
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 |
| 475 | 152 fbhyve_post_stop() |
| 153 { | |
|
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
|
154 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
|
155 /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
|
156 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
|
157 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
|
158 ${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
|
159 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
|
160 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
|
161 return 0 |
|
464
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
162 } |
|
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
163 |
|
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
164 |
|
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
|
165 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
|
166 { |
|
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
|
167 # 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
|
168 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
|
169 /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
|
170 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
|
171 # 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
|
172 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
|
173 } |
|
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 |
|
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 |
|
464
f1e00e5b2f2d
ADD: the new original code from bhyve-rc.
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
176 run_rc_command "$1" |
