Revision 5de31440

b/qa/qa_instance.py
161 161
                         " %s" % (field, instance, info_out))
162 162

  
163 163

  
164
def IsFailoverSupported(instance):
165
  templ = qa_config.GetInstanceTemplate(instance)
166
  return templ in constants.DTS_MIRRORED
167

  
168

  
169
def IsMigrationSupported(instance):
170
  templ = qa_config.GetInstanceTemplate(instance)
171
  return templ in constants.DTS_MIRRORED
172

  
173

  
174
def IsDiskReplacingSupported(instance):
175
  templ = qa_config.GetInstanceTemplate(instance)
176
  return templ == constants.DT_DRBD8
177

  
178

  
164 179
@InstanceCheck(None, INST_UP, RETURN_VALUE)
165 180
def TestInstanceAddWithPlainDisk(node):
166 181
  """gnt-instance add -t plain"""
......
302 317
@InstanceCheck(INST_UP, INST_UP, FIRST_ARG)
303 318
def TestInstanceFailover(instance):
304 319
  """gnt-instance failover"""
320
  if not IsFailoverSupported(instance):
321
    print qa_utils.FormatInfo("Instance doesn't support failover, skipping"
322
                              " test")
323
    return
324

  
305 325
  cmd = ["gnt-instance", "failover", "--force", instance["name"]]
306 326

  
307 327
  # failover ...
......
315 335
@InstanceCheck(INST_UP, INST_UP, FIRST_ARG)
316 336
def TestInstanceMigrate(instance, toggle_always_failover=True):
317 337
  """gnt-instance migrate"""
338
  if not IsMigrationSupported(instance):
339
    print qa_utils.FormatInfo("Instance doesn't support migration, skipping"
340
                              " test")
341
    return
342

  
318 343
  cmd = ["gnt-instance", "migrate", "--force", instance["name"]]
319 344
  af_par = constants.BE_ALWAYS_FAILOVER
320 345
  af_field = "be/" + constants.BE_ALWAYS_FAILOVER
......
459 484
def TestInstanceConvertDisk(instance, snode):
460 485
  """gnt-instance modify -t"""
461 486
  name = instance["name"]
487
  template = qa_config.GetInstanceTemplate(instance)
488
  if template != "drbd":
489
    print qa_utils.FormatInfo("Unsupported template %s, skipping conversion"
490
                              " test" % template)
491
    return
462 492
  AssertCommand(["gnt-instance", "modify", "-t", "plain", name])
463 493
  AssertCommand(["gnt-instance", "modify", "-t", "drbd",
464 494
                 "-n", snode["primary"], name])
......
467 497
@InstanceCheck(INST_DOWN, INST_DOWN, FIRST_ARG)
468 498
def TestInstanceGrowDisk(instance):
469 499
  """gnt-instance grow-disk"""
500
  if qa_config.GetExclusiveStorage():
501
    print qa_utils.FormatInfo("Test not supported with exclusive_storage")
502
    return
470 503
  name = instance["name"]
471 504
  all_size = qa_config.get("disk")
472 505
  all_grow = qa_config.get("disk-growth")
......
515 548
    cmd.append(instance["name"])
516 549
    return cmd
517 550

  
551
  if not IsDiskReplacingSupported(instance):
552
    print qa_utils.FormatInfo("Instance doesn't support disk replacing,"
553
                              " skipping test")
554
    return
555

  
518 556
  options = qa_config.get("options", {})
519 557
  use_ialloc = options.get("use-iallocators", True)
520 558
  for data in [
b/qa/qa_rapi.py
46 46
import qa_utils
47 47
import qa_error
48 48

  
49
from qa_instance import IsFailoverSupported
50
from qa_instance import IsMigrationSupported
51
from qa_instance import IsDiskReplacingSupported
49 52
from qa_utils import (AssertEqual, AssertIn, AssertMatch, StartLocalCommand)
50 53
from qa_utils import InstanceCheck, INST_DOWN, INST_UP, FIRST_ARG
51 54

  
......
617 620
@InstanceCheck(INST_UP, INST_UP, FIRST_ARG)
618 621
def TestRapiInstanceMigrate(instance):
619 622
  """Test migrating instance via RAPI"""
623
  if not IsMigrationSupported(instance):
624
    print qa_utils.FormatInfo("Instance doesn't support migration, skipping"
625
                              " test")
626
    return
620 627
  # Move to secondary node
621 628
  _WaitForRapiJob(_rapi_client.MigrateInstance(instance["name"]))
622 629
  qa_utils.RunInstanceCheck(instance, True)
......
627 634
@InstanceCheck(INST_UP, INST_UP, FIRST_ARG)
628 635
def TestRapiInstanceFailover(instance):
629 636
  """Test failing over instance via RAPI"""
637
  if not IsFailoverSupported(instance):
638
    print qa_utils.FormatInfo("Instance doesn't support failover, skipping"
639
                              " test")
640
    return
630 641
  # Move to secondary node
631 642
  _WaitForRapiJob(_rapi_client.FailoverInstance(instance["name"]))
632 643
  qa_utils.RunInstanceCheck(instance, True)
......
676 687
@InstanceCheck(INST_UP, INST_UP, FIRST_ARG)
677 688
def TestRapiInstanceReplaceDisks(instance):
678 689
  """Test replacing instance disks via RAPI"""
690
  if not IsDiskReplacingSupported(instance):
691
    print qa_utils.FormatInfo("Instance doesn't support disk replacing,"
692
                              " skipping test")
693
    return
679 694
  fn = _rapi_client.ReplaceInstanceDisks
680 695
  _WaitForRapiJob(fn(instance["name"],
681 696
                     mode=constants.REPLACE_DISK_AUTO, disks=[]))

Also available in: Unified diff