QStringList StoragePoolControlThread::getAllStoragePoolList() { QStringList storagePoolList; if ( currWorkConnect!=NULL && keep_alive ) { virStoragePoolPtr *storagePool; unsigned int flags = VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE | VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE; int ret = virConnectListAllStoragePools( currWorkConnect, &storagePool, flags); if ( ret<0 ) { sendConnErrors(); free(storagePool); return storagePoolList; }; int i = 0; while ( storagePool[i] != NULL ) { QStringList currentAttr; QString autostartStr; int is_autostart = 0; if (virStoragePoolGetAutostart(storagePool[i], &is_autostart) < 0) { autostartStr.append("no autostart"); } else autostartStr.append( is_autostart ? "yes" : "no" ); currentAttr<< QString().fromUtf8( virStoragePoolGetName(storagePool[i]) ) << QString( virStoragePoolIsActive(storagePool[i]) ? "active" : "inactive" ) << autostartStr << QString( virStoragePoolIsPersistent(storagePool[i]) ? "yes" : "no" ); storagePoolList.append(currentAttr.join(" ")); //qDebug()<<currentAttr; virStoragePoolFree(storagePool[i]); i++; }; free(storagePool); }; return storagePoolList; }
Result StoragePoolControlThread::getAllStoragePoolList() { Result result; QStringList storagePoolList; if ( task.srcConnPtr!=NULL && keep_alive ) { virStoragePoolPtr *storagePool = NULL; unsigned int flags = VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE | VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE; int ret = virConnectListAllStoragePools( *task.srcConnPtr, &storagePool, flags); if ( ret<0 ) { result.err = sendConnErrors(); result.result = false; result.msg = storagePoolList; return result; }; // therefore correctly to use for() command, because storagePool[0] can not exist. for (int i = 0; i < ret; i++) { QStringList currentAttr; QString autostartStr; int is_autostart = 0; if (virStoragePoolGetAutostart(storagePool[i], &is_autostart) < 0) { autostartStr.append("no autostart"); } else autostartStr.append( is_autostart ? "yes" : "no" ); currentAttr<< QString::fromUtf8( virStoragePoolGetName(storagePool[i]) ) << QString( virStoragePoolIsActive(storagePool[i]) ? "active" : "inactive" ) << autostartStr << QString( virStoragePoolIsPersistent(storagePool[i]) ? "yes" : "no" ); storagePoolList.append(currentAttr.join(DFR)); //qDebug()<<currentAttr; virStoragePoolFree(storagePool[i]); }; free(storagePool); result.result = true; } else { result.result = false; }; result.msg = storagePoolList; return result; }
gboolean gvir_storage_pool_get_active(GVirStoragePool *pool) { g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), FALSE); return virStoragePoolIsActive(pool->priv->handle); }
virStorageVolPtr vshCommandOptVolBy(vshControl *ctl, const vshCmd *cmd, const char *optname, const char *pooloptname, const char **name, unsigned int flags) { virStorageVolPtr vol = NULL; virStoragePoolPtr pool = NULL; const char *n = NULL, *p = NULL; virCheckFlags(VSH_BYUUID | VSH_BYNAME, NULL); if (vshCommandOptStringReq(ctl, cmd, optname, &n) < 0) return NULL; if (pooloptname != NULL && vshCommandOptStringReq(ctl, cmd, pooloptname, &p) < 0) return NULL; if (p) { if (!(pool = vshCommandOptPoolBy(ctl, cmd, pooloptname, name, flags))) return NULL; if (virStoragePoolIsActive(pool) != 1) { vshError(ctl, _("pool '%s' is not active"), p); virStoragePoolFree(pool); return NULL; } } vshDebug(ctl, VSH_ERR_DEBUG, "%s: found option <%s>: %s\n", cmd->def->name, optname, n); if (name) *name = n; /* try it by name */ if (pool && (flags & VSH_BYNAME)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as vol name\n", cmd->def->name, optname); vol = virStorageVolLookupByName(pool, n); } /* try it by key */ if (!vol && (flags & VSH_BYUUID)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as vol key\n", cmd->def->name, optname); vol = virStorageVolLookupByKey(ctl->conn, n); } /* try it by path */ if (!vol && (flags & VSH_BYUUID)) { vshDebug(ctl, VSH_ERR_DEBUG, "%s: <%s> trying as vol path\n", cmd->def->name, optname); vol = virStorageVolLookupByPath(ctl->conn, n); } if (!vol) { if (pool || !pooloptname) vshError(ctl, _("failed to get vol '%s'"), n); else vshError(ctl, _("failed to get vol '%s', specifying --%s " "might help"), n, pooloptname); } /* If the pool was specified, then make sure that the returned * volume is from the given pool */ if (pool && vol) { virStoragePoolPtr volpool = NULL; if ((volpool = virStoragePoolLookupByVolume(vol))) { if (STRNEQ(virStoragePoolGetName(volpool), virStoragePoolGetName(pool))) { vshResetLibvirtError(); vshError(ctl, _("Requested volume '%s' is not in pool '%s'"), n, virStoragePoolGetName(pool)); virStorageVolFree(vol); vol = NULL; } virStoragePoolFree(volpool); } } if (pool) virStoragePoolFree(pool); return vol; }