Re: [libvirt] [PATCH 1/7] Add public API stubs for virStorageVolCreateXMLFrom

2009-05-12 Thread Daniel Veillard
On Mon, May 04, 2009 at 01:42:56PM -0400, Cole Robinson wrote:
 
 Signed-off-by: Cole Robinson crobi...@redhat.com
 ---
  include/libvirt/libvirt.h|4 +++
  include/libvirt/libvirt.h.in |4 +++
  src/driver.h |6 
  src/libvirt.c|   61 -
  src/libvirt_public.syms  |5 +++
  5 files changed, 78 insertions(+), 2 deletions(-)
 
 diff --git a/include/libvirt/libvirt.h b/include/libvirt/libvirt.h
 index 30f559d..b1e45e4 100644
 --- a/include/libvirt/libvirt.h
 +++ b/include/libvirt/libvirt.h
 @@ -1047,6 +1047,10 @@ const char* virStorageVolGetKey
  (virStorageVolPtr vol);
  virStorageVolPtrvirStorageVolCreateXML  (virStoragePoolPtr 
 pool,
   const char *xmldesc,
   unsigned int flags);
 +virStorageVolPtrvirStorageVolCreateXMLFrom  (virStoragePoolPtr 
 pool,
 + const char *xmldesc,
 + unsigned int flags,
 + virStorageVolPtr 
 clonevol);

  just one nitpick, we usually keep flags at the end of the list of
arguments, so I would just swap flags and clonevol

 diff --git a/src/driver.h b/src/driver.h
 index c357b76..ff12ada 100644
 --- a/src/driver.h
 +++ b/src/driver.h
 @@ -586,6 +586,11 @@ typedef char *
  typedef char *
  (*virDrvStorageVolGetPath)   (virStorageVolPtr vol);
  
 +typedef virStorageVolPtr
 +(*virDrvStorageVolCreateXMLFrom) (virStoragePoolPtr pool,
 +  const char *xmldesc,
 +  unsigned int flags,
 +  virStorageVolPtr clone);

  same here, even if it's the internal one and less of a problem.

Except for this ACK, 

Daniel

-- 
Daniel Veillard  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
dan...@veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/

--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCH 1/7] Add public API stubs for virStorageVolCreateXMLFrom

2009-05-11 Thread Daniel P. Berrange
On Mon, May 04, 2009 at 01:42:56PM -0400, Cole Robinson wrote:
 
 Signed-off-by: Cole Robinson crobi...@redhat.com
 ---
  include/libvirt/libvirt.h|4 +++
  include/libvirt/libvirt.h.in |4 +++
  src/driver.h |6 
  src/libvirt.c|   61 -
  src/libvirt_public.syms  |5 +++
  5 files changed, 78 insertions(+), 2 deletions(-)

ACK, this looks good to me.


Daniel

 
 diff --git a/include/libvirt/libvirt.h b/include/libvirt/libvirt.h
 index 30f559d..b1e45e4 100644
 --- a/include/libvirt/libvirt.h
 +++ b/include/libvirt/libvirt.h
 @@ -1047,6 +1047,10 @@ const char* virStorageVolGetKey
  (virStorageVolPtr vol);
  virStorageVolPtrvirStorageVolCreateXML  (virStoragePoolPtr 
 pool,
   const char *xmldesc,
   unsigned int flags);
 +virStorageVolPtrvirStorageVolCreateXMLFrom  (virStoragePoolPtr 
 pool,
 + const char *xmldesc,
 + unsigned int flags,
 + virStorageVolPtr 
 clonevol);
  int virStorageVolDelete (virStorageVolPtr 
 vol,
   unsigned int flags);
  int virStorageVolRef(virStorageVolPtr 
 vol);
 diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
 index 2f7076f..f5cadb4 100644
 --- a/include/libvirt/libvirt.h.in
 +++ b/include/libvirt/libvirt.h.in
 @@ -1047,6 +1047,10 @@ const char* virStorageVolGetKey
  (virStorageVolPtr vol);
  virStorageVolPtrvirStorageVolCreateXML  (virStoragePoolPtr 
 pool,
   const char *xmldesc,
   unsigned int flags);
 +virStorageVolPtrvirStorageVolCreateXMLFrom  (virStoragePoolPtr 
 pool,
 + const char *xmldesc,
 + unsigned int flags,
 + virStorageVolPtr 
 clonevol);
  int virStorageVolDelete (virStorageVolPtr 
 vol,
   unsigned int flags);
  int virStorageVolRef(virStorageVolPtr 
 vol);
 diff --git a/src/driver.h b/src/driver.h
 index c357b76..ff12ada 100644
 --- a/src/driver.h
 +++ b/src/driver.h
 @@ -586,6 +586,11 @@ typedef char *
  typedef char *
  (*virDrvStorageVolGetPath)   (virStorageVolPtr vol);
  
 +typedef virStorageVolPtr
 +(*virDrvStorageVolCreateXMLFrom) (virStoragePoolPtr pool,
 +  const char *xmldesc,
 +  unsigned int flags,
 +  virStorageVolPtr clone);
  
  
  typedef struct _virStorageDriver virStorageDriver;
 @@ -633,6 +638,7 @@ struct _virStorageDriver {
  virDrvStorageVolLookupByKey volLookupByKey;
  virDrvStorageVolLookupByPath volLookupByPath;
  virDrvStorageVolCreateXML volCreateXML;
 +virDrvStorageVolCreateXMLFrom volCreateXMLFrom;
  virDrvStorageVolDelete volDelete;
  virDrvStorageVolGetInfo volGetInfo;
  virDrvStorageVolGetXMLDesc volGetXMLDesc;
 diff --git a/src/libvirt.c b/src/libvirt.c
 index ded18a7..5a51c45 100644
 --- a/src/libvirt.c
 +++ b/src/libvirt.c
 @@ -6767,6 +6767,65 @@ error:
  
  
  /**
 + * virStorageVolCreateXMLFrom:
 + * @pool: pointer to parent pool for the new volume
 + * @xmldesc: description of volume to create
 + * @flags: flags for creation (unused, pass 0)
 + * @clonevol: storage volume to use as input
 + *
 + * Create a storage volume in the parent pool, using the
 + * 'clonevol' volume as input. Information for the new
 + * volume (name, perms)  are passed via a typical volume
 + * XML description.
 + *
 + * return the storage volume, or NULL on error
 + */
 +virStorageVolPtr
 +virStorageVolCreateXMLFrom(virStoragePoolPtr pool,
 +   const char *xmldesc,
 +   unsigned int flags,
 +   virStorageVolPtr clonevol)
 +{
 +DEBUG(pool=%p, flags=%u, clonevol=%p, pool, flags, clonevol);
 +
 +virResetLastError();
 +
 +if (!VIR_IS_STORAGE_POOL(pool)) {
 +virLibConnError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__);
 +return (NULL);
 +}
 +
 +if (!VIR_IS_STORAGE_VOL(clonevol)) {
 +virLibConnError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__);
 +return (NULL);
 +}
 +
 +if (pool-conn-flags  VIR_CONNECT_RO ||
 + 

[libvirt] [PATCH 1/7] Add public API stubs for virStorageVolCreateXMLFrom

2009-05-04 Thread Cole Robinson

Signed-off-by: Cole Robinson crobi...@redhat.com
---
 include/libvirt/libvirt.h|4 +++
 include/libvirt/libvirt.h.in |4 +++
 src/driver.h |6 
 src/libvirt.c|   61 -
 src/libvirt_public.syms  |5 +++
 5 files changed, 78 insertions(+), 2 deletions(-)

diff --git a/include/libvirt/libvirt.h b/include/libvirt/libvirt.h
index 30f559d..b1e45e4 100644
--- a/include/libvirt/libvirt.h
+++ b/include/libvirt/libvirt.h
@@ -1047,6 +1047,10 @@ const char* virStorageVolGetKey 
(virStorageVolPtr vol);
 virStorageVolPtrvirStorageVolCreateXML  (virStoragePoolPtr 
pool,
  const char *xmldesc,
  unsigned int flags);
+virStorageVolPtrvirStorageVolCreateXMLFrom  (virStoragePoolPtr 
pool,
+ const char *xmldesc,
+ unsigned int flags,
+ virStorageVolPtr 
clonevol);
 int virStorageVolDelete (virStorageVolPtr vol,
  unsigned int flags);
 int virStorageVolRef(virStorageVolPtr vol);
diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
index 2f7076f..f5cadb4 100644
--- a/include/libvirt/libvirt.h.in
+++ b/include/libvirt/libvirt.h.in
@@ -1047,6 +1047,10 @@ const char* virStorageVolGetKey 
(virStorageVolPtr vol);
 virStorageVolPtrvirStorageVolCreateXML  (virStoragePoolPtr 
pool,
  const char *xmldesc,
  unsigned int flags);
+virStorageVolPtrvirStorageVolCreateXMLFrom  (virStoragePoolPtr 
pool,
+ const char *xmldesc,
+ unsigned int flags,
+ virStorageVolPtr 
clonevol);
 int virStorageVolDelete (virStorageVolPtr vol,
  unsigned int flags);
 int virStorageVolRef(virStorageVolPtr vol);
diff --git a/src/driver.h b/src/driver.h
index c357b76..ff12ada 100644
--- a/src/driver.h
+++ b/src/driver.h
@@ -586,6 +586,11 @@ typedef char *
 typedef char *
 (*virDrvStorageVolGetPath)   (virStorageVolPtr vol);
 
+typedef virStorageVolPtr
+(*virDrvStorageVolCreateXMLFrom) (virStoragePoolPtr pool,
+  const char *xmldesc,
+  unsigned int flags,
+  virStorageVolPtr clone);
 
 
 typedef struct _virStorageDriver virStorageDriver;
@@ -633,6 +638,7 @@ struct _virStorageDriver {
 virDrvStorageVolLookupByKey volLookupByKey;
 virDrvStorageVolLookupByPath volLookupByPath;
 virDrvStorageVolCreateXML volCreateXML;
+virDrvStorageVolCreateXMLFrom volCreateXMLFrom;
 virDrvStorageVolDelete volDelete;
 virDrvStorageVolGetInfo volGetInfo;
 virDrvStorageVolGetXMLDesc volGetXMLDesc;
diff --git a/src/libvirt.c b/src/libvirt.c
index ded18a7..5a51c45 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -6767,6 +6767,65 @@ error:
 
 
 /**
+ * virStorageVolCreateXMLFrom:
+ * @pool: pointer to parent pool for the new volume
+ * @xmldesc: description of volume to create
+ * @flags: flags for creation (unused, pass 0)
+ * @clonevol: storage volume to use as input
+ *
+ * Create a storage volume in the parent pool, using the
+ * 'clonevol' volume as input. Information for the new
+ * volume (name, perms)  are passed via a typical volume
+ * XML description.
+ *
+ * return the storage volume, or NULL on error
+ */
+virStorageVolPtr
+virStorageVolCreateXMLFrom(virStoragePoolPtr pool,
+   const char *xmldesc,
+   unsigned int flags,
+   virStorageVolPtr clonevol)
+{
+DEBUG(pool=%p, flags=%u, clonevol=%p, pool, flags, clonevol);
+
+virResetLastError();
+
+if (!VIR_IS_STORAGE_POOL(pool)) {
+virLibConnError(NULL, VIR_ERR_INVALID_STORAGE_POOL, __FUNCTION__);
+return (NULL);
+}
+
+if (!VIR_IS_STORAGE_VOL(clonevol)) {
+virLibConnError(NULL, VIR_ERR_INVALID_STORAGE_VOL, __FUNCTION__);
+return (NULL);
+}
+
+if (pool-conn-flags  VIR_CONNECT_RO ||
+clonevol-conn-flags  VIR_CONNECT_RO) {
+virLibConnError(pool-conn, VIR_ERR_OPERATION_DENIED, __FUNCTION__);
+goto error;
+}
+
+if (pool-conn-storageDriver 
+