1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-20 06:50:22 +03:00

conf: Introduce virStoragePoolObjSourceMatchTypeDIR

Refactor virStoragePoolObjSourceFindDuplicate into smaller units
separated by the "supported" pool source type. The DIR, GLUSTER,
and NETFS pools all can use "<source>... <dir='%s'/>... </source>".

Alter the logic slightly to return the matching pool or NULL rather
than setting matchpool = pool and break.  Easier to read that way.
This commit is contained in:
John Ferlan 2017-04-05 08:14:49 -04:00
parent b595cc05e8
commit 6ddd6ae811

View File

@ -853,6 +853,30 @@ virStoragePoolSourceISCSIMatch(virStoragePoolObjPtr matchpool,
}
static virStoragePoolObjPtr
virStoragePoolObjSourceMatchTypeDIR(virStoragePoolObjPtr pool,
virStoragePoolDefPtr def)
{
if (pool->def->type == VIR_STORAGE_POOL_DIR) {
if (STREQ(pool->def->target.path, def->target.path))
return pool;
} else if (pool->def->type == VIR_STORAGE_POOL_GLUSTER) {
if (STREQ(pool->def->source.name, def->source.name) &&
STREQ_NULLABLE(pool->def->source.dir, def->source.dir) &&
virStoragePoolSourceMatchSingleHost(&pool->def->source,
&def->source))
return pool;
} else if (pool->def->type == VIR_STORAGE_POOL_NETFS) {
if (STREQ(pool->def->source.dir, def->source.dir) &&
virStoragePoolSourceMatchSingleHost(&pool->def->source,
&def->source))
return pool;
}
return NULL;
}
int
virStoragePoolObjSourceFindDuplicate(virConnectPtr conn,
virStoragePoolObjListPtr pools,
@ -879,23 +903,9 @@ virStoragePoolObjSourceFindDuplicate(virConnectPtr conn,
switch ((virStoragePoolType)pool->def->type) {
case VIR_STORAGE_POOL_DIR:
if (STREQ(pool->def->target.path, def->target.path))
matchpool = pool;
break;
case VIR_STORAGE_POOL_GLUSTER:
if (STREQ(pool->def->source.name, def->source.name) &&
STREQ_NULLABLE(pool->def->source.dir, def->source.dir) &&
virStoragePoolSourceMatchSingleHost(&pool->def->source,
&def->source))
matchpool = pool;
break;
case VIR_STORAGE_POOL_NETFS:
if (STREQ(pool->def->source.dir, def->source.dir) &&
virStoragePoolSourceMatchSingleHost(&pool->def->source,
&def->source))
matchpool = pool;
matchpool = virStoragePoolObjSourceMatchTypeDIR(pool, def);
break;
case VIR_STORAGE_POOL_SCSI: