Revision 20e23543

b/man/gnt-instance.sgml
776 776
          <command>reinstall</command>
777 777
          <arg choice="opt">-o <replaceable>os-type</replaceable></arg>
778 778
          <arg choice="opt">-f <replaceable>force</replaceable></arg>
779
          <arg>--select-os</arg>
779 780
          <arg choice="req"><replaceable>instance</replaceable></arg>
780 781
        </cmdsynopsis>
781 782

  
......
785 786
          <option>--os-type</option> is specified, the operating system is
786 787
          changed.
787 788
        </para>
789

  
790
        <para>
791
          The <option>--select-os</option> option switches to an
792
          interactive OS reinstall. The user is prompted to select the OS
793
          template from the list of available OS templates.
794
        </para>
788 795
      </refsect3>
789 796

  
790 797
      <refsect3>
b/scripts/gnt-instance
303 303
  """
304 304
  instance_name = args[0]
305 305

  
306
  if opts.select_os is True:
307
    op = opcodes.OpDiagnoseOS(output_fields=["name", "valid"], names=[])
308
    result = SubmitOpCode(op)
309

  
310
    if not result:
311
      logger.ToStdout("Can't get the OS list")
312
      return 1
313

  
314
    logger.ToStdout("Available OS templates:")
315
    number = 0
316
    choices = []
317
    for entry in result:
318
      logger.ToStdout("%3s: %s" % (number, entry[0]))
319
      choices.append(("%s" % number, entry[0], entry[0]))
320
      number = number + 1
321

  
322
    choices.append(('x', 'exit', 'Exit gnt-instance reinstall'))
323
    selected = AskUser("Enter OS template name or number (or x to abort):",
324
                       choices)
325

  
326
    if selected == 'exit':
327
      logger.ToStdout("User aborted reinstall, exiting")
328
      return 1
329

  
330
    os = selected
331
  else:
332
    os = opts.os
333

  
306 334
  if not opts.force:
307 335
    usertext = ("This will reinstall the instance %s and remove"
308 336
                " all data. Continue?") % instance_name
......
310 338
      return 1
311 339

  
312 340
  op = opcodes.OpReinstallInstance(instance_name=instance_name,
313
                                   os_type=opts.os)
341
                                   os_type=os)
314 342
  SubmitOpCode(op)
315 343

  
316 344
  return 0
......
928 956
           " ip, mac, bridge, sda_size, sdb_size, vcpus. The default field"
929 957
           " list is (in order): %s." % ", ".join(_LIST_DEF_FIELDS),
930 958
           ),
931
  'reinstall': (ReinstallInstance, ARGS_ONE, [DEBUG_OPT, FORCE_OPT, os_opt],
959
  'reinstall': (ReinstallInstance, ARGS_ONE,
960
                [DEBUG_OPT, FORCE_OPT, os_opt,
961
                 make_option("--select-os", dest="select_os",
962
                             action="store_true", default=False,
963
                             help="Interactive OS reinstall, lists available"
964
                             " OS templates for selection")],
932 965
                "[-f] <instance>", "Reinstall a stopped instance"),
933 966
  'remove': (RemoveInstance, ARGS_ONE,
934 967
             [DEBUG_OPT, FORCE_OPT,

Also available in: Unified diff