[Libosinfo] [PATCHv2 1/2] installer: API to generate commandline info
Zeeshan Ali (Khattak)
zeeshanak at gnome.org
Fri Apr 12 13:35:53 UTC 2013
On Fri, Apr 12, 2013 at 4:09 AM, Fabiano Fidêncio <fidencio at redhat.com> wrote:
> Each OS has a specific method to handle unattended installations.
> To start an unattended installation is needed pass a command line to the kernel
'is needed' -> 'one needs to'.
> specifying the method that will be used (kickstart for Fedora, autoyast for
> OpenSuSE's)
I don't think this part is true. The method name is just part of the
commandline syntax and its fixed for each installer/os.
>and its necessary informations to load the install script.
>
> This API enables apps to query such command line, if any.
> ---
> osinfo/libosinfo.syms | 2 ++
> osinfo/osinfo_install_script.c | 49 ++++++++++++++++++++++++++++++++++++++++--
> osinfo/osinfo_install_script.h | 4 ++++
> 3 files changed, 53 insertions(+), 2 deletions(-)
>
> diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
> index 8fcf327..bb5fc6f 100644
> --- a/osinfo/libosinfo.syms
> +++ b/osinfo/libosinfo.syms
> @@ -414,6 +414,8 @@ LIBOSINFO_0.2.6 {
> } LIBOSINFO_0.2.3;
>
> LIBOSINFO_0.2.7 {
> + osinfo_install_script_generate_command_line;
> +
> osinfo_platform_get_all_devices;
> } LIBOSINFO_0.2.6;
>
> diff --git a/osinfo/osinfo_install_script.c b/osinfo/osinfo_install_script.c
> index 3d5fe8d..42e977b 100644
> --- a/osinfo/osinfo_install_script.c
> +++ b/osinfo/osinfo_install_script.c
> @@ -732,6 +732,7 @@ static xmlNodePtr osinfo_install_script_generate_entity_xml(OsinfoInstallScript
> static xmlDocPtr osinfo_install_script_generate_config_xml(OsinfoInstallScript *script,
> OsinfoOs *os,
> OsinfoInstallConfig *config,
> + const gchar *node_name,
> GError **error)
> {
> xmlDocPtr doc = xmlNewDoc((xmlChar *)"1.0");
> @@ -740,7 +741,7 @@ static xmlDocPtr osinfo_install_script_generate_config_xml(OsinfoInstallScript *
>
> root = xmlNewDocNode(NULL,
> NULL,
> - (xmlChar*)"install-script-config",
> + (xmlChar*)node_name,
> NULL);
> xmlDocSetRootElement(doc, root);
>
> @@ -820,13 +821,14 @@ static gboolean osinfo_install_script_apply_template(OsinfoInstallScript *script
> OsinfoOs *os,
> const gchar *templateUri,
> const gchar *template,
> + const gchar *node_name,
> gchar **result,
> OsinfoInstallConfig *config,
> GError **error)
> {
> gboolean ret = FALSE;
> xsltStylesheetPtr templateXsl = osinfo_install_script_load_template(templateUri, template, error);
> - xmlDocPtr configXml = osinfo_install_script_generate_config_xml(script, os, config, error);
> + xmlDocPtr configXml = osinfo_install_script_generate_config_xml(script, os, config, node_name, error);
>
> if (!templateXsl || !configXml)
> goto cleanup;
> @@ -871,6 +873,7 @@ static void osinfo_install_script_template_loaded(GObject *src,
> data->os,
> uri,
> input,
> + "install-script-config",
> &output,
> data->config,
> &error)) {
> @@ -915,6 +918,7 @@ void osinfo_install_script_generate_async(OsinfoInstallScript *script,
> os,
> "<data>",
> templateData,
> + "install-script-config",
> &output,
> data->config,
> &error)) {
> @@ -1196,6 +1200,46 @@ GFile *osinfo_install_script_generate_output(OsinfoInstallScript *script,
> return data.file;
> }
>
> +/**
> + * osinfo_install_script_generate_command_line:
> + * @script: the install script
> + * @os: the os entity
> + * @config: the install script config
> + *
> + * Some install scripts needs pass a command line to the kernel, specifing the
Same grammatical mistake here.
> + * installation method to be used to provide an unattended installation and the
Same comment about installation method not worth mentioning.
> + * necessary parameters like the media where the install script file can be
> + * found, the install script filename, etc. Such install scripts belongs to OSs
belongs -> belong
> + * that provide paths to the kernel and initrd files that are needed for direct
> + * boot.
IMO: 'that are needed for direct boot' -> 'that can be used to
directly boot[INSERT LINK TO DOC ON QEMU'S DIRECT BOOT HERE] the OS in
order to pass the needed commandline to it.
> + * Returns: (transfer full): The generated command line string, NULL otherwise.
> + */
> +gchar *osinfo_install_script_generate_command_line(OsinfoInstallScript *script,
> + OsinfoOs *os,
> + OsinfoInstallConfig *config)
> +{
> + const gchar *templateData = osinfo_install_script_get_template_data(script);
> + gchar *output = NULL;
> +
> + if (templateData) {
> + GError *error = NULL;
> + if (!osinfo_install_script_apply_template(script,
> + os,
> + "<data>",
> + templateData,
> + "command-line",
> + &output,
> + config,
> + &error)) {
> + g_prefix_error(&error, "%s", _("Failed to apply script template: "));
> + }
> + }
> +
> + return output;
> +}
> +
> +
> OsinfoPathFormat osinfo_install_script_get_path_format(OsinfoInstallScript *script)
> {
> return osinfo_entity_get_param_value_enum
> @@ -1266,6 +1310,7 @@ int osinfo_install_script_get_post_install_drivers_signing_req(OsinfoInstallScri
> OSINFO_DEVICE_DRIVER_SIGNING_REQ_NONE);
> }
>
> +
> /*
> * Local variables:
> * indent-tabs-mode: nil
> diff --git a/osinfo/osinfo_install_script.h b/osinfo/osinfo_install_script.h
> index e94c88c..c3ec3c4 100644
> --- a/osinfo/osinfo_install_script.h
> +++ b/osinfo/osinfo_install_script.h
> @@ -175,6 +175,10 @@ GFile *osinfo_install_script_generate_output(OsinfoInstallScript *script,
> GCancellable *cancellable,
> GError **error);
>
> +gchar *osinfo_install_script_generate_command_line(OsinfoInstallScript *script,
> + OsinfoOs *os,
> + OsinfoInstallConfig *config);
> +
> gboolean osinfo_install_script_has_config_param(const OsinfoInstallScript *script, const OsinfoInstallConfigParam *config_param);
>
> gboolean osinfo_install_script_has_config_param_name(const OsinfoInstallScript *script, const gchar *name);
ACK with all those fixed.
--
Regards,
Zeeshan Ali (Khattak)
FSF member#5124
More information about the Libosinfo
mailing list