[libvirt-qmf/f16] convert to systemd

Tom Callaway spot at fedoraproject.org
Mon Sep 12 14:39:48 UTC 2011


commit 524ac89664bd57ccfbf8de9e6b69308516f4e25a
Author: Tom "spot" Callaway <tcallawa at redhat.com>
Date:   Mon Sep 12 10:39:35 2011 -0400

    convert to systemd

 bz729127-1-init-variables.patch |   25 +++++++++++++
 domain-prop-init.patch          |   24 ++++++++++++
 err_msgs.patch                  |   52 ++++++++++++++++++++++++++
 libvirt-qmf.service             |   10 +++++
 libvirt-qmf.spec                |   77 +++++++++++++++++++++++++++------------
 5 files changed, 164 insertions(+), 24 deletions(-)
---
diff --git a/bz729127-1-init-variables.patch b/bz729127-1-init-variables.patch
new file mode 100644
index 0000000..ac3a744
--- /dev/null
+++ b/bz729127-1-init-variables.patch
@@ -0,0 +1,25 @@
+commit c82cde7fc6ffbb892ccaf47af14c9fb379c40b9e
+Author: Zane Bitter <zbitter at redhat.com>
+Date:   Tue Aug 9 11:45:42 2011 +0200
+
+    rhbz#729127: Fix argument passing in init script
+    
+    Signed-off-by: Zane Bitter <zbitter at redhat.com>
+
+diff --git a/libvirt-qmf.init.in b/libvirt-qmf.init.in
+index d5a6add..2fc00c7 100755
+--- a/libvirt-qmf.init.in
++++ b/libvirt-qmf.init.in
+@@ -33,10 +33,10 @@ start() {
+     echo -n $"Starting the $SERVICE daemon: "
+     ARGS=--daemon
+     if [ -n "$MATAHARI_PORT" ]; then
+-        ARGS=--port $MATAHARI_PORT $ARGS
++        ARGS="--port $MATAHARI_PORT $ARGS"
+     fi
+     if [ -n "$MATAHARI_BROKER" ]; then
+-        ARGS=--broker $MATAHARI_BROKER $ARGS
++        ARGS="--broker $MATAHARI_BROKER $ARGS"
+     fi
+     daemon $PROCESS $ARGS $MATAHARI_AGENT_ARGS
+     RETVAL=$?
diff --git a/domain-prop-init.patch b/domain-prop-init.patch
new file mode 100644
index 0000000..16506ad
--- /dev/null
+++ b/domain-prop-init.patch
@@ -0,0 +1,24 @@
+commit 455de3443be8194e2d22dcd397d8f30b94fd10ad
+Author: Zane Bitter <zbitter at redhat.com>
+Date:   Mon Aug 8 14:14:53 2011 +0200
+
+    Initialise all properties at object creation
+    
+    Signed-off-by: Zane Bitter <zbitter at redhat.com>
+
+diff --git a/src/DomainWrap.cpp b/src/DomainWrap.cpp
+index 87244f2..d912661 100644
+--- a/src/DomainWrap.cpp
++++ b/src/DomainWrap.cpp
+@@ -37,8 +37,10 @@ DomainWrap::DomainWrap(
+     _data.setProperty("node", parent->objectID());
+ 
+     // Set defaults
+-    _data.setProperty("state", "");
++    _data.setProperty("id", -1);
++    _data.setProperty("state", "nostate");
+     _data.setProperty("numVcpus", 0);
++    _data.setProperty("active", "false");
+     _data.setProperty("maximumMemory", (uint64_t)0);
+     _data.setProperty("memory", (uint64_t)0);
+     _data.setProperty("cpuTime", (uint64_t)0);
diff --git a/err_msgs.patch b/err_msgs.patch
new file mode 100644
index 0000000..d0c9c2c
--- /dev/null
+++ b/err_msgs.patch
@@ -0,0 +1,52 @@
+commit 77b628613c072a13359576ca9e700caabee7aafb
+Author: Zane Bitter <zbitter at redhat.com>
+Date:   Mon Aug 8 16:04:24 2011 +0200
+
+    Correct various error messages
+    
+    Signed-off-by: Zane Bitter <zbitter at redhat.com>
+
+diff --git a/src/DomainWrap.cpp b/src/DomainWrap.cpp
+index d912661..c458646 100644
+--- a/src/DomainWrap.cpp
++++ b/src/DomainWrap.cpp
+@@ -198,7 +198,7 @@ DomainWrap::handleMethod(qmf::AgentSession& session, qmf::AgentEvent& event)
+         int ret = virDomainRestore(_conn, filename.c_str());
+         update();
+         if (ret < 0) {
+-            std::string err = FORMAT_ERR(_conn, "Error saving domain (virDomainSave).", &ret);
++            std::string err = FORMAT_ERR(_conn, "Error restoring domain (virDomainRestore).", &ret);
+             raiseException(session, event, err, STATUS_USER + ret);
+         } else {
+             session.methodSuccess(event);
+@@ -234,7 +234,7 @@ DomainWrap::handleMethod(qmf::AgentSession& session, qmf::AgentEvent& event)
+         const char *desc = virDomainGetXMLDesc(_domain_ptr,
+                 VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_INACTIVE);
+         if (!desc) {
+-            std::string err = FORMAT_ERR(_conn, "Error rebooting domain (virDomainReboot).", &ret);
++            std::string err = FORMAT_ERR(_conn, "Error getting XML description of domain (virDomainGetXMLDesc).", &ret);
+             raiseException(session, event, err, STATUS_USER + ret);
+         } else {
+             event.addReturnArgument("description", desc);
+diff --git a/src/NodeWrap.cpp b/src/NodeWrap.cpp
+index ccbd6c8..ed40bd5 100644
+--- a/src/NodeWrap.cpp
++++ b/src/NodeWrap.cpp
+@@ -386,7 +386,7 @@ NodeWrap::domainDefineXML(qmf::AgentSession& session,
+ 
+     virDomainPtr domain_ptr = virDomainDefineXML(_conn, xmlDesc.c_str());
+     if (!domain_ptr) {
+-        std::string err = FORMAT_ERR(_conn, "Error creating domain using xml description (virDomainDefineXML).", &ret);
++        std::string err = FORMAT_ERR(_conn, "Error defining domain using xml description (virDomainDefineXML).", &ret);
+         raiseException(session, event, err, STATUS_USER + ret);
+         return false;
+     }
+@@ -497,7 +497,7 @@ NodeWrap::findStoragePoolSources(qmf::AgentSession& session,
+ 
+     xml_result = virConnectFindStoragePoolSources(_conn, type.c_str(), srcSpec.c_str(), 0);
+     if (xml_result == NULL) {
+-        std::string err = FORMAT_ERR(_conn, "Error creating storage pool using xml description (virStoragePoolCreateXML).", &ret);
++        std::string err = FORMAT_ERR(_conn, "Error finding storage pool sources (virConnectFindStoragePoolSources).", &ret);
+         raiseException(session, event, err, STATUS_USER + ret);
+         return false;
+     }
diff --git a/libvirt-qmf.service b/libvirt-qmf.service
new file mode 100644
index 0000000..edaab3d
--- /dev/null
+++ b/libvirt-qmf.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Libvirt Via Qpid Gateway Daemon
+After=syslog.target network.target
+
+[Service]
+EnvironmentFile=-/etc/sysconfig/libvirt-qpid
+ExecStart=/usr/sbin/libvirt-qpid $LIBVIRT_QPID_ARGS
+
+[Install]
+WantedBy=multi-user.target
diff --git a/libvirt-qmf.spec b/libvirt-qmf.spec
index d84b0a0..c750cc9 100644
--- a/libvirt-qmf.spec
+++ b/libvirt-qmf.spec
@@ -1,24 +1,28 @@
-Summary: QPid QMF interface to Libvirt
 Name: libvirt-qmf
 Version: 0.3.0
-Release: 1%{?dist}
-Source: https://github.com/matahari/libvirt-qmf/downloads/%{name}-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
+Release: 3%{?dist}
+Summary: QPid QMF interface to Libvirt
+Source0: https://github.com/matahari/libvirt-qmf/downloads/%{name}-%{version}.tar.gz
+Source1: libvirt-qmf.service
 License: LGPLv2+
 Group: Applications/System
 Obsoletes: libvirt-qpid < 0.3.0
-Requires(post):  /sbin/chkconfig
-Requires(preun): /sbin/chkconfig
-Requires(preun): initscripts
+Requires(post): systemd-sysv
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+BuildRequires: systemd-units
 BuildRequires: qpid-cpp-client-devel >= 0.10
 BuildRequires: libxml2-devel >= 2.7.1
 BuildRequires: libvirt-devel >= 0.5.0
 BuildRequires: qpid-qmf-devel >= 0.8
 BuildRequires: matahari-devel >= 0.4.2
 Url: http://libvirt.org/qpid
+Patch100: domain-prop-init.patch
+Patch101: err_msgs.patch
+Patch102: bz729127-1-init-variables.patch
 
 %description
-
 libvirt-qmf provides an interface with libvirt using QMF (Qpid Management
 Framework), which utilizes the AMQP protocol.  The Advanced Message Queuing
 Protocol (AMQP) is an open standard application layer protocol providing
@@ -30,45 +34,70 @@ a set of objects with properties and methods.
 
 %prep
 %setup -q
+%patch100 -p1 -b .domain-prop-init
+%patch101 -p1 -b .err_msgs
+%patch102 -p1 -b .bz729127
 
 %build
 %configure
 make %{?_smp_mflags}
 
 %install
-rm -rf %{buildroot}
-%makeinstall
+make DESTDIR=%{buildroot} install
+mkdir -p %{buildroot}%{_unitdir}
+install -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}
+rm -rf %{buildroot}%{_sysconfdir}/rc.d/init.d/
 
 %post
-/sbin/chkconfig --add libvirt-qmf --level -
-/sbin/service libvirt-qmf condrestart
+if [ $1 -eq 1 ] ; then 
+    # Initial installation 
+    /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
 
 %preun
-if [ $1 = 0 ]; then
-    /sbin/service libvirt-qmf stop >/dev/null 2>&1 || :
-    chkconfig --del libvirt-qmf
+if [ $1 -eq 0 ] ; then
+    # Package removal, not upgrade
+    /bin/systemctl --no-reload disable libvirt-qmf.service > /dev/null 2>&1 || :
+    /bin/systemctl stop libvirt-qmf.service > /dev/null 2>&1 || :
 fi
 
 %postun
-if [ "$1" -ge "1" ]; then
-    /sbin/service libvirt-qmf condrestart >/dev/null 2>&1 || :
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    /bin/systemctl try-restart libvirt-qmf.service >/dev/null 2>&1 || :
 fi
 
-%clean
-test "x%{buildroot}" != "x" && rm -rf %{buildroot}
-%files
+%triggerun -- libvirt-qmf < 0.3.0-3
+# Save the current service runlevel info
+# User must manually run systemd-sysv-convert --apply libvirt-qmf
+# to migrate them to systemd targets
+/usr/bin/systemd-sysv-convert --save libvirt-qmf >/dev/null 2>&1 ||:
+
+# Run these because the SysV package being removed won't do them
+/sbin/chkconfig --del libvirt-qmf >/dev/null 2>&1 || :
+/bin/systemctl try-restart libvirt-qmf.service >/dev/null 2>&1 || :
+
 
+%files
 %defattr(644, root, root, 755)
+%doc AUTHORS COPYING
 %dir %{_datadir}/libvirt-qmf/
 %{_datadir}/libvirt-qmf/libvirt-schema.xml
-
 %attr(755, root, root) %{_sbindir}/libvirt-qmf
-%attr(755, root, root) %{_sysconfdir}/rc.d/init.d/libvirt-qmf
-
-%doc AUTHORS COPYING
+%{_unitdir}/libvirt-qmf.service
 
 
 %changelog
+* Mon Sep 12 2011 Tom Callaway <spot at fedoraproject.org> - 0.3.0-3
+- convert to systemd
+
+* Mon Aug 29 2011 Zane Bitter <zbitter at redhat.com> - 0.3.0-2
+- Ensure all Domain properties are initialized immediately
+- Correct some erroneous error messages
+- Fix quoting of variables in init script
+  Resolves: #729127
+
 * Thu Jul 21 2011 Zane Bitter <zbitter at redhat.com> - 0.3.0-1
 - Change package name from libvirt-qpid to libvirt-qmf
 - Convert to QMFv2 API


More information about the scm-commits mailing list