mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-05-22 04:51:12 +02:00
160 lines
4.4 KiB
Text
160 lines
4.4 KiB
Text
#compdef lxc-start lxc-stop lxc-console lxc-restart lxc-create lxc-destroy lxc-monitor lxc-cgroup lxc-checkpoint lxc-execute lxc-freeze lxc-unfreeze lxc-info lxc-netstat lxc-ps lxc-wait
|
|
#=====================================================================================================
|
|
# Copied from https://gist.github.com/sabottenda/9870189/e0c4d5b999441d0c67562b068ebdf79ea8374773
|
|
# original source is here: https://lists.linuxcontainers.org/pipermail/lxc-devel/2010-April/001172.html
|
|
#=====================================================================================================
|
|
|
|
|
|
_lxc_containers() {
|
|
local -a containers
|
|
containers=( $(/bin/ls /var/lib/lxc) )
|
|
compadd "$@" -a containers
|
|
}
|
|
|
|
|
|
_lxc_common_opts=(
|
|
'(-o --logfile)'{-o,--logfile=}'[Output log to FILE instead of stderr]:logfile:_files'
|
|
'(-l --logpriority)'{-l,--logpriority=}'[Set log priority to LEVEL]:level:'
|
|
'(-q --quiet)'{-q,--quiet}'[Dont produce any output]'
|
|
'(-h --help)'{-h,--help}'[Help list]'
|
|
'--usage[Give a short usage message]'
|
|
)
|
|
|
|
_lxc_name_opt=(
|
|
'(-n --name)'{-n,--name=}'[Name of the container]:name:_lxc_containers'
|
|
)
|
|
|
|
_lxc_start_opts=(
|
|
'(-d --daemon)'{-d,--daemon}'[Daemonize the container]'
|
|
'(-f --rcfile)'{-f,--rcfile=}'[Load configuration file FILE]:config:_files'
|
|
'(-s --define)'{-s,--define}'[Assign VAL to configuration variable KEY]'
|
|
)
|
|
|
|
_lxc_console_opts=(
|
|
'(-t --tty)'{-t,--tty=}'[Console TTY number]'
|
|
'(-e --escape)'{-e,--escape=}'[Prefix for escape command]'
|
|
)
|
|
|
|
_lxc_restart_opts=(
|
|
'(-p --pause)'{-p,--pause}'[Do not release the container after the restart]'
|
|
'(-d --directory)'{-d,--directory=}'[Name of statefile]:name:_files'
|
|
'(-f --rcfile)'{-f,--rcfile=}'[Load configuration file FILE]:config:_files'
|
|
'(-s --define)'{-s,--define}'[Assign VAL to configuration variable KEY]'
|
|
)
|
|
|
|
_lxc_create_opts=(
|
|
'(-n --name)'{-n,--name=}'[Name of the container]:name'
|
|
'(-f --config)'{-f,--config=}'[Load configuration file FILE]:config:_files'
|
|
'(-t --template)'{-t,--template=}'[LXC template script]:tpl:_files'
|
|
'(-h --help)'{-h,--help}'[Help list]'
|
|
)
|
|
|
|
_lxc_checkpoint_opts=(
|
|
'(-k --kill)'{-k,--kill}'[Stop the container after the checkpoint]'
|
|
'(-p --pause)'{-p,--pause}'[Dont unfreeze the container after the checkpoint]'
|
|
'(-d --directory)'{-d,--directory=}'[Where to store the statefile]:statefile:_files'
|
|
)
|
|
|
|
_lxc_execute_opts=(
|
|
'(-f --rcfile)'{-f,--rcfile=}'[Load configuration file FILE]:config:_files'
|
|
'(-s --define)'{-s,--define}'[Assign VAL to configuration variable KEY]'
|
|
)
|
|
|
|
_lxc_ps_opts=(
|
|
'--help[Display the help]'
|
|
'--usage[Display the command usage]'
|
|
'--name[Display processes related to given containers. Containers are identified by a comma separated list of their names.]'
|
|
'--lxc[Display processes related to all LXC containers]'
|
|
)
|
|
|
|
_lxc_wait_opts=(
|
|
'(-s --state)'{-s,--state=}'[ORed states to wait for: STOPPED, STARTING, RUNNING, STOPPING, ABORTING, FREEZING, FROZEN]:state'
|
|
)
|
|
|
|
# Dispatcher
|
|
|
|
_lxc() {
|
|
case "$service" in
|
|
lxc-start)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_start_opts[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-stop)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_common_opts[@]" \
|
|
;;
|
|
lxc-console)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_console_opts[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-restart)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_restart_opts[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-create)
|
|
_arguments -s : "$_lxc_create_opts[@]"
|
|
;;
|
|
lxc-destroy)
|
|
_arguments -s : "$_lxc_name_opt[@]"
|
|
;;
|
|
lxc-monitor)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-cgroup)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-checkpoint)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_checkpoint_opts[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-execute)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_execute_opts[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-freeze)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-unfreeze)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-info)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_common_opts[@]"
|
|
;;
|
|
lxc-netstat)
|
|
_arguments -s : "$_lxc_name_opt[@]"
|
|
;;
|
|
lxc-ps)
|
|
_arguments -s : "$_lxc_ps_opts[@]"
|
|
;;
|
|
lxc-wait)
|
|
_arguments -s : \
|
|
"$_lxc_name_opt[@]" \
|
|
"$_lxc_wait_opts[@]"
|
|
;;
|
|
*)
|
|
return 1
|
|
esac
|
|
}
|
|
|
|
_lxc "$@"
|