164 |
164 |
constants.HV_VNC_X509: hv_base.OPT_DIR_CHECK,
|
165 |
165 |
constants.HV_VNC_X509_VERIFY: hv_base.NO_CHECK,
|
166 |
166 |
constants.HV_VNC_PASSWORD_FILE: hv_base.OPT_FILE_CHECK,
|
|
167 |
constants.HV_KVM_FLOPPY_IMAGE_PATH: hv_base.OPT_FILE_CHECK,
|
167 |
168 |
constants.HV_CDROM_IMAGE_PATH: hv_base.OPT_FILE_CHECK,
|
|
169 |
constants.HV_KVM_CDROM2_IMAGE_PATH: hv_base.OPT_FILE_CHECK,
|
168 |
170 |
constants.HV_BOOT_ORDER:
|
169 |
171 |
hv_base.ParamInSet(True, constants.HT_KVM_VALID_BO_TYPES),
|
170 |
172 |
constants.HV_NIC_TYPE:
|
171 |
173 |
hv_base.ParamInSet(True, constants.HT_KVM_VALID_NIC_TYPES),
|
172 |
174 |
constants.HV_DISK_TYPE:
|
173 |
175 |
hv_base.ParamInSet(True, constants.HT_KVM_VALID_DISK_TYPES),
|
|
176 |
constants.HV_KVM_CDROM_DISK_TYPE:
|
|
177 |
hv_base.ParamInSet(False, constants.HT_KVM_VALID_DISK_TYPES),
|
174 |
178 |
constants.HV_USB_MOUSE:
|
175 |
179 |
hv_base.ParamInSet(False, constants.HT_KVM_VALID_MOUSE_TYPES),
|
176 |
180 |
constants.HV_MIGRATION_PORT: hv_base.NET_PORT_CHECK,
|
... | ... | |
517 |
521 |
hvp = instance.hvparams
|
518 |
522 |
boot_disk = hvp[constants.HV_BOOT_ORDER] == constants.HT_BO_DISK
|
519 |
523 |
boot_cdrom = hvp[constants.HV_BOOT_ORDER] == constants.HT_BO_CDROM
|
|
524 |
boot_floppy = hvp[constants.HV_BOOT_ORDER] == constants.HT_BO_FLOPPY
|
520 |
525 |
boot_network = hvp[constants.HV_BOOT_ORDER] == constants.HT_BO_NETWORK
|
521 |
526 |
|
522 |
527 |
if hvp[constants.HV_KVM_FLAG] == constants.HT_KVM_ENABLED:
|
... | ... | |
565 |
570 |
cache_val)
|
566 |
571 |
kvm_cmd.extend(['-drive', drive_val])
|
567 |
572 |
|
|
573 |
#Now we can specify a different device type for CDROM devices.
|
|
574 |
cdrom_disk_type = hvp[constants.HV_KVM_CDROM_DISK_TYPE]
|
|
575 |
if not cdrom_disk_type:
|
|
576 |
cdrom_disk_type = disk_type
|
|
577 |
|
568 |
578 |
iso_image = hvp[constants.HV_CDROM_IMAGE_PATH]
|
569 |
579 |
if iso_image:
|
570 |
580 |
options = ',format=raw,media=cdrom'
|
571 |
581 |
if boot_cdrom:
|
572 |
582 |
kvm_cmd.extend(['-boot', 'd'])
|
573 |
|
if disk_type != constants.HT_DISK_IDE:
|
|
583 |
if cdrom_disk_type != constants.HT_DISK_IDE:
|
|
584 |
options = '%s,boot=on,if=%s' % (options, constants.HT_DISK_IDE)
|
|
585 |
else:
|
574 |
586 |
options = '%s,boot=on' % options
|
575 |
587 |
else:
|
576 |
|
if disk_type == constants.HT_DISK_PARAVIRTUAL:
|
|
588 |
if cdrom_disk_type == constants.HT_DISK_PARAVIRTUAL:
|
577 |
589 |
if_val = ',if=virtio'
|
578 |
590 |
else:
|
579 |
|
if_val = ',if=%s' % disk_type
|
|
591 |
if_val = ',if=%s' % cdrom_disk_type
|
580 |
592 |
options = '%s%s' % (options, if_val)
|
581 |
593 |
drive_val = 'file=%s%s' % (iso_image, options)
|
582 |
594 |
kvm_cmd.extend(['-drive', drive_val])
|
583 |
595 |
|
|
596 |
iso_image2 = hvp[constants.HV_KVM_CDROM2_IMAGE_PATH]
|
|
597 |
if iso_image2:
|
|
598 |
options = ',format=raw,media=cdrom'
|
|
599 |
if cdrom_disk_type == constants.HT_DISK_PARAVIRTUAL:
|
|
600 |
if_val = ',if=virtio'
|
|
601 |
else:
|
|
602 |
if_val = ',if=%s' % cdrom_disk_type
|
|
603 |
options = '%s%s' % (options, if_val)
|
|
604 |
drive_val = 'file=%s%s' % (iso_image2, options)
|
|
605 |
kvm_cmd.extend(['-drive', drive_val])
|
|
606 |
|
|
607 |
floppy_image = hvp[constants.HV_KVM_FLOPPY_IMAGE_PATH]
|
|
608 |
if floppy_image:
|
|
609 |
options = ',format=raw,media=disk'
|
|
610 |
if boot_floppy:
|
|
611 |
kvm_cmd.extend(['-boot', 'a'])
|
|
612 |
options = '%s,boot=on' % options
|
|
613 |
if_val = ',if=floppy'
|
|
614 |
options = '%s%s' % (options, if_val)
|
|
615 |
drive_val = 'file=%s%s' % (floppy_image, options)
|
|
616 |
kvm_cmd.extend(['-drive', drive_val])
|
|
617 |
|
584 |
618 |
kernel_path = hvp[constants.HV_KERNEL_PATH]
|
585 |
619 |
if kernel_path:
|
586 |
620 |
kvm_cmd.extend(['-kernel', kernel_path])
|