diff --git a/doc/examples/dumb-allocator b/doc/examples/dumb-allocator index 9734af397ab3f54b949ff0c3b8b1f2b6dfab0867..2996e49cae509549e7545a8373931ada4983f1c1 100755 --- a/doc/examples/dumb-allocator +++ b/doc/examples/dumb-allocator @@ -76,7 +76,7 @@ def main(): if req_type == "allocate": forbidden_nodes = [] inst_data = request - elif req_type == "replace_secondary": + elif req_type == "relocate": idict = data["instances"][request["name"]] forbidden_nodes = idict["nodes"] inst_data = idict diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 58b6404d7d52f71d6245a9ee473b1bdc54c1fc7d..73907c284abbb93a57f46cabd0d4df3b907fc95b 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -4877,6 +4877,9 @@ class IAllocator(object): if instance.disk_template not in constants.DTS_NET_MIRROR: raise errors.OpPrereqError("Can't relocate non-mirrored instances") + if len(instance.secondary_nodes) != 1: + raise errors.OpPrereqError("Instance has not exactly one secondary node") + self.required_nodes = 1 disk_space = _ComputeDiskSize(instance.disk_template, @@ -4884,10 +4887,11 @@ class IAllocator(object): instance.disks[1].size) request = { - "type": "replace_secondary", + "type": "relocate", "name": self.name, "disk_space_total": disk_space, "required_nodes": self.required_nodes, + "nodes": list(instance.secondary_nodes), } self.in_data["request"] = request