summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabiano Fidêncio <fidencio@redhat.com>2018-11-23 12:36:46 +0100
committerFabiano Fidêncio <fidencio@redhat.com>2018-12-14 12:27:46 +0100
commitafb72a93c5cce2c7e2b4a7c19ee6b4177440a37c (patch)
tree705d53382b894d304a02fdeb17f784363d0692ff
parente84820212b2cc88d64ee756aaa17f1532145c228 (diff)
downloadlibosinfo-afb72a93c5cce2c7e2b4a7c19ee6b4177440a37c.tar.gz
media: Add _supports_installer_script()
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
-rw-r--r--osinfo/libosinfo.syms2
-rw-r--r--osinfo/osinfo_media.c65
-rw-r--r--osinfo/osinfo_media.h2
3 files changed, 68 insertions, 1 deletions
diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
index d87b7c0..45a7219 100644
--- a/osinfo/libosinfo.syms
+++ b/osinfo/libosinfo.syms
@@ -543,6 +543,8 @@ LIBOSINFO_1.3.0 {
osinfo_imagelist_get_type;
osinfo_imagelist_new;
+ osinfo_media_supports_installer_script;
+
osinfo_os_add_image;
osinfo_os_add_maximum_resources;
osinfo_os_get_all_device_links;
diff --git a/osinfo/osinfo_media.c b/osinfo/osinfo_media.c
index 293732d..519f8ab 100644
--- a/osinfo/osinfo_media.c
+++ b/osinfo/osinfo_media.c
@@ -157,7 +157,8 @@ enum {
PROP_OS,
PROP_LANGUAGES,
PROP_VOLUME_SIZE,
- PROP_EJECT_AFTER_INSTALL
+ PROP_EJECT_AFTER_INSTALL,
+ PROP_INSTALLER_SCRIPT
};
static void
@@ -242,6 +243,11 @@ osinfo_media_get_property(GObject *object,
osinfo_media_get_eject_after_install(media));
break;
+ case PROP_INSTALLER_SCRIPT:
+ g_value_set_boolean(value,
+ osinfo_media_supports_installer_script(media));
+ break;
+
default:
/* We don't have any other property... */
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
@@ -342,8 +348,14 @@ osinfo_media_set_property(GObject *object,
osinfo_entity_set_param_boolean(OSINFO_ENTITY(media),
OSINFO_MEDIA_PROP_EJECT_AFTER_INSTALL,
g_value_get_boolean(value));
+ break;
+ case PROP_INSTALLER_SCRIPT:
+ osinfo_entity_set_param_boolean(OSINFO_ENTITY(media),
+ OSINFO_MEDIA_PROP_INSTALLER_SCRIPT,
+ g_value_get_boolean(value));
break;
+
default:
/* We don't have any other property... */
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
@@ -604,6 +616,22 @@ osinfo_media_class_init(OsinfoMediaClass *klass)
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS);
g_object_class_install_property(g_klass, PROP_EJECT_AFTER_INSTALL, pspec);
+
+ /**
+ * OsinfoMedia:installer-script:
+ *
+ * Whether the media supports installation via an install-script.
+ *
+ * Some distros provide a few different medias and not all the medias support
+ * installation via an install script.
+ */
+ pspec = g_param_spec_boolean("installer-script",
+ "InstallerScript",
+ _("Whether the media should be used for an installation using install scripts"),
+ TRUE /* default value */,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property(g_klass, PROP_INSTALLER_SCRIPT, pspec);
}
static void
@@ -1312,6 +1340,41 @@ gboolean osinfo_media_get_eject_after_install(OsinfoMedia *media)
(OSINFO_ENTITY(media), OSINFO_MEDIA_PROP_EJECT_AFTER_INSTALL, TRUE);
}
+/**
+ * osinfo_media_supports_installer_script:
+ * @media: an #OsinfoMedia instance
+ *
+ * Whether @media supports installation using install scripts.
+ *
+ * Returns: #TRUE if install-scripts are supported by the media,
+ * #FALSE otherwise
+ */
+gboolean osinfo_media_supports_installer_script(OsinfoMedia *media)
+{
+ OsinfoOs *os;
+ OsinfoInstallScriptList *list;
+ gboolean ret;
+
+ g_return_val_if_fail(OSINFO_IS_MEDIA(media), FALSE);
+
+ os = osinfo_media_get_os(media);
+ list = osinfo_os_get_install_script_list(os);
+
+ if (osinfo_list_get_length(OSINFO_LIST(list)) == 0) {
+ ret = FALSE;
+ goto cleanup;
+ }
+
+ ret = osinfo_entity_get_param_value_boolean_with_default
+ (OSINFO_ENTITY(media), OSINFO_MEDIA_PROP_INSTALLER_SCRIPT, TRUE);
+
+ cleanup:
+ g_object_unref(list);
+ g_object_unref(os);
+
+ return ret;
+}
+
/*
* Local variables:
* indent-tabs-mode: nil
diff --git a/osinfo/osinfo_media.h b/osinfo/osinfo_media.h
index 6df7b60..27d77ae 100644
--- a/osinfo/osinfo_media.h
+++ b/osinfo/osinfo_media.h
@@ -91,6 +91,7 @@ typedef struct _OsinfoMediaPrivate OsinfoMediaPrivate;
#define OSINFO_MEDIA_PROP_VARIANT "variant"
#define OSINFO_MEDIA_PROP_VOLUME_SIZE "volume-size"
#define OSINFO_MEDIA_PROP_EJECT_AFTER_INSTALL "eject-after-install"
+#define OSINFO_MEDIA_PROP_INSTALLER_SCRIPT "installer-script"
/* object */
struct _OsinfoMedia
@@ -142,6 +143,7 @@ gboolean osinfo_media_get_live(OsinfoMedia *media);
gint osinfo_media_get_installer_reboots(OsinfoMedia *media);
gint64 osinfo_media_get_volume_size(OsinfoMedia *media);
gboolean osinfo_media_get_eject_after_install(OsinfoMedia *media);
+gboolean osinfo_media_supports_installer_script(OsinfoMedia *media);
#endif /* __OSINFO_MEDIA_H__ */
/*