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.
- {sts_libs-2.4.2 → sts_libs-2.6.0}/PKG-INFO +1 -1
- sts_libs-2.6.0/plans/fcoe/bnx2fc.fmf +7 -0
- sts_libs-2.6.0/plans/fcoe/multihost.fmf +16 -0
- sts_libs-2.6.0/plans/fcoe/qedf.fmf +7 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/bnx2i.fmf +1 -1
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/sts-ci/ci.fmf +2 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/pyproject.toml +1 -1
- sts_libs-2.6.0/sts_libs/src/sts/fcoe.py +404 -0
- sts_libs-2.6.0/sts_libs/src/sts/fixtures/fcoe_fixtures.py +91 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/iscsi_fixtures.py +12 -26
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/__init__.py +2 -2
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/config.py +9 -2
- sts_libs-2.6.0/sts_libs/src/sts/iscsi/errors.py +12 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/session.py +38 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/sg3_utils.py +27 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/target.py +92 -0
- sts_libs-2.6.0/sts_libs/tests/fixtures/test_iscsi_fixtures.py +77 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_config.py +43 -6
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_session.py +26 -0
- sts_libs-2.6.0/sts_libs/tests/test_fcoe.py +416 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_sg3_utils.py +58 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_target.py +82 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/conftest.py +1 -0
- sts_libs-2.6.0/tests/fcoe/conftest.py +41 -0
- sts_libs-2.6.0/tests/fcoe/main.fmf +2 -0
- sts_libs-2.6.0/tests/fcoe/multihost/main.fmf +14 -0
- sts_libs-2.6.0/tests/fcoe/multihost/test_io_stress.py +108 -0
- sts_libs-2.6.0/tests/fcoe/multihost/test_lun_removal.py +93 -0
- sts_libs-2.6.0/tests/fcoe/multihost/test_target_resilience.py +99 -0
- sts_libs-2.6.0/tests/fcoe/test_driver_lifecycle/main.fmf +9 -0
- sts_libs-2.6.0/tests/fcoe/test_driver_lifecycle/test_driver_lifecycle.py +83 -0
- sts_libs-2.6.0/tests/fcoe/test_fcoe_init/main.fmf +8 -0
- sts_libs-2.6.0/tests/fcoe/test_fcoe_init/test_fcoe_init.py +153 -0
- sts_libs-2.6.0/tests/fcoe/test_fcoe_io.fmf +14 -0
- sts_libs-2.6.0/tests/fcoe/test_fcoe_lifecycle/main.fmf +8 -0
- sts_libs-2.6.0/tests/fcoe/test_fcoe_lifecycle/test_fcoe_lifecycle.py +83 -0
- sts_libs-2.6.0/tests/fcoe/test_lldpad/main.fmf +9 -0
- sts_libs-2.6.0/tests/fcoe/test_lldpad/test_lldpad.py +66 -0
- sts_libs-2.6.0/tests/fcoe/test_nic_lifecycle/main.fmf +9 -0
- sts_libs-2.6.0/tests/fcoe/test_nic_lifecycle/test_nic_lifecycle.py +78 -0
- sts_libs-2.6.0/tests/fcoe/test_npiv/main.fmf +10 -0
- sts_libs-2.6.0/tests/fcoe/test_npiv/test_npiv.py +126 -0
- sts_libs-2.6.0/tests/fcoe/test_san_lvm.fmf +15 -0
- sts_libs-2.6.0/tests/fcoe/test_san_resilience.fmf +14 -0
- sts_libs-2.6.0/tests/fcoe/test_san_sg_reset.fmf +11 -0
- sts_libs-2.6.0/tests/fcoe/test_sysfs/main.fmf +8 -0
- sts_libs-2.6.0/tests/fcoe/test_sysfs/test_sysfs.py +66 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/fio_basic.fmf +1 -1
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/parameters/iscsi_params.py +3 -9
- sts_libs-2.6.0/tests/san/conftest.py +72 -0
- sts_libs-2.6.0/tests/san/main.fmf +2 -0
- sts_libs-2.6.0/tests/san/test_io_stress/main.fmf +10 -0
- sts_libs-2.6.0/tests/san/test_io_stress/test_io_stress.py +55 -0
- sts_libs-2.6.0/tests/san/test_lvm_persistence/main.fmf +14 -0
- sts_libs-2.6.0/tests/san/test_lvm_persistence/test_lvm_persistence.py +207 -0
- sts_libs-2.6.0/tests/san/test_path_resilience/main.fmf +11 -0
- sts_libs-2.6.0/tests/san/test_path_resilience/test_path_resilience.py +132 -0
- sts_libs-2.6.0/tests/san/test_sg_reset/main.fmf +8 -0
- sts_libs-2.6.0/tests/san/test_sg_reset/test_sg_reset.py +75 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/loopback/main.fmf +1 -1
- {sts_libs-2.4.2 → sts_libs-2.6.0}/uv.lock +1 -1
- sts_libs-2.4.2/sts_libs/tests/fixtures/test_iscsi_fixtures.py +0 -69
- {sts_libs-2.4.2 → sts_libs-2.6.0}/.fmf/version +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/.gitignore +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/.gitlab-ci.yml +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/.markdownlint.json +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/.packit.yaml +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/.pre-commit-config.yaml +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/.scripts/sync_sts.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/AGENTS.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/CLAUDE.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/LICENSE +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/README.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/Containerfile +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/README.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/build.sh +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/ci.Containerfile +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/dev-container/run.sh +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/contributing/docstrings.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/contributing/image-mode-testing.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/contributing/writing-tests.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/contributing.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/index.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/fixtures.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/index.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/base.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/blockdevice.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/boom.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/devicemapper.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/dmpd.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/fc.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/fio.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/iscsi.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/isns.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/loop.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/lvm.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/multipath.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/network.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/nvme.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/pr.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/qemu.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/rdma.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/scsi.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/scsi_debug.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/sg3_utils.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/snapm.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/stratis.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/target.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/udevadm.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/libraries/vdo.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/docs/sts-libs/utils.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/mkdocs.yml +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/ahci/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/block/virtual-hw.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/block/virtual.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/boom/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/boom/tier2-st76.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/boom/tier2.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/device-mapper/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/dmpd/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/fc/full_lpfc.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/fc/full_qla2xxx.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/fc/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/device-mapper.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/dmpd.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/iscsi.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/lvm.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/multipath.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/stratis.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/udisks2.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/image_mode/vdo.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/libiscsi/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/local.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/be2iscsi.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/cxgb4i.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/intel.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/offload/qedi.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/iscsi/tier0.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/isns-utils/full.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lio/core.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lio/full.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lsscsi/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lsscsi/tier2.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/lvm/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/multipath/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/rdma/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/rdma/regression.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/rdma/test_case_vars.yaml +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/scsi/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/sg3_utils/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/snapm/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/snapm/tier2-st76.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/snapm/tier2.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/multihost/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/multihost/nfs.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-fstab-stqe.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-fstab.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-linear.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-mdraid1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/stratis/tier2-raid1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/udisks2/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/udisks2/tier2.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/udisks2/tier3.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/multihost-aarch64.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/multihost-ppc64le.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/multihost-s390x.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/multihost/multihost-stqe.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/tier1.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/tier2-high-memory.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/plans/vdo/vdo_smoke.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/python-sts-libs.spec +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/renovate.json +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/README.md +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/ahci.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/blockdevice.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/entry.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/errors.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/host.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/boom/profile.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/cache.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/delay.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/error.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/errors.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/flakey.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/linear.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/thin.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/vdo.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dm/zero.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/dmpd.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fc.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fio/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fio/errors.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fio/fio.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fio/parameters.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/ahci_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/block_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/boom_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/common_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/dm_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/dmpd_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/fc_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/lvm_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/module_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/multipath_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/nvme_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/rdma_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/service_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/sg3_utils_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/snapm_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/stratis_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/target_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/udisks2_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/fixtures/vdo_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/hdparm.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/device.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/iscsiadm.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/node.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/iscsi/parameters.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/isns.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/loop.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/errors.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/logical_volume.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/lvconf.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/options.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/physical_volume.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/reports.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/thin_pool.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/lvm/volume_group.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/marks.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/md.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/models.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/multipath.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/nbd.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/network/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/network/errors.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/network/interface.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/network/nm.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/null_blk.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/nvme.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/pr.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/py.typed +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/qemu.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/rdma.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/scsi.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/scsi_debug.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/smartctl.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/errors.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/plugin.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/schedule.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/snapset.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/snapm/snapshot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/errors.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/filesystem.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/stratis/pool.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/udevadm.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/udisks2.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/cli.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/cmdline.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/config.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/errors.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/files.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/fmf_markers.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/fstab.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/modules.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/nfs.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/packages.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/processes.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/size.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/string_extras.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/sync.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/syscheck.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/system.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/teststate.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/tmt_pytest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/utils/version.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/vdo.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/src/sts/zram.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/test_base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/test_entry.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/test_host.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/boom/test_profile.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/data/lvs_report_multi.json +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/data/lvs_report_single.json +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/data/multipathd_show_map.json +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/data/nvme_list.json +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_cache_vdo.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_delay_flakey.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_linear.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/dm/test_thin.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fio/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fio/test_fio.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fio/test_parameters.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fixtures/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fixtures/test_module_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fixtures/test_multipath_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/fixtures/test_service_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/test_boom_boot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/test_root_lvm.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/test_snapm_boot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/helpers/test_tmt_reboot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_device.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_iscsiadm.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/iscsi/test_parameters.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_logical_volume.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_lvconf.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_options.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_physical_volume.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_reports.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_thin_pool.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/lvm/test_volume_group.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/network/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/network/test_interface.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/network/test_nm.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_plugin.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_schedule.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_snapset.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/snapm/test_snapshot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/stratis/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/stratis/test_base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/stratis/test_filesystem.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/stratis/test_pool.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_ahci.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_base.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_block_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_blockdevice.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_cmdline.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_fc.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_hdparm.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_loop.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_marks.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_md.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_models.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_module_fixtures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_multipath.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_multipath_report.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_nbd.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_null_blk.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_nvme.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_packages.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_pr.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_rdma.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_scsi.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_scsi_debug.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_smartctl.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_string_extras.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_syscheck.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_system.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_udisks2.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_vdo.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_version.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/test_zram.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_cli.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_files.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_fmf_markers.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_fstab.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_modules.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_nfs.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_processes.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_size.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_sync.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_teststate.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/sts_libs/tests/utils/test_tmt_pytest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_benchmarks.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_detection.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_error_recovery.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_ncq.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/ahci/test_sanity.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/cgroup/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/cgroup/test_blkio_throttle.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/cpu_hotplug/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/cpu_hotplug/test_cpu_offline_io.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/identity/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/identity/test_diskstats.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/io_scheduler/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/io_scheduler/test_elevator_switch_race.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/io_scheduler/test_scheduler_switch.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/loop/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/loop/test_partition_uevent.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/test_lvm_raid.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/test_md_discard.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/md/test_md_levels.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/misc/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/misc/test_scsi_state_transition.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/nbd/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/nbd/test_nbd_unix_socket.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/null_blk/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/null_blk/test_null_blk_basic.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/null_blk/test_null_blk_configfs.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/test_delete_scan.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/test_dif_dix_stress.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/test_shared_host_tags.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/scsi_debug/test_unmap.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/zoned/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/zoned/test_zoned_devices.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/zram/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/block/zram/test_zram_compression.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/boom_sanity.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/boom_sanity.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/snapshot_boot.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/test_boom_snapshot_boot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/upgrade/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/boom/upgrade/test_boom_upgrade_boot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/Containerfile +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/Containerfile.iscsi +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/Containerfile.stratis +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/Containerfile.udisks2 +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/common-setup.sh +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/bootc_additional_packages/runtest.sh +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/cache/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/cache/test_dm_cache.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/delay/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/delay/test_dm_delay.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/error/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/error/test_dm_error.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/flakey/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/flakey/test_dm_flakey.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/linear/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/linear/test_linear_target.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/thinp/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/thinp/test_dm_thin.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/vdo/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/vdo/test_dm_vdo.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/zero/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dm/zero/test_dm_zero.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_check.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_dump.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_metadata_size.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_repair.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/cache_restore.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_check.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_dump.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_metadata_size.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_repair.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/cache/test_cache_restore.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_check.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_delta.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_dump.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_ls.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_metadata_size.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_repair.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_restore.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/test_thin_trim.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_check.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_delta.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_ls.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_metadata_size.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_repair.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_restore.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/dmpd/thin/thin_trim.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/online_offline/basic.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/online_offline/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/online_offline/online_offline.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/online_offline/stress.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/rescan_deleted_disk/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/full/rescan_deleted_disk/rescan_deleted_disk.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/fc/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/__init__.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/boom_boot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/root_lvm.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/snapm_boot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/stratis_pool.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/tmt_reboot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/helpers/vdo.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/fio_multipath_basic.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/fio_multipath_stress.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/fio_stress.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/fio/test_fio.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/libiscsi/local/libiscsi-local.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/libiscsi/local/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/libiscsi/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/login-logout-stress/login-logout-stress.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/login-logout-stress/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/many-luns/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/many-luns/many-luns-local.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/parameters/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/read_debugfs/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/iscsi/read_debugfs/read_debugfs.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsm/targetd/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsm/targetd/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsm/targetd/test_targetd.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/core/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/core/test_lsscsi_basic.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/nvme_detection/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lsscsi/nvme_detection/test_nvme_detection.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/bugs/test_discard_corruption.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/bugs/test_stripe_blkdiscard.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/bugs/test_thinpool_error_target_meta.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_discard_perf.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvchange_thin.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvconf_thinp.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvconvert_thin_lv.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvconvert_thinpool.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvcreate_linear.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvcreate_mirror.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvcreate_poolmetadataspare.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvcreate_stripe.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvextend.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvm_thinp_misc.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvm_thinp_modules.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvreduce_thinp.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvremove_thinp.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvrename_thinp.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvresize_thinp.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvs_thinp.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_lvscan_thinp.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_pool_capacity.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/lvm/thinp/test_thin_perf.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/multipath/basic.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/multipath/service.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/multipath/test_multipath_basic.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/multipath/test_multipath_service.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/pytest.ini +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/customers/customer_1/issue_23967_verify_speed.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/customers/customer_1/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/customers/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/others/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/bugs/others/reproducers.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/pyverbs-tests/core/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/pyverbs-tests/core/pyverbs-tests.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/sriov/core/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/rdma/sriov/core/sriov.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/scsi/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/scsi/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/scsi/test_hotplug.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/scsi/test_io.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_documentation_check/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_documentation_check/test_documentation_check.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_deletes_dev_null/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_ignore_rev/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_lun_scanning/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_removes_readds/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_syntax_error/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_rescan_too_many_args/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_sg_map26_32_devices/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/regression/test_sginfo_dev_snapshot/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg3_dd/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg3_dd/test_sg3_dd.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_get_config/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_ident/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_ident/test_sg_ident.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_inq/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_inq/test_sg_inq.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_logs/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_logs/test_sg_logs.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_luns/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_luns/test_sg_luns.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_map/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_map/test_sg_map.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_modes/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_modes/test_sg_modes.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_opcodes/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_opcodes/test_sg_opcodes.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_persist/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_persist/test_sg_persist.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_rbuf/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_rbuf/test_sg_rbuf.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read/test_sg_read.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read_buffer/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_read_long/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_readcap/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_readcap/test_sg_readcap.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_safte/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_safte/test_sg_safte.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_sat_identify/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_scan/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_scan/test_sg_scan.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_senddiag/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_senddiag/test_sg_senddiag.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_ses/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_ses/test_sg_ses.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_start/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_start/test_sg_start.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_sync/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_sync/test_sg_sync.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_turs/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_turs/test_sg_turs.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_verify/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_verify/test_sg_verify.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_vpd/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_vpd/test_sg_vpd.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sg_write_buffer/main.fmf +0 -0
- {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
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sginfo/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/test_sginfo/test_sginfo.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/version_help/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sg3_utils/sanity/version_help/test_version_help.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_diff.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_mount.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_sanity.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_schedule.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapm_sanity/test_snapm_snapset.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapshot_boot/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/snapshot_boot/test_snapm_snapshot_boot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/upgrade/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/upgrade/test_snapm_upgrade.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/upgrade/test_snapm_upgrade_boot.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/snapm/upgrade/test_snapm_upgrade_boot.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_blockdev.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_blockdev.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_daemon.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_daemon.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_filesystem.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_filesystem.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_key.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_key.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_advanced.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_advanced.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_encryption.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_encryption.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_operations.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/basic/test_pool_operations.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/multihost/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/multihost/test_stratis_multihost.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/persistence/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/persistence/test_stratis_fstab_persistence.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/upgrade/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/stratis/upgrade/test_stratis_upgrade.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sts-prepare/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/sts-prepare/runtest.sh +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/backstores/backstores.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/backstores/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/config_mgmt/config_management.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/config_mgmt/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/global_config/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/global_config/test_auto_use_daemon.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/global_config/test_global_parameters.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/global_config/test_global_parameters_sanity.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/iscsi/iscsi_target.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/iscsi/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/target_modules/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/target_modules/target_core_mod.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/target_service/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/core/target_service/target_service.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/auth/chap.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/auth/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/loopback/test_loopback.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/iscsi_pr.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/loopback_pr.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/test_iscsi_pr.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/persistent-reservation/test_loopback_pr.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/restoreconfig/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/full/restoreconfig/restoreconfig.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/isns/isns-sanity.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/isns/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/target/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_block_format/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_block_format/test_block_format.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_encrypted/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_encrypted/test_encrypted.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_filesystem/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_filesystem/test_udisks2_filesystem.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_loop_dbus/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_loop_dbus/test_loop_dbus.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_manager/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_manager/test_manager.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_partition/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_partition/test_partition.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_swapspace/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/core/test_swapspace/test_swapspace.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/hardware/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/hardware/test_drive/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/hardware/test_drive/test_drive.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_block_secret_config/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_block_secret_config/test_block_secret_config.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_bug_regressions/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_bug_regressions/test_bug_regressions.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_encrypted_advanced/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_encrypted_advanced/test_encrypted_advanced.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_encrypted_regression/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_encrypted_regression/test_encrypted_regression.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_error_handling/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_error_handling/test_error_handling.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_filesystem_regression/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_filesystem_regression/test_filesystem_regression.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_luks_convert/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_luks_convert/test_luks_convert.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_manager_regression/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_manager_regression/test_manager_regression.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_vfat_capabilities/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/regression/test_vfat_capabilities/test_vfat_capabilities.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_dump/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_dump/test_dump.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_info/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_info/test_info.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_lock/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_lock/test_lock.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_loop/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_loop/test_loop.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_mount/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_mount/test_mount.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_status/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/test_status/test_status.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/version_help/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/udisks2/sanity/version_help/test_udisks2_version_help.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/data/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/data/vdo_xfs_stress.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/module_signature/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/module_signature/test_signatures.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/multihost/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/multihost/test_vdo_multihost.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/lvm_vdo.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/test_vdo_upgrade.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/vdo_manager.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/upgrade/vdo_on_lv.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_ack_threads/vdo_ack_threads.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_calculate_size/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_calculate_size/test_vdo_calculate_size.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_high_memory/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_high_memory/test_vdo_high_memory.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_sanity/main.fmf +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/vdo/vdo_sanity/test_vdo_sanity.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/zstd/conftest.py +0 -0
- {sts_libs-2.4.2 → sts_libs-2.6.0}/tests/zstd/main.fmf +0 -0
- {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.
|
|
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,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
|
|
@@ -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.
|
|
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
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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
|
-
"""
|
|
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
|
-
|
|
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."""
|