Revision 990ade2d
b/lib/constants.py | ||
---|---|---|
590 | 590 |
INSTANCE_REBOOT_HARD = "hard" |
591 | 591 |
INSTANCE_REBOOT_FULL = "full" |
592 | 592 |
|
593 |
REBOOT_TYPES = frozenset([INSTANCE_REBOOT_SOFT, |
|
594 |
INSTANCE_REBOOT_HARD, |
|
595 |
INSTANCE_REBOOT_FULL]) |
|
593 |
REBOOT_TYPES = frozenset([ |
|
594 |
INSTANCE_REBOOT_SOFT, |
|
595 |
INSTANCE_REBOOT_HARD, |
|
596 |
INSTANCE_REBOOT_FULL |
|
597 |
]) |
|
598 |
|
|
599 |
# instance reboot behaviors |
|
600 |
INSTANCE_REBOOT_ALLOWED = "reboot" |
|
601 |
INSTANCE_REBOOT_EXIT = "exit" |
|
602 |
|
|
603 |
REBOOT_BEHAVIORS = frozenset([ |
|
604 |
INSTANCE_REBOOT_ALLOWED, |
|
605 |
INSTANCE_REBOOT_EXIT |
|
606 |
]) |
|
596 | 607 |
|
597 | 608 |
VTYPE_STRING = "string" |
598 | 609 |
VTYPE_MAYBE_STRING = "maybe-string" |
... | ... | |
648 | 659 |
HV_CPU_MASK = "cpu_mask" |
649 | 660 |
HV_MEM_PATH = "mem_path" |
650 | 661 |
HV_BLOCKDEV_PREFIX = "blockdev_prefix" |
662 |
HV_REBOOT_BEHAVIOR = "reboot_behavior" |
|
651 | 663 |
|
652 | 664 |
HVS_PARAMETER_TYPES = { |
653 | 665 |
HV_BOOT_ORDER: VTYPE_STRING, |
... | ... | |
690 | 702 |
HV_CPU_MASK: VTYPE_STRING, |
691 | 703 |
HV_MEM_PATH: VTYPE_STRING, |
692 | 704 |
HV_BLOCKDEV_PREFIX: VTYPE_STRING, |
705 |
HV_REBOOT_BEHAVIOR: VTYPE_STRING, |
|
693 | 706 |
} |
694 | 707 |
|
695 | 708 |
HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys()) |
... | ... | |
1178 | 1191 |
HV_MIGRATION_PORT: 8002, |
1179 | 1192 |
HV_MIGRATION_MODE: HT_MIGRATION_LIVE, |
1180 | 1193 |
HV_BLOCKDEV_PREFIX: "sd", |
1194 |
HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED, |
|
1181 | 1195 |
}, |
1182 | 1196 |
HT_XEN_HVM: { |
1183 | 1197 |
HV_BOOT_ORDER: "cd", |
... | ... | |
1194 | 1208 |
HV_MIGRATION_MODE: HT_MIGRATION_NONLIVE, |
1195 | 1209 |
HV_USE_LOCALTIME: False, |
1196 | 1210 |
HV_BLOCKDEV_PREFIX: "hd", |
1211 |
HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED, |
|
1197 | 1212 |
}, |
1198 | 1213 |
HT_KVM: { |
1199 | 1214 |
HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU", |
... | ... | |
1228 | 1243 |
HV_VHOST_NET: False, |
1229 | 1244 |
HV_KVM_USE_CHROOT: False, |
1230 | 1245 |
HV_MEM_PATH: "", |
1246 |
HV_REBOOT_BEHAVIOR: INSTANCE_REBOOT_ALLOWED, |
|
1231 | 1247 |
}, |
1232 | 1248 |
HT_FAKE: { |
1233 | 1249 |
}, |
b/lib/hypervisor/hv_kvm.py | ||
---|---|---|
194 | 194 |
constants.HV_VHOST_NET: hv_base.NO_CHECK, |
195 | 195 |
constants.HV_KVM_USE_CHROOT: hv_base.NO_CHECK, |
196 | 196 |
constants.HV_MEM_PATH: hv_base.OPT_DIR_CHECK, |
197 |
constants.HV_REBOOT_BEHAVIOR: |
|
198 |
hv_base.ParamInSet(True, constants.REBOOT_BEHAVIORS) |
|
197 | 199 |
} |
198 | 200 |
|
199 | 201 |
_MIGRATION_STATUS_RE = re.compile("Migration\s+status:\s+(\w+)", |
... | ... | |
535 | 537 |
kvm_cmd.extend(["-no-acpi"]) |
536 | 538 |
if startup_paused: |
537 | 539 |
kvm_cmd.extend(["-S"]) |
540 |
if instance.hvparams[constants.HV_REBOOT_BEHAVIOR] == \ |
|
541 |
constants.INSTANCE_REBOOT_EXIT: |
|
542 |
kvm_cmd.extend(["-no-reboot"]) |
|
538 | 543 |
|
539 | 544 |
hvp = instance.hvparams |
540 | 545 |
boot_disk = hvp[constants.HV_BOOT_ORDER] == constants.HT_BO_DISK |
b/lib/hypervisor/hv_xen.py | ||
---|---|---|
470 | 470 |
constants.HV_MIGRATION_MODE: hv_base.MIGRATION_MODE_CHECK, |
471 | 471 |
# TODO: Add a check for the blockdev prefix (matching [a-z:] or similar). |
472 | 472 |
constants.HV_BLOCKDEV_PREFIX: hv_base.NO_CHECK, |
473 |
constants.HV_REBOOT_BEHAVIOR: |
|
474 |
hv_base.ParamInSet(True, constants.REBOOT_BEHAVIORS) |
|
473 | 475 |
} |
474 | 476 |
|
475 | 477 |
@classmethod |
... | ... | |
529 | 531 |
if hvp[constants.HV_ROOT_PATH]: |
530 | 532 |
config.write("root = '%s'\n" % hvp[constants.HV_ROOT_PATH]) |
531 | 533 |
config.write("on_poweroff = 'destroy'\n") |
532 |
config.write("on_reboot = 'restart'\n") |
|
534 |
if hvp[constants.HV_REBOOT_BEHAVIOR] == constants.INSTANCE_REBOOT_ALLOWED: |
|
535 |
config.write("on_reboot = 'restart'\n") |
|
536 |
else: |
|
537 |
config.write("on_reboot = 'destroy'\n") |
|
533 | 538 |
config.write("on_crash = 'restart'\n") |
534 | 539 |
config.write("extra = '%s'\n" % hvp[constants.HV_KERNEL_ARGS]) |
535 | 540 |
# just in case it exists |
... | ... | |
574 | 579 |
constants.HV_USE_LOCALTIME: hv_base.NO_CHECK, |
575 | 580 |
# TODO: Add a check for the blockdev prefix (matching [a-z:] or similar). |
576 | 581 |
constants.HV_BLOCKDEV_PREFIX: hv_base.NO_CHECK, |
582 |
constants.HV_REBOOT_BEHAVIOR: |
|
583 |
hv_base.ParamInSet(True, constants.REBOOT_BEHAVIORS) |
|
577 | 584 |
} |
578 | 585 |
|
579 | 586 |
@classmethod |
... | ... | |
666 | 673 |
config.write("disk = [%s]\n" % (",".join(disk_data))) |
667 | 674 |
|
668 | 675 |
config.write("on_poweroff = 'destroy'\n") |
669 |
config.write("on_reboot = 'restart'\n") |
|
676 |
if hvp[constants.HV_REBOOT_BEHAVIOR] == constants.INSTANCE_REBOOT_ALLOWED: |
|
677 |
config.write("on_reboot = 'restart'\n") |
|
678 |
else: |
|
679 |
config.write("on_reboot = 'destroy'\n") |
|
670 | 680 |
config.write("on_crash = 'restart'\n") |
671 | 681 |
# just in case it exists |
672 | 682 |
utils.RemoveFile("/etc/xen/auto/%s" % instance.name) |
b/man/gnt-instance.rst | ||
---|---|---|
439 | 439 |
This option specifies the keyboard mapping to be used. It is only |
440 | 440 |
needed when using the VNC console. For example: "fr" or "en-gb". |
441 | 441 |
|
442 |
reboot\_behavior |
|
443 |
Valid for Xen PVM, Xen HVM and KVM hypervisors. |
|
444 |
|
|
445 |
Normally if an instance reboots, the hypervisor will restart it. If |
|
446 |
this option is set to ``exit``, the hypervisor will treat a reboot |
|
447 |
as a shutdown instead. |
|
448 |
|
|
449 |
It is set to ``reboot`` by default. |
|
450 |
|
|
442 | 451 |
|
443 | 452 |
The ``-O (--os-parameters)`` option allows customisation of the OS |
444 | 453 |
parameters. The actual parameter names and values depends on the OS |
Also available in: Unified diff