Re: [PATCH v4 2/4] conf: Support to parse rbd namespace attribute

2020-08-21 Thread Daniel P . Berrangé
On Fri, Aug 07, 2020 at 05:49:13PM +0800, Han Han wrote:
> Signed-off-by: Han Han 
> ---
>  docs/formatdomain.rst | 5 -
>  docs/schemas/domaincommon.rng | 3 +++
>  src/conf/domain_conf.c| 4 
>  src/util/virstoragefile.h | 1 +
>  4 files changed, 12 insertions(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrangé 


Regards,
Daniel
-- 
|: https://berrange.com  -o-https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o-https://fstop138.berrange.com :|
|: https://entangle-photo.org-o-https://www.instagram.com/dberrange :|



[PATCH v4 2/4] conf: Support to parse rbd namespace attribute

2020-08-07 Thread Han Han
Signed-off-by: Han Han 
---
 docs/formatdomain.rst | 5 -
 docs/schemas/domaincommon.rng | 3 +++
 src/conf/domain_conf.c| 4 
 src/util/virstoragefile.h | 1 +
 4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index 218f0c1718..431abc6f56 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -2256,7 +2256,7 @@ paravirtualized driver is specified via the ``disk`` 
element.
  
  

-   
+   
  
  
  
@@ -2497,6 +2497,9 @@ paravirtualized driver is specified via the ``disk`` 
element.
   For protocols ``http`` and ``https`` an optional attribute ``query``
   specifies the query string. ( :since:`Since 6.2.0` )
 
+  For protocol ``rbd``, an optional attribute ``namespace`` specifies the
+  namespace of a rbd pool. ( :since:`Since 6.7.0 and QEMU 5.0.0` )
+
   For "iscsi" ( :since:`since 1.0.4` ), the ``name`` attribute may include 
a
   logical unit number, separated from the target's name by a slash (e.g.,
   ``iqn.2013-07.com.example:iscsi-pool/1``). If not specified, the default
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 0d0dcbc5ce..ee09da3c7c 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -1762,6 +1762,9 @@
 
   
 
+
+  
+
 
   
 
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index ef67efa1da..4b5e752c6f 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -9601,6 +9601,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
 
 /* config file currently only works with remote disks */
 src->configFile = virXPathString("string(./config/@file)", ctxt);
+src->ns = virXPathString("string(./@namespace)", ctxt);
 
 if (src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTP ||
 src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS)
@@ -25083,6 +25084,9 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
 path = g_strdup_printf("%s/%s", src->volume, src->path);
 
 virBufferEscapeString(attrBuf, " name='%s'", path ? path : src->path);
+if (src->ns)
+virBufferEscapeString(attrBuf, " namespace='%s'", src->ns);
+
 virBufferEscapeString(attrBuf, " query='%s'", src->query);
 
 if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&
diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
index f73b3ee005..f027989462 100644
--- a/src/util/virstoragefile.h
+++ b/src/util/virstoragefile.h
@@ -284,6 +284,7 @@ struct _virStorageSource {
 char *snapshot; /* for storage systems supporting internal snapshots */
 char *configFile; /* some storage systems use config file as part of
  the source definition */
+char *ns; /* for the storage systems supporting namespace */
 char *query; /* query string for HTTP based protocols */
 size_t nhosts;
 virStorageNetHostDefPtr hosts;
-- 
2.27.0