[PATCH v2 4/7] conf: Added NFS XML format/parse methods

Ryan Gahagan rgahagan at cs.utexas.edu
Wed Jan 6 21:32:29 UTC 2021


Signed-off-by: Ryan Gahagan <rgahagan at cs.utexas.edu>
---
 src/conf/domain_conf.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 453e06491e..96ee009058 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -6888,6 +6888,23 @@ virDomainStorageNetworkParseHosts(xmlNodePtr node,
 }
 
 
+static void
+virDomainStorageNetworkParseNFS(xmlNodePtr node,
+                               xmlXPathContextPtr ctxt,
+                               virStorageSourcePtr src)
+{
+    xmlNodePtr nfsIdentityNode = NULL;
+    VIR_XPATH_NODE_AUTORESTORE(ctxt);
+
+    ctxt->node = node;
+
+    if ((nfsIdentityNode = virXPathNode("./identity", ctxt))) {
+        src->nfs_user = virXMLPropString(nfsIdentityNode, "user");
+        src->nfs_group = virXMLPropString(nfsIdentityNode, "group");
+    }
+}
+
+
 static int
 virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr sourcenode,
                                           xmlXPathContextPtr ctxt,
@@ -8250,6 +8267,9 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
     if (virDomainStorageNetworkParseHosts(node, ctxt, &src->hosts, &src->nhosts) < 0)
         return -1;
 
+    if (src->protocol == VIR_STORAGE_NET_PROTOCOL_NFS)
+        virDomainStorageNetworkParseNFS(node, ctxt, src);
+
     virStorageSourceNetworkAssignDefaultPorts(src);
 
     virStorageSourceInitiatorParseXML(ctxt, &src->initiator);
@@ -23851,6 +23871,17 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
         virBufferAddLit(childBuf, "/>\n");
     }
 
+    if (src->protocol == VIR_STORAGE_NET_PROTOCOL_NFS &&
+        (src->nfs_user || src->nfs_group)) {
+        virBufferAddLit(childBuf, "<identity");
+
+        virBufferEscapeString(childBuf, " user='%s'", src->nfs_user);
+        virBufferEscapeString(childBuf, " group='%s'", src->nfs_group);
+
+        virBufferAddLit(childBuf, "/>\n");
+    }
+
+
     virBufferEscapeString(childBuf, "<snapshot name='%s'/>\n", src->snapshot);
     virBufferEscapeString(childBuf, "<config file='%s'/>\n", src->configFile);
 
-- 
2.29.2




More information about the libvir-list mailing list