1 /* 2 * libvirt-gconfig-domain-disk.h: libvirt domain disk configuration 3 * 4 * Copyright (C) 2011 Red Hat, Inc. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library. If not, see 18 * <http://www.gnu.org/licenses/>. 19 * 20 * Author: Christophe Fergeau <cfergeau@gmail.com> 21 */ 22 23 #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) 24 #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." 25 #endif 26 27 #ifndef __LIBVIRT_GCONFIG_DOMAIN_DISK_H__ 28 #define __LIBVIRT_GCONFIG_DOMAIN_DISK_H__ 29 30 G_BEGIN_DECLS 31 32 #include <libvirt-gconfig/libvirt-gconfig-domain-disk-driver.h> 33 34 #define GVIR_CONFIG_TYPE_DOMAIN_DISK (gvir_config_domain_disk_get_type ()) 35 #define GVIR_CONFIG_DOMAIN_DISK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK, GVirConfigDomainDisk)) 36 #define GVIR_CONFIG_DOMAIN_DISK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_DISK, GVirConfigDomainDiskClass)) 37 #define GVIR_CONFIG_IS_DOMAIN_DISK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK)) 38 #define GVIR_CONFIG_IS_DOMAIN_DISK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_DISK)) 39 #define GVIR_CONFIG_DOMAIN_DISK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK, GVirConfigDomainDiskClass)) 40 41 typedef struct _GVirConfigDomainDisk GVirConfigDomainDisk; 42 typedef struct _GVirConfigDomainDiskPrivate GVirConfigDomainDiskPrivate; 43 typedef struct _GVirConfigDomainDiskClass GVirConfigDomainDiskClass; 44 45 struct _GVirConfigDomainDisk 46 { 47 GVirConfigDomainDevice parent; 48 49 GVirConfigDomainDiskPrivate *priv; 50 51 /* Do not add fields to this struct */ 52 }; 53 54 struct _GVirConfigDomainDiskClass 55 { 56 GVirConfigDomainDeviceClass parent_class; 57 58 gpointer padding[20]; 59 }; 60 61 typedef enum { 62 GVIR_CONFIG_DOMAIN_DISK_FILE, 63 GVIR_CONFIG_DOMAIN_DISK_BLOCK, 64 GVIR_CONFIG_DOMAIN_DISK_DIR, 65 GVIR_CONFIG_DOMAIN_DISK_NETWORK 66 } GVirConfigDomainDiskType; 67 68 typedef enum { 69 GVIR_CONFIG_DOMAIN_DISK_BUS_IDE, 70 GVIR_CONFIG_DOMAIN_DISK_BUS_FDC, 71 GVIR_CONFIG_DOMAIN_DISK_BUS_SCSI, 72 GVIR_CONFIG_DOMAIN_DISK_BUS_VIRTIO, 73 GVIR_CONFIG_DOMAIN_DISK_BUS_XEN, 74 GVIR_CONFIG_DOMAIN_DISK_BUS_USB, 75 GVIR_CONFIG_DOMAIN_DISK_BUS_UML, 76 GVIR_CONFIG_DOMAIN_DISK_BUS_SATA 77 } GVirConfigDomainDiskBus; 78 79 typedef enum { 80 GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK, 81 GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_FLOPPY, 82 GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_CDROM 83 } GVirConfigDomainDiskGuestDeviceType; 84 85 typedef enum { 86 GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_NO, 87 GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_INTERNAL, 88 GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_EXTERNAL 89 } GVirConfigDomainDiskSnapshotType; 90 91 typedef enum { 92 GVIR_CONFIG_DOMAIN_DISK_STARTUP_POLICY_MANDATORY, 93 GVIR_CONFIG_DOMAIN_DISK_STARTUP_POLICY_REQUISITE, 94 GVIR_CONFIG_DOMAIN_DISK_STARTUP_POLICY_OPTIONAL 95 } GVirConfigDomainDiskStartupPolicy; 96 97 /* backward compatibility */ 98 #define GVIR_CONFIG_DOMAIN_DISK_FORMAT_AIO GVIR_CONFIG_DOMAIN_DISK_FORMAT_RAW; 99 100 GType gvir_config_domain_disk_get_type(void); 101 102 GVirConfigDomainDisk *gvir_config_domain_disk_new(void); 103 GVirConfigDomainDisk *gvir_config_domain_disk_new_from_xml(const gchar *xml, 104 GError **error); 105 106 void gvir_config_domain_disk_set_type(GVirConfigDomainDisk *disk, 107 GVirConfigDomainDiskType type); 108 void gvir_config_domain_disk_set_guest_device_type(GVirConfigDomainDisk *disk, 109 GVirConfigDomainDiskGuestDeviceType type); 110 void gvir_config_domain_disk_set_snapshot_type(GVirConfigDomainDisk *disk, 111 GVirConfigDomainDiskSnapshotType type); 112 void gvir_config_domain_disk_set_startup_policy(GVirConfigDomainDisk *disk, 113 GVirConfigDomainDiskStartupPolicy policy); 114 void gvir_config_domain_disk_set_source(GVirConfigDomainDisk *disk, 115 const char *source); 116 G_DEPRECATED_FOR(gvir_config_domain_disk_driver_set_cache) 117 void gvir_config_domain_disk_set_driver_cache(GVirConfigDomainDisk *disk, 118 GVirConfigDomainDiskCacheType cache_type); 119 G_DEPRECATED_FOR(gvir_config_domain_disk_driver_set_name) 120 void gvir_config_domain_disk_set_driver_name(GVirConfigDomainDisk *disk, 121 const char *driver_name); 122 G_DEPRECATED_FOR(gvir_config_domain_disk_driver_set_format) 123 void gvir_config_domain_disk_set_driver_type(GVirConfigDomainDisk *disk, 124 const char *driver_type); 125 G_DEPRECATED_FOR(gvir_config_domain_disk_driver_set_format) 126 void gvir_config_domain_disk_set_driver_format(GVirConfigDomainDisk *disk, 127 GVirConfigDomainDiskFormat format); 128 void gvir_config_domain_disk_set_target_bus(GVirConfigDomainDisk *disk, 129 GVirConfigDomainDiskBus bus); 130 void gvir_config_domain_disk_set_target_dev(GVirConfigDomainDisk *disk, 131 const char *dev); 132 void gvir_config_domain_disk_set_driver(GVirConfigDomainDisk *disk, 133 GVirConfigDomainDiskDriver *driver); 134 GVirConfigDomainDiskDriver *gvir_config_domain_disk_get_driver(GVirConfigDomainDisk *disk); 135 136 GVirConfigDomainDiskType gvir_config_domain_disk_get_disk_type(GVirConfigDomainDisk *disk); 137 GVirConfigDomainDiskGuestDeviceType gvir_config_domain_disk_get_guest_device_type(GVirConfigDomainDisk *disk); 138 GVirConfigDomainDiskSnapshotType gvir_config_domain_disk_get_snapshot_type(GVirConfigDomainDisk *disk); 139 GVirConfigDomainDiskStartupPolicy gvir_config_domain_disk_get_startup_policy(GVirConfigDomainDisk *disk); 140 const char *gvir_config_domain_disk_get_source(GVirConfigDomainDisk *disk); 141 G_DEPRECATED_FOR(gvir_config_domain_disk_driver_get_cache) 142 GVirConfigDomainDiskCacheType gvir_config_domain_disk_get_driver_cache(GVirConfigDomainDisk *disk); 143 G_DEPRECATED_FOR(gvir_config_domain_disk_driver_get_name) 144 const char *gvir_config_domain_disk_get_driver_name(GVirConfigDomainDisk *disk); 145 G_DEPRECATED_FOR(gvir_config_domain_disk_driver_get_format) 146 const char *gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk); 147 G_DEPRECATED_FOR(gvir_config_domain_disk_driver_get_format) 148 GVirConfigDomainDiskFormat gvir_config_domain_disk_get_driver_format(GVirConfigDomainDisk *disk); 149 GVirConfigDomainDiskBus gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk); 150 const char *gvir_config_domain_disk_get_target_dev(GVirConfigDomainDisk *disk); 151 void gvir_config_domain_disk_set_readonly(GVirConfigDomainDisk *disk, 152 gboolean readonly); 153 154 G_END_DECLS 155 156 #endif /* __LIBVIRT_GCONFIG_DOMAIN_DISK_H__ */ 157