Adding python3.10, podman
This commit is contained in:
49
app-emulation/libvirt/files/README.gentoo-r3
Normal file
49
app-emulation/libvirt/files/README.gentoo-r3
Normal file
@ -0,0 +1,49 @@
|
||||
Important: The openrc libvirtd init script is now broken up into two
|
||||
separate services: libvirtd, that solely handles the daemon, and
|
||||
libvirt-guests, that takes care of clients during shutdown/restart of the
|
||||
host. In order to reenable client handling, edit /etc/conf.d/libvirt-guests
|
||||
and enable the service and start it:
|
||||
|
||||
$ rc-update add libvirt-guests
|
||||
$ service libvirt-guests start
|
||||
|
||||
|
||||
For the basic networking support (bridged and routed networks) you don't
|
||||
need any extra software. For more complex network modes including but not
|
||||
limited to NATed network, you can enable the 'virt-network' USE flag. It
|
||||
will pull in required runtime dependencies
|
||||
|
||||
|
||||
If you are using dnsmasq on your system, you will have to configure
|
||||
/etc/dnsmasq.conf to enable the following settings:
|
||||
|
||||
bind-interfaces
|
||||
interface or except-interface
|
||||
|
||||
Otherwise you might have issues with your existing DNS server.
|
||||
|
||||
|
||||
For openrc users:
|
||||
|
||||
Please use /etc/conf.d/libvirtd to control the '--listen' parameter for
|
||||
libvirtd.
|
||||
|
||||
Use /etc/init.d/libvirt-guests to manage clients on restart/shutdown of
|
||||
the host. The default configuration will suspend and resume running kvm
|
||||
guests with 'managedsave'. This behavior can be changed under
|
||||
/etc/conf.d/libvirt-guests
|
||||
|
||||
|
||||
If you have built libvirt with policykit support, a new group "libvirt" has
|
||||
been created. Simply add a user to the libvirt group in order to grant
|
||||
administrative access to libvirtd. Alternatively, drop a custom policykit
|
||||
rule into /etc/polkit-1/rules.d.
|
||||
|
||||
If you have built libvirt without policykit support (USE=-policykit), you
|
||||
must change the unix sock group and/or perms in /etc/libvirt/libvirtd.conf
|
||||
in order to allow normal users to connect to libvirtd.
|
||||
|
||||
|
||||
If libvirt is built with USE=caps, libvirt will now start qemu/kvm VMs
|
||||
with non-root privileges. Ensure any resources your VMs use are accessible
|
||||
by qemu:qemu.
|
68
app-emulation/libvirt/files/libvirt-guests.confd
Normal file
68
app-emulation/libvirt/files/libvirt-guests.confd
Normal file
@ -0,0 +1,68 @@
|
||||
# /etc/conf.d/libvirtd
|
||||
|
||||
# LIBVIRT_URIS
|
||||
# space separated list of libvirt URIs to communicate with to start/stop guests
|
||||
# Valid values are anything that can be passed to 'virsh connect'
|
||||
|
||||
#LIBVIRT_URIS="qemu:///system"
|
||||
|
||||
|
||||
# LIBVIRT_SHUTDOWN
|
||||
# Valid options:
|
||||
# * managedsave - Performs a state save external to the VM (for hypervisors
|
||||
# supporting this operation). qemu-kvm will stop the CPU
|
||||
# and save off all state to a separate file. When the
|
||||
# machine is started again, it will resume like nothing
|
||||
# ever happened. This is guarenteed to always successfully
|
||||
# stop your machine and restart it.
|
||||
#
|
||||
# * shutdown - Sends an ACPI shutdown (think of this as a request to
|
||||
# your guest to shutdown). There is no way to distinguish
|
||||
# between guests that are ignoring the shutdown request or
|
||||
# are stuck or are taking a long time to shutdown. We will
|
||||
# wait LIBVIRT_MAXWAIT seconds before yanking the power
|
||||
# out.
|
||||
#
|
||||
# * destroy - Immediately stop all running guests. Use with caution as
|
||||
# this can leave the guest in a corrupted state and might
|
||||
# lead to data loss.
|
||||
#
|
||||
|
||||
#LIBVIRT_SHUTDOWN="managedsave"
|
||||
|
||||
|
||||
# LIBVIRT_MAXWAIT
|
||||
# Timeout in seconds until stopping a guest and "pulling the plug" on the
|
||||
# guest
|
||||
# Valid values are any integer over 0
|
||||
|
||||
#LIBVIRT_MAXWAIT="500"
|
||||
|
||||
|
||||
# LIBVIRT_START
|
||||
# If this value is set to 'no', then guests and networks that were shutdown
|
||||
# by this script when it was stopped will not be started when it is started
|
||||
# back up.
|
||||
# Valid values are yes or no
|
||||
|
||||
#LIBVIRT_START="yes"
|
||||
|
||||
|
||||
# LIBVIRT_IGNORE_AUTOSTART
|
||||
# If the VM is marked for autostart in its XML configuration then we won't
|
||||
# save its start when the init script is stopped. The result is that when
|
||||
# the init script starts back up, no attempt will be made to start the VM or
|
||||
# confirm it is started.
|
||||
# Valid values are yes or no
|
||||
|
||||
#LIBVIRT_IGNORE_AUTOSTART="no"
|
||||
|
||||
|
||||
# LIBVIRT_NET_SHUTDOWN
|
||||
# If libvirtd created networks for you (e.g. NATed networks) then this init
|
||||
# script will shut them down for you if this is set to 'yes'. Otherwise,
|
||||
# the networks will be left running. For this option to be useful you must
|
||||
# have enabled the 'virt-network' USE flag and have had libvirt create a
|
||||
# NATed network for you. Valid values: 'yes' or 'no'
|
||||
|
||||
#LIBVIRT_NET_SHUTDOWN="yes"
|
237
app-emulation/libvirt/files/libvirt-guests.init-r4
Normal file
237
app-emulation/libvirt/files/libvirt-guests.init-r4
Normal file
@ -0,0 +1,237 @@
|
||||
#!/sbin/openrc-run
|
||||
|
||||
description="Virtual Machine Management (libvirt) Guests"
|
||||
|
||||
depend() {
|
||||
use libvirtd
|
||||
}
|
||||
|
||||
# set the default to QEMU
|
||||
[ -z "${LIBVIRT_URIS}" ] && LIBVIRT_URIS="qemu:///system"
|
||||
|
||||
# default to suspending the VM via managedsave
|
||||
case "${LIBVIRT_SHUTDOWN}" in
|
||||
managedsave|shutdown|destroy) ;;
|
||||
*) LIBVIRT_SHUTDOWN="managedsave" ;;
|
||||
esac
|
||||
|
||||
# default to 500 seconds
|
||||
[ -z ${LIBVIRT_MAXWAIT} ] && LIBVIRT_MAXWAIT=500
|
||||
|
||||
gueststatefile="/var/lib/libvirt/libvirt-guests.state"
|
||||
netstatefile="/var/lib/libvirt/libvirt-net.state"
|
||||
|
||||
do_virsh() {
|
||||
local hvuri=$1
|
||||
shift
|
||||
|
||||
# if unset, default to qemu
|
||||
[ -z ${hvuri} ] && hvuri="qemu:///system"
|
||||
# if only qemu was supplied then correct the value
|
||||
[ "xqemu" = x${hvuri} ] && hvuri="qemu:///system"
|
||||
|
||||
# Silence errors because virsh always throws an error about
|
||||
# not finding the hypervisor version when connecting to libvirtd
|
||||
# lastly strip the blank line at the end
|
||||
LC_ALL=C virsh -c ${hvuri} "$@" 2>/dev/null | head -n -1
|
||||
}
|
||||
|
||||
libvirtd_dom_list() {
|
||||
# Only work with domains by their UUIDs
|
||||
local hvuri=$1
|
||||
shift
|
||||
|
||||
# The grep is to remove dom0 for xen domains. Otherwise we never hit 0
|
||||
do_virsh "${hvuri}" list --uuid $@ | grep -v 00000000-0000-0000-0000-000000000000
|
||||
}
|
||||
|
||||
libvirtd_dom_count() {
|
||||
local hvuri=$1
|
||||
shift
|
||||
|
||||
libvirtd_dom_list "${hvuri}" $@ | wc -l
|
||||
}
|
||||
|
||||
libvirtd_net_list() {
|
||||
# Only work with networks by their UUIDs
|
||||
local hvuri=$1
|
||||
shift
|
||||
|
||||
do_virsh "${hvuri}" net-list --uuid $@
|
||||
}
|
||||
|
||||
libvirtd_net_count() {
|
||||
local hvuri=$1
|
||||
shift
|
||||
|
||||
libvirtd_net_list "${hvuri}" $@ | wc -l
|
||||
}
|
||||
|
||||
libvirtd_dom_stop() {
|
||||
# stops all persistent or transient domains for a given URI
|
||||
# $1 - uri
|
||||
# $2 - persisent/transient
|
||||
|
||||
local uri=$1
|
||||
local persist=$2
|
||||
local shutdown_type=${LIBVIRT_SHUTDOWN}
|
||||
local counter=${LIBVIRT_MAXWAIT}
|
||||
local dom_name=
|
||||
local dom_as=
|
||||
local dom_ids=
|
||||
local uuid=
|
||||
local dom_count=
|
||||
|
||||
[ "${persist}" = "--transient" ] && shutdown_type="shutdown"
|
||||
[ -n "${counter}" ] || counter=500
|
||||
|
||||
einfo " Shutting down domain(s) ..."
|
||||
|
||||
# grab all persistent or transient domains running
|
||||
dom_ids=$(libvirtd_dom_list ${uri} ${persist})
|
||||
|
||||
for uuid in ${dom_ids}; do
|
||||
# Get the name
|
||||
dom_name=$(do_virsh ${uri} domname ${uuid})
|
||||
einfo " ${dom_name}"
|
||||
# Get autostart state
|
||||
dom_as=$(do_virsh ${uri} dominfo ${uuid} | \
|
||||
awk '$1 == "Autostart:" { print $2 }')
|
||||
|
||||
if [ "${persist}" = "--persistent" ]; then
|
||||
# Save our running state only if LIBVIRT_IGNORE_AUTOSTART != yes
|
||||
if [ "x${LIBVIRT_IGNORE_AUTOSTART}" = "xyes" ] && \
|
||||
[ ${dom_as} = "enabled" ]; then
|
||||
:
|
||||
else
|
||||
echo "${uri} ${uuid}" >> ${gueststatefile}
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# Now let's stop it
|
||||
do_virsh "${uri}" ${shutdown_type} ${uuid} > /dev/null
|
||||
|
||||
done
|
||||
|
||||
dom_count="$(libvirtd_dom_count ${uri} ${persist})"
|
||||
while [ ${dom_count} -gt 0 ] && [ ${counter} -gt 0 ] ; do
|
||||
dom_count="$(libvirtd_dom_count ${uri} ${persist})"
|
||||
sleep 1
|
||||
if [ "${shutdown_type}" = "shutdown" ]; then
|
||||
counter=$((${counter} - 1))
|
||||
fi
|
||||
printf "."
|
||||
done
|
||||
|
||||
if [ "${shutdown_type}" = "shutdown" ]; then
|
||||
# grab all domains still running
|
||||
dom_ids=$(libvirtd_dom_list ${uri} ${persist})
|
||||
for uuid in ${dom_ids}; do
|
||||
dom_name=$(do_virsh ${uri} domname ${uuid})
|
||||
eerror " ${dom_name} forcibly stopped"
|
||||
do_virsh "${uri}" destroy ${uuid} > /dev/null
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
libvirtd_net_stop() {
|
||||
# stops all persistent or transient domains for a given URI
|
||||
# $1 - uri
|
||||
# $2 - persisent/transient
|
||||
|
||||
local uri=$1
|
||||
local persist=$2
|
||||
local uuid=
|
||||
local net_name=
|
||||
|
||||
if [ "${LIBVIRT_NET_SHUTDOWN}" != "no" ]; then
|
||||
|
||||
einfo " Shutting down network(s):"
|
||||
for uuid in $(libvirtd_net_list ${uri} ${persist}); do
|
||||
net_name=$(do_virsh ${uri} net-name ${uuid})
|
||||
einfo " ${net_name}"
|
||||
|
||||
if [ "${persist}" = "--persistent" ]; then
|
||||
# Save our running state
|
||||
echo "${uri} ${uuid}" >> ${netstatefile}
|
||||
|
||||
fi
|
||||
|
||||
# Actually stop the network
|
||||
do_virsh qemu net-destroy ${uuid} > /dev/null
|
||||
done
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
start() {
|
||||
local uri=
|
||||
local uuid=
|
||||
local name=
|
||||
|
||||
for uri in ${LIBVIRT_URIS}; do
|
||||
do_virsh "${uri}" connect
|
||||
if [ $? -ne 0 ]; then
|
||||
eerror "Failed to connect to '${uri}'. Domains may not start."
|
||||
fi
|
||||
done
|
||||
|
||||
[ ! -e "${netstatefile}" ] && touch "${netstatefile}"
|
||||
[ ! -e "${gueststatefile}" ] && touch "${gueststatefile}"
|
||||
|
||||
# if the user didn't want to start any guests up then respect their wish
|
||||
[ "x${LIBVIRT_START}" = "xno" ] && return 0
|
||||
|
||||
# start networks
|
||||
ebegin "Starting libvirt networks"
|
||||
while read -r uri uuid
|
||||
do
|
||||
# ignore trash
|
||||
[ -z "${uri}" ] || [ -z "${uuid}" ] && continue
|
||||
|
||||
name=$(do_virsh "${uri}" net-name ${uuid})
|
||||
einfo " ${name}"
|
||||
do_virsh "${uri}" net-start ${uuid} > /dev/null
|
||||
done <"${netstatefile}"
|
||||
eend 0
|
||||
|
||||
# start domains
|
||||
ebegin "Starting libvirt domains"
|
||||
while read -r uri uuid
|
||||
do
|
||||
# ignore trash
|
||||
[ -z "${uri}" ] || [ -z "${uuid}" ] && continue
|
||||
|
||||
name=$(do_virsh "${uri}" domname ${uuid})
|
||||
einfo " ${name}"
|
||||
do_virsh "${uri}" start ${uuid} > /dev/null
|
||||
do_virsh "${uri}" domtime --sync ${uuid} > /dev/null
|
||||
done <"${gueststatefile}"
|
||||
eend 0
|
||||
}
|
||||
|
||||
stop() {
|
||||
local counter=
|
||||
local dom_name=
|
||||
local net_name=
|
||||
local dom_ids=
|
||||
local uuid=
|
||||
local dom_count=
|
||||
|
||||
rm -f "${gueststatefile}"
|
||||
[ $? -ne 0 ] && eerror "Unable to save domain state"
|
||||
rm -f "${netstatefile}"
|
||||
[ $? -ne 0 ] && eerror "Unable to save net state"
|
||||
|
||||
for uri in ${LIBVIRT_URIS}; do
|
||||
einfo "Stopping libvirt domains and networks for ${uri}"
|
||||
|
||||
libvirtd_dom_stop "${uri}" "--persistent"
|
||||
libvirtd_dom_stop "${uri}" "--transient"
|
||||
libvirtd_net_stop "${uri}" "--persistent"
|
||||
libvirtd_net_stop "${uri}" "--transient"
|
||||
|
||||
einfo "Done stopping domains and networks for ${uri}"
|
||||
done
|
||||
}
|
18
app-emulation/libvirt/files/libvirtd.confd-r5
Normal file
18
app-emulation/libvirt/files/libvirtd.confd-r5
Normal file
@ -0,0 +1,18 @@
|
||||
# /etc/conf.d/libvirtd
|
||||
|
||||
# Startup dependency
|
||||
# libvirtd typically requires all networks to be up and settled which
|
||||
# is what rc_need="net" provides. However if you only use specific networks
|
||||
# for libvirtd, you may override this. Or if you only use libvirtd locally.
|
||||
rc_need="net"
|
||||
|
||||
# The termination timeout (start-stop-daemon parameter "retry") ensures
|
||||
# that the service will be terminated within a given time (25 + 5 seconds
|
||||
# per default) when you are stopping the service.
|
||||
#LIBVIRTD_TERMTIMEOUT="TERM/25/KILL/5"
|
||||
|
||||
# LIBVIRTD_OPTS
|
||||
# You may want to add '--listen' to have libvirtd listen for tcp/ip connections
|
||||
# if you want to use libvirt for remote control
|
||||
# Please consult 'libvirtd --help' for more options
|
||||
#LIBVIRTD_OPTS="--listen"
|
33
app-emulation/libvirt/files/libvirtd.init-r19
Normal file
33
app-emulation/libvirt/files/libvirtd.init-r19
Normal file
@ -0,0 +1,33 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
description="Virtual Machine Management daemon (libvirt)"
|
||||
|
||||
LIBVIRTD_OPTS=${LIBVIRTD_OPTS:-"${LIBVIRTD_OPTS}"}
|
||||
LIBVIRTD_TIMEOUT=${LIBVIRTD_TERMTIMEOUT:-"TERM/25/KILL/5"}
|
||||
|
||||
command="/usr/sbin/libvirtd"
|
||||
command_args="${LIBVIRTD_OPTS}"
|
||||
start_stop_daemon_args="-b --env KRB5_KTNAME=/etc/libvirt/krb5.tab"
|
||||
pidfile="/run/libvirtd.pid"
|
||||
retry="${LIBVIRTD_TERMTIMEOUT}"
|
||||
|
||||
depend() {
|
||||
need virtlogd
|
||||
use ceph dbus iscsid virtlockd
|
||||
after cgconfig corosync ebtables iptables ip6tables nfs nfsmount ntp-client ntpdportmap rpc.statd sanlock xenconsoled
|
||||
USE_FLAG_FIREWALLD
|
||||
}
|
||||
|
||||
start_pre() {
|
||||
# Test configuration directories in /etc/libvirt/ to be either not
|
||||
# present or a directory, i.e. not a regular file, bug #532892
|
||||
|
||||
checkpath --directory /etc/libvirt/lxc || return 1
|
||||
checkpath --directory /etc/libvirt/nwfilter || return 1
|
||||
[ -L /etc/libvirt/qemu ] ||
|
||||
checkpath --directory /etc/libvirt/qemu || return 1
|
||||
[ -L /etc/libvirt/storage ] ||
|
||||
checkpath --directory /etc/libvirt/storage || return 1
|
||||
}
|
1
app-emulation/libvirt/files/libvirtd.tmpfiles.conf
Normal file
1
app-emulation/libvirt/files/libvirtd.tmpfiles.conf
Normal file
@ -0,0 +1 @@
|
||||
d /run/libvirt/lxc 0755 root root -
|
23
app-emulation/libvirt/files/virtlockd.init-r2
Normal file
23
app-emulation/libvirt/files/virtlockd.init-r2
Normal file
@ -0,0 +1,23 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
description="libvirt virtual machine lock manager"
|
||||
command="/usr/sbin/virtlockd"
|
||||
start_stop_daemon_args="-b"
|
||||
pidfile="/run/virtlockd.pid"
|
||||
|
||||
extra_started_commands="reload"
|
||||
description_reload="re-exec the daemon, while maintaining locks and clients"
|
||||
|
||||
|
||||
depend() {
|
||||
after ntp-client ntpd nfs nfsmount corosync
|
||||
}
|
||||
|
||||
reload() {
|
||||
ebegin "re-exec() virtlockd"
|
||||
|
||||
start-stop-daemon --signal SIGUSR1 \
|
||||
--exec "${command}" --pidfile "${pidfile}"
|
||||
}
|
23
app-emulation/libvirt/files/virtlogd.init-r2
Normal file
23
app-emulation/libvirt/files/virtlogd.init-r2
Normal file
@ -0,0 +1,23 @@
|
||||
#!/sbin/openrc-run
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
description="libvirt virtual machine logging manager"
|
||||
command="/usr/sbin/virtlogd"
|
||||
start_stop_daemon_args="-b"
|
||||
pidfile="/run/virtlogd.pid"
|
||||
|
||||
extra_started_commands="reload"
|
||||
description_reload="re-exec the daemon, while maintaining open connections"
|
||||
|
||||
|
||||
depend() {
|
||||
after ntp-client ntpd nfs nfsmount corosync
|
||||
}
|
||||
|
||||
reload() {
|
||||
ebegin "re-exec() virtlogd"
|
||||
|
||||
start-stop-daemon --signal SIGUSR1 \
|
||||
--exec "${command}" --pidfile "${pidfile}"
|
||||
}
|
Reference in New Issue
Block a user