summaryrefslogtreecommitdiff
path: root/osinfo/osinfo_db.c
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2012-02-28 14:43:23 +0000
committerDaniel P. Berrange <berrange@redhat.com>2012-08-23 15:17:02 +0100
commiteb36dc50ee6a8b804d77ffe026cb9274b8e03210 (patch)
tree796119432ed9009f1140bda7d747b1b81e0e7ea7 /osinfo/osinfo_db.c
parent8ed01da848a65fb0fccf856ebac007c6aa52310e (diff)
downloadlibosinfo-eb36dc50ee6a8b804d77ffe026cb9274b8e03210.tar.gz
Associate install scripts with operating systems
Operating systems now get a new element <installer> <script id='http://fedoraproject.org/scripts/fedora/jeos'/> </installer> And there is a new top level element to go along with this: <install-script id='http://fedoraproject.org/scripts/fedora/jeos'> <profile>jeos</profile> <template> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> ....template for install script... </xsl:template> </xsl:stylesheet> </template> </install-script> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'osinfo/osinfo_db.c')
-rw-r--r--osinfo/osinfo_db.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/osinfo/osinfo_db.c b/osinfo/osinfo_db.c
index 6a8f4d1..6ae8a82 100644
--- a/osinfo/osinfo_db.c
+++ b/osinfo/osinfo_db.c
@@ -52,6 +52,7 @@ struct _OsinfoDbPrivate
OsinfoPlatformList *platforms;
OsinfoOsList *oses;
OsinfoDeploymentList *deployments;
+ OsinfoInstallScriptList *scripts;
};
static void osinfo_db_finalize (GObject *object);
@@ -65,6 +66,7 @@ osinfo_db_finalize (GObject *object)
g_object_unref(db->priv->platforms);
g_object_unref(db->priv->oses);
g_object_unref(db->priv->deployments);
+ g_object_unref(db->priv->scripts);
/* Chain up to the parent class */
G_OBJECT_CLASS (osinfo_db_parent_class)->finalize (object);
@@ -93,6 +95,7 @@ osinfo_db_init (OsinfoDb *db)
db->priv->platforms = osinfo_platformlist_new();
db->priv->oses = osinfo_oslist_new();
db->priv->deployments = osinfo_deploymentlist_new();
+ db->priv->scripts = osinfo_install_scriptlist_new();
}
/** PUBLIC METHODS */
@@ -168,6 +171,21 @@ OsinfoDeployment *osinfo_db_get_deployment(OsinfoDb *db, const gchar *id)
return OSINFO_DEPLOYMENT(osinfo_list_find_by_id(OSINFO_LIST(db->priv->deployments), id));
}
+/**
+ * osinfo_db_get_install_script:
+ * @db: the database
+ * @id: the unique operating system identifier
+ *
+ * Returns: (transfer none): the install script, or NULL if none is found
+ */
+OsinfoInstallScript *osinfo_db_get_install_script(OsinfoDb *db, const gchar *id)
+{
+ g_return_val_if_fail(OSINFO_IS_DB(db), NULL);
+ g_return_val_if_fail(id != NULL, NULL);
+
+ return OSINFO_INSTALL_SCRIPT(osinfo_list_find_by_id(OSINFO_LIST(db->priv->scripts), id));
+}
+
/**
* osinfo_db_find_deployment:
@@ -266,6 +284,20 @@ OsinfoDeploymentList *osinfo_db_get_deployment_list(OsinfoDb *db)
/**
+ * osinfo_db_get_install_script_list:
+ * @db: the database
+ *
+ * Returns: (transfer full): the list of install scripts
+ */
+OsinfoInstallScriptList *osinfo_db_get_install_script_list(OsinfoDb *db)
+{
+ g_return_val_if_fail(OSINFO_IS_DB(db), NULL);
+
+ return osinfo_install_scriptlist_new_copy(db->priv->scripts);
+}
+
+
+/**
* osinfo_db_add_os:
* @db: the database
* @os: (transfer none): an operating system
@@ -324,6 +356,22 @@ void osinfo_db_add_deployment(OsinfoDb *db, OsinfoDeployment *deployment)
osinfo_list_add(OSINFO_LIST(db->priv->deployments), OSINFO_ENTITY(deployment));
}
+
+/**
+ * osinfo_db_add_install_script:
+ * @db: the database
+ * @script: (transfer none): a install script
+ *
+ */
+void osinfo_db_add_install_script(OsinfoDb *db, OsinfoInstallScript *script)
+{
+ g_return_if_fail(OSINFO_IS_DB(db));
+ g_return_if_fail(OSINFO_IS_INSTALL_SCRIPT(script));
+
+ osinfo_list_add(OSINFO_LIST(db->priv->scripts), OSINFO_ENTITY(script));
+}
+
+
static gint media_volume_compare (gconstpointer a, gconstpointer b)
{
OsinfoMedia *media_a = OSINFO_MEDIA(a);