From fbf5a8617183e7ca476f1ca28fd91cb17d97adf4 Mon Sep 17 00:00:00 2001 From: Iustin Pop Date: Fri, 21 Aug 2009 16:07:49 +0200 Subject: [PATCH] Add gnt-instance move This uses the new LUMoveInstance. It supports only single-instance moves. Signed-off-by: Iustin Pop Reviewed-by: Michael Hanselmann --- man/gnt-instance.sgml | 38 ++++++++++++++++++++++++++++++++++++++ scripts/gnt-instance | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/man/gnt-instance.sgml b/man/gnt-instance.sgml index 17a8073..4bd5442 100644 --- a/man/gnt-instance.sgml +++ b/man/gnt-instance.sgml @@ -2072,6 +2072,44 @@ y/[n]/?: y + + MOVE + + + move + -f + -n node + --submit + instance + + + + Move will move the instance to an arbitrary node in the + cluster. This works only for instances having a plain or + file disk template. + + + + Note that since this operation is done via data copy, it + will take a long time for big disks (similar to + replace-disks for a drbd instance). + + + + The option is used to send the job to + the master daemon but not wait for its completion. The job + ID will be shown so that it can be examined via + gnt-job info. + + + + Example: + +# gnt-instance move -n node3.example.com instance1.example.com + + + + diff --git a/scripts/gnt-instance b/scripts/gnt-instance index a0ae7c0..2d0fe8c 100755 --- a/scripts/gnt-instance +++ b/scripts/gnt-instance @@ -952,6 +952,33 @@ def MigrateInstance(opts, args): return 0 +def MoveInstance(opts, args): + """Move an instance. + + @param opts: the command line options selected by the user + @type args: list + @param args: should contain only one element, the instance name + @rtype: int + @return: the desired exit code + + """ + cl = GetClient() + instance_name = args[0] + force = opts.force + + if not force: + usertext = ("Instance %s will be moved." + " This requires a shutdown of the instance. Continue?" % + (instance_name,)) + if not AskUser(usertext): + return 1 + + op = opcodes.OpMoveInstance(instance_name=instance_name, + target_node=opts.target_node) + SubmitOrSend(op, opts, cl=cl) + return 0 + + def ConnectToInstanceConsole(opts, args): """Connect to the console of an instance. @@ -1435,6 +1462,15 @@ commands = { "[-f] ", "Migrate instance to its secondary node" " (only for instances of type drbd)"), + 'move': (MoveInstance, ARGS_ONE, + [DEBUG_OPT, FORCE_OPT, SUBMIT_OPT, + make_option("-n", "--new-node", dest="target_node", + help="Destinattion node", metavar="NODE", + default=None), + ], + "[-f] ", + "Move instance to an arbitrary node" + " (only for instances of type file and lv)"), 'info': (ShowInstanceConfig, ARGS_ANY, [DEBUG_OPT, make_option("-s", "--static", dest="static", -- 1.7.10.4