Re: [PATCH 05/18] virDomainHostdevSubsysSCSIiSCSIDefParseXML: Parse private data of virStorageSource

2020-07-15 Thread Ján Tomko

On a Friday in 2020, Peter Krempa wrote:

We store the config of an iSCSI hostdev in a virStorageSource structure.
Parse the private data portion.

Signed-off-by: Peter Krempa 
---
src/conf/domain_conf.c | 39 +--
1 file changed, 29 insertions(+), 10 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index bda9375f13..ceaf73772d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8283,7 +8283,9 @@ virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr 
sourcenode,
static int
virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr sourcenode,
   virDomainHostdevSubsysSCSIPtr def,
-   xmlXPathContextPtr ctxt)
+   xmlXPathContextPtr ctxt,
+   unsigned int flags,
+   virDomainXMLOptionPtr xmlopt)
{
int auth_secret_usage = -1;
xmlNodePtr cur;
@@ -8348,13 +8350,27 @@ virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr 
sourcenode,
}
cur = cur->next;
}
+
+if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) &&


Extra parentheses.


+xmlopt && xmlopt->privateData.storageParse) {
+VIR_XPATH_NODE_AUTORESTORE(ctxt);
+
+ctxt->node = sourcenode;
+
+if ((ctxt->node = virXPathNode("./privateData", ctxt)) &&
+xmlopt->privateData.storageParse(ctxt, iscsisrc->src) < 0)
+return -1;
+}
+
return 0;
}



Reviewed-by: Ján Tomko 

Jano


signature.asc
Description: PGP signature


[PATCH 05/18] virDomainHostdevSubsysSCSIiSCSIDefParseXML: Parse private data of virStorageSource

2020-07-10 Thread Peter Krempa
We store the config of an iSCSI hostdev in a virStorageSource structure.
Parse the private data portion.

Signed-off-by: Peter Krempa 
---
 src/conf/domain_conf.c | 39 +--
 1 file changed, 29 insertions(+), 10 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index bda9375f13..ceaf73772d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8283,7 +8283,9 @@ virDomainHostdevSubsysSCSIHostDefParseXML(xmlNodePtr 
sourcenode,
 static int
 virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr sourcenode,
virDomainHostdevSubsysSCSIPtr def,
-   xmlXPathContextPtr ctxt)
+   xmlXPathContextPtr ctxt,
+   unsigned int flags,
+   virDomainXMLOptionPtr xmlopt)
 {
 int auth_secret_usage = -1;
 xmlNodePtr cur;
@@ -8348,13 +8350,27 @@ virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr 
sourcenode,
 }
 cur = cur->next;
 }
+
+if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) &&
+xmlopt && xmlopt->privateData.storageParse) {
+VIR_XPATH_NODE_AUTORESTORE(ctxt);
+
+ctxt->node = sourcenode;
+
+if ((ctxt->node = virXPathNode("./privateData", ctxt)) &&
+xmlopt->privateData.storageParse(ctxt, iscsisrc->src) < 0)
+return -1;
+}
+
 return 0;
 }

 static int
 virDomainHostdevSubsysSCSIDefParseXML(xmlNodePtr sourcenode,
   virDomainHostdevSubsysSCSIPtr scsisrc,
-  xmlXPathContextPtr ctxt)
+  xmlXPathContextPtr ctxt,
+  unsigned int flags,
+  virDomainXMLOptionPtr xmlopt)
 {
 g_autofree char *protocol = NULL;

@@ -8370,7 +8386,8 @@ virDomainHostdevSubsysSCSIDefParseXML(xmlNodePtr 
sourcenode,
 }

 if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI)
-return virDomainHostdevSubsysSCSIiSCSIDefParseXML(sourcenode, scsisrc, 
ctxt);
+return virDomainHostdevSubsysSCSIiSCSIDefParseXML(sourcenode, scsisrc, 
ctxt,
+  flags, xmlopt);

 return virDomainHostdevSubsysSCSIHostDefParseXML(sourcenode, scsisrc);
 }
@@ -8461,7 +8478,8 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
   xmlXPathContextPtr ctxt,
   const char *type,
   virDomainHostdevDefPtr def,
-  unsigned int flags)
+  unsigned int flags,
+  virDomainXMLOptionPtr xmlopt)
 {
 xmlNodePtr sourcenode;
 int backend;
@@ -8633,7 +8651,7 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
 break;

 case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI:
-if (virDomainHostdevSubsysSCSIDefParseXML(sourcenode, scsisrc, ctxt) < 
0)
+if (virDomainHostdevSubsysSCSIDefParseXML(sourcenode, scsisrc, ctxt, 
flags, xmlopt) < 0)
 return -1;
 break;

@@ -11645,7 +11663,8 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
   xmlXPathContextPtr ctxt,
   virDomainNetDefPtr parent,
   virDomainActualNetDefPtr *def,
-  unsigned int flags)
+  unsigned int flags,
+  virDomainXMLOptionPtr xmlopt)
 {
 virDomainActualNetDefPtr actual = NULL;
 int ret = -1;
@@ -11750,7 +11769,7 @@ virDomainActualNetDefParseXML(xmlNodePtr node,
 addrtype = g_strdup("usb");
 hostdev->mode = VIR_DOMAIN_HOSTDEV_MODE_SUBSYS;
 if (virDomainHostdevDefParseXMLSubsys(node, ctxt, addrtype,
-  hostdev, flags) < 0) {
+  hostdev, flags, xmlopt) < 0) {
 goto error;
 }
 } else if (actual->type == VIR_DOMAIN_NET_TYPE_BRIDGE ||
@@ -12124,7 +12143,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
def->type == VIR_DOMAIN_NET_TYPE_NETWORK &&
virXMLNodeNameEqual(cur, "actual")) {
 if (virDomainActualNetDefParseXML(cur, ctxt, def,
-  , flags) < 0) {
+  , flags, xmlopt) < 0) 
{
 goto error;
 }
 } else if (virXMLNodeNameEqual(cur, "bandwidth")) {
@@ -12388,7 +12407,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
 addrtype = g_strdup("usb");
 hostdev->mode = VIR_DOMAIN_HOSTDEV_MODE_SUBSYS;
 if