mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 07:59:00 +00:00
storage: Introduce virStoragePoolObjNumOfStoragePools
Unify the NumOf[Defined]StoragePools API into virstorageobj.c from storage_driver and test_driver. The only real difference between the two is the test driver doesn't call using the aclfilter API. Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
96155c6994
commit
2fae7c7fb2
@ -557,6 +557,29 @@ virStoragePoolObjDeleteDef(virStoragePoolObjPtr pool)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
virStoragePoolObjNumOfStoragePools(virStoragePoolObjListPtr pools,
|
||||
virConnectPtr conn,
|
||||
bool wantActive,
|
||||
virStoragePoolObjListACLFilter aclfilter)
|
||||
{
|
||||
int npools = 0;
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < pools->count; i++) {
|
||||
virStoragePoolObjPtr obj = pools->objs[i];
|
||||
virStoragePoolObjLock(obj);
|
||||
if (!aclfilter || aclfilter(conn, obj->def)) {
|
||||
if (wantActive == virStoragePoolObjIsActive(obj))
|
||||
npools++;
|
||||
}
|
||||
virStoragePoolObjUnlock(obj);
|
||||
}
|
||||
|
||||
return npools;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* virStoragePoolObjIsDuplicate:
|
||||
* @doms : virStoragePoolObjListPtr to search
|
||||
|
@ -146,6 +146,15 @@ virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
|
||||
int
|
||||
virStoragePoolObjDeleteDef(virStoragePoolObjPtr pool);
|
||||
|
||||
typedef bool (*virStoragePoolObjListACLFilter)(virConnectPtr conn,
|
||||
virStoragePoolDefPtr def);
|
||||
|
||||
int
|
||||
virStoragePoolObjNumOfStoragePools(virStoragePoolObjListPtr pools,
|
||||
virConnectPtr conn,
|
||||
bool wantActive,
|
||||
virStoragePoolObjListACLFilter aclfilter);
|
||||
|
||||
void
|
||||
virStoragePoolObjFree(virStoragePoolObjPtr pool);
|
||||
|
||||
|
@ -1005,6 +1005,7 @@ virStoragePoolObjListFree;
|
||||
virStoragePoolObjLoadAllConfigs;
|
||||
virStoragePoolObjLoadAllState;
|
||||
virStoragePoolObjLock;
|
||||
virStoragePoolObjNumOfStoragePools;
|
||||
virStoragePoolObjNumOfVolumes;
|
||||
virStoragePoolObjRemove;
|
||||
virStoragePoolObjSaveDef;
|
||||
|
@ -477,21 +477,14 @@ storagePoolLookupByVolume(virStorageVolPtr vol)
|
||||
static int
|
||||
storageConnectNumOfStoragePools(virConnectPtr conn)
|
||||
{
|
||||
size_t i;
|
||||
int nactive = 0;
|
||||
|
||||
if (virConnectNumOfStoragePoolsEnsureACL(conn) < 0)
|
||||
return -1;
|
||||
|
||||
storageDriverLock();
|
||||
for (i = 0; i < driver->pools.count; i++) {
|
||||
virStoragePoolObjPtr obj = driver->pools.objs[i];
|
||||
virStoragePoolObjLock(obj);
|
||||
if (virConnectNumOfStoragePoolsCheckACL(conn, obj->def) &&
|
||||
virStoragePoolObjIsActive(obj))
|
||||
nactive++;
|
||||
virStoragePoolObjUnlock(obj);
|
||||
}
|
||||
nactive = virStoragePoolObjNumOfStoragePools(&driver->pools, conn, true,
|
||||
virConnectNumOfStoragePoolsCheckACL);
|
||||
storageDriverUnlock();
|
||||
|
||||
return nactive;
|
||||
@ -536,21 +529,14 @@ storageConnectListStoragePools(virConnectPtr conn,
|
||||
static int
|
||||
storageConnectNumOfDefinedStoragePools(virConnectPtr conn)
|
||||
{
|
||||
size_t i;
|
||||
int nactive = 0;
|
||||
|
||||
if (virConnectNumOfDefinedStoragePoolsEnsureACL(conn) < 0)
|
||||
return -1;
|
||||
|
||||
storageDriverLock();
|
||||
for (i = 0; i < driver->pools.count; i++) {
|
||||
virStoragePoolObjPtr obj = driver->pools.objs[i];
|
||||
virStoragePoolObjLock(obj);
|
||||
if (virConnectNumOfDefinedStoragePoolsCheckACL(conn, obj->def) &&
|
||||
!virStoragePoolObjIsActive(obj))
|
||||
nactive++;
|
||||
virStoragePoolObjUnlock(obj);
|
||||
}
|
||||
nactive = virStoragePoolObjNumOfStoragePools(&driver->pools, conn, false,
|
||||
virConnectNumOfDefinedStoragePoolsCheckACL);
|
||||
storageDriverUnlock();
|
||||
|
||||
return nactive;
|
||||
|
@ -4102,17 +4102,16 @@ testStoragePoolLookupByVolume(virStorageVolPtr vol)
|
||||
return testStoragePoolLookupByName(vol->conn, vol->pool);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
testConnectNumOfStoragePools(virConnectPtr conn)
|
||||
{
|
||||
testDriverPtr privconn = conn->privateData;
|
||||
int numActive = 0;
|
||||
size_t i;
|
||||
|
||||
testDriverLock(privconn);
|
||||
for (i = 0; i < privconn->pools.count; i++)
|
||||
if (virStoragePoolObjIsActive(privconn->pools.objs[i]))
|
||||
numActive++;
|
||||
numActive = virStoragePoolObjNumOfStoragePools(&privconn->pools, conn,
|
||||
true, NULL);
|
||||
testDriverUnlock(privconn);
|
||||
|
||||
return numActive;
|
||||
@ -4149,20 +4148,16 @@ testConnectListStoragePools(virConnectPtr conn,
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
testConnectNumOfDefinedStoragePools(virConnectPtr conn)
|
||||
{
|
||||
testDriverPtr privconn = conn->privateData;
|
||||
int numInactive = 0;
|
||||
size_t i;
|
||||
|
||||
testDriverLock(privconn);
|
||||
for (i = 0; i < privconn->pools.count; i++) {
|
||||
virStoragePoolObjLock(privconn->pools.objs[i]);
|
||||
if (!virStoragePoolObjIsActive(privconn->pools.objs[i]))
|
||||
numInactive++;
|
||||
virStoragePoolObjUnlock(privconn->pools.objs[i]);
|
||||
}
|
||||
numInactive = virStoragePoolObjNumOfStoragePools(&privconn->pools, conn,
|
||||
false, NULL);
|
||||
testDriverUnlock(privconn);
|
||||
|
||||
return numInactive;
|
||||
|
Loading…
x
Reference in New Issue
Block a user