mirror of https://gitee.com/openkylin/libvirt.git
examples: Remove broken bad example
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.
This commit is contained in:
parent
d75d8b46f8
commit
5eb4b04211
|
@ -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/*
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue