/** * gvir_storage_vol_get_info: * @vol: the storage_vol * @err: Place-holder for possible errors * * Returns: (transfer full): the info. The returned object should be * unreffed with g_object_unref() when no longer needed. */ GVirStorageVolInfo *gvir_storage_vol_get_info(GVirStorageVol *vol, GError **err) { GVirStorageVolPrivate *priv; virStorageVolInfo info; GVirStorageVolInfo *ret; g_return_val_if_fail(GVIR_IS_STORAGE_VOL(vol), NULL); g_return_val_if_fail(err == NULL || *err == NULL, NULL); priv = vol->priv; if (virStorageVolGetInfo(priv->handle, &info) < 0) { if (err) *err = gvir_error_new_literal(GVIR_STORAGE_VOL_ERROR, 0, "Unable to get storage vol info"); return NULL; } ret = g_slice_new(GVirStorageVolInfo); ret->type = info.type; ret->capacity = info.capacity; ret->allocation = info.allocation; return ret; }
static bool cmdVolInfo(vshControl *ctl, const vshCmd *cmd) { virStorageVolInfo info; virStorageVolPtr vol; bool ret = true; if (!(vol = vshCommandOptVol(ctl, cmd, "vol", "pool", NULL))) return false; vshPrint(ctl, "%-15s %s\n", _("Name:"), virStorageVolGetName(vol)); if (virStorageVolGetInfo(vol, &info) == 0) { double val; const char *unit; vshPrint(ctl, "%-15s %s\n", _("Type:"), vshVolumeTypeToString(info.type)); val = vshPrettyCapacity(info.capacity, &unit); vshPrint(ctl, "%-15s %2.2lf %s\n", _("Capacity:"), val, unit); val = vshPrettyCapacity(info.allocation, &unit); vshPrint(ctl, "%-15s %2.2lf %s\n", _("Allocation:"), val, unit); } else { ret = false; } virStorageVolFree(vol); return ret; }
static bool cmdVolInfo(vshControl *ctl, const vshCmd *cmd) { virStorageVolInfo info; virStorageVolPtr vol; bool ret = true; if (!vshConnectionUsability(ctl, ctl->conn)) return false; if (!(vol = vshCommandOptVol(ctl, cmd, "vol", "pool", NULL))) return false; vshPrint(ctl, "%-15s %s\n", _("Name:"), virStorageVolGetName(vol)); if (virStorageVolGetInfo(vol, &info) == 0) { double val; const char *unit; switch(info.type) { case VIR_STORAGE_VOL_FILE: vshPrint(ctl, "%-15s %s\n", _("Type:"), _("file")); break; case VIR_STORAGE_VOL_BLOCK: vshPrint(ctl, "%-15s %s\n", _("Type:"), _("block")); break; case VIR_STORAGE_VOL_DIR: vshPrint(ctl, "%-15s %s\n", _("Type:"), _("dir")); break; case VIR_STORAGE_VOL_NETWORK: vshPrint(ctl, "%-15s %s\n", _("Type:"), _("network")); break; default: vshPrint(ctl, "%-15s %s\n", _("Type:"), _("unknown")); } val = prettyCapacity(info.capacity, &unit); vshPrint(ctl, "%-15s %2.2lf %s\n", _("Capacity:"), val, unit); val = prettyCapacity(info.allocation, &unit); vshPrint(ctl, "%-15s %2.2lf %s\n", _("Allocation:"), val, unit); } else { ret = false; } virStorageVolFree(vol); return ret; }
void VolumeWrap::update() { virStorageVolInfo info; int ret; printf("Updating volume info\n"); ret = virStorageVolGetInfo(_volume_ptr, &info); if (ret < 0) { REPORT_ERR(_conn, "VolumeWrap: Unable to get info of storage volume info\n"); return; } _data.setProperty("capacity", (uint64_t)info.capacity); _data.setProperty("allocation", (uint64_t)info.allocation); }
Result StorageVolControlThread::getAllStorageVolList() { Result result; result.name = QString("%1_%2").arg(task.srcConName).arg(currPoolName); QStringList storageVolList; if (currStoragePool!=NULL) { virStoragePoolFree(currStoragePool); currStoragePool = NULL; }; currStoragePool = virStoragePoolLookupByName( *task.srcConnPtr, currPoolName.toUtf8().data()); if ( currStoragePool!=NULL && keep_alive ) { virStorageVolPtr *storageVol = NULL; // flags: extra flags; not used yet, so callers should always pass 0 unsigned int flags = 0; int ret = virStoragePoolListAllVolumes( currStoragePool, &storageVol, flags); if ( ret<0 ) { result.err = sendConnErrors(); result.result = false; result.msg = storageVolList; return result; }; // therefore correctly to use for() command, because storageVol[0] can not exist. for (int i = 0; i < ret; i++) { QString type, capacity, allocation; virStorageVolInfo info; if ( virStorageVolGetInfo(storageVol[i], &info)+1 ) { switch (info.type) { case VIR_STORAGE_VOL_FILE: type.append("file"); break; case VIR_STORAGE_VOL_BLOCK: type.append("block"); break; case VIR_STORAGE_VOL_DIR: type.append("dir"); break; case VIR_STORAGE_VOL_NETWORK: type.append("net"); break; default: type.append("-"); break; }; allocation.append(QString("%1").arg(info.allocation)); capacity.append(QString("%1").arg(info.capacity)); } else { sendConnErrors(); type.append("-"); allocation.append("-"); capacity.append("-"); }; QStringList currentAttr; currentAttr<< QString::fromUtf8( virStorageVolGetName(storageVol[i]) ) << QString::fromUtf8( virStorageVolGetPath(storageVol[i]) ) << QString( type ) << QString( allocation ) << QString( capacity );; storageVolList.append(currentAttr); //qDebug()<<currentAttr<<"Volume"; virStorageVolFree(storageVol[i]); }; free(storageVol); } else result.err = sendConnErrors(); result.result = true; result.msg = storageVolList; return result; }