From 5029db659b8025c91155e8574802f611c5aa187b Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Sun, 14 Mar 2010 01:55:18 +0100 Subject: [PATCH] Implement disk adoption mode in gnt-instance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch modifies the parsing of the β--diskβ argument to instance create to accept βadoptβ as a valid key, which builds the correct disk structure for OpCreateInstance. Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Guido Trotter <ultrotter@google.com> --- lib/cli.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lib/cli.py b/lib/cli.py index 5d0a66a9b..51c239c09 100644 --- a/lib/cli.py +++ b/lib/cli.py @@ -1524,13 +1524,23 @@ def GenericInstanceCreate(mode, opts, args): if not isinstance(ddict, dict): msg = "Invalid disk/%d value: expected dict, got %s" % (didx, ddict) raise errors.OpPrereqError(msg) - elif "size" not in ddict: - raise errors.OpPrereqError("Missing size for disk %d" % didx) - try: - ddict["size"] = utils.ParseUnit(ddict["size"]) - except ValueError, err: - raise errors.OpPrereqError("Invalid disk size for disk %d: %s" % - (didx, err)) + elif "size" in ddict: + if "adopt" in ddict: + raise errors.OpPrereqError("Only one of 'size' and 'adopt' allowed" + " (disk %d)" % didx) + try: + ddict["size"] = utils.ParseUnit(ddict["size"]) + except ValueError, err: + raise errors.OpPrereqError("Invalid disk size for disk %d: %s" % + (didx, err)) + elif "adopt" in ddict: + if mode == constants.INSTANCE_IMPORT: + raise errors.OpPrereqError("Disk adoption not allowed for instance" + " import") + ddict["size"] = 0 + else: + raise errors.OpPrereqError("Missing size or adoption source for" + " disk %d" % didx) disks[didx] = ddict utils.ForceDictType(opts.beparams, constants.BES_PARAMETER_TYPES) -- GitLab