]> xenbits.xensource.com Git - libvirt.git/commitdiff
XML-RPC tests
authorKarel Zak <kzak@redhat.com>
Tue, 9 May 2006 15:35:46 +0000 (15:35 +0000)
committerKarel Zak <kzak@redhat.com>
Tue, 9 May 2006 15:35:46 +0000 (15:35 +0000)
29 files changed:
ChangeLog
Makefile.am
configure.in
docs/APIchunk0.html
docs/APIchunk1.html
docs/APIchunk2.html
docs/APIchunk3.html
docs/APIconstructors.html
docs/APIfiles.html
docs/APIfunctions.html
docs/APIsymbols.html
docs/examples/.cvsignore
docs/examples/Makefile.am
docs/examples/examples.xml
docs/html/libvirt-libvirt.html
docs/html/libvirt-virterror.html
docs/libvirt-api.xml
docs/libvirt-refs.xml
src/Makefile.am
src/xml.c
src/xml.h
src/xmlrpc.c
src/xmlrpc.h
tests/Makefile.am [new file with mode: 0644]
tests/test_xmlrpc.sh [new file with mode: 0755]
tests/testutils.c [new file with mode: 0644]
tests/testutils.h [new file with mode: 0644]
tests/xmlrpcserver.py [new file with mode: 0755]
tests/xmlrpctest.c [new file with mode: 0644]

index 5b6fde92b42de5154049581cbb55af79417c2644..930705e277ef5feff590e2c63df6acb857895b1c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Tue May  9 16:37:22 CEST 2006 Karel Zak <kzak@redhat.com>
+
+       * tests/Makefile.am tests/xmlrpctest.c tests/testutils.h: added test 
+         directory with basic test utils
+       * tests/test_xmlrpc.sh tests/xmlrpcserver.py tests/xmlrpctest.c: added
+         simple XML-RPC tests agains Python SimpleXMLRPCServer
+       * src/xmlrpc.c src/xmlrpc.h: minor refactoring, fixed gcc warnings
+       * src/xml.c src/xml.h: added virBufferFree()
+
 Fri Apr 28 18:31:49 EDT 2006 Daniel Veillard <veillard@redhat.com>
 
        * src/hash.c src/internal.h src/libvirt.c src/virterror.c
index 1e0eeb32ded91dbba373b701a3cb7f0575513a2f..8c02b0a6ff66f2d40a9079a83a8b2c91578b0441 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-SUBDIRS = src include docs @PYTHON_SUBDIR@
+SUBDIRS = src include docs @PYTHON_SUBDIR@ tests
 
 EXTRA_DIST = libvirt.spec.in libvirt.spec COPYING.LIB \
              libvirt.pc.in libvirt.pc TODO AUTHORS ChangeLog \
@@ -19,5 +19,4 @@ check-local: all tests
 tests:
        @(cd docs/examples ; $(MAKE) MAKEFLAGS+=--silent tests)
        @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \
-         $(MAKE) MAKEFLAGS+=--silent tests ; fi)
-       
+         $(MAKE) MAKEFLAGS+=--silent tests ; fi)       
index 516ab23b9bb6cf3b6053c0335644dfaf6c4572fc..3bc3b99d03013ca2653852636fe520e97f21e899 100644 (file)
@@ -94,7 +94,7 @@ dnl
 dnl To be able to make dist on a non-xenified host
 dnl
 AC_ARG_WITH(depends,
-[  --with-depends          check for dependancies (on)])
+       [  --with-depends          check for dependancies (on)])
 
 if test "$with_depends" != "no"
 then
@@ -254,4 +254,5 @@ AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
           docs/examples/Makefile docs/devhelp/Makefile \
          docs/examples/python/Makefile \
           libvirt.pc libvirt.spec include/libvirt.h \
-         python/Makefile python/tests/Makefile)
+         python/Makefile python/tests/Makefile \
+          tests/Makefile)
index 7e78a266ca22e009eaef5126cbe3e679efa95ea6..e6499607554f48b8f1f9c8c1f08d5f36a5b6b354 100644 (file)
@@ -46,6 +46,7 @@
 <a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
 <a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
 <a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
 </dd><dt>Try</dt><dd><a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
-</dd></dl><h2>Letter U:</h2><dl><dt>UTF-8</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
+</dd></dl><h2>Letter U:</h2><dl><dt>UTF-8</dt><dd><a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
+<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
 </dd><dt>UUID</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
 </dd><dt>Use</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
 </dd></dl><h2>Letter W:</h2><dl><dt>What</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
 </dd></dl><h2>Letter X:</h2><dl><dt>XML</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
 </dd><dt>Xen</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
 </dd></dl><h2>Letter a:</h2><dl><dt>about</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
 <a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
 </dd><dt>argument</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
 <a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
-</dd><dt>array</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
+</dd><dt>array</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
 </dd><dt>assumed</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
 </dd><dt>available</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
 </dd><dt>better</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
 </dd><dt>block</dt><dd><a href="html/libvirt-libvirt.html#_virDomainKernel">_virDomainKernel</a><br />
 </dd><dt>but</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
 <a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
+<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
 <a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
 </dd><dt>bytes</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
 </dd></dl><h2>Letter c:</h2><dl><dt>call</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
+<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 <a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
 <a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
 <a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
 <a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
 <a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
index a640d44f2214c9137f298b519abc5e4746ec5404..9aae230920039cb8600f6b321436cfdbb1fa2364 100644 (file)
 </dd><dt>deallocated</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
 </dd><dt>default</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
 <a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
+</dd><dt>define</dt><dd><a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
+</dd><dt>defined</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
+<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
+<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
 </dd><dt>description</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
 </dd><dt>device</dt><dd><a href="html/libvirt-libvirt.html#_virDomainKernel">_virDomainKernel</a><br />
 </dd><dt>disk</dt><dd><a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
 </dd><dt>doable</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
-</dd><dt>does</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
-</dd><dt>domains</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
+</dd><dt>does</dt><dd><a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
+<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
+</dd><dt>domains</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
+<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 </dd><dt>down</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
 </dd></dl><h2>Letter e:</h2><dl><dt>encoded</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
 </dd><dt>especially</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
@@ -59,6 +68,7 @@
 <a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
 <a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
@@ -83,7 +93,8 @@
 <a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
 </dd><dt>frequency</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
-</dd><dt>from</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
+</dd><dt>from</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
+<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
 </dd><dt>frozen</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
 </dd><dt>function</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
 <a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
 <a href="html/libvirt-virterror.html#virResetLastError">virResetLastError</a><br />
 </dd><dt>later</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
+</dd><dt>launch</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 </dd><dt>level</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
 <a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
 </dd><dt>lifetime</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
 </dd><dt>limited</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
 </dd><dt>line</dt><dd><a href="html/libvirt-libvirt.html#_virDomainKernel">_virDomainKernel</a><br />
-</dd><dt>list</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
+</dd><dt>list</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 </dd><dt>listed</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
 </dd><dt>lookup</dt><dd><a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
 <a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
 </dd><dt>model</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
 </dd><dt>monitoring</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
+</dd><dt>moves</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 </dd><dt>multithreaded</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
 <a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
 <a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
index 2fdb427472f3484e35a18759eee68bde63f74c31..8f0dcb8f97b03fc9d3fb744997c27e2319f56e40 100644 (file)
@@ -7,6 +7,7 @@
 </h2><h2>Letter n:</h2><dl><dt>name</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
+</dd><dt>names</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 </dd><dt>nanoseconds</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
 </dd><dt>need</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
 <a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
@@ -25,6 +26,7 @@
 </dd><dt>not</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
 <a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
 <a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
 <a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
 <a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
+<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
 <a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
 <a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
 </dd><dt>number</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
 <a href="html/libvirt-virterror.html#_virError">_virError</a><br />
 <a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
@@ -78,6 +82,7 @@
 <a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
 <a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
 </dd><dt>output</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
 </dd></dl><h2>Letter p:</h2><dl><dt>parameter</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
 </dd><dt>pointed</dt><dd><a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
-</dd><dt>pointer</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
-<a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
-<a href="html/libvirt-virterror.html#virConnResetLastError">virConnResetLastError</a><br />
-<a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
-<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
-<a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
-<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
-<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
-<a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
-<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
-<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
-<a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
-<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
-<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
-<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
-<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
-<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
-<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
-<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
-<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
-<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
-<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
-<a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
-<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
+</dd><dt>pointers</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 </dd><dt>pointing</dt><dd><a href="html/libvirt-libvirt.html#_virDomainKernel">_virDomainKernel</a><br />
+</dd><dt>pools</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 </dd><dt>potential</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
+</dd><dt>preferably</dt><dd><a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 </dd><dt>printing</dt><dd><a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
 </dd><dt>priviledged</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
 <a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
 </dd><dt>process</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
 </dd><dt>provided</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 <a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
 <a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
 </dd><dt>providing</dt><dd><a href="html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a><br />
 </dd><dt>running</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
 <a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
+<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 <a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
 <a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
+<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
 </dd><dt>runs</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
 </dd><dt>shutdown</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
 </dd><dt>similar</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
 </dd><dt>size</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
 </dd><dt>socket</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
 </dd><dt>software</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
+</dd><dt>start</dt><dd><a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 </dd><dt>startup</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
 </dd><dt>state</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
 <a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
 <a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
 </dd><dt>still</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
 <a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
+</dd><dt>stop</dt><dd><a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
 </dd><dt>stopped</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
 <a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
-</dd><dt>store</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
+</dd><dt>store</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
+</dd><dt>stores</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 </dd><dt>string</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
 <a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
 <a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
 <a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
+</dd><dt>succeed</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 </dd><dt>success</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
+<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 <a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
 <a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
 <a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
+<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
 <a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
 <a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
 </dd><dt>successful</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
index d282e0e721d75b77f8814642c5752d56e92607d5..31eccf3660a2d3f0cc479e62412cbdb01a526ad3 100644 (file)
@@ -40,7 +40,8 @@
 </dd><dt>two</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
 </dd><dt>type</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
 <a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
-</dd></dl><h2>Letter u:</h2><dl><dt>uniform</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
+</dd></dl><h2>Letter u:</h2><dl><dt>undefine</dt><dd><a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
+</dd><dt>uniform</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
 </dd><dt>unknown</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
 </dd><dt>unsigned</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
 </dd><dt>unused</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
 <a href="APIchunk1.html">d-m</a>
 <a href="APIchunk2.html">n-s</a>
 <a href="APIchunk3.html">t-z</a>
-</h2></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&amp;component=libvirt&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=MODIFIED&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://hg.berrange.com/libraries/sys-virt">Perl bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
+</h2></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&amp;component=libvirt&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=MODIFIED&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
index a9e67d00f0305d4f7c97159a277fac82ccbd0970..8b2fadb448424abd11a66f19dddc82936a67c684 100644 (file)
@@ -5,6 +5,7 @@
 </p><h2>Type virConnectPtr:</h2><p><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
 <a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
 </p><h2>Type virDomainPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
index d3cd9add56e255e101e0b140784a2274ca3772c8..316850c421a88dad6a760e2a840920fd0828bbf5 100644 (file)
@@ -24,6 +24,7 @@
 <a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
 <a href="html/libvirt-libvirt.html#virConnectPtr">virConnectPtr</a><br />
 <a href="html/libvirt-libvirt.html#virDeviceMode">virDeviceMode</a><br />
 <a href="html/libvirt-libvirt.html#virDomain">virDomain</a><br />
+<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 <a href="html/libvirt-libvirt.html#virDomainCreateFlags">virDomainCreateFlags</a><br />
 <a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
 <a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
 <a href="html/libvirt-libvirt.html#virDomainState">virDomainState</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
+<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
 <a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
 <a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
 <a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
 <a href="html/libvirt-libvirt.html#virNodeInfo">virNodeInfo</a><br />
 <a href="html/libvirt-libvirt.html#virNodeInfoPtr">virNodeInfoPtr</a><br />
 </p><h2><a name="virterror" id="virterror">Module virterror</a>:</h2><p><a href="html/libvirt-virterror.html#VIR_ERR_CALL_FAILED">VIR_ERR_CALL_FAILED</a><br />
+<a href="html/libvirt-virterror.html#VIR_ERR_DOM_EXIST">VIR_ERR_DOM_EXIST</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_DRIVER_FULL">VIR_ERR_DRIVER_FULL</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_ERROR">VIR_ERR_ERROR</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_GET_FAILED">VIR_ERR_GET_FAILED</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_UNKNOWN_HOST">VIR_ERR_UNKNOWN_HOST</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_WARNING">VIR_ERR_WARNING</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_XEN_CALL">VIR_ERR_XEN_CALL</a><br />
+<a href="html/libvirt-virterror.html#VIR_ERR_XML_ERROR">VIR_ERR_XML_ERROR</a><br />
 <a href="html/libvirt-virterror.html#VIR_FROM_DOM">VIR_FROM_DOM</a><br />
 <a href="html/libvirt-virterror.html#VIR_FROM_NONE">VIR_FROM_NONE</a><br />
 <a href="html/libvirt-virterror.html#VIR_FROM_SEXPR">VIR_FROM_SEXPR</a><br />
index f1ef9055f245eed5ad0520b83121532718d3eced..d6e4d28227d9e6492688c6bad0dd1edafa1050e3 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>List of function manipulating types in libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">List of function manipulating types in libvirt</h1><h2>Type const unsigned char *:</h2><p><a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>List of function manipulating types in libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">List of function manipulating types in libvirt</h1><h2>Type const char **:</h2><p><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
+</p><h2>Type const unsigned char *:</h2><p><a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
 </p><h2>Type int *:</h2><p><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 </p><h2>Type unsigned char *:</h2><p><a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
 </p><h2>Type unsigned int:</h2><p><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
 <a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
 <a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
 <a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
 <a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
 </p><h2>Type virDomainInfoPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
-</p><h2>Type virDomainPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
+</p><h2>Type virDomainPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
 <a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
@@ -41,6 +45,7 @@
 <a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
 <a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
+<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
 </p><h2>Type virErrorFunc:</h2><p><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
 <a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
 </p><h2>Type virErrorPtr:</h2><p><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
index d04efc3dce8f75f49f3c66ad2801555d10d1f9dd..70523c73b08cf960567ca9f1fac8d1437a8feba6 100644 (file)
@@ -18,6 +18,7 @@
 <a href="html/libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN">VIR_DOMAIN_SHUTDOWN</a><br />
 <a href="html/libvirt-libvirt.html#VIR_DOMAIN_SHUTOFF">VIR_DOMAIN_SHUTOFF</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_CALL_FAILED">VIR_ERR_CALL_FAILED</a><br />
+<a href="html/libvirt-virterror.html#VIR_ERR_DOM_EXIST">VIR_ERR_DOM_EXIST</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_DRIVER_FULL">VIR_ERR_DRIVER_FULL</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_ERROR">VIR_ERR_ERROR</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_GET_FAILED">VIR_ERR_GET_FAILED</a><br />
@@ -47,6 +48,7 @@
 <a href="html/libvirt-virterror.html#VIR_ERR_UNKNOWN_HOST">VIR_ERR_UNKNOWN_HOST</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_WARNING">VIR_ERR_WARNING</a><br />
 <a href="html/libvirt-virterror.html#VIR_ERR_XEN_CALL">VIR_ERR_XEN_CALL</a><br />
+<a href="html/libvirt-virterror.html#VIR_ERR_XML_ERROR">VIR_ERR_XML_ERROR</a><br />
 <a href="html/libvirt-virterror.html#VIR_FROM_DOM">VIR_FROM_DOM</a><br />
 <a href="html/libvirt-virterror.html#VIR_FROM_NONE">VIR_FROM_NONE</a><br />
 <a href="html/libvirt-virterror.html#VIR_FROM_SEXPR">VIR_FROM_SEXPR</a><br />
@@ -66,6 +68,7 @@
 <a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
 <a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
+<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
 <a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
 <a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
 <a href="html/libvirt-libvirt.html#virDeviceMode">virDeviceMode</a><br />
 <a href="html/libvirt-libvirt.html#virDomain">virDomain</a><br />
+<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
 <a href="html/libvirt-libvirt.html#virDomainCreateFlags">virDomainCreateFlags</a><br />
 <a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
+<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
 <a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
 <a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
 <a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
 <a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
 <a href="html/libvirt-libvirt.html#virDomainState">virDomainState</a><br />
 <a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
+<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
 <a href="html/libvirt-virterror.html#virError">virError</a><br />
 <a href="html/libvirt-virterror.html#virErrorDomain">virErrorDomain</a><br />
 <a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
index 5f28847a8aabe8422551e97aca6a89a1fe432746..eca76badc60af6cba5ba48705e9c8db587e96723 100644 (file)
@@ -1,5 +1,5 @@
 .memdump
 Makefile.in
 Makefile
-info1
 suspend
+info1
index 18e1b134ddf7363f13b6122b73474828d35341a6..b6d7689365f4519e7a11d84c58da5efc9ec32332 100644 (file)
@@ -18,24 +18,24 @@ install-data-local:
 
 EXTRA_DIST=examples.xsl index.py examples.xml 
 
-noinst_PROGRAMS=info1 suspend 
-
-info1_SOURCES=info1.c
-info1_LDFLAGS=
-info1_DEPENDENCIES= $(DEPS)
-info1_LDADD= $(LDADDS)
+noinst_PROGRAMS=suspend info1 
 
 suspend_SOURCES=suspend.c
 suspend_LDFLAGS=
 suspend_DEPENDENCIES= $(DEPS)
 suspend_LDADD= $(LDADDS)
 
+info1_SOURCES=info1.c
+info1_LDFLAGS=
+info1_DEPENDENCIES= $(DEPS)
+info1_LDADD= $(LDADDS)
+
 valgrind: 
        $(MAKE) CHECKER='valgrind' tests
 
 tests: $(noinst_PROGRAMS)
        @(echo '## examples regression tests')
-       @($(CHECKER) ./info1)
        @($(CHECKER) ./suspend)
+       @($(CHECKER) ./info1)
 
 
index 5e54567843625422dffd3075dad9a94403eda618..af7d4b9fbbcb472f76c965078b7be4440738d924 100644 (file)
@@ -1,23 +1,4 @@
 <examples>
-  <example filename='info1.c'>
-    <synopsis>Extract informations about Xen domain 0</synopsis>
-    <purpose>Demonstrate the basic use of the library to connect to the hypervisor and extract domain informations.</purpose>
-    <usage>info1</usage>
-    <test>info1</test>
-    <author>Daniel Veillard</author>
-    <copy>see Copyright for the status of this software. </copy>
-    <section>Informations</section>
-    <includes>
-    </includes>
-    <uses>
-      <function line='43' file='libvirt' name='virDomainGetInfo'/>
-      <function line='53' file='libvirt' name='virDomainFree'/>
-      <function line='36' file='libvirt' name='virDomainLookupByID'/>
-      <function line='55' file='libvirt' name='virConnectClose'/>
-      <struct line='25' file='libvirt' name='virDomainInfo'/>
-      <function line='29' file='libvirt' name='virConnectOpenReadOnly'/>
-    </uses>
-  </example>
   <example filename='suspend.c'>
     <synopsis>Suspend a domain and then resume its execution</synopsis>
     <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.</purpose>
       <function line='100' file='libvirt' name='virConnectOpenReadOnly'/>
     </uses>
   </example>
+  <example filename='info1.c'>
+    <synopsis>Extract informations about Xen domain 0</synopsis>
+    <purpose>Demonstrate the basic use of the library to connect to the hypervisor and extract domain informations.</purpose>
+    <usage>info1</usage>
+    <test>info1</test>
+    <author>Daniel Veillard</author>
+    <copy>see Copyright for the status of this software. </copy>
+    <section>Informations</section>
+    <includes>
+    </includes>
+    <uses>
+      <function line='43' file='libvirt' name='virDomainGetInfo'/>
+      <function line='53' file='libvirt' name='virDomainFree'/>
+      <function line='36' file='libvirt' name='virDomainLookupByID'/>
+      <function line='55' file='libvirt' name='virConnectClose'/>
+      <struct line='25' file='libvirt' name='virDomainInfo'/>
+      <function line='29' file='libvirt' name='virConnectOpenReadOnly'/>
+    </uses>
+  </example>
   <symbols>
     <symbol name='virConnectClose'>
-      <ref filename='info1.c'/>
       <ref filename='suspend.c'/>
+      <ref filename='info1.c'/>
     </symbol>
     <symbol name='virConnectListDomains'>
       <ref filename='suspend.c'/>
     </symbol>
     <symbol name='virConnectOpenReadOnly'>
-      <ref filename='info1.c'/>
       <ref filename='suspend.c'/>
+      <ref filename='info1.c'/>
     </symbol>
     <symbol name='virDomainFree'>
-      <ref filename='info1.c'/>
       <ref filename='suspend.c'/>
+      <ref filename='info1.c'/>
     </symbol>
     <symbol name='virDomainGetInfo'>
-      <ref filename='info1.c'/>
       <ref filename='suspend.c'/>
+      <ref filename='info1.c'/>
     </symbol>
     <symbol name='virDomainInfo'>
-      <ref filename='info1.c'/>
       <ref filename='suspend.c'/>
+      <ref filename='info1.c'/>
     </symbol>
     <symbol name='virDomainLookupByID'>
-      <ref filename='info1.c'/>
       <ref filename='suspend.c'/>
+      <ref filename='info1.c'/>
     </symbol>
     <symbol name='virDomainResume'>
       <ref filename='suspend.c'/>
index ec716bce9589ffb247cce9c3b22a0ff8d745ca54..3250753d72ff802bb073c7027cd11c7c41dbd906 100644 (file)
@@ -19,11 +19,14 @@ The content of this structure is not made public by the API.
 </pre><pre class="programlisting">int  <a href="#virConnectClose">virConnectClose</a>                  (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)</pre>
 <pre class="programlisting">const char *       <a href="#virConnectGetType">virConnectGetType</a>      (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)</pre>
 <pre class="programlisting">int        <a href="#virConnectGetVersion">virConnectGetVersion</a>                (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     unsigned long * hvVer)</pre>
+<pre class="programlisting">int        <a href="#virConnectListDefinedDomains">virConnectListDefinedDomains</a>        (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     const char ** names, <br />                                     int maxnames)</pre>
 <pre class="programlisting">int        <a href="#virConnectListDomains">virConnectListDomains</a>              (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     int * ids, <br />                                       int maxids)</pre>
 <pre class="programlisting">int        <a href="#virConnectNumOfDomains">virConnectNumOfDomains</a>            (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)</pre>
 <pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a>     <a href="#virConnectOpen">virConnectOpen</a>            (const char * name)</pre>
 <pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a>     <a href="#virConnectOpenReadOnly">virConnectOpenReadOnly</a>    (const char * name)</pre>
+<pre class="programlisting">int        <a href="#virDomainCreate">virDomainCreate</a>                  (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)</pre>
 <pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a>       <a href="#virDomainCreateLinux">virDomainCreateLinux</a>        (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     const char * xmlDesc, <br />                                    unsigned int flags)</pre>
+<pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a>       <a href="#virDomainDefineXML">virDomainDefineXML</a>    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     const char * xml)</pre>
 <pre class="programlisting">int        <a href="#virDomainDestroy">virDomainDestroy</a>                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)</pre>
 <pre class="programlisting">int        <a href="#virDomainFree">virDomainFree</a>                      (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)</pre>
 <pre class="programlisting">unsigned int       <a href="#virDomainGetID">virDomainGetID</a>            (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)</pre>
@@ -44,6 +47,7 @@ The content of this structure is not made public by the API.
 <pre class="programlisting">int        <a href="#virDomainSetMemory">virDomainSetMemory</a>            (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br />                                     unsigned long memory)</pre>
 <pre class="programlisting">int        <a href="#virDomainShutdown">virDomainShutdown</a>              (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)</pre>
 <pre class="programlisting">int        <a href="#virDomainSuspend">virDomainSuspend</a>                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)</pre>
+<pre class="programlisting">int        <a href="#virDomainUndefine">virDomainUndefine</a>              (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)</pre>
 <pre class="programlisting">int        <a href="#virGetVersion">virGetVersion</a>                      (unsigned long * libVer, <br />                                  const char * type, <br />                                       unsigned long * typeVer)</pre>
 <pre class="programlisting">int        <a href="#virInitialize">virInitialize</a>                      (void)</pre>
 <pre class="programlisting">int        <a href="#virNodeGetInfo">virNodeGetInfo</a>                    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     <a href="libvirt-libvirt.html#virNodeInfoPtr">virNodeInfoPtr</a> info)</pre>
@@ -113,7 +117,9 @@ The content of this structure is not made public by the API.
 </pre><p>Get the name of the Hypervisor software used.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL in case of error, a static zero terminated string otherwise.</td></tr></tbody></table></div><h3><a name="virConnectGetVersion" id="virConnectGetVersion"></a>Function: virConnectGetVersion</h3><pre class="programlisting">int   virConnectGetVersion            (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     unsigned long * hvVer)<br />
 </pre><p>Get the version level of the Hypervisor running. This may work only with hypervisor call, i.e. with priviledged access to the hypervisor, not with a Read-Only connection.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>hvVer</tt></i>:</span></td><td>return value for the version of the running hypervisor (OUT)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 otherwise. if the version can't be extracted by lack of capacities returns 0 and @hvVer is 0, otherwise @hvVer value is major * 1,000,000 + minor * 1,000 + release</td></tr></tbody></table></div><h3><a name="virConnectListDomains" id="virConnectListDomains"></a>Function: virConnectListDomains</h3><pre class="programlisting">int        virConnectListDomains           (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     int * ids, <br />                                       int maxids)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>hvVer</tt></i>:</span></td><td>return value for the version of the running hypervisor (OUT)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 otherwise. if the version can't be extracted by lack of capacities returns 0 and @hvVer is 0, otherwise @hvVer value is major * 1,000,000 + minor * 1,000 + release</td></tr></tbody></table></div><h3><a name="virConnectListDefinedDomains" id="virConnectListDefinedDomains"></a>Function: virConnectListDefinedDomains</h3><pre class="programlisting">int   virConnectListDefinedDomains    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     const char ** names, <br />                                     int maxnames)<br />
+</pre><p>list the defined domains, stores the pointers to the names in @names</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>pointer to an array to store the names</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of the array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of names provided in the array or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListDomains" id="virConnectListDomains"></a>Function: virConnectListDomains</h3><pre class="programlisting">int virConnectListDomains           (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     int * ids, <br />                                       int maxids)<br />
 </pre><p>Collect the list of active domains, and store their ID in @maxids</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>ids</tt></i>:</span></td><td>array to collect the list of IDs of active domains</td></tr><tr><td><span class="term"><i><tt>maxids</tt></i>:</span></td><td>size of @ids</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of domain found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDomains" id="virConnectNumOfDomains"></a>Function: virConnectNumOfDomains</h3><pre class="programlisting">int  virConnectNumOfDomains          (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
 </pre><p>Provides the number of active domains.</p>
@@ -121,9 +127,13 @@ The content of this structure is not made public by the API.
 </pre><p>This function should be called first to get a connection to the Hypervisor and xen store</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>optional argument currently unused, pass NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error</td></tr></tbody></table></div><h3><a name="virConnectOpenReadOnly" id="virConnectOpenReadOnly"></a>Function: virConnectOpenReadOnly</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a>   virConnectOpenReadOnly  (const char * name)<br />
 </pre><p>This function should be called first to get a restricted connection to the libbrary functionalities. The set of APIs usable are then restricted on the available methods to control the domains.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>optional argument currently unused, pass NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error</td></tr></tbody></table></div><h3><a name="virDomainCreateLinux" id="virDomainCreateLinux"></a>Function: virDomainCreateLinux</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a>   virDomainCreateLinux    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     const char * xmlDesc, <br />                                    unsigned int flags)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>optional argument currently unused, pass NULL</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the hypervisor connection or NULL in case of error</td></tr></tbody></table></div><h3><a name="virDomainCreate" id="virDomainCreate"></a>Function: virDomainCreate</h3><pre class="programlisting">int   virDomainCreate                 (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
+</pre><p>launch a defined domain. If the call succeed the domain moves from the defined to the running domains pools.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>pointer to a defined domain</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of error</td></tr></tbody></table></div><h3><a name="virDomainCreateLinux" id="virDomainCreateLinux"></a>Function: virDomainCreateLinux</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> virDomainCreateLinux    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     const char * xmlDesc, <br />                                    unsigned int flags)<br />
 </pre><p>Launch a new Linux guest domain, based on an XML description similar to the one returned by virDomainGetXMLDesc() This function may requires priviledged access to the hypervisor.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xmlDesc</tt></i>:</span></td><td>an XML description of the domain</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>an optional set of virDomainFlags</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new domain object or NULL in case of failure</td></tr></tbody></table></div><h3><a name="virDomainDestroy" id="virDomainDestroy"></a>Function: virDomainDestroy</h3><pre class="programlisting">int virDomainDestroy                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xmlDesc</tt></i>:</span></td><td>an XML description of the domain</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>an optional set of virDomainFlags</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new domain object or NULL in case of failure</td></tr></tbody></table></div><h3><a name="virDomainDefineXML" id="virDomainDefineXML"></a>Function: virDomainDefineXML</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a>  virDomainDefineXML      (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     const char * xml)<br />
+</pre><p>define a domain, but does not start it</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>the XML description for the domain, preferably in UTF-8</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL in case of error, a pointer to the domain otherwise</td></tr></tbody></table></div><h3><a name="virDomainDestroy" id="virDomainDestroy"></a>Function: virDomainDestroy</h3><pre class="programlisting">int        virDomainDestroy                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
 </pre><p>Destroy the domain object. The running instance is shutdown if not down already and all resources used by it are given back to the hypervisor. The data structure is freed and should not be used thereafter if the call does not return an error. This function may requires priviledged access</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainFree" id="virDomainFree"></a>Function: virDomainFree</h3><pre class="programlisting">int     virDomainFree                   (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
 </pre><p>Free the domain object. The running instance is kept alive. The data structure is freed and should not be used thereafter.</p>
@@ -163,7 +173,9 @@ The content of this structure is not made public by the API.
 </pre><p>Shutdown a domain, the domain object is still usable there after but the domain OS is being stopped. Note that the guest OS may ignore the request. TODO: should we add an option for reboot, knowing it may not be doable in the general case ?</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainSuspend" id="virDomainSuspend"></a>Function: virDomainSuspend</h3><pre class="programlisting">int    virDomainSuspend                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
 </pre><p>Suspends an active domain, the process is frozen without further access to CPU resources and I/O but the memory used by the domain at the hypervisor level will stay allocated. Use virDomainResume() to reactivate the domain. This function may requires priviledged access.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virGetVersion" id="virGetVersion"></a>Function: virGetVersion</h3><pre class="programlisting">int     virGetVersion                   (unsigned long * libVer, <br />                                  const char * type, <br />                                       unsigned long * typeVer)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>a domain object</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainUndefine" id="virDomainUndefine"></a>Function: virDomainUndefine</h3><pre class="programlisting">int virDomainUndefine               (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
+</pre><p>undefine a domain but does not stop it if it is running</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>pointer to a defined domain</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of error</td></tr></tbody></table></div><h3><a name="virGetVersion" id="virGetVersion"></a>Function: virGetVersion</h3><pre class="programlisting">int       virGetVersion                   (unsigned long * libVer, <br />                                  const char * type, <br />                                       unsigned long * typeVer)<br />
 </pre><p>Provides two information back, @libVer is the version of the library while @typeVer will be the version of the hypervisor type @type against which the library was compiled. If @type is NULL, "Xen" is assumed, if @type is unknown or not availble, an error code will be returned and @typeVer will be 0.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>libVer</tt></i>:</span></td><td>return value for the library version (OUT)</td></tr><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>hypervisor type</td></tr><tr><td><span class="term"><i><tt>typeVer</tt></i>:</span></td><td>return value for the version of the hypervisor (OUT)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of failure, 0 otherwise, and values for @libVer and @typeVer have the format major * 1,000,000 + minor * 1,000 + release.</td></tr></tbody></table></div><h3><a name="virInitialize" id="virInitialize"></a>Function: virInitialize</h3><pre class="programlisting">int   virInitialize                   (void)<br />
 </pre><p>Initialize the library. It's better to call this routine at startup in multithreaded applications to avoid potential race when initializing the library.</p>
index ac4c063b7fec28072b1b873f7985e46876ff6ae9..37c5e5a21cd3ee1a3ccd0b0496c905a70741f0fb 100644 (file)
@@ -73,6 +73,8 @@ void  <a href="#virErrorFunc">virErrorFunc</a>                        (void * userData, <br />                                         <a
     <a name="VIR_ERR_NO_XENSTORE" id="VIR_ERR_NO_XENSTORE">VIR_ERR_NO_XENSTORE</a> = 24 : could not open Xen Store control
     <a name="VIR_ERR_DRIVER_FULL" id="VIR_ERR_DRIVER_FULL">VIR_ERR_DRIVER_FULL</a> = 25 : too many drivers registered
     <a name="VIR_ERR_CALL_FAILED" id="VIR_ERR_CALL_FAILED">VIR_ERR_CALL_FAILED</a> = 26 : not supported by the drivers
+    <a name="VIR_ERR_XML_ERROR" id="VIR_ERR_XML_ERROR">VIR_ERR_XML_ERROR</a> = 27 : an XML description is not well formed or broken
+    <a name="VIR_ERR_DOM_EXIST" id="VIR_ERR_DOM_EXIST">VIR_ERR_DOM_EXIST</a> = 28 : the domain already exist
 }
 </pre><h3><a name="virConnCopyLastError" id="virConnCopyLastError"></a>Function: virConnCopyLastError</h3><pre class="programlisting">int      virConnCopyLastError            (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br />                                     <a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> to)<br />
 </pre><p>Copy the content of the last error caught on that connection One will need to free the result with virResetError()</p>
index 348820374773eac37c8ed6488068d3bf748f4fe2..450834739f88082e7c25e709789fa34aab4704a5 100644 (file)
      <exports symbol='_virDomainKernel' type='struct'/>
      <exports symbol='_virNodeInfo' type='struct'/>
      <exports symbol='virDomainGetInfo' type='function'/>
+     <exports symbol='virDomainUndefine' type='function'/>
+     <exports symbol='virDomainDefineXML' type='function'/>
      <exports symbol='virDomainShutdown' type='function'/>
      <exports symbol='virGetVersion' type='function'/>
+     <exports symbol='virConnectListDefinedDomains' type='function'/>
      <exports symbol='virDomainLookupByName' type='function'/>
      <exports symbol='virDomainRestore' type='function'/>
      <exports symbol='virConnectGetType' type='function'/>
      <exports symbol='virDomainSave' type='function'/>
+     <exports symbol='virDomainCreate' type='function'/>
      <exports symbol='virConnectListDomains' type='function'/>
      <exports symbol='virDomainLookupByUUID' type='function'/>
      <exports symbol='virDomainLookupByID' type='function'/>
@@ -83,6 +87,7 @@
      <exports symbol='VIR_ERR_NO_DEVICE' type='enum'/>
      <exports symbol='VIR_ERR_NO_MEMORY' type='enum'/>
      <exports symbol='VIR_FROM_SEXPR' type='enum'/>
+     <exports symbol='VIR_ERR_XML_ERROR' type='enum'/>
      <exports symbol='VIR_FROM_NONE' type='enum'/>
      <exports symbol='VIR_ERR_HTTP_ERROR' type='enum'/>
      <exports symbol='VIR_ERR_NO_XENSTORE' type='enum'/>
      <exports symbol='VIR_ERR_OPERATION_FAILED' type='enum'/>
      <exports symbol='VIR_ERR_GET_FAILED' type='enum'/>
      <exports symbol='VIR_ERR_DRIVER_FULL' type='enum'/>
-     <exports symbol='VIR_ERR_SEXPR_SERIAL' type='enum'/>
+     <exports symbol='VIR_ERR_DOM_EXIST' type='enum'/>
      <exports symbol='VIR_ERR_NO_SOURCE' type='enum'/>
      <exports symbol='VIR_ERR_NO_TARGET' type='enum'/>
      <exports symbol='VIR_ERR_INTERNAL_ERROR' type='enum'/>
      <exports symbol='VIR_ERR_NO_SUPPORT' type='enum'/>
      <exports symbol='VIR_FROM_XEND' type='enum'/>
+     <exports symbol='VIR_ERR_SEXPR_SERIAL' type='enum'/>
      <exports symbol='VIR_FROM_XENSTORE' type='enum'/>
      <exports symbol='VIR_FROM_XEN' type='enum'/>
      <exports symbol='VIR_ERR_XEN_CALL' type='enum'/>
     <enum name='VIR_DOMAIN_RUNNING' file='libvirt' value='1' type='virDomainState' info='the domain is running'/>
     <enum name='VIR_DOMAIN_SHUTDOWN' file='libvirt' value='4' type='virDomainState' info='the domain is being shut down'/>
     <enum name='VIR_DOMAIN_SHUTOFF' file='libvirt' value='5' type='virDomainState' info='the domain is shut off'/>
-    <enum name='VIR_ERR_CALL_FAILED' file='virterror' value='26' type='virErrorNumber' info=' not supported by the drivers'/>
+    <enum name='VIR_ERR_CALL_FAILED' file='virterror' value='26' type='virErrorNumber' info='not supported by the drivers'/>
+    <enum name='VIR_ERR_DOM_EXIST' file='virterror' value='28' type='virErrorNumber' info=' the domain already exist'/>
     <enum name='VIR_ERR_DRIVER_FULL' file='virterror' value='25' type='virErrorNumber' info='too many drivers registered'/>
     <enum name='VIR_ERR_ERROR' file='virterror' value='2' type='virErrorLevel' info=' An error'/>
     <enum name='VIR_ERR_GET_FAILED' file='virterror' value='10' type='virErrorNumber' info='a HTTP GET command to failed'/>
     <enum name='VIR_ERR_UNKNOWN_HOST' file='virterror' value='4' type='virErrorNumber' info='could not resolve hostname'/>
     <enum name='VIR_ERR_WARNING' file='virterror' value='1' type='virErrorLevel' info='A simple warning'/>
     <enum name='VIR_ERR_XEN_CALL' file='virterror' value='15' type='virErrorNumber' info='failure doing an hypervisor call'/>
+    <enum name='VIR_ERR_XML_ERROR' file='virterror' value='27' type='virErrorNumber' info='an XML description is not well formed or broken'/>
     <enum name='VIR_FROM_DOM' file='virterror' value='6' type='virErrorDomain' info=' Error when operating on a domain'/>
     <enum name='VIR_FROM_NONE' file='virterror' value='0' type='virErrorDomain'/>
     <enum name='VIR_FROM_SEXPR' file='virterror' value='4' type='virErrorDomain' info='Error in the S-Epression code'/>
       <arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
       <arg name='hvVer' type='unsigned long *' info='return value for the version of the running hypervisor (OUT)'/>
     </function>
+    <function name='virConnectListDefinedDomains' file='libvirt' module='libvirt'>
+      <info>list the defined domains, stores the pointers to the names in @names</info>
+      <return type='int' info='the number of names provided in the array or -1 in case of error'/>
+      <arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
+      <arg name='names' type='const char **' info='pointer to an array to store the names'/>
+      <arg name='maxnames' type='int' info='size of the array'/>
+    </function>
     <function name='virConnectListDomains' file='libvirt' module='libvirt'>
       <info>Collect the list of active domains, and store their ID in @maxids</info>
       <return type='int' info='the number of domain found or -1 in case of error'/>
       <return type='void'/>
       <arg name='err' type='virErrorPtr' info='pointer to the error.'/>
     </function>
+    <function name='virDomainCreate' file='libvirt' module='libvirt'>
+      <info>launch a defined domain. If the call succeed the domain moves from the defined to the running domains pools.</info>
+      <return type='int' info='0 in case of success, -1 in case of error'/>
+      <arg name='domain' type='virDomainPtr' info='pointer to a defined domain'/>
+    </function>
     <function name='virDomainCreateLinux' file='libvirt' module='libvirt'>
       <info>Launch a new Linux guest domain, based on an XML description similar to the one returned by virDomainGetXMLDesc() This function may requires priviledged access to the hypervisor.</info>
       <return type='virDomainPtr' info='a new domain object or NULL in case of failure'/>
       <arg name='xmlDesc' type='const char *' info='an XML description of the domain'/>
       <arg name='flags' type='unsigned int' info='an optional set of virDomainFlags'/>
     </function>
+    <function name='virDomainDefineXML' file='libvirt' module='libvirt'>
+      <info>define a domain, but does not start it</info>
+      <return type='virDomainPtr' info='NULL in case of error, a pointer to the domain otherwise'/>
+      <arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
+      <arg name='xml' type='const char *' info='the XML description for the domain, preferably in UTF-8'/>
+    </function>
     <function name='virDomainDestroy' file='libvirt' module='libvirt'>
       <info>Destroy the domain object. The running instance is shutdown if not down already and all resources used by it are given back to the hypervisor. The data structure is freed and should not be used thereafter if the call does not return an error. This function may requires priviledged access</info>
       <return type='int' info='0 in case of success and -1 in case of failure.'/>
       <return type='int' info='0 in case of success and -1 in case of failure.'/>
       <arg name='domain' type='virDomainPtr' info='a domain object'/>
     </function>
+    <function name='virDomainUndefine' file='libvirt' module='libvirt'>
+      <info>undefine a domain but does not stop it if it is running</info>
+      <return type='int' info='0 in case of success, -1 in case of error'/>
+      <arg name='domain' type='virDomainPtr' info='pointer to a defined domain'/>
+    </function>
     <functype name='virErrorFunc' file='virterror' module='virterror'>
       <info>Signature of a function to use when there is an error raised by the library.</info>
       <return type='void'/>
index 7c52d1808837440f4baddb055a454456beecbd1b..a377694a516649d23c0a0304e2392dce89267193 100644 (file)
@@ -19,6 +19,7 @@
     <reference name='VIR_DOMAIN_SHUTDOWN' href='html/libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN'/>
     <reference name='VIR_DOMAIN_SHUTOFF' href='html/libvirt-libvirt.html#VIR_DOMAIN_SHUTOFF'/>
     <reference name='VIR_ERR_CALL_FAILED' href='html/libvirt-virterror.html#VIR_ERR_CALL_FAILED'/>
+    <reference name='VIR_ERR_DOM_EXIST' href='html/libvirt-virterror.html#VIR_ERR_DOM_EXIST'/>
     <reference name='VIR_ERR_DRIVER_FULL' href='html/libvirt-virterror.html#VIR_ERR_DRIVER_FULL'/>
     <reference name='VIR_ERR_ERROR' href='html/libvirt-virterror.html#VIR_ERR_ERROR'/>
     <reference name='VIR_ERR_GET_FAILED' href='html/libvirt-virterror.html#VIR_ERR_GET_FAILED'/>
@@ -48,6 +49,7 @@
     <reference name='VIR_ERR_UNKNOWN_HOST' href='html/libvirt-virterror.html#VIR_ERR_UNKNOWN_HOST'/>
     <reference name='VIR_ERR_WARNING' href='html/libvirt-virterror.html#VIR_ERR_WARNING'/>
     <reference name='VIR_ERR_XEN_CALL' href='html/libvirt-virterror.html#VIR_ERR_XEN_CALL'/>
+    <reference name='VIR_ERR_XML_ERROR' href='html/libvirt-virterror.html#VIR_ERR_XML_ERROR'/>
     <reference name='VIR_FROM_DOM' href='html/libvirt-virterror.html#VIR_FROM_DOM'/>
     <reference name='VIR_FROM_NONE' href='html/libvirt-virterror.html#VIR_FROM_NONE'/>
     <reference name='VIR_FROM_SEXPR' href='html/libvirt-virterror.html#VIR_FROM_SEXPR'/>
@@ -67,6 +69,7 @@
     <reference name='virConnectClose' href='html/libvirt-libvirt.html#virConnectClose'/>
     <reference name='virConnectGetType' href='html/libvirt-libvirt.html#virConnectGetType'/>
     <reference name='virConnectGetVersion' href='html/libvirt-libvirt.html#virConnectGetVersion'/>
+    <reference name='virConnectListDefinedDomains' href='html/libvirt-libvirt.html#virConnectListDefinedDomains'/>
     <reference name='virConnectListDomains' href='html/libvirt-libvirt.html#virConnectListDomains'/>
     <reference name='virConnectNumOfDomains' href='html/libvirt-libvirt.html#virConnectNumOfDomains'/>
     <reference name='virConnectOpen' href='html/libvirt-libvirt.html#virConnectOpen'/>
     <reference name='virDefaultErrorFunc' href='html/libvirt-virterror.html#virDefaultErrorFunc'/>
     <reference name='virDeviceMode' href='html/libvirt-libvirt.html#virDeviceMode'/>
     <reference name='virDomain' href='html/libvirt-libvirt.html#virDomain'/>
+    <reference name='virDomainCreate' href='html/libvirt-libvirt.html#virDomainCreate'/>
     <reference name='virDomainCreateFlags' href='html/libvirt-libvirt.html#virDomainCreateFlags'/>
     <reference name='virDomainCreateLinux' href='html/libvirt-libvirt.html#virDomainCreateLinux'/>
+    <reference name='virDomainDefineXML' href='html/libvirt-libvirt.html#virDomainDefineXML'/>
     <reference name='virDomainDestroy' href='html/libvirt-libvirt.html#virDomainDestroy'/>
     <reference name='virDomainFree' href='html/libvirt-libvirt.html#virDomainFree'/>
     <reference name='virDomainGetID' href='html/libvirt-libvirt.html#virDomainGetID'/>
     <reference name='virDomainShutdown' href='html/libvirt-libvirt.html#virDomainShutdown'/>
     <reference name='virDomainState' href='html/libvirt-libvirt.html#virDomainState'/>
     <reference name='virDomainSuspend' href='html/libvirt-libvirt.html#virDomainSuspend'/>
+    <reference name='virDomainUndefine' href='html/libvirt-libvirt.html#virDomainUndefine'/>
     <reference name='virError' href='html/libvirt-virterror.html#virError'/>
     <reference name='virErrorDomain' href='html/libvirt-virterror.html#virErrorDomain'/>
     <reference name='virErrorFunc' href='html/libvirt-virterror.html#virErrorFunc'/>
       <ref name='VIR_DOMAIN_SHUTDOWN'/>
       <ref name='VIR_DOMAIN_SHUTOFF'/>
       <ref name='VIR_ERR_CALL_FAILED'/>
+      <ref name='VIR_ERR_DOM_EXIST'/>
       <ref name='VIR_ERR_DRIVER_FULL'/>
       <ref name='VIR_ERR_ERROR'/>
       <ref name='VIR_ERR_GET_FAILED'/>
       <ref name='VIR_ERR_UNKNOWN_HOST'/>
       <ref name='VIR_ERR_WARNING'/>
       <ref name='VIR_ERR_XEN_CALL'/>
+      <ref name='VIR_ERR_XML_ERROR'/>
       <ref name='VIR_FROM_DOM'/>
       <ref name='VIR_FROM_NONE'/>
       <ref name='VIR_FROM_SEXPR'/>
       <ref name='virConnectClose'/>
       <ref name='virConnectGetType'/>
       <ref name='virConnectGetVersion'/>
+      <ref name='virConnectListDefinedDomains'/>
       <ref name='virConnectListDomains'/>
       <ref name='virConnectNumOfDomains'/>
       <ref name='virConnectOpen'/>
       <ref name='virDefaultErrorFunc'/>
       <ref name='virDeviceMode'/>
       <ref name='virDomain'/>
+      <ref name='virDomainCreate'/>
       <ref name='virDomainCreateFlags'/>
       <ref name='virDomainCreateLinux'/>
+      <ref name='virDomainDefineXML'/>
       <ref name='virDomainDestroy'/>
       <ref name='virDomainFree'/>
       <ref name='virDomainGetID'/>
       <ref name='virDomainShutdown'/>
       <ref name='virDomainState'/>
       <ref name='virDomainSuspend'/>
+      <ref name='virDomainUndefine'/>
       <ref name='virError'/>
       <ref name='virErrorDomain'/>
       <ref name='virErrorFunc'/>
     </type>
     <type name='virDomainPtr'>
       <ref name='virDomainCreateLinux'/>
+      <ref name='virDomainDefineXML'/>
       <ref name='virDomainLookupByID'/>
       <ref name='virDomainLookupByName'/>
       <ref name='virDomainLookupByUUID'/>
     </type>
   </constructors>
   <functions>
+    <type name='const char **'>
+      <ref name='virConnectListDefinedDomains'/>
+    </type>
     <type name='const unsigned char *'>
       <ref name='virDomainLookupByUUID'/>
     </type>
       <ref name='virConnectClose'/>
       <ref name='virConnectGetType'/>
       <ref name='virConnectGetVersion'/>
+      <ref name='virConnectListDefinedDomains'/>
       <ref name='virConnectListDomains'/>
       <ref name='virConnectNumOfDomains'/>
       <ref name='virDomainCreateLinux'/>
+      <ref name='virDomainDefineXML'/>
       <ref name='virDomainLookupByID'/>
       <ref name='virDomainLookupByName'/>
       <ref name='virDomainLookupByUUID'/>
       <ref name='virDomainGetInfo'/>
     </type>
     <type name='virDomainPtr'>
+      <ref name='virDomainCreate'/>
       <ref name='virDomainDestroy'/>
       <ref name='virDomainFree'/>
       <ref name='virDomainGetID'/>
       <ref name='virDomainSetMemory'/>
       <ref name='virDomainShutdown'/>
       <ref name='virDomainSuspend'/>
+      <ref name='virDomainUndefine'/>
     </type>
     <type name='virErrorFunc'>
       <ref name='virConnSetErrorFunc'/>
       <ref name='virConnectClose'/>
       <ref name='virConnectGetType'/>
       <ref name='virConnectGetVersion'/>
+      <ref name='virConnectListDefinedDomains'/>
       <ref name='virConnectListDomains'/>
       <ref name='virConnectNumOfDomains'/>
       <ref name='virConnectOpen'/>
       <ref name='virConnectPtr'/>
       <ref name='virDeviceMode'/>
       <ref name='virDomain'/>
+      <ref name='virDomainCreate'/>
       <ref name='virDomainCreateFlags'/>
       <ref name='virDomainCreateLinux'/>
+      <ref name='virDomainDefineXML'/>
       <ref name='virDomainDestroy'/>
       <ref name='virDomainFree'/>
       <ref name='virDomainGetID'/>
       <ref name='virDomainShutdown'/>
       <ref name='virDomainState'/>
       <ref name='virDomainSuspend'/>
+      <ref name='virDomainUndefine'/>
       <ref name='virGetVersion'/>
       <ref name='virInitialize'/>
       <ref name='virNodeGetInfo'/>
     </file>
     <file name='virterror'>
       <ref name='VIR_ERR_CALL_FAILED'/>
+      <ref name='VIR_ERR_DOM_EXIST'/>
       <ref name='VIR_ERR_DRIVER_FULL'/>
       <ref name='VIR_ERR_ERROR'/>
       <ref name='VIR_ERR_GET_FAILED'/>
       <ref name='VIR_ERR_UNKNOWN_HOST'/>
       <ref name='VIR_ERR_WARNING'/>
       <ref name='VIR_ERR_XEN_CALL'/>
+      <ref name='VIR_ERR_XML_ERROR'/>
       <ref name='VIR_FROM_DOM'/>
       <ref name='VIR_FROM_NONE'/>
       <ref name='VIR_FROM_SEXPR'/>
           <ref name='virConnectOpen'/>
           <ref name='virConnectOpenReadOnly'/>
           <ref name='virDomainCreateLinux'/>
+          <ref name='virDomainDefineXML'/>
           <ref name='virDomainGetMaxMemory'/>
           <ref name='virDomainGetName'/>
           <ref name='virDomainGetOSType'/>
       </letter>
       <letter name='U'>
         <word name='UTF-8'>
+          <ref name='virDomainDefineXML'/>
           <ref name='virDomainGetXMLDesc'/>
         </word>
         <word name='UUID'>
       <letter name='X'>
         <word name='XML'>
           <ref name='virDomainCreateLinux'/>
+          <ref name='virDomainDefineXML'/>
           <ref name='virDomainGetXMLDesc'/>
         </word>
         <word name='Xen'>
           <ref name='virConnectOpenReadOnly'/>
         </word>
         <word name='array'>
+          <ref name='virConnectListDefinedDomains'/>
           <ref name='virConnectListDomains'/>
           <ref name='virDomainGetUUID'/>
         </word>
         </word>
         <word name='but'>
           <ref name='virConnGetLastError'/>
+          <ref name='virDomainDefineXML'/>
           <ref name='virDomainReboot'/>
           <ref name='virDomainShutdown'/>
           <ref name='virDomainSuspend'/>
+          <ref name='virDomainUndefine'/>
           <ref name='virGetLastError'/>
         </word>
         <word name='bytes'>
       <letter name='c'>
         <word name='call'>
           <ref name='virConnectGetVersion'/>
+          <ref name='virDomainCreate'/>
           <ref name='virDomainDestroy'/>
           <ref name='virDomainSave'/>
           <ref name='virInitialize'/>
           <ref name='virConnectClose'/>
           <ref name='virConnectGetType'/>
           <ref name='virConnectGetVersion'/>
+          <ref name='virConnectListDefinedDomains'/>
           <ref name='virConnectListDomains'/>
           <ref name='virConnectNumOfDomains'/>
           <ref name='virConnectOpen'/>
           <ref name='virConnectOpenReadOnly'/>
           <ref name='virDomainCreateLinux'/>
+          <ref name='virDomainDefineXML'/>
           <ref name='virDomainGetInfo'/>
           <ref name='virDomainLookupByID'/>
           <ref name='virDomainLookupByName'/>
           <ref name='virConnSetErrorFunc'/>
           <ref name='virSetErrorFunc'/>
         </word>
+        <word name='define'>
+          <ref name='virDomainDefineXML'/>
+        </word>
+        <word name='defined'>
+          <ref name='virConnectListDefinedDomains'/>
+          <ref name='virDomainCreate'/>
+          <ref name='virDomainUndefine'/>
+        </word>
         <word name='description'>
           <ref name='virDomainCreateLinux'/>
+          <ref name='virDomainDefineXML'/>
           <ref name='virDomainGetXMLDesc'/>
         </word>
         <word name='device'>
           <ref name='virDomainShutdown'/>
         </word>
         <word name='does'>
+          <ref name='virDomainDefineXML'/>
           <ref name='virDomainDestroy'/>
+          <ref name='virDomainUndefine'/>
         </word>
         <word name='domains'>
+          <ref name='virConnectListDefinedDomains'/>
           <ref name='virConnectListDomains'/>
           <ref name='virConnectNumOfDomains'/>
           <ref name='virConnectOpenReadOnly'/>
+          <ref name='virDomainCreate'/>
         </word>
         <word name='down'>
           <ref name='virDomainDestroy'/>
           <ref name='_virNodeInfo'/>
           <ref name='virConnGetLastError'/>
           <ref name='virConnectGetVersion'/>
+          <ref name='virDomainDefineXML'/>
           <ref name='virDomainGetID'/>
           <ref name='virDomainGetName'/>
           <ref name='virDomainGetUUID'/>
           <ref name='_virNodeInfo'/>
         </word>
         <word name='from'>
+          <ref name='virDomainCreate'/>
           <ref name='virDomainResume'/>
         </word>
         <word name='frozen'>
         <word name='later'>
           <ref name='virDomainGetXMLDesc'/>
         </word>
+        <word name='launch'>
+          <ref name='virDomainCreate'/>
+        </word>
         <word name='level'>
           <ref name='virConnectGetVersion'/>
           <ref name='virCopyLastError'/>
           <ref name='_virDomainKernel'/>
         </word>
         <word name='list'>
+          <ref name='virConnectListDefinedDomains'/>
           <ref name='virConnectListDomains'/>
         </word>
         <word name='listed'>
         <word name='monitoring'>
           <ref name='virConnectClose'/>
         </word>
+        <word name='moves'>
+          <ref name='virDomainCreate'/>
+        </word>
         <word name='multithreaded'>
           <ref name='virConnGetLastError'/>
           <ref name='virGetLastError'/>
           <ref name='virDomainGetName'/>
           <ref name='virDomainLookupByName'/>
         </word>
+        <word name='names'>
+          <ref name='virConnectListDefinedDomains'/>
+        </word>
         <word name='nanoseconds'>
           <ref name='_virDomainInfo'/>
         </word>
           <ref name='virConnGetLastError'/>
           <ref name='virConnectClose'/>
           <ref name='virConnectGetVersion'/>
+          <ref name='virDomainDefineXML'/>
           <ref name='virDomainDestroy'/>
           <ref name='virDomainFree'/>
           <ref name='virDomainGetName'/>
           <ref name='virDomainReboot'/>
           <ref name='virDomainSave'/>
           <ref name='virDomainShutdown'/>
+          <ref name='virDomainUndefine'/>
           <ref name='virGetLastError'/>
           <ref name='virGetVersion'/>
         </word>
           <ref name='_virDomainInfo'/>
           <ref name='_virError'/>
           <ref name='_virNodeInfo'/>
+          <ref name='virConnectListDefinedDomains'/>
           <ref name='virConnectListDomains'/>
           <ref name='virConnectNumOfDomains'/>
           <ref name='virDomainGetID'/>
           <ref name='virConnectGetType'/>
           <ref name='virConnectGetVersion'/>
           <ref name='virCopyLastError'/>
+          <ref name='virDomainDefineXML'/>
           <ref name='virGetVersion'/>
         </word>
         <word name='output'>
         <word name='pointed'>
           <ref name='virResetError'/>
         </word>
-        <word name='pointer'>
-          <ref name='virConnCopyLastError'/>
-          <ref name='virConnGetLastError'/>
-          <ref name='virConnResetLastError'/>
-          <ref name='virConnSetErrorFunc'/>
-          <ref name='virConnectClose'/>
-          <ref name='virConnectGetType'/>
-          <ref name='virConnectGetVersion'/>
-          <ref name='virConnectListDomains'/>
-          <ref name='virConnectNumOfDomains'/>
-          <ref name='virConnectOpen'/>
-          <ref name='virConnectOpenReadOnly'/>
-          <ref name='virDefaultErrorFunc'/>
-          <ref name='virDomainCreateLinux'/>
-          <ref name='virDomainGetInfo'/>
-          <ref name='virDomainGetName'/>
-          <ref name='virDomainGetUUID'/>
-          <ref name='virDomainLookupByID'/>
-          <ref name='virDomainLookupByName'/>
-          <ref name='virDomainLookupByUUID'/>
-          <ref name='virDomainRestore'/>
-          <ref name='virGetLastError'/>
-          <ref name='virNodeGetInfo'/>
-          <ref name='virResetError'/>
-          <ref name='virSetErrorFunc'/>
+        <word name='pointers'>
+          <ref name='virConnectListDefinedDomains'/>
         </word>
         <word name='pointing'>
           <ref name='_virDomainKernel'/>
         </word>
+        <word name='pools'>
+          <ref name='virDomainCreate'/>
+        </word>
         <word name='potential'>
           <ref name='virInitialize'/>
         </word>
+        <word name='preferably'>
+          <ref name='virDomainDefineXML'/>
+        </word>
         <word name='printing'>
           <ref name='virSetErrorFunc'/>
         </word>
         </word>
         <word name='provided'>
           <ref name='virConnSetErrorFunc'/>
+          <ref name='virConnectListDefinedDomains'/>
           <ref name='virErrorFunc'/>
           <ref name='virSetErrorFunc'/>
         </word>
           <ref name='_virDomainInfo'/>
           <ref name='virConnectClose'/>
           <ref name='virConnectGetVersion'/>
+          <ref name='virDomainCreate'/>
           <ref name='virDomainDestroy'/>
           <ref name='virDomainFree'/>
           <ref name='virDomainSave'/>
+          <ref name='virDomainUndefine'/>
         </word>
         <word name='runs'>
           <ref name='virDomainGetMaxMemory'/>
         </word>
         <word name='size'>
           <ref name='_virNodeInfo'/>
+          <ref name='virConnectListDefinedDomains'/>
           <ref name='virConnectListDomains'/>
           <ref name='virDomainGetMaxMemory'/>
           <ref name='virDomainSetMaxMemory'/>
         <word name='software'>
           <ref name='virConnectGetType'/>
         </word>
+        <word name='start'>
+          <ref name='virDomainDefineXML'/>
+        </word>
         <word name='startup'>
           <ref name='virInitialize'/>
         </word>
           <ref name='virDomainReboot'/>
           <ref name='virDomainShutdown'/>
         </word>
+        <word name='stop'>
+          <ref name='virDomainUndefine'/>
+        </word>
         <word name='stopped'>
           <ref name='virDomainReboot'/>
           <ref name='virDomainShutdown'/>
         </word>
         <word name='store'>
+          <ref name='virConnectListDefinedDomains'/>
           <ref name='virConnectListDomains'/>
           <ref name='virConnectOpen'/>
         </word>
+        <word name='stores'>
+          <ref name='virConnectListDefinedDomains'/>
+        </word>
         <word name='string'>
           <ref name='_virError'/>
           <ref name='_virNodeInfo'/>
           <ref name='virDomainGetInfo'/>
           <ref name='virNodeGetInfo'/>
         </word>
+        <word name='succeed'>
+          <ref name='virDomainCreate'/>
+        </word>
         <word name='success'>
           <ref name='virConnectClose'/>
+          <ref name='virDomainCreate'/>
           <ref name='virDomainDestroy'/>
           <ref name='virDomainFree'/>
           <ref name='virDomainGetInfo'/>
           <ref name='virDomainSetMemory'/>
           <ref name='virDomainShutdown'/>
           <ref name='virDomainSuspend'/>
+          <ref name='virDomainUndefine'/>
           <ref name='virInitialize'/>
           <ref name='virNodeGetInfo'/>
         </word>
         </word>
       </letter>
       <letter name='u'>
+        <word name='undefine'>
+          <ref name='virDomainUndefine'/>
+        </word>
         <word name='uniform'>
           <ref name='_virNodeInfo'/>
         </word>
index f9453a2fb44bd60ab1484030af5cbcf0a2cd6486..a4471e8b0b1189e5ab28336b9a560455b0e9aa94 100644 (file)
@@ -9,8 +9,10 @@ EXTRA_DIST = libvirt_sym.version
 
 lib_LTLIBRARIES = libvirt.la
 libvirt_la_LIBADD = @LIBXML_LIBS@
+
 libvirt_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libvirt_sym.version \
                     -version-info @LIBVIRT_VERSION_INFO@
+
 libvirt_la_SOURCES =                                           \
                libvirt.c internal.h                            \
                hash.c hash.h                                   \
@@ -22,10 +24,10 @@ libvirt_la_SOURCES =                                                \
                virterror.c                                     \
                driver.h
 
-bin_PROGRAMS=virsh
+bin_PROGRAMS = virsh
 
-virsh_SOURCES=virsh.c
+virsh_SOURCES = virsh.c
 virsh_LDFLAGS =
 virsh_DEPENDENCIES = $(DEPS)
-virsh_LDADD= $(LDADDS) $(VIRSH_LIBS)
+virsh_LDADD = $(LDADDS) $(VIRSH_LIBS)
 
index ba417aa7d0a4c5fb8260e7b682236fb08e5e73f0..b273154be0a80dd3c6e22f0097c76bedca635be1 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -114,6 +114,16 @@ virBufferAdd(virBufferPtr buf, const char *str, int len)
     return (0);
 }
 
+void
+virBufferFree(virBufferPtr buf)
+{
+    if (buf) {
+       if (buf->content)
+              free(buf->content);
+       free(buf);
+    }
+}
+
 /**
  * virBufferVSprintf:
  * @buf:  the buffer to dump
index 8d63b34029c01dd32b696f582cfe6b53fff1f8a7..7121b55d4f3407e0e6d40fb92ac6d4484a6c2505 100644 (file)
--- a/src/xml.h
+++ b/src/xml.h
@@ -24,6 +24,7 @@ struct _virBuffer {
     unsigned int size;      /* The buffer size */
 };
 
+void virBufferFree(virBufferPtr buf);
 int virBufferAdd(virBufferPtr buf, const char *str, int len);
 int virBufferVSprintf(virBufferPtr buf, const char *format, ...);
 char *virDomainParseXMLDesc(const char *xmldesc, char **name);
index 531c2fc76174869bcaf275b3831f65c588623742..eceb2872c609efa829f6e8bb2b81391f2f6dc48c 100644 (file)
@@ -64,7 +64,7 @@ static xmlNodePtr xmlNextElement(xmlNodePtr node)
     return node;
 }
 
-static xmlRpcValuePtr xmlRpcValueUnmarshalDateTime(xmlNodePtr node)
+static xmlRpcValuePtr xmlRpcValueUnmarshalDateTime(xmlNodePtr node ATTRIBUTE_UNUSED)
 {
     /* we don't need this */
     TODO;
@@ -78,7 +78,7 @@ static xmlRpcValuePtr xmlRpcValueUnmarshalString(xmlNodePtr node)
     return ret;
 }
 
-static xmlRpcValuePtr xmlRpcValueUnmarshalBase64(xmlNodePtr node)
+static xmlRpcValuePtr xmlRpcValueUnmarshalBase64(xmlNodePtr node ATTRIBUTE_UNUSED)
 {
     /* we don't need this */
     TODO;
@@ -187,7 +187,7 @@ static xmlRpcValuePtr xmlRpcValueUnmarshalDict(xmlNodePtr node)
 xmlRpcValuePtr xmlRpcValueUnmarshal(xmlNodePtr node)
 {
     xmlNodePtr n;
-    xmlRpcValuePtr ret;
+    xmlRpcValuePtr ret = NULL;
 
     if (xmlStrEqual(node->name, BAD_CAST "value")) {
        n = xmlFirstElement(node);
@@ -371,7 +371,7 @@ xmlRpcValuePtr xmlRpcUnmarshalResponse(xmlNodePtr node, bool *is_fault)
 static char *xmlRpcCallRaw(const char *url, const char *request)
 {
        void *cxt;
-       char *contentType = "text/xml";
+       char *contentType = (char *) "text/xml";
        int len, ret, serrno;
        char *response = NULL;
 
@@ -442,7 +442,7 @@ static char **xmlRpcStringArray(xmlRpcValuePtr value)
            ret[i] = ptr;
            ptr += strlen(s) + 1;
        } else
-           ret[i] = "";
+           ret[i] = (char *) "";
     }
 
     ret[i] = NULL;
@@ -450,29 +450,15 @@ static char **xmlRpcStringArray(xmlRpcValuePtr value)
     return ret;
 }
 
-int xmlRpcCall(xmlRpcContextPtr context, const char *method,
-              const char *retfmt, const char *fmt, ...)
+xmlRpcValuePtr *
+xmlRpcArgvNew(const char *fmt, va_list ap, int *argc)
 {
-    va_list ap;
-    const char *ptr;
-    int argc;
     xmlRpcValuePtr *argv;
-    virBufferPtr buf;
+    const char *ptr;
     int i;
-    char *ret;
-    xmlDocPtr xml;
-    xmlNodePtr node;
-    bool fault;
-    xmlRpcValuePtr value;
-    void *retval;
-
-    argc = strlen(fmt);
-    argv = malloc(sizeof(*argv) * argc);
-
-    va_start(ap, fmt);
-
-    if (retfmt && *retfmt)
-       retval = va_arg(ap, void *);
+    
+    *argc = strlen(fmt);
+    argv = malloc(sizeof(*argv) * *argc);
 
     i = 0;
     for (ptr = fmt; *ptr; ptr++) {
@@ -494,23 +480,54 @@ int xmlRpcCall(xmlRpcContextPtr context, const char *method,
            argv[i]->value.string = strdup(va_arg(ap, const char *));
            break;
        default:
-           return -1;
+           xmlRpcArgvFree(i, argv);  
+           return NULL;
        }
        i++;
     }
-    va_end(ap);
-
-    buf = xmlRpcMarshalRequest(method, argc, argv);
+    return argv;
+}
 
+void
+xmlRpcArgvFree(int argc, xmlRpcValuePtr *argv)
+{
+    int i;
     for (i = 0; i < argc; i++)
        xmlRpcValueFree(argv[i]);
 
     free(argv);
+}
+
+int xmlRpcCall(xmlRpcContextPtr context, const char *method,
+              const char *retfmt, const char *fmt, ...)
+{
+    va_list ap;
+    int argc;
+    xmlRpcValuePtr *argv;
+    virBufferPtr buf;
+    char *ret;
+    xmlDocPtr xml;
+    xmlNodePtr node;
+    bool fault;
+    xmlRpcValuePtr value;
+    void *retval = NULL;
+
+    va_start(ap, fmt);
+    
+    if (retfmt && *retfmt)
+       retval = va_arg(ap, void *);
+    argv = xmlRpcArgvNew(fmt, ap, &argc);
+    
+    va_end(ap);
+
+    buf = xmlRpcMarshalRequest(method, argc, argv);
+
+    xmlRpcArgvFree(argc, argv);
        
     ret = xmlRpcCallRaw(context->uri, buf->content);
 
-    free(buf->content);
-    free(buf);
+    virBufferFree(buf);
 
     xml = xmlReadDoc((const xmlChar *)ret, "response.xml", NULL,
                     XML_PARSE_NOENT | XML_PARSE_NONET |
index 286675380306e9ce683d7b98303486eec591f301..3a8b750f624de76ea46bc78d8d72809ab56f8d6a 100644 (file)
@@ -17,6 +17,7 @@
 #include <stdbool.h>
 #include <stdint.h>
 #include <time.h>
+#include <stdarg.h>
 
 #include "xml.h"
 
@@ -85,6 +86,9 @@ struct _xmlRpcValue {
 
 struct _xmlRpcContext;
 
+xmlRpcValuePtr *xmlRpcArgvNew(const char *fmt, va_list ap, int *argc);
+void xmlRpcArgvFree(int argc, xmlRpcValuePtr *argv);
+
 virBufferPtr xmlRpcMarshalRequest(const char *request,
                                  int argc, xmlRpcValuePtr *argv);
 
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644 (file)
index 0000000..c576a22
--- /dev/null
@@ -0,0 +1,31 @@
+## Process this file with automake to produce Makefile.in
+
+LIBVIRT = $(top_builddir)/src/.libs/libvirt.a
+
+INCLUDES = \
+       -I$(top_builddir)/include \
+       -I$(top_builddir)/src \
+       -I@top_srcdir@/include \
+       @LIBXML_CFLAGS@
+
+LDADDS = \
+       @STATIC_BINARIES@ \
+       @LIBXML_LIBS@ \
+       $(LIBVIRT)
+
+EXTRA_DIST = xmlrpcserver.py
+
+noinst_PROGRAMS = xmlrpctest
+
+# Note: xmlrpc.[c|h] is not in libvirt yet
+xmlrpctest_SOURCES = \
+       xmlrpctest.c \
+       testutils.c testutils.h \
+       $(top_builddir)/src/xmlrpc.c \
+       $(top_builddir)/src/xmlrpc.h
+
+xmlrpctest_LDFLAGS =
+xmlrpctest_LDADD = $(LDADDS)
+
+$(LIBVIRT):
+       -@(cd $(top_builddir)/src && $(MAKE) MAKEFLAGS+=--silent)
diff --git a/tests/test_xmlrpc.sh b/tests/test_xmlrpc.sh
new file mode 100755 (executable)
index 0000000..ccdfdbc
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+./xmlrpcserver.py >/dev/null 2>&1 &
+sleep 1
+./xmlrpctest
+pkill -f xmlrpcserver.py  >/dev/null 2>&1 &
diff --git a/tests/testutils.c b/tests/testutils.c
new file mode 100644 (file)
index 0000000..d79b9e5
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * utils.c: basic test utils
+ *
+ * Copyright (C) 2005 Red Hat, Inc.
+ *
+ * See COPYING.LIB for the License of this software
+ *
+ * Karel Zak <kzak@redhat.com>
+ *
+ * $Id$
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+
+#include "testutils.h"
+
+#define GETTIMEOFDAY(T) gettimeofday(T, NULL)
+#define DIFF_MSEC(T, U) \
+               ((((int) ((T)->tv_sec - (U)->tv_sec)) * 1000000.0 + \
+                  ((int) ((T)->tv_usec - (U)->tv_usec))) / 1000.0)
+
+double
+virtTestCountAverage(double *items, int nitems)
+{
+       long double sum = 0;
+       int i;
+
+       for (i=1; i < nitems; i++)
+               sum += items[i];
+
+       return (double) (sum / nitems);
+}
+
+/* 
+ * Runs test anf count average time (if the nloops is grater than 1)
+ * 
+ * returns: -1 = error, 0 = success 
+ */
+int
+virtTestRun(const char *title, int nloops, int (*body)(void *data), void *data)
+{
+       int i, ret = 0;
+       double *ts = NULL;
+       
+       if (nloops > 1 && (ts = calloc(nloops, 
+                               sizeof(double)))==NULL)
+               return -1;
+       
+       for (i=0; i < nloops; i++) {
+               struct timeval before, after;
+
+               if (ts)
+                       GETTIMEOFDAY(&before);
+               if ((ret = body(data)) != 0)
+                       break;
+               if (ts) {
+                       GETTIMEOFDAY(&after);
+                       ts[i] = DIFF_MSEC(&after, &before);
+               }
+       }
+       if (ret == 0 && ts)
+               fprintf(stderr, "%-50s ... OK     [%.5f ms]\n", title, 
+                               virtTestCountAverage(ts, nloops));
+       else if (ret == 0)
+               fprintf(stderr, "%-50s ... OK\n", title);
+       else
+               fprintf(stderr, "%-50s ... FAILED\n", title);
+
+       if (ts)
+               free(ts);
+       return ret;  
+}
diff --git a/tests/testutils.h b/tests/testutils.h
new file mode 100644 (file)
index 0000000..8976e82
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * utils.c: test utils
+ *
+ * Copyright (C) 2005 Red Hat, Inc.
+ *
+ * See COPYING.LIB for the License of this software
+ *
+ * Karel Zak <kzak@redhat.com>
+ *
+ * $Id$
+ */
+
+#ifndef __VIT_TEST_UTILS_H__
+#define __VIT_TEST_UTILS_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+double virtTestCountAverage    (double *items, 
+                                int nitems);
+
+int    virtTestRun             (const char *title, 
+                                int nloops, 
+                                int (*body)(void *data), 
+                                void *data);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* __VIT_TEST_UTILS_H__ */
+
diff --git a/tests/xmlrpcserver.py b/tests/xmlrpcserver.py
new file mode 100755 (executable)
index 0000000..debff93
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+
+#
+# xmlrpcserver.py: simple server for XML-RPC tests
+#
+# Copyright (C) 2005 Red Hat, Inc.
+#
+# See COPYING.LIB for the License of this software
+#
+# Karel Zak <kzak@redhat.com>
+#
+# $Id$
+#
+#
+# simple client:
+#
+# >>> import xmlrpclib
+# >>> s=xmlrpclib.Server('http://localhost:8000')
+# >>> s.plus(10,10)
+# 20
+#
+
+import sys
+from SimpleXMLRPCServer import SimpleXMLRPCServer
+
+SERVER_PORT = 8000
+
+
+class VirtRPCServer(SimpleXMLRPCServer):
+    def _dispatch(self, method, params):
+        try:
+            func = getattr(self, 'test_' + method)
+        except AttributeError:
+            raise Exception('method "%s" is not supported' % method)
+        else:
+            return func(*params)
+
+    def test_plus(self, x, y):
+        return x + y
+
+
+server = VirtRPCServer(("localhost", SERVER_PORT))
+server.serve_forever()
+
+
+
+# vim: set tabstop=4:
+# vim: set shiftwidth=4:
+# vim: set expandtab:
diff --git a/tests/xmlrpctest.c b/tests/xmlrpctest.c
new file mode 100644 (file)
index 0000000..02f0fa4
--- /dev/null
@@ -0,0 +1,245 @@
+/*
+ * xmlrpctest.c: simple client for XML-RPC tests
+ *
+ * Copyright (C) 2005 Red Hat, Inc.
+ *
+ * See COPYING.LIB for the License of this software
+ *
+ * Karel Zak <kzak@redhat.com>
+ *
+ * $Id$
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <limits.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <libxml/xpath.h>
+
+#include "libvirt.h"
+#include "xml.h"
+#include "xmlrpc.h"
+
+#include "testutils.h"
+
+
+#define NLOOPS  100     /* default number of loops per test */
+
+static char *progname;
+
+
+static int
+testMethodPlusINT(void *data)
+{
+    int retval = 0;
+    xmlRpcContextPtr cxt = (xmlRpcContextPtr) data;
+    
+    if (xmlRpcCall(cxt, "plus", "i", "ii", 
+            (const char *) &retval, 10, 10) < 0)
+        return -1;
+        
+    return retval==(10+10) ? 0 : -1;   
+}
+
+static int
+testMethodPlusDOUBLE(void *data)
+{
+    double retval = 0;
+    xmlRpcContextPtr cxt = (xmlRpcContextPtr) data;
+    
+    if (xmlRpcCall(cxt, "plus", "f", "ff", 
+            (const char *) &retval, 10.1234, 10.1234) < 0)
+        return -1;
+        
+    return retval==(10.1234+10.1234) ? 0 : -1;   
+}
+
+static virBufferPtr
+marshalRequest(const char *fmt, ...)
+{
+    int argc;
+    xmlRpcValuePtr *argv;
+    virBufferPtr buf;
+    va_list ap;
+    
+    va_start(ap, fmt);
+    argv = xmlRpcArgvNew(fmt, ap, &argc);
+    va_end(ap);
+    
+    buf = xmlRpcMarshalRequest("test", argc, argv);
+
+    xmlRpcArgvFree(argc, argv);
+    return buf;
+}
+
+static int
+checkRequestValue(const char *xmlstr, const char *xpath, int type, void *expected)
+{
+    xmlDocPtr xml = NULL;
+    xmlXPathContextPtr ctxt = NULL;
+    xmlXPathObjectPtr obj = NULL;
+    int ret = -1;
+    
+    xml = xmlReadDoc((const xmlChar *) xmlstr, "xmlrpctest.xml", NULL,
+                          XML_PARSE_NOENT | XML_PARSE_NONET |
+                          XML_PARSE_NOERROR | XML_PARSE_NOWARNING);
+    if (!xml)
+        goto error;
+    
+    if (!(ctxt = xmlXPathNewContext(xml)))
+        goto error;
+    
+    if (!(obj = xmlXPathEval(BAD_CAST xpath, ctxt)))
+        goto error;
+
+    switch(type) {
+        case XML_RPC_INTEGER:
+            if ((obj->type != XPATH_NUMBER) || 
+                    ((int) obj->floatval != *((int *)expected)))
+                goto error;
+            break;
+         case XML_RPC_DOUBLE:
+            if ((obj->type != XPATH_NUMBER) || 
+                    ((double) obj->floatval != *((double *)expected)))
+                goto error;
+            break;
+         case XML_RPC_STRING:
+            if ((obj->type != XPATH_STRING) || 
+                    (strcmp((const char *)obj->stringval, (const char *)expected)))
+                goto error;
+            break;
+        default:
+            goto error;
+    }
+    ret = 0;
+
+error:    
+    if (obj)
+        xmlXPathFreeObject(obj);
+    if (ctxt)
+        xmlXPathFreeContext(ctxt);
+    if (xml)
+        xmlFreeDoc(xml);
+    return ret;
+}
+
+static int
+testMarshalRequestINT(void *data)
+{
+    int num = INT_MAX;
+    int ret = 0;
+    int check = data ? *((int *)data) : 0;
+    virBufferPtr buf = marshalRequest("i", num);
+
+    if (check)
+        ret = checkRequestValue(buf->content, 
+                "number(/methodCall/params/param[1]/value/int)",
+                XML_RPC_INTEGER, (void *) &num);
+    
+    virBufferFree(buf);
+    return ret;
+}
+
+static int
+testMarshalRequestSTRING(void *data ATTRIBUTE_UNUSED)
+{
+    const char *str = "This library will be really sexy.";
+    int ret = 0;
+    int check = data ? *((int *)data) : 0;
+    virBufferPtr buf = marshalRequest("s", str);
+
+    if (check)
+        ret = checkRequestValue(buf->content, 
+                "string(/methodCall/params/param[1]/value/string)",
+                XML_RPC_STRING, (void *) str);
+    
+    virBufferFree(buf);
+    return ret;
+}
+
+static int
+testMarshalRequestDOUBLE(void *data)
+{
+    double num = 123456789.123;
+    int ret = 0;
+    int check = data ? *((int *)data) : 0;
+    virBufferPtr buf = marshalRequest("f", num);
+
+    if (check)
+        ret = checkRequestValue(buf->content, 
+                "number(/methodCall/params/param[1]/value/double)",
+                XML_RPC_DOUBLE, (void *) &num);
+    
+    virBufferFree(buf);
+    return ret;
+}
+
+int
+main(int argc, char **argv)
+{
+       xmlRpcContextPtr cxt = NULL;
+    int check = 1;
+       int ret = 0;
+    const char *url = "http://localhost:8000";
+
+       progname = argv[0];
+
+       if (argc > 2)
+       {
+               fprintf(stderr, "Usage: %s [url]\n", progname); 
+               exit(EXIT_FAILURE);
+       }
+    if (argc == 2)
+        url = argv[1];
+            
+       if (!(cxt = xmlRpcContextNew(url)))
+       {
+               fprintf(stderr, "%s: failed create new RPC context\n", progname);
+               exit(EXIT_FAILURE);
+       }
+
+    /* client-server tests */
+    if (virtTestRun("XML-RPC methodCall INT+INT", 
+                NLOOPS, testMethodPlusINT, (void *) cxt) != 0)
+        ret = -1;
+    
+    if (virtTestRun("XML-RPC methodCall DOUBLE+DOUBLE", 
+                NLOOPS, testMethodPlusDOUBLE, (void *) cxt) != 0)
+        ret = -1;
+    
+    /* regression / performance tests */
+    if (virtTestRun("XML-RPC request marshalling: INT (check)", 
+                1, testMarshalRequestINT, (void *) &check) != 0)
+        ret = -1;
+    if (virtTestRun("XML-RPC request marshalling: INT", 
+                NLOOPS, testMarshalRequestINT, NULL) != 0)
+        ret = -1;
+    
+    if (virtTestRun("XML-RPC request marshalling: DOUBLE (check)", 
+                1, testMarshalRequestDOUBLE, (void *) &check) != 0)
+        ret = -1;
+    if (virtTestRun("XML-RPC request marshalling: DOUBLE", 
+                NLOOPS, testMarshalRequestDOUBLE, NULL) != 0)
+        ret = -1;
+
+    if (virtTestRun("XML-RPC request marshalling: STRING (check)", 
+                1, testMarshalRequestSTRING, (void *) &check) != 0)
+        ret = -1;
+    if (virtTestRun("XML-RPC request marshalling: STRING", 
+                NLOOPS, testMarshalRequestSTRING, NULL) != 0)
+        ret = -1;
+    
+       xmlRpcContextFree(cxt);
+
+       exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+
+/*
+ * vim: set tabstop=4:
+ * vim: set shiftwidth=4:
+ * vim: set expandtab:
+ */