[Libosinfo] [PATCHv4 06/11] Add OsinfoInstallConfig:config-params property

Christophe Fergeau cfergeau at redhat.com
Wed Dec 19 10:17:44 UTC 2012


On Wed, Dec 19, 2012 at 10:16:26AM +0100, Christophe Fergeau wrote:
> To summarize my current take on this, both OsinfoInstallConfig:config-params
> and OsinfoInstallScript:config-params are good to have. Depending on
> the use case, both can be useful, so we should keep both.
> We add two new methods osinfo_install_config_new_for_script() and
> osinfo_install_config_get_config_params(). We don't deprecate anything.
> osinfo_install_script_get_config_params() and osinfo_install_config_new()
> will still be there as they are useful in different context.
> And I don't see any huge confusion arising from that that cannot be fixed
> by some basic documentation (I said 'basic', there is no complicated
> confusing magic to understand there).

To make things even more clear, this means this patch on top of the series
(with the various hunks squashed into the right commits)

diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
index d0582ea..8e07177 100644
--- a/osinfo/libosinfo.syms
+++ b/osinfo/libosinfo.syms
@@ -388,8 +388,8 @@ LIBOSINFO_0.2.3 {
 	osinfo_db_get_datamap_list;
 	osinfo_db_identify_media;
 
+	osinfo_install_config_new_for_script;
 	osinfo_install_config_get_config_params;
-	osinfo_install_config_set_config_params;
 
 	osinfo_install_config_paramlist_get_type;
 	osinfo_install_config_paramlist_new;
diff --git a/osinfo/osinfo_install_config.c b/osinfo/osinfo_install_config.c
index c928227..e61bfb6 100644
--- a/osinfo/osinfo_install_config.c
+++ b/osinfo/osinfo_install_config.c
@@ -177,9 +177,15 @@ osinfo_install_config_init (OsinfoInstallConfig *config)
  * osinfo_install_config_new:
  * @id: the unique identifier
  *
- * Construct a new install configuration that is initially empty.
+ * Construct a new install configuration with default values for
+ * language, keyboard, timezone and admin password. The default values
+ * are to use an 'us' keyboard, an 'en_US.UTF-8' language and an
+ * 'America/New_York' timezone. The admin password is set to a random
+ * 8 character password.
+ *
+ * Returns: (transfer full): an install configuration with default
+ * values
  *
- * Returns: (transfer full): an empty install configuration
  */
 OsinfoInstallConfig *osinfo_install_config_new(const gchar *id)
 {
@@ -187,6 +193,20 @@ OsinfoInstallConfig *osinfo_install_config_new(const gchar *id)
 }
 
 
+/**
+ * osinfo_install_config_new_for_script:
+ * @id: the unique identifier
+ * @script: the #OsinfoInstallScript we are creating the configuration for
+ *
+ * Construct a new install configuration associated with @script.
+ * OsinfoInstallConfig:config-params will contain the
+ * #OsinfoInstallConfigParamList describing the parameters that can be set
+ * on the config object when creating a configuration for @script. See
+ * osinfo_install_config_new() for a description of the default values that
+ * will be set on the newly created #OsinfoInstallConfig.
+ *
+ * Returns: (transfer full): an install configuration
+ */
 OsinfoInstallConfig *osinfo_install_config_new_for_script(const gchar *id,
                                                           OsinfoInstallScript *script)
 {
diff --git a/osinfo/osinfo_install_config.h b/osinfo/osinfo_install_config.h
index 94575c3..112860b 100644
--- a/osinfo/osinfo_install_config.h
+++ b/osinfo/osinfo_install_config.h
@@ -97,6 +97,8 @@ struct _OsinfoInstallConfigClass
 GType osinfo_install_config_get_type(void);
 
 OsinfoInstallConfig *osinfo_install_config_new(const gchar *id);
+OsinfoInstallConfig *osinfo_install_config_new_for_script(const gchar *id,
+                                                          OsinfoInstallScript *script);
 
 void osinfo_install_config_set_hardware_arch(OsinfoInstallConfig *config,
                                              const gchar *arch);
@@ -198,8 +200,6 @@ void osinfo_install_config_set_post_install_drivers_location(OsinfoInstallConfig
                                                              const gchar *location);
 const gchar *osinfo_install_config_get_post_install_drivers_location(OsinfoInstallConfig *config);
 
-void osinfo_install_config_set_config_params(OsinfoInstallConfig *config,
-                                             OsinfoInstallConfigParamList *config_params);
 OsinfoInstallConfigParamList *osinfo_install_config_get_config_params(OsinfoInstallConfig *config);
 
 #endif /* __OSINFO_INSTALL_CONFIG_H__ */
diff --git a/osinfo/osinfo_install_config_param.c b/osinfo/osinfo_install_config_param.c
index d8502df..2fe19a2 100644
--- a/osinfo/osinfo_install_config_param.c
+++ b/osinfo/osinfo_install_config_param.c
@@ -35,11 +35,13 @@ G_DEFINE_TYPE (OsinfoInstallConfigParam, osinfo_install_config_param, OSINFO_TYP
 /**
  * SECTION:osinfo_install_config_param
  * @short_description: OS install configuration parameters (and its policies)
- * @see_also: #OsinfoInstallScript, #OsinfoInstallSciptConfig
+ * @see_also: #OsinfoInstallScript, #OsinfoInstallConfig
  *
- * #OsinfoInstallConfigParam is an entity for representing all parameters that
+ * #OsinfoInstallConfigParam is an entity for describing all parameters that
  * can be set in an automated installation. It is used to help applications to
- * generate an automated installation script
+ * generate an automated installation script. The actual parameter values
+ * for an #OsinfoInstallScript must be set using an #OsinfoInstallConfig
+ * object.
  */
 
 struct _OsinfoInstallConfigParamPrivate
diff --git a/osinfo/osinfo_install_config_private.h b/osinfo/osinfo_install_config_private.h
index 5a67576..5ad2162 100644
--- a/osinfo/osinfo_install_config_private.h
+++ b/osinfo/osinfo_install_config_private.h
@@ -26,9 +26,9 @@
 #ifndef __OSINFO_INSTALL_CONFIG_PRIVATE_H__
 #define __OSINFO_INSTALL_CONFIG_PRIVATE_H__
 
+void osinfo_install_config_set_config_params(OsinfoInstallConfig *config,
+                                             OsinfoInstallConfigParamList *config_params);
 GList *osinfo_install_config_get_param_value_list(OsinfoInstallConfig *config, const gchar *key);
-OsinfoInstallConfig *osinfo_install_config_new_for_script(const gchar *id,
-                                                          OsinfoInstallScript *script);
 
 #endif /* __OSINFO_INSTALL_CONFIG_PRIVATE_H__ */
 /*
diff --git a/osinfo/osinfo_install_script.c b/osinfo/osinfo_install_script.c
index e106eca..a121d15 100644
--- a/osinfo/osinfo_install_script.c
+++ b/osinfo/osinfo_install_script.c
@@ -39,12 +39,13 @@ G_DEFINE_TYPE (OsinfoInstallScript, osinfo_install_script, OSINFO_TYPE_ENTITY);
 
 /**
  * SECTION:osinfo_install_script
- * @short_description: OS install scripturation
- * @see_also: #OsinfoInstallScript
+ * @short_description: OS install script generation
+ * @see_also: #OsinfoInstallConfig
  *
- * #OsinfoInstallScript is an object for representing OS
- * install scripturation data. It is used to generate an
- * automated installation script
+ * #OsinfoInstallScript is an object used to generate an
+ * automated installation script for an OS. The OS
+ * configuration data (language, keyboard, timezone, ...)
+ * comes from an #OsinfoInstallConfig object.
  */
 
 struct _OsinfoInstallScriptPrivate
@@ -605,7 +606,6 @@ static xsltStylesheetPtr osinfo_install_script_load_template(const gchar *uri,
 
 static xmlNodePtr osinfo_install_script_generate_entity_config(OsinfoInstallConfig *config,
                                                                OsinfoEntity *entity,
-                                                               gboolean is_install_config,
                                                                const gchar *name,
                                                                GError **error)
 {
@@ -640,7 +640,7 @@ static xmlNodePtr osinfo_install_script_generate_entity_config(OsinfoInstallConf
         GList *values;
         GList *tmp2;
 
-        if (is_install_config)
+        if (OSINFO_IS_INSTALL_CONFIG(entity))
             values = osinfo_install_config_get_param_value_list(OSINFO_INSTALL_CONFIG(entity), tmp1->data);
         else
             values = osinfo_entity_get_param_value_list(entity, tmp1->data);
@@ -695,7 +695,6 @@ static xmlDocPtr osinfo_install_script_generate_config_xml(OsinfoInstallScript *
 
     if (!(node = osinfo_install_script_generate_entity_config(config,
                                                               OSINFO_ENTITY(script),
-                                                              FALSE,
                                                               "script",
                                                               error)))
         goto error;
@@ -707,7 +706,6 @@ static xmlDocPtr osinfo_install_script_generate_config_xml(OsinfoInstallScript *
 
     if (!(node = osinfo_install_script_generate_entity_config(config,
                                                               OSINFO_ENTITY(os),
-                                                              FALSE,
                                                               "os",
                                                               error)))
         goto error;
@@ -719,7 +717,6 @@ static xmlDocPtr osinfo_install_script_generate_config_xml(OsinfoInstallScript *
 
     if (!(node = osinfo_install_script_generate_entity_config(config,
                                                               OSINFO_ENTITY(config),
-                                                              TRUE,
                                                               "config",
                                                               error)))
         goto error;


Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libosinfo/attachments/20121219/88dac67c/attachment.sig>


More information about the Libosinfo mailing list