mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-08-22 01:50:06 +03:00
Compare commits
78 Commits
Author | SHA1 | Date | |
---|---|---|---|
5b470f32c3 | |||
d2090e649b | |||
3ce465f819 | |||
407df0f164 | |||
09f1c2041d | |||
801a8f2e7b | |||
2579443e21 | |||
7c61b48202 | |||
67b17df9d2 | |||
d4a6fe9f99 | |||
62ee5d5711 | |||
3a50451e84 | |||
a528e97383 | |||
17fc060be7 | |||
7b72ef296f | |||
dfc4b8a7d0 | |||
c2b690f1bd | |||
c7d7aa1cd1 | |||
be03daaab2 | |||
497f252015 | |||
038b434f14 | |||
924de9c3d1 | |||
b7909d3276 | |||
c5adab5270 | |||
76a7098407 | |||
7f8639261a | |||
5bb81e1d87 | |||
f1eed04b2d | |||
b53c4e51f8 | |||
3163224bb5 | |||
56a3cb8086 | |||
513bd04ce1 | |||
425cf2e792 | |||
ae15bc7245 | |||
94c2255d81 | |||
cedd94662d | |||
dc1824b780 | |||
928a84e10d | |||
71c061d559 | |||
b8fb14a905 | |||
f4d2430d6c | |||
16fd2b6b61 | |||
f15efcdf27 | |||
870dba07b1 | |||
979bb2bb67 | |||
f163895204 | |||
ccb19376f7 | |||
623ec4d2f2 | |||
2fe1c38796 | |||
ea1c08e78d | |||
a34bcb7829 | |||
96c795328d | |||
cefa185c1f | |||
d8b363c35f | |||
ca7047f122 | |||
08ecf61b35 | |||
7ae13660cf | |||
8885191702 | |||
62b4c870aa | |||
a7892ee000 | |||
384f26525f | |||
3e59e29859 | |||
adbf991a1d | |||
dc232cdf1b | |||
af1c7f96a8 | |||
77ed8ded7b | |||
8d2d44ad05 | |||
c3501d4792 | |||
028e4a6116 | |||
f5ade63437 | |||
d4cbf4c624 | |||
2a4c20437d | |||
4d6a8a1c0a | |||
0075d7e74a | |||
869f8d0e7d | |||
65c4379c53 | |||
4090a0870c | |||
f9e94c2e13 |
2
AUTHORS
2
AUTHORS
@ -40,6 +40,8 @@ Patches have also been contributed by:
|
||||
Chris Lalancette <clalance@redhat.com>
|
||||
Guido Guenther <agx@sigxcpu.org>
|
||||
Daniel Hokka Zakrisson <daniel@hozac.com>
|
||||
Mads Chr. Olesen <shiyee@shiyee.dk>
|
||||
Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
[....send patches to get your name here....]
|
||||
|
||||
|
490
ChangeLog
490
ChangeLog
@ -1,3 +1,493 @@
|
||||
Tue Apr 8 18:44:27 CEST 2008 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* configure.in NEWS doc/* po/*: making libvirt-0.4.2 release
|
||||
|
||||
Mon Apr 8 17:32:07 CET 2008 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
* configure.in (ALL_LINGUAS): Fix typo: s/Latn/latin/.
|
||||
|
||||
Don't fail to read a file because it's non-seekable (e.g., a pipe).
|
||||
* src/util.c (fread_file_lim): New function.
|
||||
(__virFileReadAll): Use fread_file_lim, rather than requiring
|
||||
that stat.st_size provide a usable file size.
|
||||
* tests/read-non-seekable: New test, for the above.
|
||||
* tests/Makefile.am (test_scripts): Add read-non-seekable.
|
||||
* tests/test-lib.sh (mkfifo_or_skip_): New helper function.
|
||||
|
||||
Tue Apr 8 13:24:00 BST 2008 Richard W.M. Jones <rjones@redhat.com>
|
||||
|
||||
* src/qemu_driver.c: Handle errors from fork(2) and pipe(2)
|
||||
system calls when creating qemu subprocess.
|
||||
|
||||
Tue Apr 8 11:50:42 CEST 2008 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* po/sr.po po/sr@Latn.po po/sr@latin.po: fix/update serbian
|
||||
translations.
|
||||
|
||||
Tue Apr 8 11:24:28 CEST 2008 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* src/test.c: patch from Cole Robinson adding xen and hvm guest types
|
||||
to the test driver's capabilities.
|
||||
|
||||
Tue Apr 8 10:19:01 CEST 2008 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* python/generator.py: fix an infinite loop bug
|
||||
|
||||
Mon Apr 7 14:36:56 CET 2008 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
* tests/vcpupin: Add a test for the 2008-04-04 virsh.c bugfix.
|
||||
|
||||
Mon Apr 7 12:53:01 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* docs/bugs.html docs/libvir.html: update the page bugzilla URIs
|
||||
depending on the set the user is running.
|
||||
|
||||
Fri Apr 4 11:00:08 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* src/libvirt.c: Don't run polkit-auth if running as root
|
||||
* qemud/qemud.c, qemud/remote.c, qemud/internal.h: Don't
|
||||
ask client for polkit auth if they are running as root
|
||||
|
||||
Fri Apr 4 13:19:08 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/virsh.c: patch from Shigeki Sakamoto adding message on vcpupin
|
||||
|
||||
Fri Apr 4 10:04:23 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* docs//* po/*: regenerated the documentation and reextracted the
|
||||
full set of localization strings to push to the translation team.
|
||||
|
||||
Fri Apr 4 09:56:42 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* docs//* src/conf.c src/hash.c src/libvirt.c src/proxy_internal.c
|
||||
src/remote_internal.c src/virsh.c src/xen_internal.c
|
||||
src/xend_internal.c src/xml.c: applied patch from Atsushi SAKAI
|
||||
fixing a lot of typos
|
||||
|
||||
Fri Apr 4 09:29:08 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/test.c: patch from Cole Robinson to add
|
||||
virNodeGetCellsFreeMemory to the test driver
|
||||
|
||||
Wed Apr 2 17:19:00 BST 2008 Richard W.M. Jones <rjones@redhat.com>
|
||||
|
||||
C99 initializer on __lastErr
|
||||
* src/virterror.c: Use C99 initializers to make initialization
|
||||
of __lastErr clearer (Guido Günther).
|
||||
|
||||
Tue Apr 1 15:00:03 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/lxc_conf.c: patch from Dave Leskovec fixing an freed memory
|
||||
access I introduced yesterday
|
||||
|
||||
Mon Mar 31 16:35:47 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/hash.c src/internal.h src/virterror.c: remove dandling
|
||||
domain/net/conn pointers from error data when released.
|
||||
* src/lxc_driver.c: fix a NULL/0 return error mismatch
|
||||
|
||||
Mon Mar 31 14:12:42 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* configure.in: small patch from Mike Gerdts to avoid problems with
|
||||
older awk implementations, fixes #439649
|
||||
|
||||
Mon Mar 31 13:58:25 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/lxc_conf.c src/lxc_conf.h: cleanup patch for the conf driver
|
||||
of linux countainers, reuse XPath helpers, make string fields dynamic
|
||||
and remove a memory leak.
|
||||
* src/lxc_driver.c: avoid some problems when the config directory is
|
||||
not accessible and for regression tests
|
||||
|
||||
Fri Mar 28 16:34:56 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* src/network.rng: Add new routed networking schema
|
||||
* src/iptables.c, src/iptables.h: Add iptablesAddForwardAllowRelatedIn
|
||||
and iptablesRemoveForwardAllowRelatedIn
|
||||
* src/qemu_conf.h: Add attribute for routed networking
|
||||
* src/qemu_conf.c: Parse / format new networking attributes
|
||||
* src/qemu_driver.c: Support routed networking config
|
||||
(patches from Mads Chr. Olesen)
|
||||
|
||||
Fri Mar 28 13:55:56 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* src/storage_conf.c: Fix XML output tag for FS storage pools
|
||||
directory path
|
||||
|
||||
Thu Mar 27 20:59:56 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* src/iptables.c: Ensure masquering rule only catches traffic
|
||||
leaving the virtual network, and not traffic inside it
|
||||
(patch from Charles Duffy)
|
||||
|
||||
Thu Mar 27 14:36:56 CET 2008 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
lxcError: mark a string and add to the list of nearly-checked functions
|
||||
* Makefile.maint (msg_gen_function): Add, but commented-out.
|
||||
* src/lxc_conf.c (lxcParseXML): Mark a diagnostic for translation.
|
||||
|
||||
testError: mark most string arguments for translation
|
||||
* Makefile.maint (msg_gen_function): Add testError
|
||||
* src/test.c (testDomainSave, testDomainRestore): Mark strings.
|
||||
(testDomainCoreDump): Likewise.
|
||||
|
||||
openvzLog: mark its string arguments for translation
|
||||
* Makefile.maint (msg_gen_function): Add openvzLog.
|
||||
* src/openvz_conf.c (openvzAssignVMDef, openvzParseXML): Mark strings.
|
||||
* src/openvz_driver.c (openvzDomainShutdown, openvzDomainReboot):
|
||||
(openvzDomainDefineXML, openvzDomainCreateLinux):
|
||||
(openvzDomainCreate, openvzDomainUndefine): Likewise.
|
||||
|
||||
error: mark most string arguments for translation
|
||||
Also mark some arguments to __virRaiseError.
|
||||
* Makefile.maint (msg_gen_function): Add error.
|
||||
* po/POTFILES.in: Add src/openvz_conf.c and src/openvz_driver.c.
|
||||
* src/openvz_conf.c (openvzParseXML, openvzGetVPSInfo): Mark strings.
|
||||
* src/openvz_driver.c (openvzDomainLookupByID): Likewise.
|
||||
(openvzDomainLookupByUUID, openvzDomainLookupByName): Likewise.
|
||||
(openvzDomainGetInfo, openvzDomainShutdown, openvzDomainReboot)
|
||||
(openvzDomainCreate, openvzDomainUndefine): Likewise.
|
||||
* src/remote_internal.c (check_cert_file): Likewise.
|
||||
(negotiate_gnutls_on_connection, verify_certificate): Likewise.
|
||||
(remoteAuthenticate, addrToString, remoteAuthSASL): Likewise.
|
||||
(remoteAuthPolkit, call, really_read_buf): Likewise.
|
||||
|
||||
Convert diagnostics like "VAR > MAX_VAR" to translatable messages.
|
||||
* src/remote_internal.c (errorf): New function.
|
||||
(remoteListDomains, remoteDomainPinVcpu, remoteDomainGetVcpus):
|
||||
(remoteListDefinedDomains, remoteListNetworks):
|
||||
(remoteListDefinedNetworks): Convert strings to be translatable,
|
||||
and also to include offending and maximum values. Use errorf.
|
||||
|
||||
qemudReportError: mark for translation string args to this function
|
||||
* Makefile.maint (msg_gen_function): Add qemudReportError.
|
||||
* src/qemu_conf.c (qemudLoadDriverConfig)
|
||||
(qemudExtractVersion, qemudParseDiskXML, qemudParseInterfaceXML)
|
||||
(qemudParseInputXML, qemudParseXML, qemudNetworkIfaceConnect)
|
||||
(qemudBuildCommandLine, qemudSaveConfig, qemudParseVMDeviceDef)
|
||||
(qemudAssignVMDef, qemudSaveVMDef, qemudSaveNetworkConfig)
|
||||
(qemudParseDhcpRangesXML, qemudParseNetworkXML)
|
||||
(qemudAssignNetworkDef, qemudSaveNetworkDef, qemudGenerateXML)
|
||||
(qemudGenerateNetworkXML, qemudDeleteConfig): Mark strings.
|
||||
* src/qemu_driver.c (qemudBuildDnsmasqArgv, qemudAddIptablesRules)
|
||||
(qemudGetCapabilities, qemudDomainGetOSType)
|
||||
(qemudListDefinedDomains, qemudListNetworks)
|
||||
(qemudListDefinedNetworks, qemudNetworkGetBridgeName): Mark strings.
|
||||
|
||||
ReportError: mark for translation string args to this function
|
||||
* Makefile.maint (msg_gen_function): Add ReportError.
|
||||
* src/util.c (_virExec): Mark strings.
|
||||
|
||||
xenXMError: mark for translation string args to this function
|
||||
* Makefile.maint (msg_gen_function): Add xenXMError.
|
||||
* src/xm_internal.c (xenXMParseXMLToConfig, xenXMDomainDefineXML):
|
||||
(xenXMDomainAttachDevice, xenXMDomainDetachDevice): Mark strings.
|
||||
|
||||
Mark many more strings for translation.
|
||||
* Makefile.maint (err_func_re): Add to the list and make it readable.
|
||||
* po/POTFILES.in: Add src/util.c and src/xm_internal.c, and sort.
|
||||
* src/storage_backend.c: Fix comment.
|
||||
* src/util.c (virFileLinkPointsTo): Mark a string.
|
||||
* qemud/remote.c (remoteDispatchClientRequest): Mark strings.
|
||||
(remoteDispatchOpen, CHECK_CONN, remoteDispatchGetType): Likewise.
|
||||
(remoteDispatchDomainGetSchedulerType): Likewise.
|
||||
(remoteDispatchDomainGetSchedulerParameters): Likewise.
|
||||
(remoteDispatchDomainSetSchedulerParameters): Likewise.
|
||||
(remoteDispatchDomainBlockStats): Likewise.
|
||||
(remoteDispatchDomainInterfaceStats): Likewise.
|
||||
(remoteDispatchDomainAttachDevice, remoteDispatchDomainCreate):
|
||||
(remoteDispatchDomainDestroy, remoteDispatchDomainDetachDevice):
|
||||
(remoteDispatchDomainDumpXml, remoteDispatchDomainGetAutostart):
|
||||
(remoteDispatchDomainGetInfo, remoteDispatchDomainGetMaxMemory):
|
||||
(remoteDispatchDomainGetMaxVcpus, remoteDispatchDomainGetOsType):
|
||||
(remoteDispatchDomainGetVcpus): Likewise.
|
||||
(remoteDispatchDomainMigratePerform): Likewise.
|
||||
(remoteDispatchListDefinedDomains, remoteDispatchDomainPinVcpu):
|
||||
(remoteDispatchDomainReboot, remoteDispatchDomainResume):
|
||||
(remoteDispatchDomainSave, remoteDispatchDomainCoreDump):
|
||||
(remoteDispatchDomainSetAutostart): Likewise.
|
||||
(remoteDispatchDomainSetMaxMemory, remoteDispatchDomainSetMemory):
|
||||
(remoteDispatchDomainSetVcpus, remoteDispatchDomainShutdown):
|
||||
(remoteDispatchDomainSuspend, remoteDispatchDomainUndefine):
|
||||
(remoteDispatchListDefinedNetworks, remoteDispatchListDomains):
|
||||
(remoteDispatchListNetworks, remoteDispatchNetworkCreate):
|
||||
(remoteDispatchNetworkDestroy, remoteDispatchNetworkDumpXml):
|
||||
(remoteDispatchNetworkGetAutostart, remoteDispatchNetworkGetBridgeName):
|
||||
(remoteDispatchNetworkSetAutostart, remoteDispatchNetworkUndefine):
|
||||
(addrToString, remoteDispatchAuthSaslInit, remoteDispatchAuthSaslStart):
|
||||
(remoteDispatchAuthSaslStep, remoteDispatchListDefinedStoragePools):
|
||||
(remoteDispatchListStoragePools, remoteDispatchStoragePoolCreate):
|
||||
(remoteDispatchStoragePoolBuild, remoteDispatchStoragePoolDestroy):
|
||||
(remoteDispatchStoragePoolDelete, remoteDispatchStoragePoolRefresh):
|
||||
(remoteDispatchStoragePoolGetInfo, remoteDispatchStoragePoolDumpXml):
|
||||
(remoteDispatchStoragePoolGetAutostart): Likewise.
|
||||
(remoteDispatchStoragePoolSetAutostart):
|
||||
(remoteDispatchStoragePoolListVolumes):
|
||||
(remoteDispatchStoragePoolNumOfVolumes):
|
||||
(remoteDispatchStoragePoolUndefine, remoteDispatchStorageVolCreateXml):
|
||||
(remoteDispatchStorageVolDelete, remoteDispatchStorageVolGetInfo):
|
||||
(remoteDispatchStorageVolDumpXml, remoteDispatchStorageVolGetPath):
|
||||
(remoteDispatchStorageVolLookupByName): Likewise.
|
||||
* src/qemu_driver.c (qemudOpenMonitor, qemudStartVMDaemon):
|
||||
(dhcpStartDhcpDaemon, qemudStartNetworkDaemon):
|
||||
(qemudDomainSuspend, qemudDomainResume, qemudDomainShutdown):
|
||||
(qemudDomainGetOSType, qemudDomainSetMaxMemory):
|
||||
(qemudDomainSetMemory, qemudDomainGetInfo, qemudDomainSave):
|
||||
(qemudDomainRestore, qemudDomainDumpXML, qemudDomainStart):
|
||||
(qemudDomainUndefine, qemudDomainChangeCDROM):
|
||||
(qemudDomainAttachDevice, qemudDomainGetAutostart):
|
||||
(qemudDomainSetAutostart, qemudDomainInterfaceStats):
|
||||
(qemudNetworkLookupByUUID, qemudNetworkLookupByName):
|
||||
(qemudNetworkUndefine, qemudNetworkStart, qemudNetworkDestroy):
|
||||
(qemudNetworkDumpXML, qemudNetworkGetAutostart):
|
||||
(qemudNetworkSetAutostart): Likewise.
|
||||
* src/virsh.c (cmdVcpupin, cmdAttachDevice, cmdDetachDevice): Likewise.
|
||||
* src/xm_internal.c (xenXMConfigCacheRefresh, xenXMDomainPinVcpu):
|
||||
Likewise.
|
||||
|
||||
Thu Mar 27 10:30:12 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/lxc_conf.c src/lxc_conf.h src/lxc_driver.c src/remote_internal.c:
|
||||
applied patch from Dan Berrange to change the way the lxc driver
|
||||
works, migrating the support in the daemon, it also removes some
|
||||
compilation issues and teh way the configuration files are named.
|
||||
|
||||
Thu Mar 27 09:09:34 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/storage_backend_iscsi.c: patch from Chris Lalancette to improve
|
||||
support with older versions of iscsiadm.
|
||||
|
||||
Wed Mar 26 14:00:47 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/xen_internal.c proxy/libvirt_proxy.c: fix Xen hypercall for
|
||||
Xen-3.2, and merged its debugging with the general library facility
|
||||
|
||||
Wed Mar 26 12:57:00 UTC 2008 Richard W.M. Jones <rjones@redhat.com>
|
||||
|
||||
* po/lt.po: Fixed typo (Beth Kon).
|
||||
|
||||
Tue Mar 25 10:23:00 UTC 2008 Richard W.M. Jones <rjones@redhat.com>
|
||||
|
||||
* src/virsh.c: Additional error messages for missing
|
||||
parameters (Shigeki Sakamoto).
|
||||
|
||||
Mon Mar 24 11:56:58 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/qemu_driver.c: remove trailing newlines from error messages
|
||||
patch from Guido Günther
|
||||
|
||||
Mon Mar 24 11:47:47 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/qemu_driver.c: applied patch from Guido Günther to make error
|
||||
strings as translatable
|
||||
|
||||
Mon Mar 24 11:16:58 CET 2008 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
* Makefile.maint (err_func_re): Add lxcError.
|
||||
|
||||
* qemud/remote.c: Don't include <getopt.h>. Not used.
|
||||
|
||||
Sync Makefile rules from coreutils.
|
||||
* Makefile.maint: Merge.
|
||||
* GNUmakefile: Update from coreutils.
|
||||
|
||||
Add new testing framework and the first test to use it.
|
||||
* tests/Makefile.am (test_scripts): Add vcpupin.
|
||||
(EXTRA_DIST): Add test-lib.sh.
|
||||
* tests/test-lib.sh: Testing framework, from coreutils.
|
||||
* tests/vcpupin: New file.
|
||||
* build-aux/mktempd: New file, from gnulib.
|
||||
* bootstrap: Add posix-shell and mktempd to the list of imported modules.
|
||||
* gnulib/m4/posix-shell.m4: New file, from gnulib.
|
||||
|
||||
Fix bugs in tests/Makefile.am.
|
||||
* tests/Makefile.am (TESTS_ENVIRONMENT): Correct invalid
|
||||
settings of abs_top_builddir and abs_top_srcdir.
|
||||
Also prepend src/ to PATH, so we test the just-built virsh,
|
||||
not whatever happens to be in the original $PATH.
|
||||
|
||||
Mon Mar 24 10:20:21 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/xend_internal.c: applied patch from Saori Fukuta adding the
|
||||
scheduler API for the Xen daemon driver
|
||||
* po/POTFILES.in: add the two new linux container modules
|
||||
|
||||
Fri Mar 21 15:59:53 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* configure.in include/libvirt/virterror.h src/Makefile.am
|
||||
src/driver.h src/lxc_conf.[ch] src/lxc_driver.[ch] src/virterror.c:
|
||||
Applied 3 patches from Dave Leskovec for intial support of
|
||||
Linux containers, configured off by default, work in progress.
|
||||
* src/libvirt.c: improve virDomainCreateLinux xmlDesc description
|
||||
|
||||
Thu Mar 20 12:23:03 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/util.c src/util.h src/xml.c: applied patch from Hiroyuki Kaguchi
|
||||
fixing Ethernet MAC addresses parsingand separating as an util
|
||||
function, with added comments from Jim Meyering
|
||||
|
||||
Wed Mar 19 15:31:34 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/qemu_conf.c src/qemu_conf.h src/qemu_driver.c: applied patch
|
||||
from Cole Robinson implementing memory operations for qemu driver
|
||||
|
||||
Tue Mar 18 23:31:26 CET 2008 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
Avoid "make syntax-check" failure.
|
||||
* src/xen_unified.c: Remove trailing blank.
|
||||
|
||||
Mon Mar 17 13:24:22 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* configure.in: Add WITH_PROXY to config.h file
|
||||
* src/remote_internal.c: Handle local Xen URIs if Xen drivers
|
||||
declines them
|
||||
* src/xen_unfied.c: Use explicit logic for opening sub-drivers
|
||||
rather than a hacked loop.
|
||||
* src/xend_internal.c: Don't complain about failing to open
|
||||
xend when non-root read-only.
|
||||
|
||||
Mon Mar 17 17:55:56 CET 2008 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
Treat ENOTSUP like ENODATA, after failed fgetfilecon.
|
||||
* src/storage_backend.c (virStorageBackendUpdateVolInfoFD): Treat a
|
||||
failed fgetfilecon with errno == ENOTSUP the same as for ENODATA.
|
||||
|
||||
Mon Mar 17 17:40:12 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* libvirt.c: fixed DefinedDomains function comments c.f. 437216
|
||||
* docs/libvirt-*.xml docs/*/libvirt-libvirt.html: regenerated
|
||||
|
||||
Mon Mar 17 11:10:22 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* src/storage_driver.c: Don't crash if backend is missing the
|
||||
startPool operation, and run refreshPool when creating an
|
||||
unmanaged pool
|
||||
|
||||
Mon Mar 17 11:09:22 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* src/storage_backend.c: Cope with missing SELinux context
|
||||
data by ignoring the error
|
||||
|
||||
Mon Mar 17 11:46:09 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/libvirt.c docs/libvirt-*.xml docs/html/libvirt-libvirt.html:
|
||||
fixed a few missing argument descriptions and regenerated.
|
||||
|
||||
Mon Mar 17 11:23:32 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* NEWS virsh.1 docs//* include/libvirt/libvirt.h[.in] qemud/mdns.h
|
||||
src/libvirt.c src/qemu.conf src/remote_internal.c src/xend_internal.c
|
||||
tests/confdata/libvirtd.conf tests/confdata/libvirtd.out: patch from
|
||||
Atsushi SAKAI fixing a ot more typo
|
||||
|
||||
Fri Mar 14 16:38:34 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* src/bridge.c, src/bridge.h: Don't set MAC address on TAP
|
||||
device.
|
||||
* src/qemu_conf.c: Pass ifname= param along with TAP file
|
||||
handle for Xenner
|
||||
|
||||
Fri Mar 14 16:55:34 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* po/*: updated translations
|
||||
|
||||
Fri Mar 14 16:30:27 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/bridge.c: fix a typo in a comment
|
||||
|
||||
Fri Mar 14 16:19:21 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* qemud/qemud.c src/virsh.c: fixing some user facing strings
|
||||
problems pointed out by Francesco Tombolini should fix #436620
|
||||
|
||||
Fri Mar 14 11:01:00 BST 2008 Richard W.M. Jones <rjones@redhat.com>
|
||||
|
||||
* virsh.1 docs/apibuild.py docs/architecture.html docs/errors.html
|
||||
docs/format.html docs/index.py docs/libvir.html docs/libvirt-api.xml
|
||||
docs/libvirt.rng docs/news.html docs/python.html docs/virsh.pod
|
||||
docs/devhelp/libvirt-libvirt.html docs/examples/examples.xml
|
||||
docs/examples/index.html docs/examples/info1.c
|
||||
docs/examples/suspend.c docs/html/libvirt-libvirt.html
|
||||
include/libvirt/libvirt.h include/libvirt/libvirt.h.in
|
||||
proxy/libvirt_proxy.c python/libvir.py python/libvirt-python-api.xml
|
||||
python/tests/node.py src/xen_internal.c:
|
||||
Fix typo "informations" -> "information" (Atsushi SAKAI and
|
||||
Saori FUKUTA).
|
||||
|
||||
Thu Mar 13 10:24:45 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/libvirt.c: virDomainSetSchedulerParameters need to be
|
||||
blocked on read-only connections, patch from Saori Fukuta
|
||||
|
||||
Thu Mar 13 10:19:16 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/bridge.c src/virsh.c: typo fixes from Atsushi SAKAI
|
||||
|
||||
Thu Mar 13 10:15:58 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/qemu_conf.c src/qemu_driver.c: patch from Cole Robinson
|
||||
fixing CD Rom change on live QEmu/KVM domains.
|
||||
|
||||
Tue Mar 11 10:45:53 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* src/libvirt.c, configure.in: Remove use of polkit-grant since
|
||||
it is fundamentally broken. Only use polkit-auth instead. Keep
|
||||
stdin/out/err open when running polkit-auth.
|
||||
|
||||
Tue Mar 11 10:21:53 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* src/virsh.c: Don't force connection to readonly as non-root
|
||||
since with auth support we can have full connections.
|
||||
|
||||
Tue Mar 11 10:17:53 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
* qemud/qemud.c: Don't run cleanup code when parent process is
|
||||
exiting in daemon mode.
|
||||
|
||||
Fri Mar 7 12:11:53 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* docs/libvir.html docs/storage.html: apply documentation fixes
|
||||
and typos cleanup from Atsushi Sakai
|
||||
|
||||
Fri Mar 7 10:22:00 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/xend_internal.c: applied patch from Cole Robinson to not
|
||||
loose the boot tag when defining a fully virtualized xen domain
|
||||
|
||||
Tue Mar 4 20:01:00 UTC 2008 Richard W.M. Jones <rjones@redhat.com>
|
||||
|
||||
Make iSCSI login actually work
|
||||
* src/storage_backend_iscsi.c: Make iSCSI login actually work
|
||||
(Chris Lalancette).
|
||||
|
||||
Tue Mar 4 19:57:00 UTC 2008 Richard W.M. Jones <rjones@redhat.com>
|
||||
|
||||
Report error when vcpupin is given bad vCPU number.
|
||||
* src/virsh.c: Report error when vcpupin is given bad vCPU number
|
||||
(Shigeki Sakamoto).
|
||||
|
||||
Mon Mar 3 21:39:17 CET 2008 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
Also ignore leading zeros when comparing MAC addresses.
|
||||
* src/util.c: Include <ctype.h>.
|
||||
(TOLOWER): Define.
|
||||
(__virMacAddrCompare): Rewrite to also ignore leading zeros.
|
||||
|
||||
Mon Mar 3 21:17:29 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/capabilities.c: Cole Robinson pointed out a well formedness
|
||||
problem when generating the capabilities in the test driver.
|
||||
|
||||
Mon Mar 3 19:09:51 CET 2008 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
Don't use first byte of string as a pointer.
|
||||
* src/qemu_conf.c (qemudReportError): Use the pointer, errorMessage,
|
||||
not its first byte, errorMessage[0].
|
||||
|
||||
Avoid segfault upon early libvirtd failure.
|
||||
* qemud/qemud.c (main): Don't call qemudCleanup on an
|
||||
uninitialized pointer.
|
||||
|
||||
Mon Mar 3 15:40:31 CET 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* NEWS configure.in libvirt.spec.in docs/* include/libvirt/libvirt.h
|
||||
|
@ -4,7 +4,7 @@
|
||||
# It is necessary if you want to build targets usually of interest
|
||||
# only to the maintainer.
|
||||
|
||||
# Copyright (C) 2001, 2003, 2006-2007 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001, 2003, 2006-2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -29,11 +29,11 @@ else
|
||||
SHELL = sh
|
||||
endif
|
||||
|
||||
have-Makefile := $(shell test -f Makefile && echo yes)
|
||||
_have-Makefile := $(shell test -f Makefile && echo yes)
|
||||
|
||||
# If the user runs GNU make but has not yet run ./configure,
|
||||
# give them a diagnostic.
|
||||
ifeq ($(have-Makefile),yes)
|
||||
ifeq ($(_have-Makefile),yes)
|
||||
|
||||
# Make tar archive easier to reproduce.
|
||||
export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
|
||||
@ -50,6 +50,8 @@ all:
|
||||
@echo "You must run ./configure before running \`make'." 1>&2
|
||||
@exit 1
|
||||
|
||||
check dist distcheck install: all
|
||||
|
||||
endif
|
||||
|
||||
# Tell version 3.79 and up of GNU make to not build goals in this
|
||||
|
190
Makefile.maint
190
Makefile.maint
@ -8,25 +8,23 @@ gzip_rsyncable := \
|
||||
$(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
|
||||
GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
|
||||
|
||||
CVS_LIST = build-aux/vc-list-files
|
||||
VC_LIST = build-aux/vc-list-files
|
||||
|
||||
CVS_LIST_EXCEPT = \
|
||||
$(CVS_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi
|
||||
VC_LIST_EXCEPT = \
|
||||
$(VC_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi
|
||||
|
||||
# Prevent programs like 'sort' from considering distinct strings to be equal.
|
||||
# Doing it here saves us from having to set LC_ALL elsewhere in this file.
|
||||
export LC_ALL = C
|
||||
|
||||
# Collect the names of rules starting with `sc_'.
|
||||
syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(ME))
|
||||
syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
|
||||
$(srcdir)/$(ME))
|
||||
.PHONY: $(syntax-check-rules)
|
||||
|
||||
# Checks that don't require cvs.
|
||||
# Run `changelog-check' last, as previous test may reveal problems requiring
|
||||
# new ChangeLog entries.
|
||||
local-checks-available = \
|
||||
po-check copyright-check m4-check author_mark_check \
|
||||
changelog-check patch-check strftime-check $(syntax-check-rules) \
|
||||
patch-check strftime-check $(syntax-check-rules) \
|
||||
makefile_path_separator_check \
|
||||
makefile-check check-AUTHORS
|
||||
.PHONY: $(local-checks-available)
|
||||
@ -34,23 +32,29 @@ local-checks-available = \
|
||||
local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available))
|
||||
|
||||
syntax-check: $(local-check)
|
||||
# @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \
|
||||
# $$(find -type f -name '*.[chly]') && \
|
||||
# { echo '$(ME): found conditional include' 1>&2; \
|
||||
# exit 1; } || :
|
||||
|
||||
## --------------- ##
|
||||
## Sanity checks. ##
|
||||
## --------------- ##
|
||||
# grep -nE '^# *include <(string|stdlib)\.h>' \
|
||||
# $(srcdir)/{lib,src}/*.[chy] && \
|
||||
# { echo '$(ME): FIXME' 1>&2; \
|
||||
# exit 1; } || :
|
||||
# FIXME: don't allow `#include .strings\.h' anywhere
|
||||
|
||||
sc_avoid_if_before_free:
|
||||
@$(srcdir)/build-aux/useless-if-before-free \
|
||||
$(useless_free_options) \
|
||||
$$($(CVS_LIST_EXCEPT)) && \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found useless "if" before "free" above' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Avoid uses of write(2). Either switch to streams (fwrite), or use
|
||||
# the safewrite wrapper.
|
||||
sc_avoid_write:
|
||||
@if $(CVS_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
grep '\<write *(' $$($(CVS_LIST_EXCEPT) | grep '\.c$$') && \
|
||||
@if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
grep '\<write *(' $$($(VC_LIST_EXCEPT) | grep '\.c$$') && \
|
||||
{ echo "$(ME): the above files use write;" \
|
||||
" consider using the safewrite wrapper instead" \
|
||||
1>&2; exit 1; } || :; \
|
||||
@ -58,22 +62,22 @@ sc_avoid_write:
|
||||
fi
|
||||
|
||||
sc_cast_of_argument_to_free:
|
||||
@grep -nE '\<free \(\(' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -nE '\<free \(\(' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): don'\''t cast free argument' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_cast_of_x_alloc_return_value:
|
||||
@grep -nE '\*\) *x(m|c|re)alloc\>' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -nE '\*\) *x(m|c|re)alloc\>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): don'\''t cast x*alloc return value' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_cast_of_alloca_return_value:
|
||||
@grep -nE '\*\) *alloca\>' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -nE '\*\) *alloca\>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): don'\''t cast alloca return value' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_space_tab:
|
||||
@grep -n '[ ] ' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -n '[ ] ' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
@ -81,14 +85,14 @@ sc_space_tab:
|
||||
# They provide no error checking mechanism.
|
||||
# Instead, use strto* functions.
|
||||
sc_prohibit_atoi_atof:
|
||||
@grep -nE '\<([fs]?scanf|ato([filq]|ll))\>' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -nE '\<([fs]?scanf|ato([filq]|ll))\>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): do not use *scan''f, ato''f, ato''i, ato''l, ato''ll, ato''q, or ss''canf' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Use STREQ rather than comparing strcmp == 0, or != 0.
|
||||
sc_prohibit_strcmp:
|
||||
@grep -nE '! *str''cmp \(|\<str''cmp \([^)]+\) *==' \
|
||||
$$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -nE '! *str''cmp \(|\<str''cmp \([^)]+\) *==' \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): use STREQ in place of the above uses of str''cmp' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
@ -101,66 +105,61 @@ sc_error_exit_success:
|
||||
exit 1; } || :
|
||||
|
||||
sc_file_system:
|
||||
@grep -ni 'file''system' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -ni 'file''system' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found use of "file''system";' \
|
||||
'rewrite to use "file system"' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_no_have_config_h:
|
||||
@grep -n '^# *if.*HAVE''_CONFIG_H' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -n '^# *if.*HAVE''_CONFIG_H' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found use of HAVE''_CONFIG_H; remove' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Nearly all .c files must include <config.h>.
|
||||
sc_require_config_h:
|
||||
@if $(CVS_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
@if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
grep -L '^# *include <config\.h>' \
|
||||
$$($(CVS_LIST_EXCEPT) | grep '\.c$$') \
|
||||
$$($(VC_LIST_EXCEPT) | grep '\.c$$') \
|
||||
| grep . && \
|
||||
{ echo '$(ME): the above files do not include <config.h>' \
|
||||
1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
|
||||
# To use this "command" macro, you must first define two shell variables:
|
||||
# h: the header, enclosed in <> or ""
|
||||
# re: a regular expression that matches IFF something provided by $h is used.
|
||||
define _header_without_use
|
||||
h_esc=`echo "$$h"|sed 's/\./\\./'`; \
|
||||
if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
files=$$(grep -l '^# *include '"$$h_esc" \
|
||||
$$($(VC_LIST_EXCEPT) | grep '\.c$$')) && \
|
||||
grep -LE "$$re" $$files | grep . && \
|
||||
{ echo "$(ME): the above files include $$h but don't use it" \
|
||||
1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
endef
|
||||
|
||||
# Prohibit the inclusion of assert.h without an actual use of assert.
|
||||
sc_prohibit_assert_without_use:
|
||||
@if $(CVS_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
files=$$(grep -l '# *include <assert\.h>' \
|
||||
$$($(CVS_LIST_EXCEPT) | grep '\.c$$')) && \
|
||||
grep -L '\<assert (' $$files \
|
||||
| grep . && \
|
||||
{ echo "$(ME): the above files include <assert.h> but don't use it" \
|
||||
1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
@h='<assert.h>' re='\<assert *\(' $(_header_without_use)
|
||||
|
||||
# Prohibit the inclusion of getopt.h without an actual use.
|
||||
sc_prohibit_getopt_without_use:
|
||||
@h='<getopt.h>' re='\<getopt(_long)? *\(' $(_header_without_use)
|
||||
|
||||
# Don't include quotearg.h unless you use one of its functions.
|
||||
sc_prohibit_quotearg_without_use:
|
||||
@if $(CVS_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
files=$$(grep -l '# *include "quotearg\.h"' \
|
||||
$$($(CVS_LIST_EXCEPT) | grep '\.c$$')) && \
|
||||
grep -LE '\<quotearg(_[^ ]+)? \(' $$files \
|
||||
| grep . && \
|
||||
{ echo "$(ME): the above files include "quotearg.h" but don't use it" \
|
||||
1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
@h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_header_without_use)
|
||||
|
||||
# Don't include quote.h unless you use one of its functions.
|
||||
sc_prohibit_quote_without_use:
|
||||
@if $(CVS_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
|
||||
files=$$(grep -l '# *include "quote\.h"' \
|
||||
$$($(CVS_LIST_EXCEPT) | grep '\.c$$')) && \
|
||||
grep -LE '\<quote(_n)? \(' $$files \
|
||||
| grep . && \
|
||||
{ echo "$(ME): the above files include "quote.h" but don't use it" \
|
||||
1>&2; exit 1; } || :; \
|
||||
else :; \
|
||||
fi
|
||||
@h='"quote.h"' re='\<quote(_n)? *\(' $(_header_without_use)
|
||||
|
||||
sc_obsolete_symbols:
|
||||
@grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
|
||||
$$($(CVS_LIST_EXCEPT)) && \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
@ -194,7 +193,7 @@ endif
|
||||
# Make sure that none are inadvertently reintroduced.
|
||||
sc_prohibit_jm_in_m4:
|
||||
@grep -nE 'jm_[A-Z]' \
|
||||
$$($(CVS_LIST) m4 |grep '\.m4$$'; echo /dev/null) && \
|
||||
$$($(VC_LIST) m4 |grep '\.m4$$'; echo /dev/null) && \
|
||||
{ echo '$(ME): do not use jm_ in m4 macro names' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
@ -202,8 +201,8 @@ sc_root_tests:
|
||||
@if test -d tests \
|
||||
&& grep check-root tests/Makefile.am>/dev/null 2>&1; then \
|
||||
t1=sc-root.expected; t2=sc-root.actual; \
|
||||
grep -nl '^PRIV_CHECK_ARG=require-root' \
|
||||
$$($(CVS_LIST) tests) |sed s,tests,., |sort > $$t1; \
|
||||
grep -nl '^require_root_$$' \
|
||||
$$($(VC_LIST) tests) |sed s,tests,., |sort > $$t1; \
|
||||
sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
|
||||
$(srcdir)/tests/Makefile.am |sort > $$t2; \
|
||||
diff -u $$t1 $$t2 || diff=1; \
|
||||
@ -242,7 +241,7 @@ headers_with_interesting_macro_defs = \
|
||||
sc_always_defined_macros: .re-defmac
|
||||
@if test -f $(srcdir)/src/system.h; then \
|
||||
trap 'rc=$$?; rm -f .re-defmac; exit $$rc' 0 1 2 3 15; \
|
||||
grep -f .re-defmac $$($(CVS_LIST)) \
|
||||
grep -f .re-defmac $$($(VC_LIST)) \
|
||||
&& { echo '$(ME): define the above via some gnulib .h file' \
|
||||
1>&2; exit 1; } || :; \
|
||||
fi
|
||||
@ -262,7 +261,7 @@ sc_system_h_headers: .re-list
|
||||
@if test -f $(srcdir)/src/system.h; then \
|
||||
trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \
|
||||
grep -nE -f .re-list \
|
||||
$$($(CVS_LIST) src | \
|
||||
$$($(VC_LIST) src | \
|
||||
grep -Ev '((copy|system)\.h|parse-gram\.c)$$') \
|
||||
&& { echo '$(ME): the above are already included via system.h'\
|
||||
1>&2; exit 1; } || :; \
|
||||
@ -271,12 +270,12 @@ sc_system_h_headers: .re-list
|
||||
sc_sun_os_names:
|
||||
@grep -nEi \
|
||||
'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \
|
||||
$$($(CVS_LIST_EXCEPT)) && \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_the_the:
|
||||
@grep -ni '\<the ''the\>' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -ni '\<the ''the\>' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found use of "the ''the";' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
@ -284,7 +283,7 @@ sc_tight_scope:
|
||||
$(MAKE) -C src $@
|
||||
|
||||
sc_trailing_blank:
|
||||
@grep -n '[ ]$$' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -n '[ ]$$' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found trailing blank(s)' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
@ -294,13 +293,40 @@ sc_trailing_blank:
|
||||
longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
|
||||
sc_two_space_separator_in_usage:
|
||||
@grep -nE '^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \
|
||||
$$($(CVS_LIST_EXCEPT)) && \
|
||||
$$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo "$(ME): help2man requires at least two spaces between"; \
|
||||
echo "$(ME): an option and its description"; \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
err_func_re = \
|
||||
(DISABLE_fprintf|qemudLog|(xmlRpc|vir(Xend|XML|Hash|Conf|Test|LibConn|StorageReport))Error)
|
||||
msg_gen_function =
|
||||
msg_gen_function += DISABLE_fprintf
|
||||
msg_gen_function += virXendError
|
||||
msg_gen_function += virXMLError
|
||||
msg_gen_function += virHashError
|
||||
msg_gen_function += virConfError
|
||||
msg_gen_function += virTestError
|
||||
msg_gen_function += virLibConnError
|
||||
msg_gen_function += virStorageReportError
|
||||
msg_gen_function += virxmlRpcError
|
||||
msg_gen_function += virLog
|
||||
msg_gen_function += qemudLog
|
||||
msg_gen_function += remoteDispatchError
|
||||
msg_gen_function += virStorageLog
|
||||
msg_gen_function += xenXMError
|
||||
msg_gen_function += ReportError
|
||||
msg_gen_function += qemudReportError
|
||||
msg_gen_function += openvzLog
|
||||
|
||||
# Uncomment the following and run "make syntax-check" to see diagnostics
|
||||
# that are not yet marked for translation, but that need to be rewritten
|
||||
# so that they are translatable.
|
||||
# msg_gen_function += error
|
||||
# msg_gen_function += virXenError
|
||||
# msg_gen_function += testError
|
||||
# msg_gen_function += lxcError
|
||||
|
||||
func_or := $(shell printf '$(msg_gen_function)'|tr -s '[[:space:]]' '|')
|
||||
func_re := ($(func_or))
|
||||
|
||||
# Look for diagnostics that aren't marked for translation.
|
||||
# This won't find any for which error's format string is on a separate line.
|
||||
@ -309,32 +335,32 @@ err_func_re = \
|
||||
# "%s", _("no storage vol w..."
|
||||
sc_unmarked_diagnostics:
|
||||
@grep -nE \
|
||||
'\<(vshError|error) \([^"]*"[^"]*[a-z]{3}' $$($(CVS_LIST_EXCEPT)) \
|
||||
'\<$(func_re) \([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT)) \
|
||||
| grep -v '_''(' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
@{ grep -nE '\<$(err_func_re) *\(.*;$$' $$($(CVS_LIST_EXCEPT)); \
|
||||
grep -A1 -nE '\<$(err_func_re) *\(.*,$$' $$($(CVS_LIST_EXCEPT)); } \
|
||||
@{ grep -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT)); \
|
||||
grep -A1 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
|
||||
| sed 's/_("[^"][^"]*"//;s/[ ]"%s"//' \
|
||||
| grep '[ ]"' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
sc_prohibit_virBufferAdd_with_string_literal:
|
||||
@grep -nE '\<virBufferAdd *\([^,]+, *"[^"]' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -nE '\<virBufferAdd *\([^,]+, *"[^"]' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): use virBufferAddLit, not virBufferAdd,' \
|
||||
'with a string literal' 1>&2; exit 1; } || :
|
||||
|
||||
# Avoid useless parentheses like those in this example:
|
||||
# #if defined (SYMBOL) || defined (SYM2)
|
||||
sc_useless_cpp_parens:
|
||||
@grep -n '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -n '^# *if .*defined *(' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): found useless parentheses in cpp directive' \
|
||||
1>&2; exit 1; } || :
|
||||
|
||||
# Require the latest GPL.
|
||||
sc_GPL_version:
|
||||
@grep -n 'either ''version [^3]' $$($(CVS_LIST_EXCEPT)) && \
|
||||
@grep -n 'either ''version [^3]' $$($(VC_LIST_EXCEPT)) && \
|
||||
{ echo '$(ME): GPL vN, N!=3' 1>&2; exit 1; } || :
|
||||
|
||||
# Ensure that the c99-to-c89 patch applies cleanly.
|
||||
@ -410,12 +436,16 @@ po-check:
|
||||
grep -E -v '^(#|$$)' po/POTFILES.in \
|
||||
| grep -v '^src/false\.c$$' | sort > $@-1; \
|
||||
files=; \
|
||||
for file in $$($(CVS_LIST_EXCEPT)); do \
|
||||
for file in $$($(VC_LIST_EXCEPT)); do \
|
||||
case $$file in \
|
||||
djgpp/* | man/*) continue;; \
|
||||
*/c99-to-c89.diff) continue;; \
|
||||
esac; \
|
||||
case $$file in \
|
||||
*.[ch]) \
|
||||
base=`expr " $$file" : ' \(.*\)\..'`; \
|
||||
{ test -f $$base.l || test -f $$base.y; } && continue;; \
|
||||
*) continue;; \
|
||||
*) continue;; \
|
||||
esac; \
|
||||
files="$$files $$file"; \
|
||||
done; \
|
||||
@ -447,16 +477,14 @@ makefile_path_separator_check:
|
||||
# Check that `make alpha' will not fail at the end of the process.
|
||||
writable-files:
|
||||
if test -d $(release_archive_dir); then :; else \
|
||||
mkdir $(release_archive_dir); \
|
||||
for file in $(distdir).tar.gz \
|
||||
$(release_archive_dir)/$(distdir).tar.gz; do \
|
||||
test -e $$file || continue; \
|
||||
test -w $$file \
|
||||
|| { echo ERROR: $$file is not writable; fail=1; }; \
|
||||
done; \
|
||||
test "$$fail" && exit 1 || :
|
||||
fi
|
||||
for file in $(distdir).tar.gz $(xd-delta) \
|
||||
$(release_archive_dir)/$(distdir).tar.gz \
|
||||
$(release_archive_dir)/$(xd-delta); do \
|
||||
test -e $$file || continue; \
|
||||
test -w $$file \
|
||||
|| { echo ERROR: $$file is not writable; fail=1; }; \
|
||||
done; \
|
||||
test "$$fail" && exit 1 || :
|
||||
|
||||
v_etc_file = lib/version-etc.c
|
||||
sample-test = tests/sample-test
|
||||
|
17
NEWS
17
NEWS
@ -24,7 +24,8 @@ Releases
|
||||
virHashRemoveSet bug (Hiroyuki Kaguchi), close-on-exec flag for
|
||||
qemud signal pipe (Daniel Berrange), double free in OpenVZ
|
||||
(Anton Protopopov), handle mac without addresses (Shigeki Sakamoto),
|
||||
MAC addresses checks (Shigeki Sakamoto and Richard Jones)
|
||||
MAC addresses checks (Shigeki Sakamoto and Richard Jones),
|
||||
allow to read non-seekable files (Jim Meyering)
|
||||
- Improvements: Windows build (Richard Jones), KVM/QEmu shutdown
|
||||
(Guido Guenther), catch virExec output on debug (Mark McLoughlin),
|
||||
integration of iptables and lokkit (Mark McLoughlin), keymap
|
||||
@ -219,7 +220,7 @@ Releases
|
||||
- Documentation: remote support (Richard Jones), description of
|
||||
the URI connection strings (Richard Jones), update of virsh man
|
||||
page, matrix of libvirt API/hypervisor support with version
|
||||
informations (Richard Jones)
|
||||
information (Richard Jones)
|
||||
- Bug fixes: examples Makefile.am generation (Richard Jones),
|
||||
SetMem fix (Mark Johnson), URI handling and ordering of
|
||||
drivers (Daniel Berrange), fix virsh help without hypervisor (Richard
|
||||
@ -385,7 +386,7 @@ Releases
|
||||
|
||||
0.1.9: Nov 29 2006:
|
||||
- python bindings: release interpeter lock when calling C (Daniel Berrange)
|
||||
- don't raise HTTP error when looking informations for a domain
|
||||
- don't raise HTTP error when looking information for a domain
|
||||
- some refactoring to use the driver for all entry points
|
||||
- better error reporting (Daniel Berrange)
|
||||
- fix OS reporting when running as non-root
|
||||
@ -403,7 +404,7 @@ Releases
|
||||
- added support for inactive domains, new APIs, various associated cleanup (Daniel Berrange)
|
||||
- special device model for HVM guests (Daniel Berrange)
|
||||
- add API to dump core of domains (but requires a patched xend)
|
||||
- pygrub bootloader informations take over <os> informations
|
||||
- pygrub bootloader information take over <os> information
|
||||
- updated the localization strings
|
||||
|
||||
|
||||
@ -420,9 +421,9 @@ Releases
|
||||
|
||||
|
||||
0.1.7: Sep 29 2006:
|
||||
- fix a memory bug on getting vcpu informations from xend (Daniel Berrange)
|
||||
- fix a memory bug on getting vcpu information from xend (Daniel Berrange)
|
||||
- fix another problem in the hypercalls change in Xen changeset
|
||||
86d26e6ec89b when getting domain informations (Daniel Berrange)
|
||||
86d26e6ec89b when getting domain information (Daniel Berrange)
|
||||
|
||||
|
||||
0.1.6: Sep 22 2006:
|
||||
@ -457,7 +458,7 @@ Releases
|
||||
initialization errors (Daniel Berrange)
|
||||
- improvements: UUID in XML description (Peter Vetere), proxy code
|
||||
cleanup, virtual CPU and affinity support + virsh support (Michel
|
||||
Ponceau, Philippe Berthault, Daniel Berrange), port and tty informations
|
||||
Ponceau, Philippe Berthault, Daniel Berrange), port and tty information
|
||||
for console in XML (Daniel Berrange), added XML dump to driver and proxy
|
||||
support (Daniel Berrange), extention of boot options with support for
|
||||
floppy and cdrom (Daniel Berrange), features block in XML to report/ask
|
||||
@ -479,7 +480,7 @@ Releases
|
||||
|
||||
0.1.2: Jul 3 2006:
|
||||
- headers include paths fixup
|
||||
- proxy mechanism for unpriviledged read-only access by httpu
|
||||
- proxy mechanism for unprivileged read-only access by httpu
|
||||
|
||||
|
||||
0.1.1: Jun 21 2006:
|
||||
|
@ -79,6 +79,8 @@ $gnulib_tool \
|
||||
sys_stat vasprintf strndup \
|
||||
strsep poll gettext getpass \
|
||||
useless-if-before-free \
|
||||
posix-shell \
|
||||
mktempd \
|
||||
vc-list-files
|
||||
|
||||
rm -f \
|
||||
|
@ -7,3 +7,4 @@ install-sh
|
||||
ltmain.sh
|
||||
missing
|
||||
mkinstalldirs
|
||||
mktempd
|
||||
|
132
build-aux/mktempd
Executable file
132
build-aux/mktempd
Executable file
@ -0,0 +1,132 @@
|
||||
#!/bin/sh
|
||||
# Create a temporary directory, much like mktemp -d does.
|
||||
|
||||
# Copyright (C) 2007-2008 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Written by Jim Meyering.
|
||||
|
||||
# Usage: mktempd /tmp phoey.XXXXXXXXXX
|
||||
|
||||
# First, try to use the mktemp program.
|
||||
# Failing that, we'll roll our own mktemp-like function:
|
||||
# - try to get random bytes from /dev/urandom
|
||||
# - failing that, generate output from a combination of quickly-varying
|
||||
# sources and gzip. Ignore non-varying gzip header, and extract
|
||||
# "random" bits from there.
|
||||
# - given those bits, map to file-name bytes using tr, and try to create
|
||||
# the desired directory.
|
||||
# - make only $MAX_TRIES attempts
|
||||
|
||||
ME=`basename "$0"`
|
||||
die() { echo >&2 "$ME: $@"; exit 1; }
|
||||
|
||||
MAX_TRIES=4
|
||||
|
||||
rand_bytes()
|
||||
{
|
||||
n=$1
|
||||
|
||||
chars=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
|
||||
|
||||
dev_rand=/dev/urandom
|
||||
if test -r "$dev_rand"; then
|
||||
# Note: 256-length($chars) == 194; 3 copies of $chars is 186 + 8 = 194.
|
||||
head -c$n "$dev_rand" | tr -c $chars 01234567$chars$chars$chars
|
||||
return
|
||||
fi
|
||||
|
||||
cmds='date; date +%N; free; who -a; w; ps auxww; ps ef; netstat -n'
|
||||
data=` (eval "$cmds") 2>&1 | gzip `
|
||||
|
||||
n_plus_50=`expr $n + 50`
|
||||
|
||||
# Ensure that $data has length at least 50+$n
|
||||
while :; do
|
||||
len=`echo "$data"|wc -c`
|
||||
test $n_plus_50 -le $len && break;
|
||||
data=` (echo "$data"; eval "$cmds") 2>&1 | gzip `
|
||||
done
|
||||
|
||||
echo "$data" \
|
||||
| dd bs=1 skip=50 count=$n 2>/dev/null \
|
||||
| tr -c $chars 01234567$chars$chars$chars
|
||||
}
|
||||
|
||||
mktempd()
|
||||
{
|
||||
case $# in
|
||||
2);;
|
||||
*) die "Usage: $ME DIR TEMPLATE";;
|
||||
esac
|
||||
|
||||
destdir=$1
|
||||
template=$2
|
||||
|
||||
# Disallow any trailing slash on specified destdir:
|
||||
# it would subvert the post-mktemp "case"-based destdir test.
|
||||
case $destdir in
|
||||
/) ;;
|
||||
*/) die "invalid destination dir: remove trailing slash(es)";;
|
||||
esac
|
||||
|
||||
case $template in
|
||||
*XXXX) ;;
|
||||
*) die "invalid template: $template (must have a suffix of at least 4 X's)";;
|
||||
esac
|
||||
|
||||
fail=0
|
||||
|
||||
# First, try to use mktemp.
|
||||
d=`env -u TMPDIR mktemp -d -t -p "$destdir" "$template" 2>/dev/null` \
|
||||
|| fail=1
|
||||
|
||||
# The resulting name must be in the specified directory.
|
||||
case $d in "$destdir"*);; *) fail=1;; esac
|
||||
|
||||
# It must have created the directory.
|
||||
test -d "$d" || fail=1
|
||||
|
||||
# It must have 0700 permissions. Handle sticky "S" bits.
|
||||
perms=`ls -dgo "$d" 2>/dev/null|tr S -` || fail=1
|
||||
case $perms in drwx------*) ;; *) fail=1;; esac
|
||||
|
||||
test $fail = 0 && {
|
||||
echo "$d"
|
||||
return
|
||||
}
|
||||
|
||||
# If we reach this point, we'll have to create a directory manually.
|
||||
|
||||
# Get a copy of the template without its suffix of X's.
|
||||
base_template=`echo "$template"|sed 's/XX*$//'`
|
||||
|
||||
# Calculate how many X's we've just removed.
|
||||
nx=`expr length "$template" - length "$base_template"`
|
||||
|
||||
err=
|
||||
i=1
|
||||
while :; do
|
||||
X=`rand_bytes $nx`
|
||||
candidate_dir="$destdir/$base_template$X"
|
||||
err=`mkdir -m 0700 "$candidate_dir" 2>&1` \
|
||||
&& { echo "$candidate_dir"; return; }
|
||||
test $MAX_TRIES -le $i && break;
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
die "$err"
|
||||
}
|
||||
|
||||
mktempd "$@"
|
@ -2,7 +2,7 @@
|
||||
# Detect instances of "if (p) free (p);".
|
||||
# Likewise for "if (p != NULL) free (p);". And with braces.
|
||||
|
||||
my $VERSION = '2008-02-11 08:08'; # UTC
|
||||
my $VERSION = '2008-03-12 13:06'; # UTC
|
||||
# The definition above must lie within the first 8 lines in order
|
||||
# for the Emacs time-stamp write hook (at end) to update it.
|
||||
# If you change this file with Emacs, please let the write hook
|
||||
@ -123,8 +123,8 @@ EOF
|
||||
{
|
||||
if ($line =~
|
||||
/\b(if\s*\(\s*(\S+?)(?:\s*!=\s*NULL)?\s*\)
|
||||
(?: \s*$regexp\s*\(\s*\2\s*\)|
|
||||
\s*\{\s*$regexp\s*\(\s*\2\s*\)\s*;\s*\}))/sx)
|
||||
(?: \s*$regexp\s*\((?:\s*\([^)]+\))\s*\2\s*\)|
|
||||
\s*\{\s*$regexp\s*\((?:\s*\([^)]+\))\s*\2\s*\)\s*;\s*\}))/sx)
|
||||
{
|
||||
$found_match = 1;
|
||||
$list
|
||||
|
23
configure.in
23
configure.in
@ -1,6 +1,6 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT(libvirt, 0.4.1)
|
||||
AC_INIT(libvirt, 0.4.2)
|
||||
AC_CONFIG_SRCDIR(src/libvirt.c)
|
||||
AC_CONFIG_AUX_DIR(build-aux)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
@ -8,9 +8,9 @@ dnl Make automake keep quiet about wildcards & other GNUmake-isms
|
||||
AM_INIT_AUTOMAKE([-Wno-portability])
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
LIBVIRT_MAJOR_VERSION=`echo $VERSION | awk -F . '{print $1}'`
|
||||
LIBVIRT_MINOR_VERSION=`echo $VERSION | awk -F . '{print $2}'`
|
||||
LIBVIRT_MICRO_VERSION=`echo $VERSION | awk -F . '{print $3}'`
|
||||
LIBVIRT_MAJOR_VERSION=`echo $VERSION | awk -F. '{print $1}'`
|
||||
LIBVIRT_MINOR_VERSION=`echo $VERSION | awk -F. '{print $2}'`
|
||||
LIBVIRT_MICRO_VERSION=`echo $VERSION | awk -F. '{print $3}'`
|
||||
LIBVIRT_VERSION=$LIBVIRT_MAJOR_VERSION.$LIBVIRT_MINOR_VERSION.$LIBVIRT_MICRO_VERSION$LIBVIRT_MICRO_VERSION_SUFFIX
|
||||
LIBVIRT_VERSION_INFO=`expr $LIBVIRT_MAJOR_VERSION + $LIBVIRT_MINOR_VERSION`:$LIBVIRT_MICRO_VERSION:$LIBVIRT_MINOR_VERSION
|
||||
LIBVIRT_VERSION_NUMBER=`expr $LIBVIRT_MAJOR_VERSION \* 1000000 + $LIBVIRT_MINOR_VERSION \* 1000 + $LIBVIRT_MICRO_VERSION`
|
||||
@ -132,6 +132,8 @@ AC_ARG_WITH(qemu,
|
||||
[ --with-qemu add QEMU/KVM support (on)],[],[with_qemu=yes])
|
||||
AC_ARG_WITH(openvz,
|
||||
[ --with-openvz add OpenVZ support (off)],[],[with_openvz=no])
|
||||
AC_ARG_WITH(lxc,
|
||||
[ --with-lxc add Linux Container support (off)],[],[with_lxc=no])
|
||||
AC_ARG_WITH(test,
|
||||
[ --with-test add test driver support (on)],[],[with_test=yes])
|
||||
AC_ARG_WITH(remote,
|
||||
@ -229,6 +231,9 @@ WITH_XEN=0
|
||||
if test "$with_openvz" = "yes" ; then
|
||||
LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_OPENVZ"
|
||||
fi
|
||||
if test "$with_lxc" = "yes" ; then
|
||||
LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_LXC"
|
||||
fi
|
||||
if test "$with_qemu" = "yes" ; then
|
||||
LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_QEMU"
|
||||
fi
|
||||
@ -450,10 +455,6 @@ if test "x$with_polkit" = "xyes" -o "x$with_polkit" = "xcheck"; then
|
||||
CFLAGS="$old_CFLAGS"
|
||||
LDFLAGS="$old_LDFLAGS"
|
||||
|
||||
AC_PATH_PROG(POLKIT_GRANT, polkit-grant)
|
||||
if test "x$POLKIT_GRANT" != "x"; then
|
||||
AC_DEFINE_UNQUOTED([POLKIT_GRANT],["$POLKIT_GRANT"],[Location of polkit-grant program])
|
||||
fi
|
||||
AC_PATH_PROG(POLKIT_AUTH, polkit-auth)
|
||||
if test "x$POLKIT_AUTH" != "x"; then
|
||||
AC_DEFINE_UNQUOTED([POLKIT_AUTH],["$POLKIT_AUTH"],[Location of polkit-auth program])
|
||||
@ -873,6 +874,9 @@ fi
|
||||
AC_MSG_RESULT([$with_xen_proxy])
|
||||
|
||||
AM_CONDITIONAL(WITH_PROXY,[test "$with_xen_proxy" = "yes"])
|
||||
if test "$with_xen_proxy" = "yes"; then
|
||||
AC_DEFINE(WITH_PROXY, 1, [Whether Xen proxy is enabled])
|
||||
fi
|
||||
|
||||
dnl Enable building libvirtd?
|
||||
AM_CONDITIONAL(WITH_LIBVIRTD,[test "x$with_libvirtd" = "xyes"])
|
||||
@ -884,7 +888,7 @@ if test -d po
|
||||
then
|
||||
ALL_LINGUAS=`(cd po > /dev/null && ls *.po) | sed 's+\.po$++'`
|
||||
else
|
||||
ALL_LINGUAS="af am ar as be bg bn_IN bn ca cs cy da de el en_GB es et eu_ES fa fi fr gl gu he hi hr hu hy id is it ja ka kn ko ku lo lt lv mk ml mr ms my nb nl nn no nso or pa pl pt_BR pt ro ru si sk sl sq sr@Latn sr sv ta te th tr uk ur vi zh_CN zh_TW zu"
|
||||
ALL_LINGUAS="af am ar as be bg bn_IN bn ca cs cy da de el en_GB es et eu_ES fa fi fr gl gu he hi hr hu hy id is it ja ka kn ko ku lo lt lv mk ml mr ms my nb nl nn no nso or pa pl pt_BR pt ro ru si sk sl sq sr@latin sr sv ta te th tr uk ur vi zh_CN zh_TW zu"
|
||||
fi
|
||||
|
||||
dnl Extra link-time flags for Cygwin.
|
||||
@ -951,6 +955,7 @@ AC_MSG_NOTICE([ Xen: $with_xen])
|
||||
AC_MSG_NOTICE([ Proxy: $with_xen_proxy])
|
||||
AC_MSG_NOTICE([ QEMU: $with_qemu])
|
||||
AC_MSG_NOTICE([ OpenVZ: $with_openvz])
|
||||
AC_MSG_NOTICE([ LXC: $with_lxc])
|
||||
AC_MSG_NOTICE([ Test: $with_test])
|
||||
AC_MSG_NOTICE([ Remote: $with_remote])
|
||||
AC_MSG_NOTICE([Libvirtd: $with_libvirtd])
|
||||
|
@ -14,7 +14,7 @@
|
||||
<p>Yes. The LGPL allows you to embed libvirt into a proprietary
|
||||
application. It would be graceful to send-back bug fixes and improvements
|
||||
as patches for possible incorporation in the main development tree. It
|
||||
will decrease your maintainance costs anyway if you do so.</p>
|
||||
will decrease your maintenance costs anyway if you do so.</p>
|
||||
</li>
|
||||
</ol><h3><a name="Installati" id="Installati">Installation</a></h3><ol><li><em>Where can I get libvirt</em> ?
|
||||
<p>The original distribution comes from <a href="ftp://libvirt.org/libvirt/">ftp://libvirt.org/libvirt/</a>.</p>
|
||||
@ -34,7 +34,7 @@
|
||||
<p><code>make rpm</code></p>
|
||||
</li>
|
||||
<li><em>Failure to use the API for non-root users</em>
|
||||
<p>Large parts of the API may only be accessible with root priviledges,
|
||||
<p>Large parts of the API may only be accessible with root privileges,
|
||||
however the read only access to the xenstore data doesnot have to be
|
||||
forbidden to user, at least for monitoring purposes. If "virsh dominfo"
|
||||
fails to run as an user, change the mode of the xenstore read-only socket
|
||||
|
@ -752,7 +752,7 @@ class CParser:
|
||||
return((args, desc))
|
||||
|
||||
#
|
||||
# Parse a comment block and merge the informations found in the
|
||||
# Parse a comment block and merge the information found in the
|
||||
# parameters descriptions, finally returns a block as complete
|
||||
# as possible
|
||||
#
|
||||
|
@ -8,13 +8,13 @@ engines:</p><ul><li><a href="#Xen">Xen hypervisor</a></li>
|
||||
</ul><h3><a name="Xen" id="Xen">Libvirt Xen support</a></h3><p>When running in a Xen environment, programs using libvirt have to execute
|
||||
in "Domain 0", which is the primary Linux OS loaded on the machine. That OS
|
||||
kernel provides most if not all of the actual drivers used by the set of
|
||||
domains. It also runs the Xen Store, a database of informations shared by the
|
||||
domains. It also runs the Xen Store, a database of information shared by the
|
||||
hypervisor, the kernels, the drivers and the xen daemon. Xend. The xen daemon
|
||||
supervise the control and execution of the sets of domains. The hypervisor,
|
||||
drivers, kernels and daemons communicate though a shared system bus
|
||||
implemented in the hypervisor. The figure below tries to provide a view of
|
||||
this environment:</p><img src="architecture.gif" alt="The Xen architecture" /><p>The library can be initialized in 2 ways depending on the level of
|
||||
priviledge of the embedding program. If it runs with root access,
|
||||
privilege of the embedding program. If it runs with root access,
|
||||
virConnectOpen() can be used, it will use three different ways to connect to
|
||||
the Xen infrastructure:</p><ul><li>a connection to the Xen Daemon though an HTTP RPC layer</li>
|
||||
<li>a read/write connection to the Xen Store</li>
|
||||
@ -23,9 +23,9 @@ the Xen infrastructure:</p><ul><li>a connection to the Xen Daemon though an HTTP
|
||||
as root and providing read-only support</li>
|
||||
</ul><p>The library will usually interact with the Xen daemon for any operation
|
||||
changing the state of the system, but for performance and accuracy reasons
|
||||
may talk directly to the hypervisor when gathering state informations at
|
||||
may talk directly to the hypervisor when gathering state information at
|
||||
least when possible (i.e. when the running program using libvirt has root
|
||||
priviledge access).</p><p>If it runs without root access virConnectOpenReadOnly() should be used to
|
||||
privilege access).</p><p>If it runs without root access virConnectOpenReadOnly() should be used to
|
||||
connect to initialize the library. It will then fork a libvirt_proxy
|
||||
program running as root and providing read_only access to the API, this is
|
||||
then only useful for reporting and monitoring.</p><h3><a name="QEmu" id="QEmu">Libvirt QEmu and KVM support</a></h3><p>The model for QEmu and KVM is completely similar, basically KVM is based
|
||||
@ -36,14 +36,14 @@ QEmu or KVM process. That program called libvirt_qemud talks though a specific
|
||||
protocol to the library, and connects to the console of the QEmu process in
|
||||
order to control and report on its status. Libvirt tries to expose all the
|
||||
emulations models of QEmu, the selection is done when creating the new
|
||||
domain, by specifying the architecture and machine type targetted.</p><p>The code controlling the QEmu process is available in the
|
||||
domain, by specifying the architecture and machine type targeted.</p><p>The code controlling the QEmu process is available in the
|
||||
<code>qemud/</code> directory.</p><h3><a name="drivers" id="drivers">the driver based architecture</a></h3><p>As the previous section explains, libvirt can communicate using different
|
||||
channels with the current hypervisor, and should also be able to use
|
||||
different kind of hypervisor. To simplify the internal design, code, ease
|
||||
maintainance and simplify the support of other virtualization engine the
|
||||
maintenance and simplify the support of other virtualization engine the
|
||||
internals have been structured as one core component, the libvirt.c module
|
||||
acting as a front-end for the library API and a set of hypvisor drivers
|
||||
defining a common set of routines. That way the Xen Daemon accces, the Xen
|
||||
acting as a front-end for the library API and a set of hypervisor drivers
|
||||
defining a common set of routines. That way the Xen Daemon access, the Xen
|
||||
Store one, the Hypervisor hypercall are all isolated in separate C modules
|
||||
implementing at least a subset of the common operations defined by the
|
||||
drivers present in driver.h:</p><ul><li>xend_internal: implements the driver functions though the Xen
|
||||
|
@ -3,7 +3,7 @@
|
||||
<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>Access control</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">Access control</h1><p>
|
||||
When connecting to libvirt, some connections may require client
|
||||
authentication before allowing use of the APIs. The set of possible
|
||||
authentication mechanisms is administrator controlled, independant
|
||||
authentication mechanisms is administrator controlled, independent
|
||||
of applications using libvirt.
|
||||
</p><ul><li><a href="#ACL_server_config">Server configuration</a></li>
|
||||
<li><a href="#ACL_server_unix_perms">UNIX socket permissions/group</a></li>
|
||||
@ -11,11 +11,11 @@ of applications using libvirt.
|
||||
<li><a href="#ACL_server_username">Username/password auth</a></li>
|
||||
<li><a href="#ACL_server_kerberos">Kerberos auth</a></li>
|
||||
</ul><h3 name="ACL_server_config">Server configuration</h3><p>
|
||||
The libvirt daemon allows the adminstrator to choose the authentication
|
||||
mechanisms used for client connections on each network socket independantly.
|
||||
The libvirt daemon allows the administrator to choose the authentication
|
||||
mechanisms used for client connections on each network socket independently.
|
||||
This is primarily controlled via the libvirt daemon master config file in
|
||||
<code>/etc/libvirt/libvirtd.conf</code>. Each of the libvirt sockets can
|
||||
have its authentication mechanism configured independantly. There is
|
||||
have its authentication mechanism configured independently. There is
|
||||
currently a choice of <code>none</code>, <code>polkit</code>, and <code>sasl</code>.
|
||||
The SASL scheme can be further configured to choose between a large
|
||||
number of different mechanisms.
|
||||
@ -44,7 +44,7 @@ session to authenticate using the user's password. This is akin to <code>sudo</c
|
||||
auth, but does not require that the client application ultimately run as root.
|
||||
Default policy will still allow any application to connect to the RO socket.
|
||||
</p><p>
|
||||
The default policy can be overriden by the adminstrator using the PolicyKit
|
||||
The default policy can be overridden by the administrator using the PolicyKit
|
||||
master configuration file in <code>/etc/PolicyKit/PolicyKit.conf</code>. The
|
||||
<code>PolicyKit.conf(5)</code> manual page provides details on the syntax
|
||||
available. The two libvirt daemon actions available are named <code>org.libvirt.unix.monitor</code>
|
||||
@ -100,7 +100,7 @@ and/or TLS sockets, Kerberos will also be used for them. Like DIGEST-MD5, the Ke
|
||||
mechanism provides data encryption of the session.
|
||||
</p><p>
|
||||
Some operating systems do not install the SASL kerberos plugin by default. It
|
||||
may be neccessary to install a sub-package such as <code>cyrus-sasl-gssapi</code>.
|
||||
may be necessary to install a sub-package such as <code>cyrus-sasl-gssapi</code>.
|
||||
To check whether the Kerberos plugin is installed run the <code>pluginviewer</code>
|
||||
program and verify that <code>gssapi</code> is listed,eg:
|
||||
</p><pre>
|
||||
@ -111,7 +111,7 @@ Plugin "gssapiv2" [loaded], API version: 4
|
||||
security flags: NO_ANONYMOUS|NO_PLAINTEXT|NO_ACTIVE|PASS_CREDENTIALS|MUTUAL_AUTH
|
||||
features: WANT_CLIENT_FIRST|PROXY_AUTHENTICATION|NEED_SERVER_FQDN
|
||||
</pre><p>
|
||||
Next is is neccessary for the adminsitrator of the Kerberos realm to issue a principle
|
||||
Next is is necessary for the administrator of the Kerberos realm to issue a principle
|
||||
for the libvirt server. There needs to be one principle per host running the libvirt
|
||||
daemon. The principle should be named <code>libvirt/full.hostname@KERBEROS.REALM</code>.
|
||||
This is typically done by running the <code>kadmin.local</code> command on the Kerberos
|
||||
|
@ -7,9 +7,12 @@ page and follow the instructions. Patches with explanations and provided as
|
||||
attachments are really appreciated and will be discussed on the mailing list.
|
||||
If possible generate the patches by using cvs diff -u in a CVS checkout.</p><p>We use Red Hat Bugzilla to track bugs and new feature requests to libvirt.
|
||||
If you want to report a bug or ask for a feature, please check <a href="http://bugzilla.redhat.com/bugzilla/buglist.cgi?component=libvirt&component=libvirt-devel&component=libvirt-python&bug_status=ASSIGNED&bug_status=INVESTIGATE&bug_status=NEW&bug_status=REOPENED&bug_status=VERIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&Search=Search">the existing open bugs</a>, then if yours isn't a duplicate of
|
||||
an existing bug, <a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora%20Core&component=libvirt">log a new bug</a> and attach any patch or extra data that you may have available. It is always a good idea to also
|
||||
an existing bug:</p><ul><li>If you are using official binaries from Fedora: <a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=libvirt">log a new bug for Fedora</a></li>
|
||||
<li>If you are using official binaries from Red Hat Enterprise Linux 5: <a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=Red%20Hat%20Enterprise%20Linux%205">log a new bug for RHEL</a></li>
|
||||
<li>Otherwise: <a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=Virtualization%20Tools">log a new bug here</a></li>
|
||||
</ul><p> Don't forget to attach any patch or extra data that you may have available. It is always a good idea to also
|
||||
to post to the <a href="mailto:libvir-list@redhat.com">mailing-list</a>
|
||||
too, so that everybody working on the project can see it, thanks !</p><p>Some of the libvirt developpers may be found on IRC on the OFTC
|
||||
too, so that everybody working on the project can see it, thanks !</p><p>Some of the libvirt developers may be found on IRC on the OFTC
|
||||
network. Use the settings:</p><ul><li>server: irc.oftc.net</li>
|
||||
<li>port: 6667 (the usual IRC port)</li>
|
||||
<li>channel: #virt</li>
|
||||
|
@ -104,7 +104,7 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConfReadMem"/>virConfReadMem ()</h3><pre class="programlisting"><a href="libvirt-conf.html#virConfPtr">virConfPtr</a> virConfReadMem (const char * memory, <br/> int len)<br/>
|
||||
</pre><p>Reads a configuration file loaded in memory. The string can be zero terminated in which case @len can be 0</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>pointer to the content of the configuration file</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>lenght in byte</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an handle to lookup settings or NULL if it failed to parse the content, use virConfFree() to free the data.</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>pointer to the content of the configuration file</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>length in byte</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an handle to lookup settings or NULL if it failed to parse the content, use virConfFree() to free the data.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConfWriteFile"/>virConfWriteFile ()</h3><pre class="programlisting">int virConfWriteFile (const char * filename, <br/> <a href="libvirt-conf.html#virConfPtr">virConfPtr</a> conf)<br/>
|
||||
</pre><p>Writes a configuration file back to a file.</p>
|
||||
@ -112,7 +112,7 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConfWriteMem"/>virConfWriteMem ()</h3><pre class="programlisting">int virConfWriteMem (char * memory, <br/> int * len, <br/> <a href="libvirt-conf.html#virConfPtr">virConfPtr</a> conf)<br/>
|
||||
</pre><p>Writes a configuration file back to a memory area. @len is an IN/OUT parameter, it indicates the size available in bytes, and on output the size required for the configuration file (even if the call fails due to insufficient space).</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>pointer to the memory to store the config file</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>pointer to the lenght in byte of the store, on output the size</td></tr><tr><td><span class="term"><i><tt>conf</tt></i>:</span></td><td>the conf</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written or -1 in case of error.</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>pointer to the memory to store the config file</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>pointer to the length in byte of the store, on output the size</td></tr><tr><td><span class="term"><i><tt>conf</tt></i>:</span></td><td>the conf</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written or -1 in case of error.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -338,7 +338,7 @@ The content of this structure is not made public by the API.
|
||||
long long rd_req : number of read requests
|
||||
long long rd_bytes : number of read bytes
|
||||
long long wr_req : number of write requests
|
||||
long long wr_bytes : numbber of written bytes
|
||||
long long wr_bytes : number of written bytes
|
||||
long long errs : In Xen this returns the mysterious 'oo_req'.
|
||||
} virDomainBlockStatsStruct;
|
||||
</pre><p/>
|
||||
@ -404,8 +404,8 @@ The content of this structure is not made public by the API.
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainXMLFlags">Enum </a>virDomainXMLFlags</h3><pre class="programlisting">enum <a href="#virDomainXMLFlags">virDomainXMLFlags</a> {
|
||||
<a name="VIR_DOMAIN_XML_SECURE">VIR_DOMAIN_XML_SECURE</a> = 1 /* dump security sensitive informations too */
|
||||
<a name="VIR_DOMAIN_XML_INACTIVE">VIR_DOMAIN_XML_INACTIVE</a> = 2 /* dump inactive domain informations */
|
||||
<a name="VIR_DOMAIN_XML_SECURE">VIR_DOMAIN_XML_SECURE</a> = 1 /* dump security sensitive information too */
|
||||
<a name="VIR_DOMAIN_XML_INACTIVE">VIR_DOMAIN_XML_INACTIVE</a> = 2 /* dump inactive domain information */
|
||||
};
|
||||
</pre><p/>
|
||||
</div>
|
||||
@ -596,11 +596,11 @@ The content of this structure is not made public by the API.
|
||||
<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 a hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the URI string which must be freed by the caller, or NULL if there was an error.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectGetVersion"/>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>
|
||||
</pre><p>Get the version level of the Hypervisor running. This may work only with hypervisor call, i.e. with privileged 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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectListDefinedDomains"/>virConnectListDefinedDomains ()</h3><pre class="programlisting">int virConnectListDefinedDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames)<br/>
|
||||
</pre><p>list the defined domains, stores the pointers to the names in @names</p>
|
||||
</pre><p>list the defined but inactive 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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectListDefinedNetworks"/>virConnectListDefinedNetworks ()</h3><pre class="programlisting">int virConnectListDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> char ** const names, <br/> int maxnames)<br/>
|
||||
@ -624,7 +624,7 @@ The content of this structure is not made public by the API.
|
||||
<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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array of char * to fill with pool names (allocated by caller)</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of the names array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfDefinedDomains"/>virConnectNumOfDefinedDomains ()</h3><pre class="programlisting">int virConnectNumOfDefinedDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>Provides the number of inactive domains.</p>
|
||||
</pre><p>Provides the number of defined but inactive domains.</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>the number of domain found or -1 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectNumOfDefinedNetworks"/>virConnectNumOfDefinedNetworks ()</h3><pre class="programlisting">int virConnectNumOfDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
@ -652,11 +652,11 @@ The content of this structure is not made public by the API.
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</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 URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectOpenAuth"/>virConnectOpenAuth ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenAuth (const char * name, <br/> <a href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a> auth, <br/> int flags)<br/>
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor. If neccessary, authentication will be performed fetching credentials via the callback</p>
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor. If necessary, authentication will be performed fetching credentials via the callback</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>auth</tt></i>:</span></td><td>Authenticate callback parameters</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>Open flags</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 URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virConnectOpenReadOnly"/>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>
|
||||
</pre><p>This function should be called first to get a restricted connection to the library 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>URI of the hypervisor</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 URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainAttachDevice"/>virDomainAttachDevice ()</h3><pre class="programlisting">int virDomainAttachDevice (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml)<br/>
|
||||
@ -676,15 +676,15 @@ The content of this structure is not made public by the API.
|
||||
<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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainCreateLinux"/>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></div>
|
||||
</pre><p>Launch a new Linux guest domain, based on an XML description similar to the one returned by virDomainGetXMLDesc() This function may requires privileged 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>string containing 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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainDefineXML"/>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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainDestroy"/>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>
|
||||
</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 privileged 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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainDetachDevice"/>virDomainDetachDevice ()</h3><pre class="programlisting">int virDomainDetachDevice (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml)<br/>
|
||||
@ -744,8 +744,8 @@ The content of this structure is not made public by the API.
|
||||
<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>buf</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a> bytes array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainGetVcpus"/>virDomainGetVcpus ()</h3><pre class="programlisting">int virDomainGetVcpus (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virVcpuInfoPtr">virVcpuInfoPtr</a> info, <br/> int maxinfo, <br/> unsigned char * cpumaps, <br/> int maplen)<br/>
|
||||
</pre><p>Extract information about virtual CPUs of domain, store it in info array and also in cpumaps if this pointer is'nt NULL.</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 domain object, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer to an array of <a href="libvirt-libvirt.html#virVcpuInfo">virVcpuInfo</a> structures (OUT)</td></tr><tr><td><span class="term"><i><tt>maxinfo</tt></i>:</span></td><td>number of structures in info array</td></tr><tr><td><span class="term"><i><tt>cpumaps</tt></i>:</span></td><td>pointer to an bit map of real CPUs for all vcpus of this domain (in 8-bit bytes) (OUT) If cpumaps is NULL, then no cupmap information is returned by the API. It's assumed there is <maxinfo> cpumap in cpumaps array. The memory allocated to cpumaps must be (maxinfo * maplen) bytes (ie: calloc(maxinfo, maplen)). One cpumap inside cpumaps has the format described in virDomainPinVcpu() API.</td></tr><tr><td><span class="term"><i><tt>maplen</tt></i>:</span></td><td>number of bytes in one cpumap, from 1 up to size of CPU map in underlying virtualization system (Xen...).</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of info filled in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
|
||||
</pre><p>Extract information about virtual CPUs of domain, store it in info array and also in cpumaps if this pointer isn't NULL.</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 domain object, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer to an array of <a href="libvirt-libvirt.html#virVcpuInfo">virVcpuInfo</a> structures (OUT)</td></tr><tr><td><span class="term"><i><tt>maxinfo</tt></i>:</span></td><td>number of structures in info array</td></tr><tr><td><span class="term"><i><tt>cpumaps</tt></i>:</span></td><td>pointer to an bit map of real CPUs for all vcpus of this domain (in 8-bit bytes) (OUT) If cpumaps is NULL, then no cpumap information is returned by the API. It's assumed there is <maxinfo> cpumap in cpumaps array. The memory allocated to cpumaps must be (maxinfo * maplen) bytes (ie: calloc(maxinfo, maplen)). One cpumap inside cpumaps has the format described in virDomainPinVcpu() API.</td></tr><tr><td><span class="term"><i><tt>maplen</tt></i>:</span></td><td>number of bytes in one cpumap, from 1 up to size of CPU map in underlying virtualization system (Xen...).</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of info filled in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainGetXMLDesc"/>virDomainGetXMLDesc ()</h3><pre class="programlisting">char * virDomainGetXMLDesc (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> int flags)<br/>
|
||||
</pre><p>Provide an XML description of the domain. The description may be reused later to relaunch the domain with virDomainCreateLinux().</p>
|
||||
@ -776,7 +776,7 @@ The content of this structure is not made public by the API.
|
||||
<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>dconn</tt></i>:</span></td><td>destination host (a connection object)</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags</td></tr><tr><td><span class="term"><i><tt>dname</tt></i>:</span></td><td>(optional) rename domain to this at destination</td></tr><tr><td><span class="term"><i><tt>uri</tt></i>:</span></td><td>(optional) dest hostname/URI as seen from the source host</td></tr><tr><td><span class="term"><i><tt>bandwidth</tt></i>:</span></td><td>(optional) specify migration bandwidth limit in Mbps</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new domain object if the migration was successful, or NULL in case of error. Note that the new domain object exists in the scope of the destination connection (dconn).</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainPinVcpu"/>virDomainPinVcpu ()</h3><pre class="programlisting">int virDomainPinVcpu (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int vcpu, <br/> unsigned char * cpumap, <br/> int maplen)<br/>
|
||||
</pre><p>Dynamically change the real CPUs which can be allocated to a virtual CPU. This function requires priviledged access to the hypervisor.</p>
|
||||
</pre><p>Dynamically change the real CPUs which can be allocated to a virtual CPU. This function requires privileged access to the hypervisor.</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 domain object, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>vcpu</tt></i>:</span></td><td>virtual CPU number</td></tr><tr><td><span class="term"><i><tt>cpumap</tt></i>:</span></td><td>pointer to a bit map of real CPUs (in 8-bit bytes) (IN) Each bit set to 1 means that corresponding CPU is usable. Bytes are stored in little-endian order: CPU0-7, 8-15... In each byte, lowest CPU number is least significant bit.</td></tr><tr><td><span class="term"><i><tt>maplen</tt></i>:</span></td><td>number of bytes in cpumap, from 1 up to size of CPU map in underlying virtualization system (Xen...). If maplen < size, missing bytes are set to zero. If maplen > size, failure code is returned.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainReboot"/>virDomainReboot ()</h3><pre class="programlisting">int virDomainReboot (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int flags)<br/>
|
||||
@ -788,7 +788,7 @@ The content of this structure is not made public by the API.
|
||||
<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>from</tt></i>:</span></td><td>path to the</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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainResume"/>virDomainResume ()</h3><pre class="programlisting">int virDomainResume (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br/>
|
||||
</pre><p>Resume an suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain(). This function may requires priviledged access</p>
|
||||
</pre><p>Resume an suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain(). This function may requires privileged 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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainSave"/>virDomainSave ()</h3><pre class="programlisting">int virDomainSave (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * to)<br/>
|
||||
@ -800,11 +800,11 @@ The content of this structure is not made public by the API.
|
||||
<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>autostart</tt></i>:</span></td><td>whether the domain should be automatically started 0 or 1</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainSetMaxMemory"/>virDomainSetMaxMemory ()</h3><pre class="programlisting">int virDomainSetMaxMemory (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned long memory)<br/>
|
||||
</pre><p>Dynamically change the maximum amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function requires priviledged access to the hypervisor.</p>
|
||||
</pre><p>Dynamically change the maximum amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function requires privileged access to the hypervisor.</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 or NULL</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>the memory size in kilobytes</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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainSetMemory"/>virDomainSetMemory ()</h3><pre class="programlisting">int virDomainSetMemory (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned long memory)<br/>
|
||||
</pre><p>Dynamically change the target amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function may requires priviledged access to the hypervisor.</p>
|
||||
</pre><p>Dynamically change the target amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function may requires privileged access to the hypervisor.</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 or NULL</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>the memory size in kilobytes</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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainSetSchedulerParameters"/>virDomainSetSchedulerParameters ()</h3><pre class="programlisting">int virDomainSetSchedulerParameters (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> <a href="libvirt-libvirt.html#virSchedParameterPtr">virSchedParameterPtr</a> params, <br/> int nparams)<br/>
|
||||
@ -812,7 +812,7 @@ The content of this structure is not made public by the API.
|
||||
<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 domain object</td></tr><tr><td><span class="term"><i><tt>params</tt></i>:</span></td><td>pointer to scheduler parameter objects</td></tr><tr><td><span class="term"><i><tt>nparams</tt></i>:</span></td><td>number of scheduler parameter (this value should be same or less than the returned value nparams of virDomainGetSchedulerType)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainSetVcpus"/>virDomainSetVcpus ()</h3><pre class="programlisting">int virDomainSetVcpus (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> unsigned int nvcpus)<br/>
|
||||
</pre><p>Dynamically change the number of virtual CPUs used by the domain. Note that this call may fail if the underlying virtualization hypervisor does not support it or if growing the number is arbitrary limited. This function requires priviledged access to the hypervisor.</p>
|
||||
</pre><p>Dynamically change the number of virtual CPUs used by the domain. Note that this call may fail if the underlying virtualization hypervisor does not support it or if growing the number is arbitrary limited. This function requires privileged access to the hypervisor.</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 domain object, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>nvcpus</tt></i>:</span></td><td>the new number of virtual CPUs for this 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 failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainShutdown"/>virDomainShutdown ()</h3><pre class="programlisting">int virDomainShutdown (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br/>
|
||||
@ -820,7 +820,7 @@ The content of this structure is not made public by the API.
|
||||
<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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainSuspend"/>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>
|
||||
</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 privileged 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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virDomainUndefine"/>virDomainUndefine ()</h3><pre class="programlisting">int virDomainUndefine (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br/>
|
||||
@ -828,7 +828,7 @@ The content of this structure is not made public by the API.
|
||||
<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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virGetVersion"/>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>
|
||||
</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 available, 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>the type of connection/driver looked at</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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virInitialize"/>virInitialize ()</h3><pre class="programlisting">int virInitialize (void)<br/>
|
||||
@ -848,7 +848,7 @@ The content of this structure is not made public by the API.
|
||||
<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 network, 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 network otherwise</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNetworkDestroy"/>virNetworkDestroy ()</h3><pre class="programlisting">int virNetworkDestroy (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br/>
|
||||
</pre><p>Destroy the network 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>
|
||||
</pre><p>Destroy the network 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 privileged access</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network 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></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNetworkFree"/>virNetworkFree ()</h3><pre class="programlisting">int virNetworkFree (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br/>
|
||||
@ -908,7 +908,7 @@ The content of this structure is not made public by the API.
|
||||
<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>freeMems</tt></i>:</span></td><td>pointer to the array of unsigned long long</td></tr><tr><td><span class="term"><i><tt>startCell</tt></i>:</span></td><td>index of first cell to return freeMems info on.</td></tr><tr><td><span class="term"><i><tt>maxCells</tt></i>:</span></td><td>Maximum number of cells for which freeMems information can be returned.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of entries filled in freeMems, or -1 in case of error.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeGetFreeMemory"/>virNodeGetFreeMemory ()</h3><pre class="programlisting">unsigned long long virNodeGetFreeMemory (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
|
||||
</pre><p>provides the free memory availble on the Node</p>
|
||||
</pre><p>provides the free memory available on the Node</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>the available free memory in kilobytes or 0 in case of error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virNodeGetInfo"/>virNodeGetInfo ()</h3><pre class="programlisting">int virNodeGetInfo (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> <a href="libvirt-libvirt.html#virNodeInfoPtr">virNodeInfoPtr</a> info)<br/>
|
||||
@ -917,19 +917,19 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolBuild"/>virStoragePoolBuild ()</h3><pre class="programlisting">int virStoragePoolBuild (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Build the underlying storage pool</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 upon failure</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 upon failure</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolCreate"/>virStoragePoolCreate ()</h3><pre class="programlisting">int virStoragePoolCreate (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Starts an inactive storage pool</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 if it could not be started</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 if it could not be started</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolCreateXML"/>virStoragePoolCreateXML ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolCreateXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xmlDesc, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Create a new storage based on its XML description. The pool is not persitent, so its definition will disappear when it is destroyed, or if the host is restarted</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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xmlDesc</tt></i>:</span></td><td>XML description for new pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div></div>
|
||||
</pre><p>Create a new storage based on its XML description. The pool is not persistent, so its definition will disappear when it is destroyed, or if the host is restarted</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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xmlDesc</tt></i>:</span></td><td>XML description for new pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolDefineXML"/>virStoragePoolDefineXML ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolDefineXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> const char * xml, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Define a new inactive storage pool based on its XML description. The pool is persitent, until explicitly undefined.</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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>XML description for new pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div></div>
|
||||
</pre><p>Define a new inactive storage pool based on its XML description. The pool is persistent, until explicitly undefined.</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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>XML description for new pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolDelete"/>virStoragePoolDelete ()</h3><pre class="programlisting">int virStoragePoolDelete (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Delete the underlying pool resources. This is a non-recoverable operation. The <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object itself is not free'd.</p>
|
||||
@ -949,7 +949,7 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolGetConnect"/>virStoragePoolGetConnect ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virStoragePoolGetConnect (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br/>
|
||||
</pre><p>Provides the connection pointer associated with a storage pool. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the pool object together.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to a poool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to a pool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolGetInfo"/>virStoragePoolGetInfo ()</h3><pre class="programlisting">int virStoragePoolGetInfo (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> <a href="libvirt-libvirt.html#virStoragePoolInfoPtr">virStoragePoolInfoPtr</a> info)<br/>
|
||||
</pre><p>Get volatile information about the storage pool such as free space / usage summary</p>
|
||||
@ -969,7 +969,7 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolGetXMLDesc"/>virStoragePoolGetXMLDesc ()</h3><pre class="programlisting">char * virStoragePoolGetXMLDesc (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Fetch an XML document describing all aspects of the storage pool. This is suitable for later feeding back into the <a href="libvirt-libvirt.html#virStoragePoolCreateXML">virStoragePoolCreateXML</a> method.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for XML format options (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a XML document, or NULL on error</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for XML format options (set of virDomainXMLFlags)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a XML document, or NULL on error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStoragePoolListVolumes"/>virStoragePoolListVolumes ()</h3><pre class="programlisting">int virStoragePoolListVolumes (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/> char ** const names, <br/> int maxnames)<br/>
|
||||
</pre><p>Fetch list of storage volume names, limiting to at most maxnames.</p>
|
||||
@ -1013,7 +1013,7 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStorageVolDelete"/>virStorageVolDelete ()</h3><pre class="programlisting">int virStorageVolDelete (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br/> unsigned int flags)<br/>
|
||||
</pre><p>Delete the storage volume from the pool</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStorageVolFree"/>virStorageVolFree ()</h3><pre class="programlisting">int virStorageVolFree (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br/>
|
||||
</pre><p>Release the storage volume handle. The underlying storage volume contains to exist</p>
|
||||
@ -1021,14 +1021,14 @@ The content of this structure is not made public by the API.
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStorageVolGetConnect"/>virStorageVolGetConnect ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virStorageVolGetConnect (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br/>
|
||||
</pre><p>Provides the connection pointer associated with a storage volume. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the volume object together.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to a poool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div></div>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to a pool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStorageVolGetInfo"/>virStorageVolGetInfo ()</h3><pre class="programlisting">int virStorageVolGetInfo (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br/> <a href="libvirt-libvirt.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a> info)<br/>
|
||||
</pre><p>Fetches volatile information about the storage volume such as its current allocation</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer at which to store info</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on failure</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStorageVolGetKey"/>virStorageVolGetKey ()</h3><pre class="programlisting">const char * virStorageVolGetKey (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br/>
|
||||
</pre><p>Fetch the storage volume key. This is globally unique, so the same volume will hve the same key no matter what host it is accessed from</p>
|
||||
</pre><p>Fetch the storage volume key. This is globally unique, so the same volume will have the same key no matter what host it is accessed from</p>
|
||||
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the volume key, or NULL on error</td></tr></tbody></table></div></div>
|
||||
<hr/>
|
||||
<div class="refsect2" lang="en"><h3><a name="virStorageVolGetName"/>virStorageVolGetName ()</h3><pre class="programlisting">const char * virStorageVolGetName (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br/>
|
||||
|
@ -97,7 +97,8 @@ void <a href="#virConnResetLastError">virConnResetLastError</a> (<a href="libvi
|
||||
<a name="VIR_FROM_OPENVZ">VIR_FROM_OPENVZ</a> = 14 /* Error from OpenVZ driver */
|
||||
<a name="VIR_FROM_XENXM">VIR_FROM_XENXM</a> = 15 /* Error at Xen XM layer */
|
||||
<a name="VIR_FROM_STATS_LINUX">VIR_FROM_STATS_LINUX</a> = 16 /* Error in the Linux Stats code */
|
||||
<a name="VIR_FROM_STORAGE">VIR_FROM_STORAGE</a> = 17 /* Error from storage driver */
|
||||
<a name="VIR_FROM_LXC">VIR_FROM_LXC</a> = 17 /* Error from Linux Container driver */
|
||||
<a name="VIR_FROM_STORAGE">VIR_FROM_STORAGE</a> = 18 /* Error from storage driver */
|
||||
};
|
||||
</pre><p/>
|
||||
</div>
|
||||
|
@ -1,21 +1,21 @@
|
||||
<?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>Handling of errors</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">Handling of errors</h1><p>The main goals of libvirt when it comes to error handling are:</p><ul><li>provide as much detail as possible</li>
|
||||
<li>provide the informations as soon as possible</li>
|
||||
<li>provide the information as soon as possible</li>
|
||||
<li>dont force the library user into one style of error handling</li>
|
||||
</ul><p>As result the library provide both synchronous, callback based and
|
||||
asynchronous error reporting. When an error happens in the library code the
|
||||
error is logged, allowing to retrieve it later and if the user registered an
|
||||
error callback it will be called synchronously. Once the call to libvirt ends
|
||||
the error can be detected by the return value and the full information for
|
||||
the last logged error can be retrieved.</p><p>To avoid as much as prossible troubles with a global variable in a
|
||||
the last logged error can be retrieved.</p><p>To avoid as much as possible troubles with a global variable in a
|
||||
multithreaded environment, libvirt will associate when possible the errors to
|
||||
the current connection they are related to, that way the error is stored in a
|
||||
dynamic structure which can be made thread specific. Error callback can be
|
||||
set specifically to a connection with</p><p>So error handling in the code is the following:</p><ol><li>if the error can be associated to a connection for example when failing
|
||||
to look up a domain
|
||||
<ol><li>if there is a callback associated to the connection set with <a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a>,
|
||||
call it with the error informations</li>
|
||||
call it with the error information</li>
|
||||
<li>otherwise if there is a global callback set with <a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a>,
|
||||
call it with the error information</li>
|
||||
<li>otherwise call <a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a>
|
||||
@ -31,7 +31,7 @@ set specifically to a connection with</p><p>So error handling in the code is the
|
||||
on stderr</li>
|
||||
<li>save the error in the connection for later retrieval with <a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a></li>
|
||||
</ol></li>
|
||||
</ol><p>In all cases the error informations are provided as a <a href="html/libvirt-virterror.html#virErrorPtr">virErrorPtr</a> pointer to
|
||||
</ol><p>In all cases the error information is provided as a <a href="html/libvirt-virterror.html#virErrorPtr">virErrorPtr</a> pointer to
|
||||
read-only structure <a href="html/libvirt-virterror.html#virError">virError</a> containing the
|
||||
following fields:</p><ul><li>code: an error number from the <a href="html/libvirt-virterror.html#virErrorNumber">virErrorNumber</a>
|
||||
enum</li>
|
||||
@ -43,15 +43,15 @@ following fields:</p><ul><li>code: an error number from the <a href="html/libvir
|
||||
<li>conn: if available a pointer to the <a href="html/libvirt-libvirt.html#virConnectPtr">virConnectPtr</a>
|
||||
connection to the hypervisor where this happened</li>
|
||||
<li>dom: if available a pointer to the <a href="html/libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain
|
||||
targetted in the operation</li>
|
||||
</ul><p>and then extra raw informations about the error which may be initialized
|
||||
to 0 or NULL if unused</p><ul><li>str1, str2, str3: string informations, usually str1 is the error
|
||||
targeted in the operation</li>
|
||||
</ul><p>and then extra raw information about the error which may be initialized
|
||||
to 0 or NULL if unused</p><ul><li>str1, str2, str3: string information, usually str1 is the error
|
||||
message format</li>
|
||||
<li>int1, int2: integer informations</li>
|
||||
<li>int1, int2: integer information</li>
|
||||
</ul><p>So usually, setting up specific error handling with libvirt consist of
|
||||
registering an handler with with <a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a> or
|
||||
with <a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a>,
|
||||
chech the value of the code value, take appropriate action, if needed let
|
||||
check the value of the code value, take appropriate action, if needed let
|
||||
libvirt print the error on stderr by calling <a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a>.
|
||||
For asynchronous error handing, set such a function doing nothing to avoid
|
||||
the error being reported on stderr, and call virConnGetLastError or
|
||||
|
@ -1,7 +1,7 @@
|
||||
<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>
|
||||
<synopsis>Extract information about Xen domain 0</synopsis>
|
||||
<purpose>Demonstrate the basic use of the library to connect to the hypervisor and extract domain information.</purpose>
|
||||
<usage>info1</usage>
|
||||
<test>info1</test>
|
||||
<author>Daniel Veillard</author>
|
||||
|
@ -1,7 +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>Libvirt set of C code examples</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">Libvirt set of C code examples</h1><p> The examples are stored per section depending on the main focus
|
||||
of the example:</p><ul><li><p><a href="#Informations">Informations</a> :</p><ul><li><a href="#info1.c">info1.c</a>: Extract informations about Xen domain 0</li></ul></li><li><p><a href="#Scheduling">Scheduling</a> :</p><ul><li><a href="#suspend.c">suspend.c</a>: Suspend a domain and then resume its execution</li></ul></li></ul><p> Getting the compilation options and libraries dependancies needed
|
||||
of the example:</p><ul><li><p><a href="#Informations">Informations</a> :</p><ul><li><a href="#info1.c">info1.c</a>: Extract information about Xen domain 0</li></ul></li><li><p><a href="#Scheduling">Scheduling</a> :</p><ul><li><a href="#suspend.c">suspend.c</a>: Suspend a domain and then resume its execution</li></ul></li></ul><p> Getting the compilation options and libraries dependancies needed
|
||||
to generate binaries from the examples is best done on Linux/Unix by using
|
||||
the pkg-config data which should have been installed as part of <i>make
|
||||
install</i> step or when installing the libvirt development package:</p><pre>gcc -o example example.c `pkg-config libvirt --libs`</pre><h2><a name="Informations" id="Informations"></a>Informations Examples</h2><h3><a name="info1.c" href="info1.c" id="info1.c">info1.c</a>: Extract informations about Xen domain 0</h3><p>Demonstrate the basic use of the library to connect to the hypervisor and extract domain informations.</p><p>Uses:</p><ul><li> line 29: Function <a href="../html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a> from libvirt.h</li><li> line 36: Function <a href="../html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a> from libvirt.h</li><li> line 43: Function <a href="../html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a> from libvirt.h</li><li> line 53: Function <a href="../html/libvirt-libvirt.html#virDomainFree">virDomainFree</a> from libvirt.h</li><li> line 55: Function <a href="../html/libvirt-libvirt.html#virConnectClose">virConnectClose</a> from libvirt.h</li></ul><p>Usage:</p><p>info1</p><p>Author: Daniel Veillard</p><h2><a name="Scheduling" id="Scheduling"></a>Scheduling Examples</h2><h3><a name="suspend.c" href="suspend.c" id="suspend.c">suspend.c</a>: Suspend a domain and then resume its execution</h3><p>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.</p><p>Uses:</p><ul><li> line 31: Function <a href="../html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a> from libvirt.h</li><li> line 50: Function <a href="../html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a> from libvirt.h</li><li> line 62: Function <a href="../html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a> from libvirt.h</li><li> line 73: Function <a href="../html/libvirt-libvirt.html#virDomainResume">virDomainResume</a> from libvirt.h</li><li> line 93: Function <a href="../html/libvirt-libvirt.html#virDomainFree">virDomainFree</a> from libvirt.h</li><li> line 100: Function <a href="../html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a> from libvirt.h</li><li> line 111: Function <a href="../html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a> from libvirt.h</li><li> line 132: Function <a href="../html/libvirt-libvirt.html#virConnectClose">virConnectClose</a> from libvirt.h</li></ul><p>Usage:</p><p>suspend [id]</p><p>Author: Daniel Veillard</p></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&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://libvirt.org/ocaml/">OCaml bindings</a></li><li><a href="http://libvirt.org/ruby/">Ruby 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>
|
||||
install</i> step or when installing the libvirt development package:</p><pre>gcc -o example example.c `pkg-config libvirt --libs`</pre><h2><a name="Informations" id="Informations"></a>Informations Examples</h2><h3><a name="info1.c" href="info1.c" id="info1.c">info1.c</a>: Extract information about Xen domain 0</h3><p>Demonstrate the basic use of the library to connect to the hypervisor and extract domain information.</p><p>Uses:</p><ul><li> line 29: Function <a href="../html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a> from libvirt.h</li><li> line 36: Function <a href="../html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a> from libvirt.h</li><li> line 43: Function <a href="../html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a> from libvirt.h</li><li> line 53: Function <a href="../html/libvirt-libvirt.html#virDomainFree">virDomainFree</a> from libvirt.h</li><li> line 55: Function <a href="../html/libvirt-libvirt.html#virConnectClose">virConnectClose</a> from libvirt.h</li></ul><p>Usage:</p><p>info1</p><p>Author: Daniel Veillard</p><h2><a name="Scheduling" id="Scheduling"></a>Scheduling Examples</h2><h3><a name="suspend.c" href="suspend.c" id="suspend.c">suspend.c</a>: Suspend a domain and then resume its execution</h3><p>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.</p><p>Uses:</p><ul><li> line 31: Function <a href="../html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a> from libvirt.h</li><li> line 50: Function <a href="../html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a> from libvirt.h</li><li> line 62: Function <a href="../html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a> from libvirt.h</li><li> line 73: Function <a href="../html/libvirt-libvirt.html#virDomainResume">virDomainResume</a> from libvirt.h</li><li> line 93: Function <a href="../html/libvirt-libvirt.html#virDomainFree">virDomainFree</a> from libvirt.h</li><li> line 100: Function <a href="../html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a> from libvirt.h</li><li> line 111: Function <a href="../html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a> from libvirt.h</li><li> line 132: Function <a href="../html/libvirt-libvirt.html#virConnectClose">virConnectClose</a> from libvirt.h</li></ul><p>Usage:</p><p>suspend [id]</p><p>Author: Daniel Veillard</p></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&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://libvirt.org/ocaml/">OCaml bindings</a></li><li><a href="http://libvirt.org/ruby/">Ruby 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>
|
||||
|
@ -1,8 +1,8 @@
|
||||
/**
|
||||
* section: Informations
|
||||
* synopsis: Extract informations about Xen domain 0
|
||||
* synopsis: Extract information about Xen domain 0
|
||||
* purpose: Demonstrate the basic use of the library to connect to the
|
||||
* hypervisor and extract domain informations.
|
||||
* hypervisor and extract domain information.
|
||||
* usage: info1
|
||||
* test: info1
|
||||
* author: Daniel Veillard
|
||||
@ -16,13 +16,13 @@
|
||||
* getDomainInfo:
|
||||
* @id: the id of the domain
|
||||
*
|
||||
* extract the domain 0 informations
|
||||
* extract the domain 0 information
|
||||
*/
|
||||
static void
|
||||
getDomainInfo(int id) {
|
||||
virConnectPtr conn = NULL; /* the hypervisor connection */
|
||||
virDomainPtr dom = NULL; /* the domain being checked */
|
||||
virDomainInfo info; /* the informations being fetched */
|
||||
virDomainInfo info; /* the information being fetched */
|
||||
int ret;
|
||||
|
||||
/* NULL means connect to local Xen hypervisor */
|
||||
@ -39,10 +39,10 @@ getDomainInfo(int id) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* Get the informations */
|
||||
/* Get the information */
|
||||
ret = virDomainGetInfo(dom, &info);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "Failed to get informations for Domain %d\n", id);
|
||||
fprintf(stderr, "Failed to get information for Domain %d\n", id);
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ static virConnectPtr conn = NULL; /* the hypervisor connection */
|
||||
*/
|
||||
static int
|
||||
checkDomainState(virDomainPtr dom) {
|
||||
virDomainInfo info; /* the informations being fetched */
|
||||
virDomainInfo info; /* the information being fetched */
|
||||
int ret;
|
||||
|
||||
ret = virDomainGetInfo(dom, &info);
|
||||
@ -39,7 +39,7 @@ checkDomainState(virDomainPtr dom) {
|
||||
* SuspendAndResumeDomain:
|
||||
* @id: the id of the domain
|
||||
*
|
||||
* extract the domain 0 informations
|
||||
* extract the domain 0 information
|
||||
*/
|
||||
static void
|
||||
SuspendAndResumeDomain(int id) {
|
||||
|
@ -45,7 +45,7 @@ significant:</p><ul><li>name: the domain name, preferably ASCII based</li>
|
||||
<li>memory: the maximum memory allocated to the domain in kilobytes</li>
|
||||
<li>vcpu: the number of virtual cpu configured for the domain</li>
|
||||
<li>os: a block describing the Operating System, its content will be
|
||||
dependant on the OS type
|
||||
dependent on the OS type
|
||||
<ul><li>type: indicate the OS type, always linux at this point</li>
|
||||
<li>kernel: path to the kernel on the Domain 0 filesystem</li>
|
||||
<li>initrd: an optional path for the init ramdisk on the Domain 0
|
||||
@ -157,7 +157,7 @@ systems:</p><pre><domain type='xen' id='3'>
|
||||
<li>the <code><os></code> block description is very different, first
|
||||
it indicates that the type is 'hvm' for hardware virtualization, then
|
||||
instead of a kernel, boot and command line arguments, it points to an os
|
||||
boot loader which will extract the boot informations from the boot device
|
||||
boot loader which will extract the boot information from the boot device
|
||||
specified in a separate boot element. The <code>dev</code> attribute on
|
||||
the <code>boot</code> tag can be one of:
|
||||
<ul><li><code>fd</code> - boot from first floppy device</li>
|
||||
@ -168,7 +168,7 @@ systems:</p><pre><domain type='xen' id='3'>
|
||||
pointing to an additional program in charge of emulating the devices</li>
|
||||
<li>the disk entry indicates in the dev target section that the emulation
|
||||
for the drive is the first IDE disk device hda. The list of device names
|
||||
supported is dependant on the Hypervisor, but for Xen it can be any IDE
|
||||
supported is dependent on the Hypervisor, but for Xen it can be any IDE
|
||||
device <code>hda</code>-<code>hdd</code>, or a floppy device
|
||||
<code>fda</code>, <code>fdb</code>. The <code><disk></code> element
|
||||
also supports a 'device' attribute to indicate what kinda of hardware to
|
||||
@ -247,7 +247,7 @@ support a variety of options:</p><ol><li>Userspace SLIRP stack
|
||||
of the box which does NAT'ing to the default route and has an IP range of
|
||||
<code>192.168.22.0/255.255.255.0</code>. Each guest will have an
|
||||
associated tun device created with a name of vnetN, which can also be
|
||||
overriden with the <target> element. Example configs are:</p>
|
||||
overridden with the <target> element. Example configs are:</p>
|
||||
<pre><interface type='network'>
|
||||
<source network='default'/>
|
||||
</interface>
|
||||
@ -263,7 +263,7 @@ support a variety of options:</p><ol><li>Userspace SLIRP stack
|
||||
<p>Provides a bridge from the VM directly onto the LAN. This assumes
|
||||
there is a bridge device on the host which has one or more of the hosts
|
||||
physical NICs enslaved. The guest VM will have an associated tun device
|
||||
created with a name of vnetN, which can also be overriden with the
|
||||
created with a name of vnetN, which can also be overridden with the
|
||||
<target> element. The tun device will be enslaved to the bridge.
|
||||
The IP range / network configuration is whatever is used on the LAN. This
|
||||
provides the guest VM full incoming & outgoing net access just like a
|
||||
@ -281,11 +281,11 @@ support a variety of options:</p><ol><li>Userspace SLIRP stack
|
||||
<li>Generic connection to LAN
|
||||
<p>Provides a means for the administrator to execute an arbitrary script
|
||||
to connect the guest's network to the LAN. The guest will have a tun
|
||||
device created with a name of vnetN, which can also be overriden with the
|
||||
device created with a name of vnetN, which can also be overridden with the
|
||||
<target> element. After creating the tun device a shell script will
|
||||
be run which is expected to do whatever host network integration is
|
||||
required. By default this script is called /etc/qemu-ifup but can be
|
||||
overriden.</p>
|
||||
overridden.</p>
|
||||
<pre><interface type='ethernet'/>
|
||||
|
||||
<interface type='ethernet'>
|
||||
@ -409,13 +409,13 @@ BIOS you will see</p><pre><capabilities>
|
||||
</features>
|
||||
</guest></span>
|
||||
...
|
||||
</capabilities></pre><p>The first block (in red) indicates the host hardware capbilities, currently
|
||||
</capabilities></pre><p>The first block (in red) indicates the host hardware capabilities, currently
|
||||
it is limited to the CPU properties but other information may be available,
|
||||
it shows the CPU architecture, and the features of the chip (the feature
|
||||
block is similar to what you will find in a Xen fully virtualized domain
|
||||
description).</p><p>The second block (in blue) indicates the paravirtualization support of the
|
||||
Xen support, you will see the os_type of xen to indicate a paravirtual
|
||||
kernel, then architecture informations and potential features.</p><p>The third block (in green) gives similar informations but when running a
|
||||
kernel, then architecture information and potential features.</p><p>The third block (in green) gives similar information but when running a
|
||||
32 bit OS fully virtualized with Xen using the hvm support.</p><p>This section is likely to be updated and augmented in the future, see <a href="https://www.redhat.com/archives/libvir-list/2007-March/msg00215.html">the
|
||||
discussion</a> which led to the capabilities format in the mailing-list
|
||||
archives.</p></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="news.html">Releases</a></li><li><a href="intro.html">Introduction</a></li><li><a href="architecture.html">libvirt architecture</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="format.html">XML Format</a></li><li><a href="python.html">Bindings for other languages</a></li><li><a href="errors.html">Handling of errors</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="windows.html">Windows support</a></li><li><a href="remote.html">Remote support</a></li><li><a href="auth.html">Access control</a></li><li><a href="uri.html">Connection URIs</a></li><li><a href="hvsupport.html">Hypervisor support</a></li><li><a href="storage.html">Storage Management</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&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://libvirt.org/ocaml/">OCaml bindings</a></li><li><a href="http://libvirt.org/ruby/">Ruby 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>
|
||||
|
@ -37,8 +37,8 @@ The content of this structure is not made public by the API.
|
||||
</pre><p>Reads a configuration file.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>filename</tt></i>:</span></td><td>the path to the configuration file.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an handle to lookup settings or NULL if it failed to read or parse the file, use virConfFree() to free the data.</td></tr></tbody></table></div><h3><a name="virConfReadMem" id="virConfReadMem"></a>Function: virConfReadMem</h3><pre class="programlisting"><a href="libvirt-conf.html#virConfPtr">virConfPtr</a> virConfReadMem (const char * memory, <br /> int len)<br />
|
||||
</pre><p>Reads a configuration file loaded in memory. The string can be zero terminated in which case @len can be 0</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>pointer to the content of the configuration file</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>lenght in byte</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an handle to lookup settings or NULL if it failed to parse the content, use virConfFree() to free the data.</td></tr></tbody></table></div><h3><a name="virConfWriteFile" id="virConfWriteFile"></a>Function: virConfWriteFile</h3><pre class="programlisting">int virConfWriteFile (const char * filename, <br /> <a href="libvirt-conf.html#virConfPtr">virConfPtr</a> conf)<br />
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>pointer to the content of the configuration file</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>length in byte</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an handle to lookup settings or NULL if it failed to parse the content, use virConfFree() to free the data.</td></tr></tbody></table></div><h3><a name="virConfWriteFile" id="virConfWriteFile"></a>Function: virConfWriteFile</h3><pre class="programlisting">int virConfWriteFile (const char * filename, <br /> <a href="libvirt-conf.html#virConfPtr">virConfPtr</a> conf)<br />
|
||||
</pre><p>Writes a configuration file back to a file.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>filename</tt></i>:</span></td><td>the path to the configuration file.</td></tr><tr><td><span class="term"><i><tt>conf</tt></i>:</span></td><td>the conf</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written or -1 in case of error.</td></tr></tbody></table></div><h3><a name="virConfWriteMem" id="virConfWriteMem"></a>Function: virConfWriteMem</h3><pre class="programlisting">int virConfWriteMem (char * memory, <br /> int * len, <br /> <a href="libvirt-conf.html#virConfPtr">virConfPtr</a> conf)<br />
|
||||
</pre><p>Writes a configuration file back to a memory area. @len is an IN/OUT parameter, it indicates the size available in bytes, and on output the size required for the configuration file (even if the call fails due to insufficient space).</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>pointer to the memory to store the config file</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>pointer to the lenght in byte of the store, on output the size</td></tr><tr><td><span class="term"><i><tt>conf</tt></i>:</span></td><td>the conf</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written or -1 in case of error.</td></tr></tbody></table></div></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&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</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>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>pointer to the memory to store the config file</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>pointer to the length in byte of the store, on output the size</td></tr><tr><td><span class="term"><i><tt>conf</tt></i>:</span></td><td>the conf</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of bytes written or -1 in case of error.</td></tr></tbody></table></div></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&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</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>
|
||||
|
@ -222,7 +222,7 @@ The content of this structure is not made public by the API.
|
||||
long long rd_req : number of read requests
|
||||
long long rd_bytes : number of read bytes
|
||||
long long wr_req : number of write requests
|
||||
long long wr_bytes : numbber of written bytes
|
||||
long long wr_bytes : number of written bytes
|
||||
long long errs : In Xen this returns the mysterious 'oo_
|
||||
}</pre><h3>Enum <a name="virDomainCreateFlags" id="virDomainCreateFlags">virDomainCreateFlags</a></h3><pre class="programlisting">Enum virDomainCreateFlags {
|
||||
<a name="VIR_DOMAIN_NONE" id="VIR_DOMAIN_NONE">VIR_DOMAIN_NONE</a> = 0
|
||||
@ -261,8 +261,8 @@ The content of this structure is not made public by the API.
|
||||
<a name="VIR_DOMAIN_CRASHED" id="VIR_DOMAIN_CRASHED">VIR_DOMAIN_CRASHED</a> = 6 : the domain is crashed
|
||||
}
|
||||
</pre><h3>Enum <a name="virDomainXMLFlags" id="virDomainXMLFlags">virDomainXMLFlags</a></h3><pre class="programlisting">Enum virDomainXMLFlags {
|
||||
<a name="VIR_DOMAIN_XML_SECURE" id="VIR_DOMAIN_XML_SECURE">VIR_DOMAIN_XML_SECURE</a> = 1 : dump security sensitive informations too
|
||||
<a name="VIR_DOMAIN_XML_INACTIVE" id="VIR_DOMAIN_XML_INACTIVE">VIR_DOMAIN_XML_INACTIVE</a> = 2 : dump inactive domain informations
|
||||
<a name="VIR_DOMAIN_XML_SECURE" id="VIR_DOMAIN_XML_SECURE">VIR_DOMAIN_XML_SECURE</a> = 1 : dump security sensitive information too
|
||||
<a name="VIR_DOMAIN_XML_INACTIVE" id="VIR_DOMAIN_XML_INACTIVE">VIR_DOMAIN_XML_INACTIVE</a> = 2 : dump inactive domain information
|
||||
}
|
||||
</pre><h3><a name="virNetwork" id="virNetwork">Structure virNetwork</a></h3><pre class="programlisting">Structure virNetwork<br />struct _virNetwork {
|
||||
The content of this structure is not made public by the API.
|
||||
@ -358,9 +358,9 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
<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. See also: http://www.redhat.com/archives/libvir-list/2007-February/msg00096.html</td></tr></tbody></table></div><h3><a name="virConnectGetURI" id="virConnectGetURI"></a>Function: virConnectGetURI</h3><pre class="programlisting">char * virConnectGetURI (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>This returns the URI (name) of the hypervisor connection. Normally this is the same as or similar to the string passed to the virConnectOpen/virConnectOpenReadOnly call, but the driver may make the URI canonical. If name == NULL was passed to virConnectOpen, then the driver will return a non-NULL URI which can be used to connect to the same hypervisor later.</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 a hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the URI string which must be freed by the caller, or NULL if there was an error.</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>
|
||||
</pre><p>Get the version level of the Hypervisor running. This may work only with hypervisor call, i.e. with privileged 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="virConnectListDefinedDomains" id="virConnectListDefinedDomains"></a>Function: virConnectListDefinedDomains</h3><pre class="programlisting">int virConnectListDefinedDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>list the defined domains, stores the pointers to the names in @names</p>
|
||||
</pre><p>list the defined but inactive 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="virConnectListDefinedNetworks" id="virConnectListDefinedNetworks"></a>Function: virConnectListDefinedNetworks</h3><pre class="programlisting">int virConnectListDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>list the inactive networks, 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="virConnectListDefinedStoragePools" id="virConnectListDefinedStoragePools"></a>Function: virConnectListDefinedStoragePools</h3><pre class="programlisting">int virConnectListDefinedStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
@ -372,7 +372,7 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
<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>array to collect the list of names of active networks</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of networks found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectListStoragePools" id="virConnectListStoragePools"></a>Function: virConnectListStoragePools</h3><pre class="programlisting">int virConnectListStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Provides the list of names of active storage pools upto maxnames. If there are more than maxnames, the remaining names will be silently ignored.</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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array of char * to fill with pool names (allocated by caller)</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of the names array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDefinedDomains" id="virConnectNumOfDefinedDomains"></a>Function: virConnectNumOfDefinedDomains</h3><pre class="programlisting">int virConnectNumOfDefinedDomains (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of inactive domains.</p>
|
||||
</pre><p>Provides the number of defined but inactive domains.</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>the number of domain found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDefinedNetworks" id="virConnectNumOfDefinedNetworks"></a>Function: virConnectNumOfDefinedNetworks</h3><pre class="programlisting">int virConnectNumOfDefinedNetworks (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>Provides the number of inactive networks.</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>the number of networks found or -1 in case of error</td></tr></tbody></table></div><h3><a name="virConnectNumOfDefinedStoragePools" id="virConnectNumOfDefinedStoragePools"></a>Function: virConnectNumOfDefinedStoragePools</h3><pre class="programlisting">int virConnectNumOfDefinedStoragePools (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
@ -386,9 +386,9 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
<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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of pools found, or -1 on error</td></tr></tbody></table></div><h3><a name="virConnectOpen" id="virConnectOpen"></a>Function: virConnectOpen</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpen (const char * name)<br />
|
||||
</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>URI of the hypervisor</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 URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div><h3><a name="virConnectOpenAuth" id="virConnectOpenAuth"></a>Function: virConnectOpenAuth</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenAuth (const char * name, <br /> <a href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a> auth, <br /> int flags)<br />
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor. If neccessary, authentication will be performed fetching credentials via the callback</p>
|
||||
</pre><p>This function should be called first to get a connection to the Hypervisor. If necessary, authentication will be performed fetching credentials via the callback</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>URI of the hypervisor</td></tr><tr><td><span class="term"><i><tt>auth</tt></i>:</span></td><td>Authenticate callback parameters</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>Open flags</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 URIs are documented at http://libvirt.org/uri.html</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>
|
||||
</pre><p>This function should be called first to get a restricted connection to the library 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>URI of the hypervisor</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 URIs are documented at http://libvirt.org/uri.html</td></tr></tbody></table></div><h3><a name="virDomainAttachDevice" id="virDomainAttachDevice"></a>Function: virDomainAttachDevice</h3><pre class="programlisting">int virDomainAttachDevice (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> const char * xml)<br />
|
||||
</pre><p>Create a virtual device attachment to backend.</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 domain object</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>pointer to XML description of one device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainBlockStats" id="virDomainBlockStats"></a>Function: virDomainBlockStats</h3><pre class="programlisting">int virDomainBlockStats (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br /> const char * path, <br /> <a href="libvirt-libvirt.html#virDomainBlockStatsPtr">virDomainBlockStatsPtr</a> stats, <br /> size_t size)<br />
|
||||
@ -398,11 +398,11 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
<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>to</tt></i>:</span></td><td>path for the core file</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>extra flags, currently unused</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="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="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>Launch a new Linux guest domain, based on an XML description similar to the one returned by virDomainGetXMLDesc() This function may requires privileged 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>string containing 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>
|
||||
</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 privileged 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="virDomainDetachDevice" id="virDomainDetachDevice"></a>Function: virDomainDetachDevice</h3><pre class="programlisting">int virDomainDetachDevice (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> const char * xml)<br />
|
||||
</pre><p>Destroy a virtual device attachment to backend.</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 domain object</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>pointer to XML description of one device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -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 />
|
||||
@ -432,8 +432,8 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
<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>uuid</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a> bytes array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success</td></tr></tbody></table></div><h3><a name="virDomainGetUUIDString" id="virDomainGetUUIDString"></a>Function: virDomainGetUUIDString</h3><pre class="programlisting">int virDomainGetUUIDString (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> char * buf)<br />
|
||||
</pre><p>Get the UUID for a domain as string. For more information about UUID see RFC4122.</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>buf</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a> bytes array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success</td></tr></tbody></table></div><h3><a name="virDomainGetVcpus" id="virDomainGetVcpus"></a>Function: virDomainGetVcpus</h3><pre class="programlisting">int virDomainGetVcpus (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> <a href="libvirt-libvirt.html#virVcpuInfoPtr">virVcpuInfoPtr</a> info, <br /> int maxinfo, <br /> unsigned char * cpumaps, <br /> int maplen)<br />
|
||||
</pre><p>Extract information about virtual CPUs of domain, store it in info array and also in cpumaps if this pointer is'nt NULL.</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 domain object, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer to an array of <a href="libvirt-libvirt.html#virVcpuInfo">virVcpuInfo</a> structures (OUT)</td></tr><tr><td><span class="term"><i><tt>maxinfo</tt></i>:</span></td><td>number of structures in info array</td></tr><tr><td><span class="term"><i><tt>cpumaps</tt></i>:</span></td><td>pointer to an bit map of real CPUs for all vcpus of this domain (in 8-bit bytes) (OUT) If cpumaps is NULL, then no cupmap information is returned by the API. It's assumed there is <maxinfo> cpumap in cpumaps array. The memory allocated to cpumaps must be (maxinfo * maplen) bytes (ie: calloc(maxinfo, maplen)). One cpumap inside cpumaps has the format described in virDomainPinVcpu() API.</td></tr><tr><td><span class="term"><i><tt>maplen</tt></i>:</span></td><td>number of bytes in one cpumap, from 1 up to size of CPU map in underlying virtualization system (Xen...).</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of info filled in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainGetXMLDesc" id="virDomainGetXMLDesc"></a>Function: virDomainGetXMLDesc</h3><pre class="programlisting">char * virDomainGetXMLDesc (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> int flags)<br />
|
||||
</pre><p>Extract information about virtual CPUs of domain, store it in info array and also in cpumaps if this pointer isn't NULL.</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 domain object, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer to an array of <a href="libvirt-libvirt.html#virVcpuInfo">virVcpuInfo</a> structures (OUT)</td></tr><tr><td><span class="term"><i><tt>maxinfo</tt></i>:</span></td><td>number of structures in info array</td></tr><tr><td><span class="term"><i><tt>cpumaps</tt></i>:</span></td><td>pointer to an bit map of real CPUs for all vcpus of this domain (in 8-bit bytes) (OUT) If cpumaps is NULL, then no cpumap information is returned by the API. It's assumed there is <maxinfo> cpumap in cpumaps array. The memory allocated to cpumaps must be (maxinfo * maplen) bytes (ie: calloc(maxinfo, maplen)). One cpumap inside cpumaps has the format described in virDomainPinVcpu() API.</td></tr><tr><td><span class="term"><i><tt>maplen</tt></i>:</span></td><td>number of bytes in one cpumap, from 1 up to size of CPU map in underlying virtualization system (Xen...).</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of info filled in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainGetXMLDesc" id="virDomainGetXMLDesc"></a>Function: virDomainGetXMLDesc</h3><pre class="programlisting">char * virDomainGetXMLDesc (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> int flags)<br />
|
||||
</pre><p>Provide an XML description of the domain. The description may be reused later to relaunch the domain with virDomainCreateLinux().</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>flags</tt></i>:</span></td><td>an OR'ed set of <a href="libvirt-libvirt.html#virDomainXMLFlags">virDomainXMLFlags</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.</td></tr></tbody></table></div><h3><a name="virDomainInterfaceStats" id="virDomainInterfaceStats"></a>Function: virDomainInterfaceStats</h3><pre class="programlisting">int virDomainInterfaceStats (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br /> const char * path, <br /> <a href="libvirt-libvirt.html#virDomainInterfaceStatsPtr">virDomainInterfaceStatsPtr</a> stats, <br /> size_t size)<br />
|
||||
</pre><p>This function returns network interface stats for interfaces attached to the domain. The path parameter is the name of the network interface. Domains may have more than network interface. To get stats for each you should make multiple calls to this function. Individual fields within the stats structure may be returned as -1, which indicates that the hypervisor does not support that particular statistic.</p>
|
||||
@ -448,33 +448,33 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
<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>uuidstr</tt></i>:</span></td><td>the string UUID for the domain</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. If the domain cannot be found, then <a href="libvirt-virterror.html#VIR_ERR_NO_DOMAIN">VIR_ERR_NO_DOMAIN</a> error is raised.</td></tr></tbody></table></div><h3><a name="virDomainMigrate" id="virDomainMigrate"></a>Function: virDomainMigrate</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> virDomainMigrate (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> dconn, <br /> unsigned long flags, <br /> const char * dname, <br /> const char * uri, <br /> unsigned long bandwidth)<br />
|
||||
</pre><p>Migrate the domain object from its current host to the destination host given by dconn (a connection to the destination host). Flags may be one of more of the following: <a href="libvirt-libvirt.html#VIR_MIGRATE_LIVE">VIR_MIGRATE_LIVE</a> Attempt a live migration. If a hypervisor supports renaming domains during migration, then you may set the dname parameter to the new name (otherwise it keeps the same name). If this is not supported by the hypervisor, dname must be NULL or else you will get an error. Since typically the two hypervisors connect directly to each other in order to perform the migration, you may need to specify a path from the source to the destination. This is the purpose of the uri parameter. If uri is NULL, then libvirt will try to find the best method. Uri may specify the hostname or IP address of the destination host as seen from the source. Or uri may be a URI giving transport, hostname, user, port, etc. in the usual form. Refer to driver documentation for the particular URIs supported. The maximum bandwidth (in Mbps) that will be used to do migration can be specified with the bandwidth parameter. If set to 0, libvirt will choose a suitable default. Some hypervisors do not support this feature and will return an error if bandwidth is not 0. To see which features are supported by the current hypervisor, see virConnectGetCapabilities, /capabilities/host/migration_features. There are many limitations on migration imposed by the underlying technology - for example it may not be possible to migrate between different processors even with the same architecture, or between different types of hypervisor.</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>dconn</tt></i>:</span></td><td>destination host (a connection object)</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags</td></tr><tr><td><span class="term"><i><tt>dname</tt></i>:</span></td><td>(optional) rename domain to this at destination</td></tr><tr><td><span class="term"><i><tt>uri</tt></i>:</span></td><td>(optional) dest hostname/URI as seen from the source host</td></tr><tr><td><span class="term"><i><tt>bandwidth</tt></i>:</span></td><td>(optional) specify migration bandwidth limit in Mbps</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new domain object if the migration was successful, or NULL in case of error. Note that the new domain object exists in the scope of the destination connection (dconn).</td></tr></tbody></table></div><h3><a name="virDomainPinVcpu" id="virDomainPinVcpu"></a>Function: virDomainPinVcpu</h3><pre class="programlisting">int virDomainPinVcpu (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned int vcpu, <br /> unsigned char * cpumap, <br /> int maplen)<br />
|
||||
</pre><p>Dynamically change the real CPUs which can be allocated to a virtual CPU. This function requires priviledged access to the hypervisor.</p>
|
||||
</pre><p>Dynamically change the real CPUs which can be allocated to a virtual CPU. This function requires privileged access to the hypervisor.</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 domain object, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>vcpu</tt></i>:</span></td><td>virtual CPU number</td></tr><tr><td><span class="term"><i><tt>cpumap</tt></i>:</span></td><td>pointer to a bit map of real CPUs (in 8-bit bytes) (IN) Each bit set to 1 means that corresponding CPU is usable. Bytes are stored in little-endian order: CPU0-7, 8-15... In each byte, lowest CPU number is least significant bit.</td></tr><tr><td><span class="term"><i><tt>maplen</tt></i>:</span></td><td>number of bytes in cpumap, from 1 up to size of CPU map in underlying virtualization system (Xen...). If maplen < size, missing bytes are set to zero. If maplen > size, failure code is returned.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="virDomainReboot" id="virDomainReboot"></a>Function: virDomainReboot</h3><pre class="programlisting">int virDomainReboot (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned int flags)<br />
|
||||
</pre><p>Reboot a domain, the domain object is still usable there after but the domain OS is being stopped for a restart. Note that the guest OS may ignore the request.</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>flags</tt></i>:</span></td><td>extra flags for the reboot operation, not used yet</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="virDomainRestore" id="virDomainRestore"></a>Function: virDomainRestore</h3><pre class="programlisting">int virDomainRestore (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * from)<br />
|
||||
</pre><p>This method will restore a domain saved to disk by virDomainSave().</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>from</tt></i>:</span></td><td>path to the</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="virDomainResume" id="virDomainResume"></a>Function: virDomainResume</h3><pre class="programlisting">int virDomainResume (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
|
||||
</pre><p>Resume an suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain(). This function may requires priviledged access</p>
|
||||
</pre><p>Resume an suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain(). This function may requires privileged 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="virDomainSave" id="virDomainSave"></a>Function: virDomainSave</h3><pre class="programlisting">int virDomainSave (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> const char * to)<br />
|
||||
</pre><p>This method will suspend a domain and save its memory contents to a file on disk. After the call, if successful, the domain is not listed as running anymore (this may be a problem). Use virDomainRestore() to restore a domain after saving.</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>to</tt></i>:</span></td><td>path for the output file</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="virDomainSetAutostart" id="virDomainSetAutostart"></a>Function: virDomainSetAutostart</h3><pre class="programlisting">int virDomainSetAutostart (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> int autostart)<br />
|
||||
</pre><p>Configure the domain to be automatically started when the host machine boots.</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>autostart</tt></i>:</span></td><td>whether the domain should be automatically started 0 or 1</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success</td></tr></tbody></table></div><h3><a name="virDomainSetMaxMemory" id="virDomainSetMaxMemory"></a>Function: virDomainSetMaxMemory</h3><pre class="programlisting">int virDomainSetMaxMemory (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned long memory)<br />
|
||||
</pre><p>Dynamically change the maximum amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function requires priviledged access to the hypervisor.</p>
|
||||
</pre><p>Dynamically change the maximum amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function requires privileged access to the hypervisor.</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 or NULL</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>the memory size in kilobytes</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="virDomainSetMemory" id="virDomainSetMemory"></a>Function: virDomainSetMemory</h3><pre class="programlisting">int virDomainSetMemory (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned long memory)<br />
|
||||
</pre><p>Dynamically change the target amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function may requires priviledged access to the hypervisor.</p>
|
||||
</pre><p>Dynamically change the target amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function may requires privileged access to the hypervisor.</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 or NULL</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>the memory size in kilobytes</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="virDomainSetSchedulerParameters" id="virDomainSetSchedulerParameters"></a>Function: virDomainSetSchedulerParameters</h3><pre class="programlisting">int virDomainSetSchedulerParameters (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> <a href="libvirt-libvirt.html#virSchedParameterPtr">virSchedParameterPtr</a> params, <br /> int nparams)<br />
|
||||
</pre><p>Change the scheduler parameters</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 domain object</td></tr><tr><td><span class="term"><i><tt>params</tt></i>:</span></td><td>pointer to scheduler parameter objects</td></tr><tr><td><span class="term"><i><tt>nparams</tt></i>:</span></td><td>number of scheduler parameter (this value should be same or less than the returned value nparams of virDomainGetSchedulerType)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>-1 in case of error, 0 in case of success.</td></tr></tbody></table></div><h3><a name="virDomainSetVcpus" id="virDomainSetVcpus"></a>Function: virDomainSetVcpus</h3><pre class="programlisting">int virDomainSetVcpus (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br /> unsigned int nvcpus)<br />
|
||||
</pre><p>Dynamically change the number of virtual CPUs used by the domain. Note that this call may fail if the underlying virtualization hypervisor does not support it or if growing the number is arbitrary limited. This function requires priviledged access to the hypervisor.</p>
|
||||
</pre><p>Dynamically change the number of virtual CPUs used by the domain. Note that this call may fail if the underlying virtualization hypervisor does not support it or if growing the number is arbitrary limited. This function requires privileged access to the hypervisor.</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 domain object, or NULL for Domain0</td></tr><tr><td><span class="term"><i><tt>nvcpus</tt></i>:</span></td><td>the new number of virtual CPUs for this 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 failure.</td></tr></tbody></table></div><h3><a name="virDomainShutdown" id="virDomainShutdown"></a>Function: virDomainShutdown</h3><pre class="programlisting">int virDomainShutdown (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain)<br />
|
||||
</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>
|
||||
</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 privileged 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="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>
|
||||
</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 available, 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>the type of connection/driver looked at</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>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><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="virNetworkCreate" id="virNetworkCreate"></a>Function: virNetworkCreate</h3><pre class="programlisting">int virNetworkCreate (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br />
|
||||
@ -484,7 +484,7 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
<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 network</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new network object or NULL in case of failure</td></tr></tbody></table></div><h3><a name="virNetworkDefineXML" id="virNetworkDefineXML"></a>Function: virNetworkDefineXML</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> virNetworkDefineXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xml)<br />
|
||||
</pre><p>Define a network, but does not create 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 network, 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 network otherwise</td></tr></tbody></table></div><h3><a name="virNetworkDestroy" id="virNetworkDestroy"></a>Function: virNetworkDestroy</h3><pre class="programlisting">int virNetworkDestroy (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br />
|
||||
</pre><p>Destroy the network 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>
|
||||
</pre><p>Destroy the network 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 privileged access</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network 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="virNetworkFree" id="virNetworkFree"></a>Function: virNetworkFree</h3><pre class="programlisting">int virNetworkFree (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br />
|
||||
</pre><p>Free the network object. The running instance is kept alive. The data structure is freed and should not be used thereafter.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>a network 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="virNetworkGetAutostart" id="virNetworkGetAutostart"></a>Function: virNetworkGetAutostart</h3><pre class="programlisting">int virNetworkGetAutostart (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br /> int * autostart)<br />
|
||||
@ -514,18 +514,18 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>pointer to a defined network</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="virNodeGetCellsFreeMemory" id="virNodeGetCellsFreeMemory"></a>Function: virNodeGetCellsFreeMemory</h3><pre class="programlisting">int virNodeGetCellsFreeMemory (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> unsigned long long * freeMems, <br /> int startCell, <br /> int maxCells)<br />
|
||||
</pre><p>This call returns the amount of free memory in one or more NUMA cells. The @freeMems array must be allocated by the caller and will be filled with the amount of free memory in kilobytes for each cell requested, starting with startCell (in freeMems[0]), up to either (startCell + maxCells), or the number of additional cells in the node, whichever is smaller.</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>freeMems</tt></i>:</span></td><td>pointer to the array of unsigned long long</td></tr><tr><td><span class="term"><i><tt>startCell</tt></i>:</span></td><td>index of first cell to return freeMems info on.</td></tr><tr><td><span class="term"><i><tt>maxCells</tt></i>:</span></td><td>Maximum number of cells for which freeMems information can be returned.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of entries filled in freeMems, or -1 in case of error.</td></tr></tbody></table></div><h3><a name="virNodeGetFreeMemory" id="virNodeGetFreeMemory"></a>Function: virNodeGetFreeMemory</h3><pre class="programlisting">unsigned long long virNodeGetFreeMemory (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br />
|
||||
</pre><p>provides the free memory availble on the Node</p>
|
||||
</pre><p>provides the free memory available on the Node</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>the available free memory in kilobytes or 0 in case of error</td></tr></tbody></table></div><h3><a name="virNodeGetInfo" id="virNodeGetInfo"></a>Function: virNodeGetInfo</h3><pre class="programlisting">int virNodeGetInfo (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> <a href="libvirt-libvirt.html#virNodeInfoPtr">virNodeInfoPtr</a> info)<br />
|
||||
</pre><p>Extract hardware information about the node.</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>info</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#virNodeInfo">virNodeInfo</a> structure allocated by the user</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="virStoragePoolBuild" id="virStoragePoolBuild"></a>Function: virStoragePoolBuild</h3><pre class="programlisting">int virStoragePoolBuild (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
</pre><p>Build the underlying storage pool</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 upon failure</td></tr></tbody></table></div><h3><a name="virStoragePoolCreate" id="virStoragePoolCreate"></a>Function: virStoragePoolCreate</h3><pre class="programlisting">int virStoragePoolCreate (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 upon failure</td></tr></tbody></table></div><h3><a name="virStoragePoolCreate" id="virStoragePoolCreate"></a>Function: virStoragePoolCreate</h3><pre class="programlisting">int virStoragePoolCreate (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
</pre><p>Starts an inactive storage pool</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 if it could not be started</td></tr></tbody></table></div><h3><a name="virStoragePoolCreateXML" id="virStoragePoolCreateXML"></a>Function: virStoragePoolCreateXML</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolCreateXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xmlDesc, <br /> unsigned int flags)<br />
|
||||
</pre><p>Create a new storage based on its XML description. The pool is not persitent, so its definition will disappear when it is destroyed, or if the host is restarted</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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xmlDesc</tt></i>:</span></td><td>XML description for new pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div><h3><a name="virStoragePoolDefineXML" id="virStoragePoolDefineXML"></a>Function: virStoragePoolDefineXML</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolDefineXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xml, <br /> unsigned int flags)<br />
|
||||
</pre><p>Define a new inactive storage pool based on its XML description. The pool is persitent, until explicitly undefined.</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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>XML description for new pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div><h3><a name="virStoragePoolDelete" id="virStoragePoolDelete"></a>Function: virStoragePoolDelete</h3><pre class="programlisting">int virStoragePoolDelete (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 if it could not be started</td></tr></tbody></table></div><h3><a name="virStoragePoolCreateXML" id="virStoragePoolCreateXML"></a>Function: virStoragePoolCreateXML</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolCreateXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xmlDesc, <br /> unsigned int flags)<br />
|
||||
</pre><p>Create a new storage based on its XML description. The pool is not persistent, so its definition will disappear when it is destroyed, or if the host is restarted</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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xmlDesc</tt></i>:</span></td><td>XML description for new pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div><h3><a name="virStoragePoolDefineXML" id="virStoragePoolDefineXML"></a>Function: virStoragePoolDefineXML</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolDefineXML (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * xml, <br /> unsigned int flags)<br />
|
||||
</pre><p>Define a new inactive storage pool based on its XML description. The pool is persistent, until explicitly undefined.</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 hypervisor connection</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>XML description for new pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object, or NULL if creation failed</td></tr></tbody></table></div><h3><a name="virStoragePoolDelete" id="virStoragePoolDelete"></a>Function: virStoragePoolDelete</h3><pre class="programlisting">int virStoragePoolDelete (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
</pre><p>Delete the underlying pool resources. This is a non-recoverable operation. The <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object itself is not free'd.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for obliteration process</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 if it could not be obliterate</td></tr></tbody></table></div><h3><a name="virStoragePoolDestroy" id="virStoragePoolDestroy"></a>Function: virStoragePoolDestroy</h3><pre class="programlisting">int virStoragePoolDestroy (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br />
|
||||
</pre><p>Destroy an active storage pool. This will deactivate the pool on the host, but keep any persistent config associated with it. If it has a persistent config it can later be restarted with virStoragePoolCreate(). This does not free the associated <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> object.</p>
|
||||
@ -535,7 +535,7 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
</pre><p>Fetches the value of the autostart flag, which determines whether the pool is automatically started at boot time</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>autostart</tt></i>:</span></td><td>location in which to store autostart flag</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure</td></tr></tbody></table></div><h3><a name="virStoragePoolGetConnect" id="virStoragePoolGetConnect"></a>Function: virStoragePoolGetConnect</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virStoragePoolGetConnect (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br />
|
||||
</pre><p>Provides the connection pointer associated with a storage pool. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the pool object together.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to a poool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div><h3><a name="virStoragePoolGetInfo" id="virStoragePoolGetInfo"></a>Function: virStoragePoolGetInfo</h3><pre class="programlisting">int virStoragePoolGetInfo (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> <a href="libvirt-libvirt.html#virStoragePoolInfoPtr">virStoragePoolInfoPtr</a> info)<br />
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to a pool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div><h3><a name="virStoragePoolGetInfo" id="virStoragePoolGetInfo"></a>Function: virStoragePoolGetInfo</h3><pre class="programlisting">int virStoragePoolGetInfo (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> <a href="libvirt-libvirt.html#virStoragePoolInfoPtr">virStoragePoolInfoPtr</a> info)<br />
|
||||
</pre><p>Get volatile information about the storage pool such as free space / usage summary</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer at which to store info</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on failure.</td></tr></tbody></table></div><h3><a name="virStoragePoolGetName" id="virStoragePoolGetName"></a>Function: virStoragePoolGetName</h3><pre class="programlisting">const char * virStoragePoolGetName (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool)<br />
|
||||
</pre><p>Fetch the locally unique name of the storage pool</p>
|
||||
@ -545,7 +545,7 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
</pre><p>Fetch the globally unique ID of the storage pool as a string</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>buffer of <a href="libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a> bytes in size</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on error;</td></tr></tbody></table></div><h3><a name="virStoragePoolGetXMLDesc" id="virStoragePoolGetXMLDesc"></a>Function: virStoragePoolGetXMLDesc</h3><pre class="programlisting">char * virStoragePoolGetXMLDesc (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> unsigned int flags)<br />
|
||||
</pre><p>Fetch an XML document describing all aspects of the storage pool. This is suitable for later feeding back into the <a href="libvirt-libvirt.html#virStoragePoolCreateXML">virStoragePoolCreateXML</a> method.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for XML format options (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a XML document, or NULL on error</td></tr></tbody></table></div><h3><a name="virStoragePoolListVolumes" id="virStoragePoolListVolumes"></a>Function: virStoragePoolListVolumes</h3><pre class="programlisting">int virStoragePoolListVolumes (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for XML format options (set of virDomainXMLFlags)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a XML document, or NULL on error</td></tr></tbody></table></div><h3><a name="virStoragePoolListVolumes" id="virStoragePoolListVolumes"></a>Function: virStoragePoolListVolumes</h3><pre class="programlisting">int virStoragePoolListVolumes (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br /> char ** const names, <br /> int maxnames)<br />
|
||||
</pre><p>Fetch list of storage volume names, limiting to at most maxnames.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array in which to storage volume names</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of names array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of names fetched, or -1 on error</td></tr></tbody></table></div><h3><a name="virStoragePoolLookupByName" id="virStoragePoolLookupByName"></a>Function: virStoragePoolLookupByName</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> virStoragePoolLookupByName (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br /> const char * name)<br />
|
||||
</pre><p>Fetch a storage pool based on its unique name</p>
|
||||
@ -567,14 +567,14 @@ int virConnectAuthCallbackPtr (<a href="libvirt-libvirt.html#virConnectCredentia
|
||||
</pre><p>Create a storage volume within a pool based on an XML description. Not all pools support creation of volumes</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>pool</tt></i>:</span></td><td>pointer to storage pool</td></tr><tr><td><span class="term"><i><tt>xmldesc</tt></i>:</span></td><td>description of volume to create</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for creation (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the storage volume, or NULL on error</td></tr></tbody></table></div><h3><a name="virStorageVolDelete" id="virStorageVolDelete"></a>Function: virStorageVolDelete</h3><pre class="programlisting">int virStorageVolDelete (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br /> unsigned int flags)<br />
|
||||
</pre><p>Delete the storage volume from the pool</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div><h3><a name="virStorageVolFree" id="virStorageVolFree"></a>Function: virStorageVolFree</h3><pre class="programlisting">int virStorageVolFree (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>future flags, use 0 for now</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div><h3><a name="virStorageVolFree" id="virStorageVolFree"></a>Function: virStorageVolFree</h3><pre class="programlisting">int virStorageVolFree (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
</pre><p>Release the storage volume handle. The underlying storage volume contains to exist</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on error</td></tr></tbody></table></div><h3><a name="virStorageVolGetConnect" id="virStorageVolGetConnect"></a>Function: virStorageVolGetConnect</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virStorageVolGetConnect (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
</pre><p>Provides the connection pointer associated with a storage volume. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the volume object together.</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to a poool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div><h3><a name="virStorageVolGetInfo" id="virStorageVolGetInfo"></a>Function: virStorageVolGetInfo</h3><pre class="programlisting">int virStorageVolGetInfo (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br /> <a href="libvirt-libvirt.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a> info)<br />
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to a pool</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> or NULL in case of failure.</td></tr></tbody></table></div><h3><a name="virStorageVolGetInfo" id="virStorageVolGetInfo"></a>Function: virStorageVolGetInfo</h3><pre class="programlisting">int virStorageVolGetInfo (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br /> <a href="libvirt-libvirt.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a> info)<br />
|
||||
</pre><p>Fetches volatile information about the storage volume such as its current allocation</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer at which to store info</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, or -1 on failure</td></tr></tbody></table></div><h3><a name="virStorageVolGetKey" id="virStorageVolGetKey"></a>Function: virStorageVolGetKey</h3><pre class="programlisting">const char * virStorageVolGetKey (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
</pre><p>Fetch the storage volume key. This is globally unique, so the same volume will hve the same key no matter what host it is accessed from</p>
|
||||
</pre><p>Fetch the storage volume key. This is globally unique, so the same volume will have the same key no matter what host it is accessed from</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the volume key, or NULL on error</td></tr></tbody></table></div><h3><a name="virStorageVolGetName" id="virStorageVolGetName"></a>Function: virStorageVolGetName</h3><pre class="programlisting">const char * virStorageVolGetName (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
</pre><p>Fetch the storage volume name. This is unique within the scope of a pool</p>
|
||||
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>vol</tt></i>:</span></td><td>pointer to storage volume</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the volume name, or NULL on error</td></tr></tbody></table></div><h3><a name="virStorageVolGetPath" id="virStorageVolGetPath"></a>Function: virStorageVolGetPath</h3><pre class="programlisting">char * virStorageVolGetPath (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol)<br />
|
||||
|
@ -50,7 +50,8 @@ void <a href="#virErrorFunc">virErrorFunc</a> (void * userData, <br /> <a
|
||||
<a name="VIR_FROM_OPENVZ" id="VIR_FROM_OPENVZ">VIR_FROM_OPENVZ</a> = 14 : Error from OpenVZ driver
|
||||
<a name="VIR_FROM_XENXM" id="VIR_FROM_XENXM">VIR_FROM_XENXM</a> = 15 : Error at Xen XM layer
|
||||
<a name="VIR_FROM_STATS_LINUX" id="VIR_FROM_STATS_LINUX">VIR_FROM_STATS_LINUX</a> = 16 : Error in the Linux Stats code
|
||||
<a name="VIR_FROM_STORAGE" id="VIR_FROM_STORAGE">VIR_FROM_STORAGE</a> = 17 : Error from storage driver
|
||||
<a name="VIR_FROM_LXC" id="VIR_FROM_LXC">VIR_FROM_LXC</a> = 17 : Error from Linux Container driver
|
||||
<a name="VIR_FROM_STORAGE" id="VIR_FROM_STORAGE">VIR_FROM_STORAGE</a> = 18 : Error from storage driver
|
||||
}
|
||||
</pre><h3>Enum <a name="virErrorLevel" id="virErrorLevel">virErrorLevel</a></h3><pre class="programlisting">Enum virErrorLevel {
|
||||
<a name="VIR_ERR_NONE" id="VIR_ERR_NONE">VIR_ERR_NONE</a> = 0
|
||||
|
@ -20,7 +20,7 @@ of recent versions of Linux (and other OSes). It is free software available
|
||||
under the <a href="http://www.opensource.org/licenses/lgpl-license.html">GNU
|
||||
Lesser General Public License</a>. Virtualization of the Linux Operating
|
||||
System means the ability to run multiple instances of Operating Systems
|
||||
concurently on a single hardware system where the basic resources are driven
|
||||
concurrently on a single hardware system where the basic resources are driven
|
||||
by a Linux (or Solaris) instance. The library aims at providing a long term
|
||||
stable C API initially for <a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen
|
||||
paravirtualization</a> but it can also integrate with other
|
||||
|
@ -34,7 +34,7 @@
|
||||
# Bye
|
||||
#
|
||||
# Then run the script in the doc subdir, it will create the symbols and
|
||||
# word tables and populate them with informations extracted from
|
||||
# word tables and populate them with information extracted from
|
||||
# the libvirt-api.xml API description, and make then accessible read-only
|
||||
# by nobody@loaclhost the user expected to be Apache's one
|
||||
#
|
||||
|
@ -10,7 +10,7 @@ some of the specific concepts used in libvirt documentation:</p><ul><li>a <stron
|
||||
<li>a <strong>domain</strong> is an instance of an operating system running
|
||||
on a virtualized machine provided by the hypervisor</li>
|
||||
</ul><p style="text-align: center"><img alt="Hypervisor and domains running on a node" src="node.gif" /></p><p>Now we can define the goal of libvirt: to provide the lowest possible
|
||||
generic and stable layer to manage domains on a node.</p><p>This implies the following:</p><ul><li>the API should not be targetted to a single virtualization environment
|
||||
generic and stable layer to manage domains on a node.</p><p>This implies the following:</p><ul><li>the API should not be targeted to a single virtualization environment
|
||||
though Xen is the current default, which also means that some very
|
||||
specific capabilities which are not generic enough may not be provided as
|
||||
libvirt APIs</li>
|
||||
|
131
docs/libvir.html
131
docs/libvir.html
@ -19,7 +19,7 @@ of recent versions of Linux (and other OSes). It is free software available
|
||||
under the <a href="http://www.opensource.org/licenses/lgpl-license.html">GNU
|
||||
Lesser General Public License</a>. Virtualization of the Linux Operating
|
||||
System means the ability to run multiple instances of Operating Systems
|
||||
concurently on a single hardware system where the basic resources are driven
|
||||
concurrently on a single hardware system where the basic resources are driven
|
||||
by a Linux (or Solaris) instance. The library aims at providing a long term
|
||||
stable C API initially for <a
|
||||
href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen
|
||||
@ -57,7 +57,8 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
virHashRemoveSet bug (Hiroyuki Kaguchi), close-on-exec flag for
|
||||
qemud signal pipe (Daniel Berrange), double free in OpenVZ
|
||||
(Anton Protopopov), handle mac without addresses (Shigeki Sakamoto),
|
||||
MAC addresses checks (Shigeki Sakamoto and Richard Jones)</li>
|
||||
MAC addresses checks (Shigeki Sakamoto and Richard Jones),
|
||||
allow to read non-seekable files (Jim Meyering)</li>
|
||||
<li>Improvements: Windows build (Richard Jones), KVM/QEmu shutdown
|
||||
(Guido Guenther), catch virExec output on debug (Mark McLoughlin),
|
||||
integration of iptables and lokkit (Mark McLoughlin), keymap
|
||||
@ -254,7 +255,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
<li>Documentation: remote support (Richard Jones), description of
|
||||
the URI connection strings (Richard Jones), update of virsh man
|
||||
page, matrix of libvirt API/hypervisor support with version
|
||||
informations (Richard Jones)</li>
|
||||
information (Richard Jones)</li>
|
||||
<li>Bug fixes: examples Makefile.am generation (Richard Jones),
|
||||
SetMem fix (Mark Johnson), URI handling and ordering of
|
||||
drivers (Daniel Berrange), fix virsh help without hypervisor (Richard
|
||||
@ -424,7 +425,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
<h3>0.1.9: Nov 29 2006</h3>
|
||||
<ul>
|
||||
<li>python bindings: release interpeter lock when calling C (Daniel Berrange)</li>
|
||||
<li>don't raise HTTP error when looking informations for a domain</li>
|
||||
<li>don't raise HTTP error when looking information for a domain</li>
|
||||
<li>some refactoring to use the driver for all entry points</li>
|
||||
<li>better error reporting (Daniel Berrange)</li>
|
||||
<li>fix OS reporting when running as non-root</li>
|
||||
@ -442,7 +443,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
<li>added support for inactive domains, new APIs, various associated cleanup (Daniel Berrange)</li>
|
||||
<li>special device model for HVM guests (Daniel Berrange)</li>
|
||||
<li>add API to dump core of domains (but requires a patched xend)</li>
|
||||
<li>pygrub bootloader informations take over <os> informations</li>
|
||||
<li>pygrub bootloader information take over <os> information</li>
|
||||
<li>updated the localization strings</li>
|
||||
</ul>
|
||||
<h3>0.1.8: Oct 16 2006</h3>
|
||||
@ -459,9 +460,9 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
</ul>
|
||||
<h3>0.1.7: Sep 29 2006</h3>
|
||||
<ul>
|
||||
<li> fix a memory bug on getting vcpu informations from xend (Daniel Berrange)</li>
|
||||
<li> fix a memory bug on getting vcpu information from xend (Daniel Berrange)</li>
|
||||
<li> fix another problem in the hypercalls change in Xen changeset
|
||||
86d26e6ec89b when getting domain informations (Daniel Berrange)</li>
|
||||
86d26e6ec89b when getting domain information (Daniel Berrange)</li>
|
||||
</ul>
|
||||
<h3>0.1.6: Sep 22 2006</h3>
|
||||
<ul>
|
||||
@ -497,7 +498,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
initialization errors (Daniel Berrange)</li>
|
||||
<li>improvements: UUID in XML description (Peter Vetere), proxy code
|
||||
cleanup, virtual CPU and affinity support + virsh support (Michel
|
||||
Ponceau, Philippe Berthault, Daniel Berrange), port and tty informations
|
||||
Ponceau, Philippe Berthault, Daniel Berrange), port and tty information
|
||||
for console in XML (Daniel Berrange), added XML dump to driver and proxy
|
||||
support (Daniel Berrange), extention of boot options with support for
|
||||
floppy and cdrom (Daniel Berrange), features block in XML to report/ask
|
||||
@ -521,7 +522,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
|
||||
<h3>0.1.2: Jul 3 2006</h3>
|
||||
<ul>
|
||||
<li>headers include paths fixup</li>
|
||||
<li>proxy mechanism for unpriviledged read-only access by httpu</li>
|
||||
<li>proxy mechanism for unprivileged read-only access by httpu</li>
|
||||
</ul>
|
||||
|
||||
<h3>0.1.1: Jun 21 2006</h3>
|
||||
@ -638,7 +639,7 @@ generic and stable layer to manage domains on a node.</p>
|
||||
|
||||
<p>This implies the following:</p>
|
||||
<ul>
|
||||
<li>the API should not be targetted to a single virtualization environment
|
||||
<li>the API should not be targeted to a single virtualization environment
|
||||
though Xen is the current default, which also means that some very
|
||||
specific capabilities which are not generic enough may not be provided as
|
||||
libvirt APIs</li>
|
||||
@ -678,7 +679,7 @@ engines:</p>
|
||||
<p>When running in a Xen environment, programs using libvirt have to execute
|
||||
in "Domain 0", which is the primary Linux OS loaded on the machine. That OS
|
||||
kernel provides most if not all of the actual drivers used by the set of
|
||||
domains. It also runs the Xen Store, a database of informations shared by the
|
||||
domains. It also runs the Xen Store, a database of information shared by the
|
||||
hypervisor, the kernels, the drivers and the xen daemon. Xend. The xen daemon
|
||||
supervise the control and execution of the sets of domains. The hypervisor,
|
||||
drivers, kernels and daemons communicate though a shared system bus
|
||||
@ -687,7 +688,7 @@ this environment:</p>
|
||||
<img src="architecture.gif" alt="The Xen architecture">
|
||||
|
||||
<p>The library can be initialized in 2 ways depending on the level of
|
||||
priviledge of the embedding program. If it runs with root access,
|
||||
privilege of the embedding program. If it runs with root access,
|
||||
virConnectOpen() can be used, it will use three different ways to connect to
|
||||
the Xen infrastructure:</p>
|
||||
<ul>
|
||||
@ -700,9 +701,9 @@ the Xen infrastructure:</p>
|
||||
|
||||
<p>The library will usually interact with the Xen daemon for any operation
|
||||
changing the state of the system, but for performance and accuracy reasons
|
||||
may talk directly to the hypervisor when gathering state informations at
|
||||
may talk directly to the hypervisor when gathering state information at
|
||||
least when possible (i.e. when the running program using libvirt has root
|
||||
priviledge access).</p>
|
||||
privilege access).</p>
|
||||
|
||||
<p>If it runs without root access virConnectOpenReadOnly() should be used to
|
||||
connect to initialize the library. It will then fork a libvirt_proxy
|
||||
@ -719,7 +720,7 @@ QEmu or KVM process. That program called libvirt_qemud talks though a specific
|
||||
protocol to the library, and connects to the console of the QEmu process in
|
||||
order to control and report on its status. Libvirt tries to expose all the
|
||||
emulations models of QEmu, the selection is done when creating the new
|
||||
domain, by specifying the architecture and machine type targetted.</p>
|
||||
domain, by specifying the architecture and machine type targeted.</p>
|
||||
|
||||
<p>The code controlling the QEmu process is available in the
|
||||
<code>qemud/</code> directory.</p>
|
||||
@ -729,10 +730,10 @@ domain, by specifying the architecture and machine type targetted.</p>
|
||||
<p>As the previous section explains, libvirt can communicate using different
|
||||
channels with the current hypervisor, and should also be able to use
|
||||
different kind of hypervisor. To simplify the internal design, code, ease
|
||||
maintainance and simplify the support of other virtualization engine the
|
||||
maintenance and simplify the support of other virtualization engine the
|
||||
internals have been structured as one core component, the libvirt.c module
|
||||
acting as a front-end for the library API and a set of hypvisor drivers
|
||||
defining a common set of routines. That way the Xen Daemon accces, the Xen
|
||||
acting as a front-end for the library API and a set of hypervisor drivers
|
||||
defining a common set of routines. That way the Xen Daemon access, the Xen
|
||||
Store one, the Hypervisor hypercall are all isolated in separate C modules
|
||||
implementing at least a subset of the common operations defined by the
|
||||
drivers present in driver.h:</p>
|
||||
@ -849,7 +850,7 @@ significant:</p>
|
||||
<li>memory: the maximum memory allocated to the domain in kilobytes</li>
|
||||
<li>vcpu: the number of virtual cpu configured for the domain</li>
|
||||
<li>os: a block describing the Operating System, its content will be
|
||||
dependant on the OS type
|
||||
dependent on the OS type
|
||||
<ul>
|
||||
<li>type: indicate the OS type, always linux at this point</li>
|
||||
<li>kernel: path to the kernel on the Domain 0 filesystem</li>
|
||||
@ -995,7 +996,7 @@ systems:</p>
|
||||
<li>the <code><os></code> block description is very different, first
|
||||
it indicates that the type is 'hvm' for hardware virtualization, then
|
||||
instead of a kernel, boot and command line arguments, it points to an os
|
||||
boot loader which will extract the boot informations from the boot device
|
||||
boot loader which will extract the boot information from the boot device
|
||||
specified in a separate boot element. The <code>dev</code> attribute on
|
||||
the <code>boot</code> tag can be one of:
|
||||
<ul>
|
||||
@ -1008,7 +1009,7 @@ systems:</p>
|
||||
pointing to an additional program in charge of emulating the devices</li>
|
||||
<li>the disk entry indicates in the dev target section that the emulation
|
||||
for the drive is the first IDE disk device hda. The list of device names
|
||||
supported is dependant on the Hypervisor, but for Xen it can be any IDE
|
||||
supported is dependent on the Hypervisor, but for Xen it can be any IDE
|
||||
device <code>hda</code>-<code>hdd</code>, or a floppy device
|
||||
<code>fda</code>, <code>fdb</code>. The <code><disk></code> element
|
||||
also supports a 'device' attribute to indicate what kinda of hardware to
|
||||
@ -1108,7 +1109,7 @@ support a variety of options:</p>
|
||||
of the box which does NAT'ing to the default route and has an IP range of
|
||||
<code>192.168.22.0/255.255.255.0</code>. Each guest will have an
|
||||
associated tun device created with a name of vnetN, which can also be
|
||||
overriden with the <target> element. Example configs are:</p>
|
||||
overridden with the <target> element. Example configs are:</p>
|
||||
<pre><interface type='network'>
|
||||
<source network='default'/>
|
||||
</interface>
|
||||
@ -1124,7 +1125,7 @@ support a variety of options:</p>
|
||||
<p>Provides a bridge from the VM directly onto the LAN. This assumes
|
||||
there is a bridge device on the host which has one or more of the hosts
|
||||
physical NICs enslaved. The guest VM will have an associated tun device
|
||||
created with a name of vnetN, which can also be overriden with the
|
||||
created with a name of vnetN, which can also be overridden with the
|
||||
<target> element. The tun device will be enslaved to the bridge.
|
||||
The IP range / network configuration is whatever is used on the LAN. This
|
||||
provides the guest VM full incoming & outgoing net access just like a
|
||||
@ -1142,11 +1143,11 @@ support a variety of options:</p>
|
||||
<li>Generic connection to LAN
|
||||
<p>Provides a means for the administrator to execute an arbitrary script
|
||||
to connect the guest's network to the LAN. The guest will have a tun
|
||||
device created with a name of vnetN, which can also be overriden with the
|
||||
device created with a name of vnetN, which can also be overridden with the
|
||||
<target> element. After creating the tun device a shell script will
|
||||
be run which is expected to do whatever host network integration is
|
||||
required. By default this script is called /etc/qemu-ifup but can be
|
||||
overriden.</p>
|
||||
overridden.</p>
|
||||
<pre><interface type='ethernet'/>
|
||||
|
||||
<interface type='ethernet'>
|
||||
@ -1292,7 +1293,7 @@ BIOS you will see</p>
|
||||
...
|
||||
</capabilities></pre>
|
||||
|
||||
<p>The first block (in red) indicates the host hardware capbilities, currently
|
||||
<p>The first block (in red) indicates the host hardware capabilities, currently
|
||||
it is limited to the CPU properties but other information may be available,
|
||||
it shows the CPU architecture, and the features of the chip (the feature
|
||||
block is similar to what you will find in a Xen fully virtualized domain
|
||||
@ -1300,9 +1301,9 @@ description).</p>
|
||||
|
||||
<p>The second block (in blue) indicates the paravirtualization support of the
|
||||
Xen support, you will see the os_type of xen to indicate a paravirtual
|
||||
kernel, then architecture informations and potential features.</p>
|
||||
kernel, then architecture information and potential features.</p>
|
||||
|
||||
<p>The third block (in green) gives similar informations but when running a
|
||||
<p>The third block (in green) gives similar information but when running a
|
||||
32 bit OS fully virtualized with Xen using the hvm support.</p>
|
||||
|
||||
<p>This section is likely to be updated and augmented in the future, see <a
|
||||
@ -1319,7 +1320,7 @@ higher level kind of languages:</p>
|
||||
<ul>
|
||||
<li>Python: Libvirt comes with direct support for the Python language
|
||||
(just make sure you installed the libvirt-python package if not
|
||||
compiling from sources). See below for more informations about
|
||||
compiling from sources). See below for more information about
|
||||
using libvirt with python</li>
|
||||
<li>Perl: Daniel Berrange provides <a
|
||||
href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">bindings for
|
||||
@ -1332,7 +1333,7 @@ higher level kind of languages:</p>
|
||||
|
||||
<p>Support, requests or help for libvirt bindings are welcome on
|
||||
the <a href="https://www.redhat.com/mailman/listinfo/libvir-list/">mailing
|
||||
list</a>, as usual try to provide enough background informations
|
||||
list</a>, as usual try to provide enough background information
|
||||
and make sure you use recent version, see the <a href="bugs.html">help
|
||||
page</a>.</p>
|
||||
|
||||
@ -1411,7 +1412,7 @@ from the C API, the only points to notice are:</p>
|
||||
<li>getting an object representing the Domain 0 using <span
|
||||
style="color: #007F00; background-color: #FFFFFF">lookupByName</span></li>
|
||||
<li>if the domain is not found a libvirtError exception will be raised</li>
|
||||
<li>extracting and printing some informations about the domain using
|
||||
<li>extracting and printing some information about the domain using
|
||||
various <span
|
||||
style="color: #E50073; background-color: #FFFFFF">methods</span>
|
||||
associated to the virDomain class.</li>
|
||||
@ -1422,7 +1423,7 @@ from the C API, the only points to notice are:</p>
|
||||
<p>The main goals of libvirt when it comes to error handling are:</p>
|
||||
<ul>
|
||||
<li>provide as much detail as possible</li>
|
||||
<li>provide the informations as soon as possible</li>
|
||||
<li>provide the information as soon as possible</li>
|
||||
<li>dont force the library user into one style of error handling</li>
|
||||
</ul>
|
||||
|
||||
@ -1433,7 +1434,7 @@ error callback it will be called synchronously. Once the call to libvirt ends
|
||||
the error can be detected by the return value and the full information for
|
||||
the last logged error can be retrieved.</p>
|
||||
|
||||
<p>To avoid as much as prossible troubles with a global variable in a
|
||||
<p>To avoid as much as possible troubles with a global variable in a
|
||||
multithreaded environment, libvirt will associate when possible the errors to
|
||||
the current connection they are related to, that way the error is stored in a
|
||||
dynamic structure which can be made thread specific. Error callback can be
|
||||
@ -1446,7 +1447,7 @@ set specifically to a connection with</p>
|
||||
<ol>
|
||||
<li>if there is a callback associated to the connection set with <a
|
||||
href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a>,
|
||||
call it with the error informations</li>
|
||||
call it with the error information</li>
|
||||
<li>otherwise if there is a global callback set with <a
|
||||
href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a>,
|
||||
call it with the error information</li>
|
||||
@ -1473,7 +1474,7 @@ set specifically to a connection with</p>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<p>In all cases the error informations are provided as a <a
|
||||
<p>In all cases the error information is provided as a <a
|
||||
href="html/libvirt-virterror.html#virErrorPtr">virErrorPtr</a> pointer to
|
||||
read-only structure <a
|
||||
href="html/libvirt-virterror.html#virError">virError</a> containing the
|
||||
@ -1493,15 +1494,15 @@ following fields:</p>
|
||||
connection to the hypervisor where this happened</li>
|
||||
<li>dom: if available a pointer to the <a
|
||||
href="html/libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain
|
||||
targetted in the operation</li>
|
||||
targeted in the operation</li>
|
||||
</ul>
|
||||
|
||||
<p>and then extra raw informations about the error which may be initialized
|
||||
<p>and then extra raw information about the error which may be initialized
|
||||
to 0 or NULL if unused</p>
|
||||
<ul>
|
||||
<li>str1, str2, str3: string informations, usually str1 is the error
|
||||
<li>str1, str2, str3: string information, usually str1 is the error
|
||||
message format</li>
|
||||
<li>int1, int2: integer informations</li>
|
||||
<li>int1, int2: integer information</li>
|
||||
</ul>
|
||||
|
||||
<p>So usually, setting up specific error handling with libvirt consist of
|
||||
@ -1509,7 +1510,7 @@ registering an handler with with <a
|
||||
href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a> or
|
||||
with <a
|
||||
href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a>,
|
||||
chech the value of the code value, take appropriate action, if needed let
|
||||
check the value of the code value, take appropriate action, if needed let
|
||||
libvirt print the error on stderr by calling <a
|
||||
href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a>.
|
||||
For asynchronous error handing, set such a function doing nothing to avoid
|
||||
@ -1557,7 +1558,7 @@ containing the same field as a virError in C, but cast to Python.</p>
|
||||
<p>Yes. The LGPL allows you to embed libvirt into a proprietary
|
||||
application. It would be graceful to send-back bug fixes and improvements
|
||||
as patches for possible incorporation in the main development tree. It
|
||||
will decrease your maintainance costs anyway if you do so.</p>
|
||||
will decrease your maintenance costs anyway if you do so.</p>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
@ -1582,7 +1583,7 @@ containing the same field as a virError in C, but cast to Python.</p>
|
||||
<p><code>make rpm</code></p>
|
||||
</li>
|
||||
<li><em>Failure to use the API for non-root users</em>
|
||||
<p>Large parts of the API may only be accessible with root priviledges,
|
||||
<p>Large parts of the API may only be accessible with root privileges,
|
||||
however the read only access to the xenstore data doesnot have to be
|
||||
forbidden to user, at least for monitoring purposes. If "virsh dominfo"
|
||||
fails to run as an user, change the mode of the xenstore read-only socket
|
||||
@ -1648,11 +1649,17 @@ If possible generate the patches by using cvs diff -u in a CVS checkout.</p>
|
||||
|
||||
<p>We use Red Hat Bugzilla to track bugs and new feature requests to libvirt.
|
||||
If you want to report a bug or ask for a feature, please check <a href="http://bugzilla.redhat.com/bugzilla/buglist.cgi?component=libvirt&component=libvirt-devel&component=libvirt-python&bug_status=ASSIGNED&bug_status=INVESTIGATE&bug_status=NEW&bug_status=REOPENED&bug_status=VERIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&Search=Search">the existing open bugs</a>, then if yours isn't a duplicate of
|
||||
an existing bug, <a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora%20Core&component=libvirt">log a new bug</a> and attach any patch or extra data that you may have available. It is always a good idea to also
|
||||
an existing bug:</p>
|
||||
<ul>
|
||||
<li>If you are using official binaries from Fedora: <a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=libvirt">log a new bug for Fedora</a></li>
|
||||
<li>If you are using official binaries from Red Hat Enterprise Linux 5: <a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=Red%20Hat%20Enterprise%20Linux%205">log a new bug for RHEL</a></li>
|
||||
<li>Otherwise: <a href="http://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&component=Virtualization%20Tools">log a new bug here</a></li>
|
||||
</ul>
|
||||
<p> Don't forget to attach any patch or extra data that you may have available. It is always a good idea to also
|
||||
to post to the <a href="mailto:libvir-list@redhat.com">mailing-list</a>
|
||||
too, so that everybody working on the project can see it, thanks !</p>
|
||||
|
||||
<p>Some of the libvirt developpers may be found on IRC on the OFTC
|
||||
<p>Some of the libvirt developers may be found on IRC on the OFTC
|
||||
network. Use the settings:</p>
|
||||
<ul>
|
||||
<li>server: irc.oftc.net</li>
|
||||
@ -2897,7 +2904,7 @@ versioning, modelled after SunRPC.
|
||||
<p>
|
||||
When connecting to libvirt, some connections may require client
|
||||
authentication before allowing use of the APIs. The set of possible
|
||||
authentication mechanisms is administrator controlled, independant
|
||||
authentication mechanisms is administrator controlled, independent
|
||||
of applications using libvirt.
|
||||
</p>
|
||||
|
||||
@ -2912,11 +2919,11 @@ of applications using libvirt.
|
||||
<h3 name="ACL_server_config">Server configuration</h3>
|
||||
|
||||
<p>
|
||||
The libvirt daemon allows the adminstrator to choose the authentication
|
||||
mechanisms used for client connections on each network socket independantly.
|
||||
The libvirt daemon allows the administrator to choose the authentication
|
||||
mechanisms used for client connections on each network socket independently.
|
||||
This is primarily controlled via the libvirt daemon master config file in
|
||||
<code>/etc/libvirt/libvirtd.conf</code>. Each of the libvirt sockets can
|
||||
have its authentication mechanism configured independantly. There is
|
||||
have its authentication mechanism configured independently. There is
|
||||
currently a choice of <code>none</code>, <code>polkit</code>, and <code>sasl</code>.
|
||||
The SASL scheme can be further configured to choose between a large
|
||||
number of different mechanisms.
|
||||
@ -2957,7 +2964,7 @@ Default policy will still allow any application to connect to the RO socket.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The default policy can be overriden by the adminstrator using the PolicyKit
|
||||
The default policy can be overridden by the administrator using the PolicyKit
|
||||
master configuration file in <code>/etc/PolicyKit/PolicyKit.conf</code>. The
|
||||
<code>PolicyKit.conf(5)</code> manual page provides details on the syntax
|
||||
available. The two libvirt daemon actions available are named <code>org.libvirt.unix.monitor</code>
|
||||
@ -3040,7 +3047,7 @@ mechanism provides data encryption of the session.
|
||||
|
||||
<p>
|
||||
Some operating systems do not install the SASL kerberos plugin by default. It
|
||||
may be neccessary to install a sub-package such as <code>cyrus-sasl-gssapi</code>.
|
||||
may be necessary to install a sub-package such as <code>cyrus-sasl-gssapi</code>.
|
||||
To check whether the Kerberos plugin is installed run the <code>pluginviewer</code>
|
||||
program and verify that <code>gssapi</code> is listed,eg:
|
||||
</p>
|
||||
@ -3055,7 +3062,7 @@ Plugin "gssapiv2" [loaded], API version: 4
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Next is is neccessary for the adminsitrator of the Kerberos realm to issue a principle
|
||||
Next is is necessary for the administrator of the Kerberos realm to issue a principle
|
||||
for the libvirt server. There needs to be one principle per host running the libvirt
|
||||
daemon. The principle should be named <code>libvirt/full.hostname@KERBEROS.REALM</code>.
|
||||
This is typically done by running the <code>kadmin.local</code> command on the Kerberos
|
||||
@ -4069,7 +4076,7 @@ full capacity for storage volumes. This value is in bytes. This
|
||||
is not applicable when creating a pool.</dd>
|
||||
|
||||
<dt>available</dt>
|
||||
<dd>Providing the free space available for allocating new volums
|
||||
<dd>Providing the free space available for allocating new volumes
|
||||
in the pool. Due to underlying device constraints it may not be
|
||||
possible to allocate the entire free space to a single volume.
|
||||
This value is in bytes. This is not applicable when creating a
|
||||
@ -4119,11 +4126,11 @@ value for this, so it is optional.</dd>
|
||||
<dd>Provides the location at which the pool will be mapped into
|
||||
the local filesystem namespace. For a filesystem/directory based
|
||||
pool it will be the name of the directory in which volumes will
|
||||
be created. For device based pools it will tbe directory in which
|
||||
be created. For device based pools it will be the name of the directory in which
|
||||
devices nodes exist. For the latter <code>/dev/</code> may seem
|
||||
like the logical choice, however, devices nodes there are not
|
||||
guarenteed stable across reboots, since they are allocated on
|
||||
demand. It is preferrable to use a stable location such as one
|
||||
guaranteed stable across reboots, since they are allocated on
|
||||
demand. It is preferable to use a stable location such as one
|
||||
of the <code>/dev/disk/by-{path,id,uuid,label</code> locations.
|
||||
</dd>
|
||||
<dt>permissions<dt>
|
||||
@ -4145,7 +4152,7 @@ contains the MAC (eg SELinux) label string.
|
||||
If a storage pool exposes information about its underlying
|
||||
placement / allocation scheme, the <code>device</code> element
|
||||
within the <code>source</code> element may contain information
|
||||
about its avilable extents. Some pools have a constraint that
|
||||
about its available extents. Some pools have a constraint that
|
||||
a volume must be allocated entirely within a single constraint
|
||||
(eg disk partition pools). Thus the extent information allows an
|
||||
application to determine the maximum possible size for a new
|
||||
@ -4209,10 +4216,10 @@ on the local host.</dd>
|
||||
<dd>Provides the location at which the pool will be mapped into
|
||||
the local filesystem namespace. For a filesystem/directory based
|
||||
pool it will be the name of the directory in which volumes will
|
||||
be created. For device based pools it will tbe directory in which
|
||||
be created. For device based pools it will be the name of the directory in which
|
||||
devices nodes exist. For the latter <code>/dev/</code> may seem
|
||||
like the logical choice, however, devices nodes there are not
|
||||
guarenteed stable across reboots, since they are allocated on
|
||||
guaranteed stable across reboots, since they are allocated on
|
||||
demand. It is preferrable to use a stable location such as one
|
||||
of the <code>/dev/disk/by-{path,id,uuid,label</code> locations.
|
||||
</dd>
|
||||
@ -4297,10 +4304,10 @@ One of the following options:
|
||||
<p>
|
||||
When listing existing volumes all these formats are supported
|
||||
natively. When creating new volumes, only a subset may be
|
||||
available. The <code>raw</code> type is guarenteed always
|
||||
available. The <code>raw</code> type is guaranteed always
|
||||
available. The <code>qcow2</code> type can be created if
|
||||
either <code>qemu-img</code> or <code>qcow-create</code> tools
|
||||
are present. The others are dependant on support of the
|
||||
are present. The others are dependent on support of the
|
||||
<code>qemu-img</code> tool.
|
||||
|
||||
<h4><a name="StorageBackendFS">Filesystem pool</a></h4>
|
||||
@ -4332,7 +4339,7 @@ required.
|
||||
<h5>Valid pool format types</h5>
|
||||
|
||||
<p>
|
||||
The fileystem pool supports the following formats:
|
||||
The filesystem pool supports the following formats:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
@ -4385,7 +4392,7 @@ point. It will default to using NFS as the protocol.
|
||||
<h5>Valid pool format types</h5>
|
||||
|
||||
<p>
|
||||
The network fileystem pool supports the following formats:
|
||||
The network filesystem pool supports the following formats:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
|
@ -273,6 +273,7 @@
|
||||
<exports symbol='VIR_ERR_GNUTLS_ERROR' type='enum'/>
|
||||
<exports symbol='VIR_ERR_POST_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_ERR_OS_TYPE' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XENSTORE' type='enum'/>
|
||||
<exports symbol='VIR_WAR_NO_NETWORK' type='enum'/>
|
||||
<exports symbol='VIR_ERR_INVALID_CONN' type='enum'/>
|
||||
<exports symbol='VIR_ERR_NONE' type='enum'/>
|
||||
@ -305,7 +306,7 @@
|
||||
<exports symbol='VIR_ERR_NO_DOMAIN' type='enum'/>
|
||||
<exports symbol='VIR_ERR_READ_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_ERR_SEXPR_SERIAL' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XENSTORE' type='enum'/>
|
||||
<exports symbol='VIR_FROM_LXC' type='enum'/>
|
||||
<exports symbol='VIR_FROM_XEN' type='enum'/>
|
||||
<exports symbol='VIR_ERR_OPEN_FAILED' type='enum'/>
|
||||
<exports symbol='VIR_ERR_XEN_CALL' type='enum'/>
|
||||
@ -406,8 +407,8 @@
|
||||
<enum name='VIR_DOMAIN_SCHED_FIELD_ULLONG' file='libvirt' value='4' type='virSchedParameterType' info='unsigned long long case'/>
|
||||
<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_DOMAIN_XML_INACTIVE' file='libvirt' value='2' type='virDomainXMLFlags' info=' dump inactive domain informations'/>
|
||||
<enum name='VIR_DOMAIN_XML_SECURE' file='libvirt' value='1' type='virDomainXMLFlags' info='dump security sensitive informations too'/>
|
||||
<enum name='VIR_DOMAIN_XML_INACTIVE' file='libvirt' value='2' type='virDomainXMLFlags' info=' dump inactive domain information'/>
|
||||
<enum name='VIR_DOMAIN_XML_SECURE' file='libvirt' value='1' type='virDomainXMLFlags' info='dump security sensitive information too'/>
|
||||
<enum name='VIR_ERR_AUTH_FAILED' file='virterror' value='45' type='virErrorNumber' info='authentication failed'/>
|
||||
<enum name='VIR_ERR_CALL_FAILED' file='virterror' value='26' type='virErrorNumber' info='not supported by the drivers (DEPRECATED)'/>
|
||||
<enum name='VIR_ERR_CONF_SYNTAX' file='virterror' value='33' type='virErrorNumber' info='failed to parse the syntax of a conf file'/>
|
||||
@ -462,6 +463,7 @@
|
||||
<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_CONF' file='virterror' value='9' type='virErrorDomain' info='Error in the configuration file handling'/>
|
||||
<enum name='VIR_FROM_DOM' file='virterror' value='6' type='virErrorDomain' info='Error when operating on a domain'/>
|
||||
<enum name='VIR_FROM_LXC' file='virterror' value='17' type='virErrorDomain' info='Error from Linux Container driver'/>
|
||||
<enum name='VIR_FROM_NET' file='virterror' value='11' type='virErrorDomain' info='Error when operating on a network'/>
|
||||
<enum name='VIR_FROM_NONE' file='virterror' value='0' type='virErrorDomain'/>
|
||||
<enum name='VIR_FROM_OPENVZ' file='virterror' value='14' type='virErrorDomain' info='Error from OpenVZ driver'/>
|
||||
@ -471,7 +473,7 @@
|
||||
<enum name='VIR_FROM_RPC' file='virterror' value='7' type='virErrorDomain' info='Error in the XML-RPC code'/>
|
||||
<enum name='VIR_FROM_SEXPR' file='virterror' value='4' type='virErrorDomain' info='Error in the S-Expression code'/>
|
||||
<enum name='VIR_FROM_STATS_LINUX' file='virterror' value='16' type='virErrorDomain' info='Error in the Linux Stats code'/>
|
||||
<enum name='VIR_FROM_STORAGE' file='virterror' value='17' type='virErrorDomain' info=' Error from storage driver'/>
|
||||
<enum name='VIR_FROM_STORAGE' file='virterror' value='18' type='virErrorDomain' info=' Error from storage driver'/>
|
||||
<enum name='VIR_FROM_TEST' file='virterror' value='12' type='virErrorDomain' info='Error from test driver'/>
|
||||
<enum name='VIR_FROM_XEN' file='virterror' value='1' type='virErrorDomain' info='Error at Xen hypervisor layer'/>
|
||||
<enum name='VIR_FROM_XEND' file='virterror' value='2' type='virErrorDomain' info='Error at connection with xend daemon'/>
|
||||
@ -527,7 +529,7 @@
|
||||
<field name='rd_req' type='long long' info=' number of read requests'/>
|
||||
<field name='rd_bytes' type='long long' info=' number of read bytes'/>
|
||||
<field name='wr_req' type='long long' info=' number of write requests'/>
|
||||
<field name='wr_bytes' type='long long' info=' numbber of written bytes'/>
|
||||
<field name='wr_bytes' type='long long' info=' number of written bytes'/>
|
||||
<field name='errs' type='long long' info=' In Xen this returns the mysterious 'oo_req'.'/>
|
||||
</struct>
|
||||
<typedef name='virDomainCreateFlags' file='libvirt' type='enum'/>
|
||||
@ -700,13 +702,13 @@
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to a hypervisor connection'/>
|
||||
</function>
|
||||
<function name='virConnectGetVersion' file='libvirt' module='libvirt'>
|
||||
<info>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.</info>
|
||||
<info>Get the version level of the Hypervisor running. This may work only with hypervisor call, i.e. with privileged access to the hypervisor, not with a Read-Only connection.</info>
|
||||
<return type='int' info='-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'/>
|
||||
<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>
|
||||
<info>list the defined but inactive 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='char ** const' info='pointer to an array to store the names'/>
|
||||
@ -748,7 +750,7 @@
|
||||
<arg name='maxnames' type='int' info='size of the names array'/>
|
||||
</function>
|
||||
<function name='virConnectNumOfDefinedDomains' file='libvirt' module='libvirt'>
|
||||
<info>Provides the number of inactive domains.</info>
|
||||
<info>Provides the number of defined but inactive domains.</info>
|
||||
<return type='int' info='the number of domain found or -1 in case of error'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
</function>
|
||||
@ -783,14 +785,14 @@
|
||||
<arg name='name' type='const char *' info='URI of the hypervisor'/>
|
||||
</function>
|
||||
<function name='virConnectOpenAuth' file='libvirt' module='libvirt'>
|
||||
<info>This function should be called first to get a connection to the Hypervisor. If neccessary, authentication will be performed fetching credentials via the callback</info>
|
||||
<info>This function should be called first to get a connection to the Hypervisor. If necessary, authentication will be performed fetching credentials via the callback</info>
|
||||
<return type='virConnectPtr' info='a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html'/>
|
||||
<arg name='name' type='const char *' info='URI of the hypervisor'/>
|
||||
<arg name='auth' type='virConnectAuthPtr' info='Authenticate callback parameters'/>
|
||||
<arg name='flags' type='int' info='Open flags'/>
|
||||
</function>
|
||||
<function name='virConnectOpenReadOnly' file='libvirt' module='libvirt'>
|
||||
<info>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.</info>
|
||||
<info>This function should be called first to get a restricted connection to the library functionalities. The set of APIs usable are then restricted on the available methods to control the domains.</info>
|
||||
<return type='virConnectPtr' info='a pointer to the hypervisor connection or NULL in case of error URIs are documented at http://libvirt.org/uri.html'/>
|
||||
<arg name='name' type='const char *' info='URI of the hypervisor'/>
|
||||
</function>
|
||||
@ -831,10 +833,10 @@
|
||||
<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>
|
||||
<info>Launch a new Linux guest domain, based on an XML description similar to the one returned by virDomainGetXMLDesc() This function may requires privileged access to the hypervisor.</info>
|
||||
<return type='virDomainPtr' info='a new domain object or NULL in case of failure'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
<arg name='xmlDesc' type='const char *' info='an XML description of the domain'/>
|
||||
<arg name='xmlDesc' type='const char *' info='string containing 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'>
|
||||
@ -844,7 +846,7 @@
|
||||
<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>
|
||||
<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 privileged access</info>
|
||||
<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>
|
||||
@ -927,12 +929,12 @@
|
||||
<arg name='buf' type='char *' info='pointer to a VIR_UUID_STRING_BUFLEN bytes array'/>
|
||||
</function>
|
||||
<function name='virDomainGetVcpus' file='libvirt' module='libvirt'>
|
||||
<info>Extract information about virtual CPUs of domain, store it in info array and also in cpumaps if this pointer is'nt NULL.</info>
|
||||
<info>Extract information about virtual CPUs of domain, store it in info array and also in cpumaps if this pointer isn't NULL.</info>
|
||||
<return type='int' info='the number of info filled in case of success, -1 in case of failure.'/>
|
||||
<arg name='domain' type='virDomainPtr' info='pointer to domain object, or NULL for Domain0'/>
|
||||
<arg name='info' type='virVcpuInfoPtr' info='pointer to an array of virVcpuInfo structures (OUT)'/>
|
||||
<arg name='maxinfo' type='int' info='number of structures in info array'/>
|
||||
<arg name='cpumaps' type='unsigned char *' info='pointer to an bit map of real CPUs for all vcpus of this domain (in 8-bit bytes) (OUT) If cpumaps is NULL, then no cupmap information is returned by the API. It's assumed there is <maxinfo> cpumap in cpumaps array. The memory allocated to cpumaps must be (maxinfo * maplen) bytes (ie: calloc(maxinfo, maplen)). One cpumap inside cpumaps has the format described in virDomainPinVcpu() API.'/>
|
||||
<arg name='cpumaps' type='unsigned char *' info='pointer to an bit map of real CPUs for all vcpus of this domain (in 8-bit bytes) (OUT) If cpumaps is NULL, then no cpumap information is returned by the API. It's assumed there is <maxinfo> cpumap in cpumaps array. The memory allocated to cpumaps must be (maxinfo * maplen) bytes (ie: calloc(maxinfo, maplen)). One cpumap inside cpumaps has the format described in virDomainPinVcpu() API.'/>
|
||||
<arg name='maplen' type='int' info='number of bytes in one cpumap, from 1 up to size of CPU map in underlying virtualization system (Xen...).'/>
|
||||
</function>
|
||||
<function name='virDomainGetXMLDesc' file='libvirt' module='libvirt'>
|
||||
@ -984,7 +986,7 @@
|
||||
<arg name='bandwidth' type='unsigned long' info='(optional) specify migration bandwidth limit in Mbps'/>
|
||||
</function>
|
||||
<function name='virDomainPinVcpu' file='libvirt' module='libvirt'>
|
||||
<info>Dynamically change the real CPUs which can be allocated to a virtual CPU. This function requires priviledged access to the hypervisor.</info>
|
||||
<info>Dynamically change the real CPUs which can be allocated to a virtual CPU. This function requires privileged access to the hypervisor.</info>
|
||||
<return type='int' info='0 in case of success, -1 in case of failure.'/>
|
||||
<arg name='domain' type='virDomainPtr' info='pointer to domain object, or NULL for Domain0'/>
|
||||
<arg name='vcpu' type='unsigned int' info='virtual CPU number'/>
|
||||
@ -1004,7 +1006,7 @@
|
||||
<arg name='from' type='const char *' info='path to the'/>
|
||||
</function>
|
||||
<function name='virDomainResume' file='libvirt' module='libvirt'>
|
||||
<info>Resume an suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain(). This function may requires priviledged access</info>
|
||||
<info>Resume an suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain(). This function may requires privileged access</info>
|
||||
<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>
|
||||
@ -1021,13 +1023,13 @@
|
||||
<arg name='autostart' type='int' info='whether the domain should be automatically started 0 or 1'/>
|
||||
</function>
|
||||
<function name='virDomainSetMaxMemory' file='libvirt' module='libvirt'>
|
||||
<info>Dynamically change the maximum amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function requires priviledged access to the hypervisor.</info>
|
||||
<info>Dynamically change the maximum amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function requires privileged access to the hypervisor.</info>
|
||||
<return type='int' info='0 in case of success and -1 in case of failure.'/>
|
||||
<arg name='domain' type='virDomainPtr' info='a domain object or NULL'/>
|
||||
<arg name='memory' type='unsigned long' info='the memory size in kilobytes'/>
|
||||
</function>
|
||||
<function name='virDomainSetMemory' file='libvirt' module='libvirt'>
|
||||
<info>Dynamically change the target amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function may requires priviledged access to the hypervisor.</info>
|
||||
<info>Dynamically change the target amount of physical memory allocated to a domain. If domain is NULL, then this change the amount of memory reserved to Domain0 i.e. the domain where the application runs. This function may requires privileged access to the hypervisor.</info>
|
||||
<return type='int' info='0 in case of success and -1 in case of failure.'/>
|
||||
<arg name='domain' type='virDomainPtr' info='a domain object or NULL'/>
|
||||
<arg name='memory' type='unsigned long' info='the memory size in kilobytes'/>
|
||||
@ -1040,7 +1042,7 @@
|
||||
<arg name='nparams' type='int' info='number of scheduler parameter (this value should be same or less than the returned value nparams of virDomainGetSchedulerType)'/>
|
||||
</function>
|
||||
<function name='virDomainSetVcpus' file='libvirt' module='libvirt'>
|
||||
<info>Dynamically change the number of virtual CPUs used by the domain. Note that this call may fail if the underlying virtualization hypervisor does not support it or if growing the number is arbitrary limited. This function requires priviledged access to the hypervisor.</info>
|
||||
<info>Dynamically change the number of virtual CPUs used by the domain. Note that this call may fail if the underlying virtualization hypervisor does not support it or if growing the number is arbitrary limited. This function requires privileged access to the hypervisor.</info>
|
||||
<return type='int' info='0 in case of success, -1 in case of failure.'/>
|
||||
<arg name='domain' type='virDomainPtr' info='pointer to domain object, or NULL for Domain0'/>
|
||||
<arg name='nvcpus' type='unsigned int' info='the new number of virtual CPUs for this domain'/>
|
||||
@ -1051,7 +1053,7 @@
|
||||
<arg name='domain' type='virDomainPtr' info='a domain object'/>
|
||||
</function>
|
||||
<function name='virDomainSuspend' file='libvirt' module='libvirt'>
|
||||
<info>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.</info>
|
||||
<info>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 privileged access.</info>
|
||||
<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>
|
||||
@ -1071,7 +1073,7 @@
|
||||
<return type='virErrorPtr' info='a pointer to the last error or NULL if none occurred.'/>
|
||||
</function>
|
||||
<function name='virGetVersion' file='libvirt' module='libvirt'>
|
||||
<info>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.</info>
|
||||
<info>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 available, an error code will be returned and @typeVer will be 0.</info>
|
||||
<return type='int' info='-1 in case of failure, 0 otherwise, and values for @libVer and @typeVer have the format major * 1,000,000 + minor * 1,000 + release.'/>
|
||||
<arg name='libVer' type='unsigned long *' info='return value for the library version (OUT)'/>
|
||||
<arg name='type' type='const char *' info='the type of connection/driver looked at'/>
|
||||
@ -1099,7 +1101,7 @@
|
||||
<arg name='xml' type='const char *' info='the XML description for the network, preferably in UTF-8'/>
|
||||
</function>
|
||||
<function name='virNetworkDestroy' file='libvirt' module='libvirt'>
|
||||
<info>Destroy the network 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>
|
||||
<info>Destroy the network 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 privileged access</info>
|
||||
<return type='int' info='0 in case of success and -1 in case of failure.'/>
|
||||
<arg name='network' type='virNetworkPtr' info='a network object'/>
|
||||
</function>
|
||||
@ -1185,7 +1187,7 @@
|
||||
<arg name='maxCells' type='int' info='Maximum number of cells for which freeMems information can be returned.'/>
|
||||
</function>
|
||||
<function name='virNodeGetFreeMemory' file='libvirt' module='libvirt'>
|
||||
<info>provides the free memory availble on the Node</info>
|
||||
<info>provides the free memory available on the Node</info>
|
||||
<return type='unsigned long long' info='the available free memory in kilobytes or 0 in case of error'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
|
||||
</function>
|
||||
@ -1214,27 +1216,27 @@
|
||||
<info>Build the underlying storage pool</info>
|
||||
<return type='int' info='0 on success, or -1 upon failure'/>
|
||||
<arg name='pool' type='virStoragePoolPtr' info='pointer to storage pool'/>
|
||||
<arg name='flags' type='unsigned int' info=''/>
|
||||
<arg name='flags' type='unsigned int' info='future flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virStoragePoolCreate' file='libvirt' module='libvirt'>
|
||||
<info>Starts an inactive storage pool</info>
|
||||
<return type='int' info='0 on success, or -1 if it could not be started'/>
|
||||
<arg name='pool' type='virStoragePoolPtr' info='pointer to storage pool'/>
|
||||
<arg name='flags' type='unsigned int' info=''/>
|
||||
<arg name='flags' type='unsigned int' info='future flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virStoragePoolCreateXML' file='libvirt' module='libvirt'>
|
||||
<info>Create a new storage based on its XML description. The pool is not persitent, so its definition will disappear when it is destroyed, or if the host is restarted</info>
|
||||
<info>Create a new storage based on its XML description. The pool is not persistent, so its definition will disappear when it is destroyed, or if the host is restarted</info>
|
||||
<return type='virStoragePoolPtr' info='a virStoragePoolPtr object, or NULL if creation failed'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to hypervisor connection'/>
|
||||
<arg name='xmlDesc' type='const char *' info='XML description for new pool'/>
|
||||
<arg name='flags' type='unsigned int' info=''/>
|
||||
<arg name='flags' type='unsigned int' info='future flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virStoragePoolDefineXML' file='libvirt' module='libvirt'>
|
||||
<info>Define a new inactive storage pool based on its XML description. The pool is persitent, until explicitly undefined.</info>
|
||||
<info>Define a new inactive storage pool based on its XML description. The pool is persistent, until explicitly undefined.</info>
|
||||
<return type='virStoragePoolPtr' info='a virStoragePoolPtr object, or NULL if creation failed'/>
|
||||
<arg name='conn' type='virConnectPtr' info='pointer to hypervisor connection'/>
|
||||
<arg name='xml' type='const char *' info='XML description for new pool'/>
|
||||
<arg name='flags' type='unsigned int' info=''/>
|
||||
<arg name='flags' type='unsigned int' info='future flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virStoragePoolDelete' file='libvirt' module='libvirt'>
|
||||
<info>Delete the underlying pool resources. This is a non-recoverable operation. The virStoragePoolPtr object itself is not free'd.</info>
|
||||
@ -1261,7 +1263,7 @@
|
||||
<function name='virStoragePoolGetConnect' file='libvirt' module='libvirt'>
|
||||
<info>Provides the connection pointer associated with a storage pool. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the pool object together.</info>
|
||||
<return type='virConnectPtr' info='the virConnectPtr or NULL in case of failure.'/>
|
||||
<arg name='pool' type='virStoragePoolPtr' info='pointer to a poool'/>
|
||||
<arg name='pool' type='virStoragePoolPtr' info='pointer to a pool'/>
|
||||
</function>
|
||||
<function name='virStoragePoolGetInfo' file='libvirt' module='libvirt'>
|
||||
<info>Get volatile information about the storage pool such as free space / usage summary</info>
|
||||
@ -1290,7 +1292,7 @@
|
||||
<info>Fetch an XML document describing all aspects of the storage pool. This is suitable for later feeding back into the virStoragePoolCreateXML method.</info>
|
||||
<return type='char *' info='a XML document, or NULL on error'/>
|
||||
<arg name='pool' type='virStoragePoolPtr' info='pointer to storage pool'/>
|
||||
<arg name='flags' type='unsigned int' info='flags for XML format options (unused, pass 0)'/>
|
||||
<arg name='flags' type='unsigned int' info='flags for XML format options (set of virDomainXMLFlags)'/>
|
||||
</function>
|
||||
<function name='virStoragePoolListVolumes' file='libvirt' module='libvirt'>
|
||||
<info>Fetch list of storage volume names, limiting to at most maxnames.</info>
|
||||
@ -1355,7 +1357,7 @@
|
||||
<info>Delete the storage volume from the pool</info>
|
||||
<return type='int' info='0 on success, or -1 on error'/>
|
||||
<arg name='vol' type='virStorageVolPtr' info='pointer to storage volume'/>
|
||||
<arg name='flags' type='unsigned int' info=''/>
|
||||
<arg name='flags' type='unsigned int' info='future flags, use 0 for now'/>
|
||||
</function>
|
||||
<function name='virStorageVolFree' file='libvirt' module='libvirt'>
|
||||
<info>Release the storage volume handle. The underlying storage volume contains to exist</info>
|
||||
@ -1365,7 +1367,7 @@
|
||||
<function name='virStorageVolGetConnect' file='libvirt' module='libvirt'>
|
||||
<info>Provides the connection pointer associated with a storage volume. The reference counter on the connection is not increased by this call. WARNING: When writing libvirt bindings in other languages, do not use this function. Instead, store the connection and the volume object together.</info>
|
||||
<return type='virConnectPtr' info='the virConnectPtr or NULL in case of failure.'/>
|
||||
<arg name='vol' type='virStorageVolPtr' info='pointer to a poool'/>
|
||||
<arg name='vol' type='virStorageVolPtr' info='pointer to a pool'/>
|
||||
</function>
|
||||
<function name='virStorageVolGetInfo' file='libvirt' module='libvirt'>
|
||||
<info>Fetches volatile information about the storage volume such as its current allocation</info>
|
||||
@ -1374,7 +1376,7 @@
|
||||
<arg name='info' type='virStorageVolInfoPtr' info='pointer at which to store info'/>
|
||||
</function>
|
||||
<function name='virStorageVolGetKey' file='libvirt' module='libvirt'>
|
||||
<info>Fetch the storage volume key. This is globally unique, so the same volume will hve the same key no matter what host it is accessed from</info>
|
||||
<info>Fetch the storage volume key. This is globally unique, so the same volume will have the same key no matter what host it is accessed from</info>
|
||||
<return type='const char *' info='the volume key, or NULL on error'/>
|
||||
<arg name='vol' type='virStorageVolPtr' info='pointer to storage volume'/>
|
||||
</function>
|
||||
|
@ -86,6 +86,7 @@
|
||||
<reference name='VIR_ERR_XML_ERROR' href='html/libvirt-virterror.html#VIR_ERR_XML_ERROR'/>
|
||||
<reference name='VIR_FROM_CONF' href='html/libvirt-virterror.html#VIR_FROM_CONF'/>
|
||||
<reference name='VIR_FROM_DOM' href='html/libvirt-virterror.html#VIR_FROM_DOM'/>
|
||||
<reference name='VIR_FROM_LXC' href='html/libvirt-virterror.html#VIR_FROM_LXC'/>
|
||||
<reference name='VIR_FROM_NET' href='html/libvirt-virterror.html#VIR_FROM_NET'/>
|
||||
<reference name='VIR_FROM_NONE' href='html/libvirt-virterror.html#VIR_FROM_NONE'/>
|
||||
<reference name='VIR_FROM_OPENVZ' href='html/libvirt-virterror.html#VIR_FROM_OPENVZ'/>
|
||||
@ -410,6 +411,7 @@
|
||||
<ref name='VIR_ERR_XML_ERROR'/>
|
||||
<ref name='VIR_FROM_CONF'/>
|
||||
<ref name='VIR_FROM_DOM'/>
|
||||
<ref name='VIR_FROM_LXC'/>
|
||||
<ref name='VIR_FROM_NET'/>
|
||||
<ref name='VIR_FROM_NONE'/>
|
||||
<ref name='VIR_FROM_OPENVZ'/>
|
||||
@ -1234,6 +1236,7 @@
|
||||
<ref name='VIR_ERR_XML_ERROR'/>
|
||||
<ref name='VIR_FROM_CONF'/>
|
||||
<ref name='VIR_FROM_DOM'/>
|
||||
<ref name='VIR_FROM_LXC'/>
|
||||
<ref name='VIR_FROM_NET'/>
|
||||
<ref name='VIR_FROM_NONE'/>
|
||||
<ref name='VIR_FROM_OPENVZ'/>
|
||||
@ -2063,9 +2066,6 @@
|
||||
<word name='available'>
|
||||
<ref name='_virError'/>
|
||||
<ref name='virConnectOpenReadOnly'/>
|
||||
<ref name='virNodeGetFreeMemory'/>
|
||||
</word>
|
||||
<word name='availble'>
|
||||
<ref name='virGetVersion'/>
|
||||
<ref name='virNodeGetFreeMemory'/>
|
||||
</word>
|
||||
@ -2177,6 +2177,8 @@
|
||||
<ref name='VIR_NODEINFO_MAXCPUS'/>
|
||||
<ref name='virConnGetLastError'/>
|
||||
<ref name='virConnectGetURI'/>
|
||||
<ref name='virConnectListDefinedDomains'/>
|
||||
<ref name='virConnectNumOfDefinedDomains'/>
|
||||
<ref name='virDomainDefineXML'/>
|
||||
<ref name='virDomainReboot'/>
|
||||
<ref name='virDomainShutdown'/>
|
||||
@ -2393,6 +2395,9 @@
|
||||
<word name='constants'>
|
||||
<ref name='_virConnectCredential'/>
|
||||
</word>
|
||||
<word name='containing'>
|
||||
<ref name='virDomainCreateLinux'/>
|
||||
</word>
|
||||
<word name='contains'>
|
||||
<ref name='virStoragePoolLookupByVolume'/>
|
||||
<ref name='virStorageVolFree'/>
|
||||
@ -2471,9 +2476,6 @@
|
||||
<ref name='_virConnectAuth'/>
|
||||
<ref name='virConnectOpenAuth'/>
|
||||
</word>
|
||||
<word name='cupmap'>
|
||||
<ref name='virDomainGetVcpus'/>
|
||||
</word>
|
||||
<word name='current'>
|
||||
<ref name='virDomainMigrate'/>
|
||||
<ref name='virStorageVolGetInfo'/>
|
||||
@ -2516,6 +2518,7 @@
|
||||
</word>
|
||||
<word name='defined'>
|
||||
<ref name='virConnectListDefinedDomains'/>
|
||||
<ref name='virConnectNumOfDefinedDomains'/>
|
||||
<ref name='virDomainCreate'/>
|
||||
<ref name='virDomainUndefine'/>
|
||||
<ref name='virNetworkCreate'/>
|
||||
@ -2790,10 +2793,15 @@
|
||||
<ref name='virDomainMigrate'/>
|
||||
<ref name='virDomainReboot'/>
|
||||
<ref name='virNetworkGetXMLDesc'/>
|
||||
<ref name='virStoragePoolBuild'/>
|
||||
<ref name='virStoragePoolCreate'/>
|
||||
<ref name='virStoragePoolCreateXML'/>
|
||||
<ref name='virStoragePoolDefineXML'/>
|
||||
<ref name='virStoragePoolDelete'/>
|
||||
<ref name='virStoragePoolGetXMLDesc'/>
|
||||
<ref name='virStoragePoolRefresh'/>
|
||||
<ref name='virStorageVolCreateXML'/>
|
||||
<ref name='virStorageVolDelete'/>
|
||||
<ref name='virStorageVolGetXMLDesc'/>
|
||||
</word>
|
||||
<word name='following:'>
|
||||
@ -2912,6 +2920,13 @@
|
||||
<ref name='virConnectClose'/>
|
||||
<ref name='virDomainSuspend'/>
|
||||
</word>
|
||||
<word name='future'>
|
||||
<ref name='virStoragePoolBuild'/>
|
||||
<ref name='virStoragePoolCreate'/>
|
||||
<ref name='virStoragePoolCreateXML'/>
|
||||
<ref name='virStoragePoolDefineXML'/>
|
||||
<ref name='virStorageVolDelete'/>
|
||||
</word>
|
||||
</letter>
|
||||
</chunk>
|
||||
<chunk name='chunk4'>
|
||||
@ -3001,6 +3016,7 @@
|
||||
<ref name='virDomainBlockStats'/>
|
||||
<ref name='virDomainInterfaceStats'/>
|
||||
<ref name='virGetVersion'/>
|
||||
<ref name='virStorageVolGetKey'/>
|
||||
</word>
|
||||
<word name='here'>
|
||||
<ref name='virConnectGetMaxVcpus'/>
|
||||
@ -3044,9 +3060,6 @@
|
||||
<word name='human-readable'>
|
||||
<ref name='_virError'/>
|
||||
</word>
|
||||
<word name='hve'>
|
||||
<ref name='virStorageVolGetKey'/>
|
||||
</word>
|
||||
<word name='hypervisors'>
|
||||
<ref name='virDomainMigrate'/>
|
||||
</word>
|
||||
@ -3068,6 +3081,7 @@
|
||||
<ref name='virDomainMigrate'/>
|
||||
</word>
|
||||
<word name='inactive'>
|
||||
<ref name='virConnectListDefinedDomains'/>
|
||||
<ref name='virConnectListDefinedNetworks'/>
|
||||
<ref name='virConnectListDefinedStoragePools'/>
|
||||
<ref name='virConnectNumOfDefinedDomains'/>
|
||||
@ -3157,6 +3171,9 @@
|
||||
<word name='involve'>
|
||||
<ref name='virStoragePoolRefresh'/>
|
||||
</word>
|
||||
<word name='isn'>
|
||||
<ref name='virDomainGetVcpus'/>
|
||||
</word>
|
||||
<word name='its'>
|
||||
<ref name='virDomainGetName'/>
|
||||
<ref name='virDomainLookupByName'/>
|
||||
@ -3268,13 +3285,11 @@
|
||||
<ref name='virResetLastError'/>
|
||||
<ref name='virSetErrorFunc'/>
|
||||
</word>
|
||||
<word name='libbrary'>
|
||||
<ref name='virConnectOpenReadOnly'/>
|
||||
</word>
|
||||
<word name='library'>
|
||||
<ref name='LIBVIR_VERSION_NUMBER'/>
|
||||
<ref name='_virError'/>
|
||||
<ref name='virConnSetErrorFunc'/>
|
||||
<ref name='virConnectOpenReadOnly'/>
|
||||
<ref name='virCopyLastError'/>
|
||||
<ref name='virErrorFunc'/>
|
||||
<ref name='virGetLastError'/>
|
||||
@ -3592,11 +3607,9 @@
|
||||
<ref name='_virDomainInfo'/>
|
||||
<ref name='_virVcpuInfo'/>
|
||||
</word>
|
||||
<word name='neccessary'>
|
||||
<ref name='virConnectOpenAuth'/>
|
||||
</word>
|
||||
<word name='necessary'>
|
||||
<ref name='VIR_NODEINFO_MAXCPUS'/>
|
||||
<ref name='virConnectOpenAuth'/>
|
||||
</word>
|
||||
<word name='need'>
|
||||
<ref name='virConnCopyLastError'/>
|
||||
@ -3652,13 +3665,17 @@
|
||||
<ref name='virConnGetLastError'/>
|
||||
<ref name='virGetLastError'/>
|
||||
</word>
|
||||
<word name='now'>
|
||||
<ref name='virStoragePoolBuild'/>
|
||||
<ref name='virStoragePoolCreate'/>
|
||||
<ref name='virStoragePoolCreateXML'/>
|
||||
<ref name='virStoragePoolDefineXML'/>
|
||||
<ref name='virStorageVolDelete'/>
|
||||
</word>
|
||||
<word name='nparams'>
|
||||
<ref name='virDomainGetSchedulerParameters'/>
|
||||
<ref name='virDomainSetSchedulerParameters'/>
|
||||
</word>
|
||||
<word name='numbber'>
|
||||
<ref name='_virDomainBlockStats'/>
|
||||
</word>
|
||||
</letter>
|
||||
<letter name='o'>
|
||||
<word name='objects'>
|
||||
@ -3779,7 +3796,6 @@
|
||||
</word>
|
||||
<word name='pass'>
|
||||
<ref name='virConnSetErrorFunc'/>
|
||||
<ref name='virStoragePoolGetXMLDesc'/>
|
||||
<ref name='virStorageVolCreateXML'/>
|
||||
<ref name='virStorageVolGetXMLDesc'/>
|
||||
</word>
|
||||
@ -3806,12 +3822,10 @@
|
||||
<ref name='virConnectOpenAuth'/>
|
||||
</word>
|
||||
<word name='persistent'>
|
||||
<ref name='virStoragePoolDestroy'/>
|
||||
<ref name='virStorageVolGetPath'/>
|
||||
</word>
|
||||
<word name='persitent'>
|
||||
<ref name='virStoragePoolCreateXML'/>
|
||||
<ref name='virStoragePoolDefineXML'/>
|
||||
<ref name='virStoragePoolDestroy'/>
|
||||
<ref name='virStorageVolGetPath'/>
|
||||
</word>
|
||||
<word name='physical'>
|
||||
<ref name='VIR_CPU_MAPLEN'/>
|
||||
@ -3837,10 +3851,6 @@
|
||||
<ref name='virStoragePoolNumOfVolumes'/>
|
||||
<ref name='virStorageVolCreateXML'/>
|
||||
</word>
|
||||
<word name='poool'>
|
||||
<ref name='virStoragePoolGetConnect'/>
|
||||
<ref name='virStorageVolGetConnect'/>
|
||||
</word>
|
||||
<word name='port'>
|
||||
<ref name='virDomainMigrate'/>
|
||||
</word>
|
||||
@ -3860,7 +3870,7 @@
|
||||
<word name='printing'>
|
||||
<ref name='virSetErrorFunc'/>
|
||||
</word>
|
||||
<word name='priviledged'>
|
||||
<word name='privileged'>
|
||||
<ref name='virConnectGetVersion'/>
|
||||
<ref name='virDomainCreateLinux'/>
|
||||
<ref name='virDomainDestroy'/>
|
||||
@ -4187,6 +4197,7 @@
|
||||
<ref name='virDomainMigrate'/>
|
||||
<ref name='virDomainPinVcpu'/>
|
||||
<ref name='virNetworkGetXMLDesc'/>
|
||||
<ref name='virStoragePoolGetXMLDesc'/>
|
||||
</word>
|
||||
<word name='setting'>
|
||||
<ref name='virStoragePoolSetAutostart'/>
|
||||
@ -4365,6 +4376,7 @@
|
||||
<ref name='virConnectGetCapabilities'/>
|
||||
<ref name='virConnectGetType'/>
|
||||
<ref name='virConnectGetURI'/>
|
||||
<ref name='virDomainCreateLinux'/>
|
||||
<ref name='virDomainGetName'/>
|
||||
<ref name='virDomainGetOSType'/>
|
||||
<ref name='virDomainGetSchedulerType'/>
|
||||
@ -4611,7 +4623,6 @@
|
||||
</word>
|
||||
<word name='unused'>
|
||||
<ref name='virDomainCoreDump'/>
|
||||
<ref name='virStoragePoolGetXMLDesc'/>
|
||||
<ref name='virStoragePoolRefresh'/>
|
||||
<ref name='virStorageVolCreateXML'/>
|
||||
<ref name='virStorageVolGetXMLDesc'/>
|
||||
@ -4648,8 +4659,13 @@
|
||||
<ref name='virErrorFunc'/>
|
||||
<ref name='virGetLastError'/>
|
||||
<ref name='virNetworkGetConnect'/>
|
||||
<ref name='virStoragePoolBuild'/>
|
||||
<ref name='virStoragePoolCreate'/>
|
||||
<ref name='virStoragePoolCreateXML'/>
|
||||
<ref name='virStoragePoolDefineXML'/>
|
||||
<ref name='virStoragePoolGetConnect'/>
|
||||
<ref name='virStoragePoolRefresh'/>
|
||||
<ref name='virStorageVolDelete'/>
|
||||
<ref name='virStorageVolGetConnect'/>
|
||||
</word>
|
||||
<word name='used'>
|
||||
@ -4802,6 +4818,7 @@
|
||||
</word>
|
||||
<word name='virDomainXMLFlags'>
|
||||
<ref name='virDomainGetXMLDesc'/>
|
||||
<ref name='virStoragePoolGetXMLDesc'/>
|
||||
</word>
|
||||
<word name='virError'>
|
||||
<ref name='virResetError'/>
|
||||
|
@ -25,8 +25,8 @@
|
||||
|
||||
<!--
|
||||
Description of a Xen domain:
|
||||
The description must start with the identification informations and then
|
||||
os or bootloader, resources, features, devices and termination informations
|
||||
The description must start with the identification information and then
|
||||
os or bootloader, resources, features, devices and termination information
|
||||
can be given in any order.
|
||||
-->
|
||||
<define name='xen-domain'>
|
||||
@ -60,7 +60,7 @@
|
||||
|
||||
<!--
|
||||
Description of a QEmu domain:
|
||||
The description must start with the identification informations and then
|
||||
The description must start with the identification information and then
|
||||
os, resources, devices can be given in any order.
|
||||
The specific part are the combinations of architectures and machines
|
||||
being emulated.
|
||||
@ -145,7 +145,7 @@
|
||||
|
||||
<!--
|
||||
Description of a KVM domain:
|
||||
The description must start with the identification informations and then
|
||||
The description must start with the identification information and then
|
||||
os, resources, devices can be given in any order.
|
||||
-->
|
||||
<define name='kvm-domain'>
|
||||
|
@ -56,6 +56,14 @@
|
||||
rest of the network -->
|
||||
<element name="forward">
|
||||
<optional><attribute name="dev"><text/></attribute></optional>
|
||||
<optional>
|
||||
<attribute name="mode">
|
||||
<choice>
|
||||
<value>nat</value>
|
||||
<value>routed</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</element>
|
||||
|
@ -20,7 +20,8 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p><h3>0
|
||||
virHashRemoveSet bug (Hiroyuki Kaguchi), close-on-exec flag for
|
||||
qemud signal pipe (Daniel Berrange), double free in OpenVZ
|
||||
(Anton Protopopov), handle mac without addresses (Shigeki Sakamoto),
|
||||
MAC addresses checks (Shigeki Sakamoto and Richard Jones)</li>
|
||||
MAC addresses checks (Shigeki Sakamoto and Richard Jones),
|
||||
allow to read non-seekable files (Jim Meyering)</li>
|
||||
<li>Improvements: Windows build (Richard Jones), KVM/QEmu shutdown
|
||||
(Guido Guenther), catch virExec output on debug (Mark McLoughlin),
|
||||
integration of iptables and lokkit (Mark McLoughlin), keymap
|
||||
@ -199,7 +200,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p><h3>0
|
||||
</li><li>Documentation: remote support (Richard Jones), description of
|
||||
the URI connection strings (Richard Jones), update of virsh man
|
||||
page, matrix of libvirt API/hypervisor support with version
|
||||
informations (Richard Jones)</li>
|
||||
information (Richard Jones)</li>
|
||||
<li>Bug fixes: examples Makefile.am generation (Richard Jones),
|
||||
SetMem fix (Mark Johnson), URI handling and ordering of
|
||||
drivers (Daniel Berrange), fix virsh help without hypervisor (Richard
|
||||
@ -344,7 +345,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p><h3>0
|
||||
<li>bug fixes: VCPU info breakages on xen 3.0.3, xenDaemonListDomains buffer overflow (Daniel Berrange), reference count bug when creating Xen domains (Daniel Berrange).</li>
|
||||
<li>improvements: support graphic framebuffer for Xen paravirt (Daniel Berrange), VNC listen IP range support (Daniel Berrange), support for default Xen config files and inactive domains of 3.0.4 (Daniel Berrange).</li>
|
||||
</ul><h3>0.1.9: Nov 29 2006</h3><ul><li>python bindings: release interpeter lock when calling C (Daniel Berrange)</li>
|
||||
<li>don't raise HTTP error when looking informations for a domain</li>
|
||||
<li>don't raise HTTP error when looking information for a domain</li>
|
||||
<li>some refactoring to use the driver for all entry points</li>
|
||||
<li>better error reporting (Daniel Berrange)</li>
|
||||
<li>fix OS reporting when running as non-root</li>
|
||||
@ -362,7 +363,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p><h3>0
|
||||
<li>added support for inactive domains, new APIs, various associated cleanup (Daniel Berrange)</li>
|
||||
<li>special device model for HVM guests (Daniel Berrange)</li>
|
||||
<li>add API to dump core of domains (but requires a patched xend)</li>
|
||||
<li>pygrub bootloader informations take over <os> informations</li>
|
||||
<li>pygrub bootloader information take over <os> information</li>
|
||||
<li>updated the localization strings</li>
|
||||
</ul><h3>0.1.8: Oct 16 2006</h3><ul><li> Bug for system with page size != 4k</li>
|
||||
<li> vcpu number initialization (Philippe Berthault)</li>
|
||||
@ -373,9 +374,9 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p><h3>0
|
||||
<li> compile fix</li>
|
||||
<li> mlock/munlock size fixes (Daniel Berrange)</li>
|
||||
<li> improve error reporting</li>
|
||||
</ul><h3>0.1.7: Sep 29 2006</h3><ul><li> fix a memory bug on getting vcpu informations from xend (Daniel Berrange)</li>
|
||||
</ul><h3>0.1.7: Sep 29 2006</h3><ul><li> fix a memory bug on getting vcpu information from xend (Daniel Berrange)</li>
|
||||
<li> fix another problem in the hypercalls change in Xen changeset
|
||||
86d26e6ec89b when getting domain informations (Daniel Berrange)</li>
|
||||
86d26e6ec89b when getting domain information (Daniel Berrange)</li>
|
||||
</ul><h3>0.1.6: Sep 22 2006</h3><ul><li>Support for localization of strings using gettext (Daniel Berrange)</li>
|
||||
<li>Support for new Xen-3.0.3 cdrom and disk configuration (Daniel Berrange)</li>
|
||||
<li>Support for setting VNC port when creating domains with new
|
||||
@ -401,7 +402,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p><h3>0
|
||||
initialization errors (Daniel Berrange)</li>
|
||||
<li>improvements: UUID in XML description (Peter Vetere), proxy code
|
||||
cleanup, virtual CPU and affinity support + virsh support (Michel
|
||||
Ponceau, Philippe Berthault, Daniel Berrange), port and tty informations
|
||||
Ponceau, Philippe Berthault, Daniel Berrange), port and tty information
|
||||
for console in XML (Daniel Berrange), added XML dump to driver and proxy
|
||||
support (Daniel Berrange), extention of boot options with support for
|
||||
floppy and cdrom (Daniel Berrange), features block in XML to report/ask
|
||||
@ -417,7 +418,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p><h3>0
|
||||
support for fully virtualized guest (Jim Fehlig, DV, Mark McLoughlin)</li>
|
||||
<li>documentation: augmented to cover hvm domains</li>
|
||||
</ul><h3>0.1.2: Jul 3 2006</h3><ul><li>headers include paths fixup</li>
|
||||
<li>proxy mechanism for unpriviledged read-only access by httpu</li>
|
||||
<li>proxy mechanism for unprivileged read-only access by httpu</li>
|
||||
</ul><h3>0.1.1: Jun 21 2006</h3><ul><li>building fixes: ncurses fallback (Jim Fehlig), VPATH builds (Daniel P.
|
||||
Berrange)</li>
|
||||
<li>driver cleanups: new entry points, cleanup of libvirt.c (with Daniel P.
|
||||
|
@ -5,7 +5,7 @@ pure C. First the headers embeds the necessary declarations to
|
||||
allow direct acces from C++ code, but also we have bindings for
|
||||
higher level kind of languages:</p><ul><li>Python: Libvirt comes with direct support for the Python language
|
||||
(just make sure you installed the libvirt-python package if not
|
||||
compiling from sources). See below for more informations about
|
||||
compiling from sources). See below for more information about
|
||||
using libvirt with python</li>
|
||||
<li>Perl: Daniel Berrange provides <a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">bindings for
|
||||
Perl</a>.</li>
|
||||
@ -13,7 +13,7 @@ higher level kind of languages:</p><ul><li>Python: Libvirt comes with direct sup
|
||||
<li>Ruby: David Lutterkork provides <a href="http://libvirt.org/ruby/">bindings for Ruby</a>.</li>
|
||||
</ul><p>Support, requests or help for libvirt bindings are welcome on
|
||||
the <a href="https://www.redhat.com/mailman/listinfo/libvir-list/">mailing
|
||||
list</a>, as usual try to provide enough background informations
|
||||
list</a>, as usual try to provide enough background information
|
||||
and make sure you use recent version, see the <a href="bugs.html">help
|
||||
page</a>.</p><p>The remaining of this page focuses on the Python bindings.</p><p>The Python binding should be complete and are mostly automatically
|
||||
generated from the formal description of the API in xml. The bindings are
|
||||
@ -59,7 +59,7 @@ from the C API, the only points to notice are:</p><ul><li>the import of the modu
|
||||
openReadOnly function allows the code to execute as a normal user.</li>
|
||||
<li>getting an object representing the Domain 0 using <span style="color: #007F00; background-color: #FFFFFF">lookupByName</span></li>
|
||||
<li>if the domain is not found a libvirtError exception will be raised</li>
|
||||
<li>extracting and printing some informations about the domain using
|
||||
<li>extracting and printing some information about the domain using
|
||||
various <span style="color: #E50073; background-color: #FFFFFF">methods</span>
|
||||
associated to the virDomain class.</li>
|
||||
</ul></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="news.html">Releases</a></li><li><a href="intro.html">Introduction</a></li><li><a href="architecture.html">libvirt architecture</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="format.html">XML Format</a></li><li><a href="python.html">Bindings for other languages</a></li><li><a href="errors.html">Handling of errors</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="windows.html">Windows support</a></li><li><a href="remote.html">Remote support</a></li><li><a href="auth.html">Access control</a></li><li><a href="uri.html">Connection URIs</a></li><li><a href="hvsupport.html">Hypervisor support</a></li><li><a href="storage.html">Storage Management</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&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://libvirt.org/ocaml/">OCaml bindings</a></li><li><a href="http://libvirt.org/ruby/">Ruby 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>
|
||||
|
@ -246,7 +246,7 @@
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
the menu box for developper's pages
|
||||
the menu box for developer's pages
|
||||
-->
|
||||
<!--
|
||||
the page title
|
||||
|
@ -84,7 +84,7 @@ full capacity for storage volumes. This value is in bytes. This
|
||||
is not applicable when creating a pool.</dd>
|
||||
|
||||
<dt>available</dt>
|
||||
<dd>Providing the free space available for allocating new volums
|
||||
<dd>Providing the free space available for allocating new volumes
|
||||
in the pool. Due to underlying device constraints it may not be
|
||||
possible to allocate the entire free space to a single volume.
|
||||
This value is in bytes. This is not applicable when creating a
|
||||
@ -128,11 +128,11 @@ value for this, so it is optional.</dd>
|
||||
<dd>Provides the location at which the pool will be mapped into
|
||||
the local filesystem namespace. For a filesystem/directory based
|
||||
pool it will be the name of the directory in which volumes will
|
||||
be created. For device based pools it will tbe directory in which
|
||||
be created. For device based pools it will be the name of the directory in which
|
||||
devices nodes exist. For the latter <code>/dev/</code> may seem
|
||||
like the logical choice, however, devices nodes there are not
|
||||
guarenteed stable across reboots, since they are allocated on
|
||||
demand. It is preferrable to use a stable location such as one
|
||||
guaranteed stable across reboots, since they are allocated on
|
||||
demand. It is preferable to use a stable location such as one
|
||||
of the <code>/dev/disk/by-{path,id,uuid,label</code> locations.
|
||||
</dd>
|
||||
<dt>permissions<dt>
|
||||
@ -152,7 +152,7 @@ contains the MAC (eg SELinux) label string.
|
||||
If a storage pool exposes information about its underlying
|
||||
placement / allocation scheme, the <code>device</code> element
|
||||
within the <code>source</code> element may contain information
|
||||
about its avilable extents. Some pools have a constraint that
|
||||
about its available extents. Some pools have a constraint that
|
||||
a volume must be allocated entirely within a single constraint
|
||||
(eg disk partition pools). Thus the extent information allows an
|
||||
application to determine the maximum possible size for a new
|
||||
@ -212,10 +212,10 @@ on the local host.</dd>
|
||||
<dd>Provides the location at which the pool will be mapped into
|
||||
the local filesystem namespace. For a filesystem/directory based
|
||||
pool it will be the name of the directory in which volumes will
|
||||
be created. For device based pools it will tbe directory in which
|
||||
be created. For device based pools it will be the name of the directory in which
|
||||
devices nodes exist. For the latter <code>/dev/</code> may seem
|
||||
like the logical choice, however, devices nodes there are not
|
||||
guarenteed stable across reboots, since they are allocated on
|
||||
guaranteed stable across reboots, since they are allocated on
|
||||
demand. It is preferrable to use a stable location such as one
|
||||
of the <code>/dev/disk/by-{path,id,uuid,label</code> locations.
|
||||
</dd>
|
||||
@ -293,10 +293,10 @@ One of the following options:
|
||||
</ul><p>
|
||||
When listing existing volumes all these formats are supported
|
||||
natively. When creating new volumes, only a subset may be
|
||||
available. The <code>raw</code> type is guarenteed always
|
||||
available. The <code>raw</code> type is guaranteed always
|
||||
available. The <code>qcow2</code> type can be created if
|
||||
either <code>qemu-img</code> or <code>qcow-create</code> tools
|
||||
are present. The others are dependant on support of the
|
||||
are present. The others are dependent on support of the
|
||||
<code>qemu-img</code> tool.
|
||||
|
||||
</p><h4><a name="StorageBackendFS" id="StorageBackendFS">Filesystem pool</a></h4>
|
||||
@ -328,7 +328,7 @@ required.
|
||||
<h5>Valid pool format types</h5>
|
||||
|
||||
<p>
|
||||
The fileystem pool supports the following formats:
|
||||
The filesystem pool supports the following formats:
|
||||
</p>
|
||||
|
||||
<ul><li><code>auto</code> - automatically determine format</li>
|
||||
@ -378,7 +378,7 @@ point. It will default to using NFS as the protocol.
|
||||
<h5>Valid pool format types</h5>
|
||||
|
||||
<p>
|
||||
The network fileystem pool supports the following formats:
|
||||
The network filesystem pool supports the following formats:
|
||||
</p>
|
||||
|
||||
<ul><li><code>auto</code> - automatically determine format</li>
|
||||
|
@ -97,7 +97,7 @@ this is used to connect to the local Xen hypervisor, this is the default
|
||||
|
||||
=item qemu:///system
|
||||
|
||||
allow to connect locally as root to the daemon supervizing QEmu and KVM domains
|
||||
allow to connect locally as root to the daemon supervising QEmu and KVM domains
|
||||
|
||||
=item qemu:///session
|
||||
|
||||
@ -121,7 +121,7 @@ capabilities in terms of CPU and features, and a set of description
|
||||
for each kind of guest which can be virtualized. For a more complete
|
||||
description see:
|
||||
L<http://libvirt.org/format.html#Capa1>
|
||||
The XML also show the NUMA topology informations if available.
|
||||
The XML also show the NUMA topology information if available.
|
||||
|
||||
=item B<list>
|
||||
|
||||
@ -255,7 +255,7 @@ Returns state about a running domain.
|
||||
|
||||
=item B<dumpxml> I<domain-id>
|
||||
|
||||
Output the domain informations as an XML dump to stdout, this format can be used by the B<create> command.
|
||||
Output the domain information as an XML dump to stdout, this format can be used by the B<create> command.
|
||||
|
||||
|
||||
=item B<reboot> I<domain-id>
|
||||
@ -413,7 +413,7 @@ if more than one are present on the domain.
|
||||
|
||||
The following commands manipulate networks. Libvirt has the capability to
|
||||
define virtual networks which can then be used by domains and linked to
|
||||
actual network devices. For more detailed informations about this feature
|
||||
actual network devices. For more detailed information about this feature
|
||||
see the documentation at L<http://libvirt.org/format.html#Net1> . A lot
|
||||
of the command for virtual networks are similar to the one used for domains,
|
||||
but the way to name a virtual network is either by its name or UUID.
|
||||
|
@ -1,6 +1,6 @@
|
||||
## DO NOT EDIT! GENERATED AUTOMATICALLY!
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
# Copyright (C) 2004-2007 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software, distributed under the terms of the GNU
|
||||
# General Public License. As a special exception to the GNU General
|
||||
@ -9,7 +9,7 @@
|
||||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=gl getaddrinfo getpass gettext physmem poll strndup strsep sys_stat useless-if-before-free vasprintf vc-list-files
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=gl getaddrinfo getpass gettext mktempd physmem poll posix-shell strndup strsep sys_stat useless-if-before-free vasprintf vc-list-files
|
||||
|
||||
AUTOMAKE_OPTIONS = 1.5 gnits
|
||||
|
||||
@ -35,15 +35,6 @@ libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS)
|
||||
EXTRA_libgnu_la_SOURCES =
|
||||
libgnu_la_LDFLAGS = $(AM_LDFLAGS)
|
||||
|
||||
## begin gnulib module absolute-header
|
||||
|
||||
# Use this preprocessor expression to decide whether #include_next works.
|
||||
# Do not rely on a 'configure'-time test for this, since the expression
|
||||
# might appear in an installed header, which is used by some other compiler.
|
||||
HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER)
|
||||
|
||||
## end gnulib module absolute-header
|
||||
|
||||
## begin gnulib module alloca-opt
|
||||
|
||||
BUILT_SOURCES += $(ALLOCA_H)
|
||||
@ -208,6 +199,13 @@ EXTRA_libgnu_la_SOURCES += malloc.c
|
||||
|
||||
## end gnulib module malloc-posix
|
||||
|
||||
## begin gnulib module mktempd
|
||||
|
||||
|
||||
EXTRA_DIST += $(top_srcdir)/build-aux/mktempd
|
||||
|
||||
## end gnulib module mktempd
|
||||
|
||||
## begin gnulib module netinet_in
|
||||
|
||||
BUILT_SOURCES += $(NETINET_IN_H)
|
||||
@ -259,6 +257,21 @@ EXTRA_libgnu_la_SOURCES += poll.c
|
||||
|
||||
## end gnulib module poll
|
||||
|
||||
## begin gnulib module posix-shell
|
||||
|
||||
##Sample usage of posix-shell module:
|
||||
#script: script.in
|
||||
# rm -f $@-t $@
|
||||
# sed -e 's#@''PREFERABLY_POSIX_SHELL''@#$(PREFERABLY_POSIX_SHELL)#g' \
|
||||
# -e 's#@''POSIX_SHELL''@#$(POSIX_SHELL)#g' \
|
||||
# -e $(srcdir)/$@.in >$@-t
|
||||
# chmod a+x $@-t
|
||||
# mv $@-t $@
|
||||
#EXTRA_DIST += script.in
|
||||
#MOSTLYCLEANFILES += script script-t
|
||||
|
||||
## end gnulib module posix-shell
|
||||
|
||||
## begin gnulib module realloc-posix
|
||||
|
||||
|
||||
@ -669,6 +682,7 @@ unistd.h: unistd.in.h
|
||||
-e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
|
||||
-e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
|
||||
-e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
|
||||
-e 's|@''GNULIB_ENVIRON''@|$(GNULIB_ENVIRON)|g' \
|
||||
-e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
|
||||
-e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
|
||||
-e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
|
||||
@ -683,6 +697,7 @@ unistd.h: unistd.in.h
|
||||
-e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
|
||||
-e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
|
||||
-e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
|
||||
-e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
|
||||
-e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
|
||||
-e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
|
||||
-e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Memory allocation on the stack.
|
||||
|
||||
Copyright (C) 1995, 1999, 2001-2004, 2006-2007 Free Software
|
||||
Copyright (C) 1995, 1999, 2001-2004, 2006-2008 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
@ -42,6 +42,8 @@
|
||||
# elif defined _MSC_VER
|
||||
# include <malloc.h>
|
||||
# define alloca _alloca
|
||||
# elif defined __DECC && defined __VMS
|
||||
# define alloca __ALLOCA
|
||||
# else
|
||||
# include <stddef.h>
|
||||
# ifdef __cplusplus
|
||||
|
@ -326,7 +326,7 @@ freeaddrinfo (struct addrinfo *ai)
|
||||
cur = ai;
|
||||
ai = ai->ai_next;
|
||||
|
||||
if (cur->ai_canonname) free (cur->ai_canonname);
|
||||
free (cur->ai_canonname);
|
||||
free (cur);
|
||||
}
|
||||
}
|
||||
|
@ -69,13 +69,15 @@ getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
|
||||
|
||||
if (*lineptr == NULL || *n == 0)
|
||||
{
|
||||
char *new_lineptr;
|
||||
*n = 120;
|
||||
*lineptr = (char *) realloc (*lineptr, *n);
|
||||
if (*lineptr == NULL)
|
||||
new_lineptr = (char *) realloc (*lineptr, *n);
|
||||
if (new_lineptr == NULL)
|
||||
{
|
||||
result = -1;
|
||||
goto unlock_return;
|
||||
}
|
||||
*lineptr = new_lineptr;
|
||||
}
|
||||
|
||||
for (;;)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Substitute for and wrapper around <unistd.h>.
|
||||
Copyright (C) 2004-2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2004-2008 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
@ -86,6 +86,26 @@ extern int dup2 (int oldfd, int newfd);
|
||||
#endif
|
||||
|
||||
|
||||
#if @GNULIB_ENVIRON@
|
||||
# if !@HAVE_DECL_ENVIRON@
|
||||
/* Set of environment variables and values. An array of strings of the form
|
||||
"VARIABLE=VALUE", terminated with a NULL. */
|
||||
# if defined __APPLE__ && defined __MACH__
|
||||
# include <crt_externs.h>
|
||||
# define environ (*_NSGetEnviron ())
|
||||
# else
|
||||
extern char **environ;
|
||||
# endif
|
||||
# endif
|
||||
#elif defined GNULIB_POSIXCHECK
|
||||
# undef environ
|
||||
# define environ \
|
||||
(GL_LINK_WARNING ("environ is unportable - " \
|
||||
"use gnulib module environ for portability"), \
|
||||
environ)
|
||||
#endif
|
||||
|
||||
|
||||
#if @GNULIB_FCHDIR@
|
||||
# if @REPLACE_FCHDIR@
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* xsize.h -- Checked size_t computations.
|
||||
|
||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
|
@ -1,49 +0,0 @@
|
||||
# absolute-header.m4 serial 7
|
||||
dnl Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Derek Price.
|
||||
|
||||
# gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...)
|
||||
# ---------------------------------------
|
||||
# Find the absolute name of a header file, assuming the header exists.
|
||||
# If the header were sys/inttypes.h, this macro would define
|
||||
# ABSOLUTE_SYS_INTTYPES_H to the `""' quoted absolute name of sys/inttypes.h
|
||||
# in config.h
|
||||
# (e.g. `#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"').
|
||||
# The three "///" are to pacify Sun C 5.8, which otherwise would say
|
||||
# "warning: #include of /usr/include/... may be non-portable".
|
||||
# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
|
||||
AC_DEFUN([gl_ABSOLUTE_HEADER],
|
||||
[AC_LANG_PREPROC_REQUIRE()dnl
|
||||
AC_FOREACH([gl_HEADER_NAME], [$1],
|
||||
[AS_VAR_PUSHDEF([gl_absolute_header],
|
||||
[gl_cv_absolute_]m4_quote(m4_defn([gl_HEADER_NAME])))dnl
|
||||
AC_CACHE_CHECK([absolute name of <]m4_quote(m4_defn([gl_HEADER_NAME]))[>],
|
||||
m4_quote(m4_defn([gl_absolute_header])),
|
||||
[AS_VAR_PUSHDEF([ac_header_exists],
|
||||
[ac_cv_header_]m4_quote(m4_defn([gl_HEADER_NAME])))dnl
|
||||
AC_CHECK_HEADERS_ONCE(m4_quote(m4_defn([gl_HEADER_NAME])))dnl
|
||||
if test AS_VAR_GET(ac_header_exists) = yes; then
|
||||
AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]])])
|
||||
dnl eval is necessary to expand ac_cpp.
|
||||
dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell.
|
||||
AS_VAR_SET(gl_absolute_header,
|
||||
[`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
|
||||
sed -n '\#/]m4_quote(m4_defn([gl_HEADER_NAME]))[#{
|
||||
s#.*"\(.*/]m4_quote(m4_defn([gl_HEADER_NAME]))[\)".*#\1#
|
||||
s#^/[^/]#//&#
|
||||
p
|
||||
q
|
||||
}'`])
|
||||
fi
|
||||
AS_VAR_POPDEF([ac_header_exists])dnl
|
||||
])dnl
|
||||
AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_quote(m4_defn([gl_HEADER_NAME]))),
|
||||
["AS_VAR_GET(gl_absolute_header)"],
|
||||
[Define this to an absolute name of <]m4_quote(m4_defn([gl_HEADER_NAME]))[>.])
|
||||
AS_VAR_POPDEF([gl_absolute_header])dnl
|
||||
])dnl
|
||||
])# gl_ABSOLUTE_HEADER
|
@ -1,5 +1,5 @@
|
||||
# fseeko.m4 serial 3
|
||||
dnl Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
# fseeko.m4 serial 4
|
||||
dnl Copyright (C) 2007-2008 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -9,6 +9,10 @@ AC_DEFUN([gl_FUNC_FSEEKO],
|
||||
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([gl_STDIN_LARGE_OFFSET])
|
||||
|
||||
dnl Persuade glibc <stdio.h> to declare fseeko().
|
||||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||||
|
||||
AC_CACHE_CHECK([for fseeko], [gl_cv_func_fseeko],
|
||||
[
|
||||
AC_TRY_LINK([#include <stdio.h>], [fseeko (stdin, 0, 0);],
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2004-2007 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software, distributed under the terms of the GNU
|
||||
# General Public License. As a special exception to the GNU General
|
||||
@ -15,11 +15,11 @@
|
||||
|
||||
|
||||
# Specification in the form of a command-line invocation:
|
||||
# gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=gl getaddrinfo getpass gettext physmem poll strndup strsep sys_stat useless-if-before-free vasprintf vc-list-files
|
||||
# gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=gl getaddrinfo getpass gettext mktempd physmem poll posix-shell strndup strsep sys_stat useless-if-before-free vasprintf vc-list-files
|
||||
|
||||
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
||||
gl_LOCAL_DIR([])
|
||||
gl_MODULES([getaddrinfo getpass gettext physmem poll strndup strsep sys_stat useless-if-before-free vasprintf vc-list-files])
|
||||
gl_MODULES([getaddrinfo getpass gettext mktempd physmem poll posix-shell strndup strsep sys_stat useless-if-before-free vasprintf vc-list-files])
|
||||
gl_AVOID([])
|
||||
gl_SOURCE_BASE([gnulib/lib])
|
||||
gl_M4_BASE([gnulib/m4])
|
||||
|
@ -1,5 +1,5 @@
|
||||
# DO NOT EDIT! GENERATED AUTOMATICALLY!
|
||||
# Copyright (C) 2004-2007 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software, distributed under the terms of the GNU
|
||||
# General Public License. As a special exception to the GNU General
|
||||
@ -65,6 +65,7 @@ AC_DEFUN([gl_INIT],
|
||||
AC_PROG_MKDIR_P
|
||||
gl_PHYSMEM
|
||||
gl_FUNC_POLL
|
||||
gl_POSIX_SHELL
|
||||
gl_FUNC_REALLOC_POSIX
|
||||
gl_STDLIB_MODULE_INDICATOR([realloc-posix])
|
||||
gl_SIZE_MAX
|
||||
@ -225,6 +226,7 @@ AC_DEFUN([gltests_LIBSOURCES], [
|
||||
AC_DEFUN([gl_FILE_LIST], [
|
||||
build-aux/config.rpath
|
||||
build-aux/link-warning.h
|
||||
build-aux/mktempd
|
||||
build-aux/useless-if-before-free
|
||||
build-aux/vc-list-files
|
||||
lib/alloca.in.h
|
||||
@ -278,7 +280,6 @@ AC_DEFUN([gl_FILE_LIST], [
|
||||
lib/vasprintf.c
|
||||
lib/wchar.in.h
|
||||
lib/xsize.h
|
||||
m4/absolute-header.m4
|
||||
m4/alloca.m4
|
||||
m4/arpa_inet_h.m4
|
||||
m4/codeset.m4
|
||||
@ -319,6 +320,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
||||
m4/physmem.m4
|
||||
m4/po.m4
|
||||
m4/poll.m4
|
||||
m4/posix-shell.m4
|
||||
m4/printf-posix.m4
|
||||
m4/progtest.m4
|
||||
m4/realloc.m4
|
||||
|
@ -1,5 +1,5 @@
|
||||
# include_next.m4 serial 4
|
||||
dnl Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
||||
# include_next.m4 serial 5
|
||||
dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -63,6 +63,9 @@ EOF
|
||||
# The three "///" are to pacify Sun C 5.8, which otherwise would say
|
||||
# "warning: #include of /usr/include/... may be non-portable".
|
||||
# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
|
||||
# Note: This macro assumes that the header file is not empty after
|
||||
# preprocessing, i.e. it does not only define preprocessor macros but also
|
||||
# provides some type/enum definitions or function/variable declarations.
|
||||
AC_DEFUN([gl_CHECK_NEXT_HEADERS],
|
||||
[
|
||||
AC_REQUIRE([gl_INCLUDE_NEXT])
|
||||
|
@ -1,5 +1,5 @@
|
||||
# lib-link.m4 serial 13 (gettext-0.17)
|
||||
dnl Copyright (C) 2001-2007 Free Software Foundation, Inc.
|
||||
# lib-link.m4 serial 15 (gettext-0.18)
|
||||
dnl Copyright (C) 2001-2008 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -18,9 +18,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
define([Name],[translit([$1],[./-], [___])])
|
||||
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([Name],[translit([$1],[./-], [___])])
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
||||
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
||||
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
||||
@ -39,8 +39,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
|
||||
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
|
||||
dnl results of this search when this library appears as a dependency.
|
||||
HAVE_LIB[]NAME=yes
|
||||
undefine([Name])
|
||||
undefine([NAME])
|
||||
popdef([NAME])
|
||||
popdef([Name])
|
||||
])
|
||||
|
||||
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
|
||||
@ -57,9 +57,9 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
define([Name],[translit([$1],[./-], [___])])
|
||||
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([Name],[translit([$1],[./-], [___])])
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
|
||||
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
||||
dnl accordingly.
|
||||
@ -95,8 +95,8 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
||||
AC_SUBST([LIB]NAME)
|
||||
AC_SUBST([LTLIB]NAME)
|
||||
AC_SUBST([LIB]NAME[_PREFIX])
|
||||
undefine([Name])
|
||||
undefine([NAME])
|
||||
popdef([NAME])
|
||||
popdef([Name])
|
||||
])
|
||||
|
||||
dnl Determine the platform dependent parameters needed to use rpath:
|
||||
@ -136,6 +136,27 @@ AC_DEFUN([AC_LIB_RPATH],
|
||||
:, enable_rpath=yes)
|
||||
])
|
||||
|
||||
dnl AC_LIB_FROMPACKAGE(name, package)
|
||||
dnl declares that libname comes from the given package. The configure file
|
||||
dnl will then not have a --with-libname-prefix option but a
|
||||
dnl --with-package-prefix option. Several libraries can come from the same
|
||||
dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
|
||||
dnl macro call that searches for libname.
|
||||
AC_DEFUN([AC_LIB_FROMPACKAGE],
|
||||
[
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
define([acl_frompackage_]NAME, [$2])
|
||||
popdef([NAME])
|
||||
pushdef([PACK],[$2])
|
||||
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
define([acl_libsinpackage_]PACKUP,
|
||||
m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
|
||||
popdef([PACKUP])
|
||||
popdef([PACK])
|
||||
])
|
||||
|
||||
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
|
||||
dnl the libraries corresponding to explicit and implicit dependencies.
|
||||
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
|
||||
@ -144,19 +165,23 @@ dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
|
||||
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
|
||||
dnl Autoconf >= 2.61 supports dots in --with options.
|
||||
define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
|
||||
pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
|
||||
dnl By default, look in $includedir and $libdir.
|
||||
use_additional=yes
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
])
|
||||
AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
|
||||
[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
|
||||
--without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir],
|
||||
AC_ARG_WITH(P_A_C_K[-prefix],
|
||||
[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
|
||||
--without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
|
||||
[
|
||||
if test "X$withval" = "Xno"; then
|
||||
use_additional=no
|
||||
@ -609,6 +634,11 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
|
||||
done
|
||||
fi
|
||||
popdef([P_A_C_K])
|
||||
popdef([PACKLIBS])
|
||||
popdef([PACKUP])
|
||||
popdef([PACK])
|
||||
popdef([NAME])
|
||||
])
|
||||
|
||||
dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
|
||||
|
58
gnulib/m4/posix-shell.m4
Normal file
58
gnulib/m4/posix-shell.m4
Normal file
@ -0,0 +1,58 @@
|
||||
# Find a POSIX-conforming shell.
|
||||
|
||||
# Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Written by Paul Eggert.
|
||||
|
||||
# If a POSIX-conforming shell can be found, set POSIX_SHELL and
|
||||
# PREFERABLY_POSIX_SHELL to it. If not, set POSIX_SHELL to the
|
||||
# empty string and PREFERABLY_POSIX_SHELL to '/bin/sh'.
|
||||
|
||||
AC_DEFUN([gl_POSIX_SHELL],
|
||||
[
|
||||
AC_CACHE_CHECK([for a shell that conforms to POSIX], [gl_cv_posix_shell],
|
||||
[gl_test_POSIX_SHELL='
|
||||
func_return () {
|
||||
(exit [$]1)
|
||||
}
|
||||
func_success () {
|
||||
func_return 0
|
||||
}
|
||||
func_failure () {
|
||||
func_return 1
|
||||
}
|
||||
func_ret_success () {
|
||||
return 0
|
||||
}
|
||||
func_ret_failure () {
|
||||
return 1
|
||||
}
|
||||
test "[$](echo foo)" = foo &&
|
||||
func_success &&
|
||||
! func_failure &&
|
||||
func_ret_success &&
|
||||
! func_ret_failure &&
|
||||
(set x && func_ret_success y && test x = "[$]1")
|
||||
'
|
||||
for gl_cv_posix_shell in \
|
||||
"$CONFIG_SHELL" "$SHELL" /bin/sh /bin/bash /bin/ksh /bin/sh5 no; do
|
||||
case $gl_cv_posix_shell in
|
||||
/*)
|
||||
"$gl_cv_posix_shell" -c "$gl_test_POSIX_shell" 2>/dev/null && break;;
|
||||
esac
|
||||
done])
|
||||
|
||||
if test "$gl_cv_posix_shell" != no; then
|
||||
POSIX_SHELL=$gl_cv_posix_shell
|
||||
PREFERABLY_POSIX_SHELL=$POSIX_SHELL
|
||||
else
|
||||
POSIX_SHELL=
|
||||
PREFERABLY_POSIX_SHELL=/bin/sh
|
||||
fi
|
||||
AC_SUBST([POSIX_SHELL])
|
||||
AC_SUBST([PREFERABLY_POSIX_SHELL])
|
||||
])
|
@ -1,5 +1,5 @@
|
||||
# unistd_h.m4 serial 10
|
||||
dnl Copyright (C) 2006-2007 Free Software Foundation, Inc.
|
||||
# unistd_h.m4 serial 11
|
||||
dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -34,6 +34,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
|
||||
[
|
||||
GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
|
||||
GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
|
||||
GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON])
|
||||
GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
|
||||
GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
|
||||
GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
|
||||
@ -49,6 +50,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
|
||||
HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE])
|
||||
HAVE_READLINK=1; AC_SUBST([HAVE_READLINK])
|
||||
HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP])
|
||||
HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON])
|
||||
HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
|
||||
HAVE_OS_H=0; AC_SUBST([HAVE_OS_H])
|
||||
HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H])
|
||||
|
@ -1,6 +1,6 @@
|
||||
## DO NOT EDIT! GENERATED AUTOMATICALLY!
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
# Copyright (C) 2004-2007 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software, distributed under the terms of the GNU
|
||||
# General Public License. As a special exception to the GNU General
|
||||
|
@ -71,7 +71,7 @@ typedef enum {
|
||||
* virDomainInfoPtr:
|
||||
*
|
||||
* a virDomainInfo is a structure filled by virDomainGetInfo() and extracting
|
||||
* runtime informations for a given active Domain
|
||||
* runtime information for a given active Domain
|
||||
*/
|
||||
|
||||
typedef struct _virDomainInfo virDomainInfo;
|
||||
@ -106,7 +106,7 @@ typedef enum {
|
||||
* virNodeInfoPtr:
|
||||
*
|
||||
* a virNodeInfo is a structure filled by virNodeGetInfo() and providing
|
||||
* the informations for the Node.
|
||||
* the information for the Node.
|
||||
*/
|
||||
|
||||
typedef struct _virNodeInfo virNodeInfo;
|
||||
@ -204,7 +204,7 @@ struct _virDomainBlockStats {
|
||||
long long rd_req; /* number of read requests */
|
||||
long long rd_bytes; /* number of read bytes */
|
||||
long long wr_req; /* number of write requests */
|
||||
long long wr_bytes; /* numbber of written bytes */
|
||||
long long wr_bytes; /* number of written bytes */
|
||||
long long errs; /* In Xen this returns the mysterious 'oo_req'. */
|
||||
};
|
||||
|
||||
@ -372,7 +372,7 @@ extern virConnectAuthPtr virConnectAuthPtrDefault;
|
||||
* version * 1,000,000 + minor * 1000 + micro
|
||||
*/
|
||||
|
||||
#define LIBVIR_VERSION_NUMBER 4001
|
||||
#define LIBVIR_VERSION_NUMBER 4002
|
||||
|
||||
int virGetVersion (unsigned long *libVer,
|
||||
const char *type,
|
||||
@ -469,7 +469,7 @@ int virDomainCoreDump (virDomainPtr domain,
|
||||
int flags);
|
||||
|
||||
/*
|
||||
* Domain runtime informations
|
||||
* Domain runtime information
|
||||
*/
|
||||
int virDomainGetInfo (virDomainPtr domain,
|
||||
virDomainInfoPtr info);
|
||||
@ -507,8 +507,8 @@ int virDomainGetMaxVcpus (virDomainPtr domain);
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
VIR_DOMAIN_XML_SECURE = 1, /* dump security sensitive informations too */
|
||||
VIR_DOMAIN_XML_INACTIVE = 2/* dump inactive domain informations */
|
||||
VIR_DOMAIN_XML_SECURE = 1, /* dump security sensitive information too */
|
||||
VIR_DOMAIN_XML_INACTIVE = 2/* dump inactive domain information */
|
||||
} virDomainXMLFlags;
|
||||
|
||||
char * virDomainGetXMLDesc (virDomainPtr domain,
|
||||
@ -744,7 +744,7 @@ int virNetworkDestroy (virNetworkPtr network);
|
||||
int virNetworkFree (virNetworkPtr network);
|
||||
|
||||
/*
|
||||
* Network informations
|
||||
* Network information
|
||||
*/
|
||||
const char* virNetworkGetName (virNetworkPtr network);
|
||||
int virNetworkGetUUID (virNetworkPtr network,
|
||||
|
@ -71,7 +71,7 @@ typedef enum {
|
||||
* virDomainInfoPtr:
|
||||
*
|
||||
* a virDomainInfo is a structure filled by virDomainGetInfo() and extracting
|
||||
* runtime informations for a given active Domain
|
||||
* runtime information for a given active Domain
|
||||
*/
|
||||
|
||||
typedef struct _virDomainInfo virDomainInfo;
|
||||
@ -106,7 +106,7 @@ typedef enum {
|
||||
* virNodeInfoPtr:
|
||||
*
|
||||
* a virNodeInfo is a structure filled by virNodeGetInfo() and providing
|
||||
* the informations for the Node.
|
||||
* the information for the Node.
|
||||
*/
|
||||
|
||||
typedef struct _virNodeInfo virNodeInfo;
|
||||
@ -204,7 +204,7 @@ struct _virDomainBlockStats {
|
||||
long long rd_req; /* number of read requests */
|
||||
long long rd_bytes; /* number of read bytes */
|
||||
long long wr_req; /* number of write requests */
|
||||
long long wr_bytes; /* numbber of written bytes */
|
||||
long long wr_bytes; /* number of written bytes */
|
||||
long long errs; /* In Xen this returns the mysterious 'oo_req'. */
|
||||
};
|
||||
|
||||
@ -469,7 +469,7 @@ int virDomainCoreDump (virDomainPtr domain,
|
||||
int flags);
|
||||
|
||||
/*
|
||||
* Domain runtime informations
|
||||
* Domain runtime information
|
||||
*/
|
||||
int virDomainGetInfo (virDomainPtr domain,
|
||||
virDomainInfoPtr info);
|
||||
@ -507,8 +507,8 @@ int virDomainGetMaxVcpus (virDomainPtr domain);
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
VIR_DOMAIN_XML_SECURE = 1, /* dump security sensitive informations too */
|
||||
VIR_DOMAIN_XML_INACTIVE = 2/* dump inactive domain informations */
|
||||
VIR_DOMAIN_XML_SECURE = 1, /* dump security sensitive information too */
|
||||
VIR_DOMAIN_XML_INACTIVE = 2/* dump inactive domain information */
|
||||
} virDomainXMLFlags;
|
||||
|
||||
char * virDomainGetXMLDesc (virDomainPtr domain,
|
||||
@ -744,7 +744,7 @@ int virNetworkDestroy (virNetworkPtr network);
|
||||
int virNetworkFree (virNetworkPtr network);
|
||||
|
||||
/*
|
||||
* Network informations
|
||||
* Network information
|
||||
*/
|
||||
const char* virNetworkGetName (virNetworkPtr network);
|
||||
int virNetworkGetUUID (virNetworkPtr network,
|
||||
|
@ -54,6 +54,7 @@ typedef enum {
|
||||
VIR_FROM_OPENVZ, /* Error from OpenVZ driver */
|
||||
VIR_FROM_XENXM, /* Error at Xen XM layer */
|
||||
VIR_FROM_STATS_LINUX, /* Error in the Linux Stats code */
|
||||
VIR_FROM_LXC, /* Error from Linux Container driver */
|
||||
VIR_FROM_STORAGE, /* Error from storage driver */
|
||||
} virErrorDomain;
|
||||
|
||||
|
@ -240,6 +240,10 @@ fi
|
||||
%doc docs/examples/python
|
||||
|
||||
%changelog
|
||||
* Tue Apr 8 2008 Daniel Veillard <veillard@redhat.com> - 0.4.2-1
|
||||
- release of 0.4.2
|
||||
- lots of bug fixes and small improvements
|
||||
|
||||
* Mon Mar 3 2008 Daniel Veillard <veillard@redhat.com> - 0.4.1-1
|
||||
- Release of 0.4.1
|
||||
- Storage APIs
|
||||
|
@ -1,29 +1,35 @@
|
||||
gnulib/lib/gai_strerror.c
|
||||
qemud/remote.c
|
||||
qemud/qemud.c
|
||||
qemud/remote.c
|
||||
src/conf.c
|
||||
src/console.c
|
||||
src/hash.c
|
||||
src/iptables.c
|
||||
src/libvirt.c
|
||||
src/lxc_conf.c
|
||||
src/lxc_driver.c
|
||||
src/openvz_conf.c
|
||||
src/openvz_driver.c
|
||||
src/proxy_internal.c
|
||||
src/qemu_conf.c
|
||||
src/qemu_driver.c
|
||||
src/remote_internal.c
|
||||
src/sexpr.c
|
||||
src/storage_backend.c
|
||||
src/storage_backend_fs.c
|
||||
src/storage_backend_logical.c
|
||||
src/storage_backend_iscsi.c
|
||||
src/storage_backend_disk.c
|
||||
src/storage_backend_fs.c
|
||||
src/storage_backend_iscsi.c
|
||||
src/storage_backend_logical.c
|
||||
src/storage_conf.c
|
||||
src/storage_driver.c
|
||||
src/sexpr.c
|
||||
src/test.c
|
||||
src/util.c
|
||||
src/uuid.c
|
||||
src/virsh.c
|
||||
src/virterror.c
|
||||
src/xen_internal.c
|
||||
src/xend_internal.c
|
||||
src/xm_internal.c
|
||||
src/xml.c
|
||||
src/xmlrpc.c
|
||||
src/xs_internal.c
|
||||
|
3501
po/bn_IN.po
3501
po/bn_IN.po
File diff suppressed because it is too large
Load Diff
3503
po/en_GB.po
3503
po/en_GB.po
File diff suppressed because it is too large
Load Diff
3502
po/eu_ES.po
3502
po/eu_ES.po
File diff suppressed because it is too large
Load Diff
3369
po/libvirt.pot
3369
po/libvirt.pot
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user