virsh/virsh.plugin.zsh

113 lines
3.2 KiB
Bash

alias vla="virsh list --all"
alias vl="virsh list"
# Control LIBVIRT_DEFAULT_SESSION
function chcon() {
if [[ "$1" == "session" ]]; then
sed 's/^\(export LIBVIRT_DEFAULT_URI=\).*/\1"qemu:\/\/\/session"/' $ZDOTDIR/zshrc; fi
if [[ "$1" == "systen" ]]; then
sed 's/^\(export LIBVIRT_DEFAULT_URI=\).*/\1"qemu:\/\/\/system"/' $ZDOTDIR/zshrc; fi
if [[ "$1" == "virt" ]]; then
sed 's/^\(export LIBVIRT_DEFAULT_URI=\).*/\1"qemu:\/\/virt\/system"/' $ZDOTDIR/zshrc; fi
source $ZDOTDIR/zshrc
}
# virsh start
function vs() {
if [[ "$1" = "latest" ]]; then
source $ZSH/plugins/virsh/variables.zsh
for VM in ${PULL_VMS[@]}; do
virsh start $VM
done
else
for VM in "$@"; do
virsh start $VM
done
echo "declare -a PULL_VMS=($@)" > ~/.oh-my-zsh/plugins/virsh/variables.zsh
fi
}
# destroy
function vd() {
if [[ "$1" = "latest" ]]; then
source $ZSH/plugins/virsh/variables.zsh
for VM in ${PULL_VMS[@]}; do
virsh destroy $VM
done
else
for VM in "$@"; do
virsh destroy $VM
done
echo "declare -a PULL_VMS=($@)" > ~/.oh-my-zsh/plugins/virsh/variables.zsh
fi
}
# snapshot-revert --current
function vsr() {
if [[ "$1" = "latest" ]]; then
source $ZSH/plugins/virsh/variables.zsh
for VM in ${PULL_VMS[@]}; do
virsh snapshot-revert --current --domain $VM
done
else
for VM in "$@"; do
virsh snapshot-revert --current --domain $VM
done
echo "declare -a PULL_VMS=($@)" > ~/.oh-my-zsh/plugins/virsh/variables.zsh
fi
}
# snapshot-create
function vsc() {
if [[ "$1" = "latest" ]]; then
source $ZSH/plugins/virsh/variables.zsh
for VM in ${PULL_VMS[@]}; do
echo $VM
virsh snapshot-create-as --domain $VM --name "$(date +"%d-%m-%y-%H-%M")"
done
else
for VM in "$@"; do
virsh snapshot-create-as --domain $VM --name "$(date +"%d.%m.%y %H:%M")"
done
echo "declare -a PULL_VMS=($@)" > ~/.oh-my-zsh/plugins/virsh/variables.zsh
fi
}
# rewrite init snapshot
function ris() {
if [[ "$1" = "latest" ]]; then
source $ZSH/plugins/virsh/variables.zsh
for VM in ${PULL_VMS[@]}; do
echo $VM
virsh snapshot-delete --domain $VM --snapshotname _init > /dev/null
virsh snapshot-create-as --domain $VM --name "_init" > /dev/null
echo "Снимок _init домена $VM перезаписан\n"
done
else
for VM in "$@"; do
virsh snapshot-delete --domain $VM --snapshotname _init > /dev/null
virsh snapshot-create-as --domain $VM --name "_init" > /dev/null
echo "Снимок _init домена $VM перезаписан\n"
done
echo "declare -a PULL_VMS=($@)" > ~/.oh-my-zsh/plugins/virsh/variables.zsh
fi
}
# autocomplitions
function _domains_all {
local -a domains
domains=("${(@f)$(virsh list --all --name 2>/dev/null)}")
domains=(${domains:#})
(( $#domains )) && _describe -t domains 'libvirt domain' domains || _message 'Домены не найдены'
}
compdef _domains_all vs vsr vsc
function _domains_started {
local -a domains
domains=("${(@f)$(virsh list --name 2>/dev/null)}")
domains=(${domains:#})
(( $#domains )) && _describe -t domains 'libvirt domain' domains || _message 'Домены не найдены'
}
compdef _domains_started vd