sts-libs 2.2.0__tar.gz → 2.4.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.0/.packit.yaml +52 -0
- sts_libs-2.4.0/.scripts/sync_sts.py +493 -0
- sts_libs-2.4.0/AGENTS.md +119 -0
- sts_libs-2.4.0/PKG-INFO +65 -0
- sts_libs-2.4.0/README.md +85 -0
- sts_libs-2.4.0/docs/contributing/writing-tests.md +317 -0
- sts_libs-2.4.0/docs/sts-libs/fixtures.md +89 -0
- sts_libs-2.4.0/docs/sts-libs/utils.md +83 -0
- sts_libs-2.4.0/plans/ahci/main.fmf +9 -0
- sts_libs-2.4.0/plans/block/virtual-hw.fmf +16 -0
- sts_libs-2.4.0/plans/block/virtual.fmf +13 -0
- sts_libs-2.4.0/plans/boom/tier2.fmf +42 -0
- sts_libs-2.4.0/plans/device-mapper/tier1.fmf +15 -0
- sts_libs-2.4.0/plans/dmpd/tier1.fmf +11 -0
- sts_libs-2.4.0/plans/image_mode/device-mapper.fmf +6 -0
- sts_libs-2.4.0/plans/image_mode/dmpd.fmf +5 -0
- sts_libs-2.4.0/plans/image_mode/lvm.fmf +6 -0
- sts_libs-2.4.0/plans/image_mode/multipath.fmf +6 -0
- sts_libs-2.4.0/plans/image_mode/stratis.fmf +8 -0
- sts_libs-2.4.0/plans/image_mode/udisks2.fmf +8 -0
- sts_libs-2.4.0/plans/iscsi/offload/main.fmf +6 -0
- sts_libs-2.4.0/plans/lio/core.fmf +7 -0
- sts_libs-2.4.0/plans/lvm/tier1.fmf +12 -0
- sts_libs-2.4.0/plans/main.fmf +63 -0
- sts_libs-2.4.0/plans/multipath/tier1.fmf +8 -0
- sts_libs-2.4.0/plans/scsi/main.fmf +4 -0
- sts_libs-2.4.0/plans/snapm/tier2.fmf +42 -0
- sts_libs-2.4.0/plans/stratis/tier1.fmf +12 -0
- sts_libs-2.4.0/plans/stratis/tier2-linear.fmf +18 -0
- sts_libs-2.4.0/plans/stratis/tier2-mdraid1.fmf +17 -0
- sts_libs-2.4.0/plans/stratis/tier2-raid1.fmf +18 -0
- sts_libs-2.4.0/plans/sts-ci/ci.fmf +16 -0
- sts_libs-2.4.0/plans/udisks2/tier1.fmf +12 -0
- sts_libs-2.4.0/plans/udisks2/tier2.fmf +12 -0
- sts_libs-2.4.0/plans/udisks2/tier3.fmf +18 -0
- sts_libs-2.4.0/plans/vdo/tier2-high-memory.fmf +13 -0
- sts_libs-2.4.0/pyproject.toml +245 -0
- sts_libs-2.4.0/sts_libs/src/sts/ahci.py +261 -0
- sts_libs-2.4.0/sts_libs/src/sts/base.py +158 -0
- sts_libs-2.4.0/sts_libs/src/sts/blockdevice.py +701 -0
- sts_libs-2.4.0/sts_libs/src/sts/fio/fio.py +214 -0
- sts_libs-2.4.0/sts_libs/src/sts/fio/parameters.py +126 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/ahci_fixtures.py +134 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/block_fixtures.py +624 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/common_fixtures.py +327 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/dm_fixtures.py +782 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/dmpd_fixtures.py +573 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/lvm_fixtures.py +783 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/module_fixtures.py +211 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/multipath_fixtures.py +346 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/service_fixtures.py +201 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/sg3_utils_fixtures.py +75 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/snapm_fixtures.py +430 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/stratis_fixtures.py +412 -0
- sts_libs-2.4.0/sts_libs/src/sts/fixtures/udisks2_fixtures.py +120 -0
- sts_libs-2.4.0/sts_libs/src/sts/hdparm.py +163 -0
- sts_libs-2.4.0/sts_libs/src/sts/loop.py +410 -0
- sts_libs-2.4.0/sts_libs/src/sts/lvm/options.py +170 -0
- sts_libs-2.4.0/sts_libs/src/sts/lvm/volume_group.py +185 -0
- sts_libs-2.4.0/sts_libs/src/sts/marks.py +89 -0
- sts_libs-2.4.0/sts_libs/src/sts/md.py +219 -0
- sts_libs-2.4.0/sts_libs/src/sts/multipath.py +345 -0
- sts_libs-2.4.0/sts_libs/src/sts/nbd.py +346 -0
- sts_libs-2.4.0/sts_libs/src/sts/null_blk.py +155 -0
- sts_libs-2.4.0/sts_libs/src/sts/scsi.py +346 -0
- sts_libs-2.4.0/sts_libs/src/sts/scsi_debug.py +235 -0
- sts_libs-2.4.0/sts_libs/src/sts/smartctl.py +191 -0
- sts_libs-2.4.0/sts_libs/src/sts/target.py +679 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/__init__.py +24 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/cmdline.py +157 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/errors.py +84 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/files.py +421 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/fmf_markers.py +200 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/fstab.py +227 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/modules.py +507 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/syscheck.py +275 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/system.py +453 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/teststate.py +82 -0
- sts_libs-2.4.0/sts_libs/src/sts/utils/version.py +114 -0
- sts_libs-2.4.0/sts_libs/src/sts/zram.py +213 -0
- sts_libs-2.4.0/sts_libs/tests/fio/test_fio.py +209 -0
- sts_libs-2.4.0/sts_libs/tests/fio/test_parameters.py +92 -0
- sts_libs-2.4.0/sts_libs/tests/fixtures/test_module_fixtures.py +156 -0
- sts_libs-2.4.0/sts_libs/tests/fixtures/test_multipath_fixtures.py +94 -0
- sts_libs-2.4.0/sts_libs/tests/fixtures/test_service_fixtures.py +152 -0
- sts_libs-2.4.0/sts_libs/tests/helpers/test_boom_boot.py +33 -0
- sts_libs-2.4.0/sts_libs/tests/helpers/test_root_lvm.py +209 -0
- sts_libs-2.4.0/sts_libs/tests/helpers/test_snapm_boot.py +59 -0
- sts_libs-2.4.0/sts_libs/tests/helpers/test_tmt_reboot.py +64 -0
- sts_libs-2.4.0/sts_libs/tests/lvm/test_logical_volume.py +507 -0
- sts_libs-2.4.0/sts_libs/tests/lvm/test_options.py +43 -0
- sts_libs-2.4.0/sts_libs/tests/lvm/test_volume_group.py +343 -0
- sts_libs-2.4.0/sts_libs/tests/stratis/__init__.py +0 -0
- sts_libs-2.4.0/sts_libs/tests/test_ahci.py +122 -0
- sts_libs-2.4.0/sts_libs/tests/test_base.py +75 -0
- sts_libs-2.4.0/sts_libs/tests/test_block_fixtures.py +1863 -0
- sts_libs-2.4.0/sts_libs/tests/test_blockdevice.py +936 -0
- sts_libs-2.4.0/sts_libs/tests/test_hdparm.py +190 -0
- sts_libs-2.4.0/sts_libs/tests/test_loop.py +682 -0
- sts_libs-2.4.0/sts_libs/tests/test_marks.py +162 -0
- sts_libs-2.4.0/sts_libs/tests/test_md.py +334 -0
- sts_libs-2.4.0/sts_libs/tests/test_module_fixtures.py +98 -0
- sts_libs-2.4.0/sts_libs/tests/test_multipath.py +613 -0
- sts_libs-2.4.0/sts_libs/tests/test_nbd.py +499 -0
- sts_libs-2.4.0/sts_libs/tests/test_null_blk.py +284 -0
- sts_libs-2.4.0/sts_libs/tests/test_scsi.py +585 -0
- sts_libs-2.4.0/sts_libs/tests/test_scsi_debug.py +245 -0
- sts_libs-2.4.0/sts_libs/tests/test_smartctl.py +187 -0
- sts_libs-2.4.0/sts_libs/tests/test_syscheck.py +452 -0
- sts_libs-2.4.0/sts_libs/tests/test_udisks2.py +95 -0
- sts_libs-2.4.0/sts_libs/tests/test_version.py +265 -0
- sts_libs-2.4.0/sts_libs/tests/test_zram.py +364 -0
- sts_libs-2.4.0/sts_libs/tests/utils/__init__.py +0 -0
- sts_libs-2.4.0/sts_libs/tests/utils/test_files.py +761 -0
- sts_libs-2.4.0/sts_libs/tests/utils/test_fmf_markers.py +111 -0
- sts_libs-2.4.0/sts_libs/tests/utils/test_modules.py +1216 -0
- sts_libs-2.4.0/tests/ahci/conftest.py +19 -0
- sts_libs-2.4.0/tests/ahci/main.fmf +39 -0
- sts_libs-2.4.0/tests/ahci/test_benchmarks.py +85 -0
- sts_libs-2.4.0/tests/ahci/test_detection.py +60 -0
- sts_libs-2.4.0/tests/ahci/test_error_recovery.py +105 -0
- sts_libs-2.4.0/tests/ahci/test_ncq.py +115 -0
- sts_libs-2.4.0/tests/ahci/test_sanity.py +39 -0
- sts_libs-2.4.0/tests/block/cgroup/main.fmf +7 -0
- sts_libs-2.4.0/tests/block/cgroup/test_blkio_throttle.py +299 -0
- sts_libs-2.4.0/tests/block/conftest.py +16 -0
- sts_libs-2.4.0/tests/block/cpu_hotplug/main.fmf +9 -0
- sts_libs-2.4.0/tests/block/cpu_hotplug/test_cpu_offline_io.py +324 -0
- sts_libs-2.4.0/tests/block/identity/main.fmf +7 -0
- sts_libs-2.4.0/tests/block/identity/test_diskstats.py +210 -0
- sts_libs-2.4.0/tests/block/io_scheduler/main.fmf +17 -0
- sts_libs-2.4.0/tests/block/io_scheduler/test_elevator_switch_race.py +976 -0
- sts_libs-2.4.0/tests/block/io_scheduler/test_scheduler_switch.py +73 -0
- sts_libs-2.4.0/tests/block/loop/main.fmf +7 -0
- sts_libs-2.4.0/tests/block/loop/test_partition_uevent.py +402 -0
- sts_libs-2.4.0/tests/block/main.fmf +7 -0
- sts_libs-2.4.0/tests/block/md/conftest.py +162 -0
- sts_libs-2.4.0/tests/block/md/main.fmf +21 -0
- sts_libs-2.4.0/tests/block/md/test_lvm_raid.py +459 -0
- sts_libs-2.4.0/tests/block/md/test_md_discard.py +96 -0
- sts_libs-2.4.0/tests/block/md/test_md_levels.py +98 -0
- sts_libs-2.4.0/tests/block/misc/main.fmf +7 -0
- sts_libs-2.4.0/tests/block/misc/test_scsi_state_transition.py +263 -0
- sts_libs-2.4.0/tests/block/nbd/main.fmf +7 -0
- sts_libs-2.4.0/tests/block/nbd/test_nbd_unix_socket.py +93 -0
- sts_libs-2.4.0/tests/block/null_blk/main.fmf +15 -0
- sts_libs-2.4.0/tests/block/null_blk/test_null_blk_basic.py +70 -0
- sts_libs-2.4.0/tests/block/null_blk/test_null_blk_configfs.py +171 -0
- sts_libs-2.4.0/tests/block/scsi_debug/main.fmf +31 -0
- sts_libs-2.4.0/tests/block/scsi_debug/test_delete_scan.py +102 -0
- sts_libs-2.4.0/tests/block/scsi_debug/test_dif_dix_stress.py +174 -0
- sts_libs-2.4.0/tests/block/scsi_debug/test_shared_host_tags.py +140 -0
- sts_libs-2.4.0/tests/block/scsi_debug/test_unmap.py +71 -0
- sts_libs-2.4.0/tests/block/zoned/main.fmf +9 -0
- sts_libs-2.4.0/tests/block/zoned/test_zoned_devices.py +506 -0
- sts_libs-2.4.0/tests/block/zram/main.fmf +7 -0
- sts_libs-2.4.0/tests/block/zram/test_zram_compression.py +246 -0
- sts_libs-2.4.0/tests/boom/boom_sanity.fmf +14 -0
- sts_libs-2.4.0/tests/boom/snapshot_boot.fmf +18 -0
- sts_libs-2.4.0/tests/boom/test_boom_snapshot_boot.py +278 -0
- sts_libs-2.4.0/tests/boom/upgrade/main.fmf +14 -0
- sts_libs-2.4.0/tests/boom/upgrade/test_boom_upgrade_boot.py +441 -0
- sts_libs-2.4.0/tests/bootc_additional_packages/main.fmf +21 -0
- sts_libs-2.4.0/tests/conftest.py +77 -0
- sts_libs-2.4.0/tests/dm/cache/main.fmf +20 -0
- sts_libs-2.4.0/tests/dm/delay/main.fmf +19 -0
- sts_libs-2.4.0/tests/dm/error/main.fmf +19 -0
- sts_libs-2.4.0/tests/dm/flakey/main.fmf +19 -0
- sts_libs-2.4.0/tests/dm/linear/main.fmf +19 -0
- sts_libs-2.4.0/tests/dm/main.fmf +15 -0
- sts_libs-2.4.0/tests/dm/thinp/main.fmf +20 -0
- sts_libs-2.4.0/tests/dm/vdo/main.fmf +24 -0
- sts_libs-2.4.0/tests/dm/zero/main.fmf +19 -0
- sts_libs-2.4.0/tests/dmpd/cache/main.fmf +17 -0
- sts_libs-2.4.0/tests/dmpd/cache/test_cache_metadata_size.py +66 -0
- sts_libs-2.4.0/tests/dmpd/conftest.py +15 -0
- sts_libs-2.4.0/tests/dmpd/thin/conftest.py +13 -0
- sts_libs-2.4.0/tests/dmpd/thin/main.fmf +17 -0
- sts_libs-2.4.0/tests/dmpd/thin/thin_check.fmf +8 -0
- sts_libs-2.4.0/tests/dmpd/thin/thin_restore.fmf +8 -0
- sts_libs-2.4.0/tests/dmpd/thin/thin_trim.fmf +8 -0
- sts_libs-2.4.0/tests/fc/full/online_offline/main.fmf +17 -0
- sts_libs-2.4.0/tests/fc/full/rescan_deleted_disk/main.fmf +16 -0
- sts_libs-2.4.0/tests/fc/main.fmf +5 -0
- sts_libs-2.4.0/tests/helpers/boom_boot.py +14 -0
- sts_libs-2.4.0/tests/helpers/root_lvm.py +137 -0
- sts_libs-2.4.0/tests/helpers/snapm_boot.py +31 -0
- sts_libs-2.4.0/tests/helpers/stratis_pool.py +60 -0
- sts_libs-2.4.0/tests/helpers/tmt_reboot.py +46 -0
- sts_libs-2.4.0/tests/iscsi/conftest.py +136 -0
- sts_libs-2.4.0/tests/iscsi/fio/conftest.py +16 -0
- sts_libs-2.4.0/tests/iscsi/fio/fio_multipath_basic.fmf +11 -0
- sts_libs-2.4.0/tests/iscsi/fio/fio_multipath_stress.fmf +9 -0
- sts_libs-2.4.0/tests/iscsi/fio/main.fmf +21 -0
- sts_libs-2.4.0/tests/iscsi/fio/test_fio.py +40 -0
- sts_libs-2.4.0/tests/iscsi/libiscsi/local/libiscsi-local.py +192 -0
- sts_libs-2.4.0/tests/iscsi/libiscsi/main.fmf +12 -0
- sts_libs-2.4.0/tests/iscsi/login-logout-stress/main.fmf +15 -0
- sts_libs-2.4.0/tests/iscsi/main.fmf +9 -0
- sts_libs-2.4.0/tests/iscsi/many-luns/main.fmf +11 -0
- sts_libs-2.4.0/tests/iscsi/parameters/iscsi_params.py +161 -0
- sts_libs-2.4.0/tests/iscsi/parameters/main.fmf +25 -0
- sts_libs-2.4.0/tests/iscsi/read_debugfs/main.fmf +17 -0
- sts_libs-2.4.0/tests/lsm/targetd/conftest.py +184 -0
- sts_libs-2.4.0/tests/lsm/targetd/main.fmf +33 -0
- sts_libs-2.4.0/tests/lsm/targetd/test_targetd.py +627 -0
- sts_libs-2.4.0/tests/lsscsi/conftest.py +10 -0
- sts_libs-2.4.0/tests/lsscsi/core/main.fmf +18 -0
- sts_libs-2.4.0/tests/lsscsi/core/test_lsscsi_basic.py +578 -0
- sts_libs-2.4.0/tests/lsscsi/main.fmf +6 -0
- sts_libs-2.4.0/tests/lsscsi/nvme_detection/main.fmf +13 -0
- sts_libs-2.4.0/tests/lvm/thinp/bugs/test_discard_corruption.py +214 -0
- sts_libs-2.4.0/tests/lvm/thinp/conftest.py +13 -0
- sts_libs-2.4.0/tests/lvm/thinp/main.fmf +179 -0
- sts_libs-2.4.0/tests/lvm/thinp/test_lvchange_thin.py +314 -0
- sts_libs-2.4.0/tests/lvm/thinp/test_lvconvert_thin_lv.py +322 -0
- sts_libs-2.4.0/tests/lvm/thinp/test_lvreduce_thinp.py +418 -0
- sts_libs-2.4.0/tests/lvm/thinp/test_lvresize_thinp.py +558 -0
- sts_libs-2.4.0/tests/lvm/thinp/test_lvscan_thinp.py +373 -0
- sts_libs-2.4.0/tests/lvm/thinp/test_pool_capacity.py +403 -0
- sts_libs-2.4.0/tests/lvm/thinp/test_thin_perf.py +161 -0
- sts_libs-2.4.0/tests/main.fmf +11 -0
- sts_libs-2.4.0/tests/multipath/basic.fmf +21 -0
- sts_libs-2.4.0/tests/multipath/service.fmf +10 -0
- sts_libs-2.4.0/tests/multipath/test_multipath_basic.py +165 -0
- sts_libs-2.4.0/tests/multipath/test_multipath_service.py +58 -0
- sts_libs-2.4.0/tests/pytest.ini +12 -0
- sts_libs-2.4.0/tests/rdma/bugs/customers/customer_1/main.fmf +17 -0
- sts_libs-2.4.0/tests/rdma/bugs/others/main.fmf +16 -0
- sts_libs-2.4.0/tests/rdma/main.fmf +7 -0
- sts_libs-2.4.0/tests/rdma/pyverbs-tests/core/main.fmf +22 -0
- sts_libs-2.4.0/tests/rdma/sriov/core/main.fmf +15 -0
- sts_libs-2.4.0/tests/scsi/conftest.py +14 -0
- sts_libs-2.4.0/tests/scsi/main.fmf +19 -0
- sts_libs-2.4.0/tests/scsi/test_hotplug.py +67 -0
- sts_libs-2.4.0/tests/scsi/test_io.py +151 -0
- sts_libs-2.4.0/tests/sg3_utils/main.fmf +5 -0
- sts_libs-2.4.0/tests/sg3_utils/regression/test_rescan_deletes_dev_null/test_rescan_deletes_dev_null.py +36 -0
- sts_libs-2.4.0/tests/sg3_utils/regression/test_rescan_ignore_rev/test_rescan_ignore_rev.py +33 -0
- sts_libs-2.4.0/tests/sg3_utils/regression/test_rescan_syntax_error/test_rescan_syntax_error.py +35 -0
- sts_libs-2.4.0/tests/sg3_utils/sanity/test_sginfo/test_sginfo.py +194 -0
- sts_libs-2.4.0/tests/snapm/conftest.py +13 -0
- sts_libs-2.4.0/tests/snapm/snapm_sanity/conftest.py +28 -0
- sts_libs-2.4.0/tests/snapm/snapm_sanity/main.fmf +87 -0
- sts_libs-2.4.0/tests/snapm/snapm_sanity/test_snapm_diff.py +648 -0
- sts_libs-2.4.0/tests/snapm/snapm_sanity/test_snapm_schedule.py +1924 -0
- sts_libs-2.4.0/tests/snapm/snapm_sanity/test_snapm_snapset.py +971 -0
- sts_libs-2.4.0/tests/snapm/snapshot_boot/main.fmf +18 -0
- sts_libs-2.4.0/tests/snapm/snapshot_boot/test_snapm_snapshot_boot.py +278 -0
- sts_libs-2.4.0/tests/snapm/upgrade/main.fmf +14 -0
- sts_libs-2.4.0/tests/snapm/upgrade/test_snapm_upgrade.py +191 -0
- sts_libs-2.4.0/tests/snapm/upgrade/test_snapm_upgrade_boot.fmf +15 -0
- sts_libs-2.4.0/tests/snapm/upgrade/test_snapm_upgrade_boot.py +427 -0
- sts_libs-2.4.0/tests/stratis/basic/conftest.py +269 -0
- sts_libs-2.4.0/tests/stratis/basic/test_filesystem.fmf +18 -0
- sts_libs-2.4.0/tests/stratis/basic/test_filesystem.py +451 -0
- sts_libs-2.4.0/tests/stratis/basic/test_pool.fmf +13 -0
- sts_libs-2.4.0/tests/stratis/basic/test_pool.py +125 -0
- sts_libs-2.4.0/tests/stratis/basic/test_pool_advanced.fmf +14 -0
- sts_libs-2.4.0/tests/stratis/basic/test_pool_advanced.py +337 -0
- sts_libs-2.4.0/tests/stratis/basic/test_pool_encryption.py +507 -0
- sts_libs-2.4.0/tests/stratis/basic/test_pool_operations.fmf +18 -0
- sts_libs-2.4.0/tests/stratis/basic/test_pool_operations.py +398 -0
- sts_libs-2.4.0/tests/stratis/conftest.py +13 -0
- sts_libs-2.4.0/tests/stratis/main.fmf +6 -0
- sts_libs-2.4.0/tests/stratis/multihost/main.fmf +13 -0
- sts_libs-2.4.0/tests/stratis/multihost/test_stratis_multihost.py +485 -0
- sts_libs-2.4.0/tests/stratis/persistence/main.fmf +18 -0
- sts_libs-2.4.0/tests/stratis/persistence/test_stratis_fstab_persistence.py +237 -0
- sts_libs-2.4.0/tests/stratis/upgrade/main.fmf +11 -0
- sts_libs-2.4.0/tests/stratis/upgrade/test_stratis_upgrade.py +150 -0
- sts_libs-2.4.0/tests/sts-prepare/runtest.sh +58 -0
- sts_libs-2.4.0/tests/target/core/config_mgmt/config_management.py +121 -0
- sts_libs-2.4.0/tests/target/core/global_config/main.fmf +52 -0
- sts_libs-2.4.0/tests/target/core/global_config/test_global_parameters_sanity.py +193 -0
- sts_libs-2.4.0/tests/target/core/iscsi/iscsi_target.py +49 -0
- sts_libs-2.4.0/tests/target/core/iscsi/main.fmf +9 -0
- sts_libs-2.4.0/tests/target/core/target_modules/main.fmf +6 -0
- sts_libs-2.4.0/tests/target/core/target_modules/target_core_mod.py +15 -0
- sts_libs-2.4.0/tests/target/core/target_service/main.fmf +8 -0
- sts_libs-2.4.0/tests/target/core/target_service/target_service.py +24 -0
- sts_libs-2.4.0/tests/target/full/loopback/main.fmf +10 -0
- sts_libs-2.4.0/tests/target/full/main.fmf +2 -0
- sts_libs-2.4.0/tests/target/full/persistent-reservation/iscsi_pr.fmf +30 -0
- sts_libs-2.4.0/tests/target/full/persistent-reservation/loopback_pr.fmf +30 -0
- sts_libs-2.4.0/tests/target/full/persistent-reservation/test_loopback_pr.py +275 -0
- sts_libs-2.4.0/tests/target/full/restoreconfig/main.fmf +12 -0
- sts_libs-2.4.0/tests/target/isns/main.fmf +27 -0
- sts_libs-2.4.0/tests/target/main.fmf +7 -0
- sts_libs-2.4.0/tests/udisks2/core/main.fmf +2 -0
- sts_libs-2.4.0/tests/udisks2/core/test_encrypted/main.fmf +4 -0
- sts_libs-2.4.0/tests/udisks2/core/test_filesystem/main.fmf +2 -0
- sts_libs-2.4.0/tests/udisks2/core/test_partition/main.fmf +4 -0
- sts_libs-2.4.0/tests/udisks2/hardware/main.fmf +4 -0
- sts_libs-2.4.0/tests/udisks2/main.fmf +11 -0
- sts_libs-2.4.0/tests/udisks2/sanity/version_help/main.fmf +2 -0
- sts_libs-2.4.0/tests/vdo/data/main.fmf +11 -0
- sts_libs-2.4.0/tests/vdo/main.fmf +6 -0
- sts_libs-2.4.0/tests/vdo/module_signature/main.fmf +9 -0
- sts_libs-2.4.0/tests/vdo/multihost/main.fmf +12 -0
- sts_libs-2.4.0/tests/vdo/multihost/test_vdo_multihost.py +507 -0
- sts_libs-2.4.0/tests/vdo/upgrade/main.fmf +10 -0
- sts_libs-2.4.0/tests/vdo/upgrade/test_vdo_upgrade.py +158 -0
- sts_libs-2.4.0/tests/vdo/vdo_high_memory/main.fmf +15 -0
- sts_libs-2.4.0/tests/vdo/vdo_sanity/main.fmf +15 -0
- sts_libs-2.4.0/tests/zstd/conftest.py +10 -0
- sts_libs-2.4.0/tests/zstd/main.fmf +11 -0
- sts_libs-2.4.0/tests/zstd/test_zstd_cli.py +134 -0
- sts_libs-2.4.0/uv.lock +1107 -0
- sts_libs-2.2.0/.packit.yaml +0 -44
- sts_libs-2.2.0/.scripts/sync_sts.py +0 -232
- sts_libs-2.2.0/AGENTS.md +0 -113
- sts_libs-2.2.0/PKG-INFO +0 -65
- sts_libs-2.2.0/README.md +0 -84
- sts_libs-2.2.0/docs/contributing/writing-tests.md +0 -262
- sts_libs-2.2.0/docs/sts-libs/fixtures.md +0 -85
- sts_libs-2.2.0/docs/sts-libs/utils.md +0 -67
- sts_libs-2.2.0/plans/boom/tier2.fmf +0 -38
- sts_libs-2.2.0/plans/device-mapper/tier1.fmf +0 -15
- sts_libs-2.2.0/plans/dmpd/tier1.fmf +0 -11
- sts_libs-2.2.0/plans/image_mode/device-mapper.fmf +0 -6
- sts_libs-2.2.0/plans/image_mode/dmpd.fmf +0 -5
- sts_libs-2.2.0/plans/image_mode/lvm.fmf +0 -6
- sts_libs-2.2.0/plans/image_mode/multipath.fmf +0 -6
- sts_libs-2.2.0/plans/image_mode/stratis.fmf +0 -8
- sts_libs-2.2.0/plans/image_mode/udisks2.fmf +0 -8
- sts_libs-2.2.0/plans/iscsi/offload/main.fmf +0 -6
- sts_libs-2.2.0/plans/lio/core.fmf +0 -8
- sts_libs-2.2.0/plans/lvm/tier1.fmf +0 -12
- sts_libs-2.2.0/plans/main.fmf +0 -62
- sts_libs-2.2.0/plans/module/tier1.fmf +0 -6
- sts_libs-2.2.0/plans/module/tier2.fmf +0 -6
- sts_libs-2.2.0/plans/multipath/tier1.fmf +0 -8
- sts_libs-2.2.0/plans/service/tier1.fmf +0 -6
- sts_libs-2.2.0/plans/snapm/tier2.fmf +0 -38
- sts_libs-2.2.0/plans/stratis/tier1.fmf +0 -12
- sts_libs-2.2.0/plans/stratis/tier2-linear.fmf +0 -16
- sts_libs-2.2.0/plans/stratis/tier2-mdraid1.fmf +0 -15
- sts_libs-2.2.0/plans/stratis/tier2-raid1.fmf +0 -16
- sts_libs-2.2.0/plans/sts-ci/basic.fmf +0 -5
- sts_libs-2.2.0/plans/udisks2/tier3.fmf +0 -17
- sts_libs-2.2.0/plans/vdo/tier2-high-memory.fmf +0 -13
- sts_libs-2.2.0/pyproject.toml +0 -241
- sts_libs-2.2.0/sts_libs/src/sts/base.py +0 -129
- sts_libs-2.2.0/sts_libs/src/sts/blockdevice.py +0 -405
- sts_libs-2.2.0/sts_libs/src/sts/fio/fio.py +0 -179
- sts_libs-2.2.0/sts_libs/src/sts/fio/parameters.py +0 -123
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/common_fixtures.py +0 -346
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/dm_fixtures.py +0 -782
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/dmpd_fixtures.py +0 -573
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/lvm_fixtures.py +0 -783
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/module_fixtures.py +0 -72
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/multipath_fixtures.py +0 -288
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/service_fixtures.py +0 -77
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/sg3_utils_fixtures.py +0 -111
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/snapm_fixtures.py +0 -430
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/stratis_fixtures.py +0 -387
- sts_libs-2.2.0/sts_libs/src/sts/fixtures/udisks2_fixtures.py +0 -117
- sts_libs-2.2.0/sts_libs/src/sts/loop.py +0 -369
- sts_libs-2.2.0/sts_libs/src/sts/lvm/options.py +0 -143
- sts_libs-2.2.0/sts_libs/src/sts/lvm/volume_group.py +0 -120
- sts_libs-2.2.0/sts_libs/src/sts/multipath.py +0 -340
- sts_libs-2.2.0/sts_libs/src/sts/scsi.py +0 -295
- sts_libs-2.2.0/sts_libs/src/sts/scsi_debug.py +0 -146
- sts_libs-2.2.0/sts_libs/src/sts/target.py +0 -676
- sts_libs-2.2.0/sts_libs/src/sts/utils/__init__.py +0 -4
- sts_libs-2.2.0/sts_libs/src/sts/utils/cmdline.py +0 -155
- sts_libs-2.2.0/sts_libs/src/sts/utils/errors.py +0 -72
- sts_libs-2.2.0/sts_libs/src/sts/utils/files.py +0 -371
- sts_libs-2.2.0/sts_libs/src/sts/utils/fstab.py +0 -184
- sts_libs-2.2.0/sts_libs/src/sts/utils/modules.py +0 -228
- sts_libs-2.2.0/sts_libs/src/sts/utils/syscheck.py +0 -275
- sts_libs-2.2.0/sts_libs/src/sts/utils/system.py +0 -453
- sts_libs-2.2.0/sts_libs/src/sts/utils/teststate.py +0 -80
- sts_libs-2.2.0/sts_libs/src/sts/utils/version.py +0 -93
- sts_libs-2.2.0/sts_libs/tests/fio/test_fio.py +0 -105
- sts_libs-2.2.0/sts_libs/tests/fio/test_parameters.py +0 -76
- sts_libs-2.2.0/sts_libs/tests/lvm/test_logical_volume.py +0 -487
- sts_libs-2.2.0/sts_libs/tests/lvm/test_options.py +0 -37
- sts_libs-2.2.0/sts_libs/tests/lvm/test_volume_group.py +0 -93
- sts_libs-2.2.0/sts_libs/tests/test_blockdevice.py +0 -402
- sts_libs-2.2.0/sts_libs/tests/test_loop.py +0 -574
- sts_libs-2.2.0/sts_libs/tests/test_multipath.py +0 -602
- sts_libs-2.2.0/sts_libs/tests/test_scsi.py +0 -417
- sts_libs-2.2.0/sts_libs/tests/test_syscheck.py +0 -451
- sts_libs-2.2.0/sts_libs/tests/test_version.py +0 -232
- sts_libs-2.2.0/sts_libs/tests/utils/test_files.py +0 -584
- sts_libs-2.2.0/sts_libs/tests/utils/test_modules.py +0 -497
- sts_libs-2.2.0/tests/boom/boom_sanity.fmf +0 -12
- sts_libs-2.2.0/tests/boom/snapshot_boot.fmf +0 -14
- sts_libs-2.2.0/tests/boom/test_boom_snapshot_boot.py +0 -339
- sts_libs-2.2.0/tests/bootc_additional_packages/main.fmf +0 -18
- sts_libs-2.2.0/tests/conftest.py +0 -160
- sts_libs-2.2.0/tests/dm/cache/main.fmf +0 -18
- sts_libs-2.2.0/tests/dm/delay/main.fmf +0 -16
- sts_libs-2.2.0/tests/dm/error/main.fmf +0 -17
- sts_libs-2.2.0/tests/dm/flakey/main.fmf +0 -17
- sts_libs-2.2.0/tests/dm/linear/main.fmf +0 -17
- sts_libs-2.2.0/tests/dm/main.fmf +0 -12
- sts_libs-2.2.0/tests/dm/thinp/main.fmf +0 -18
- sts_libs-2.2.0/tests/dm/vdo/main.fmf +0 -18
- sts_libs-2.2.0/tests/dm/zero/main.fmf +0 -17
- sts_libs-2.2.0/tests/dmpd/cache/main.fmf +0 -16
- sts_libs-2.2.0/tests/dmpd/cache/test_cache_metadata_size.py +0 -61
- sts_libs-2.2.0/tests/dmpd/conftest.py +0 -12
- sts_libs-2.2.0/tests/dmpd/thin/main.fmf +0 -16
- sts_libs-2.2.0/tests/dmpd/thin/thin_check.fmf +0 -6
- sts_libs-2.2.0/tests/dmpd/thin/thin_restore.fmf +0 -6
- sts_libs-2.2.0/tests/dmpd/thin/thin_trim.fmf +0 -6
- sts_libs-2.2.0/tests/fc/full/online_offline/main.fmf +0 -18
- sts_libs-2.2.0/tests/fc/full/rescan_deleted_disk/main.fmf +0 -18
- sts_libs-2.2.0/tests/fc/main.fmf +0 -2
- sts_libs-2.2.0/tests/iscsi/fio/conftest.py +0 -16
- sts_libs-2.2.0/tests/iscsi/fio/fio_multipath_basic.fmf +0 -11
- sts_libs-2.2.0/tests/iscsi/fio/fio_multipath_stress.fmf +0 -11
- sts_libs-2.2.0/tests/iscsi/fio/main.fmf +0 -21
- sts_libs-2.2.0/tests/iscsi/fio/test_fio.py +0 -40
- sts_libs-2.2.0/tests/iscsi/libiscsi/local/libiscsi-local.py +0 -189
- sts_libs-2.2.0/tests/iscsi/libiscsi/main.fmf +0 -11
- sts_libs-2.2.0/tests/iscsi/login-logout-stress/main.fmf +0 -15
- sts_libs-2.2.0/tests/iscsi/main.fmf +0 -4
- sts_libs-2.2.0/tests/iscsi/many-luns/main.fmf +0 -13
- sts_libs-2.2.0/tests/iscsi/parameters/iscsi_params.py +0 -161
- sts_libs-2.2.0/tests/iscsi/parameters/main.fmf +0 -28
- sts_libs-2.2.0/tests/iscsi/read_debugfs/main.fmf +0 -18
- sts_libs-2.2.0/tests/lsscsi/core/main.fmf +0 -18
- sts_libs-2.2.0/tests/lsscsi/core/test_lsscsi_basic.py +0 -544
- sts_libs-2.2.0/tests/lsscsi/main.fmf +0 -4
- sts_libs-2.2.0/tests/lsscsi/nvme_detection/main.fmf +0 -12
- sts_libs-2.2.0/tests/lvm/thinp/bugs/test_discard_corruption.py +0 -214
- sts_libs-2.2.0/tests/lvm/thinp/main.fmf +0 -150
- sts_libs-2.2.0/tests/lvm/thinp/test_lvchange_thin.py +0 -310
- sts_libs-2.2.0/tests/lvm/thinp/test_lvconvert_thin_lv.py +0 -322
- sts_libs-2.2.0/tests/lvm/thinp/test_lvreduce_thinp.py +0 -418
- sts_libs-2.2.0/tests/lvm/thinp/test_lvresize_thinp.py +0 -558
- sts_libs-2.2.0/tests/lvm/thinp/test_lvscan_thinp.py +0 -369
- sts_libs-2.2.0/tests/lvm/thinp/test_pool_capacity.py +0 -403
- sts_libs-2.2.0/tests/lvm/thinp/test_thin_perf.py +0 -157
- sts_libs-2.2.0/tests/main.fmf +0 -6
- sts_libs-2.2.0/tests/module/module_load_unload/main.fmf +0 -1340
- sts_libs-2.2.0/tests/module/module_load_unload/test_module_load_unload.py +0 -104
- sts_libs-2.2.0/tests/module/module_parameter_config/main.fmf +0 -351
- sts_libs-2.2.0/tests/module/module_parameter_config/test_module_parameter_config.py +0 -161
- sts_libs-2.2.0/tests/module/module_parameter_validation/main.fmf +0 -610
- sts_libs-2.2.0/tests/module/module_parameter_validation/test_module_parameter_validation.py +0 -101
- sts_libs-2.2.0/tests/multipath/main.fmf +0 -22
- sts_libs-2.2.0/tests/multipath/test_multipath_basic.py +0 -193
- sts_libs-2.2.0/tests/pytest.ini +0 -10
- sts_libs-2.2.0/tests/rdma/bugs/customers/customer_1/main.fmf +0 -19
- sts_libs-2.2.0/tests/rdma/bugs/others/main.fmf +0 -18
- sts_libs-2.2.0/tests/rdma/main.fmf +0 -3
- sts_libs-2.2.0/tests/rdma/pyverbs-tests/core/main.fmf +0 -24
- sts_libs-2.2.0/tests/rdma/sriov/core/main.fmf +0 -17
- sts_libs-2.2.0/tests/service/main.fmf +0 -86
- sts_libs-2.2.0/tests/service/test_service_lifecycle.py +0 -68
- sts_libs-2.2.0/tests/sg3_utils/main.fmf +0 -3
- sts_libs-2.2.0/tests/sg3_utils/regression/test_rescan_deletes_dev_null/test_rescan_deletes_dev_null.py +0 -40
- sts_libs-2.2.0/tests/sg3_utils/regression/test_rescan_ignore_rev/test_rescan_ignore_rev.py +0 -38
- sts_libs-2.2.0/tests/sg3_utils/regression/test_rescan_syntax_error/test_rescan_syntax_error.py +0 -40
- sts_libs-2.2.0/tests/sg3_utils/sanity/test_sginfo/test_sginfo.py +0 -190
- sts_libs-2.2.0/tests/snapm/snapm_sanity/main.fmf +0 -75
- sts_libs-2.2.0/tests/snapm/snapm_sanity/test_snapm_diff.py +0 -641
- sts_libs-2.2.0/tests/snapm/snapm_sanity/test_snapm_schedule.py +0 -1927
- sts_libs-2.2.0/tests/snapm/snapm_sanity/test_snapm_snapset.py +0 -964
- sts_libs-2.2.0/tests/snapm/snapshot_boot/main.fmf +0 -15
- sts_libs-2.2.0/tests/snapm/snapshot_boot/test_snapm_snapshot_boot.py +0 -350
- sts_libs-2.2.0/tests/stratis/basic/conftest.py +0 -276
- sts_libs-2.2.0/tests/stratis/basic/test_filesystem.fmf +0 -16
- sts_libs-2.2.0/tests/stratis/basic/test_filesystem.py +0 -447
- sts_libs-2.2.0/tests/stratis/basic/test_pool.fmf +0 -15
- sts_libs-2.2.0/tests/stratis/basic/test_pool.py +0 -381
- sts_libs-2.2.0/tests/stratis/basic/test_pool_encryption.py +0 -489
- sts_libs-2.2.0/tests/stratis/basic/test_pool_operations.fmf +0 -17
- sts_libs-2.2.0/tests/stratis/basic/test_pool_operations.py +0 -467
- sts_libs-2.2.0/tests/stratis/main.fmf +0 -3
- sts_libs-2.2.0/tests/stratis/multihost/main.fmf +0 -15
- sts_libs-2.2.0/tests/stratis/multihost/test_stratis_multihost.py +0 -485
- sts_libs-2.2.0/tests/stratis/persistence/main.fmf +0 -17
- sts_libs-2.2.0/tests/stratis/persistence/test_stratis_fstab_persistence.py +0 -237
- sts_libs-2.2.0/tests/stratis/upgrade/main.fmf +0 -9
- sts_libs-2.2.0/tests/stratis/upgrade/test_stratis_upgrade.py +0 -150
- sts_libs-2.2.0/tests/sts-prepare/runtest.sh +0 -47
- sts_libs-2.2.0/tests/target/core/config_mgmt/config_management.py +0 -118
- sts_libs-2.2.0/tests/target/core/global_config/main.fmf +0 -40
- sts_libs-2.2.0/tests/target/core/global_config/test_global_parameters_sanity.py +0 -183
- sts_libs-2.2.0/tests/target/core/iscsi/iscsi_target.py +0 -49
- sts_libs-2.2.0/tests/target/core/iscsi/main.fmf +0 -11
- sts_libs-2.2.0/tests/target/core/main.fmf +0 -1
- sts_libs-2.2.0/tests/target/core/target_modules/main.fmf +0 -9
- sts_libs-2.2.0/tests/target/core/target_modules/target_core_mod.py +0 -55
- sts_libs-2.2.0/tests/target/core/target_service/main.fmf +0 -10
- sts_libs-2.2.0/tests/target/core/target_service/target_service.py +0 -59
- sts_libs-2.2.0/tests/target/full/loopback/main.fmf +0 -15
- sts_libs-2.2.0/tests/target/full/main.fmf +0 -1
- sts_libs-2.2.0/tests/target/full/persistent-reservation/iscsi_pr.fmf +0 -32
- sts_libs-2.2.0/tests/target/full/persistent-reservation/loopback_pr.fmf +0 -34
- sts_libs-2.2.0/tests/target/full/persistent-reservation/test_loopback_pr.py +0 -269
- sts_libs-2.2.0/tests/target/full/restoreconfig/main.fmf +0 -13
- sts_libs-2.2.0/tests/target/isns/main.fmf +0 -26
- sts_libs-2.2.0/tests/target/main.fmf +0 -6
- sts_libs-2.2.0/tests/udisks2/core/test_encrypted/main.fmf +0 -2
- sts_libs-2.2.0/tests/udisks2/core/test_filesystem/main.fmf +0 -2
- sts_libs-2.2.0/tests/udisks2/core/test_partition/main.fmf +0 -2
- sts_libs-2.2.0/tests/udisks2/hardware/main.fmf +0 -2
- sts_libs-2.2.0/tests/udisks2/main.fmf +0 -6
- sts_libs-2.2.0/tests/udisks2/sanity/version_help/main.fmf +0 -2
- sts_libs-2.2.0/tests/vdo/data/main.fmf +0 -10
- sts_libs-2.2.0/tests/vdo/main.fmf +0 -3
- sts_libs-2.2.0/tests/vdo/module_signature/main.fmf +0 -8
- sts_libs-2.2.0/tests/vdo/multihost/main.fmf +0 -16
- sts_libs-2.2.0/tests/vdo/multihost/test_vdo_multihost.py +0 -507
- sts_libs-2.2.0/tests/vdo/upgrade/main.fmf +0 -9
- sts_libs-2.2.0/tests/vdo/upgrade/test_vdo_upgrade.py +0 -158
- sts_libs-2.2.0/tests/vdo/vdo_high_memory/main.fmf +0 -17
- sts_libs-2.2.0/tests/vdo/vdo_sanity/main.fmf +0 -13
- sts_libs-2.2.0/uv.lock +0 -927
- {sts_libs-2.2.0 → sts_libs-2.4.0}/.fmf/version +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/.gitignore +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/.gitlab-ci.yml +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/.markdownlint.json +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/.pre-commit-config.yaml +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/CLAUDE.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/LICENSE +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/dev-container/Containerfile +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/dev-container/README.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/dev-container/build.sh +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/dev-container/ci.Containerfile +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/dev-container/run.sh +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/contributing/docstrings.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/contributing/image-mode-testing.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/contributing.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/index.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/index.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/base.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/blockdevice.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/boom.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/devicemapper.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/dmpd.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/fc.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/fio.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/iscsi.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/isns.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/loop.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/lvm.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/multipath.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/network.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/nvme.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/pr.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/qemu.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/rdma.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/scsi.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/scsi_debug.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/sg3_utils.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/snapm.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/stratis.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/target.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/udevadm.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/docs/sts-libs/libraries/vdo.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/mkdocs.yml +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/boom/tier1.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/boom/tier2-st76.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/fc/full_lpfc.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/fc/full_qla2xxx.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/fc/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/image_mode/iscsi.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/image_mode/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/image_mode/vdo.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/iscsi/libiscsi/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/iscsi/local.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/iscsi/offload/be2iscsi.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/iscsi/offload/bnx2i.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/iscsi/offload/cxgb4i.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/iscsi/offload/intel.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/iscsi/offload/qedi.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/iscsi/tier0.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/isns-utils/full.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/lio/full.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/lsscsi/tier1.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/lsscsi/tier2.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/rdma/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/rdma/regression.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/rdma/test_case_vars.yaml +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/sg3_utils/tier1.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/snapm/tier1.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/snapm/tier2-st76.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/stratis/multihost/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/stratis/multihost/nfs.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/stratis/tier2-fstab-stqe.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/stratis/tier2-fstab.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/vdo/multihost/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/vdo/multihost/multihost-aarch64.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/vdo/multihost/multihost-ppc64le.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/vdo/multihost/multihost-s390x.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/vdo/multihost/multihost-stqe.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/vdo/tier1.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/plans/vdo/vdo_smoke.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/python-sts-libs.spec +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/renovate.json +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/README.md +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/boom/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/boom/base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/boom/entry.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/boom/errors.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/boom/host.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/boom/profile.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/cache.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/delay.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/error.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/errors.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/flakey.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/linear.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/thin.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/vdo.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dm/zero.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/dmpd.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fc.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fio/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fio/errors.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fixtures/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fixtures/boom_fixtures.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fixtures/fc_fixtures.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fixtures/iscsi_fixtures.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fixtures/nvme_fixtures.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fixtures/rdma_fixtures.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fixtures/target_fixtures.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/fixtures/vdo_fixtures.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/iscsi/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/iscsi/config.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/iscsi/device.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/iscsi/iscsiadm.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/iscsi/node.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/iscsi/parameters.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/iscsi/session.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/isns.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/lvm/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/lvm/base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/lvm/errors.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/lvm/logical_volume.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/lvm/lvconf.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/lvm/physical_volume.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/lvm/reports.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/lvm/thin_pool.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/models.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/network/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/network/errors.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/network/interface.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/network/nm.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/nvme.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/pr.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/py.typed +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/qemu.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/rdma.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/sg3_utils.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/snapm/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/snapm/base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/snapm/errors.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/snapm/plugin.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/snapm/schedule.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/snapm/snapset.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/snapm/snapshot.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/stratis/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/stratis/base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/stratis/errors.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/stratis/filesystem.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/stratis/pool.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/udevadm.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/udisks2.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/utils/cli.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/utils/config.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/utils/nfs.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/utils/packages.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/utils/processes.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/utils/size.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/utils/string_extras.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/utils/sync.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/utils/tmt_pytest.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/src/sts/vdo.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/boom/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/boom/test_base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/boom/test_entry.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/boom/test_host.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/boom/test_profile.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/conftest.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/data/lvs_report_multi.json +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/data/lvs_report_single.json +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/data/multipathd_show_map.json +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/data/nvme_list.json +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/dm/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/dm/test_base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/dm/test_cache_vdo.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/dm/test_delay_flakey.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/dm/test_linear.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/dm/test_thin.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/fio/__init__.py +0 -0
- {sts_libs-2.2.0/sts_libs/tests/iscsi → sts_libs-2.4.0/sts_libs/tests/fixtures}/__init__.py +0 -0
- {sts_libs-2.2.0/sts_libs/tests/lvm → sts_libs-2.4.0/sts_libs/tests/helpers}/__init__.py +0 -0
- {sts_libs-2.2.0/sts_libs/tests/network → sts_libs-2.4.0/sts_libs/tests/iscsi}/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/iscsi/conftest.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/iscsi/test_config.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/iscsi/test_device.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/iscsi/test_iscsiadm.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/iscsi/test_parameters.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/iscsi/test_session.py +0 -0
- {sts_libs-2.2.0/sts_libs/tests/snapm → sts_libs-2.4.0/sts_libs/tests/lvm}/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/lvm/test_base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/lvm/test_lvconf.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/lvm/test_physical_volume.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/lvm/test_reports.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/lvm/test_thin_pool.py +0 -0
- {sts_libs-2.2.0/sts_libs/tests/stratis → sts_libs-2.4.0/sts_libs/tests/network}/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/network/test_interface.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/network/test_nm.py +0 -0
- {sts_libs-2.2.0/sts_libs/tests/utils → sts_libs-2.4.0/sts_libs/tests/snapm}/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/snapm/test_base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/snapm/test_plugin.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/snapm/test_schedule.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/snapm/test_snapset.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/snapm/test_snapshot.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/stratis/test_base.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/stratis/test_filesystem.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/stratis/test_pool.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_cmdline.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_fc.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_models.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_multipath_report.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_nvme.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_packages.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_pr.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_rdma.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_sg3_utils.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_string_extras.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_system.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_target.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/test_vdo.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/utils/test_cli.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/utils/test_fstab.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/utils/test_nfs.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/utils/test_processes.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/utils/test_size.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/utils/test_sync.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/utils/test_teststate.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/sts_libs/tests/utils/test_tmt_pytest.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/boom/boom_sanity.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/bootc_additional_packages/Containerfile +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/bootc_additional_packages/Containerfile.iscsi +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/bootc_additional_packages/Containerfile.stratis +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/bootc_additional_packages/Containerfile.udisks2 +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/bootc_additional_packages/common-setup.sh +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/bootc_additional_packages/runtest.sh +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dm/cache/test_dm_cache.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dm/delay/test_dm_delay.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dm/error/test_dm_error.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dm/flakey/test_dm_flakey.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dm/linear/test_linear_target.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dm/thinp/test_dm_thin.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dm/vdo/test_dm_vdo.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dm/zero/test_dm_zero.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/cache/cache_check.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/cache/cache_dump.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/cache/cache_metadata_size.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/cache/cache_repair.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/cache/cache_restore.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/cache/test_cache_check.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/cache/test_cache_dump.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/cache/test_cache_repair.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/cache/test_cache_restore.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/test_thin_check.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/test_thin_delta.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/test_thin_dump.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/test_thin_ls.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/test_thin_metadata_size.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/test_thin_repair.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/test_thin_restore.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/test_thin_trim.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/thin_delta.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/thin_ls.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/thin_metadata_size.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/dmpd/thin/thin_repair.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/fc/conftest.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/fc/full/online_offline/basic.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/fc/full/online_offline/online_offline.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/fc/full/online_offline/stress.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/fc/full/rescan_deleted_disk/rescan_deleted_disk.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/helpers/__init__.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/helpers/vdo.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/iscsi/fio/fio_basic.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/iscsi/fio/fio_stress.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/iscsi/libiscsi/local/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/iscsi/login-logout-stress/login-logout-stress.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/iscsi/many-luns/many-luns-local.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/iscsi/read_debugfs/read_debugfs.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lsscsi/nvme_detection/test_nvme_detection.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/conftest.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/bugs/test_stripe_blkdiscard.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/bugs/test_thinpool_error_target_meta.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_discard_perf.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvconf_thinp.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvconvert_thinpool.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvcreate_linear.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvcreate_mirror.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvcreate_poolmetadataspare.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvcreate_stripe.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvextend.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvm_thinp_misc.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvm_thinp_modules.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvremove_thinp.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvrename_thinp.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/lvm/thinp/test_lvs_thinp.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/rdma/bugs/customers/customer_1/issue_23967_verify_speed.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/rdma/bugs/customers/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/rdma/bugs/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/rdma/bugs/others/reproducers.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/rdma/pyverbs-tests/core/pyverbs-tests.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/rdma/sriov/core/sriov.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/conftest.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_documentation_check/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_documentation_check/test_documentation_check.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_rescan_deletes_dev_null/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_rescan_ignore_rev/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_rescan_lun_scanning/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_rescan_lun_scanning/test_rescan_lun_scanning.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_rescan_removes_readds/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_rescan_removes_readds/test_rescan_removes_readds.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_rescan_syntax_error/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_rescan_too_many_args/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_rescan_too_many_args/test_rescan_too_many_args.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_sg_map26_32_devices/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_sg_map26_32_devices/test_sg_map26_32_devices.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_sginfo_dev_snapshot/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/regression/test_sginfo_dev_snapshot/test_sginfo_dev_snapshot.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg3_dd/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg3_dd/test_sg3_dd.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_get_config/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_get_config/test_sg_get_config.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_ident/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_ident/test_sg_ident.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_inq/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_inq/test_sg_inq.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_logs/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_logs/test_sg_logs.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_luns/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_luns/test_sg_luns.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_map/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_map/test_sg_map.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_modes/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_modes/test_sg_modes.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_opcodes/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_opcodes/test_sg_opcodes.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_persist/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_persist/test_sg_persist.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_rbuf/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_rbuf/test_sg_rbuf.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_read/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_read/test_sg_read.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_read_buffer/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_read_buffer/test_sg_read_buffer.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_read_long/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_read_long/test_sg_read_long.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_readcap/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_readcap/test_sg_readcap.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_safte/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_safte/test_sg_safte.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_sat_identify/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_sat_identify/test_sg_sat_identify.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_scan/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_scan/test_sg_scan.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_senddiag/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_senddiag/test_sg_senddiag.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_ses/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_ses/test_sg_ses.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_start/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_start/test_sg_start.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_sync/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_sync/test_sg_sync.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_turs/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_turs/test_sg_turs.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_verify/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_verify/test_sg_verify.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_vpd/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_vpd/test_sg_vpd.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_write_buffer/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sg_write_buffer/test_sg_write_buffer.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/test_sginfo/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/version_help/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sg3_utils/sanity/version_help/test_version_help.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/snapm/snapm_sanity/test_snapm_mount.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/snapm/snapm_sanity/test_snapm_sanity.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/stratis/basic/test_blockdev.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/stratis/basic/test_blockdev.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/stratis/basic/test_daemon.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/stratis/basic/test_daemon.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/stratis/basic/test_key.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/stratis/basic/test_key.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/stratis/basic/test_pool_encryption.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/sts-prepare/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/core/backstores/backstores.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/core/backstores/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/core/config_mgmt/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/core/global_config/test_auto_use_daemon.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/core/global_config/test_global_parameters.py +0 -0
- {sts_libs-2.2.0/tests/udisks2 → sts_libs-2.4.0/tests/target}/core/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/full/auth/chap.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/full/auth/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/full/loopback/test_loopback.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/full/persistent-reservation/conftest.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/full/persistent-reservation/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/full/persistent-reservation/test_iscsi_pr.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/full/restoreconfig/restoreconfig.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/target/isns/isns-sanity.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_block_format/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_block_format/test_block_format.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_encrypted/test_encrypted.py +0 -0
- /sts_libs-2.2.0/tests/udisks2/core/test_filesystem/test_filesystem.py → /sts_libs-2.4.0/tests/udisks2/core/test_filesystem/test_udisks2_filesystem.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_loop_dbus/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_loop_dbus/test_loop_dbus.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_manager/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_manager/test_manager.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_partition/test_partition.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_swapspace/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/core/test_swapspace/test_swapspace.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/hardware/test_drive/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/hardware/test_drive/test_drive.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_block_secret_config/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_block_secret_config/test_block_secret_config.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_bug_regressions/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_bug_regressions/test_bug_regressions.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_encrypted_advanced/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_encrypted_advanced/test_encrypted_advanced.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_encrypted_regression/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_encrypted_regression/test_encrypted_regression.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_error_handling/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_error_handling/test_error_handling.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_filesystem_regression/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_filesystem_regression/test_filesystem_regression.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_luks_convert/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_luks_convert/test_luks_convert.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_manager_regression/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_manager_regression/test_manager_regression.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_vfat_capabilities/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/regression/test_vfat_capabilities/test_vfat_capabilities.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_dump/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_dump/test_dump.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_info/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_info/test_info.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_lock/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_lock/test_lock.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_loop/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_loop/test_loop.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_mount/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_mount/test_mount.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_status/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/udisks2/sanity/test_status/test_status.py +0 -0
- /sts_libs-2.2.0/tests/udisks2/sanity/version_help/test_version_help.py → /sts_libs-2.4.0/tests/udisks2/sanity/version_help/test_udisks2_version_help.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/data/vdo_xfs_stress.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/module_signature/test_signatures.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/upgrade/lvm_vdo.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/upgrade/vdo_manager.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/upgrade/vdo_on_lv.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/vdo_ack_threads/vdo_ack_threads.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/vdo_calculate_size/main.fmf +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/vdo_calculate_size/test_vdo_calculate_size.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/vdo_high_memory/test_vdo_high_memory.py +0 -0
- {sts_libs-2.2.0 → sts_libs-2.4.0}/tests/vdo/vdo_sanity/test_vdo_sanity.py +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
specfile_path: python-sts-libs.spec
|
|
2
|
+
|
|
3
|
+
upstream_package_name: sts-libs
|
|
4
|
+
downstream_package_name: sts-libs
|
|
5
|
+
|
|
6
|
+
upstream_project_url: https://gitlab.com/rh-kernel-stqe/sts
|
|
7
|
+
|
|
8
|
+
srpm_build_deps:
|
|
9
|
+
- uv
|
|
10
|
+
|
|
11
|
+
actions:
|
|
12
|
+
create-archive:
|
|
13
|
+
- uv build --sdist --no-sources
|
|
14
|
+
- bash -c "ls dist/sts_libs-*.tar.gz"
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
# Build pull requests
|
|
18
|
+
- job: copr_build
|
|
19
|
+
trigger: pull_request
|
|
20
|
+
require:
|
|
21
|
+
label:
|
|
22
|
+
present:
|
|
23
|
+
- packit-test
|
|
24
|
+
targets:
|
|
25
|
+
- fedora-latest-stable
|
|
26
|
+
- epel-10
|
|
27
|
+
|
|
28
|
+
# Release to copr
|
|
29
|
+
- job: copr_build
|
|
30
|
+
trigger: release
|
|
31
|
+
preserve_project: true
|
|
32
|
+
targets:
|
|
33
|
+
- fedora-all
|
|
34
|
+
- fedora-all-aarch64
|
|
35
|
+
- fedora-all-ppc64le
|
|
36
|
+
- fedora-all-s390x
|
|
37
|
+
- epel-10
|
|
38
|
+
- epel-10-aarch64
|
|
39
|
+
- epel-10-ppc64le
|
|
40
|
+
- epel-10-s390x
|
|
41
|
+
|
|
42
|
+
# Run tests on pull requests
|
|
43
|
+
- job: tests
|
|
44
|
+
trigger: pull_request
|
|
45
|
+
require:
|
|
46
|
+
label:
|
|
47
|
+
present:
|
|
48
|
+
- packit-test
|
|
49
|
+
targets:
|
|
50
|
+
- fedora-latest-stable
|
|
51
|
+
- epel-10
|
|
52
|
+
tmt_plan: /plans/sts-ci/
|
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Copyright: Contributors to the sts project
|
|
3
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
+
|
|
5
|
+
"""Sync sts-libs and tests to remote hosts for development.
|
|
6
|
+
|
|
7
|
+
Builds a wheel from the local tree, installs it via uv on the remote
|
|
8
|
+
host, and rsyncs tests/, plans/ and .fmf/ so you can run::
|
|
9
|
+
|
|
10
|
+
ssh root@HOST 'cd /root/sts && pytest tests/ -m ci'
|
|
11
|
+
|
|
12
|
+
Alternatively, --mr N installs python3-sts-libs from the packit copr
|
|
13
|
+
repo for a merge request (Fedora and RHEL/EPEL 10+ x86_64 only).
|
|
14
|
+
|
|
15
|
+
Steps within a single host are pipelined with asyncio: the wheel
|
|
16
|
+
builds locally while distro detection, uv/python setup, and test
|
|
17
|
+
syncing proceed on the remote host in parallel. Multiple hosts
|
|
18
|
+
are synced concurrently.
|
|
19
|
+
|
|
20
|
+
Examples::
|
|
21
|
+
|
|
22
|
+
sync_sts.py 10.0.186.174
|
|
23
|
+
sync_sts.py 10.0.186.174 my-beaker-host.example.com
|
|
24
|
+
sync_sts.py -n 10.0.186.174 # tests only, no wheel
|
|
25
|
+
sync_sts.py --mr 190 10.0.186.174
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
# ruff: noqa: T201, D102, D103
|
|
29
|
+
from __future__ import annotations
|
|
30
|
+
|
|
31
|
+
import argparse
|
|
32
|
+
import asyncio
|
|
33
|
+
import contextlib
|
|
34
|
+
import shutil
|
|
35
|
+
import subprocess
|
|
36
|
+
import sys
|
|
37
|
+
import tempfile
|
|
38
|
+
from dataclasses import dataclass
|
|
39
|
+
from pathlib import Path
|
|
40
|
+
|
|
41
|
+
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
42
|
+
REMOTE_DIR = '/root/sts'
|
|
43
|
+
_SSH_BASE = ('-o', 'StrictHostKeyChecking=no', '-o', 'ConnectTimeout=10')
|
|
44
|
+
_ssh_mux: list[str] = []
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _ssh_opts() -> tuple[str, ...]:
|
|
48
|
+
return _SSH_BASE + tuple(_ssh_mux)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
_RED = '\033[0;31m'
|
|
52
|
+
_GREEN = '\033[0;32m'
|
|
53
|
+
_YELLOW = '\033[1;33m'
|
|
54
|
+
_BLUE = '\033[0;34m'
|
|
55
|
+
_NC = '\033[0m'
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def info(msg: str, host: str | None = None) -> None:
|
|
59
|
+
tag = f'[{host}] ' if host else ''
|
|
60
|
+
print(f'{_BLUE}[INFO]{_NC} {tag}{msg}')
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def ok(msg: str, host: str | None = None) -> None:
|
|
64
|
+
tag = f'[{host}] ' if host else ''
|
|
65
|
+
print(f'{_GREEN}[OK]{_NC} {tag}{msg}')
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def warn(msg: str, host: str | None = None) -> None:
|
|
69
|
+
tag = f'[{host}] ' if host else ''
|
|
70
|
+
print(f'{_YELLOW}[WARN]{_NC} {tag}{msg}')
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def err(msg: str, host: str | None = None) -> None:
|
|
74
|
+
tag = f'[{host}] ' if host else ''
|
|
75
|
+
print(f'{_RED}[ERROR]{_NC} {tag}{msg}', file=sys.stderr)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
# ── Async subprocess helpers ────────────────────────────────────────
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
async def run_cmd(
|
|
82
|
+
cmd: list[str],
|
|
83
|
+
*,
|
|
84
|
+
check: bool = True,
|
|
85
|
+
cwd: Path | None = None,
|
|
86
|
+
) -> subprocess.CompletedProcess[str]:
|
|
87
|
+
"""Run a local command asynchronously."""
|
|
88
|
+
proc = await asyncio.create_subprocess_exec(
|
|
89
|
+
*cmd,
|
|
90
|
+
stdout=asyncio.subprocess.PIPE,
|
|
91
|
+
stderr=asyncio.subprocess.PIPE,
|
|
92
|
+
cwd=cwd,
|
|
93
|
+
)
|
|
94
|
+
stdout_bytes, stderr_bytes = await proc.communicate()
|
|
95
|
+
result = subprocess.CompletedProcess(
|
|
96
|
+
cmd,
|
|
97
|
+
proc.returncode or 0,
|
|
98
|
+
stdout_bytes.decode(),
|
|
99
|
+
stderr_bytes.decode(),
|
|
100
|
+
)
|
|
101
|
+
if check and result.returncode != 0:
|
|
102
|
+
raise subprocess.CalledProcessError(result.returncode, cmd, result.stdout, result.stderr)
|
|
103
|
+
return result
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
async def ssh(
|
|
107
|
+
host: str,
|
|
108
|
+
command: str,
|
|
109
|
+
*,
|
|
110
|
+
check: bool = True,
|
|
111
|
+
) -> subprocess.CompletedProcess[str]:
|
|
112
|
+
return await run_cmd(
|
|
113
|
+
['ssh', *_ssh_opts(), f'root@{host}', command],
|
|
114
|
+
check=check,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
async def scp_to(src: Path, host: str, dst: str) -> None:
|
|
119
|
+
await run_cmd(['scp', *_ssh_opts(), str(src), f'root@{host}:{dst}'])
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
async def rsync_to(src: Path, host: str, dst: str) -> None:
|
|
123
|
+
await run_cmd(
|
|
124
|
+
[
|
|
125
|
+
'rsync',
|
|
126
|
+
'-az',
|
|
127
|
+
'--delete',
|
|
128
|
+
'-e',
|
|
129
|
+
f'ssh {" ".join(_ssh_opts())}',
|
|
130
|
+
f'{src}/',
|
|
131
|
+
f'root@{host}:{dst}/',
|
|
132
|
+
]
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
# ── Distro detection ────────────────────────────────────────────────
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
@dataclass
|
|
140
|
+
class Distro:
|
|
141
|
+
"""Linux distribution detected on the remote host."""
|
|
142
|
+
|
|
143
|
+
id: str
|
|
144
|
+
version_id: str
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def major(self) -> int:
|
|
148
|
+
return int(self.version_id.split('.')[0])
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def has_modern_python(self) -> bool:
|
|
152
|
+
"""System python3 is >= 3.12 (Fedora, RHEL/CentOS 10+)."""
|
|
153
|
+
if self.id == 'fedora':
|
|
154
|
+
return True
|
|
155
|
+
return self.id in ('rhel', 'centos') and self.major >= 10
|
|
156
|
+
|
|
157
|
+
@property
|
|
158
|
+
def needs_uv_python(self) -> bool:
|
|
159
|
+
"""No python3.12 dnf package — uv must install it (RHEL 8.8, 9.2)."""
|
|
160
|
+
return self.id == 'rhel' and self.version_id in ('8.8', '9.2')
|
|
161
|
+
|
|
162
|
+
@property
|
|
163
|
+
def python_bin(self) -> str:
|
|
164
|
+
"""Python binary name for shell commands."""
|
|
165
|
+
return 'python3' if self.has_modern_python else 'python3.12'
|
|
166
|
+
|
|
167
|
+
@property
|
|
168
|
+
def copr_chroot(self) -> str | None:
|
|
169
|
+
"""Copr chroot name, or None if copr builds are unavailable."""
|
|
170
|
+
if self.id == 'fedora':
|
|
171
|
+
return f'fedora-{self.version_id}-x86_64'
|
|
172
|
+
if self.id in ('rhel', 'centos') and self.major >= 10:
|
|
173
|
+
return f'epel-{self.major}-x86_64'
|
|
174
|
+
return None
|
|
175
|
+
|
|
176
|
+
def __str__(self) -> str:
|
|
177
|
+
return f'{self.id}-{self.version_id}'
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
async def detect_distro(host: str) -> Distro:
|
|
181
|
+
"""Parse /etc/os-release on the remote host."""
|
|
182
|
+
result = await ssh(host, 'cat /etc/os-release', check=False)
|
|
183
|
+
if result.returncode != 0:
|
|
184
|
+
raise RuntimeError(f'Cannot read /etc/os-release on {host}')
|
|
185
|
+
|
|
186
|
+
props: dict[str, str] = {}
|
|
187
|
+
for line in result.stdout.splitlines():
|
|
188
|
+
if '=' in line:
|
|
189
|
+
key, _, value = line.partition('=')
|
|
190
|
+
props[key] = value.strip('"')
|
|
191
|
+
|
|
192
|
+
return Distro(
|
|
193
|
+
id=props.get('ID', 'unknown'),
|
|
194
|
+
version_id=props.get('VERSION_ID', '0'),
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
# ── Wheel build ─────────────────────────────────────────────────────
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
async def _warn_untracked() -> None:
|
|
202
|
+
"""Warn if sts_libs/src has untracked files."""
|
|
203
|
+
result = await run_cmd(
|
|
204
|
+
['git', 'ls-files', '--others', '--exclude-standard', 'sts_libs/src/'],
|
|
205
|
+
cwd=REPO_ROOT,
|
|
206
|
+
check=False,
|
|
207
|
+
)
|
|
208
|
+
if result.stdout.strip():
|
|
209
|
+
warn('Untracked files in sts_libs/src/ — they may end up in the wheel')
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
async def build_wheel() -> Path:
|
|
213
|
+
"""Build an sts-libs wheel and return its path."""
|
|
214
|
+
await _warn_untracked()
|
|
215
|
+
info('Building wheel')
|
|
216
|
+
await run_cmd(
|
|
217
|
+
['uv', 'build', '--wheel', '--out-dir', 'dist/'],
|
|
218
|
+
cwd=REPO_ROOT,
|
|
219
|
+
)
|
|
220
|
+
wheels = sorted((REPO_ROOT / 'dist').glob('sts_libs-*-py3-none-any.whl'))
|
|
221
|
+
if not wheels:
|
|
222
|
+
err(f'No wheel found in {REPO_ROOT / "dist"} after build')
|
|
223
|
+
sys.exit(1)
|
|
224
|
+
ok(f'Built {wheels[-1].name}')
|
|
225
|
+
return wheels[-1]
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
# ── Wheel install ────────────────────────────────────────────────────
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
async def setup_uv_and_python(host: str, distro: Distro) -> None:
|
|
232
|
+
"""Ensure uv and Python >= 3.12 are available on the remote host."""
|
|
233
|
+
steps: list[str] = []
|
|
234
|
+
|
|
235
|
+
if distro.has_modern_python:
|
|
236
|
+
steps.append(
|
|
237
|
+
'command -v uv >/dev/null 2>&1'
|
|
238
|
+
' || dnf install -y uv 2>/dev/null'
|
|
239
|
+
' || (dnf install -y python3-pip && pip3 install uv)',
|
|
240
|
+
)
|
|
241
|
+
elif distro.needs_uv_python and distro.major == 8:
|
|
242
|
+
steps.extend(
|
|
243
|
+
[
|
|
244
|
+
'dnf install -y python3.11-pip',
|
|
245
|
+
'python3.11 -m pip install uv',
|
|
246
|
+
'uv python install 3.12',
|
|
247
|
+
]
|
|
248
|
+
)
|
|
249
|
+
elif distro.needs_uv_python:
|
|
250
|
+
steps.extend(
|
|
251
|
+
[
|
|
252
|
+
'dnf install -y python3-pip',
|
|
253
|
+
'python3 -m pip install uv',
|
|
254
|
+
'uv python install 3.12',
|
|
255
|
+
]
|
|
256
|
+
)
|
|
257
|
+
else:
|
|
258
|
+
steps.extend(
|
|
259
|
+
[
|
|
260
|
+
'dnf install -y python3.12-pip',
|
|
261
|
+
'python3.12 -m pip install uv',
|
|
262
|
+
]
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
if not distro.has_modern_python:
|
|
266
|
+
steps.append("dnf remove -y 'python3*-pytest' 2>/dev/null || true")
|
|
267
|
+
|
|
268
|
+
info('Setting up Python environment', host=host)
|
|
269
|
+
await ssh(host, ' && '.join(steps))
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
async def ensure_pytest_on_path(host: str) -> None:
|
|
273
|
+
"""Symlink pytest to /usr/local/bin if it is not already on PATH."""
|
|
274
|
+
await ssh(
|
|
275
|
+
host,
|
|
276
|
+
'command -v pytest >/dev/null 2>&1 && exit 0; '
|
|
277
|
+
'for d in /usr/local/bin /root/.local/bin; do '
|
|
278
|
+
' [ -f "$d/pytest" ] && ln -sf "$d/pytest" /usr/local/bin/pytest && exit 0; '
|
|
279
|
+
'done; '
|
|
280
|
+
'py=$(uv python find 3.12 2>/dev/null) && '
|
|
281
|
+
' [ -f "$(dirname "$py")/pytest" ] && '
|
|
282
|
+
' ln -sf "$(dirname "$py")/pytest" /usr/local/bin/pytest; '
|
|
283
|
+
'true',
|
|
284
|
+
check=False,
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
async def copy_and_install_wheel(host: str, distro: Distro, wheel: Path) -> None:
|
|
289
|
+
"""Copy the wheel to the host and install via uv pip.
|
|
290
|
+
|
|
291
|
+
Assumes setup_uv_and_python has already run.
|
|
292
|
+
"""
|
|
293
|
+
remote_wheel = f'/tmp/{wheel.name}'
|
|
294
|
+
|
|
295
|
+
info(f'Copying {wheel.name}', host=host)
|
|
296
|
+
await scp_to(wheel, host, remote_wheel)
|
|
297
|
+
|
|
298
|
+
info('Installing sts-libs', host=host)
|
|
299
|
+
if distro.has_modern_python:
|
|
300
|
+
await ssh(host, f'uv pip install --system {remote_wheel} pytest fmf')
|
|
301
|
+
elif distro.needs_uv_python:
|
|
302
|
+
await ssh(
|
|
303
|
+
host,
|
|
304
|
+
f'uv tool install pytest --with {remote_wheel} --with fmf --python 3.12',
|
|
305
|
+
)
|
|
306
|
+
await ensure_pytest_on_path(host)
|
|
307
|
+
else:
|
|
308
|
+
await ssh(host, f'uv pip install --system --python 3.12 {remote_wheel} pytest fmf')
|
|
309
|
+
await ensure_pytest_on_path(host)
|
|
310
|
+
|
|
311
|
+
await ssh(host, f'rm -f {remote_wheel}')
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
# ── Copr MR mode ─────────────────────────────────────────────────────
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
async def install_copr(host: str, distro: Distro, mr: int) -> None:
|
|
318
|
+
"""Enable the packit copr repo for a merge request and dnf-install."""
|
|
319
|
+
chroot = distro.copr_chroot
|
|
320
|
+
if chroot is None:
|
|
321
|
+
err(f'Copr MR install not supported on {distro}', host=host)
|
|
322
|
+
err('Only Fedora and RHEL/EPEL 10+ (x86_64) have copr builds', host=host)
|
|
323
|
+
raise SystemExit(1)
|
|
324
|
+
|
|
325
|
+
copr_repo = f'packit/gitlab.com-rh-kernel-stqe-sts-{mr}'
|
|
326
|
+
info(f'Enabling copr: {copr_repo} ({chroot})', host=host)
|
|
327
|
+
|
|
328
|
+
await ssh(
|
|
329
|
+
host,
|
|
330
|
+
' && '.join(
|
|
331
|
+
[
|
|
332
|
+
"dnf install -y 'dnf*-command(copr)'",
|
|
333
|
+
f'dnf copr enable -y {copr_repo} {chroot}',
|
|
334
|
+
'dnf install -y python3-sts-libs python3-pytest',
|
|
335
|
+
]
|
|
336
|
+
),
|
|
337
|
+
)
|
|
338
|
+
ok(f'Installed python3-sts-libs from MR #{mr}', host=host)
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
# ── Common ───────────────────────────────────────────────────────────
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
async def sync_tests(host: str) -> None:
|
|
345
|
+
"""Sync tests, plans, and .fmf metadata to the remote host."""
|
|
346
|
+
info('Syncing tests, plans, .fmf', host=host)
|
|
347
|
+
await ssh(host, f'mkdir -p {REMOTE_DIR}', check=False)
|
|
348
|
+
await asyncio.gather(
|
|
349
|
+
rsync_to(REPO_ROOT / 'tests', host, f'{REMOTE_DIR}/tests'),
|
|
350
|
+
rsync_to(REPO_ROOT / 'plans', host, f'{REMOTE_DIR}/plans'),
|
|
351
|
+
rsync_to(REPO_ROOT / '.fmf', host, f'{REMOTE_DIR}/.fmf'),
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
async def verify(host: str, distro: Distro) -> None:
|
|
356
|
+
"""Print versions and test file count as a sanity check."""
|
|
357
|
+
python = distro.python_bin
|
|
358
|
+
info('Verifying', host=host)
|
|
359
|
+
result = await ssh(
|
|
360
|
+
host,
|
|
361
|
+
(
|
|
362
|
+
f'set -e; cd {REMOTE_DIR}; '
|
|
363
|
+
f'echo " python: $({python} --version 2>&1)"; '
|
|
364
|
+
f'echo " pytest: $(pytest --version 2>&1 | head -1)"; '
|
|
365
|
+
f"echo \" sts: $({python} -c 'import sts; print(sts.__version__)' 2>/dev/null"
|
|
366
|
+
f" || echo 'installed (pytest env)')\"; "
|
|
367
|
+
f'echo " tests: $(find tests -name \'test_*.py\' | wc -l) test files"'
|
|
368
|
+
),
|
|
369
|
+
)
|
|
370
|
+
for line in result.stdout.splitlines():
|
|
371
|
+
print(f' {line}')
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
async def sync_one(
|
|
375
|
+
host: str,
|
|
376
|
+
*,
|
|
377
|
+
mr: int | None = None,
|
|
378
|
+
wheel_task: asyncio.Task[Path] | None = None,
|
|
379
|
+
) -> bool:
|
|
380
|
+
"""Sync to a single host. Returns True on success.
|
|
381
|
+
|
|
382
|
+
Pipeline within a single host::
|
|
383
|
+
|
|
384
|
+
build_wheel (local) ──────────────────────────────┐
|
|
385
|
+
│ connectivity ─→ detect_distro ─→ setup_uv ──────┤
|
|
386
|
+
│ │ sync tests/plans/.fmf ─────────┤
|
|
387
|
+
└─→ scp + install wheel ───────→ │
|
|
388
|
+
verify ──→ done
|
|
389
|
+
"""
|
|
390
|
+
try:
|
|
391
|
+
if (await ssh(host, 'true', check=False)).returncode != 0:
|
|
392
|
+
err(f'Cannot reach {host} — skipping', host=host)
|
|
393
|
+
return False
|
|
394
|
+
|
|
395
|
+
# Start syncing tests immediately — no dependency on distro or wheel
|
|
396
|
+
sync_task = asyncio.create_task(sync_tests(host))
|
|
397
|
+
|
|
398
|
+
distro = await detect_distro(host)
|
|
399
|
+
info(f'══ {distro} @ {host} ══')
|
|
400
|
+
|
|
401
|
+
if mr is not None:
|
|
402
|
+
await asyncio.gather(install_copr(host, distro, mr), sync_task)
|
|
403
|
+
elif wheel_task is not None:
|
|
404
|
+
# Run uv/python setup while wheel builds locally
|
|
405
|
+
_, wheel = await asyncio.gather(
|
|
406
|
+
setup_uv_and_python(host, distro),
|
|
407
|
+
wheel_task,
|
|
408
|
+
)
|
|
409
|
+
await asyncio.gather(
|
|
410
|
+
copy_and_install_wheel(host, distro, wheel),
|
|
411
|
+
sync_task,
|
|
412
|
+
)
|
|
413
|
+
else:
|
|
414
|
+
await sync_task
|
|
415
|
+
|
|
416
|
+
await verify(host, distro)
|
|
417
|
+
|
|
418
|
+
except subprocess.CalledProcessError as exc:
|
|
419
|
+
err(f'Command failed on {host}: {exc.cmd}', host=host)
|
|
420
|
+
return False
|
|
421
|
+
except RuntimeError as exc:
|
|
422
|
+
err(str(exc), host=host)
|
|
423
|
+
return False
|
|
424
|
+
else:
|
|
425
|
+
ok(f'Done: {distro} @ {host}', host=host)
|
|
426
|
+
info(f" ssh root@{host} 'cd {REMOTE_DIR} && pytest tests/ -m ci'")
|
|
427
|
+
return True
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
# ── CLI ──────────────────────────────────────────────────────────────
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
async def async_main(args: argparse.Namespace) -> int:
|
|
434
|
+
"""Async entry point — fans out to all hosts concurrently."""
|
|
435
|
+
ctrl_dir = tempfile.mkdtemp(prefix='sts-sync-')
|
|
436
|
+
_ssh_mux[:] = [
|
|
437
|
+
'-o',
|
|
438
|
+
'ControlMaster=auto',
|
|
439
|
+
'-o',
|
|
440
|
+
f'ControlPath={ctrl_dir}/%C',
|
|
441
|
+
'-o',
|
|
442
|
+
'ControlPersist=10',
|
|
443
|
+
]
|
|
444
|
+
try:
|
|
445
|
+
wheel_task: asyncio.Task[Path] | None = None
|
|
446
|
+
if not args.mr and not args.no_lib:
|
|
447
|
+
wheel_task = asyncio.create_task(build_wheel())
|
|
448
|
+
|
|
449
|
+
results = await asyncio.gather(
|
|
450
|
+
*(sync_one(host, mr=args.mr, wheel_task=wheel_task) for host in args.hosts),
|
|
451
|
+
)
|
|
452
|
+
|
|
453
|
+
if wheel_task is not None and not wheel_task.done():
|
|
454
|
+
wheel_task.cancel()
|
|
455
|
+
with contextlib.suppress(asyncio.CancelledError):
|
|
456
|
+
await wheel_task
|
|
457
|
+
|
|
458
|
+
print('════════════════════════════════════════════')
|
|
459
|
+
total = len(args.hosts)
|
|
460
|
+
failed = sum(not r for r in results)
|
|
461
|
+
if failed == 0:
|
|
462
|
+
ok(f'All {total} host{"s" if total > 1 else ""} synced successfully')
|
|
463
|
+
return 0
|
|
464
|
+
warn(f'{failed}/{total} hosts failed')
|
|
465
|
+
return 1
|
|
466
|
+
finally:
|
|
467
|
+
_ssh_mux.clear()
|
|
468
|
+
shutil.rmtree(ctrl_dir, ignore_errors=True)
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
def main() -> int:
|
|
472
|
+
"""Entry point."""
|
|
473
|
+
parser = argparse.ArgumentParser(
|
|
474
|
+
description='Sync sts-libs and tests to remote hosts for development',
|
|
475
|
+
epilog=(
|
|
476
|
+
'examples:\n'
|
|
477
|
+
' %(prog)s 10.0.186.174\n'
|
|
478
|
+
' %(prog)s 10.0.186.174 my-beaker-host.example.com\n'
|
|
479
|
+
' %(prog)s -n 10.0.186.174 # tests only\n'
|
|
480
|
+
' %(prog)s --mr 190 10.0.186.174\n'
|
|
481
|
+
),
|
|
482
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
483
|
+
)
|
|
484
|
+
parser.add_argument('hosts', nargs='+', metavar='HOST', help='IP addresses or hostnames')
|
|
485
|
+
parser.add_argument('--mr', type=int, metavar='N', help='install from copr MR repo instead of local wheel')
|
|
486
|
+
parser.add_argument('-n', '--no-lib', action='store_true', help='sync tests only, skip wheel build and install')
|
|
487
|
+
|
|
488
|
+
args = parser.parse_args()
|
|
489
|
+
return asyncio.run(async_main(args))
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
if __name__ == '__main__':
|
|
493
|
+
sys.exit(main())
|
sts_libs-2.4.0/AGENTS.md
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
**sts** is a monorepo for Linux storage testing:
|
|
8
|
+
|
|
9
|
+
- **sts-libs** (`sts_libs/`) — Python library published to PyPI as `sts-libs`, importable as `sts.*`. Contains device models, CLI wrappers, pytest fixtures, and utilities for storage subsystems (LVM, iSCSI, multipath, NVMe, device-mapper, Stratis, etc.).
|
|
10
|
+
- **Storage tests** (`tests/`) — Pytest-based Linux storage tests that run on real hardware/VMs via tmt. These consume sts-libs and its fixtures. Each test directory has a `main.fmf` metadata file for test management. Tests should work both when run directly with pytest and when executed through tmt.
|
|
11
|
+
- **tmt plans** (`plans/`) — Test plan definitions (`.fmf` files) for test discovery, provisioning, and execution.
|
|
12
|
+
|
|
13
|
+
The library source lives in `sts_libs/src/sts/`, unit tests in `sts_libs/tests/`, and storage tests in `tests/`.
|
|
14
|
+
|
|
15
|
+
## Commands
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Install all dependencies (dev + docs groups)
|
|
19
|
+
uv sync --all-groups
|
|
20
|
+
|
|
21
|
+
# Lint and format
|
|
22
|
+
uv run ruff check # lint
|
|
23
|
+
uv run ruff check --fix # lint with auto-fix
|
|
24
|
+
uv run ruff format # format (also formats docstrings)
|
|
25
|
+
|
|
26
|
+
# Type check (basedpyright, not standard pyright)
|
|
27
|
+
uv run basedpyright
|
|
28
|
+
|
|
29
|
+
# Unit tests
|
|
30
|
+
uv run pytest # all unit tests
|
|
31
|
+
uv run pytest -k test_lvm # specific tests
|
|
32
|
+
dev-container/run.sh test # fallback if tests skip/fail due to environment
|
|
33
|
+
|
|
34
|
+
# Build docs
|
|
35
|
+
uv run --group docs mkdocs build # build (check for griffe warnings)
|
|
36
|
+
|
|
37
|
+
# Pre-commit (uses prek, not pre-commit)
|
|
38
|
+
prek install # one-time setup
|
|
39
|
+
prek run -a --skip tmt-lint # run all hooks (skip tmt-lint, slow on full repo)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Architecture
|
|
43
|
+
|
|
44
|
+
### Model Hierarchy
|
|
45
|
+
|
|
46
|
+
All models are Pydantic v2. Two base classes in `sts.models`:
|
|
47
|
+
|
|
48
|
+
- **`StsBaseModel`** — mutable, `extra='forbid'` (catches typos). For device objects.
|
|
49
|
+
- **`ReportModel`** — immutable (`frozen=True`), `extra='ignore'` (tolerates unknown CLI output keys). For parsed CLI snapshots.
|
|
50
|
+
|
|
51
|
+
The device hierarchy: `StsBaseModel` -> `Device` (path, name) -> `StorageDevice` (size, model) -> subsystem classes. Device construction is cheap and side-effect-free — `Device(path='/dev/nonexistent')` succeeds; existence checks happen via `discover()` or subsystem methods.
|
|
52
|
+
|
|
53
|
+
### CLI Execution Pattern
|
|
54
|
+
|
|
55
|
+
`run(cmd)` and `run_argv(argv)` in `sts.utils.cmdline` return `CommandResult` (frozen model with `rc`, `stdout`, `stderr`). Device methods return `CommandResult` for chaining:
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
lv.create(size='1G').assert_ok() # raises STSError on failure
|
|
59
|
+
result = lv.remove() # check result.succeeded / result.failed
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`build_options(**kwargs)` converts keyword arguments to CLI flags (`True` -> `--flag`, strings -> `--key=value`).
|
|
63
|
+
|
|
64
|
+
### Report Pattern
|
|
65
|
+
|
|
66
|
+
Subsystem reports (`LVReport`, `PVReport`, etc.) are frozen `ReportModel` subclasses parsed from CLI JSON output. Mutable device wrappers hold a `.report` field and call `refresh_report()` after state-changing operations.
|
|
67
|
+
|
|
68
|
+
### Fixture Conventions
|
|
69
|
+
|
|
70
|
+
- Storage test fixtures are registered via `pytest_plugins` list in `tests/conftest.py`.
|
|
71
|
+
- Indirect parametrization for device count: `@pytest.mark.parametrize('loop_devices', [2], indirect=True)`.
|
|
72
|
+
- Fixtures yield `list[LoopDevice]`, `VolumeGroup`, etc. — not raw strings.
|
|
73
|
+
- Private/internal fixtures are prefixed with `_` (e.g., `_lvm_test`).
|
|
74
|
+
- Files use `# pyright: reportUnusedFunction=false` because fixtures look unused to static analysis.
|
|
75
|
+
|
|
76
|
+
### Error Hierarchy
|
|
77
|
+
|
|
78
|
+
`STSError` is the base. Each subsystem defines `<Module>Error(STSError)` (e.g., `LvmError`, `StratisError`). `CommandResult.assert_ok()` raises `STSError` on failure.
|
|
79
|
+
|
|
80
|
+
## Code Conventions
|
|
81
|
+
|
|
82
|
+
### Imports
|
|
83
|
+
|
|
84
|
+
Every source file uses `from __future__ import annotations`. Types needed only for static analysis go in `if TYPE_CHECKING:` blocks. Pydantic field types that must exist at runtime are imported normally with `# noqa: TC001`.
|
|
85
|
+
|
|
86
|
+
### Docstrings
|
|
87
|
+
|
|
88
|
+
Keep docstrings lean. Remove `Attributes:` sections from Pydantic models — field names and type annotations are self-documenting. Remove `Args:` sections where parameter names and types are obvious (e.g. `device: str | Path`). Only keep `Args:` when documenting non-obvious valid values (e.g. listing valid policy strings for a `str` parameter). Remove trivial `Example:` blocks. One-line docstrings are preferred for methods. Don't repeat type annotations in docstrings.
|
|
89
|
+
|
|
90
|
+
### Typed Kwargs
|
|
91
|
+
|
|
92
|
+
PEP 692 `Unpack[TypedDict]` is used for typed CLI options (e.g., `**options: Unpack[LvCreateOptions]`). TypedDict definitions live in per-subsystem `options.py` files.
|
|
93
|
+
|
|
94
|
+
### Class Variables
|
|
95
|
+
|
|
96
|
+
Use `ClassVar` for constants that should not become Pydantic fields (e.g., `DEV_PATH`, `TOOL_NAME`, `SUBCOMMAND`).
|
|
97
|
+
|
|
98
|
+
### Field Derivation
|
|
99
|
+
|
|
100
|
+
`model_validator(mode='after')` is used to derive fields (e.g., computing `path` from `name` + `vg`, or `name` from `path`).
|
|
101
|
+
|
|
102
|
+
## Testing
|
|
103
|
+
|
|
104
|
+
- **Unit tests** (`sts_libs/tests/`) — mock-based, patch `subprocess.run`. Run with `uv run pytest`. If tests are skipped or fail due to environment issues, use `dev-container/run.sh test` (may need `dev-container/build.sh` first).
|
|
105
|
+
- **Storage tests** (`tests/`) — actual Linux storage tests, require real hardware/VMs and root. Run via tmt, not in CI.
|
|
106
|
+
- Tests marked `@pytest.mark.destructive` are auto-skipped without root.
|
|
107
|
+
- **Package installation** — use `ensure_installed()` in fixtures rather than tmt `require:` blocks. This lets tests run directly with pytest without tmt.
|
|
108
|
+
|
|
109
|
+
### TMT / FMF Conventions
|
|
110
|
+
|
|
111
|
+
- `component:` should match the subsystem name (e.g. `ahci`, `scsi`, `lvm`). Never use `component: kernel`.
|
|
112
|
+
- Don't add `require:` for packages that fixtures install via `ensure_installed()`.
|
|
113
|
+
|
|
114
|
+
## Tools
|
|
115
|
+
|
|
116
|
+
- **ruff** — linting + formatting (120-char lines, single quotes, Google docstrings)
|
|
117
|
+
- **basedpyright** — strict mode on library source, standard on storage tests, unit tests excluded
|
|
118
|
+
- **prek** — pre-commit hook runner (drop-in replacement for pre-commit)
|
|
119
|
+
- **mkdocs** + mkdocstrings + griffe-pydantic — API docs from docstrings
|