[libvirt] [PATCH 1/2] examples: Remove broken bad example

Peter Krempa pkrempa at redhat.com
Wed Dec 4 10:31:27 UTC 2013


The domsuspend example code is a really old and bad exmample of (how not
to use) the libvirt API. Remove it as it's apparent that nobody tried to
use it. It was broken and nobody complained.
---
 .gitignore                      |   1 -
 Makefile.am                     |   4 +-
 examples/domsuspend/Makefile.am |  25 --------
 examples/domsuspend/suspend.c   | 136 ----------------------------------------
 libvirt.spec.in                 |   3 +-
 5 files changed, 3 insertions(+), 166 deletions(-)
 delete mode 100644 examples/domsuspend/Makefile.am
 delete mode 100644 examples/domsuspend/suspend.c

diff --git a/.gitignore b/.gitignore
index 8de0b26..24469a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -71,7 +71,6 @@
 /docs/todo.html.in
 /examples/domain-events/events-c/event-test
 /examples/dominfo/info1
-/examples/domsuspend/suspend
 /examples/hellolibvirt/hellolibvirt
 /examples/openauth/openauth
 /gnulib/lib/*
diff --git a/Makefile.am b/Makefile.am
index d7ddd9d..2cbf71a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,8 +21,8 @@ GENHTML = genhtml

 SUBDIRS = . gnulib/lib include src daemon tools docs gnulib/tests \
   tests po examples/domain-events/events-c examples/hellolibvirt \
-  examples/dominfo examples/domsuspend examples/apparmor \
-  examples/xml/nwfilter examples/openauth examples/systemtap
+  examples/dominfo examples/apparmor examples/xml/nwfilter \
+  examples/openauth examples/systemtap

 ACLOCAL_AMFLAGS = -I m4

diff --git a/examples/domsuspend/Makefile.am b/examples/domsuspend/Makefile.am
deleted file mode 100644
index d0d9368..0000000
--- a/examples/domsuspend/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-## Copyright (C) 2005-2013 Red Hat, Inc.
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library.  If not, see
-## <http://www.gnu.org/licenses/>.
-
-INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
-LDADDS = $(STATIC_BINARIES) $(WARN_CFLAGS) $(top_builddir)/src/libvirt.la \
-	$(COVERAGE_LDFLAGS)
-
-noinst_PROGRAMS=suspend
-
-suspend_SOURCES=suspend.c
-suspend_LDFLAGS=
-suspend_LDADD= $(LDADDS)
diff --git a/examples/domsuspend/suspend.c b/examples/domsuspend/suspend.c
deleted file mode 100644
index 6a0f5c9..0000000
--- a/examples/domsuspend/suspend.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- * section: Scheduling
- * synopsis: Suspend a domain and then resume its execution
- * purpose: Demonstrate the basic use of the library to suspend and
- *          resume a domain. If no id is given on the command line
- *          this script will suspend and resume the first domain found
- *          which is not Domain 0.
- * usage: suspend [id]
- * test: suspend
- * author: Daniel Veillard
- * copy: see Copyright for the status of this software.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <libvirt/libvirt.h>
-
-static virConnectPtr conn = NULL; /* the hypervisor connection */
-
-/**
- * checkDomainState:
- * @dom: the domain
- *
- * Return the current state of a domain or -1 if non-exsitant
- */
-static int
-checkDomainState(virDomainPtr dom) {
-    virDomainInfo info;        /* the information being fetched */
-    int ret;
-
-    ret = virDomainGetInfo(dom, &info);
-    if (ret < 0) {
-        return -1;
-    }
-    return info.state;
-}
-
-/**
- * SuspendAndResumeDomain:
- * @id: the id of the domain
- *
- * extract the domain 0 information
- */
-static void
-SuspendAndResumeDomain(int id) {
-    virDomainPtr dom = NULL;   /* the domain being checked */
-    int ret, state;
-
-    /* Find the domain of the given id */
-    dom = virDomainLookupByID(conn, id);
-    if (dom == NULL) {
-        fprintf(stderr, "Failed to find Domain %d\n", id);
-        goto error;
-    }
-
-    /* Check state */
-    state = checkDomainState(dom);
-    if ((state == VIR_DOMAIN_RUNNING) ||
-        (state == VIR_DOMAIN_NOSTATE) ||
-        (state == VIR_DOMAIN_BLOCKED)) {
-        printf("Suspending domain...\n");
-        ret = virDomainSuspend(dom);
-        if (ret < 0) {
-            fprintf(stderr, "Failed to suspend Domain %d\n", id);
-            goto error;
-        }
-        state = checkDomainState(dom);
-        if (state != VIR_DOMAIN_PAUSED) {
-            fprintf(stderr, "Domain %d state is not suspended\n", id);
-        } else {
-            printf("Domain suspended, resuming it...\n");
-        }
-        ret = virDomainResume(dom);
-        if (ret < 0) {
-            fprintf(stderr, "Failed to resume Domain %d\n", id);
-            goto error;
-        }
-        state = checkDomainState(dom);
-        if ((state == VIR_DOMAIN_RUNNING) ||
-            (state == VIR_DOMAIN_NOSTATE) ||
-            (state == VIR_DOMAIN_BLOCKED)) {
-            printf("Domain resumed\n");
-        } else {
-            fprintf(stderr, "Domain %d state indicate it is not resumed\n", id);
-        }
-    } else {
-        fprintf(stderr, "Domain %d is not in a state where it should be suspended\n", id);
-        goto error;
-    }
-
-error:
-    if (dom != NULL)
-        virDomainFree(dom);
-}
-
-int main(int argc, char **argv) {
-    int id = 0;
-
-    /* NULL means connect to local Xen hypervisor */
-    conn = virConnectOpenReadOnly(NULL);
-    if (conn == NULL) {
-        fprintf(stderr, "Failed to connect to hypervisor\n");
-        goto error;
-    }
-
-    if (argc > 1) {
-        id = atoi(argv[1]);
-    }
-    if (id == 0) {
-        int n;
-        size_t i;
-        int ids[10];
-        n = virConnectListDomains(conn, &ids[0], 10);
-        if (n < 0) {
-            fprintf(stderr, "Failed to list the domains\n");
-            goto error;
-        }
-        for (i = 0; i < n; i++) {
-            if (ids[i] != 0) {
-                id = ids[i];
-                break;
-            }
-        }
-    }
-    if (id == 0) {
-        fprintf(stderr, "Failed find a running guest domain\n");
-        goto error;
-    }
-
-    SuspendAndResumeDomain(id);
-
-error:
-    if (conn != NULL)
-        virConnectClose(conn);
-    return 0;
-}
diff --git a/libvirt.spec.in b/libvirt.spec.in
index cfd8890..eff7103 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1428,7 +1428,7 @@ rm -fr %{buildroot}
 # on RHEL 5, thus we need to expand it here.
 make install DESTDIR=%{?buildroot} SYSTEMD_UNIT_DIR=%{_unitdir}

-for i in domain-events/events-c dominfo domsuspend hellolibvirt openauth xml/nwfilter systemtap
+for i in domain-events/events-c dominfo hellolibvirt openauth xml/nwfilter systemtap
 do
   (cd examples/$i ; make clean ; rm -rf .deps .libs Makefile Makefile.in)
 done
@@ -2094,7 +2094,6 @@ exit 0
 %doc examples/hellolibvirt
 %doc examples/domain-events/events-c
 %doc examples/dominfo
-%doc examples/domsuspend
 %doc examples/openauth
 %doc examples/xml
 %doc examples/systemtap
-- 
1.8.4.3




More information about the libvir-list mailing list