From 6536c00f251ee379126f71f2a385adb0c027138e Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Thu, 23 Feb 2006 10:13:55 +0000 Subject: [PATCH] * include/libvirt.h[.in] src/libvirt.c src/xend_internal.[ch] src/libvirt_sym.version: added virDomainLookupByUUID and virDomainGetUUID to be able to use the persistant UUID names * docs//*: rebuilt the docs following the API extension Daniel --- ChangeLog | 7 ++ TODO | 2 +- docs/APIchunk0.html | 73 ++++------------ docs/APIchunk1.html | 149 +++++++++++++++------------------ docs/APIchunk2.html | 95 +++++++++++++++++++-- docs/APIconstructors.html | 1 + docs/APIfiles.html | 2 + docs/APIfunctions.html | 6 +- docs/APIsymbols.html | 2 + docs/html/libvirt-libvirt.html | 10 ++- docs/libvirt-api.xml | 14 ++++ docs/libvirt-refs.xml | 60 +++++++++++-- include/libvirt.h | 4 + include/libvirt.h.in | 4 + include/libvirt/libvirt.h | 4 + include/libvirt/libvirt.h.in | 4 + src/libvirt.c | 116 ++++++++++++++++++++++--- src/libvirt_sym.version | 2 + src/xend_internal.c | 18 ++-- src/xend_internal.h | 8 +- 20 files changed, 407 insertions(+), 174 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6c9a671be2..5df0db7898 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Thu Feb 23 05:13:03 EST 2006 Daniel Veillard + + * include/libvirt.h[.in] src/libvirt.c src/xend_internal.[ch] + src/libvirt_sym.version: added virDomainLookupByUUID and + virDomainGetUUID to be able to use the persistant UUID names + * docs//*: rebuilt the docs following the API extension + Wed Feb 22 11:53:45 CET 2006 Daniel Veillard * configure.in libvirt.spec.in docs/Makefile.am docs/devhelp/*: diff --git a/TODO b/TODO index 869dc1802d..b5548c2947 100644 --- a/TODO +++ b/TODO @@ -2,7 +2,6 @@ Absolute TODOs: - thread protection, reentrancy, refcounting, etc ... - Error API. probably similar to libxml2 structured API - extract error messages from the Xend rpc -- UUID based lookup and naming TODO: - Create() API, how do we best keep flexibility and allow various @@ -45,3 +44,4 @@ Done: - renamed to libvirt - the CreateLinux() API is a first step toward a final Create() - documentation and examples on using the toolkit +- UUID based lookup and naming diff --git a/docs/APIchunk0.html b/docs/APIchunk0.html index ec44579b6e..c4d92e1f45 100644 --- a/docs/APIchunk0.html +++ b/docs/APIchunk0.html @@ -1,8 +1,9 @@ -API Alphabetic Index A-f for libvirt

API Alphabetic Index A-f for libvirt

A-f -g-r -s-z +API Alphabetic Index A-e for libvirt

API Alphabetic Index A-e for libvirt

A-e +f-o +p-y +z-z

Letter A:

ABI
_virDomainInfo
APIs
virConnectOpenReadOnly
After
virDomainSave
@@ -19,6 +20,7 @@ virDomainGetID
virDomainGetName
virDomainGetOSType
+virDomainGetUUID

Letter H:

Hypervisor
virConnectClose
virConnectGetType
virConnectGetVersion
@@ -39,6 +41,7 @@ virDomainGetXMLDesc
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID
virDomainSetMaxMemory
virGetVersion
Note
virDomainGetInfo
@@ -68,7 +71,10 @@ virDomainSuspend
Try
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID

Letter U:

UTF-8
virDomainGetXMLDesc
+
UUID
virDomainGetUUID
+virDomainLookupByUUID
Use
virDomainSave
virDomainSuspend

Letter X:

XML
virDomainCreateLinux
@@ -111,6 +117,7 @@
argument
virConnectOpen
virConnectOpenReadOnly
array
virConnectListDomains
+virDomainGetUUID
assumed
virGetVersion
available
_virDomainInfo
virConnectOpenReadOnly
@@ -120,11 +127,13 @@
based
virDomainCreateLinux
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID
being
virDomainShutdown
below
_virDomainInfo
block
_virDomainKernel
but
virDomainShutdown
virDomainSuspend
+
bytes
virDomainGetUUID

Letter c:

call
_virDomainInfo
virConnectGetVersion
virDomainDestroy
@@ -158,6 +167,7 @@ virDomainGetInfo
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID
virDomainRestore
contents
virDomainSave
control
virConnectOpenReadOnly
@@ -189,6 +199,7 @@ virDomainGetID
virDomainGetMaxMemory
virDomainGetOSType
+virDomainGetUUID
virDomainGetXMLDesc
virGetVersion
especially
virConnectClose
@@ -196,56 +207,8 @@ virConnectGetVersion
virDomainGetInfo
extraction
virDomainGetXMLDesc
-

Letter f:

failure
virDomainCreateLinux
-virDomainDestroy
-virDomainFree
-virDomainGetInfo
-virDomainLookupByID
-virDomainLookupByName
-virDomainRestore
-virDomainResume
-virDomainSave
-virDomainSetMaxMemory
-virDomainShutdown
-virDomainSuspend
-virGetVersion
-
file
virDomainSave
-
filename
_virDomainKernel
-
find
virDomainLookupByID
-
first
virConnectOpen
-virConnectOpenReadOnly
-
flags
virDomainGetXMLDesc
-
for
_virDomainInfo
-virConnectGetVersion
-virDomainGetID
-virDomainGetName
-virDomainLookupByName
-virDomainSave
-virDomainShutdown
-virGetVersion
-
format
virGetVersion
-
found
virConnectListDomains
-virConnectNumOfDomains
-
free
virDomainGetXMLDesc
-
freed
virDomainDestroy
-virDomainFree
-
from
_virDomainInfo
-virDomainResume
-
frozen
virDomainResume
-virDomainSuspend
-
full
_virDomainInfo
-
function
virConnectClose
-virConnectOpen
-virConnectOpenReadOnly
-virDomainCreateLinux
-virDomainDestroy
-virDomainResume
-virDomainSetMaxMemory
-virDomainSuspend
-
functionalities
virConnectOpenReadOnly
-
further
virConnectClose
-virDomainSuspend
-

A-f -g-r -s-z +

A-e +f-o +p-y +z-z

diff --git a/docs/APIchunk1.html b/docs/APIchunk1.html index 2afaba5b4a..1e9f639a93 100644 --- a/docs/APIchunk1.html +++ b/docs/APIchunk1.html @@ -1,15 +1,69 @@ -API Alphabetic Index g-r for libvirt

API Alphabetic Index g-r for libvirt

A-f -g-r -s-z -

Letter g:

general
virDomainShutdown
+API Alphabetic Index f-o for libvirt

API Alphabetic Index f-o for libvirt

A-e +f-o +p-y +z-z +

Letter f:

failure
virDomainCreateLinux
+virDomainDestroy
+virDomainFree
+virDomainGetInfo
+virDomainLookupByID
+virDomainLookupByName
+virDomainLookupByUUID
+virDomainRestore
+virDomainResume
+virDomainSave
+virDomainSetMaxMemory
+virDomainShutdown
+virDomainSuspend
+virGetVersion
+
file
virDomainSave
+
filename
_virDomainKernel
+
find
virDomainLookupByID
+
first
virConnectOpen
+virConnectOpenReadOnly
+
flags
virDomainGetXMLDesc
+
for
_virDomainInfo
+virConnectGetVersion
+virDomainGetID
+virDomainGetName
+virDomainGetUUID
+virDomainLookupByName
+virDomainLookupByUUID
+virDomainSave
+virDomainShutdown
+virGetVersion
+
format
virGetVersion
+
found
virConnectListDomains
+virConnectNumOfDomains
+
free
virDomainGetXMLDesc
+
freed
virDomainDestroy
+virDomainFree
+
from
_virDomainInfo
+virDomainResume
+
frozen
virDomainResume
+virDomainSuspend
+
full
_virDomainInfo
+
function
virConnectClose
+virConnectOpen
+virConnectOpenReadOnly
+virDomainCreateLinux
+virDomainDestroy
+virDomainResume
+virDomainSetMaxMemory
+virDomainSuspend
+
functionalities
virConnectOpenReadOnly
+
further
virConnectClose
+virDomainSuspend
+

Letter g:

general
virDomainShutdown
get
virConnectOpen
virConnectOpenReadOnly
virDomainGetInfo
virDomainGetMaxMemory
given
virDomainDestroy
virDomainLookupByName
+virDomainLookupByUUID
guest
virDomainCreateLinux
virDomainShutdown

Letter h:

have
virGetVersion
@@ -26,6 +80,7 @@ virDomainGetID
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID
virDomainRestore
virDomainSetMaxMemory
virDomainSuspend
@@ -43,6 +98,7 @@
interaction
virConnectClose
its
virDomainGetName
virDomainLookupByName
+virDomainLookupByUUID
virDomainSave

Letter k:

kept
virDomainFree
kernel
_virDomainKernel
@@ -64,6 +120,7 @@
listed
virDomainSave
long
_virDomainInfo
lookup
virDomainLookupByName
+virDomainLookupByUUID

Letter m:

major
virConnectGetVersion
virGetVersion
maximum
_virDomainInfo
@@ -101,6 +158,7 @@ virDomainGetOSType
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID
not
virConnectClose
virConnectGetVersion
virDomainDestroy
@@ -122,9 +180,11 @@ virDomainGetMaxMemory
virDomainGetName
virDomainGetOSType
+virDomainGetUUID
virDomainGetXMLDesc
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID
virDomainResume
virDomainSave
virDomainSetMaxMemory
@@ -145,81 +205,8 @@ virConnectGetVersion
virGetVersion
output
virDomainSave
-

Letter p:

padding
_virDomainInfo
-
parameters
_virDomainKernel
-
partial
virDomainGetInfo
-
pass
virConnectOpen
-virConnectOpenReadOnly
-
path
virDomainRestore
-virDomainSave
-
physical
virDomainGetMaxMemory
-virDomainSetMaxMemory
-
pointer
virConnectClose
-virConnectGetType
-virConnectGetVersion
-virConnectListDomains
-virConnectNumOfDomains
-virConnectOpen
-virConnectOpenReadOnly
-virDomainCreateLinux
-virDomainGetInfo
-virDomainGetName
-virDomainLookupByID
-virDomainLookupByName
-virDomainRestore
-
pointing
_virDomainKernel
-
private
_virDomainInfo
-
priviledged
virConnectGetVersion
-virDomainCreateLinux
-virDomainDestroy
-virDomainResume
-virDomainSetMaxMemory
-virDomainSuspend
-
problem
virDomainSave
-
process
virDomainResume
-virDomainSuspend
-
protection
_virDomainInfo
-
providing
LIBVIR_VERSION_NUMBER
-
public
virDomainGetName
-
publicly
_virDomainInfo
-

Letter r:

ramdisk
_virDomainKernel
-
reactivate
virDomainSuspend
-
reboot
virDomainShutdown
-
relaunch
virDomainGetXMLDesc
-
release
virConnectGetVersion
-virGetVersion
-
request
virDomainShutdown
-
requires
virDomainCreateLinux
-virDomainDestroy
-virDomainResume
-virDomainSetMaxMemory
-virDomainSuspend
-
reserved
virDomainGetMaxMemory
-virDomainSetMaxMemory
-
resources
virDomainDestroy
-virDomainSuspend
-
restarted
virDomainResume
-
restore
virDomainRestore
-virDomainSave
-
restricted
virConnectOpenReadOnly
-
return
virConnectGetVersion
-virDomainDestroy
-virGetVersion
-
returned
virDomainCreateLinux
-virDomainGetXMLDesc
-virGetVersion
-
returns
virConnectGetVersion
-
reused
virDomainGetXMLDesc
-
root
_virDomainKernel
-
running
_virDomainInfo
-virConnectClose
-virConnectGetVersion
-virDomainDestroy
-virDomainFree
-virDomainSave
-
runs
virDomainGetMaxMemory
-virDomainSetMaxMemory
-

A-f -g-r -s-z +

A-e +f-o +p-y +z-z

diff --git a/docs/APIchunk2.html b/docs/APIchunk2.html index a390d636de..80da2803f5 100644 --- a/docs/APIchunk2.html +++ b/docs/APIchunk2.html @@ -1,9 +1,86 @@ -API Alphabetic Index s-z for libvirt

API Alphabetic Index s-z for libvirt

A-f -g-r -s-z -

Letter s:

same
virDomainGetName
+API Alphabetic Index p-y for libvirt

API Alphabetic Index p-y for libvirt

A-e +f-o +p-y +z-z +

Letter p:

padding
_virDomainInfo
+
parameters
_virDomainKernel
+
partial
virDomainGetInfo
+
pass
virConnectOpen
+virConnectOpenReadOnly
+
path
virDomainRestore
+virDomainSave
+
physical
virDomainGetMaxMemory
+virDomainSetMaxMemory
+
pointer
virConnectClose
+virConnectGetType
+virConnectGetVersion
+virConnectListDomains
+virConnectNumOfDomains
+virConnectOpen
+virConnectOpenReadOnly
+virDomainCreateLinux
+virDomainGetInfo
+virDomainGetName
+virDomainGetUUID
+virDomainLookupByID
+virDomainLookupByName
+virDomainLookupByUUID
+virDomainRestore
+
pointing
_virDomainKernel
+
private
_virDomainInfo
+
priviledged
virConnectGetVersion
+virDomainCreateLinux
+virDomainDestroy
+virDomainResume
+virDomainSetMaxMemory
+virDomainSuspend
+
problem
virDomainSave
+
process
virDomainResume
+virDomainSuspend
+
protection
_virDomainInfo
+
providing
LIBVIR_VERSION_NUMBER
+
public
virDomainGetName
+
publicly
_virDomainInfo
+

Letter r:

ramdisk
_virDomainKernel
+
reactivate
virDomainSuspend
+
reboot
virDomainShutdown
+
relaunch
virDomainGetXMLDesc
+
release
virConnectGetVersion
+virGetVersion
+
request
virDomainShutdown
+
requires
virDomainCreateLinux
+virDomainDestroy
+virDomainResume
+virDomainSetMaxMemory
+virDomainSuspend
+
reserved
virDomainGetMaxMemory
+virDomainSetMaxMemory
+
resources
virDomainDestroy
+virDomainSuspend
+
restarted
virDomainResume
+
restore
virDomainRestore
+virDomainSave
+
restricted
virConnectOpenReadOnly
+
return
virConnectGetVersion
+virDomainDestroy
+virGetVersion
+
returned
virDomainCreateLinux
+virDomainGetXMLDesc
+virGetVersion
+
returns
virConnectGetVersion
+
reused
virDomainGetXMLDesc
+
root
_virDomainKernel
+
running
_virDomainInfo
+virConnectClose
+virConnectGetVersion
+virDomainDestroy
+virDomainFree
+virDomainSave
+
runs
virDomainGetMaxMemory
+virDomainSetMaxMemory
+

Letter s:

same
virDomainGetName
save
virDomainSave
saved
virDomainRestore
saving
virDomainSave
@@ -34,6 +111,7 @@
string
virConnectGetType
virDomainGetName
virDomainGetOSType
+virDomainLookupByUUID
structure
_virDomainInfo
virDomainDestroy
virDomainFree
@@ -42,6 +120,7 @@ virDomainDestroy
virDomainFree
virDomainGetInfo
+virDomainGetUUID
virDomainRestore
virDomainResume
virDomainSave
@@ -126,8 +205,8 @@

Letter x:

xen
virConnectOpen
xenstore
_virDomainInfo

Letter y:

yet
virDomainGetXMLDesc
-

Letter z:

zero
virConnectGetType
-

A-f -g-r -s-z +

A-e +f-o +p-y +z-z

diff --git a/docs/APIconstructors.html b/docs/APIconstructors.html index 2c4b7e7654..28c11b5c30 100644 --- a/docs/APIconstructors.html +++ b/docs/APIconstructors.html @@ -7,4 +7,5 @@

Type virDomainPtr:

virDomainCreateLinux
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID

diff --git a/docs/APIfiles.html b/docs/APIfiles.html index d939e973fe..f04c727050 100644 --- a/docs/APIfiles.html +++ b/docs/APIfiles.html @@ -39,6 +39,7 @@ virDomainGetMaxMemory
virDomainGetName
virDomainGetOSType
+virDomainGetUUID
virDomainGetXMLDesc
virDomainInfo
virDomainInfoPtr
@@ -46,6 +47,7 @@ virDomainKernelPtr
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID
virDomainPtr
virDomainRestart
virDomainRestore
diff --git a/docs/APIfunctions.html b/docs/APIfunctions.html index dd24cec462..c31ccfde69 100644 --- a/docs/APIfunctions.html +++ b/docs/APIfunctions.html @@ -1,6 +1,8 @@ -List of function manipulating types in libvirt

List of function manipulating types in libvirt

Type int *:

virConnectListDomains
+List of function manipulating types in libvirt

List of function manipulating types in libvirt

Type const unsigned char *:

virDomainLookupByUUID
+

Type int *:

virConnectListDomains
+

Type unsigned char *:

virDomainGetUUID

Type unsigned int:

virDomainCreateLinux

Type unsigned long:

virDomainSetMaxMemory

Type unsigned long *:

virConnectGetVersion
@@ -13,6 +15,7 @@ virDomainCreateLinux
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID
virDomainRestore

Type virDomainInfoPtr:

virDomainGetInfo

Type virDomainPtr:

virDomainDestroy
@@ -22,6 +25,7 @@ virDomainGetMaxMemory
virDomainGetName
virDomainGetOSType
+virDomainGetUUID
virDomainGetXMLDesc
virDomainResume
virDomainSave
diff --git a/docs/APIsymbols.html b/docs/APIsymbols.html index ead255a998..c78bcd994b 100644 --- a/docs/APIsymbols.html +++ b/docs/APIsymbols.html @@ -39,6 +39,7 @@ virDomainGetMaxMemory
virDomainGetName
virDomainGetOSType
+virDomainGetUUID
virDomainGetXMLDesc
virDomainInfo
virDomainInfoPtr
@@ -46,6 +47,7 @@ virDomainKernelPtr
virDomainLookupByID
virDomainLookupByName
+virDomainLookupByUUID
virDomainPtr
virDomainRestart
virDomainRestore
diff --git a/docs/html/libvirt-libvirt.html b/docs/html/libvirt-libvirt.html index 0d183a85fa..18b6a955ce 100644 --- a/docs/html/libvirt-libvirt.html +++ b/docs/html/libvirt-libvirt.html @@ -29,9 +29,11 @@ The content of this structure is not made public by the API.

unsigned long	virDomainGetMaxMemory	(virDomainPtr domain)
const char *	virDomainGetName	(virDomainPtr domain)
char *	virDomainGetOSType		(virDomainPtr domain)
+
int	virDomainGetUUID		(virDomainPtr domain, 
unsigned char * uuid)
char *	virDomainGetXMLDesc		(virDomainPtr domain, 
int flags)
virDomainPtr	virDomainLookupByID	(virConnectPtr conn, 
int id)
virDomainPtr	virDomainLookupByName	(virConnectPtr conn, 
const char * name)
+
virDomainPtr	virDomainLookupByUUID	(virConnectPtr conn, 
const unsigned char * uuid)
int	virDomainRestore		(virConnectPtr conn, 
const char * from)
int	virDomainResume			(virDomainPtr domain)
int	virDomainSave			(virDomainPtr domain, 
const char * to)
@@ -118,13 +120,17 @@ The content of this structure is not made public by the API.

Get the public name for that domain

domain:a domain object
Returns:a pointer to the name or NULL, the string need not be deallocated its lifetime will be the same as the domain object.

Function: virDomainGetOSType

char *	virDomainGetOSType		(virDomainPtr domain)

Get the type of domain operation system.

-
domain:a domain object
Returns:the new string or NULL in case of error

Function: virDomainGetXMLDesc

char *	virDomainGetXMLDesc		(virDomainPtr domain, 
int flags)
+
domain:a domain object
Returns:the new string or NULL in case of error

Function: virDomainGetUUID

int	virDomainGetUUID		(virDomainPtr domain, 
unsigned char * uuid)
+

Get the UUID for a domain

+
domain:a domain object
uuid:pointer to a 16 bytes array
Returns:-1 in case of error, 0 in case of success

Function: virDomainGetXMLDesc

char *	virDomainGetXMLDesc		(virDomainPtr domain, 
int flags)

Provide an XML description of the domain. The description may be reused later to relaunch the domain with virDomainCreateLinux().

domain:a domain object
flags:and OR'ed set of extraction flags, not used yet
Returns:a 0 terminated UTF-8 encoded XML instance, or NULL in case of error. the caller must free() the returned value.

Function: virDomainLookupByID

virDomainPtr	virDomainLookupByID	(virConnectPtr conn, 
int id)

Try to find a domain based on the hypervisor ID number

conn:pointer to the hypervisor connection
id:the domain ID number
Returns:a new domain object or NULL in case of failure

Function: virDomainLookupByName

virDomainPtr	virDomainLookupByName	(virConnectPtr conn, 
const char * name)

Try to lookup a domain on the given hypervisor based on its name.

-
conn:pointer to the hypervisor connection
name:name for the domain
Returns:a new domain object or NULL in case of failure

Function: virDomainRestore

int	virDomainRestore		(virConnectPtr conn, 
const char * from)
+
conn:pointer to the hypervisor connection
name:name for the domain
Returns:a new domain object or NULL in case of failure

Function: virDomainLookupByUUID

virDomainPtr	virDomainLookupByUUID	(virConnectPtr conn, 
const unsigned char * uuid)
+

Try to lookup a domain on the given hypervisor based on its UUID.

+
conn:pointer to the hypervisor connection
uuid:the UUID string for the domain
Returns:a new domain object or NULL in case of failure

Function: virDomainRestore

int	virDomainRestore		(virConnectPtr conn, 
const char * from)

This method will restore a domain saved to disk by virDomainSave().

conn:pointer to the hypervisor connection
from:path to the
Returns:0 in case of success and -1 in case of failure.

Function: virDomainResume

int	virDomainResume			(virDomainPtr domain)

Resume an suspended domain, the process is restarted from the state where it was frozen by calling virSuspendDomain(). This function may requires priviledged access

diff --git a/docs/libvirt-api.xml b/docs/libvirt-api.xml index b4873fa31b..33e4606b91 100644 --- a/docs/libvirt-api.xml +++ b/docs/libvirt-api.xml @@ -44,8 +44,10 @@ + + @@ -201,6 +203,12 @@ + + Get the UUID for a domain + + + + Provide an XML description of the domain. The description may be reused later to relaunch the domain with virDomainCreateLinux(). @@ -219,6 +227,12 @@ + + Try to lookup a domain on the given hypervisor based on its UUID. + + + + This method will restore a domain saved to disk by virDomainSave(). diff --git a/docs/libvirt-refs.xml b/docs/libvirt-refs.xml index 0dc7cd6f29..1e7892f7e9 100644 --- a/docs/libvirt-refs.xml +++ b/docs/libvirt-refs.xml @@ -40,6 +40,7 @@ + @@ -47,6 +48,7 @@ + @@ -105,6 +107,7 @@ + @@ -112,6 +115,7 @@ + @@ -139,12 +143,19 @@ + + + + + + + @@ -164,6 +175,7 @@ + @@ -177,6 +189,7 @@ + @@ -226,6 +239,7 @@ + @@ -233,6 +247,7 @@ + @@ -295,6 +310,7 @@ + @@ -343,6 +359,7 @@ + @@ -406,12 +423,17 @@ + + + + + @@ -497,6 +519,7 @@ + @@ -518,6 +541,7 @@ + @@ -532,6 +556,9 @@ + + + @@ -596,6 +623,7 @@ + @@ -659,6 +687,7 @@ + @@ -674,6 +703,8 @@ + + @@ -682,6 +713,7 @@ + @@ -711,7 +743,9 @@ + + @@ -759,8 +793,6 @@ - - @@ -774,6 +806,7 @@ + @@ -798,6 +831,7 @@ + @@ -835,6 +869,7 @@ + @@ -892,6 +927,7 @@ + @@ -961,6 +997,7 @@ + @@ -990,9 +1027,11 @@ + + @@ -1029,6 +1068,8 @@ + + @@ -1062,8 +1103,10 @@ + + @@ -1177,8 +1220,6 @@ - - @@ -1244,6 +1285,7 @@ + @@ -1256,6 +1298,7 @@ + @@ -1440,6 +1483,8 @@ + + @@ -1447,9 +1492,10 @@ - - - + + + + diff --git a/include/libvirt.h b/include/libvirt.h index 31658c329b..76d65959c1 100644 --- a/include/libvirt.h +++ b/include/libvirt.h @@ -206,6 +206,8 @@ virDomainPtr virDomainLookupByName (virConnectPtr conn, const char *name); virDomainPtr virDomainLookupByID (virConnectPtr conn, int id); +virDomainPtr virDomainLookupByUUID (virConnectPtr conn, + const unsigned char *uuid); int virDomainShutdown (virDomainPtr domain); int virDomainDestroy (virDomainPtr domain); int virDomainFree (virDomainPtr domain); @@ -235,6 +237,8 @@ int virDomainGetInfo (virDomainPtr domain, */ const char * virDomainGetName (virDomainPtr domain); unsigned int virDomainGetID (virDomainPtr domain); +int virDomainGetUUID (virDomainPtr domain, + unsigned char *uuid); char * virDomainGetOSType (virDomainPtr domain); unsigned long virDomainGetMaxMemory (virDomainPtr domain); int virDomainSetMaxMemory (virDomainPtr domain, diff --git a/include/libvirt.h.in b/include/libvirt.h.in index 1fe5015232..5d5b4d8e6f 100644 --- a/include/libvirt.h.in +++ b/include/libvirt.h.in @@ -206,6 +206,8 @@ virDomainPtr virDomainLookupByName (virConnectPtr conn, const char *name); virDomainPtr virDomainLookupByID (virConnectPtr conn, int id); +virDomainPtr virDomainLookupByUUID (virConnectPtr conn, + const char *uuid); int virDomainShutdown (virDomainPtr domain); int virDomainDestroy (virDomainPtr domain); int virDomainFree (virDomainPtr domain); @@ -235,6 +237,8 @@ int virDomainGetInfo (virDomainPtr domain, */ const char * virDomainGetName (virDomainPtr domain); unsigned int virDomainGetID (virDomainPtr domain); +int virDomainGetUUID (virDomainPtr domain, + char *uuid); char * virDomainGetOSType (virDomainPtr domain); unsigned long virDomainGetMaxMemory (virDomainPtr domain); int virDomainSetMaxMemory (virDomainPtr domain, diff --git a/include/libvirt/libvirt.h b/include/libvirt/libvirt.h index 31658c329b..76d65959c1 100644 --- a/include/libvirt/libvirt.h +++ b/include/libvirt/libvirt.h @@ -206,6 +206,8 @@ virDomainPtr virDomainLookupByName (virConnectPtr conn, const char *name); virDomainPtr virDomainLookupByID (virConnectPtr conn, int id); +virDomainPtr virDomainLookupByUUID (virConnectPtr conn, + const unsigned char *uuid); int virDomainShutdown (virDomainPtr domain); int virDomainDestroy (virDomainPtr domain); int virDomainFree (virDomainPtr domain); @@ -235,6 +237,8 @@ int virDomainGetInfo (virDomainPtr domain, */ const char * virDomainGetName (virDomainPtr domain); unsigned int virDomainGetID (virDomainPtr domain); +int virDomainGetUUID (virDomainPtr domain, + unsigned char *uuid); char * virDomainGetOSType (virDomainPtr domain); unsigned long virDomainGetMaxMemory (virDomainPtr domain); int virDomainSetMaxMemory (virDomainPtr domain, diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index 1fe5015232..5d5b4d8e6f 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -206,6 +206,8 @@ virDomainPtr virDomainLookupByName (virConnectPtr conn, const char *name); virDomainPtr virDomainLookupByID (virConnectPtr conn, int id); +virDomainPtr virDomainLookupByUUID (virConnectPtr conn, + const char *uuid); int virDomainShutdown (virDomainPtr domain); int virDomainDestroy (virDomainPtr domain); int virDomainFree (virDomainPtr domain); @@ -235,6 +237,8 @@ int virDomainGetInfo (virDomainPtr domain, */ const char * virDomainGetName (virDomainPtr domain); unsigned int virDomainGetID (virDomainPtr domain); +int virDomainGetUUID (virDomainPtr domain, + char *uuid); char * virDomainGetOSType (virDomainPtr domain); unsigned long virDomainGetMaxMemory (virDomainPtr domain); int virDomainSetMaxMemory (virDomainPtr domain, diff --git a/src/libvirt.c b/src/libvirt.c index 85468e8d5f..489599a5d3 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -319,11 +319,10 @@ virConnectListDomains(virConnectPtr conn, int *ids, int maxids) { if ((ids == NULL) || (maxids <= 0)) return(-1); - /* TODO: implement the API with Xend interfaces */ idlist = xend_get_domains(conn); if (idlist != NULL) { for (ret = 0,i = 0;(idlist[i] != NULL) && (ret < maxids);i++) { - id = xend_get_domain_id(conn, idlist[i]); + id = xend_get_domain_ids(conn, idlist[i], NULL); if (id >= 0) ids[ret++] = (int) id; } @@ -611,6 +610,7 @@ virDomainLookupByID(virConnectPtr conn, int id) { char *path = NULL; virDomainPtr ret; char *name = NULL; + unsigned char uuid[16]; if (!VIR_IS_CONNECT(conn)) return(NULL); @@ -629,7 +629,7 @@ virDomainLookupByID(virConnectPtr conn, int id) { if (names != NULL) { while (*tmp != NULL) { - ident = xend_get_domain_id(conn, *tmp); + ident = xend_get_domain_ids(conn, *tmp, &uuid[0]); if (ident == id) { name = strdup(*tmp); break; @@ -642,24 +642,88 @@ virDomainLookupByID(virConnectPtr conn, int id) { ret = (virDomainPtr) malloc(sizeof(virDomain)); if (ret == NULL) { - if (path != NULL) - free(path); - return(NULL); + goto error; } ret->magic = VIR_DOMAIN_MAGIC; ret->conn = conn; ret->handle = id; ret->path = path; - if (name == NULL) + if (name == NULL) { ret->name = virDomainDoStoreQuery(ret, "name"); - else + } else { ret->name = name; + memcpy(&ret->uuid[0], uuid, 16); + } if (ret->name == NULL) { - if (path != NULL) - free(path); - free(ret); + goto error; + } + + return(ret); +error: + if (ret != NULL) + free(path); + if (path != NULL) + free(path); + if (path != NULL) + free(path); + return(NULL); +} + +/** + * virDomainLookupByUUID: + * @conn: pointer to the hypervisor connection + * @uuid: the UUID string for the domain + * + * Try to lookup a domain on the given hypervisor based on its UUID. + * + * Returns a new domain object or NULL in case of failure + */ +virDomainPtr +virDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid) { + virDomainPtr ret; + char *name = NULL; + char **names; + char **tmp; + unsigned char ident[16]; + int id; + + if (!VIR_IS_CONNECT(conn)) + return(NULL); + if (uuid == NULL) + return(NULL); + names = xend_get_domains(conn); + tmp = names; + + if (names == NULL) { + TODO /* try to fallback to xenstore lookup */ return(NULL); } + while (*tmp != NULL) { + id = xend_get_domain_ids(conn, *tmp, &ident[0]); + if (id >= 0) { + if (!memcmp(uuid, ident, 16)) { + name = strdup(*tmp); + break; + } + } + tmp++; + } + free(names); + + if (name == NULL) + return(NULL); + + ret = (virDomainPtr) malloc(sizeof(virDomain)); + if (ret == NULL) { + if (name != NULL) + free(name); + return(NULL); + } + ret->magic = VIR_DOMAIN_MAGIC; + ret->conn = conn; + ret->handle = id; + ret->name = name; + memcpy(ret->uuid, uuid, 16); return(ret); } @@ -996,6 +1060,36 @@ virDomainGetName(virDomainPtr domain) { return(domain->name); } +/** + * virDomainGetUUID: + * @domain: a domain object + * @uuid: pointer to a 16 bytes array + * + * Get the UUID for a domain + * + * Returns -1 in case of error, 0 in case of success + */ +int +virDomainGetUUID(virDomainPtr domain, unsigned char *uuid) { + if ((!VIR_IS_DOMAIN(domain)) || (uuid == NULL)) + return(-1); + if (domain->handle == 0) + memset(uuid, 0, 16); + else { + if ((domain->uuid[0] == 0) && (domain->uuid[1] == 0) && + (domain->uuid[2] == 0) && (domain->uuid[3] == 0) && + (domain->uuid[4] == 0) && (domain->uuid[5] == 0) && + (domain->uuid[6] == 0) && (domain->uuid[7] == 0) && + (domain->uuid[8] == 0) && (domain->uuid[9] == 0) && + (domain->uuid[10] == 0) && (domain->uuid[11] == 0) && + (domain->uuid[12] == 0) && (domain->uuid[13] == 0) && + (domain->uuid[14] == 0) && (domain->uuid[15] == 0)) + xend_get_domain_ids(domain->conn, domain->name, &domain->uuid[0]); + memcpy(uuid, &domain->uuid[0], 16); + } + return(0); +} + /** * virDomainGetID: * @domain: a domain object diff --git a/src/libvirt_sym.version b/src/libvirt_sym.version index 271048892b..a8f1ed670a 100644 --- a/src/libvirt_sym.version +++ b/src/libvirt_sym.version @@ -11,6 +11,7 @@ virDomainDestroy; virDomainFree; virDomainGetID; + virDomainGetUUID; virDomainGetInfo; virDomainGetMaxMemory; virDomainGetName; @@ -18,6 +19,7 @@ virDomainGetXMLDesc; virDomainLookupByID; virDomainLookupByName; + virDomainLookupByUUID; virDomainRestore; virDomainResume; virDomainSave; diff --git a/src/xend_internal.c b/src/xend_internal.c index 2fba8a57ce..2a3dfdd8d6 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -1910,21 +1910,25 @@ xend_get_domain(virConnectPtr xend, const char *domname) } /** - * xend_get_domain_id: + * xend_get_domain_ids: * @xend: A xend instance - * @name: The name of the domain + * @domname: The name of the domain + * @uuid: return value for the UUID if not NULL * * This method looks up the id of a domain * * Returns the id on success; -1 (with errno) on error */ int -xend_get_domain_id(virConnectPtr xend, const char *domname) +xend_get_domain_ids(virConnectPtr xend, const char *domname, + unsigned char *uuid) { struct sexpr *root; const char *value; int ret = -1; + if (uuid != NULL) + memset(uuid, 0, 16); root = sexpr_get(xend, "/xend/domain/%s?detail=1", domname); if (root == NULL) goto error; @@ -1933,10 +1937,14 @@ xend_get_domain_id(virConnectPtr xend, const char *domname) if (value == NULL) goto error; ret = strtol(value, NULL, 0); - if ((ret == 0) && (value[0] != '0')) + if ((ret == 0) && (value[0] != '0')) { ret = -1; + } else if (uuid != NULL) { + char **ptr = (char **) &uuid; + sexpr_uuid(ptr, root, "domain/uuid"); + } - error: +error: sexpr_free(root); return(ret); } diff --git a/src/xend_internal.h b/src/xend_internal.h index 3a24d48f88..ed254f8595 100644 --- a/src/xend_internal.h +++ b/src/xend_internal.h @@ -761,12 +761,14 @@ struct xend_domain *xend_get_domain(virConnectPtr xend, * \brief Lookup the id of a domain * \param xend A xend instance * \param name The name of the domain + * \param uuid pointer to store a copy of the uuid * \return the id number on success; -1 (with errno) on error * - * This method looks up the id of a domain + * This method looks up the ids of a domain */ -int xend_get_domain_id(virConnectPtr xend, - const char *name); +int xend_get_domain_ids(virConnectPtr xend, + const char *name, + unsigned char *uuid); /** * \brief Get status informations for a domain -- GitLab