From nobody Mon May 6 05:02:35 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1490886770272150.98329307909796; Thu, 30 Mar 2017 08:12:50 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9EF1DC057FA7; Thu, 30 Mar 2017 15:12:01 +0000 (UTC) Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 71A8217AFA; Thu, 30 Mar 2017 15:12:01 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id B4C865EC62; Thu, 30 Mar 2017 15:11:57 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2UFBsSP004162 for ; Thu, 30 Mar 2017 11:11:54 -0400 Received: by smtp.corp.redhat.com (Postfix) id 834CC7DE2E; Thu, 30 Mar 2017 15:11:54 +0000 (UTC) Received: from angien.brq.redhat.com (dhcp129-47.brq.redhat.com [10.34.129.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id D8DE65B82D; Thu, 30 Mar 2017 15:11:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9EF1DC057FA7 Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 9EF1DC057FA7 From: Peter Krempa To: libvir-list@redhat.com Date: Thu, 30 Mar 2017 17:12:45 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH v2 1/5] storage: util: Add boolean differentiating between gluster lookup type X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Thu, 30 Mar 2017 15:12:02 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The native gluster pool source list data differs from the data used for attaching gluster volumes as netfs pools. Currently the only difference was the format. Since native pools don't use it and later there will be more difference add a boolean to swithc between the types instead. --- src/storage/storage_backend_fs.c | 5 ++--- src/storage/storage_backend_gluster.c | 3 +-- src/storage/storage_util.c | 10 +++++++--- src/storage/storage_util.h | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend= _fs.c index 1fc127a8c..a1b45e149 100644 --- a/src/storage/storage_backend_fs.c +++ b/src/storage/storage_backend_fs.c @@ -185,9 +185,8 @@ virStorageBackendFileSystemNetFindPoolSources(virConnec= tPtr conn ATTRIBUTE_UNUSE retNFS =3D virStorageBackendFileSystemNetFindNFSPoolSources(&state); - retGluster =3D virStorageBackendFindGlusterPoolSources(state.host, - VIR_STORAGE_POOL_= NETFS_GLUSTERFS, - &state.list, fals= e); + retGluster =3D virStorageBackendFindGlusterPoolSources(state.host, &st= ate.list, + true, false); if (retGluster < 0) goto cleanup; diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_ba= ckend_gluster.c index 52c9ee372..cde7f9edb 100644 --- a/src/storage/storage_backend_gluster.c +++ b/src/storage/storage_backend_gluster.c @@ -513,8 +513,7 @@ virStorageBackendGlusterFindPoolSources(virConnectPtr c= onn ATTRIBUTE_UNUSED, } if ((rc =3D virStorageBackendFindGlusterPoolSources(source->hosts[0].n= ame, - 0, /* currently igno= red */ - &list, true)) < 0) + &list, false, true))= < 0) goto cleanup; if (rc =3D=3D 0) { diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index 7687eb89a..cad706199 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -2839,18 +2839,21 @@ virStorageBackendDeleteLocal(virConnectPtr conn ATT= RIBUTE_UNUSED, /** * virStorageBackendFindGlusterPoolSources: * @host: host to detect volumes on - * @pooltype: src->format is set to this value * @list: list of storage pool sources to be filled + * @netfs: lookup will be used with netfs pools * @report: report error if the 'gluster' cli tool is missing * * Looks up gluster volumes on @host and fills them to @list. * + * If @netfs is specified the data is tweaked so that it can be used with = netfs + * type pools. Otherwise the data is for use with native gluster pools. + * * Returns number of volumes on the host on success, or -1 on error. */ int virStorageBackendFindGlusterPoolSources(const char *host, - int pooltype, virStoragePoolSourceListPtr list, + bool netfs, bool report) { char *glusterpath =3D NULL; @@ -2918,7 +2921,8 @@ virStorageBackendFindGlusterPoolSources(const char *h= ost, if (VIR_STRDUP(src->hosts[0].name, host) < 0) goto cleanup; - src->format =3D pooltype; + if (netfs) + src->format =3D VIR_STORAGE_POOL_NETFS_GLUSTERFS; } ret =3D nnodes; diff --git a/src/storage/storage_util.h b/src/storage/storage_util.h index fa3b6522c..741baa78d 100644 --- a/src/storage/storage_util.h +++ b/src/storage/storage_util.h @@ -94,8 +94,8 @@ int virStorageBackendRefreshLocal(virConnectPtr conn, virStoragePoolObjPtr pool); int virStorageBackendFindGlusterPoolSources(const char *host, - int pooltype, virStoragePoolSourceListPtr li= st, + bool netfs, bool report); bool virStorageBackendDeviceIsEmpty(const char *devpath, --=20 2.12.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon May 6 05:02:35 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1490888118635640.8200761386066; Thu, 30 Mar 2017 08:35:18 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C97BD6AAC4; Thu, 30 Mar 2017 15:21:57 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9E217820D4; Thu, 30 Mar 2017 15:21:57 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 52BCF18523CC; Thu, 30 Mar 2017 15:21:57 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2UFBt7M004169 for ; Thu, 30 Mar 2017 11:11:55 -0400 Received: by smtp.corp.redhat.com (Postfix) id 904567DE2E; Thu, 30 Mar 2017 15:11:55 +0000 (UTC) Received: from angien.brq.redhat.com (dhcp129-47.brq.redhat.com [10.34.129.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id E4CFC8387A; Thu, 30 Mar 2017 15:11:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C97BD6AAC4 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C97BD6AAC4 From: Peter Krempa To: libvir-list@redhat.com Date: Thu, 30 Mar 2017 17:12:46 +0200 Message-Id: <2bca845759296131caf8263719e80df6dcc607d3.1490886728.git.pkrempa@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH v2 2/5] storage: util: Split out the gluster volume extraction code into new function X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 30 Mar 2017 15:21:58 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" To allow testing of the algorithm, split out the extractor into a separate helper. --- src/storage/storage_util.c | 95 +++++++++++++++++++++++++++---------------= ---- src/storage/storage_util.h | 4 ++ 2 files changed, 59 insertions(+), 40 deletions(-) diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index cad706199..3b55bafc0 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -2836,6 +2836,60 @@ virStorageBackendDeleteLocal(virConnectPtr conn ATTR= IBUTE_UNUSED, } +int +virStorageUtilGlusterExtractPoolSources(const char *host, + const char *xml, + virStoragePoolSourceListPtr list, + bool netfs) +{ + xmlDocPtr doc =3D NULL; + xmlXPathContextPtr ctxt =3D NULL; + xmlNodePtr *nodes =3D NULL; + virStoragePoolSource *src =3D NULL; + size_t i; + int nnodes; + int ret =3D -1; + + if (!(doc =3D virXMLParseStringCtxt(xml, _("(gluster_cli_output)"), &c= txt))) + goto cleanup; + + if ((nnodes =3D virXPathNodeSet("//volumes/volume", ctxt, &nodes)) < 0) + goto cleanup; + + for (i =3D 0; i < nnodes; i++) { + ctxt->node =3D nodes[i]; + + if (!(src =3D virStoragePoolSourceListNewSource(list))) + goto cleanup; + + if (!(src->dir =3D virXPathString("string(//name)", ctxt))) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("failed to extract gluster volume name")); + goto cleanup; + } + + if (VIR_ALLOC_N(src->hosts, 1) < 0) + goto cleanup; + src->nhost =3D 1; + + if (VIR_STRDUP(src->hosts[0].name, host) < 0) + goto cleanup; + + if (netfs) + src->format =3D VIR_STORAGE_POOL_NETFS_GLUSTERFS; + } + + ret =3D nnodes; + + cleanup: + VIR_FREE(nodes); + xmlXPathFreeContext(ctxt); + xmlFreeDoc(doc); + + return ret; +} + + /** * virStorageBackendFindGlusterPoolSources: * @host: host to detect volumes on @@ -2859,12 +2913,6 @@ virStorageBackendFindGlusterPoolSources(const char *= host, char *glusterpath =3D NULL; char *outbuf =3D NULL; virCommandPtr cmd =3D NULL; - xmlDocPtr doc =3D NULL; - xmlXPathContextPtr ctxt =3D NULL; - xmlNodePtr *nodes =3D NULL; - virStoragePoolSource *src =3D NULL; - size_t i; - int nnodes; int rc; int ret =3D -1; @@ -2895,42 +2943,9 @@ virStorageBackendFindGlusterPoolSources(const char *= host, goto cleanup; } - if (!(doc =3D virXMLParseStringCtxt(outbuf, _("(gluster_cli_output)"), - &ctxt))) - goto cleanup; - - if ((nnodes =3D virXPathNodeSet("//volumes/volume", ctxt, &nodes)) < 0) - goto cleanup; - - for (i =3D 0; i < nnodes; i++) { - ctxt->node =3D nodes[i]; - - if (!(src =3D virStoragePoolSourceListNewSource(list))) - goto cleanup; - - if (!(src->dir =3D virXPathString("string(//name)", ctxt))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("failed to extract gluster volume name")); - goto cleanup; - } - - if (VIR_ALLOC_N(src->hosts, 1) < 0) - goto cleanup; - src->nhost =3D 1; - - if (VIR_STRDUP(src->hosts[0].name, host) < 0) - goto cleanup; - - if (netfs) - src->format =3D VIR_STORAGE_POOL_NETFS_GLUSTERFS; - } - - ret =3D nnodes; + ret =3D virStorageUtilGlusterExtractPoolSources(host, outbuf, list, ne= tfs); cleanup: - VIR_FREE(nodes); - xmlXPathFreeContext(ctxt); - xmlFreeDoc(doc); VIR_FREE(outbuf); virCommandFree(cmd); VIR_FREE(glusterpath); diff --git a/src/storage/storage_util.h b/src/storage/storage_util.h index 741baa78d..ecd67e2fc 100644 --- a/src/storage/storage_util.h +++ b/src/storage/storage_util.h @@ -93,6 +93,10 @@ int virStorageBackendDeleteLocal(virConnectPtr conn, int virStorageBackendRefreshLocal(virConnectPtr conn, virStoragePoolObjPtr pool); +int virStorageUtilGlusterExtractPoolSources(const char *host, + const char *xml, + virStoragePoolSourceListPtr li= st, + bool netfs); int virStorageBackendFindGlusterPoolSources(const char *host, virStoragePoolSourceListPtr li= st, bool netfs, --=20 2.12.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon May 6 05:02:35 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 149088677873989.5507323418667; Thu, 30 Mar 2017 08:12:58 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7C39779717; Thu, 30 Mar 2017 15:12:14 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3F47217246; Thu, 30 Mar 2017 15:12:14 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id E7D9918523CF; Thu, 30 Mar 2017 15:12:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2UFBuh7004175 for ; Thu, 30 Mar 2017 11:11:56 -0400 Received: by smtp.corp.redhat.com (Postfix) id AA19B7EA37; Thu, 30 Mar 2017 15:11:56 +0000 (UTC) Received: from angien.brq.redhat.com (dhcp129-47.brq.redhat.com [10.34.129.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id DDC0F5B82D; Thu, 30 Mar 2017 15:11:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7C39779717 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 7C39779717 From: Peter Krempa To: libvir-list@redhat.com Date: Thu, 30 Mar 2017 17:12:47 +0200 Message-Id: <72a9c2fef57eb6fca1d9599341af6d93939ff15f.1490886728.git.pkrempa@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH v2 3/5] test: Introduce testing of virStorageUtilGlusterExtractPoolSources X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 30 Mar 2017 15:12:15 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Add a test program called virstorageutiltest and test the gluster pool detection code. --- tests/Makefile.am | 15 ++- .../gluster-parse-basic-native.xml | 6 ++ .../gluster-parse-basic-netfs.xml | 7 ++ .../virstorageutildata/gluster-parse-basic-src.xml | 47 +++++++++ tests/virstorageutiltest.c | 112 +++++++++++++++++= ++++ 5 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 tests/virstorageutildata/gluster-parse-basic-native.xml create mode 100644 tests/virstorageutildata/gluster-parse-basic-netfs.xml create mode 100644 tests/virstorageutildata/gluster-parse-basic-src.xml create mode 100644 tests/virstorageutiltest.c diff --git a/tests/Makefile.am b/tests/Makefile.am index a6f189b8b..254c4c0ad 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -160,7 +160,9 @@ EXTRA_DIST =3D \ xlconfigdata \ xmconfigdata \ xml2sexprdata \ - xml2vmxdata + xml2vmxdata \ + virstorageutildata \ + $(NULL) test_helpers =3D commandhelper ssh test_programs =3D virshtest sockettest \ @@ -352,7 +354,7 @@ test_programs +=3D nwfilterxml2firewalltest endif WITH_NWFILTER if WITH_STORAGE -test_programs +=3D storagevolxml2argvtest +test_programs +=3D storagevolxml2argvtest virstorageutiltest endif WITH_STORAGE if WITH_STORAGE_FS @@ -859,6 +861,13 @@ genericxml2xmltest_LDADD =3D $(LDADDS) if WITH_STORAGE +virstorageutiltest_SOURCES =3D \ + virstorageutiltest.c testutils.c testutils.h +virstorageutiltest_LDADD =3D \ + ../src/libvirt_driver_storage_impl.la \ + $(LDADDS) \ + $(NULL) + storagevolxml2argvtest_SOURCES =3D \ storagevolxml2argvtest.c \ testutils.c testutils.h @@ -867,7 +876,7 @@ storagevolxml2argvtest_LDADD =3D \ ../src/libvirt_driver_storage_impl.la $(LDADDS) else ! WITH_STORAGE -EXTRA_DIST +=3D storagevolxml2argvtest.c +EXTRA_DIST +=3D storagevolxml2argvtest.c virstorageutiltest.c endif ! WITH_STORAGE storagevolxml2xmltest_SOURCES =3D \ diff --git a/tests/virstorageutildata/gluster-parse-basic-native.xml b/test= s/virstorageutildata/gluster-parse-basic-native.xml new file mode 100644 index 000000000..fbde06f3b --- /dev/null +++ b/tests/virstorageutildata/gluster-parse-basic-native.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/virstorageutildata/gluster-parse-basic-netfs.xml b/tests= /virstorageutildata/gluster-parse-basic-netfs.xml new file mode 100644 index 000000000..8aadd50a1 --- /dev/null +++ b/tests/virstorageutildata/gluster-parse-basic-netfs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/virstorageutildata/gluster-parse-basic-src.xml b/tests/v= irstorageutildata/gluster-parse-basic-src.xml new file mode 100644 index 000000000..08f97cb72 --- /dev/null +++ b/tests/virstorageutildata/gluster-parse-basic-src.xml @@ -0,0 +1,47 @@ + + + 0 + 0 + + + + + vol0 + ac14dfa5-0b98-4593-a2aa-9fe2bb9b9ce3 + 1 + Started + 0 + 2 + 2 + 1 + 2 + 0 + 0 + 0 + 2 + Replicate + 0 + + virt-gluste= r-node1:/bricks/brick1/brickvirt-gluster-node1:/bricks/brick1/bricka6f5ddea-bc6a-44db-ae1d-5aa1db7434900<= /isArbiter> + virt-gluste= r-node2:/bricks/brick1/brickvirt-gluster-node2:/bricks/brick1/brickf4ab9fb1-44ec-443b-8783-e5f70ed78da30<= /isArbiter> + + 3 + + + + + + + 1 + + + diff --git a/tests/virstorageutiltest.c b/tests/virstorageutiltest.c new file mode 100644 index 000000000..b13ecb5ab --- /dev/null +++ b/tests/virstorageutiltest.c @@ -0,0 +1,112 @@ +/* + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#include + +#include + +#include "testutils.h" +#include "virerror.h" +#include "virfile.h" +#include "virlog.h" +#include "virstring.h" + +#include "storage/storage_util.h" + +#define VIR_FROM_THIS VIR_FROM_NONE + +VIR_LOG_INIT("tests.storageutiltest"); + + +struct testGlusterLookupParseData { + const char *srcxml; + const char *dstxml; + bool netfs; + int type; +}; + +static int +testGlusterLookupParse(const void *opaque) +{ + const struct testGlusterLookupParseData *data =3D opaque; + virStoragePoolSourceList list =3D { .type =3D data->type, + .nsources =3D 0, + .sources =3D NULL + }; + size_t i; + char *srcxmldata =3D NULL; + char *actual =3D NULL; + int ret =3D -1; + + if (virTestLoadFile(data->srcxml, &srcxmldata) < 0) + goto cleanup; + + if (virStorageUtilGlusterExtractPoolSources("testhost", srcxmldata, + &list, data->netfs) < 0) + goto cleanup; + + if (!(actual =3D virStoragePoolSourceListFormat(&list))) + goto cleanup; + + ret =3D virTestCompareToFile(actual, data->dstxml); + + cleanup: + VIR_FREE(srcxmldata); + VIR_FREE(actual); + + for (i =3D 0; i < list.nsources; i++) + virStoragePoolSourceClear(&list.sources[i]); + VIR_FREE(list.sources); + + return ret; +} + + +static int +mymain(void) +{ + int ret =3D 0; + +#define DO_TEST_GLUSTER_LOOKUP_FULL(testname, sffx, testnetfs, pooltype) = \ + do { = \ + struct testGlusterLookupParseData data; = \ + data.srcxml =3D abs_srcdir "/virstorageutildata/" = \ + "gluster-parse-" testname "-src.xml"; = \ + data.dstxml =3D abs_srcdir "/virstorageutildata/" = \ + "gluster-parse-" testname "-" sffx ".xml"; = \ + data.netfs =3D testnetfs; = \ + data.type =3D pooltype; = \ + if (virTestRun("gluster lookup " sffx " " testname, = \ + testGlusterLookupParse, &data) < 0) = \ + ret =3D -1; = \ + } while (0) + +#define DO_TEST_GLUSTER_LOOKUP_NATIVE(testname) = \ + DO_TEST_GLUSTER_LOOKUP_FULL(testname, "native", false, VIR_STORAGE_POO= L_GLUSTER) +#define DO_TEST_GLUSTER_LOOKUP_NETFS(testname) = \ + DO_TEST_GLUSTER_LOOKUP_FULL(testname, "netfs", true, VIR_STORAGE_POOL_= NETFS) + + DO_TEST_GLUSTER_LOOKUP_NATIVE("basic"); + DO_TEST_GLUSTER_LOOKUP_NETFS("basic"); + +#undef DO_TEST_GLUSTER_LOOKUP_NATIVE +#undef DO_TEST_GLUSTER_LOOKUP_NETFS +#undef DO_TEST_GLUSTER_LOOKUP_FULL + + return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; +} + +VIRT_TEST_MAIN(mymain) --=20 2.12.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon May 6 05:02:35 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1490886767665699.0747871957378; Thu, 30 Mar 2017 08:12:47 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D557D6AAC0; Thu, 30 Mar 2017 15:12:01 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A06967DD40; Thu, 30 Mar 2017 15:12:01 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 4F99E18523CA; Thu, 30 Mar 2017 15:12:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2UFBv0s004183 for ; Thu, 30 Mar 2017 11:11:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id C60287EA37; Thu, 30 Mar 2017 15:11:57 +0000 (UTC) Received: from angien.brq.redhat.com (dhcp129-47.brq.redhat.com [10.34.129.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id 036B87DE2E; Thu, 30 Mar 2017 15:11:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D557D6AAC0 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com D557D6AAC0 From: Peter Krempa To: libvir-list@redhat.com Date: Thu, 30 Mar 2017 17:12:48 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH v2 4/5] storage: Fix XPath for looking up gluster volume name X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 30 Mar 2017 15:12:02 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Use the relative lookup specifier rather than the global one. Otherwise only the first name would be looked up. Add a test case to cover the scenario. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=3D1436574 --- src/storage/storage_util.c | 2 +- .../gluster-parse-multivol-native.xml | 14 ++++++++++ .../gluster-parse-multivol-netfs.xml | 17 ++++++++++++ .../gluster-parse-multivol-src.xml | 32 ++++++++++++++++++= ++++ tests/virstorageutiltest.c | 2 ++ 5 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 tests/virstorageutildata/gluster-parse-multivol-native.= xml create mode 100644 tests/virstorageutildata/gluster-parse-multivol-netfs.x= ml create mode 100644 tests/virstorageutildata/gluster-parse-multivol-src.xml diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index 3b55bafc0..19c73497f 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -2862,7 +2862,7 @@ virStorageUtilGlusterExtractPoolSources(const char *h= ost, if (!(src =3D virStoragePoolSourceListNewSource(list))) goto cleanup; - if (!(src->dir =3D virXPathString("string(//name)", ctxt))) { + if (!(src->dir =3D virXPathString("string(./name)", ctxt))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to extract gluster volume name")); goto cleanup; diff --git a/tests/virstorageutildata/gluster-parse-multivol-native.xml b/t= ests/virstorageutildata/gluster-parse-multivol-native.xml new file mode 100644 index 000000000..d2d8fefc6 --- /dev/null +++ b/tests/virstorageutildata/gluster-parse-multivol-native.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/tests/virstorageutildata/gluster-parse-multivol-netfs.xml b/te= sts/virstorageutildata/gluster-parse-multivol-netfs.xml new file mode 100644 index 000000000..3a542999d --- /dev/null +++ b/tests/virstorageutildata/gluster-parse-multivol-netfs.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/virstorageutildata/gluster-parse-multivol-src.xml b/test= s/virstorageutildata/gluster-parse-multivol-src.xml new file mode 100644 index 000000000..0c1f9d10e --- /dev/null +++ b/tests/virstorageutildata/gluster-parse-multivol-src.xml @@ -0,0 +1,32 @@ + + + + 0 + 0 + + + + + aaa + d0b219d4-4169-4907-8994-d2e2434854ed + 0 + Created + 0 + + + test + 32826068-2320-4b62-a825-2554edb7f020 + 1 + Started + 0 + + + test1 + dfa070f4-b12f-4166-8d68-041b73127abc + 0 + Created + + 3 + + + diff --git a/tests/virstorageutiltest.c b/tests/virstorageutiltest.c index b13ecb5ab..37a3524e6 100644 --- a/tests/virstorageutiltest.c +++ b/tests/virstorageutiltest.c @@ -101,6 +101,8 @@ mymain(void) DO_TEST_GLUSTER_LOOKUP_NATIVE("basic"); DO_TEST_GLUSTER_LOOKUP_NETFS("basic"); + DO_TEST_GLUSTER_LOOKUP_NATIVE("multivol"); + DO_TEST_GLUSTER_LOOKUP_NETFS("multivol"); #undef DO_TEST_GLUSTER_LOOKUP_NATIVE #undef DO_TEST_GLUSTER_LOOKUP_NETFS --=20 2.12.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon May 6 05:02:35 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1490886791831868.681302452124; Thu, 30 Mar 2017 08:13:11 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7812FC0528AC; Thu, 30 Mar 2017 15:12:14 +0000 (UTC) Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3030C5B83A; Thu, 30 Mar 2017 15:12:14 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id DBFD55EC66; Thu, 30 Mar 2017 15:12:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2UFBwHb004193 for ; Thu, 30 Mar 2017 11:11:58 -0400 Received: by smtp.corp.redhat.com (Postfix) id C0DBE7DE2E; Thu, 30 Mar 2017 15:11:58 +0000 (UTC) Received: from angien.brq.redhat.com (dhcp129-47.brq.redhat.com [10.34.129.47]) by smtp.corp.redhat.com (Postfix) with ESMTP id 203E35B82D; Thu, 30 Mar 2017 15:11:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7812FC0528AC Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 7812FC0528AC From: Peter Krempa To: libvir-list@redhat.com Date: Thu, 30 Mar 2017 17:12:49 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH v2 5/5] storage: gluster: Use volume name as "" field in the XML X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 30 Mar 2017 15:12:15 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" For native gluster pools the field denotes a directory inside the pool. For the actual pool name the field has to be used. --- src/storage/storage_util.c | 15 +++++++++++= +--- tests/virstorageutildata/gluster-parse-basic-native.xml | 3 ++- .../virstorageutildata/gluster-parse-multivol-native.xml | 9 ++++++--- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index 19c73497f..241b6890a 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -2846,6 +2846,7 @@ virStorageUtilGlusterExtractPoolSources(const char *h= ost, xmlXPathContextPtr ctxt =3D NULL; xmlNodePtr *nodes =3D NULL; virStoragePoolSource *src =3D NULL; + char *volname; size_t i; int nnodes; int ret =3D -1; @@ -2862,12 +2863,22 @@ virStorageUtilGlusterExtractPoolSources(const char = *host, if (!(src =3D virStoragePoolSourceListNewSource(list))) goto cleanup; - if (!(src->dir =3D virXPathString("string(./name)", ctxt))) { + if (!(volname =3D virXPathString("string(./name)", ctxt))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to extract gluster volume name")); goto cleanup; } + if (netfs) { + src->format =3D VIR_STORAGE_POOL_NETFS_GLUSTERFS; + src->dir =3D volname; + } else { + src->name =3D volname; + + if (VIR_STRDUP(src->dir, "/") < 0) + goto cleanup; + } + if (VIR_ALLOC_N(src->hosts, 1) < 0) goto cleanup; src->nhost =3D 1; @@ -2875,8 +2886,6 @@ virStorageUtilGlusterExtractPoolSources(const char *h= ost, if (VIR_STRDUP(src->hosts[0].name, host) < 0) goto cleanup; - if (netfs) - src->format =3D VIR_STORAGE_POOL_NETFS_GLUSTERFS; } ret =3D nnodes; diff --git a/tests/virstorageutildata/gluster-parse-basic-native.xml b/test= s/virstorageutildata/gluster-parse-basic-native.xml index fbde06f3b..895d0f3fd 100644 --- a/tests/virstorageutildata/gluster-parse-basic-native.xml +++ b/tests/virstorageutildata/gluster-parse-basic-native.xml @@ -1,6 +1,7 @@ - + + vol0 diff --git a/tests/virstorageutildata/gluster-parse-multivol-native.xml b/t= ests/virstorageutildata/gluster-parse-multivol-native.xml index d2d8fefc6..c758ac5aa 100644 --- a/tests/virstorageutildata/gluster-parse-multivol-native.xml +++ b/tests/virstorageutildata/gluster-parse-multivol-native.xml @@ -1,14 +1,17 @@ - + + aaa - + + test - + + test1 --=20 2.12.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list