public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Doug Goldstein" <cardoe@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: app-emulation/libvirt/files/, app-emulation/libvirt/
Date: Mon, 14 Mar 2016 21:20:38 +0000 (UTC)	[thread overview]
Message-ID: <1457990352.8d5b9e4b342a1a8b1e750373c882260a4fd34a9d.cardoe@gentoo> (raw)

commit:     8d5b9e4b342a1a8b1e750373c882260a4fd34a9d
Author:     Doug Goldstein <cardoe <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 14 21:18:34 2016 +0000
Commit:     Doug Goldstein <cardoe <AT> gentoo <DOT> org>
CommitDate: Mon Mar 14 21:19:12 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8d5b9e4b

app-emulation/libvirt: fix libvirt-guests init script

The libvirt-guests script incorrectly 'needed' libvirt instead of 'used'.

Gentoo-Bug: 576750

Package-Manager: portage-2.2.26
Signed-off-by: Doug Goldstein <cardoe <AT> gentoo.org>

 app-emulation/libvirt/files/libvirt-guests.init-r2 | 235 +++++++++++++++++++++
 ...ibvirt-1.3.2.ebuild => libvirt-1.3.1-r1.ebuild} |   4 +-
 ...ibvirt-1.3.2.ebuild => libvirt-1.3.2-r1.ebuild} |   2 +-
 3 files changed, 238 insertions(+), 3 deletions(-)

diff --git a/app-emulation/libvirt/files/libvirt-guests.init-r2 b/app-emulation/libvirt/files/libvirt-guests.init-r2
new file mode 100644
index 0000000..ab2cf3d
--- /dev/null
+++ b/app-emulation/libvirt/files/libvirt-guests.init-r2
@@ -0,0 +1,235 @@
+#!/sbin/runscript
+
+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
+
+	do_virsh "${hvuri}" list --uuid $@
+}
+
+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
+		echo -n "."
+	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
+	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
+}

diff --git a/app-emulation/libvirt/libvirt-1.3.2.ebuild b/app-emulation/libvirt/libvirt-1.3.1-r1.ebuild
similarity index 98%
copy from app-emulation/libvirt/libvirt-1.3.2.ebuild
copy to app-emulation/libvirt/libvirt-1.3.1-r1.ebuild
index c963b6a..04ab3c9 100644
--- a/app-emulation/libvirt/libvirt-1.3.2.ebuild
+++ b/app-emulation/libvirt/libvirt-1.3.1-r1.ebuild
@@ -220,7 +220,7 @@ src_prepare() {
 	epatch \
 		"${FILESDIR}"/${PN}-1.3.0-do_not_use_sysconf.patch \
 		"${FILESDIR}"/${PN}-1.2.16-fix_paths_in_libvirt-guests_sh.patch \
-		"${FILESDIR}"/${PN}-1.3.1-fix_paths_for_apparmor.patch \
+		"${FILESDIR}"/${P}-fix_paths_for_apparmor.patch \
 		"${FILESDIR}"/${PN}-1.2.21-avoid_deprecated_pc_file.patch
 
 	[[ -n ${BACKPORTS} ]] &&
@@ -348,7 +348,7 @@ src_install() {
 	systemd_newtmpfilesd "${FILESDIR}"/libvirtd.tmpfiles.conf libvirtd.conf
 
 	newinitd "${S}/libvirtd.init" libvirtd || die
-	newinitd "${FILESDIR}/libvirt-guests.init-r1" libvirt-guests || die
+	newinitd "${FILESDIR}/libvirt-guests.init-r2" libvirt-guests || die
 	newinitd "${FILESDIR}/virtlockd.init-r1" virtlockd || die
 	newinitd "${FILESDIR}/virtlogd.init-r1" virtlogd || die
 

diff --git a/app-emulation/libvirt/libvirt-1.3.2.ebuild b/app-emulation/libvirt/libvirt-1.3.2-r1.ebuild
similarity index 99%
rename from app-emulation/libvirt/libvirt-1.3.2.ebuild
rename to app-emulation/libvirt/libvirt-1.3.2-r1.ebuild
index c963b6a..667ff6e 100644
--- a/app-emulation/libvirt/libvirt-1.3.2.ebuild
+++ b/app-emulation/libvirt/libvirt-1.3.2-r1.ebuild
@@ -348,7 +348,7 @@ src_install() {
 	systemd_newtmpfilesd "${FILESDIR}"/libvirtd.tmpfiles.conf libvirtd.conf
 
 	newinitd "${S}/libvirtd.init" libvirtd || die
-	newinitd "${FILESDIR}/libvirt-guests.init-r1" libvirt-guests || die
+	newinitd "${FILESDIR}/libvirt-guests.init-r2" libvirt-guests || die
 	newinitd "${FILESDIR}/virtlockd.init-r1" virtlockd || die
 	newinitd "${FILESDIR}/virtlogd.init-r1" virtlogd || die
 


             reply	other threads:[~2016-03-14 21:20 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-14 21:20 Doug Goldstein [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-09-21 22:28 [gentoo-commits] repo/gentoo:master commit in: app-emulation/libvirt/files/, app-emulation/libvirt/ John Helmert III
2024-07-07  7:39 Sam James
2024-05-10  7:54 Joonas Niilola
2023-11-22 11:38 Sam James
2023-10-04 17:46 Matthias Maier
2023-07-12  9:17 Sam James
2023-06-24  1:42 Sam James
2023-06-21 21:48 Matthias Maier
2023-05-10 19:42 Sam James
2023-03-21 19:19 Sam James
2023-03-21 19:19 Sam James
2022-10-28 19:15 Sam James
2022-04-03  4:36 Sam James
2022-03-08 13:18 Sam James
2022-01-25 12:33 Matthias Maier
2022-01-04 16:43 Matthias Maier
2021-12-08 21:14 Matthias Maier
2021-06-10 14:41 Matthias Maier
2021-04-20 14:10 Matthias Maier
2020-12-08 22:56 Sergei Trofimovich
2020-10-07 15:43 Matthias Maier
2020-10-01 23:47 Matthias Maier
2020-09-05  7:54 Joonas Niilola
2020-07-21 18:11 Marek Szuba
2020-04-11  1:54 Matthias Maier
2020-04-05 17:19 Matthias Maier
2019-08-30 16:09 Matthias Maier
2019-08-01 14:28 Matthias Maier
2019-05-09 19:33 William Hubbs
2019-03-17  7:27 Matthias Maier
2019-01-25 16:28 Matthias Maier
2019-01-13  2:18 Matthias Maier
2018-11-04  5:13 Matthias Maier
2018-03-24  2:25 Matthias Maier
2018-03-23 14:06 Matthias Maier
2018-03-14 18:18 Matthias Maier
2018-02-12 22:48 Matthias Maier
2018-01-30 17:55 Matthias Maier
2018-01-30 17:08 Matthias Maier
2018-01-30 17:08 Matthias Maier
2017-12-07 16:08 Matthias Maier
2017-11-15  0:22 Matthias Maier
2017-11-12 19:36 Matthias Maier
2017-10-25 19:48 Matthias Maier
2017-06-03 15:18 Matthias Maier
2017-03-04 21:39 Matthias Maier
2017-03-04 21:27 Matthias Maier
2017-01-22 18:36 Matthias Maier
2017-01-22 16:28 Matthias Maier
2016-07-09 21:01 Matthias Maier
2016-06-30 21:40 Matthias Maier
2016-06-30 16:18 Matthias Maier
2016-02-03  4:15 Matthias Maier
2015-12-26 23:02 Matthias Maier
2015-12-04  6:17 Matthias Maier
2015-10-03 18:16 Matthias Maier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1457990352.8d5b9e4b342a1a8b1e750373c882260a4fd34a9d.cardoe@gentoo \
    --to=cardoe@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox