[libgovirt] api: Implement ovirt_api_get_storage_domains()



commit 7b56d8a66274e32b54002e76ea455c5ead0bae29
Author: Christophe Fergeau <cfergeau redhat com>
Date:   Wed Aug 21 16:19:38 2013 +0200

    api: Implement ovirt_api_get_storage_domains()

 govirt/govirt.sym  |    1 +
 govirt/ovirt-api.c |   29 +++++++++++++++++++++++++++++
 govirt/ovirt-api.h |    1 +
 3 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/govirt/govirt.sym b/govirt/govirt.sym
index 578ff0a..a04bcc6 100644
--- a/govirt/govirt.sym
+++ b/govirt/govirt.sym
@@ -53,6 +53,7 @@ GOVIRT_0.2.1 {
         ovirt_api_get_type;
         ovirt_api_new;
         ovirt_api_get_vms;
+        ovirt_api_get_storage_domains;
 
         ovirt_collection_fetch;
         ovirt_collection_fetch_async;
diff --git a/govirt/ovirt-api.c b/govirt/ovirt-api.c
index 31a9e48..ddb2300 100644
--- a/govirt/ovirt-api.c
+++ b/govirt/ovirt-api.c
@@ -39,6 +39,7 @@
 
 
 struct _OvirtApiPrivate {
+    OvirtCollection *storage_domains;
     OvirtCollection *vms;
 };
 
@@ -69,6 +70,7 @@ static void ovirt_api_dispose(GObject *object)
 {
     OvirtApi *api = OVIRT_API(object);
 
+    g_clear_object(&api->priv->storage_domains);
     g_clear_object(&api->priv->vms);
 
     G_OBJECT_CLASS(ovirt_api_parent_class)->dispose(object);
@@ -128,3 +130,30 @@ OvirtCollection *ovirt_api_get_vms(OvirtApi *api)
 
     return api->priv->vms;
 }
+
+
+/**
+ * ovirt_api_get_storage_domains:
+ * @api: a #OvirtApi
+ *
+ * Return value: (transfer full):
+ */
+OvirtCollection *ovirt_api_get_storage_domains(OvirtApi *api)
+{
+    const char *href;
+
+    g_return_val_if_fail(OVIRT_IS_API(api), NULL);
+
+    if (api->priv->storage_domains != NULL)
+        return api->priv->storage_domains;
+
+    href = ovirt_resource_get_sub_collection(OVIRT_RESOURCE(api), "storagedomains");
+    if (href == NULL)
+        return NULL;
+
+    api->priv->storage_domains = ovirt_collection_new(href, "storage_domains",
+                                                      OVIRT_TYPE_STORAGE_DOMAIN,
+                                                      "storage_domain");
+
+    return api->priv->storage_domains;
+}
diff --git a/govirt/ovirt-api.h b/govirt/ovirt-api.h
index 2fdce69..d1de522 100644
--- a/govirt/ovirt-api.h
+++ b/govirt/ovirt-api.h
@@ -61,6 +61,7 @@ struct _OvirtApiClass
 GType ovirt_api_get_type(void);
 OvirtApi *ovirt_api_new(void);
 
+OvirtCollection *ovirt_api_get_storage_domains(OvirtApi *api);
 OvirtCollection *ovirt_api_get_vms(OvirtApi *api);
 
 G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]