storage: util: Pass pool type to virStorageBackendFindGlusterPoolSources

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 differences add a more deterministic way to switch between the
types instead.
This commit is contained in:
Peter Krempa 2017-03-30 15:08:06 +02:00
parent 609cc5a880
commit a92160dbd5
4 changed files with 12 additions and 7 deletions

View File

@ -186,7 +186,7 @@ virStorageBackendFileSystemNetFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSE
retNFS = virStorageBackendFileSystemNetFindNFSPoolSources(&state);
retGluster = virStorageBackendFindGlusterPoolSources(state.host,
VIR_STORAGE_POOL_NETFS_GLUSTERFS,
VIR_STORAGE_POOL_NETFS,
&state.list, false);
if (retGluster < 0)

View File

@ -513,7 +513,7 @@ virStorageBackendGlusterFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED,
}
if ((rc = virStorageBackendFindGlusterPoolSources(source->hosts[0].name,
0, /* currently ignored */
VIR_STORAGE_POOL_GLUSTER,
&list, true)) < 0)
goto cleanup;

View File

@ -2839,17 +2839,21 @@ virStorageBackendDeleteLocal(virConnectPtr conn ATTRIBUTE_UNUSED,
/**
* virStorageBackendFindGlusterPoolSources:
* @host: host to detect volumes on
* @pooltype: src->format is set to this value
* @pooltype: type of the pool
* @list: list of storage pool sources to be filled
* @report: report error if the 'gluster' cli tool is missing
*
* Looks up gluster volumes on @host and fills them to @list.
*
* @pooltype allows to influence the specific differences between netfs and
* native gluster pools. Users should pass only VIR_STORAGE_POOL_NETFS or
* VIR_STORAGE_POOL_GLUSTER.
*
* Returns number of volumes on the host on success, or -1 on error.
*/
int
virStorageBackendFindGlusterPoolSources(const char *host,
int pooltype,
virStoragePoolType pooltype,
virStoragePoolSourceListPtr list,
bool report)
{
@ -2911,14 +2915,15 @@ virStorageBackendFindGlusterPoolSources(const char *host,
goto cleanup;
}
if (pooltype == VIR_STORAGE_POOL_NETFS)
src->format = VIR_STORAGE_POOL_NETFS_GLUSTERFS;
if (VIR_ALLOC_N(src->hosts, 1) < 0)
goto cleanup;
src->nhost = 1;
if (VIR_STRDUP(src->hosts[0].name, host) < 0)
goto cleanup;
src->format = pooltype;
}
ret = nnodes;

View File

@ -94,7 +94,7 @@ int virStorageBackendRefreshLocal(virConnectPtr conn,
virStoragePoolObjPtr pool);
int virStorageBackendFindGlusterPoolSources(const char *host,
int pooltype,
virStoragePoolType pooltype,
virStoragePoolSourceListPtr list,
bool report);