goto ignore;
} else if (STRCASEEQ(deviceType, "atapi-cdrom")) {
(*def)->type = VIR_DOMAIN_DISK_TYPE_BLOCK;
- (*def)->src = fileName;
- fileName = NULL;
+
+ if (STRCASEEQ(fileName, "auto detect")) {
+ (*def)->src = NULL;
+ (*def)->startupPolicy = VIR_DOMAIN_STARTUP_POLICY_OPTIONAL;
+ } else {
+ (*def)->src = fileName;
+ fileName = NULL;
+ }
} else if (STRCASEEQ(deviceType, "cdrom-raw")) {
/* Raw access CD-ROMs actually are device='lun' */
(*def)->device = VIR_DOMAIN_DISK_DEVICE_LUN;
(*def)->type = VIR_DOMAIN_DISK_TYPE_BLOCK;
- (*def)->src = fileName;
- fileName = NULL;
+
+ if (STRCASEEQ(fileName, "auto detect")) {
+ (*def)->src = NULL;
+ (*def)->startupPolicy = VIR_DOMAIN_STARTUP_POLICY_OPTIONAL;
+ } else {
+ (*def)->src = fileName;
+ fileName = NULL;
+ }
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid or not yet handled value '%s' "
VIR_FREE(fileName);
} else if (def->type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
- if (def->src != NULL) {
+ if (!def->src &&
+ def->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_OPTIONAL) {
+ virBufferAsprintf(buffer, "%s%d:%d.autodetect = \"true\"\n",
+ busType, controllerOrBus, unit);
+ virBufferAsprintf(buffer, "%s%d:%d.fileName = \"auto detect\"\n",
+ busType, controllerOrBus, unit);
+ } else {
virBufferAsprintf(buffer, "%s%d:%d.fileName = \"%s\"\n",
busType, controllerOrBus, unit, def->src);
}
--- /dev/null
+config.version = "8"
+virtualHW.version = "4"
+ide0:0.present = "true"
+ide0:0.deviceType = "cdrom-raw"
+ide0:0.fileName = "auto detect"
--- /dev/null
+<domain type='vmware'>
+ <uuid>00000000-0000-0000-0000-000000000000</uuid>
+ <memory unit='KiB'>32768</memory>
+ <currentMemory unit='KiB'>32768</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='i686'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <disk type='block' device='lun'>
+ <source startupPolicy='optional'/>
+ <target dev='hda' bus='ide'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='ide' index='0'/>
+ <video>
+ <model type='vmvga' vram='4096'/>
+ </video>
+ </devices>
+</domain>
--- /dev/null
+config.version = "8"
+virtualHW.version = "4"
+scsi0.present = "true"
+scsi0:0.present = "true"
+scsi0:0.deviceType = "cdrom-raw"
+scsi0:0.fileName = "auto detect"
--- /dev/null
+<domain type='vmware'>
+ <uuid>00000000-0000-0000-0000-000000000000</uuid>
+ <memory unit='KiB'>32768</memory>
+ <currentMemory unit='KiB'>32768</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='i686'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <disk type='block' device='lun'>
+ <source startupPolicy='optional'/>
+ <target dev='sda' bus='scsi'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <controller type='scsi' index='0'/>
+ <video>
+ <model type='vmvga' vram='4096'/>
+ </video>
+ </devices>
+</domain>
DO_TEST("cdrom-scsi-file", "cdrom-scsi-file");
DO_TEST("cdrom-scsi-device", "cdrom-scsi-device");
DO_TEST("cdrom-scsi-raw-device", "cdrom-scsi-raw-device");
+ DO_TEST("cdrom-scsi-raw-auto-detect", "cdrom-scsi-raw-auto-detect");
DO_TEST("cdrom-ide-file", "cdrom-ide-file");
DO_TEST("cdrom-ide-device", "cdrom-ide-device");
DO_TEST("cdrom-ide-raw-device", "cdrom-ide-raw-device");
+ DO_TEST("cdrom-ide-raw-auto-detect", "cdrom-ide-raw-auto-detect");
DO_TEST("floppy-file", "floppy-file");
DO_TEST("floppy-device", "floppy-device");
--- /dev/null
+.encoding = "UTF-8"
+config.version = "8"
+virtualHW.version = "4"
+guestOS = "other"
+uuid.bios = "56 4d 9b ef ac d9 b4 e0-c8 f0 ae a8 b9 10 35 15"
+displayName = "cdrom-ide-device"
+memsize = "4"
+numvcpus = "1"
+ide0:0.present = "true"
+ide0:0.deviceType = "cdrom-raw"
+ide0:0.autodetect = "true"
+ide0:0.fileName = "auto detect"
+floppy0.present = "false"
+floppy1.present = "false"
--- /dev/null
+<domain type='vmware'>
+ <name>cdrom-ide-device</name>
+ <uuid>564d9bef-acd9-b4e0-c8f0-aea8b9103515</uuid>
+ <memory unit='KiB'>4096</memory>
+ <os>
+ <type>hvm</type>
+ </os>
+ <devices>
+ <disk type='block' device='lun'>
+ <source startupPolicy='optional'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ </devices>
+</domain>
--- /dev/null
+.encoding = "UTF-8"
+config.version = "8"
+virtualHW.version = "4"
+guestOS = "other"
+uuid.bios = "56 4d 9b ef ac d9 b4 e0-c8 f0 ae a8 b9 10 35 15"
+displayName = "cdrom-scsi-device"
+memsize = "4"
+numvcpus = "1"
+scsi0.present = "true"
+scsi0:0.present = "true"
+scsi0:0.deviceType = "cdrom-raw"
+scsi0:0.autodetect = "true"
+scsi0:0.fileName = "auto detect"
+floppy0.present = "false"
+floppy1.present = "false"
--- /dev/null
+<domain type='vmware'>
+ <name>cdrom-scsi-device</name>
+ <uuid>564d9bef-acd9-b4e0-c8f0-aea8b9103515</uuid>
+ <memory unit='KiB'>4096</memory>
+ <os>
+ <type>hvm</type>
+ </os>
+ <devices>
+ <disk type='block' device='lun'>
+ <source startupPolicy='optional'/>
+ <target dev='sda' bus='scsi'/>
+ </disk>
+ </devices>
+</domain>
DO_TEST("cdrom-scsi-file", "cdrom-scsi-file", 4);
DO_TEST("cdrom-scsi-device", "cdrom-scsi-device", 4);
DO_TEST("cdrom-scsi-raw-device", "cdrom-scsi-raw-device", 4);
+ DO_TEST("cdrom-scsi-raw-auto-detect", "cdrom-scsi-raw-auto-detect", 4);
DO_TEST("cdrom-ide-file", "cdrom-ide-file", 4);
DO_TEST("cdrom-ide-device", "cdrom-ide-device", 4);
DO_TEST("cdrom-ide-raw-device", "cdrom-ide-raw-device", 4);
+ DO_TEST("cdrom-ide-raw-auto-detect", "cdrom-ide-raw-auto-detect", 4);
DO_TEST("floppy-file", "floppy-file", 4);
DO_TEST("floppy-device", "floppy-device", 4);