Add a test that allows providing the parent fabric_wwn in the input XML
in order to create the vHBA.
This also fixes a mixed setting of the fabric_wwn field from the read
test driver XML strings.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/conf/node_device_conf.c | 8 ++++++++
tests/fchosttest.c | 14 ++++++++++++++
2 files changed, 22 insertions(+)
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
index f73fede..414ab47 100644
--- a/src/conf/node_device_conf.c
+++ b/src/conf/node_device_conf.c
@@ -37,9 +37,12 @@
#include "virbuffer.h"
#include "viruuid.h"
#include "virrandom.h"
+#include "virlog.h"
#define VIR_FROM_THIS VIR_FROM_NODEDEV
+VIR_LOG_INIT("conf.node_device_conf");
+
VIR_ENUM_IMPL(virNodeDevCap, VIR_NODE_DEV_CAP_LAST,
"system",
"pci",
@@ -1033,6 +1036,11 @@ virNodeDevCapSCSIHostParseXML(xmlXPathContextPtr ctxt,
}
}
+ if (virNodeDevCapsDefParseString("string(./fabric_wwn[1])",
+ ctxt,
+ &data->scsi_host.fabric_wwn) < 0)
+ VIR_DEBUG("No fabric_wwn defined for '%s'",
def->name);
+
ctxt->node = orignode2;
} else {
diff --git a/tests/fchosttest.c b/tests/fchosttest.c
index d083104..51fdcbd 100644
--- a/tests/fchosttest.c
+++ b/tests/fchosttest.c
@@ -64,6 +64,17 @@ static const char test9_xml[] =
" </capability>"
"</device>";
+/* virNodeDeviceCreateXML using "<parent fabric_wwn='%s'/>" to
find the
+ * vport capable HBA */
+static const char test10_xml[] =
+"<device>"
+" <parent fabric_wwn='2000000043214321'/>"
+" <capability type='scsi_host'>"
+" <capability type='fc_host'>"
+" </capability>"
+" </capability>"
+"</device>";
+
/* Test virIsVHBACapable */
static int
test1(const void *data ATTRIBUTE_UNUSED)
@@ -296,6 +307,9 @@ mymain(void)
if (virTestRun("manageVHBAByNodeDevice-parent-wwn",
manageVHBAByNodeDevice,
test9_xml) < 0)
ret = -1;
+ if (virTestRun("manageVHBAByNodeDevice-parent-fabric-wwn",
+ manageVHBAByNodeDevice, test10_xml) < 0)
+ ret = -1;
cleanup:
VIR_FREE(fchost_prefix);
--
2.7.4