[libvirt] [glib PATCH 1/2] gconfig: Add _domain_os_get_firmware()

Fabiano Fidêncio fidencio at redhat.com
Mon Aug 26 17:03:22 UTC 2019


Add a way to get the value of <os firmware="bios|efi"/> which has been
set to the domain XML.

Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
 libvirt-gconfig/libvirt-gconfig-domain-os.c | 12 ++++++++++++
 libvirt-gconfig/libvirt-gconfig-domain-os.h |  1 +
 libvirt-gconfig/libvirt-gconfig.sym         |  1 +
 tests/test-gconfig.c                        |  2 ++
 4 files changed, 16 insertions(+)

diff --git a/libvirt-gconfig/libvirt-gconfig-domain-os.c b/libvirt-gconfig/libvirt-gconfig-domain-os.c
index 5aa247a..4bdbab2 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-os.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain-os.c
@@ -345,3 +345,15 @@ void gvir_config_domain_os_set_firmware(GVirConfigDomainOs *os, GVirConfigDomain
 
     xmlNewProp(node, (xmlChar*)"firmware", (xmlChar*)firmware_str);
 }
+
+GVirConfigDomainOsFirmware gvir_config_domain_os_get_firmware(GVirConfigDomainOs *os)
+{
+    g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os),
+                         GVIR_CONFIG_DOMAIN_OS_FIRMWARE_BIOS);
+
+    return gvir_config_object_get_attribute_genum
+            (GVIR_CONFIG_OBJECT(os),
+             NULL, "firmware",
+             GVIR_CONFIG_TYPE_DOMAIN_OS_FIRMWARE,
+             GVIR_CONFIG_DOMAIN_OS_FIRMWARE_BIOS);
+}
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-os.h b/libvirt-gconfig/libvirt-gconfig-domain-os.h
index 2a8fc13..f54fe87 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-os.h
+++ b/libvirt-gconfig/libvirt-gconfig-domain-os.h
@@ -104,6 +104,7 @@ void gvir_config_domain_os_set_smbios_mode(GVirConfigDomainOs *os,
                                            GVirConfigDomainOsSmBiosMode mode);
 void gvir_config_domain_os_enable_boot_menu(GVirConfigDomainOs *os, gboolean enable);
 void gvir_config_domain_os_bios_enable_serial(GVirConfigDomainOs *os, gboolean enable);
+GVirConfigDomainOsFirmware gvir_config_domain_os_get_firmware(GVirConfigDomainOs *os);
 void gvir_config_domain_os_set_firmware(GVirConfigDomainOs *os,
                                         GVirConfigDomainOsFirmware firmware);
 
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym
index d40bb7b..6686566 100644
--- a/libvirt-gconfig/libvirt-gconfig.sym
+++ b/libvirt-gconfig/libvirt-gconfig.sym
@@ -781,6 +781,7 @@ global:
 	gvir_config_domain_capabilities_os_get_firmwares;
 	gvir_config_domain_capabilities_os_get_type;
 	gvir_config_domain_os_firmware_get_type;
+	gvir_config_domain_os_get_firmware;
 	gvir_config_domain_os_set_firmware;
 	gvir_config_storage_vol_target_features_get_type;
 	gvir_config_storage_vol_target_set_features;
diff --git a/tests/test-gconfig.c b/tests/test-gconfig.c
index 6979578..6cd36d1 100644
--- a/tests/test-gconfig.c
+++ b/tests/test-gconfig.c
@@ -219,6 +219,7 @@ static void test_domain_os(void)
     g_assert_cmpint(gvir_config_domain_os_get_os_type(os), ==, GVIR_CONFIG_DOMAIN_OS_TYPE_HVM);
     g_assert_cmpstr(gvir_config_domain_os_get_arch(os), ==, "x86_64");
     g_assert_cmpstr(gvir_config_domain_os_get_machine(os), ==, "q35");
+    g_assert_cmpint(gvir_config_domain_os_get_firmware(os), ==, GVIR_CONFIG_DOMAIN_OS_FIRMWARE_EFI);
     devices = g_list_append(devices,
                              GINT_TO_POINTER(GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_CDROM));
     devices = g_list_append(devices,
@@ -234,6 +235,7 @@ static void test_domain_os(void)
     g_assert(os != NULL);
     g_assert_cmpstr(gvir_config_domain_os_get_arch(os), ==, "x86_64");
     g_assert_cmpint(gvir_config_domain_os_get_os_type(os), ==, GVIR_CONFIG_DOMAIN_OS_TYPE_HVM);
+    g_assert_cmpint(gvir_config_domain_os_get_firmware(os), ==, GVIR_CONFIG_DOMAIN_OS_FIRMWARE_EFI);
     domain_os_check_boot_devices(os);
     g_object_unref(G_OBJECT(os));
 
-- 
2.21.0




More information about the libvir-list mailing list