diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2012-02-28 14:43:23 +0000 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2012-08-23 15:17:02 +0100 |
commit | eb36dc50ee6a8b804d77ffe026cb9274b8e03210 (patch) | |
tree | 796119432ed9009f1140bda7d747b1b81e0e7ea7 /osinfo/osinfo_db.c | |
parent | 8ed01da848a65fb0fccf856ebac007c6aa52310e (diff) | |
download | libosinfo-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.c | 48 |
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); |