Revision 7c848a6a qa/qa_instance.py
b/qa/qa_instance.py | ||
---|---|---|
630 | 630 |
print qa_utils.FormatInfo("Instance doesn't support disks, skipping test") |
631 | 631 |
return |
632 | 632 |
|
633 |
size = qa_config.GetDiskOptions()[-1].get("size") |
|
633 |
disk_conf = qa_config.GetDiskOptions()[-1] |
|
634 |
size = disk_conf.get("size") |
|
634 | 635 |
name = instance.name |
635 | 636 |
build_cmd = lambda arg: ["gnt-instance", "modify", "--disk", arg, name] |
636 |
AssertCommand(build_cmd("add:size=%s" % size)) |
|
637 |
if qa_config.AreSpindlesSupported(): |
|
638 |
spindles = disk_conf.get("spindles") |
|
639 |
spindles_supported = True |
|
640 |
else: |
|
641 |
# Any number is good for spindles in this case |
|
642 |
spindles = 1 |
|
643 |
spindles_supported = False |
|
644 |
AssertCommand(build_cmd("add:size=%s,spindles=%s" % (size, spindles)), |
|
645 |
fail=not spindles_supported) |
|
646 |
AssertCommand(build_cmd("add:size=%s" % size), |
|
647 |
fail=spindles_supported) |
|
648 |
# Exactly one of the above commands has succeded, so we need one remove |
|
637 | 649 |
AssertCommand(build_cmd("remove")) |
638 | 650 |
|
639 | 651 |
|
... | ... | |
681 | 693 |
for dev_type in ["disk", "net"]: |
682 | 694 |
if dev_type == "disk": |
683 | 695 |
options = ",size=512M" |
696 |
if qa_config.AreSpindlesSupported(): |
|
697 |
options += ",spindles=1" |
|
684 | 698 |
else: |
685 | 699 |
options = "" |
686 | 700 |
# succeed in adding a device named 'test_device' |
... | ... | |
806 | 820 |
AssertCommand(["gnt-instance", "deactivate-disks", instance.name]) |
807 | 821 |
|
808 | 822 |
|
823 |
def _BuildRecreateDisksOpts(en_disks, with_spindles, with_growth, |
|
824 |
spindles_supported): |
|
825 |
if with_spindles: |
|
826 |
if spindles_supported: |
|
827 |
if with_growth: |
|
828 |
build_spindles_opt = (lambda disk: |
|
829 |
",spindles=%s" % |
|
830 |
(disk["spindles"] + disk["spindles-growth"])) |
|
831 |
else: |
|
832 |
build_spindles_opt = (lambda disk: |
|
833 |
",spindles=%s" % disk["spindles"]) |
|
834 |
else: |
|
835 |
build_spindles_opt = (lambda _: ",spindles=1") |
|
836 |
else: |
|
837 |
build_spindles_opt = (lambda _: "") |
|
838 |
if with_growth: |
|
839 |
build_size_opt = (lambda disk: |
|
840 |
"size=%s" % (utils.ParseUnit(disk["size"]) + |
|
841 |
utils.ParseUnit(disk["growth"]))) |
|
842 |
else: |
|
843 |
build_size_opt = (lambda disk: "size=%s" % disk["size"]) |
|
844 |
build_disk_opt = (lambda (idx, disk): |
|
845 |
"--disk=%s:%s%s" % (idx, build_size_opt(disk), |
|
846 |
build_spindles_opt(disk))) |
|
847 |
return map(build_disk_opt, en_disks) |
|
848 |
|
|
849 |
|
|
809 | 850 |
@InstanceCheck(INST_UP, INST_UP, FIRST_ARG) |
810 | 851 |
def TestRecreateDisks(instance, inodes, othernodes): |
811 | 852 |
"""gnt-instance recreate-disks |
... | ... | |
845 | 886 |
# Move disks back |
846 | 887 |
_AssertRecreateDisks(["-n", orig_seq], instance) |
847 | 888 |
# Recreate resized disks |
889 |
# One of the two commands fails because either spindles are given when they |
|
890 |
# should not or vice versa |
|
848 | 891 |
alldisks = qa_config.GetDiskOptions() |
849 |
if qa_config.AreSpindlesSupported(): |
|
850 |
build_disks_opt = (lambda idx, disk: |
|
851 |
("--disk=%s:size=%s,spindles=%s" % |
|
852 |
(idx, (utils.ParseUnit(disk["size"]) + |
|
853 |
utils.ParseUnit(disk["growth"])), |
|
854 |
disk["spindles"] + disk["spindles-growth"]))) |
|
855 |
else: |
|
856 |
build_disks_opt = (lambda idx, disk: |
|
857 |
("--disk=%s:size=%s" % |
|
858 |
(idx, (utils.ParseUnit(disk["size"]) + |
|
859 |
utils.ParseUnit(disk["growth"]))))) |
|
860 |
disk_opts = map(build_disks_opt, range(0, len(alldisks)), (alldisks)) |
|
861 |
_AssertRecreateDisks(disk_opts, instance) |
|
892 |
spindles_supported = qa_config.AreSpindlesSupported() |
|
893 |
disk_opts = _BuildRecreateDisksOpts(enumerate(alldisks), True, True, |
|
894 |
spindles_supported) |
|
895 |
_AssertRecreateDisks(disk_opts, instance, destroy=True, |
|
896 |
fail=not spindles_supported) |
|
897 |
disk_opts = _BuildRecreateDisksOpts(enumerate(alldisks), False, True, |
|
898 |
spindles_supported) |
|
899 |
_AssertRecreateDisks(disk_opts, instance, destroy=False, |
|
900 |
fail=spindles_supported) |
|
862 | 901 |
# Recreate the disks one by one (with the original size) |
863 |
if qa_config.AreSpindlesSupported(): |
|
864 |
build_disks_opt = lambda idx, disk: ("--disk=%s:size=%s,spindles=%s" % |
|
865 |
(idx, disk["size"], disk["spindles"])) |
|
866 |
else: |
|
867 |
build_disks_opt = lambda idx, disk: ("--disk=%s:size=%s" % |
|
868 |
(idx, disk["size"])) |
|
869 | 902 |
for (idx, disk) in enumerate(alldisks): |
870 | 903 |
# Only the first call should destroy all the disk |
871 | 904 |
destroy = (idx == 0) |
872 |
_AssertRecreateDisks([build_disks_opt(idx, disk)], instance, |
|
873 |
destroy=destroy, check=False) |
|
905 |
# Again, one of the two commands is expected to fail |
|
906 |
disk_opts = _BuildRecreateDisksOpts([(idx, disk)], True, False, |
|
907 |
spindles_supported) |
|
908 |
_AssertRecreateDisks(disk_opts, instance, destroy=destroy, check=False, |
|
909 |
fail=not spindles_supported) |
|
910 |
disk_opts = _BuildRecreateDisksOpts([(idx, disk)], False, False, |
|
911 |
spindles_supported) |
|
912 |
_AssertRecreateDisks(disk_opts, instance, destroy=False, check=False, |
|
913 |
fail=spindles_supported) |
|
874 | 914 |
# This and InstanceCheck decoration check that the disks are working |
875 | 915 |
AssertCommand(["gnt-instance", "reinstall", "-f", instance.name]) |
876 | 916 |
AssertCommand(["gnt-instance", "start", instance.name]) |
Also available in: Unified diff