From: Pavel Hrdina Date: Tue, 7 Aug 2018 11:01:40 +0000 (+0200) Subject: util: introduce virStorageSourceInitiator functions X-Git-Tag: v4.7.0-rc1~277 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c0324abe20537b843db3a157a116bb276155fc9;p=thirdparty%2Flibvirt.git util: introduce virStorageSourceInitiator functions The same code would be used for storage pools and domain disks. Reviewed-by: Ján Tomko Signed-off-by: Pavel Hrdina --- diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 70dfcc5e29..32ed5a09f9 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2856,6 +2856,10 @@ virStorageSourceGetActualType; virStorageSourceGetSecurityLabelDef; virStorageSourceHasBacking; virStorageSourceInitChainElement; +virStorageSourceInitiatorClear; +virStorageSourceInitiatorCopy; +virStorageSourceInitiatorFormatXML; +virStorageSourceInitiatorParseXML; virStorageSourceIsBacking; virStorageSourceIsBlockLocal; virStorageSourceIsEmpty; diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 56082f34e9..fb79ceddd0 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -4314,6 +4314,40 @@ virStorageSourcePrivateDataFormatRelPath(virStorageSourcePtr src, return 0; } +void +virStorageSourceInitiatorParseXML(xmlXPathContextPtr ctxt, + virStorageSourceInitiatorDefPtr initiator) +{ + initiator->iqn = virXPathString("string(./initiator/iqn/@name)", ctxt); +} + +void +virStorageSourceInitiatorFormatXML(virStorageSourceInitiatorDefPtr initiator, + virBufferPtr buf) +{ + if (!initiator->iqn) + return; + + virBufferAddLit(buf, "\n"); + virBufferAdjustIndent(buf, 2); + virBufferEscapeString(buf, "\n", initiator->iqn); + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "\n"); +} + +int +virStorageSourceInitiatorCopy(virStorageSourceInitiatorDefPtr dest, + const virStorageSourceInitiatorDef *src) +{ + return VIR_STRDUP(dest->iqn, src->iqn); +} + +void +virStorageSourceInitiatorClear(virStorageSourceInitiatorDefPtr initiator) +{ + VIR_FREE(initiator->iqn); +} + static bool virStorageFileIsInitialized(const virStorageSource *src) { diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h index d9e27a4a5f..b6013431cc 100644 --- a/src/util/virstoragefile.h +++ b/src/util/virstoragefile.h @@ -492,6 +492,21 @@ int virStorageSourcePrivateDataFormatRelPath(virStorageSourcePtr src, virBufferPtr buf); +void +virStorageSourceInitiatorParseXML(xmlXPathContextPtr ctxt, + virStorageSourceInitiatorDefPtr initiator); + +void +virStorageSourceInitiatorFormatXML(virStorageSourceInitiatorDefPtr initiator, + virBufferPtr buf); + +int +virStorageSourceInitiatorCopy(virStorageSourceInitiatorDefPtr dest, + const virStorageSourceInitiatorDef *src); + +void +virStorageSourceInitiatorClear(virStorageSourceInitiatorDefPtr initiator); + int virStorageFileInit(virStorageSourcePtr src); int virStorageFileInitAs(virStorageSourcePtr src, uid_t uid, gid_t gid);