Blob Blame History Raw
From 8ab1be89c70d0f6454e74442d382b9ea55f1df58 Mon Sep 17 00:00:00 2001
From: "Eduardo Lima (Etrunko)" <etrunko@redhat.com>
Date: Tue, 16 Jun 2020 10:07:49 -0300
Subject: [PATCH] ovirt-storage-domain: Introduce
 ovirt_storage_domain_get_disks()

This function is used to return the list of disks in a given storage
domain with DATA type.

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
---
 govirt/govirt.sym             |  2 ++
 govirt/ovirt-storage-domain.c | 28 ++++++++++++++++++++++++++++
 govirt/ovirt-storage-domain.h |  1 +
 3 files changed, 31 insertions(+)

diff --git a/govirt/govirt.sym b/govirt/govirt.sym
index 1cc2a8e..4cd6bb8 100644
--- a/govirt/govirt.sym
+++ b/govirt/govirt.sym
@@ -146,5 +146,7 @@ GOVIRT_0.4.1 {
         ovirt_disk_get_type;
         ovirt_disk_content_type_get_type;
         ovirt_disk_new;
+
+        ovirt_storage_domain_get_disks;
 } GOVIRT_0.4.0;
 # .... define new API here using predicted next version number ....
diff --git a/govirt/ovirt-storage-domain.c b/govirt/ovirt-storage-domain.c
index a713d89..d02c3d5 100644
--- a/govirt/ovirt-storage-domain.c
+++ b/govirt/ovirt-storage-domain.c
@@ -27,6 +27,7 @@
 
 struct _OvirtStorageDomainPrivate {
     OvirtCollection *files;
+    OvirtCollection *disks;
     GStrv data_center_ids;
 
     gchar *data_center_href;
@@ -172,6 +173,7 @@ ovirt_storage_domain_dispose(GObject *obj)
     OvirtStorageDomain *domain = OVIRT_STORAGE_DOMAIN(obj);
 
     g_clear_object(&domain->priv->files);
+    g_clear_object(&domain->priv->disks);
     g_clear_pointer(&domain->priv->data_center_ids, g_strfreev);
     g_clear_pointer(&domain->priv->data_center_href, g_free);
     g_clear_pointer(&domain->priv->data_center_id, g_free);
@@ -399,3 +401,29 @@ OvirtCollection *ovirt_storage_domain_get_files(OvirtStorageDomain *domain)
 
     return domain->priv->files;
 }
+
+/**
+ * ovirt_storage_domain_get_disks:
+ * @domain: a #OvirtStorageDomain
+ *
+ * Gets a #OvirtCollection representing the list of remote disks from a
+ * storage domain object.  This method does not initiate any network
+ * activity, the remote file list must be then be fetched using
+ * ovirt_collection_fetch() or ovirt_collection_fetch_async().
+ *
+ * Return value: (transfer none): a #OvirtCollection representing the list
+ * of disks associated with @domain.
+ */
+OvirtCollection *ovirt_storage_domain_get_disks(OvirtStorageDomain *domain)
+{
+    g_return_val_if_fail(OVIRT_IS_STORAGE_DOMAIN(domain), NULL);
+
+    if (domain->priv->disks == NULL)
+        domain->priv->disks = ovirt_sub_collection_new_from_resource(OVIRT_RESOURCE(domain),
+                                                                     "disks",
+                                                                     "disks",
+                                                                     OVIRT_TYPE_DISK,
+                                                                     "disk");
+
+    return domain->priv->disks;
+}
diff --git a/govirt/ovirt-storage-domain.h b/govirt/ovirt-storage-domain.h
index f122e27..97cfb06 100644
--- a/govirt/ovirt-storage-domain.h
+++ b/govirt/ovirt-storage-domain.h
@@ -86,6 +86,7 @@ GType ovirt_storage_domain_get_type(void);
 OvirtStorageDomain *ovirt_storage_domain_new(void);
 
 OvirtCollection *ovirt_storage_domain_get_files(OvirtStorageDomain *domain);
+OvirtCollection *ovirt_storage_domain_get_disks(OvirtStorageDomain *domain);
 
 G_END_DECLS
 
-- 
2.26.2