
On Thu, Jun 14, 2018 at 05:59:37PM +0200, Katerina Koukiou wrote:
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- data/Makefile.am | 4 ++- data/org.libvirt.StorageVol.xml | 7 ++++ src/Makefile.am | 4 ++- src/connect.c | 6 ++++ src/connect.h | 1 + src/storagevol.c | 77 +++++++++++++++++++++++++++++++++++++++++ src/storagevol.h | 9 +++++ src/util.c | 35 +++++++++++++++++++ src/util.h | 16 +++++++++ 9 files changed, 157 insertions(+), 2 deletions(-) create mode 100644 data/org.libvirt.StorageVol.xml create mode 100644 src/storagevol.c create mode 100644 src/storagevol.h
[...]
diff --git a/src/storagevol.c b/src/storagevol.c new file mode 100644 index 0000000..0097a7f --- /dev/null +++ b/src/storagevol.c @@ -0,0 +1,77 @@ +#include "storagevol.h" +#include "util.h" + +#include <libvirt/libvirt.h> + +static virtDBusGDBusPropertyTable virtDBusStorageVolPropertyTable[] = { + { 0 } +}; + +static virtDBusGDBusMethodTable virtDBusStorageVolMethodTable[] = { + { 0 } +}; + +static gchar ** +virtDBusStorageVolEnumerate(gpointer userData) +{ + virtDBusConnect *connect = userData; + g_autoptr(virStoragePoolPtr) storagePools = NULL; + gint numPools = 0; + GPtrArray *list = NULL; + + if (!virtDBusConnectOpen(connect, NULL)) + return NULL; + + numPools = virConnectListAllStoragePools(connect->connection, + &storagePools, 0); + if (numPools <= 0) + return NULL; + + list = g_ptr_array_new(); + + for (gint i = 0; i < numPools; i++) { + g_autoptr(virStorageVolPtr) storageVols = NULL; + gint numVols; + + numVols = virStoragePoolListAllVolumes(storagePools[i], + &storageVols, 0); + if (numVols <= 0) + continue; + + for (gint j = 0; j < numVols; j++) { + gchar *volPath = virtDBusUtilBusPathForVirStorageVol(storageVols[j], + connect->storageVolPath); + g_ptr_array_add(list, volPath); + } + } + + if (list->len > 0) + g_ptr_array_add(list, NULL); + + return (gchar **)g_ptr_array_free(list, FALSE);
Indentation is off by +1. Reviewed-by: Pavel Hrdina <phrdina@redhat.com>