[Libosinfo] [libosinfo PATCH 5/6] os: Introduce APIs to deal with images
Fabiano Fidêncio
fidencio at redhat.com
Wed Oct 31 21:45:37 UTC 2018
Now that we can load images' information from osinfo-db, let's introduce
the APIs needed to add and list the images related to an OS.
https://gitlab.com/libosinfo/osinfo-db/issues/10
Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
osinfo/osinfo_os.c | 37 +++++++++++++++++++++++++++++++++++++
osinfo/osinfo_os.h | 4 ++++
2 files changed, 41 insertions(+)
diff --git a/osinfo/osinfo_os.c b/osinfo/osinfo_os.c
index 4f74331..6e12a06 100644
--- a/osinfo/osinfo_os.c
+++ b/osinfo/osinfo_os.c
@@ -52,6 +52,7 @@ struct _OsinfoOsPrivate
OsinfoMediaList *medias;
OsinfoTreeList *trees;
+ OsinfoImageList *images;
OsinfoOsVariantList *variants;
OsinfoResourcesList *minimum;
OsinfoResourcesList *recommended;
@@ -116,6 +117,7 @@ osinfo_os_finalize(GObject *object)
g_list_free(os->priv->deviceLinks);
g_object_unref(os->priv->medias);
g_object_unref(os->priv->trees);
+ g_object_unref(os->priv->images);
g_object_unref(os->priv->variants);
g_object_unref(os->priv->minimum);
g_object_unref(os->priv->recommended);
@@ -181,6 +183,7 @@ osinfo_os_init(OsinfoOs *os)
os->priv->deviceLinks = NULL;
os->priv->medias = osinfo_medialist_new();
os->priv->trees = osinfo_treelist_new();
+ os->priv->images = osinfo_imagelist_new();
os->priv->variants = osinfo_os_variantlist_new();
os->priv->minimum = osinfo_resourceslist_new();
os->priv->recommended = osinfo_resourceslist_new();
@@ -494,6 +497,40 @@ void osinfo_os_add_tree(OsinfoOs *os, OsinfoTree *tree)
osinfo_list_add(OSINFO_LIST(os->priv->trees), OSINFO_ENTITY(tree));
}
+/**
+ * osinfo_os_get_image_list:
+ * @os: an operating system
+ *
+ * Get all installed images associated with operating system @os.
+ *
+ * Returns: (transfer full): A list of images
+ */
+OsinfoImageList *osinfo_os_get_image_list(OsinfoOs *os)
+{
+ g_return_val_if_fail(OSINFO_IS_OS(os), NULL);
+
+ OsinfoImageList *newList = osinfo_imagelist_new();
+
+ osinfo_list_add_all(OSINFO_LIST(newList), OSINFO_LIST(os->priv->images));
+
+ return newList;
+}
+
+/**
+ * osinfo_os_add_image:
+ * @os: an operating system
+ * @image: (transfer none): the image to add
+ *
+ * Adds an installed image @image to operating system @os.
+ */
+void osinfo_os_add_image(OsinfoOs *os, OsinfoImage *image)
+{
+ g_return_if_fail(OSINFO_IS_OS(os));
+ g_return_if_fail(OSINFO_IS_IMAGE(image));
+
+ osinfo_list_add(OSINFO_LIST(os->priv->images), OSINFO_ENTITY(image));
+}
+
/**
* osinfo_os_get_variant_list:
* @os: an operating system
diff --git a/osinfo/osinfo_os.h b/osinfo/osinfo_os.h
index 96bd6e3..d51bbb4 100644
--- a/osinfo/osinfo_os.h
+++ b/osinfo/osinfo_os.h
@@ -34,6 +34,8 @@
#include <osinfo/osinfo_tree.h>
#include <osinfo/osinfo_resources.h>
#include <osinfo/osinfo_resourceslist.h>
+#include <osinfo/osinfo_image.h>
+#include <osinfo/osinfo_imagelist.h>
#ifndef __OSINFO_OS_H__
#define __OSINFO_OS_H__
@@ -116,6 +118,8 @@ OsinfoMediaList *osinfo_os_get_media_list(OsinfoOs *os);
void osinfo_os_add_media(OsinfoOs *os, OsinfoMedia *media);
OsinfoTreeList *osinfo_os_get_tree_list(OsinfoOs *os);
void osinfo_os_add_tree(OsinfoOs *os, OsinfoTree *tree);
+OsinfoImageList *osinfo_os_get_image_list(OsinfoOs *os);
+void osinfo_os_add_image(OsinfoOs *os, OsinfoImage *image);
OsinfoOsVariantList *osinfo_os_get_variant_list(OsinfoOs *os);
void osinfo_os_add_variant(OsinfoOs *os, OsinfoOsVariant *variant);
OsinfoResourcesList *osinfo_os_get_minimum_resources(OsinfoOs *os);
--
2.19.1
More information about the Libosinfo
mailing list