Beispiel #1
0
static void test_domain_device_disk(void)
{
    GVirConfigDomain *domain;
    GVirConfigDomainDisk *disk;
    GVirConfigDomainDiskDriver *driver;
    GList *disks;

    domain = gvir_config_domain_new();

    driver = gvir_config_domain_disk_driver_new();
    gvir_config_domain_disk_driver_set_name(driver, "foo");
    gvir_config_domain_disk_driver_set_format(driver, GVIR_CONFIG_DOMAIN_DISK_FORMAT_BOCHS);
    gvir_config_domain_disk_driver_set_name(driver, "qemu");
    gvir_config_domain_disk_driver_set_cache(driver, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE);
    gvir_config_domain_disk_driver_set_format(driver, GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW2);
    gvir_config_domain_disk_driver_set_copy_on_read(driver, TRUE);

    disk = gvir_config_domain_disk_new();
    gvir_config_domain_disk_set_type(disk, GVIR_CONFIG_DOMAIN_DISK_FILE);
    gvir_config_domain_disk_set_guest_device_type(disk, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK);
    gvir_config_domain_disk_set_source(disk, "/tmp/foo/bar");
    gvir_config_domain_disk_set_startup_policy (disk, GVIR_CONFIG_DOMAIN_DISK_STARTUP_POLICY_REQUISITE);
    gvir_config_domain_disk_set_target_bus(disk, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE);
    gvir_config_domain_disk_set_target_dev(disk, "hda");
    gvir_config_domain_disk_set_driver(disk, driver);
    g_object_unref(G_OBJECT(driver));
    gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(disk));
    g_object_unref(disk);

    check_xml(domain, "gconfig-domain-device-disk.xml");

    disks = get_devices_by_type(domain, GVIR_CONFIG_TYPE_DOMAIN_DISK);
    g_assert_cmpint(g_list_length(disks), ==, 1);
    g_assert(GVIR_CONFIG_IS_DOMAIN_DISK(disks->data));
    disk = GVIR_CONFIG_DOMAIN_DISK(disks->data);
    g_assert_cmpint(gvir_config_domain_disk_get_disk_type(disk), ==, GVIR_CONFIG_DOMAIN_DISK_FILE);
    g_assert_cmpint(gvir_config_domain_disk_get_guest_device_type(disk), ==, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK);
    g_assert_cmpint(gvir_config_domain_disk_get_startup_policy (disk), ==, GVIR_CONFIG_DOMAIN_DISK_STARTUP_POLICY_REQUISITE);
    g_assert_cmpstr(gvir_config_domain_disk_get_source(disk), ==, "/tmp/foo/bar");
    driver = gvir_config_domain_disk_get_driver(disk);
    g_assert(driver != NULL);
    g_assert_cmpint(gvir_config_domain_disk_driver_get_cache(driver), ==, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE);
    g_assert_cmpstr(gvir_config_domain_disk_driver_get_name(driver), ==, "qemu");
    g_assert_cmpint(gvir_config_domain_disk_driver_get_format(driver), ==, GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW2);
    g_assert(gvir_config_domain_disk_driver_get_copy_on_read(driver));
    g_assert_cmpint(gvir_config_domain_disk_get_target_bus(disk), ==, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE);
    g_assert_cmpstr(gvir_config_domain_disk_get_target_dev(disk), ==, "hda");
    g_object_unref(G_OBJECT(driver));

    gvir_config_domain_disk_set_driver(disk, NULL);
    driver = gvir_config_domain_disk_get_driver(disk);
    g_assert(driver == NULL);

    g_list_free_full(disks, g_object_unref);

    g_object_unref(G_OBJECT(domain));
}
Beispiel #2
0
G_GNUC_INTERNAL GVirDomainDevice *gvir_domain_device_new(GVirDomain *domain,
                                                         GVirConfigDomainDevice *config)
{
    GType type;

    g_return_val_if_fail(GVIR_IS_DOMAIN(domain), NULL);
    g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DEVICE(config), NULL);

    if (GVIR_CONFIG_IS_DOMAIN_DISK(config)) {
        type = GVIR_TYPE_DOMAIN_DISK;
    } else if (GVIR_CONFIG_IS_DOMAIN_INTERFACE(config)) {
        type = GVIR_TYPE_DOMAIN_INTERFACE;
    } else {
        g_debug("Unknown device type: %s", G_OBJECT_TYPE_NAME(config));
        return NULL;
    }

    return GVIR_DOMAIN_DEVICE(g_object_new(type,
                                           "config", config,
                                           "domain", domain, NULL));
}