Revision aac0352d tools/burnin

b/tools/burnin
36 36
from ganeti import cli
37 37
from ganeti import errors
38 38
from ganeti import utils
39
from ganeti import hypervisor
39 40

  
40 41
from ganeti.confd import client as confd_client
41 42

  
......
111 112
                 help="OS to use during burnin",
112 113
                 metavar="<OS>",
113 114
                 completion_suggest=cli.OPT_COMPL_ONE_OS),
115
  cli.HYPERVISOR_OPT,
114 116
  cli.cli_option("--disk-size", dest="disk_size",
115 117
                 help="Disk size (determines disk count)",
116 118
                 default="128m", type="string", metavar="<size,size,...>",
......
473 475
      constants.BE_MEMORY: options.mem_size,
474 476
      constants.BE_VCPUS: 1,
475 477
      }
478

  
479
    self.hypervisor = None
476 480
    self.hvp = {}
481
    if options.hypervisor:
482
      self.hypervisor, self.hvp = options.hypervisor
477 483

  
478 484
    socket.setdefaulttimeout(options.net_timeout)
479 485

  
......
515 521

  
516 522
    default_nic_params = self.cluster_info["nicparams"][constants.PP_DEFAULT]
517 523
    self.cluster_default_nicparams = default_nic_params
524
    if self.hypervisor is None:
525
      self.hypervisor = self.cluster_info["default_hypervisor"]
526
    self.hv_class = hypervisor.GetHypervisorClass(self.hypervisor)
518 527

  
519 528
  @_DoCheckInstances
520 529
  @_DoBatch(False)
......
559 568
                                    iallocator=self.opts.iallocator,
560 569
                                    beparams=self.bep,
561 570
                                    hvparams=self.hvp,
571
                                    hypervisor=self.hypervisor,
562 572
                                    )
563 573
      remove_instance = lambda name: lambda: self.to_rem.append(name)
564 574
      self.ExecOrQueue(instance, [op], post_process=remove_instance(instance))
......
978 988
      if opts.do_failover and opts.disk_template in constants.DTS_NET_MIRROR:
979 989
        self.BurnFailover()
980 990

  
981
      if opts.do_migrate and opts.disk_template == constants.DT_DRBD8:
982
        self.BurnMigrate()
991
      if opts.do_migrate:
992
        if opts.disk_template != constants.DT_DRBD8:
993
          Log("Skipping migration (disk template not DRBD8)")
994
        elif not self.hv_class.CAN_MIGRATE:
995
          Log("Skipping migration (hypervisor %s does not support it)",
996
              self.hypervisor)
997
        else:
998
          self.BurnMigrate()
983 999

  
984 1000
      if (opts.do_move and len(self.nodes) > 1 and
985 1001
          opts.disk_template in [constants.DT_PLAIN, constants.DT_FILE]):

Also available in: Unified diff