45 |
45 |
# Common opcode attributes
|
46 |
46 |
|
47 |
47 |
#: output fields for a query operation
|
48 |
|
_POutputFields = ("output_fields", ht.NoDefault, ht.TListOf(ht.TNonEmptyString))
|
|
48 |
_POutputFields = ("output_fields", ht.NoDefault, ht.TListOf(ht.TNonEmptyString),
|
|
49 |
None)
|
49 |
50 |
|
50 |
51 |
#: the shutdown timeout
|
51 |
52 |
_PShutdownTimeout = ("shutdown_timeout", constants.DEFAULT_SHUTDOWN_TIMEOUT,
|
52 |
|
ht.TPositiveInt)
|
|
53 |
ht.TPositiveInt, None)
|
53 |
54 |
|
54 |
55 |
#: the force parameter
|
55 |
|
_PForce = ("force", False, ht.TBool)
|
|
56 |
_PForce = ("force", False, ht.TBool, None)
|
56 |
57 |
|
57 |
58 |
#: a required instance name (for single-instance LUs)
|
58 |
|
_PInstanceName = ("instance_name", ht.NoDefault, ht.TNonEmptyString)
|
|
59 |
_PInstanceName = ("instance_name", ht.NoDefault, ht.TNonEmptyString, None)
|
59 |
60 |
|
60 |
61 |
#: Whether to ignore offline nodes
|
61 |
|
_PIgnoreOfflineNodes = ("ignore_offline_nodes", False, ht.TBool)
|
|
62 |
_PIgnoreOfflineNodes = ("ignore_offline_nodes", False, ht.TBool, None)
|
62 |
63 |
|
63 |
64 |
#: a required node name (for single-node LUs)
|
64 |
|
_PNodeName = ("node_name", ht.NoDefault, ht.TNonEmptyString)
|
|
65 |
_PNodeName = ("node_name", ht.NoDefault, ht.TNonEmptyString, None)
|
65 |
66 |
|
66 |
67 |
#: a required node group name (for single-group LUs)
|
67 |
|
_PGroupName = ("group_name", ht.NoDefault, ht.TNonEmptyString)
|
|
68 |
_PGroupName = ("group_name", ht.NoDefault, ht.TNonEmptyString, None)
|
68 |
69 |
|
69 |
70 |
#: Migration type (live/non-live)
|
70 |
71 |
_PMigrationMode = ("mode", None,
|
71 |
|
ht.TOr(ht.TNone, ht.TElemOf(constants.HT_MIGRATION_MODES)))
|
|
72 |
ht.TOr(ht.TNone, ht.TElemOf(constants.HT_MIGRATION_MODES)),
|
|
73 |
None)
|
72 |
74 |
|
73 |
75 |
#: Obsolete 'live' migration mode (boolean)
|
74 |
|
_PMigrationLive = ("live", None, ht.TMaybeBool)
|
|
76 |
_PMigrationLive = ("live", None, ht.TMaybeBool, None)
|
75 |
77 |
|
76 |
78 |
#: Tag type
|
77 |
|
_PTagKind = ("kind", ht.NoDefault, ht.TElemOf(constants.VALID_TAG_TYPES))
|
|
79 |
_PTagKind = ("kind", ht.NoDefault, ht.TElemOf(constants.VALID_TAG_TYPES), None)
|
78 |
80 |
|
79 |
81 |
#: List of tag strings
|
80 |
|
_PTags = ("tags", ht.NoDefault, ht.TListOf(ht.TNonEmptyString))
|
|
82 |
_PTags = ("tags", ht.NoDefault, ht.TListOf(ht.TNonEmptyString), None)
|
81 |
83 |
|
82 |
84 |
#: OP_ID conversion regular expression
|
83 |
85 |
_OPID_RE = re.compile("([a-z])([A-Z])")
|
... | ... | |
151 |
153 |
|
152 |
154 |
|
153 |
155 |
#: Storage type parameter
|
154 |
|
_PStorageType = ("storage_type", ht.NoDefault, _CheckStorageType)
|
|
156 |
_PStorageType = ("storage_type", ht.NoDefault, _CheckStorageType, None)
|
155 |
157 |
|
156 |
158 |
|
157 |
159 |
class _AutoOpParamSlots(type):
|
... | ... | |
178 |
180 |
params = attrs.setdefault("OP_PARAMS", [])
|
179 |
181 |
|
180 |
182 |
# Use parameter names as slots
|
181 |
|
slots = [pname for (pname, _, _) in params]
|
|
183 |
slots = [pname for (pname, _, _, _) in params]
|
182 |
184 |
|
183 |
185 |
assert "OP_DSC_FIELD" not in attrs or attrs["OP_DSC_FIELD"] in slots, \
|
184 |
186 |
"Class '%s' uses unknown field in OP_DSC_FIELD" % name
|
... | ... | |
281 |
283 |
requirements
|
282 |
284 |
|
283 |
285 |
"""
|
284 |
|
for (attr_name, default, test) in self.GetAllParams():
|
|
286 |
for (attr_name, default, test, _) in self.GetAllParams():
|
285 |
287 |
assert test == ht.NoType or callable(test)
|
286 |
288 |
|
287 |
289 |
if not hasattr(self, attr_name):
|
... | ... | |
334 |
336 |
# as OP_ID is dynamically defined
|
335 |
337 |
WITH_LU = True
|
336 |
338 |
OP_PARAMS = [
|
337 |
|
("dry_run", None, ht.TMaybeBool),
|
338 |
|
("debug_level", None, ht.TOr(ht.TNone, ht.TPositiveInt)),
|
|
339 |
("dry_run", None, ht.TMaybeBool, None),
|
|
340 |
("debug_level", None, ht.TOr(ht.TNone, ht.TPositiveInt), None),
|
339 |
341 |
("priority", constants.OP_PRIO_DEFAULT,
|
340 |
|
ht.TElemOf(constants.OP_PRIO_SUBMIT_VALID)),
|
|
342 |
ht.TElemOf(constants.OP_PRIO_SUBMIT_VALID), None),
|
341 |
343 |
]
|
342 |
344 |
|
343 |
345 |
def __getstate__(self):
|
... | ... | |
442 |
444 |
"""
|
443 |
445 |
OP_PARAMS = [
|
444 |
446 |
("skip_checks", ht.EmptyList,
|
445 |
|
ht.TListOf(ht.TElemOf(constants.VERIFY_OPTIONAL_CHECKS))),
|
446 |
|
("verbose", False, ht.TBool),
|
447 |
|
("error_codes", False, ht.TBool),
|
448 |
|
("debug_simulate_errors", False, ht.TBool),
|
|
447 |
ht.TListOf(ht.TElemOf(constants.VERIFY_OPTIONAL_CHECKS)), None),
|
|
448 |
("verbose", False, ht.TBool, None),
|
|
449 |
("error_codes", False, ht.TBool, None),
|
|
450 |
("debug_simulate_errors", False, ht.TBool, None),
|
449 |
451 |
]
|
450 |
452 |
|
451 |
453 |
|
... | ... | |
489 |
491 |
|
490 |
492 |
"""
|
491 |
493 |
OP_PARAMS = [
|
492 |
|
("instances", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
|
494 |
("instances", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
493 |
495 |
]
|
494 |
496 |
|
495 |
497 |
|
... | ... | |
511 |
513 |
"""
|
512 |
514 |
OP_DSC_FIELD = "name"
|
513 |
515 |
OP_PARAMS = [
|
514 |
|
("name", ht.NoDefault, ht.TNonEmptyString),
|
|
516 |
("name", ht.NoDefault, ht.TNonEmptyString, None),
|
515 |
517 |
]
|
516 |
518 |
|
517 |
519 |
|
... | ... | |
523 |
525 |
|
524 |
526 |
"""
|
525 |
527 |
OP_PARAMS = [
|
526 |
|
("vg_name", None, ht.TMaybeString),
|
|
528 |
("vg_name", None, ht.TMaybeString, None),
|
527 |
529 |
("enabled_hypervisors", None,
|
528 |
530 |
ht.TOr(ht.TAnd(ht.TListOf(ht.TElemOf(constants.HYPER_TYPES)), ht.TTrue),
|
529 |
|
ht.TNone)),
|
|
531 |
ht.TNone), None),
|
530 |
532 |
("hvparams", None, ht.TOr(ht.TDictOf(ht.TNonEmptyString, ht.TDict),
|
531 |
|
ht.TNone)),
|
532 |
|
("beparams", None, ht.TOr(ht.TDict, ht.TNone)),
|
|
533 |
ht.TNone), None),
|
|
534 |
("beparams", None, ht.TOr(ht.TDict, ht.TNone), None),
|
533 |
535 |
("os_hvp", None, ht.TOr(ht.TDictOf(ht.TNonEmptyString, ht.TDict),
|
534 |
|
ht.TNone)),
|
|
536 |
ht.TNone), None),
|
535 |
537 |
("osparams", None, ht.TOr(ht.TDictOf(ht.TNonEmptyString, ht.TDict),
|
536 |
|
ht.TNone)),
|
537 |
|
("candidate_pool_size", None, ht.TOr(ht.TStrictPositiveInt, ht.TNone)),
|
538 |
|
("uid_pool", None, ht.NoType),
|
539 |
|
("add_uids", None, ht.NoType),
|
540 |
|
("remove_uids", None, ht.NoType),
|
541 |
|
("maintain_node_health", None, ht.TMaybeBool),
|
542 |
|
("prealloc_wipe_disks", None, ht.TMaybeBool),
|
543 |
|
("nicparams", None, ht.TMaybeDict),
|
544 |
|
("ndparams", None, ht.TMaybeDict),
|
545 |
|
("drbd_helper", None, ht.TOr(ht.TString, ht.TNone)),
|
546 |
|
("default_iallocator", None, ht.TOr(ht.TString, ht.TNone)),
|
547 |
|
("master_netdev", None, ht.TOr(ht.TString, ht.TNone)),
|
548 |
|
("reserved_lvs", None, ht.TOr(ht.TListOf(ht.TNonEmptyString), ht.TNone)),
|
549 |
|
("hidden_os", None, _TestClusterOsList),
|
550 |
|
("blacklisted_os", None, _TestClusterOsList),
|
|
538 |
ht.TNone), None),
|
|
539 |
("candidate_pool_size", None, ht.TOr(ht.TStrictPositiveInt, ht.TNone),
|
|
540 |
None),
|
|
541 |
("uid_pool", None, ht.NoType, None),
|
|
542 |
("add_uids", None, ht.NoType, None),
|
|
543 |
("remove_uids", None, ht.NoType, None),
|
|
544 |
("maintain_node_health", None, ht.TMaybeBool, None),
|
|
545 |
("prealloc_wipe_disks", None, ht.TMaybeBool, None),
|
|
546 |
("nicparams", None, ht.TMaybeDict, None),
|
|
547 |
("ndparams", None, ht.TMaybeDict, None),
|
|
548 |
("drbd_helper", None, ht.TOr(ht.TString, ht.TNone), None),
|
|
549 |
("default_iallocator", None, ht.TOr(ht.TString, ht.TNone), None),
|
|
550 |
("master_netdev", None, ht.TOr(ht.TString, ht.TNone), None),
|
|
551 |
("reserved_lvs", None, ht.TOr(ht.TListOf(ht.TNonEmptyString), ht.TNone), None),
|
|
552 |
("hidden_os", None, _TestClusterOsList, None),
|
|
553 |
("blacklisted_os", None, _TestClusterOsList, None),
|
551 |
554 |
]
|
552 |
555 |
|
553 |
556 |
|
... | ... | |
566 |
569 |
|
567 |
570 |
"""
|
568 |
571 |
OP_PARAMS = [
|
569 |
|
("what", ht.NoDefault, ht.TElemOf(constants.QR_OP_QUERY)),
|
570 |
|
("fields", ht.NoDefault, ht.TListOf(ht.TNonEmptyString)),
|
|
572 |
("what", ht.NoDefault, ht.TElemOf(constants.QR_OP_QUERY), None),
|
|
573 |
("fields", ht.NoDefault, ht.TListOf(ht.TNonEmptyString), None),
|
571 |
574 |
("filter", None, ht.TOr(ht.TNone,
|
572 |
|
ht.TListOf(ht.TOr(ht.TNonEmptyString, ht.TList)))),
|
|
575 |
ht.TListOf(ht.TOr(ht.TNonEmptyString, ht.TList))), None),
|
573 |
576 |
]
|
574 |
577 |
|
575 |
578 |
|
... | ... | |
581 |
584 |
|
582 |
585 |
"""
|
583 |
586 |
OP_PARAMS = [
|
584 |
|
("what", ht.NoDefault, ht.TElemOf(constants.QR_OP_QUERY)),
|
585 |
|
("fields", None, ht.TOr(ht.TNone, ht.TListOf(ht.TNonEmptyString))),
|
|
587 |
("what", ht.NoDefault, ht.TElemOf(constants.QR_OP_QUERY), None),
|
|
588 |
("fields", None, ht.TOr(ht.TNone, ht.TListOf(ht.TNonEmptyString)), None),
|
586 |
589 |
]
|
587 |
590 |
|
588 |
591 |
|
589 |
592 |
class OpOobCommand(OpCode):
|
590 |
593 |
"""Interact with OOB."""
|
591 |
594 |
OP_PARAMS = [
|
592 |
|
("node_names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
593 |
|
("command", None, ht.TElemOf(constants.OOB_COMMANDS)),
|
594 |
|
("timeout", constants.OOB_TIMEOUT, ht.TInt),
|
595 |
|
("ignore_status", False, ht.TBool),
|
596 |
|
("force_master", False, ht.TBool),
|
|
595 |
("node_names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
|
596 |
("command", None, ht.TElemOf(constants.OOB_COMMANDS), None),
|
|
597 |
("timeout", constants.OOB_TIMEOUT, ht.TInt, None),
|
|
598 |
("ignore_status", False, ht.TBool, None),
|
|
599 |
("force_master", False, ht.TBool, None),
|
597 |
600 |
]
|
598 |
601 |
|
599 |
602 |
|
... | ... | |
644 |
647 |
OP_DSC_FIELD = "node_name"
|
645 |
648 |
OP_PARAMS = [
|
646 |
649 |
_PNodeName,
|
647 |
|
("primary_ip", None, ht.NoType),
|
648 |
|
("secondary_ip", None, ht.TMaybeString),
|
649 |
|
("readd", False, ht.TBool),
|
650 |
|
("group", None, ht.TMaybeString),
|
651 |
|
("master_capable", None, ht.TMaybeBool),
|
652 |
|
("vm_capable", None, ht.TMaybeBool),
|
653 |
|
("ndparams", None, ht.TMaybeDict),
|
|
650 |
("primary_ip", None, ht.NoType, None),
|
|
651 |
("secondary_ip", None, ht.TMaybeString, None),
|
|
652 |
("readd", False, ht.TBool, None),
|
|
653 |
("group", None, ht.TMaybeString, None),
|
|
654 |
("master_capable", None, ht.TMaybeBool, None),
|
|
655 |
("vm_capable", None, ht.TMaybeBool, None),
|
|
656 |
("ndparams", None, ht.TMaybeDict, None),
|
654 |
657 |
]
|
655 |
658 |
|
656 |
659 |
|
... | ... | |
658 |
661 |
"""Compute the list of nodes."""
|
659 |
662 |
OP_PARAMS = [
|
660 |
663 |
_POutputFields,
|
661 |
|
("names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
662 |
|
("use_locking", False, ht.TBool),
|
|
664 |
("names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
|
665 |
("use_locking", False, ht.TBool, None),
|
663 |
666 |
]
|
664 |
667 |
|
665 |
668 |
|
... | ... | |
667 |
670 |
"""Get list of volumes on node."""
|
668 |
671 |
OP_PARAMS = [
|
669 |
672 |
_POutputFields,
|
670 |
|
("nodes", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
|
673 |
("nodes", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
671 |
674 |
]
|
672 |
675 |
|
673 |
676 |
|
... | ... | |
676 |
679 |
OP_PARAMS = [
|
677 |
680 |
_POutputFields,
|
678 |
681 |
_PStorageType,
|
679 |
|
("nodes", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
680 |
|
("name", None, ht.TMaybeString),
|
|
682 |
("nodes", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
|
683 |
("name", None, ht.TMaybeString, None),
|
681 |
684 |
]
|
682 |
685 |
|
683 |
686 |
|
... | ... | |
686 |
689 |
OP_PARAMS = [
|
687 |
690 |
_PNodeName,
|
688 |
691 |
_PStorageType,
|
689 |
|
("name", ht.NoDefault, ht.TNonEmptyString),
|
690 |
|
("changes", ht.NoDefault, ht.TDict),
|
|
692 |
("name", ht.NoDefault, ht.TNonEmptyString, None),
|
|
693 |
("changes", ht.NoDefault, ht.TDict, None),
|
691 |
694 |
]
|
692 |
695 |
|
693 |
696 |
|
... | ... | |
697 |
700 |
OP_PARAMS = [
|
698 |
701 |
_PNodeName,
|
699 |
702 |
_PStorageType,
|
700 |
|
("name", ht.NoDefault, ht.TNonEmptyString),
|
701 |
|
("ignore_consistency", False, ht.TBool),
|
|
703 |
("name", ht.NoDefault, ht.TNonEmptyString, None),
|
|
704 |
("ignore_consistency", False, ht.TBool, None),
|
702 |
705 |
]
|
703 |
706 |
|
704 |
707 |
|
... | ... | |
708 |
711 |
OP_PARAMS = [
|
709 |
712 |
_PNodeName,
|
710 |
713 |
_PForce,
|
711 |
|
("master_candidate", None, ht.TMaybeBool),
|
712 |
|
("offline", None, ht.TMaybeBool),
|
713 |
|
("drained", None, ht.TMaybeBool),
|
714 |
|
("auto_promote", False, ht.TBool),
|
715 |
|
("master_capable", None, ht.TMaybeBool),
|
716 |
|
("vm_capable", None, ht.TMaybeBool),
|
717 |
|
("secondary_ip", None, ht.TMaybeString),
|
718 |
|
("ndparams", None, ht.TMaybeDict),
|
719 |
|
("powered", None, ht.TMaybeBool),
|
|
714 |
("master_candidate", None, ht.TMaybeBool, None),
|
|
715 |
("offline", None, ht.TMaybeBool, None),
|
|
716 |
("drained", None, ht.TMaybeBool, None),
|
|
717 |
("auto_promote", False, ht.TBool, None),
|
|
718 |
("master_capable", None, ht.TMaybeBool, None),
|
|
719 |
("vm_capable", None, ht.TMaybeBool, None),
|
|
720 |
("secondary_ip", None, ht.TMaybeString, None),
|
|
721 |
("ndparams", None, ht.TMaybeDict, None),
|
|
722 |
("powered", None, ht.TMaybeBool, None),
|
720 |
723 |
]
|
721 |
724 |
|
722 |
725 |
|
... | ... | |
743 |
746 |
"""Compute the evacuation strategy for a list of nodes."""
|
744 |
747 |
OP_DSC_FIELD = "nodes"
|
745 |
748 |
OP_PARAMS = [
|
746 |
|
("nodes", ht.NoDefault, ht.TListOf(ht.TNonEmptyString)),
|
747 |
|
("remote_node", None, ht.TMaybeString),
|
748 |
|
("iallocator", None, ht.TMaybeString),
|
|
749 |
("nodes", ht.NoDefault, ht.TListOf(ht.TNonEmptyString), None),
|
|
750 |
("remote_node", None, ht.TMaybeString, None),
|
|
751 |
("iallocator", None, ht.TMaybeString, None),
|
749 |
752 |
]
|
750 |
753 |
|
751 |
754 |
|
... | ... | |
766 |
769 |
OP_DSC_FIELD = "instance_name"
|
767 |
770 |
OP_PARAMS = [
|
768 |
771 |
_PInstanceName,
|
769 |
|
("beparams", ht.EmptyDict, ht.TDict),
|
770 |
|
("disks", ht.NoDefault, ht.TListOf(ht.TDict)),
|
771 |
|
("disk_template", ht.NoDefault, _CheckDiskTemplate),
|
772 |
|
("file_driver", None, ht.TOr(ht.TNone, ht.TElemOf(constants.FILE_DRIVER))),
|
773 |
|
("file_storage_dir", None, ht.TMaybeString),
|
774 |
|
("force_variant", False, ht.TBool),
|
775 |
|
("hvparams", ht.EmptyDict, ht.TDict),
|
776 |
|
("hypervisor", None, ht.TMaybeString),
|
777 |
|
("iallocator", None, ht.TMaybeString),
|
778 |
|
("identify_defaults", False, ht.TBool),
|
779 |
|
("ip_check", True, ht.TBool),
|
780 |
|
("mode", ht.NoDefault, ht.TElemOf(constants.INSTANCE_CREATE_MODES)),
|
781 |
|
("name_check", True, ht.TBool),
|
782 |
|
("nics", ht.NoDefault, ht.TListOf(ht.TDict)),
|
783 |
|
("no_install", None, ht.TMaybeBool),
|
784 |
|
("osparams", ht.EmptyDict, ht.TDict),
|
785 |
|
("os_type", None, ht.TMaybeString),
|
786 |
|
("pnode", None, ht.TMaybeString),
|
787 |
|
("snode", None, ht.TMaybeString),
|
788 |
|
("source_handshake", None, ht.TOr(ht.TList, ht.TNone)),
|
789 |
|
("source_instance_name", None, ht.TMaybeString),
|
|
772 |
("beparams", ht.EmptyDict, ht.TDict, None),
|
|
773 |
("disks", ht.NoDefault, ht.TListOf(ht.TDict), None),
|
|
774 |
("disk_template", ht.NoDefault, _CheckDiskTemplate, None),
|
|
775 |
("file_driver", None, ht.TOr(ht.TNone, ht.TElemOf(constants.FILE_DRIVER)), None),
|
|
776 |
("file_storage_dir", None, ht.TMaybeString, None),
|
|
777 |
("force_variant", False, ht.TBool, None),
|
|
778 |
("hvparams", ht.EmptyDict, ht.TDict, None),
|
|
779 |
("hypervisor", None, ht.TMaybeString, None),
|
|
780 |
("iallocator", None, ht.TMaybeString, None),
|
|
781 |
("identify_defaults", False, ht.TBool, None),
|
|
782 |
("ip_check", True, ht.TBool, None),
|
|
783 |
("mode", ht.NoDefault, ht.TElemOf(constants.INSTANCE_CREATE_MODES), None),
|
|
784 |
("name_check", True, ht.TBool, None),
|
|
785 |
("nics", ht.NoDefault, ht.TListOf(ht.TDict), None),
|
|
786 |
("no_install", None, ht.TMaybeBool, None),
|
|
787 |
("osparams", ht.EmptyDict, ht.TDict, None),
|
|
788 |
("os_type", None, ht.TMaybeString, None),
|
|
789 |
("pnode", None, ht.TMaybeString, None),
|
|
790 |
("snode", None, ht.TMaybeString, None),
|
|
791 |
("source_handshake", None, ht.TOr(ht.TList, ht.TNone), None),
|
|
792 |
("source_instance_name", None, ht.TMaybeString, None),
|
790 |
793 |
("source_shutdown_timeout", constants.DEFAULT_SHUTDOWN_TIMEOUT,
|
791 |
|
ht.TPositiveInt),
|
792 |
|
("source_x509_ca", None, ht.TMaybeString),
|
793 |
|
("src_node", None, ht.TMaybeString),
|
794 |
|
("src_path", None, ht.TMaybeString),
|
795 |
|
("start", True, ht.TBool),
|
796 |
|
("wait_for_sync", True, ht.TBool),
|
|
794 |
ht.TPositiveInt, None),
|
|
795 |
("source_x509_ca", None, ht.TMaybeString, None),
|
|
796 |
("src_node", None, ht.TMaybeString, None),
|
|
797 |
("src_path", None, ht.TMaybeString, None),
|
|
798 |
("start", True, ht.TBool, None),
|
|
799 |
("wait_for_sync", True, ht.TBool, None),
|
797 |
800 |
]
|
798 |
801 |
|
799 |
802 |
|
... | ... | |
802 |
805 |
OP_DSC_FIELD = "instance_name"
|
803 |
806 |
OP_PARAMS = [
|
804 |
807 |
_PInstanceName,
|
805 |
|
("os_type", None, ht.TMaybeString),
|
806 |
|
("force_variant", False, ht.TBool),
|
807 |
|
("osparams", None, ht.TMaybeDict),
|
|
808 |
("os_type", None, ht.TMaybeString, None),
|
|
809 |
("force_variant", False, ht.TBool, None),
|
|
810 |
("osparams", None, ht.TMaybeDict, None),
|
808 |
811 |
]
|
809 |
812 |
|
810 |
813 |
|
... | ... | |
814 |
817 |
OP_PARAMS = [
|
815 |
818 |
_PInstanceName,
|
816 |
819 |
_PShutdownTimeout,
|
817 |
|
("ignore_failures", False, ht.TBool),
|
|
820 |
("ignore_failures", False, ht.TBool, None),
|
818 |
821 |
]
|
819 |
822 |
|
820 |
823 |
|
... | ... | |
822 |
825 |
"""Rename an instance."""
|
823 |
826 |
OP_PARAMS = [
|
824 |
827 |
_PInstanceName,
|
825 |
|
("new_name", ht.NoDefault, ht.TNonEmptyString),
|
826 |
|
("ip_check", False, ht.TBool),
|
827 |
|
("name_check", True, ht.TBool),
|
|
828 |
("new_name", ht.NoDefault, ht.TNonEmptyString, None),
|
|
829 |
("ip_check", False, ht.TBool, None),
|
|
830 |
("name_check", True, ht.TBool, None),
|
828 |
831 |
]
|
829 |
832 |
|
830 |
833 |
|
... | ... | |
835 |
838 |
_PInstanceName,
|
836 |
839 |
_PForce,
|
837 |
840 |
_PIgnoreOfflineNodes,
|
838 |
|
("hvparams", ht.EmptyDict, ht.TDict),
|
839 |
|
("beparams", ht.EmptyDict, ht.TDict),
|
|
841 |
("hvparams", ht.EmptyDict, ht.TDict, None),
|
|
842 |
("beparams", ht.EmptyDict, ht.TDict, None),
|
840 |
843 |
]
|
841 |
844 |
|
842 |
845 |
|
... | ... | |
846 |
849 |
OP_PARAMS = [
|
847 |
850 |
_PInstanceName,
|
848 |
851 |
_PIgnoreOfflineNodes,
|
849 |
|
("timeout", constants.DEFAULT_SHUTDOWN_TIMEOUT, ht.TPositiveInt),
|
|
852 |
("timeout", constants.DEFAULT_SHUTDOWN_TIMEOUT, ht.TPositiveInt, None),
|
850 |
853 |
]
|
851 |
854 |
|
852 |
855 |
|
... | ... | |
856 |
859 |
OP_PARAMS = [
|
857 |
860 |
_PInstanceName,
|
858 |
861 |
_PShutdownTimeout,
|
859 |
|
("ignore_secondaries", False, ht.TBool),
|
860 |
|
("reboot_type", ht.NoDefault, ht.TElemOf(constants.REBOOT_TYPES)),
|
|
862 |
("ignore_secondaries", False, ht.TBool, None),
|
|
863 |
("reboot_type", ht.NoDefault, ht.TElemOf(constants.REBOOT_TYPES), None),
|
861 |
864 |
]
|
862 |
865 |
|
863 |
866 |
|
... | ... | |
866 |
869 |
OP_DSC_FIELD = "instance_name"
|
867 |
870 |
OP_PARAMS = [
|
868 |
871 |
_PInstanceName,
|
869 |
|
("mode", ht.NoDefault, ht.TElemOf(constants.REPLACE_MODES)),
|
870 |
|
("disks", ht.EmptyList, ht.TListOf(ht.TPositiveInt)),
|
871 |
|
("remote_node", None, ht.TMaybeString),
|
872 |
|
("iallocator", None, ht.TMaybeString),
|
873 |
|
("early_release", False, ht.TBool),
|
|
872 |
("mode", ht.NoDefault, ht.TElemOf(constants.REPLACE_MODES), None),
|
|
873 |
("disks", ht.EmptyList, ht.TListOf(ht.TPositiveInt), None),
|
|
874 |
("remote_node", None, ht.TMaybeString, None),
|
|
875 |
("iallocator", None, ht.TMaybeString, None),
|
|
876 |
("early_release", False, ht.TBool, None),
|
874 |
877 |
]
|
875 |
878 |
|
876 |
879 |
|
... | ... | |
880 |
883 |
OP_PARAMS = [
|
881 |
884 |
_PInstanceName,
|
882 |
885 |
_PShutdownTimeout,
|
883 |
|
("ignore_consistency", False, ht.TBool),
|
|
886 |
("ignore_consistency", False, ht.TBool, None),
|
884 |
887 |
]
|
885 |
888 |
|
886 |
889 |
|
... | ... | |
899 |
902 |
_PInstanceName,
|
900 |
903 |
_PMigrationMode,
|
901 |
904 |
_PMigrationLive,
|
902 |
|
("cleanup", False, ht.TBool),
|
|
905 |
("cleanup", False, ht.TBool, None),
|
903 |
906 |
]
|
904 |
907 |
|
905 |
908 |
|
... | ... | |
917 |
920 |
OP_PARAMS = [
|
918 |
921 |
_PInstanceName,
|
919 |
922 |
_PShutdownTimeout,
|
920 |
|
("target_node", ht.NoDefault, ht.TNonEmptyString),
|
|
923 |
("target_node", ht.NoDefault, ht.TNonEmptyString, None),
|
921 |
924 |
]
|
922 |
925 |
|
923 |
926 |
|
... | ... | |
934 |
937 |
OP_DSC_FIELD = "instance_name"
|
935 |
938 |
OP_PARAMS = [
|
936 |
939 |
_PInstanceName,
|
937 |
|
("ignore_size", False, ht.TBool),
|
|
940 |
("ignore_size", False, ht.TBool, None),
|
938 |
941 |
]
|
939 |
942 |
|
940 |
943 |
|
... | ... | |
952 |
955 |
OP_DSC_FIELD = "instance_name"
|
953 |
956 |
OP_PARAMS = [
|
954 |
957 |
_PInstanceName,
|
955 |
|
("disks", ht.EmptyList, ht.TListOf(ht.TPositiveInt)),
|
|
958 |
("disks", ht.EmptyList, ht.TListOf(ht.TPositiveInt), None),
|
956 |
959 |
]
|
957 |
960 |
|
958 |
961 |
|
... | ... | |
960 |
963 |
"""Compute the list of instances."""
|
961 |
964 |
OP_PARAMS = [
|
962 |
965 |
_POutputFields,
|
963 |
|
("names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
964 |
|
("use_locking", False, ht.TBool),
|
|
966 |
("names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
|
967 |
("use_locking", False, ht.TBool, None),
|
965 |
968 |
]
|
966 |
969 |
|
967 |
970 |
|
968 |
971 |
class OpInstanceQueryData(OpCode):
|
969 |
972 |
"""Compute the run-time status of instances."""
|
970 |
973 |
OP_PARAMS = [
|
971 |
|
("instances", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
972 |
|
("static", False, ht.TBool),
|
|
974 |
("instances", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
|
975 |
("static", False, ht.TBool, None),
|
973 |
976 |
]
|
974 |
977 |
|
975 |
978 |
|
... | ... | |
979 |
982 |
OP_PARAMS = [
|
980 |
983 |
_PInstanceName,
|
981 |
984 |
_PForce,
|
982 |
|
("nics", ht.EmptyList, ht.TList),
|
983 |
|
("disks", ht.EmptyList, ht.TList),
|
984 |
|
("beparams", ht.EmptyDict, ht.TDict),
|
985 |
|
("hvparams", ht.EmptyDict, ht.TDict),
|
986 |
|
("disk_template", None, ht.TOr(ht.TNone, _CheckDiskTemplate)),
|
987 |
|
("remote_node", None, ht.TMaybeString),
|
988 |
|
("os_name", None, ht.TMaybeString),
|
989 |
|
("force_variant", False, ht.TBool),
|
990 |
|
("osparams", None, ht.TMaybeDict),
|
|
985 |
("nics", ht.EmptyList, ht.TList, None),
|
|
986 |
("disks", ht.EmptyList, ht.TList, None),
|
|
987 |
("beparams", ht.EmptyDict, ht.TDict, None),
|
|
988 |
("hvparams", ht.EmptyDict, ht.TDict, None),
|
|
989 |
("disk_template", None, ht.TOr(ht.TNone, _CheckDiskTemplate), None),
|
|
990 |
("remote_node", None, ht.TMaybeString, None),
|
|
991 |
("os_name", None, ht.TMaybeString, None),
|
|
992 |
("force_variant", False, ht.TBool, None),
|
|
993 |
("osparams", None, ht.TMaybeDict, None),
|
991 |
994 |
]
|
992 |
995 |
|
993 |
996 |
|
... | ... | |
996 |
999 |
OP_DSC_FIELD = "instance_name"
|
997 |
1000 |
OP_PARAMS = [
|
998 |
1001 |
_PInstanceName,
|
999 |
|
("disk", ht.NoDefault, ht.TInt),
|
1000 |
|
("amount", ht.NoDefault, ht.TInt),
|
1001 |
|
("wait_for_sync", True, ht.TBool),
|
|
1002 |
("disk", ht.NoDefault, ht.TInt, None),
|
|
1003 |
("amount", ht.NoDefault, ht.TInt, None),
|
|
1004 |
("wait_for_sync", True, ht.TBool, None),
|
1002 |
1005 |
]
|
1003 |
1006 |
|
1004 |
1007 |
|
... | ... | |
1009 |
1012 |
OP_DSC_FIELD = "group_name"
|
1010 |
1013 |
OP_PARAMS = [
|
1011 |
1014 |
_PGroupName,
|
1012 |
|
("ndparams", None, ht.TMaybeDict),
|
|
1015 |
("ndparams", None, ht.TMaybeDict, None),
|
1013 |
1016 |
("alloc_policy", None,
|
1014 |
|
ht.TOr(ht.TNone, ht.TElemOf(constants.VALID_ALLOC_POLICIES))),
|
|
1017 |
ht.TOr(ht.TNone, ht.TElemOf(constants.VALID_ALLOC_POLICIES)), None),
|
1015 |
1018 |
]
|
1016 |
1019 |
|
1017 |
1020 |
|
... | ... | |
1021 |
1024 |
OP_PARAMS = [
|
1022 |
1025 |
_PGroupName,
|
1023 |
1026 |
_PForce,
|
1024 |
|
("nodes", ht.NoDefault, ht.TListOf(ht.TNonEmptyString)),
|
|
1027 |
("nodes", ht.NoDefault, ht.TListOf(ht.TNonEmptyString), None),
|
1025 |
1028 |
]
|
1026 |
1029 |
|
1027 |
1030 |
|
... | ... | |
1029 |
1032 |
"""Compute the list of node groups."""
|
1030 |
1033 |
OP_PARAMS = [
|
1031 |
1034 |
_POutputFields,
|
1032 |
|
("names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
|
1035 |
("names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
1033 |
1036 |
]
|
1034 |
1037 |
|
1035 |
1038 |
|
... | ... | |
1038 |
1041 |
OP_DSC_FIELD = "group_name"
|
1039 |
1042 |
OP_PARAMS = [
|
1040 |
1043 |
_PGroupName,
|
1041 |
|
("ndparams", None, ht.TMaybeDict),
|
|
1044 |
("ndparams", None, ht.TMaybeDict, None),
|
1042 |
1045 |
("alloc_policy", None, ht.TOr(ht.TNone,
|
1043 |
|
ht.TElemOf(constants.VALID_ALLOC_POLICIES))),
|
|
1046 |
ht.TElemOf(constants.VALID_ALLOC_POLICIES)), None),
|
1044 |
1047 |
]
|
1045 |
1048 |
|
1046 |
1049 |
|
... | ... | |
1056 |
1059 |
"""Rename a node group in the cluster."""
|
1057 |
1060 |
OP_DSC_FIELD = "old_name"
|
1058 |
1061 |
OP_PARAMS = [
|
1059 |
|
("old_name", ht.NoDefault, ht.TNonEmptyString),
|
1060 |
|
("new_name", ht.NoDefault, ht.TNonEmptyString),
|
|
1062 |
("old_name", ht.NoDefault, ht.TNonEmptyString, None),
|
|
1063 |
("new_name", ht.NoDefault, ht.TNonEmptyString, None),
|
1061 |
1064 |
]
|
1062 |
1065 |
|
1063 |
1066 |
|
... | ... | |
1066 |
1069 |
"""Compute the list of guest operating systems."""
|
1067 |
1070 |
OP_PARAMS = [
|
1068 |
1071 |
_POutputFields,
|
1069 |
|
("names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
|
1072 |
("names", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
1070 |
1073 |
]
|
1071 |
1074 |
|
1072 |
1075 |
|
... | ... | |
1074 |
1077 |
class OpBackupQuery(OpCode):
|
1075 |
1078 |
"""Compute the list of exported images."""
|
1076 |
1079 |
OP_PARAMS = [
|
1077 |
|
("nodes", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
1078 |
|
("use_locking", False, ht.TBool),
|
|
1080 |
("nodes", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
|
1081 |
("use_locking", False, ht.TBool, None),
|
1079 |
1082 |
]
|
1080 |
1083 |
|
1081 |
1084 |
|
... | ... | |
1089 |
1092 |
OP_DSC_FIELD = "instance_name"
|
1090 |
1093 |
OP_PARAMS = [
|
1091 |
1094 |
_PInstanceName,
|
1092 |
|
("mode", ht.NoDefault, ht.TElemOf(constants.EXPORT_MODES)),
|
|
1095 |
("mode", ht.NoDefault, ht.TElemOf(constants.EXPORT_MODES), None),
|
1093 |
1096 |
]
|
1094 |
1097 |
|
1095 |
1098 |
|
... | ... | |
1115 |
1118 |
_PShutdownTimeout,
|
1116 |
1119 |
# TODO: Rename target_node as it changes meaning for different export modes
|
1117 |
1120 |
# (e.g. "destination")
|
1118 |
|
("target_node", ht.NoDefault, ht.TOr(ht.TNonEmptyString, ht.TList)),
|
1119 |
|
("shutdown", True, ht.TBool),
|
1120 |
|
("remove_instance", False, ht.TBool),
|
1121 |
|
("ignore_remove_failures", False, ht.TBool),
|
1122 |
|
("mode", constants.EXPORT_MODE_LOCAL, ht.TElemOf(constants.EXPORT_MODES)),
|
1123 |
|
("x509_key_name", None, ht.TOr(ht.TList, ht.TNone)),
|
1124 |
|
("destination_x509_ca", None, ht.TMaybeString),
|
|
1121 |
("target_node", ht.NoDefault, ht.TOr(ht.TNonEmptyString, ht.TList), None),
|
|
1122 |
("shutdown", True, ht.TBool, None),
|
|
1123 |
("remove_instance", False, ht.TBool, None),
|
|
1124 |
("ignore_remove_failures", False, ht.TBool, None),
|
|
1125 |
("mode", constants.EXPORT_MODE_LOCAL, ht.TElemOf(constants.EXPORT_MODES), None),
|
|
1126 |
("x509_key_name", None, ht.TOr(ht.TList, ht.TNone), None),
|
|
1127 |
("destination_x509_ca", None, ht.TMaybeString, None),
|
1125 |
1128 |
]
|
1126 |
1129 |
|
1127 |
1130 |
|
... | ... | |
1140 |
1143 |
OP_PARAMS = [
|
1141 |
1144 |
_PTagKind,
|
1142 |
1145 |
# Name is only meaningful for nodes and instances
|
1143 |
|
("name", ht.NoDefault, ht.TMaybeString),
|
|
1146 |
("name", ht.NoDefault, ht.TMaybeString, None),
|
1144 |
1147 |
]
|
1145 |
1148 |
|
1146 |
1149 |
|
... | ... | |
1148 |
1151 |
"""Searches the tags in the cluster for a given pattern."""
|
1149 |
1152 |
OP_DSC_FIELD = "pattern"
|
1150 |
1153 |
OP_PARAMS = [
|
1151 |
|
("pattern", ht.NoDefault, ht.TNonEmptyString),
|
|
1154 |
("pattern", ht.NoDefault, ht.TNonEmptyString, None),
|
1152 |
1155 |
]
|
1153 |
1156 |
|
1154 |
1157 |
|
... | ... | |
1158 |
1161 |
_PTagKind,
|
1159 |
1162 |
_PTags,
|
1160 |
1163 |
# Name is only meaningful for nodes and instances
|
1161 |
|
("name", ht.NoDefault, ht.TMaybeString),
|
|
1164 |
("name", ht.NoDefault, ht.TMaybeString, None),
|
1162 |
1165 |
]
|
1163 |
1166 |
|
1164 |
1167 |
|
... | ... | |
1168 |
1171 |
_PTagKind,
|
1169 |
1172 |
_PTags,
|
1170 |
1173 |
# Name is only meaningful for nodes and instances
|
1171 |
|
("name", ht.NoDefault, ht.TMaybeString),
|
|
1174 |
("name", ht.NoDefault, ht.TMaybeString, None),
|
1172 |
1175 |
]
|
1173 |
1176 |
|
1174 |
1177 |
# Test opcodes
|
... | ... | |
1195 |
1198 |
"""
|
1196 |
1199 |
OP_DSC_FIELD = "duration"
|
1197 |
1200 |
OP_PARAMS = [
|
1198 |
|
("duration", ht.NoDefault, ht.TFloat),
|
1199 |
|
("on_master", True, ht.TBool),
|
1200 |
|
("on_nodes", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
1201 |
|
("repeat", 0, ht.TPositiveInt)
|
|
1201 |
("duration", ht.NoDefault, ht.TFloat, None),
|
|
1202 |
("on_master", True, ht.TBool, None),
|
|
1203 |
("on_nodes", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
|
1204 |
("repeat", 0, ht.TPositiveInt, None),
|
1202 |
1205 |
]
|
1203 |
1206 |
|
1204 |
1207 |
|
... | ... | |
1216 |
1219 |
OP_DSC_FIELD = "allocator"
|
1217 |
1220 |
OP_PARAMS = [
|
1218 |
1221 |
("direction", ht.NoDefault,
|
1219 |
|
ht.TElemOf(constants.VALID_IALLOCATOR_DIRECTIONS)),
|
1220 |
|
("mode", ht.NoDefault, ht.TElemOf(constants.VALID_IALLOCATOR_MODES)),
|
1221 |
|
("name", ht.NoDefault, ht.TNonEmptyString),
|
|
1222 |
ht.TElemOf(constants.VALID_IALLOCATOR_DIRECTIONS), None),
|
|
1223 |
("mode", ht.NoDefault, ht.TElemOf(constants.VALID_IALLOCATOR_MODES), None),
|
|
1224 |
("name", ht.NoDefault, ht.TNonEmptyString, None),
|
1222 |
1225 |
("nics", ht.NoDefault, ht.TOr(ht.TNone, ht.TListOf(
|
1223 |
1226 |
ht.TDictOf(ht.TElemOf(["mac", "ip", "bridge"]),
|
1224 |
|
ht.TOr(ht.TNone, ht.TNonEmptyString))))),
|
1225 |
|
("disks", ht.NoDefault, ht.TOr(ht.TNone, ht.TList)),
|
1226 |
|
("hypervisor", None, ht.TMaybeString),
|
1227 |
|
("allocator", None, ht.TMaybeString),
|
1228 |
|
("tags", ht.EmptyList, ht.TListOf(ht.TNonEmptyString)),
|
1229 |
|
("mem_size", None, ht.TOr(ht.TNone, ht.TPositiveInt)),
|
1230 |
|
("vcpus", None, ht.TOr(ht.TNone, ht.TPositiveInt)),
|
1231 |
|
("os", None, ht.TMaybeString),
|
1232 |
|
("disk_template", None, ht.TMaybeString),
|
1233 |
|
("evac_nodes", None, ht.TOr(ht.TNone, ht.TListOf(ht.TNonEmptyString))),
|
|
1227 |
ht.TOr(ht.TNone, ht.TNonEmptyString)))), None),
|
|
1228 |
("disks", ht.NoDefault, ht.TOr(ht.TNone, ht.TList), None),
|
|
1229 |
("hypervisor", None, ht.TMaybeString, None),
|
|
1230 |
("allocator", None, ht.TMaybeString, None),
|
|
1231 |
("tags", ht.EmptyList, ht.TListOf(ht.TNonEmptyString), None),
|
|
1232 |
("mem_size", None, ht.TOr(ht.TNone, ht.TPositiveInt), None),
|
|
1233 |
("vcpus", None, ht.TOr(ht.TNone, ht.TPositiveInt), None),
|
|
1234 |
("os", None, ht.TMaybeString, None),
|
|
1235 |
("disk_template", None, ht.TMaybeString, None),
|
|
1236 |
("evac_nodes", None, ht.TOr(ht.TNone, ht.TListOf(ht.TNonEmptyString)), None),
|
1234 |
1237 |
]
|
1235 |
1238 |
|
1236 |
1239 |
|
... | ... | |
1239 |
1242 |
|
1240 |
1243 |
"""
|
1241 |
1244 |
OP_PARAMS = [
|
1242 |
|
("notify_waitlock", False, ht.TBool),
|
1243 |
|
("notify_exec", False, ht.TBool),
|
1244 |
|
("log_messages", ht.EmptyList, ht.TListOf(ht.TString)),
|
1245 |
|
("fail", False, ht.TBool),
|
|
1245 |
("notify_waitlock", False, ht.TBool, None),
|
|
1246 |
("notify_exec", False, ht.TBool, None),
|
|
1247 |
("log_messages", ht.EmptyList, ht.TListOf(ht.TString), None),
|
|
1248 |
("fail", False, ht.TBool, None),
|
1246 |
1249 |
]
|
1247 |
1250 |
|
1248 |
1251 |
|
... | ... | |
1251 |
1254 |
|
1252 |
1255 |
"""
|
1253 |
1256 |
OP_PARAMS = [
|
1254 |
|
("result", ht.NoDefault, ht.NoType),
|
1255 |
|
("messages", ht.NoDefault, ht.NoType),
|
1256 |
|
("fail", ht.NoDefault, ht.NoType),
|
|
1257 |
("result", ht.NoDefault, ht.NoType, None),
|
|
1258 |
("messages", ht.NoDefault, ht.NoType, None),
|
|
1259 |
("fail", ht.NoDefault, ht.NoType, None),
|
1257 |
1260 |
]
|
1258 |
1261 |
WITH_LU = False
|
1259 |
1262 |
|