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

Ryan Gahagan rgahagan at cs.utexas.edu
Tue Dec 29 21:21:26 UTC 2020


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

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b301ac0a08..565ca680c9 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 nfsnode = NULL;
+    VIR_XPATH_NODE_AUTORESTORE(ctxt);
+
+    ctxt->node = node;
+
+    if ((nfsnode = virXPathNode("./nfs", ctxt))) {
+        src->nfs_user = virXMLPropString(nfsnode, "user");
+        src->nfs_group = virXMLPropString(nfsnode, "group");
+    }
+}
+
+
 static int
 virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr sourcenode,
                                           xmlXPathContextPtr ctxt,
@@ -8252,6 +8269,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);
@@ -23805,6 +23825,19 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
         virBufferAddLit(childBuf, "/>\n");
     }
 
+    if (src->protocol == VIR_STORAGE_NET_PROTOCOL_NFS &&
+        (src->nfs_user || src->nfs_group)) {
+        virBufferAddLit(childBuf, "<nfs");
+
+        if (src->nfs_user)
+            virBufferEscapeString(childBuf, " user='%s'", src->nfs_user);
+        if (src->nfs_group)
+            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