sts-libs 2.4.2__tar.gz → 2.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (809) hide show
  1. {sts_libs-2.4.2 → sts_libs-2.6.0}/PKG-INFO +1 -1
  2. sts_libs-2.6.0/plans/fcoe/bnx2fc.fmf +7 -0
  3. sts_libs-2.6.0/plans/fcoe/multihost.fmf +16 -0
  4. sts_libs-2.6.0/plans/fcoe/qedf.fmf +7 -0
  5. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/bnx2i.fmf +1 -1
  6. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/sts-ci/ci.fmf +2 -0
  7. {sts_libs-2.4.2 → sts_libs-2.6.0}/pyproject.toml +1 -1
  8. sts_libs-2.6.0/sts_libs/src/sts/fcoe.py +404 -0
  9. sts_libs-2.6.0/sts_libs/src/sts/fixtures/fcoe_fixtures.py +91 -0
  10. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/iscsi_fixtures.py +12 -26
  11. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/__init__.py +2 -2
  12. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/config.py +9 -2
  13. sts_libs-2.6.0/sts_libs/src/sts/iscsi/errors.py +12 -0
  14. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/session.py +38 -0
  15. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/sg3_utils.py +27 -0
  16. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/target.py +92 -0
  17. sts_libs-2.6.0/sts_libs/tests/fixtures/test_iscsi_fixtures.py +77 -0
  18. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_config.py +43 -6
  19. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_session.py +26 -0
  20. sts_libs-2.6.0/sts_libs/tests/test_fcoe.py +416 -0
  21. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_sg3_utils.py +58 -0
  22. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_target.py +82 -0
  23. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/conftest.py +1 -0
  24. sts_libs-2.6.0/tests/fcoe/conftest.py +41 -0
  25. sts_libs-2.6.0/tests/fcoe/main.fmf +2 -0
  26. sts_libs-2.6.0/tests/fcoe/multihost/main.fmf +14 -0
  27. sts_libs-2.6.0/tests/fcoe/multihost/test_io_stress.py +108 -0
  28. sts_libs-2.6.0/tests/fcoe/multihost/test_lun_removal.py +93 -0
  29. sts_libs-2.6.0/tests/fcoe/multihost/test_target_resilience.py +99 -0
  30. sts_libs-2.6.0/tests/fcoe/test_driver_lifecycle/main.fmf +9 -0
  31. sts_libs-2.6.0/tests/fcoe/test_driver_lifecycle/test_driver_lifecycle.py +83 -0
  32. sts_libs-2.6.0/tests/fcoe/test_fcoe_init/main.fmf +8 -0
  33. sts_libs-2.6.0/tests/fcoe/test_fcoe_init/test_fcoe_init.py +153 -0
  34. sts_libs-2.6.0/tests/fcoe/test_fcoe_io.fmf +14 -0
  35. sts_libs-2.6.0/tests/fcoe/test_fcoe_lifecycle/main.fmf +8 -0
  36. sts_libs-2.6.0/tests/fcoe/test_fcoe_lifecycle/test_fcoe_lifecycle.py +83 -0
  37. sts_libs-2.6.0/tests/fcoe/test_lldpad/main.fmf +9 -0
  38. sts_libs-2.6.0/tests/fcoe/test_lldpad/test_lldpad.py +66 -0
  39. sts_libs-2.6.0/tests/fcoe/test_nic_lifecycle/main.fmf +9 -0
  40. sts_libs-2.6.0/tests/fcoe/test_nic_lifecycle/test_nic_lifecycle.py +78 -0
  41. sts_libs-2.6.0/tests/fcoe/test_npiv/main.fmf +10 -0
  42. sts_libs-2.6.0/tests/fcoe/test_npiv/test_npiv.py +126 -0
  43. sts_libs-2.6.0/tests/fcoe/test_san_lvm.fmf +15 -0
  44. sts_libs-2.6.0/tests/fcoe/test_san_resilience.fmf +14 -0
  45. sts_libs-2.6.0/tests/fcoe/test_san_sg_reset.fmf +11 -0
  46. sts_libs-2.6.0/tests/fcoe/test_sysfs/main.fmf +8 -0
  47. sts_libs-2.6.0/tests/fcoe/test_sysfs/test_sysfs.py +66 -0
  48. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/fio_basic.fmf +1 -1
  49. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/parameters/iscsi_params.py +3 -9
  50. sts_libs-2.6.0/tests/san/conftest.py +72 -0
  51. sts_libs-2.6.0/tests/san/main.fmf +2 -0
  52. sts_libs-2.6.0/tests/san/test_io_stress/main.fmf +10 -0
  53. sts_libs-2.6.0/tests/san/test_io_stress/test_io_stress.py +55 -0
  54. sts_libs-2.6.0/tests/san/test_lvm_persistence/main.fmf +14 -0
  55. sts_libs-2.6.0/tests/san/test_lvm_persistence/test_lvm_persistence.py +207 -0
  56. sts_libs-2.6.0/tests/san/test_path_resilience/main.fmf +11 -0
  57. sts_libs-2.6.0/tests/san/test_path_resilience/test_path_resilience.py +132 -0
  58. sts_libs-2.6.0/tests/san/test_sg_reset/main.fmf +8 -0
  59. sts_libs-2.6.0/tests/san/test_sg_reset/test_sg_reset.py +75 -0
  60. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/loopback/main.fmf +1 -1
  61. {sts_libs-2.4.2 → sts_libs-2.6.0}/uv.lock +1 -1
  62. sts_libs-2.4.2/sts_libs/tests/fixtures/test_iscsi_fixtures.py +0 -69
  63. {sts_libs-2.4.2 → sts_libs-2.6.0}/.fmf/version +0 -0
  64. {sts_libs-2.4.2 → sts_libs-2.6.0}/.gitignore +0 -0
  65. {sts_libs-2.4.2 → sts_libs-2.6.0}/.gitlab-ci.yml +0 -0
  66. {sts_libs-2.4.2 → sts_libs-2.6.0}/.markdownlint.json +0 -0
  67. {sts_libs-2.4.2 → sts_libs-2.6.0}/.packit.yaml +0 -0
  68. {sts_libs-2.4.2 → sts_libs-2.6.0}/.pre-commit-config.yaml +0 -0
  69. {sts_libs-2.4.2 → sts_libs-2.6.0}/.scripts/sync_sts.py +0 -0
  70. {sts_libs-2.4.2 → sts_libs-2.6.0}/AGENTS.md +0 -0
  71. {sts_libs-2.4.2 → sts_libs-2.6.0}/CLAUDE.md +0 -0
  72. {sts_libs-2.4.2 → sts_libs-2.6.0}/LICENSE +0 -0
  73. {sts_libs-2.4.2 → sts_libs-2.6.0}/README.md +0 -0
  74. {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/Containerfile +0 -0
  75. {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/README.md +0 -0
  76. {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/build.sh +0 -0
  77. {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/ci.Containerfile +0 -0
  78. {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/run.sh +0 -0
  79. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/contributing/docstrings.md +0 -0
  80. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/contributing/image-mode-testing.md +0 -0
  81. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/contributing/writing-tests.md +0 -0
  82. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/contributing.md +0 -0
  83. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/index.md +0 -0
  84. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/fixtures.md +0 -0
  85. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/index.md +0 -0
  86. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/base.md +0 -0
  87. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/blockdevice.md +0 -0
  88. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/boom.md +0 -0
  89. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/devicemapper.md +0 -0
  90. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/dmpd.md +0 -0
  91. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/fc.md +0 -0
  92. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/fio.md +0 -0
  93. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/iscsi.md +0 -0
  94. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/isns.md +0 -0
  95. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/loop.md +0 -0
  96. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/lvm.md +0 -0
  97. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/multipath.md +0 -0
  98. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/network.md +0 -0
  99. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/nvme.md +0 -0
  100. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/pr.md +0 -0
  101. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/qemu.md +0 -0
  102. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/rdma.md +0 -0
  103. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/scsi.md +0 -0
  104. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/scsi_debug.md +0 -0
  105. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/sg3_utils.md +0 -0
  106. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/snapm.md +0 -0
  107. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/stratis.md +0 -0
  108. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/target.md +0 -0
  109. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/udevadm.md +0 -0
  110. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/vdo.md +0 -0
  111. {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/utils.md +0 -0
  112. {sts_libs-2.4.2 → sts_libs-2.6.0}/mkdocs.yml +0 -0
  113. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/ahci/main.fmf +0 -0
  114. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/block/virtual-hw.fmf +0 -0
  115. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/block/virtual.fmf +0 -0
  116. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/boom/tier1.fmf +0 -0
  117. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/boom/tier2-st76.fmf +0 -0
  118. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/boom/tier2.fmf +0 -0
  119. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/device-mapper/tier1.fmf +0 -0
  120. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/dmpd/tier1.fmf +0 -0
  121. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/fc/full_lpfc.fmf +0 -0
  122. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/fc/full_qla2xxx.fmf +0 -0
  123. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/fc/main.fmf +0 -0
  124. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/device-mapper.fmf +0 -0
  125. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/dmpd.fmf +0 -0
  126. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/iscsi.fmf +0 -0
  127. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/lvm.fmf +0 -0
  128. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/main.fmf +0 -0
  129. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/multipath.fmf +0 -0
  130. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/stratis.fmf +0 -0
  131. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/udisks2.fmf +0 -0
  132. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/vdo.fmf +0 -0
  133. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/libiscsi/main.fmf +0 -0
  134. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/local.fmf +0 -0
  135. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/be2iscsi.fmf +0 -0
  136. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/cxgb4i.fmf +0 -0
  137. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/intel.fmf +0 -0
  138. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/main.fmf +0 -0
  139. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/qedi.fmf +0 -0
  140. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/tier0.fmf +0 -0
  141. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/isns-utils/full.fmf +0 -0
  142. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lio/core.fmf +0 -0
  143. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lio/full.fmf +0 -0
  144. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lsscsi/tier1.fmf +0 -0
  145. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lsscsi/tier2.fmf +0 -0
  146. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lvm/tier1.fmf +0 -0
  147. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/main.fmf +0 -0
  148. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/multipath/tier1.fmf +0 -0
  149. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/rdma/main.fmf +0 -0
  150. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/rdma/regression.fmf +0 -0
  151. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/rdma/test_case_vars.yaml +0 -0
  152. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/scsi/main.fmf +0 -0
  153. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/sg3_utils/tier1.fmf +0 -0
  154. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/snapm/tier1.fmf +0 -0
  155. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/snapm/tier2-st76.fmf +0 -0
  156. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/snapm/tier2.fmf +0 -0
  157. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/multihost/main.fmf +0 -0
  158. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/multihost/nfs.fmf +0 -0
  159. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier1.fmf +0 -0
  160. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-fstab-stqe.fmf +0 -0
  161. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-fstab.fmf +0 -0
  162. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-linear.fmf +0 -0
  163. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-mdraid1.fmf +0 -0
  164. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-raid1.fmf +0 -0
  165. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/udisks2/tier1.fmf +0 -0
  166. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/udisks2/tier2.fmf +0 -0
  167. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/udisks2/tier3.fmf +0 -0
  168. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/main.fmf +0 -0
  169. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/multihost-aarch64.fmf +0 -0
  170. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/multihost-ppc64le.fmf +0 -0
  171. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/multihost-s390x.fmf +0 -0
  172. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/multihost-stqe.fmf +0 -0
  173. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/tier1.fmf +0 -0
  174. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/tier2-high-memory.fmf +0 -0
  175. {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/vdo_smoke.fmf +0 -0
  176. {sts_libs-2.4.2 → sts_libs-2.6.0}/python-sts-libs.spec +0 -0
  177. {sts_libs-2.4.2 → sts_libs-2.6.0}/renovate.json +0 -0
  178. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/README.md +0 -0
  179. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/__init__.py +0 -0
  180. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/__init__.py +0 -0
  181. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/__init__.py +0 -0
  182. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/ahci.py +0 -0
  183. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/base.py +0 -0
  184. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/blockdevice.py +0 -0
  185. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/__init__.py +0 -0
  186. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/base.py +0 -0
  187. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/entry.py +0 -0
  188. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/errors.py +0 -0
  189. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/host.py +0 -0
  190. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/profile.py +0 -0
  191. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/__init__.py +0 -0
  192. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/base.py +0 -0
  193. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/cache.py +0 -0
  194. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/delay.py +0 -0
  195. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/error.py +0 -0
  196. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/errors.py +0 -0
  197. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/flakey.py +0 -0
  198. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/linear.py +0 -0
  199. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/thin.py +0 -0
  200. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/vdo.py +0 -0
  201. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/zero.py +0 -0
  202. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dmpd.py +0 -0
  203. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fc.py +0 -0
  204. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fio/__init__.py +0 -0
  205. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fio/errors.py +0 -0
  206. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fio/fio.py +0 -0
  207. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fio/parameters.py +0 -0
  208. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/__init__.py +0 -0
  209. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/ahci_fixtures.py +0 -0
  210. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/block_fixtures.py +0 -0
  211. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/boom_fixtures.py +0 -0
  212. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/common_fixtures.py +0 -0
  213. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/dm_fixtures.py +0 -0
  214. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/dmpd_fixtures.py +0 -0
  215. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/fc_fixtures.py +0 -0
  216. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/lvm_fixtures.py +0 -0
  217. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/module_fixtures.py +0 -0
  218. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/multipath_fixtures.py +0 -0
  219. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/nvme_fixtures.py +0 -0
  220. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/rdma_fixtures.py +0 -0
  221. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/service_fixtures.py +0 -0
  222. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/sg3_utils_fixtures.py +0 -0
  223. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/snapm_fixtures.py +0 -0
  224. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/stratis_fixtures.py +0 -0
  225. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/target_fixtures.py +0 -0
  226. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/udisks2_fixtures.py +0 -0
  227. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/vdo_fixtures.py +0 -0
  228. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/hdparm.py +0 -0
  229. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/device.py +0 -0
  230. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/iscsiadm.py +0 -0
  231. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/node.py +0 -0
  232. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/parameters.py +0 -0
  233. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/isns.py +0 -0
  234. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/loop.py +0 -0
  235. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/__init__.py +0 -0
  236. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/base.py +0 -0
  237. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/errors.py +0 -0
  238. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/logical_volume.py +0 -0
  239. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/lvconf.py +0 -0
  240. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/options.py +0 -0
  241. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/physical_volume.py +0 -0
  242. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/reports.py +0 -0
  243. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/thin_pool.py +0 -0
  244. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/volume_group.py +0 -0
  245. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/marks.py +0 -0
  246. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/md.py +0 -0
  247. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/models.py +0 -0
  248. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/multipath.py +0 -0
  249. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/nbd.py +0 -0
  250. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/network/__init__.py +0 -0
  251. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/network/errors.py +0 -0
  252. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/network/interface.py +0 -0
  253. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/network/nm.py +0 -0
  254. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/null_blk.py +0 -0
  255. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/nvme.py +0 -0
  256. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/pr.py +0 -0
  257. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/py.typed +0 -0
  258. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/qemu.py +0 -0
  259. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/rdma.py +0 -0
  260. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/scsi.py +0 -0
  261. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/scsi_debug.py +0 -0
  262. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/smartctl.py +0 -0
  263. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/__init__.py +0 -0
  264. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/base.py +0 -0
  265. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/errors.py +0 -0
  266. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/plugin.py +0 -0
  267. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/schedule.py +0 -0
  268. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/snapset.py +0 -0
  269. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/snapshot.py +0 -0
  270. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/__init__.py +0 -0
  271. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/base.py +0 -0
  272. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/errors.py +0 -0
  273. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/filesystem.py +0 -0
  274. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/pool.py +0 -0
  275. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/udevadm.py +0 -0
  276. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/udisks2.py +0 -0
  277. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/__init__.py +0 -0
  278. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/cli.py +0 -0
  279. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/cmdline.py +0 -0
  280. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/config.py +0 -0
  281. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/errors.py +0 -0
  282. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/files.py +0 -0
  283. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/fmf_markers.py +0 -0
  284. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/fstab.py +0 -0
  285. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/modules.py +0 -0
  286. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/nfs.py +0 -0
  287. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/packages.py +0 -0
  288. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/processes.py +0 -0
  289. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/size.py +0 -0
  290. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/string_extras.py +0 -0
  291. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/sync.py +0 -0
  292. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/syscheck.py +0 -0
  293. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/system.py +0 -0
  294. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/teststate.py +0 -0
  295. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/tmt_pytest.py +0 -0
  296. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/version.py +0 -0
  297. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/vdo.py +0 -0
  298. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/zram.py +0 -0
  299. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/__init__.py +0 -0
  300. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/__init__.py +0 -0
  301. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/test_base.py +0 -0
  302. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/test_entry.py +0 -0
  303. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/test_host.py +0 -0
  304. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/test_profile.py +0 -0
  305. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/conftest.py +0 -0
  306. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/data/lvs_report_multi.json +0 -0
  307. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/data/lvs_report_single.json +0 -0
  308. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/data/multipathd_show_map.json +0 -0
  309. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/data/nvme_list.json +0 -0
  310. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/__init__.py +0 -0
  311. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_base.py +0 -0
  312. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_cache_vdo.py +0 -0
  313. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_delay_flakey.py +0 -0
  314. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_linear.py +0 -0
  315. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_thin.py +0 -0
  316. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fio/__init__.py +0 -0
  317. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fio/test_fio.py +0 -0
  318. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fio/test_parameters.py +0 -0
  319. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fixtures/__init__.py +0 -0
  320. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fixtures/test_module_fixtures.py +0 -0
  321. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fixtures/test_multipath_fixtures.py +0 -0
  322. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fixtures/test_service_fixtures.py +0 -0
  323. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/__init__.py +0 -0
  324. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/test_boom_boot.py +0 -0
  325. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/test_root_lvm.py +0 -0
  326. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/test_snapm_boot.py +0 -0
  327. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/test_tmt_reboot.py +0 -0
  328. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/__init__.py +0 -0
  329. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/conftest.py +0 -0
  330. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_device.py +0 -0
  331. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_iscsiadm.py +0 -0
  332. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_parameters.py +0 -0
  333. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/__init__.py +0 -0
  334. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_base.py +0 -0
  335. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_logical_volume.py +0 -0
  336. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_lvconf.py +0 -0
  337. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_options.py +0 -0
  338. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_physical_volume.py +0 -0
  339. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_reports.py +0 -0
  340. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_thin_pool.py +0 -0
  341. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_volume_group.py +0 -0
  342. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/network/__init__.py +0 -0
  343. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/network/test_interface.py +0 -0
  344. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/network/test_nm.py +0 -0
  345. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/__init__.py +0 -0
  346. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_base.py +0 -0
  347. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_plugin.py +0 -0
  348. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_schedule.py +0 -0
  349. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_snapset.py +0 -0
  350. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_snapshot.py +0 -0
  351. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/stratis/__init__.py +0 -0
  352. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/stratis/test_base.py +0 -0
  353. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/stratis/test_filesystem.py +0 -0
  354. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/stratis/test_pool.py +0 -0
  355. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_ahci.py +0 -0
  356. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_base.py +0 -0
  357. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_block_fixtures.py +0 -0
  358. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_blockdevice.py +0 -0
  359. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_cmdline.py +0 -0
  360. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_fc.py +0 -0
  361. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_hdparm.py +0 -0
  362. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_loop.py +0 -0
  363. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_marks.py +0 -0
  364. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_md.py +0 -0
  365. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_models.py +0 -0
  366. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_module_fixtures.py +0 -0
  367. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_multipath.py +0 -0
  368. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_multipath_report.py +0 -0
  369. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_nbd.py +0 -0
  370. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_null_blk.py +0 -0
  371. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_nvme.py +0 -0
  372. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_packages.py +0 -0
  373. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_pr.py +0 -0
  374. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_rdma.py +0 -0
  375. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_scsi.py +0 -0
  376. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_scsi_debug.py +0 -0
  377. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_smartctl.py +0 -0
  378. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_string_extras.py +0 -0
  379. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_syscheck.py +0 -0
  380. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_system.py +0 -0
  381. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_udisks2.py +0 -0
  382. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_vdo.py +0 -0
  383. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_version.py +0 -0
  384. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_zram.py +0 -0
  385. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/__init__.py +0 -0
  386. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_cli.py +0 -0
  387. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_files.py +0 -0
  388. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_fmf_markers.py +0 -0
  389. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_fstab.py +0 -0
  390. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_modules.py +0 -0
  391. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_nfs.py +0 -0
  392. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_processes.py +0 -0
  393. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_size.py +0 -0
  394. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_sync.py +0 -0
  395. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_teststate.py +0 -0
  396. {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_tmt_pytest.py +0 -0
  397. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/conftest.py +0 -0
  398. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/main.fmf +0 -0
  399. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_benchmarks.py +0 -0
  400. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_detection.py +0 -0
  401. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_error_recovery.py +0 -0
  402. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_ncq.py +0 -0
  403. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_sanity.py +0 -0
  404. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/cgroup/main.fmf +0 -0
  405. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/cgroup/test_blkio_throttle.py +0 -0
  406. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/conftest.py +0 -0
  407. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/cpu_hotplug/main.fmf +0 -0
  408. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/cpu_hotplug/test_cpu_offline_io.py +0 -0
  409. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/identity/main.fmf +0 -0
  410. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/identity/test_diskstats.py +0 -0
  411. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/io_scheduler/main.fmf +0 -0
  412. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/io_scheduler/test_elevator_switch_race.py +0 -0
  413. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/io_scheduler/test_scheduler_switch.py +0 -0
  414. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/loop/main.fmf +0 -0
  415. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/loop/test_partition_uevent.py +0 -0
  416. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/main.fmf +0 -0
  417. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/conftest.py +0 -0
  418. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/main.fmf +0 -0
  419. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/test_lvm_raid.py +0 -0
  420. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/test_md_discard.py +0 -0
  421. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/test_md_levels.py +0 -0
  422. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/misc/main.fmf +0 -0
  423. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/misc/test_scsi_state_transition.py +0 -0
  424. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/nbd/main.fmf +0 -0
  425. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/nbd/test_nbd_unix_socket.py +0 -0
  426. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/null_blk/main.fmf +0 -0
  427. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/null_blk/test_null_blk_basic.py +0 -0
  428. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/null_blk/test_null_blk_configfs.py +0 -0
  429. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/main.fmf +0 -0
  430. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/test_delete_scan.py +0 -0
  431. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/test_dif_dix_stress.py +0 -0
  432. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/test_shared_host_tags.py +0 -0
  433. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/test_unmap.py +0 -0
  434. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/zoned/main.fmf +0 -0
  435. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/zoned/test_zoned_devices.py +0 -0
  436. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/zram/main.fmf +0 -0
  437. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/zram/test_zram_compression.py +0 -0
  438. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/boom_sanity.fmf +0 -0
  439. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/boom_sanity.py +0 -0
  440. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/snapshot_boot.fmf +0 -0
  441. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/test_boom_snapshot_boot.py +0 -0
  442. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/upgrade/main.fmf +0 -0
  443. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/upgrade/test_boom_upgrade_boot.py +0 -0
  444. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/Containerfile +0 -0
  445. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/Containerfile.iscsi +0 -0
  446. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/Containerfile.stratis +0 -0
  447. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/Containerfile.udisks2 +0 -0
  448. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/common-setup.sh +0 -0
  449. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/main.fmf +0 -0
  450. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/runtest.sh +0 -0
  451. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/cache/main.fmf +0 -0
  452. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/cache/test_dm_cache.py +0 -0
  453. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/delay/main.fmf +0 -0
  454. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/delay/test_dm_delay.py +0 -0
  455. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/error/main.fmf +0 -0
  456. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/error/test_dm_error.py +0 -0
  457. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/flakey/main.fmf +0 -0
  458. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/flakey/test_dm_flakey.py +0 -0
  459. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/linear/main.fmf +0 -0
  460. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/linear/test_linear_target.py +0 -0
  461. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/main.fmf +0 -0
  462. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/thinp/main.fmf +0 -0
  463. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/thinp/test_dm_thin.py +0 -0
  464. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/vdo/main.fmf +0 -0
  465. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/vdo/test_dm_vdo.py +0 -0
  466. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/zero/main.fmf +0 -0
  467. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/zero/test_dm_zero.py +0 -0
  468. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_check.fmf +0 -0
  469. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_dump.fmf +0 -0
  470. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_metadata_size.fmf +0 -0
  471. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_repair.fmf +0 -0
  472. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_restore.fmf +0 -0
  473. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/main.fmf +0 -0
  474. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_check.py +0 -0
  475. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_dump.py +0 -0
  476. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_metadata_size.py +0 -0
  477. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_repair.py +0 -0
  478. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_restore.py +0 -0
  479. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/conftest.py +0 -0
  480. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/conftest.py +0 -0
  481. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/main.fmf +0 -0
  482. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_check.py +0 -0
  483. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_delta.py +0 -0
  484. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_dump.py +0 -0
  485. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_ls.py +0 -0
  486. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_metadata_size.py +0 -0
  487. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_repair.py +0 -0
  488. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_restore.py +0 -0
  489. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_trim.py +0 -0
  490. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_check.fmf +0 -0
  491. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_delta.fmf +0 -0
  492. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_ls.fmf +0 -0
  493. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_metadata_size.fmf +0 -0
  494. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_repair.fmf +0 -0
  495. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_restore.fmf +0 -0
  496. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_trim.fmf +0 -0
  497. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/conftest.py +0 -0
  498. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/online_offline/basic.fmf +0 -0
  499. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/online_offline/main.fmf +0 -0
  500. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/online_offline/online_offline.py +0 -0
  501. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/online_offline/stress.fmf +0 -0
  502. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/rescan_deleted_disk/main.fmf +0 -0
  503. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/rescan_deleted_disk/rescan_deleted_disk.py +0 -0
  504. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/main.fmf +0 -0
  505. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/__init__.py +0 -0
  506. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/boom_boot.py +0 -0
  507. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/root_lvm.py +0 -0
  508. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/snapm_boot.py +0 -0
  509. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/stratis_pool.py +0 -0
  510. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/tmt_reboot.py +0 -0
  511. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/vdo.py +0 -0
  512. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/conftest.py +0 -0
  513. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/conftest.py +0 -0
  514. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/fio_multipath_basic.fmf +0 -0
  515. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/fio_multipath_stress.fmf +0 -0
  516. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/fio_stress.fmf +0 -0
  517. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/main.fmf +0 -0
  518. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/test_fio.py +0 -0
  519. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/libiscsi/local/libiscsi-local.py +0 -0
  520. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/libiscsi/local/main.fmf +0 -0
  521. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/libiscsi/main.fmf +0 -0
  522. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/login-logout-stress/login-logout-stress.py +0 -0
  523. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/login-logout-stress/main.fmf +0 -0
  524. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/main.fmf +0 -0
  525. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/many-luns/main.fmf +0 -0
  526. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/many-luns/many-luns-local.py +0 -0
  527. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/parameters/main.fmf +0 -0
  528. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/read_debugfs/main.fmf +0 -0
  529. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/read_debugfs/read_debugfs.py +0 -0
  530. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsm/targetd/conftest.py +0 -0
  531. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsm/targetd/main.fmf +0 -0
  532. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsm/targetd/test_targetd.py +0 -0
  533. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/conftest.py +0 -0
  534. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/core/main.fmf +0 -0
  535. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/core/test_lsscsi_basic.py +0 -0
  536. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/main.fmf +0 -0
  537. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/nvme_detection/main.fmf +0 -0
  538. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/nvme_detection/test_nvme_detection.py +0 -0
  539. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/conftest.py +0 -0
  540. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/bugs/test_discard_corruption.py +0 -0
  541. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/bugs/test_stripe_blkdiscard.py +0 -0
  542. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/bugs/test_thinpool_error_target_meta.py +0 -0
  543. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/conftest.py +0 -0
  544. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/main.fmf +0 -0
  545. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_discard_perf.py +0 -0
  546. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvchange_thin.py +0 -0
  547. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvconf_thinp.py +0 -0
  548. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvconvert_thin_lv.py +0 -0
  549. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvconvert_thinpool.py +0 -0
  550. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvcreate_linear.py +0 -0
  551. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvcreate_mirror.py +0 -0
  552. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvcreate_poolmetadataspare.py +0 -0
  553. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvcreate_stripe.py +0 -0
  554. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvextend.py +0 -0
  555. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvm_thinp_misc.py +0 -0
  556. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvm_thinp_modules.py +0 -0
  557. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvreduce_thinp.py +0 -0
  558. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvremove_thinp.py +0 -0
  559. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvrename_thinp.py +0 -0
  560. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvresize_thinp.py +0 -0
  561. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvs_thinp.py +0 -0
  562. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvscan_thinp.py +0 -0
  563. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_pool_capacity.py +0 -0
  564. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_thin_perf.py +0 -0
  565. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/main.fmf +0 -0
  566. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/multipath/basic.fmf +0 -0
  567. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/multipath/service.fmf +0 -0
  568. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/multipath/test_multipath_basic.py +0 -0
  569. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/multipath/test_multipath_service.py +0 -0
  570. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/pytest.ini +0 -0
  571. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/customers/customer_1/issue_23967_verify_speed.py +0 -0
  572. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/customers/customer_1/main.fmf +0 -0
  573. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/customers/main.fmf +0 -0
  574. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/main.fmf +0 -0
  575. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/others/main.fmf +0 -0
  576. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/others/reproducers.py +0 -0
  577. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/main.fmf +0 -0
  578. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/pyverbs-tests/core/main.fmf +0 -0
  579. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/pyverbs-tests/core/pyverbs-tests.py +0 -0
  580. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/sriov/core/main.fmf +0 -0
  581. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/sriov/core/sriov.py +0 -0
  582. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/scsi/conftest.py +0 -0
  583. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/scsi/main.fmf +0 -0
  584. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/scsi/test_hotplug.py +0 -0
  585. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/scsi/test_io.py +0 -0
  586. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/conftest.py +0 -0
  587. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/main.fmf +0 -0
  588. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/main.fmf +0 -0
  589. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_documentation_check/main.fmf +0 -0
  590. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_documentation_check/test_documentation_check.py +0 -0
  591. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_deletes_dev_null/main.fmf +0 -0
  592. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_deletes_dev_null/test_rescan_deletes_dev_null.py +0 -0
  593. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_ignore_rev/main.fmf +0 -0
  594. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_ignore_rev/test_rescan_ignore_rev.py +0 -0
  595. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_lun_scanning/main.fmf +0 -0
  596. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_lun_scanning/test_rescan_lun_scanning.py +0 -0
  597. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_removes_readds/main.fmf +0 -0
  598. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_removes_readds/test_rescan_removes_readds.py +0 -0
  599. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_syntax_error/main.fmf +0 -0
  600. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_syntax_error/test_rescan_syntax_error.py +0 -0
  601. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_too_many_args/main.fmf +0 -0
  602. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_too_many_args/test_rescan_too_many_args.py +0 -0
  603. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_sg_map26_32_devices/main.fmf +0 -0
  604. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_sg_map26_32_devices/test_sg_map26_32_devices.py +0 -0
  605. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_sginfo_dev_snapshot/main.fmf +0 -0
  606. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_sginfo_dev_snapshot/test_sginfo_dev_snapshot.py +0 -0
  607. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/main.fmf +0 -0
  608. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg3_dd/main.fmf +0 -0
  609. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg3_dd/test_sg3_dd.py +0 -0
  610. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_get_config/main.fmf +0 -0
  611. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_get_config/test_sg_get_config.py +0 -0
  612. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_ident/main.fmf +0 -0
  613. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_ident/test_sg_ident.py +0 -0
  614. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_inq/main.fmf +0 -0
  615. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_inq/test_sg_inq.py +0 -0
  616. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_logs/main.fmf +0 -0
  617. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_logs/test_sg_logs.py +0 -0
  618. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_luns/main.fmf +0 -0
  619. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_luns/test_sg_luns.py +0 -0
  620. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_map/main.fmf +0 -0
  621. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_map/test_sg_map.py +0 -0
  622. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_modes/main.fmf +0 -0
  623. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_modes/test_sg_modes.py +0 -0
  624. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_opcodes/main.fmf +0 -0
  625. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_opcodes/test_sg_opcodes.py +0 -0
  626. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_persist/main.fmf +0 -0
  627. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_persist/test_sg_persist.py +0 -0
  628. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_rbuf/main.fmf +0 -0
  629. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_rbuf/test_sg_rbuf.py +0 -0
  630. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read/main.fmf +0 -0
  631. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read/test_sg_read.py +0 -0
  632. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read_buffer/main.fmf +0 -0
  633. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read_buffer/test_sg_read_buffer.py +0 -0
  634. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read_long/main.fmf +0 -0
  635. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read_long/test_sg_read_long.py +0 -0
  636. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_readcap/main.fmf +0 -0
  637. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_readcap/test_sg_readcap.py +0 -0
  638. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_safte/main.fmf +0 -0
  639. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_safte/test_sg_safte.py +0 -0
  640. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_sat_identify/main.fmf +0 -0
  641. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_sat_identify/test_sg_sat_identify.py +0 -0
  642. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_scan/main.fmf +0 -0
  643. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_scan/test_sg_scan.py +0 -0
  644. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_senddiag/main.fmf +0 -0
  645. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_senddiag/test_sg_senddiag.py +0 -0
  646. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_ses/main.fmf +0 -0
  647. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_ses/test_sg_ses.py +0 -0
  648. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_start/main.fmf +0 -0
  649. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_start/test_sg_start.py +0 -0
  650. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_sync/main.fmf +0 -0
  651. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_sync/test_sg_sync.py +0 -0
  652. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_turs/main.fmf +0 -0
  653. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_turs/test_sg_turs.py +0 -0
  654. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_verify/main.fmf +0 -0
  655. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_verify/test_sg_verify.py +0 -0
  656. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_vpd/main.fmf +0 -0
  657. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_vpd/test_sg_vpd.py +0 -0
  658. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_write_buffer/main.fmf +0 -0
  659. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_write_buffer/test_sg_write_buffer.py +0 -0
  660. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sginfo/main.fmf +0 -0
  661. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sginfo/test_sginfo.py +0 -0
  662. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/version_help/main.fmf +0 -0
  663. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/version_help/test_version_help.py +0 -0
  664. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/conftest.py +0 -0
  665. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/conftest.py +0 -0
  666. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/main.fmf +0 -0
  667. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_diff.py +0 -0
  668. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_mount.py +0 -0
  669. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_sanity.py +0 -0
  670. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_schedule.py +0 -0
  671. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_snapset.py +0 -0
  672. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapshot_boot/main.fmf +0 -0
  673. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapshot_boot/test_snapm_snapshot_boot.py +0 -0
  674. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/upgrade/main.fmf +0 -0
  675. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/upgrade/test_snapm_upgrade.py +0 -0
  676. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/upgrade/test_snapm_upgrade_boot.fmf +0 -0
  677. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/upgrade/test_snapm_upgrade_boot.py +0 -0
  678. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/conftest.py +0 -0
  679. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_blockdev.fmf +0 -0
  680. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_blockdev.py +0 -0
  681. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_daemon.fmf +0 -0
  682. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_daemon.py +0 -0
  683. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_filesystem.fmf +0 -0
  684. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_filesystem.py +0 -0
  685. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_key.fmf +0 -0
  686. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_key.py +0 -0
  687. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool.fmf +0 -0
  688. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool.py +0 -0
  689. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_advanced.fmf +0 -0
  690. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_advanced.py +0 -0
  691. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_encryption.fmf +0 -0
  692. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_encryption.py +0 -0
  693. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_operations.fmf +0 -0
  694. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_operations.py +0 -0
  695. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/conftest.py +0 -0
  696. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/main.fmf +0 -0
  697. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/multihost/main.fmf +0 -0
  698. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/multihost/test_stratis_multihost.py +0 -0
  699. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/persistence/main.fmf +0 -0
  700. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/persistence/test_stratis_fstab_persistence.py +0 -0
  701. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/upgrade/main.fmf +0 -0
  702. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/upgrade/test_stratis_upgrade.py +0 -0
  703. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sts-prepare/main.fmf +0 -0
  704. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sts-prepare/runtest.sh +0 -0
  705. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/backstores/backstores.py +0 -0
  706. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/backstores/main.fmf +0 -0
  707. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/config_mgmt/config_management.py +0 -0
  708. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/config_mgmt/main.fmf +0 -0
  709. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/global_config/main.fmf +0 -0
  710. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/global_config/test_auto_use_daemon.py +0 -0
  711. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/global_config/test_global_parameters.py +0 -0
  712. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/global_config/test_global_parameters_sanity.py +0 -0
  713. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/iscsi/iscsi_target.py +0 -0
  714. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/iscsi/main.fmf +0 -0
  715. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/main.fmf +0 -0
  716. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/target_modules/main.fmf +0 -0
  717. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/target_modules/target_core_mod.py +0 -0
  718. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/target_service/main.fmf +0 -0
  719. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/target_service/target_service.py +0 -0
  720. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/auth/chap.py +0 -0
  721. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/auth/main.fmf +0 -0
  722. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/loopback/test_loopback.py +0 -0
  723. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/main.fmf +0 -0
  724. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/conftest.py +0 -0
  725. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/iscsi_pr.fmf +0 -0
  726. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/loopback_pr.fmf +0 -0
  727. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/main.fmf +0 -0
  728. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/test_iscsi_pr.py +0 -0
  729. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/test_loopback_pr.py +0 -0
  730. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/restoreconfig/main.fmf +0 -0
  731. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/restoreconfig/restoreconfig.py +0 -0
  732. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/isns/isns-sanity.py +0 -0
  733. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/isns/main.fmf +0 -0
  734. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/main.fmf +0 -0
  735. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/main.fmf +0 -0
  736. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_block_format/main.fmf +0 -0
  737. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_block_format/test_block_format.py +0 -0
  738. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_encrypted/main.fmf +0 -0
  739. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_encrypted/test_encrypted.py +0 -0
  740. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_filesystem/main.fmf +0 -0
  741. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_filesystem/test_udisks2_filesystem.py +0 -0
  742. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_loop_dbus/main.fmf +0 -0
  743. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_loop_dbus/test_loop_dbus.py +0 -0
  744. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_manager/main.fmf +0 -0
  745. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_manager/test_manager.py +0 -0
  746. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_partition/main.fmf +0 -0
  747. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_partition/test_partition.py +0 -0
  748. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_swapspace/main.fmf +0 -0
  749. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_swapspace/test_swapspace.py +0 -0
  750. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/hardware/main.fmf +0 -0
  751. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/hardware/test_drive/main.fmf +0 -0
  752. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/hardware/test_drive/test_drive.py +0 -0
  753. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/main.fmf +0 -0
  754. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/main.fmf +0 -0
  755. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_block_secret_config/main.fmf +0 -0
  756. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_block_secret_config/test_block_secret_config.py +0 -0
  757. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_bug_regressions/main.fmf +0 -0
  758. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_bug_regressions/test_bug_regressions.py +0 -0
  759. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_encrypted_advanced/main.fmf +0 -0
  760. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_encrypted_advanced/test_encrypted_advanced.py +0 -0
  761. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_encrypted_regression/main.fmf +0 -0
  762. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_encrypted_regression/test_encrypted_regression.py +0 -0
  763. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_error_handling/main.fmf +0 -0
  764. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_error_handling/test_error_handling.py +0 -0
  765. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_filesystem_regression/main.fmf +0 -0
  766. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_filesystem_regression/test_filesystem_regression.py +0 -0
  767. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_luks_convert/main.fmf +0 -0
  768. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_luks_convert/test_luks_convert.py +0 -0
  769. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_manager_regression/main.fmf +0 -0
  770. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_manager_regression/test_manager_regression.py +0 -0
  771. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_vfat_capabilities/main.fmf +0 -0
  772. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_vfat_capabilities/test_vfat_capabilities.py +0 -0
  773. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/main.fmf +0 -0
  774. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_dump/main.fmf +0 -0
  775. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_dump/test_dump.py +0 -0
  776. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_info/main.fmf +0 -0
  777. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_info/test_info.py +0 -0
  778. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_lock/main.fmf +0 -0
  779. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_lock/test_lock.py +0 -0
  780. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_loop/main.fmf +0 -0
  781. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_loop/test_loop.py +0 -0
  782. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_mount/main.fmf +0 -0
  783. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_mount/test_mount.py +0 -0
  784. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_status/main.fmf +0 -0
  785. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_status/test_status.py +0 -0
  786. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/version_help/main.fmf +0 -0
  787. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/version_help/test_udisks2_version_help.py +0 -0
  788. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/data/main.fmf +0 -0
  789. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/data/vdo_xfs_stress.py +0 -0
  790. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/main.fmf +0 -0
  791. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/module_signature/main.fmf +0 -0
  792. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/module_signature/test_signatures.py +0 -0
  793. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/multihost/main.fmf +0 -0
  794. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/multihost/test_vdo_multihost.py +0 -0
  795. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/lvm_vdo.fmf +0 -0
  796. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/main.fmf +0 -0
  797. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/test_vdo_upgrade.py +0 -0
  798. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/vdo_manager.fmf +0 -0
  799. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/vdo_on_lv.fmf +0 -0
  800. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_ack_threads/vdo_ack_threads.py +0 -0
  801. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_calculate_size/main.fmf +0 -0
  802. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_calculate_size/test_vdo_calculate_size.py +0 -0
  803. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_high_memory/main.fmf +0 -0
  804. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_high_memory/test_vdo_high_memory.py +0 -0
  805. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_sanity/main.fmf +0 -0
  806. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_sanity/test_vdo_sanity.py +0 -0
  807. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/zstd/conftest.py +0 -0
  808. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/zstd/main.fmf +0 -0
  809. {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/zstd/test_zstd_cli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sts-libs
3
- Version: 2.4.2
3
+ Version: 2.6.0
4
4
  Summary: Library for pytest-based Linux storage tests
5
5
  Project-URL: Repository, https://gitlab.com/rh-kernel-stqe/sts/
6
6
  Author-email: Martin Hoyer <mhoyer@redhat.com>, Filip Suba <fsuba@redhat.com>, Zhaojuan Guo <zguo@redhat.com>, Bruno Goncalves <bgoncalv@redhat.com>, Jakub Krysl <jkrysl@redhat.com>
@@ -0,0 +1,7 @@
1
+ summary: FCoE tests on bnx2fc hardware
2
+ discover:
3
+ how: fmf
4
+ filter: 'tag: fcoe & tag: -multihost'
5
+ provision:
6
+ hardware:
7
+ hostname: rhel-storage-13.fast.eng.rdu2.dc.redhat.com
@@ -0,0 +1,16 @@
1
+ enabled: false # no two-host hardware setup available
2
+ summary: FCoE multihost testing (tcm_fc target + initiator)
3
+ discover:
4
+ - name: server
5
+ how: fmf
6
+ test: /tests/fcoe/multihost
7
+ where: server
8
+ - name: client
9
+ how: fmf
10
+ test: /tests/fcoe/multihost
11
+ where: client
12
+ provision:
13
+ - name: server
14
+ role: server
15
+ - name: client
16
+ role: client
@@ -0,0 +1,7 @@
1
+ summary: FCoE tests on qedf hardware
2
+ discover:
3
+ how: fmf
4
+ filter: 'tag: fcoe & tag: -multihost'
5
+ provision:
6
+ hardware:
7
+ hostname: storageqe-15.fast.eng.rdu2.dc.redhat.com
@@ -5,6 +5,6 @@ provision+:
5
5
  hardware:
6
6
  hostname: storageqe-83.lab.eng.brq2.redhat.com
7
7
  adjust+:
8
- enabled: false
8
+ - enabled: false
9
9
  when: distro >= rhel-9.5
10
10
  because: bnx2 drivers are deprecated in rhel-9.5, and no longer maintained in RHEL-10
@@ -13,4 +13,6 @@ discover:
13
13
  - "tag: -hw-memory"
14
14
  - "tag: -hw-disk"
15
15
  - "tag: -hw-cpu"
16
+ - "tag: -fcoe"
17
+ - "tag: -san"
16
18
  - "tier: 1"
@@ -7,7 +7,7 @@ name = 'sts-libs'
7
7
  description = 'Library for pytest-based Linux storage tests'
8
8
  readme = 'sts_libs/README.md'
9
9
  requires-python = '>=3.12'
10
- version = "2.4.2"
10
+ version = "2.6.0"
11
11
  authors = [
12
12
  {name = 'Martin Hoyer', email = 'mhoyer@redhat.com'},
13
13
  {name = 'Filip Suba', email = 'fsuba@redhat.com'},
@@ -0,0 +1,404 @@
1
+ # Copyright: Contributors to the sts project
2
+ # SPDX-License-Identifier: GPL-3.0-or-later
3
+
4
+ """FCoE (Fibre Channel over Ethernet) instance management.
5
+
6
+ Supports both software FCoE (via fcoeadm/fipvlan) and hardware FCoE
7
+ offload (qedf, bnx2fc) where FC hosts appear directly via the driver.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import logging
13
+ import re
14
+ import secrets
15
+ import shutil
16
+ import time
17
+ from pathlib import Path
18
+ from typing import TYPE_CHECKING, ClassVar
19
+
20
+ from sts.fc import FcDevice
21
+ from sts.models import StsBaseModel
22
+ from sts.utils.cmdline import run
23
+ from sts.utils.errors import DeviceError
24
+
25
+ if TYPE_CHECKING:
26
+ from typing import Self
27
+
28
+ from sts.utils.cmdline import CommandResult
29
+
30
+ logger = logging.getLogger(__name__)
31
+
32
+
33
+ class FcoeError(DeviceError):
34
+ """FCoE subsystem error."""
35
+
36
+
37
+ FC_HOST_PATH = Path('/sys/class/fc_host')
38
+ FCOE_CONFIG_DIR = Path('/etc/fcoe')
39
+ FCOE_SYSCONFIG = Path('/etc/sysconfig/fcoe')
40
+
41
+
42
+ class FcoeInstance(StsBaseModel):
43
+ """Active FCoE instance tying an ethernet NIC to an FC host.
44
+
45
+ Attributes:
46
+ interface: Underlying ethernet interface name (e.g. 'eth0')
47
+ fcoe_interface: FCoE VLAN interface name (e.g. 'eth0.200-fcoe')
48
+ host_id: FC host number (e.g. '7')
49
+ wwnn: World Wide Node Name
50
+ wwpn: World Wide Port Name
51
+ driver: FCoE driver name (e.g. 'bnx2fc', 'qedf')
52
+ """
53
+
54
+ interface: str
55
+ fcoe_interface: str | None = None
56
+ host_id: str | None = None
57
+ wwnn: str | None = None
58
+ wwpn: str | None = None
59
+ driver: str | None = None
60
+
61
+ HOST_PATH: ClassVar[Path] = FC_HOST_PATH
62
+
63
+ def discover(self) -> Self:
64
+ """Populate instance fields from fcoeadm -i output."""
65
+ for inst in get_instances():
66
+ if inst.interface == self.interface or inst.fcoe_interface == self.fcoe_interface:
67
+ self.fcoe_interface = inst.fcoe_interface
68
+ self.host_id = inst.host_id
69
+ self.wwnn = inst.wwnn
70
+ self.wwpn = inst.wwpn
71
+ self.driver = inst.driver
72
+ return self
73
+ raise FcoeError(f'FCoE instance not found for interface {self.interface}')
74
+
75
+ def destroy(self) -> CommandResult:
76
+ """Destroy this FCoE instance via fcoeadm -d."""
77
+ iface = self.fcoe_interface or self.interface
78
+ return run(f'fcoeadm -d {iface}')
79
+
80
+ def get_fc_host_attr(self, attr: str) -> str | None:
81
+ """Read an fc_host sysfs attribute.
82
+
83
+ Args:
84
+ attr: Attribute name under /sys/class/fc_host/hostN/
85
+ """
86
+ if not self.host_id:
87
+ return None
88
+ result = run(f'cat {self.HOST_PATH}/host{self.host_id}/{attr}')
89
+ if result.failed:
90
+ return None
91
+ return result.stdout.strip()
92
+
93
+ def get_statistics(self, stat: str) -> str | None:
94
+ """Read an fc_host statistics sysfs attribute.
95
+
96
+ Args:
97
+ stat: Statistic name under /sys/class/fc_host/hostN/statistics/
98
+ """
99
+ if not self.host_id:
100
+ return None
101
+ result = run(f'cat {self.HOST_PATH}/host{self.host_id}/statistics/{stat}')
102
+ if result.failed:
103
+ return None
104
+ return result.stdout.strip()
105
+
106
+ def create_vport(self, wwnn: str, wwpn: str) -> bool:
107
+ """Create an NPIV virtual port via sysfs."""
108
+ if not self.host_id:
109
+ return False
110
+ compact_wwpn = wwpn.replace(':', '')
111
+ compact_wwnn = wwnn.replace(':', '')
112
+ result = run(f'echo {compact_wwpn}:{compact_wwnn} > {self.HOST_PATH}/host{self.host_id}/vport_create')
113
+ return result.succeeded
114
+
115
+ def delete_vport(self, wwnn: str, wwpn: str) -> bool:
116
+ """Delete an NPIV virtual port via sysfs."""
117
+ if not self.host_id:
118
+ return False
119
+ compact_wwpn = wwpn.replace(':', '')
120
+ compact_wwnn = wwnn.replace(':', '')
121
+ result = run(f'echo {compact_wwpn}:{compact_wwnn} > {self.HOST_PATH}/host{self.host_id}/vport_delete')
122
+ return result.succeeded
123
+
124
+
125
+ def _build_instance(data: dict[str, str | None]) -> FcoeInstance:
126
+ """Build FcoeInstance from parsed fcoeadm data."""
127
+ fcoe_iface = data.get('fcoe_interface', '')
128
+ if not fcoe_iface:
129
+ raise FcoeError('Cannot build FcoeInstance: missing fcoe_interface')
130
+ base_iface = re.split(r'[.]', fcoe_iface)[0]
131
+ return FcoeInstance(
132
+ interface=base_iface,
133
+ fcoe_interface=fcoe_iface,
134
+ host_id=data.get('host_id'),
135
+ wwpn=data.get('wwpn'),
136
+ wwnn=data.get('wwnn'),
137
+ driver=data.get('driver'),
138
+ )
139
+
140
+
141
+ def _parse_fcoeadm_instances(output: str) -> list[FcoeInstance]:
142
+ """Parse fcoeadm -i output into FcoeInstance objects."""
143
+ instances: list[FcoeInstance] = []
144
+ current: dict[str, str | None] = {}
145
+
146
+ for raw_line in output.splitlines():
147
+ stripped = raw_line.strip()
148
+ if stripped.startswith('Description:'):
149
+ if current.get('fcoe_interface'):
150
+ instances.append(_build_instance(current))
151
+ current = {}
152
+ if stripped.startswith('Interface:'):
153
+ current['fcoe_interface'] = stripped.split(':', 1)[1].strip()
154
+ elif stripped.startswith('Symbolic Name:'):
155
+ sym_name = stripped.split(':', 1)[1].strip()
156
+ if 'over ' in sym_name and not current.get('fcoe_interface'):
157
+ current['fcoe_interface'] = sym_name.split('over ', 1)[1].strip()
158
+ for drv in ('bnx2fc', 'qedf', 'fnic'):
159
+ if drv in sym_name:
160
+ current['driver'] = drv
161
+ break
162
+ elif stripped.startswith('OS Device Name:'):
163
+ host = stripped.split(':', 1)[1].strip()
164
+ current['host_id'] = host.removeprefix('host')
165
+ elif stripped.startswith('Port Name:'):
166
+ current['wwpn'] = stripped.split(':', 1)[1].strip()
167
+ elif stripped.startswith('Node Name:'):
168
+ current['wwnn'] = stripped.split(':', 1)[1].strip()
169
+
170
+ if current.get('fcoe_interface'):
171
+ instances.append(_build_instance(current))
172
+
173
+ return instances
174
+
175
+
176
+ def get_instances() -> list[FcoeInstance]:
177
+ """Get all active FCoE instances from fcoeadm -i."""
178
+ result = run('fcoeadm -i')
179
+ if result.failed or 'No FCoE' in result.stdout:
180
+ return []
181
+ return _parse_fcoeadm_instances(result.stdout)
182
+
183
+
184
+ def _parse_fcoeadm_targets(output: str) -> list[dict[str, str]]:
185
+ """Parse fcoeadm -t output into list of target dicts."""
186
+ targets: list[dict[str, str]] = []
187
+ current: dict[str, str] = {}
188
+
189
+ for raw_line in output.splitlines():
190
+ stripped = raw_line.strip()
191
+ if stripped.startswith('Interface:'):
192
+ if current:
193
+ targets.append(current)
194
+ current = {'interface': stripped.split(':', 1)[1].strip()}
195
+ elif stripped.startswith('Node Name:'):
196
+ current['node_name'] = stripped.split(':', 1)[1].strip()
197
+ elif stripped.startswith('Port Name:'):
198
+ current['port_name'] = stripped.split(':', 1)[1].strip()
199
+ elif stripped.startswith('Roles:'):
200
+ current['roles'] = stripped.split(':', 1)[1].strip()
201
+
202
+ if current:
203
+ targets.append(current)
204
+ return targets
205
+
206
+
207
+ def get_targets() -> list[dict[str, str]]:
208
+ """Get all FCoE targets from fcoeadm -t."""
209
+ result = run('fcoeadm -t')
210
+ if result.failed or 'No FCoE' in result.stdout:
211
+ return []
212
+ return _parse_fcoeadm_targets(result.stdout)
213
+
214
+
215
+ def create_instance(interface: str) -> FcoeInstance:
216
+ """Create an FCoE instance on the given ethernet interface.
217
+
218
+ Args:
219
+ interface: Ethernet interface name (e.g. 'eth3')
220
+ """
221
+ result = run(f'fcoeadm -c {interface}')
222
+ if result.failed:
223
+ raise FcoeError(f'Failed to create FCoE instance on {interface}: {result.stderr}')
224
+
225
+ deadline = time.monotonic() + 30
226
+ while time.monotonic() < deadline:
227
+ for inst in get_instances():
228
+ if interface in (inst.interface, inst.fcoe_interface):
229
+ return inst
230
+ time.sleep(1)
231
+ raise FcoeError(f'FCoE instance on {interface} not found after creation (30s timeout)')
232
+
233
+
234
+ def wait_fcoe_interface(interface: str, timeout: int = 30) -> bool:
235
+ """Poll until an FCoE interface appears in fcoeadm -i output.
236
+
237
+ Args:
238
+ interface: Interface name to wait for
239
+ timeout: Maximum wait time in seconds
240
+ """
241
+ deadline = time.monotonic() + timeout
242
+ while time.monotonic() < deadline:
243
+ for inst in get_instances():
244
+ if interface in (inst.interface, inst.fcoe_interface):
245
+ return True
246
+ time.sleep(1)
247
+ return False
248
+
249
+
250
+ def generate_vport_wwn() -> tuple[str, str]:
251
+ """Generate a random WWNN:WWPN pair for NPIV vport creation."""
252
+
253
+ def _random_wwn(prefix: int) -> str:
254
+ octets = [prefix] + [secrets.randbelow(256) for _ in range(7)]
255
+ return ':'.join(f'{b:02x}' for b in octets)
256
+
257
+ return _random_wwn(0x20), _random_wwn(0x10)
258
+
259
+
260
+ def get_fcoe_config_path(interface: str) -> Path:
261
+ """Get the FCoE config file path for an interface."""
262
+ return FCOE_CONFIG_DIR / f'cfg-{interface}'
263
+
264
+
265
+ def write_fcoe_config(interface: str, **options: str) -> None:
266
+ """Write FCoE config file for an interface.
267
+
268
+ Args:
269
+ interface: FCoE interface name
270
+ **options: Config key=value pairs (e.g. FCOE_ENABLE='yes')
271
+ """
272
+ config_path = get_fcoe_config_path(interface)
273
+ with config_path.open('w') as f:
274
+ f.writelines(f'{key}={value}\n' for key, value in options.items())
275
+
276
+
277
+ def get_fcoemon_opts() -> str:
278
+ """Read FCOEMON_OPTS from /etc/sysconfig/fcoe."""
279
+ with FCOE_SYSCONFIG.open() as f:
280
+ for line in f:
281
+ if line.startswith('FCOEMON_OPTS='):
282
+ return line.split('=', 1)[1].strip().strip('"')
283
+ return ''
284
+
285
+
286
+ def set_fcoemon_opts(opts: str) -> None:
287
+ """Write FCOEMON_OPTS to /etc/sysconfig/fcoe."""
288
+ with FCOE_SYSCONFIG.open() as f:
289
+ lines = f.readlines()
290
+ replaced = False
291
+ with FCOE_SYSCONFIG.open('w') as f:
292
+ for line in lines:
293
+ if line.startswith('FCOEMON_OPTS='):
294
+ f.write(f'FCOEMON_OPTS="{opts}"\n')
295
+ replaced = True
296
+ else:
297
+ f.write(line)
298
+ if not replaced:
299
+ f.write(f'FCOEMON_OPTS="{opts}"\n')
300
+
301
+
302
+ FCOE_DRIVERS: set[str] = {'bnx2fc', 'qedf', 'fnic'}
303
+
304
+
305
+ def discover_fcoe_hosts() -> list[FcoeInstance]:
306
+ """Discover FCoE hosts from sysfs, supporting both hw and sw FCoE.
307
+
308
+ For hw-FCoE (qedf, bnx2fc offload), FC hosts exist without fcoeadm.
309
+ For sw-FCoE, fcoeadm -i is used to find instances.
310
+ """
311
+ instances: list[FcoeInstance] = []
312
+ seen_hosts: set[str] = set()
313
+
314
+ for inst in get_instances():
315
+ if inst.host_id:
316
+ seen_hosts.add(inst.host_id)
317
+ instances.append(inst)
318
+
319
+ for host_id in FcDevice.get_hosts():
320
+ if host_id in seen_hosts:
321
+ continue
322
+ transport = FcDevice.get_host_transport_type(host_id)
323
+ if transport != 'FCoE':
324
+ continue
325
+
326
+ wwpn_result = run(f'cat {FC_HOST_PATH}/host{host_id}/port_name')
327
+ wwpn = FcDevice.standardize_wwn(wwpn_result.stdout.strip()) if wwpn_result.succeeded else None
328
+ wwnn_result = run(f'cat {FC_HOST_PATH}/host{host_id}/node_name')
329
+ wwnn = FcDevice.standardize_wwn(wwnn_result.stdout.strip()) if wwnn_result.succeeded else None
330
+ driver_result = run(f'cat {FC_HOST_PATH}/host{host_id}/driver_name')
331
+ if driver_result.succeeded:
332
+ driver = driver_result.stdout.strip()
333
+ else:
334
+ lsscsi_result = run(f'lsscsi -H {host_id}')
335
+ parts = lsscsi_result.stdout.split() if lsscsi_result.succeeded else []
336
+ driver = parts[1] if len(parts) > 1 else None
337
+
338
+ instances.append(
339
+ FcoeInstance(
340
+ interface=f'host{host_id}',
341
+ host_id=host_id,
342
+ wwpn=wwpn,
343
+ wwnn=wwnn,
344
+ driver=driver,
345
+ )
346
+ )
347
+
348
+ return instances
349
+
350
+
351
+ def setup_fcoe() -> list[FcoeInstance]:
352
+ """Set up FCoE and discover instances (hw-offload or software).
353
+
354
+ Loads bnx2fc module (sw-FCoE driver), starts lldpad and fcoe services,
355
+ runs fipvlan for VLAN discovery. Falls back to discovering hardware
356
+ FCoE hosts from sysfs if no sw-FCoE instances are found.
357
+ """
358
+ run('modprobe bnx2fc')
359
+ run('systemctl start lldpad')
360
+ run('systemctl start fcoe')
361
+ run('fipvlan -a -c -s')
362
+
363
+ deadline = time.monotonic() + 30
364
+ instances: list[FcoeInstance] = []
365
+ while time.monotonic() < deadline:
366
+ instances = discover_fcoe_hosts()
367
+ if instances:
368
+ break
369
+ time.sleep(2)
370
+ if not instances:
371
+ raise FcoeError('No FCoE instances discovered (hw or sw)')
372
+
373
+ for inst in instances:
374
+ if inst.fcoe_interface:
375
+ config_path = get_fcoe_config_path(inst.interface)
376
+ if not config_path.exists():
377
+ cfg_template = FCOE_CONFIG_DIR / 'cfg-ethx'
378
+ if cfg_template.exists():
379
+ shutil.copy2(cfg_template, config_path)
380
+
381
+ hw_count = sum(1 for i in instances if not i.fcoe_interface)
382
+ sw_count = sum(1 for i in instances if i.fcoe_interface)
383
+ logger.info(f'FCoE setup complete: {hw_count} hw-offload, {sw_count} software instance(s)')
384
+ return instances
385
+
386
+
387
+ def setup_soft_fcoe() -> list[FcoeInstance]:
388
+ """Set up FCoE (kept for backward compatibility)."""
389
+ return setup_fcoe()
390
+
391
+
392
+ def teardown_soft_fcoe() -> None:
393
+ """Tear down software FCoE instances (hw-offload hosts are left alone)."""
394
+ for inst in get_instances():
395
+ inst.destroy()
396
+
397
+ run('systemctl stop fcoe')
398
+ run('systemctl stop lldpad')
399
+
400
+ for cfg in FCOE_CONFIG_DIR.glob('cfg-*'):
401
+ if cfg.name != 'cfg-ethx':
402
+ cfg.unlink(missing_ok=True)
403
+
404
+ logger.info('Soft FCoE teardown complete')
@@ -0,0 +1,91 @@
1
+ # Copyright: Contributors to the sts project
2
+ # SPDX-License-Identifier: GPL-3.0-or-later
3
+
4
+ # pyright: reportUnusedFunction=false
5
+
6
+ """FCoE test fixtures."""
7
+
8
+ from __future__ import annotations
9
+
10
+ import logging
11
+ from typing import TYPE_CHECKING
12
+
13
+ import pytest
14
+
15
+ if TYPE_CHECKING:
16
+ from collections.abc import Generator
17
+
18
+ from sts.fcoe import (
19
+ FcoeError,
20
+ FcoeInstance,
21
+ generate_vport_wwn,
22
+ setup_fcoe,
23
+ teardown_soft_fcoe,
24
+ )
25
+ from sts.multipath import MultipathDevice
26
+ from sts.scsi import ScsiDevice
27
+ from sts.utils.packages import ensure_installed
28
+
29
+ logger = logging.getLogger(__name__)
30
+
31
+ FCOE_PACKAGES = ('fcoe-utils', 'lldpad')
32
+
33
+
34
+ @pytest.fixture(scope='class')
35
+ def soft_fcoe_setup() -> Generator[list[FcoeInstance]]:
36
+ """Discover FCoE instances (hw-offload or software), yield, teardown sw instances on exit.
37
+
38
+ Skips if no FCoE instances are discovered.
39
+ """
40
+ ensure_installed(*FCOE_PACKAGES)
41
+ try:
42
+ instances = setup_fcoe()
43
+ except (FcoeError, OSError) as exc:
44
+ pytest.skip(f'FCoE setup failed: {exc}')
45
+ yield instances
46
+ teardown_soft_fcoe()
47
+
48
+
49
+ @pytest.fixture(scope='class')
50
+ def fcoe_instance(soft_fcoe_setup: list[FcoeInstance]) -> FcoeInstance:
51
+ """First available FCoE instance, skip if none."""
52
+ if not soft_fcoe_setup:
53
+ pytest.skip('No FCoE instances available')
54
+ return soft_fcoe_setup[0]
55
+
56
+
57
+ @pytest.fixture(scope='class')
58
+ def fcoe_instances(soft_fcoe_setup: list[FcoeInstance]) -> list[FcoeInstance]:
59
+ """All discovered FCoE instances."""
60
+ return soft_fcoe_setup
61
+
62
+
63
+ @pytest.fixture
64
+ def fcoe_vport(fcoe_instance: FcoeInstance) -> Generator[tuple[str, str]]:
65
+ """Create an NPIV vport, yield (wwnn, wwpn), delete on exit."""
66
+ wwnn, wwpn = generate_vport_wwn()
67
+ created = fcoe_instance.create_vport(wwnn, wwpn)
68
+ if not created:
69
+ pytest.skip('Failed to create NPIV vport')
70
+ yield wwnn, wwpn
71
+ fcoe_instance.delete_vport(wwnn, wwpn)
72
+
73
+
74
+ @pytest.fixture(scope='class')
75
+ def fcoe_multipath_device(soft_fcoe_setup: list[FcoeInstance]) -> MultipathDevice:
76
+ """Multipath device backed by FCoE paths, skip if none found."""
77
+ fcoe_host_ids = {inst.host_id for inst in soft_fcoe_setup if inst.host_id}
78
+ if not fcoe_host_ids:
79
+ pytest.skip('No FCoE hosts available')
80
+
81
+ all_scsi = ScsiDevice.get_all_scsi_devices()
82
+ fcoe_dev_names = {d.name for d in all_scsi if d.host_id in fcoe_host_ids and d.name}
83
+ if not fcoe_dev_names:
84
+ pytest.skip('No SCSI devices found on FCoE hosts')
85
+
86
+ for mpath in MultipathDevice.get_all():
87
+ path_names = {p.get('dev') for p in mpath.paths if p.get('dev')}
88
+ if path_names & fcoe_dev_names:
89
+ return mpath
90
+
91
+ pytest.skip('No multipath device found with FCoE paths')
@@ -68,36 +68,20 @@ def iscsi_localhost_test(request: pytest.FixtureRequest, _iscsi_test: None) -> G
68
68
 
69
69
 
70
70
  def _get_target_device_paths(target_iqn: str) -> list[Path]:
71
- """Return running SCSI disks belonging to an active target session."""
72
- return [
73
- ScsiDevice.DEV_PATH / disk.name
74
- for session in IscsiSession.get_by_target(target_iqn)
75
- for disk in session.get_disks()
76
- if disk.is_running()
77
- ]
78
-
79
-
80
- def _device_is_openable(path: Path) -> bool:
81
- """Check whether a device node can be opened without issuing data I/O."""
82
- try:
83
- with path.open('rb'):
84
- pass
85
- except OSError:
86
- return False
87
- return True
71
+ """Return ready SCSI disks belonging to an active target session."""
72
+ return [path for session in IscsiSession.get_by_target(target_iqn) for path in session.get_ready_disk_paths()]
88
73
 
89
74
 
90
75
  def _target_devices_ready(target_iqn: str, expected_count: int) -> bool:
91
76
  """Check that all expected target disks are running and openable."""
92
- paths = _get_target_device_paths(target_iqn)
93
- return len(paths) == expected_count and all(_device_is_openable(path) for path in paths)
77
+ return len(_get_target_device_paths(target_iqn)) == expected_count
94
78
 
95
79
 
96
80
  def _find_test_devices(vendor: str = 'LIO-ORG', *, target_iqn: str | None = None) -> list[Path]:
97
81
  """Find test device paths, optionally restricted to one iSCSI target."""
98
82
  if target_iqn is not None:
99
83
  paths = _get_target_device_paths(target_iqn)
100
- assert paths, f'No running devices found for iSCSI target {target_iqn}'
84
+ assert paths, f'No ready devices found for iSCSI target {target_iqn}'
101
85
  return paths
102
86
 
103
87
  def _extract_paths(devices: Sequence[StorageDevice]) -> list[Path]:
@@ -151,12 +135,13 @@ def iscsi_target(request: pytest.FixtureRequest, iscsi_localhost_test: None) ->
151
135
  IscsiLUN(target_wwn=target_iqn).create_lun(storage_object=backstore.path)
152
136
  backstores.append((backstore_name, backing_file))
153
137
 
154
- node = setup_and_login(
155
- portal='127.0.0.1:3260',
156
- initiator_iqn=initiator_iqn,
157
- target_iqn=target_iqn,
158
- )
138
+ node: IscsiNode | None = None
159
139
  try:
140
+ node = setup_and_login(
141
+ portal='127.0.0.1:3260',
142
+ initiator_iqn=initiator_iqn,
143
+ target_iqn=target_iqn,
144
+ )
160
145
  assert wait_for(
161
146
  lambda: _target_devices_ready(target_iqn, n_luns),
162
147
  timeout=ISCSI_DEVICE_SETTLE_TIMEOUT,
@@ -164,7 +149,8 @@ def iscsi_target(request: pytest.FixtureRequest, iscsi_localhost_test: None) ->
164
149
  ), f'Timed out waiting for {n_luns} usable device(s) from iSCSI target {target_iqn}'
165
150
  yield node
166
151
  finally:
167
- node.logout()
152
+ if node is not None:
153
+ node.logout()
168
154
  Iscsi(target_wwn=target_iqn).delete_target()
169
155
  for backstore_name, backing_file in reversed(backstores):
170
156
  result = BackstoreFileio(name=backstore_name).delete_backstore()
@@ -12,6 +12,7 @@ import logging
12
12
  from typing import TYPE_CHECKING
13
13
 
14
14
  from sts.iscsi.config import ISCSID_SERVICE_NAME, IscsiInterface, set_initiatorname
15
+ from sts.iscsi.errors import IscsiError
15
16
  from sts.iscsi.iscsiadm import IscsiAdm
16
17
  from sts.iscsi.node import IscsiNode
17
18
  from sts.utils.system import SystemManager
@@ -42,8 +43,7 @@ def setup_and_login(
42
43
  ) -> IscsiNode:
43
44
  """Set initiator name, discover target (if needed), and log in."""
44
45
  if not set_initiatorname(initiator_iqn):
45
- logger.error('Failed to set initiator name')
46
- return IscsiNode(target_iqn='', portal=portal, iface=iface)
46
+ raise IscsiError(f'Failed to set initiator name {initiator_iqn}')
47
47
 
48
48
  iscsiadm = IscsiAdm()
49
49
  node = IscsiNode(
@@ -46,10 +46,17 @@ def wait_for_iscsid() -> bool:
46
46
 
47
47
 
48
48
  def set_initiatorname(name: str) -> bool:
49
- """Write initiator name to /etc/iscsi/initiatorname.iscsi and restart iscsid."""
49
+ """Configure the initiator name and ensure iscsid is running with it."""
50
50
  system = SystemManager()
51
+ path = Path('/etc/iscsi/initiatorname.iscsi')
52
+ content = f'InitiatorName={name}\n'
51
53
  try:
52
- Path('/etc/iscsi/initiatorname.iscsi').write_text(f'InitiatorName={name}\n')
54
+ is_current = path.exists() and path.read_text() == content
55
+ if is_current and system.is_service_running(ISCSID_SERVICE_NAME) and wait_for_iscsid():
56
+ return True
57
+
58
+ if not is_current:
59
+ path.write_text(content)
53
60
  if not system.service_restart(ISCSID_SERVICE_NAME):
54
61
  logger.error('Failed to restart iscsid')
55
62
  return False
@@ -0,0 +1,12 @@
1
+ # Copyright: Contributors to the sts project
2
+ # SPDX-License-Identifier: GPL-3.0-or-later
3
+
4
+ """iSCSI-related errors."""
5
+
6
+ from __future__ import annotations
7
+
8
+ from sts.utils.errors import STSError
9
+
10
+
11
+ class IscsiError(STSError):
12
+ """Base class for iSCSI-related errors."""