teuthology 1.1.0__tar.gz → 1.2.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.
- teuthology-1.2.0/.coveragerc +2 -0
- teuthology-1.2.0/.dockerignore +3 -0
- teuthology-1.2.0/.github/workflows/ci.yml +40 -0
- teuthology-1.2.0/.github/workflows/dependencies.yml +55 -0
- teuthology-1.2.0/.github/workflows/dev_container.yml +37 -0
- teuthology-1.2.0/.github/workflows/integration.yml +12 -0
- teuthology-1.2.0/.gitignore +32 -0
- teuthology-1.2.0/.gitlab-ci.yml +3 -0
- teuthology-1.2.0/.readthedocs.yml +20 -0
- teuthology-1.2.0/.travis.yml +17 -0
- teuthology-1.2.0/LICENSE +19 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/MANIFEST.in +2 -0
- teuthology-1.2.0/PKG-INFO +89 -0
- teuthology-1.2.0/ansible.cfg +4 -0
- teuthology-1.2.0/beanstalk/alpine/Dockerfile +13 -0
- teuthology-1.2.0/bootstrap +251 -0
- teuthology-1.2.0/build_qemu_image.sh +61 -0
- teuthology-1.2.0/containers/teuthology-dev/.teuthology.yaml +9 -0
- teuthology-1.2.0/containers/teuthology-dev/Dockerfile +42 -0
- teuthology-1.2.0/containers/teuthology-dev/containerized_node.yaml +12 -0
- teuthology-1.2.0/containers/teuthology-dev/teuthology.sh +40 -0
- teuthology-1.2.0/docs/COMPONENTS.rst +71 -0
- teuthology-1.2.0/docs/ChangeLog.rst +6 -0
- teuthology-1.2.0/docs/INSTALL.rst +119 -0
- teuthology-1.2.0/docs/LAB_SETUP.rst +142 -0
- teuthology-1.2.0/docs/Makefile +180 -0
- teuthology-1.2.0/docs/README.rst +149 -0
- teuthology-1.2.0/docs/_static/create_nodes.py +65 -0
- teuthology-1.2.0/docs/_static/nginx_paddles +11 -0
- teuthology-1.2.0/docs/_static/nginx_pulpito +11 -0
- teuthology-1.2.0/docs/_static/nginx_test_logs +7 -0
- teuthology-1.2.0/docs/_static/worker_start.sh +40 -0
- teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Book.eot +0 -0
- teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Book.svg +1 -0
- teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Book.ttf +0 -0
- teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Book.woff +0 -0
- teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Medium.eot +0 -0
- teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Medium.svg +1 -0
- teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Medium.ttf +0 -0
- teuthology-1.2.0/docs/_themes/ceph/static/font/ApexSans-Medium.woff +0 -0
- teuthology-1.2.0/docs/_themes/ceph/static/nature.css_t +325 -0
- teuthology-1.2.0/docs/_themes/ceph/theme.conf +4 -0
- teuthology-1.2.0/docs/cephlab.png +0 -0
- teuthology-1.2.0/docs/cephlab.svg +3 -0
- teuthology-1.2.0/docs/commands/list.rst +9 -0
- teuthology-1.2.0/docs/commands/teuthology-describe.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-dispatcher.rst +9 -0
- teuthology-1.2.0/docs/commands/teuthology-kill.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-lock.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-ls.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-openstack.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-prune-logs.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-queue.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-reimage.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-report.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-results.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-schedule.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-suite.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-update-inventory.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-updatekeys.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-wait.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology-worker.rst +4 -0
- teuthology-1.2.0/docs/commands/teuthology.rst +4 -0
- teuthology-1.2.0/docs/conf.py +262 -0
- teuthology-1.2.0/docs/detailed_test_config.rst +309 -0
- teuthology-1.2.0/docs/docker-compose/README.md +93 -0
- teuthology-1.2.0/docs/docker-compose/db/01-init.sh +8 -0
- teuthology-1.2.0/docs/docker-compose/docker-compose.yml +92 -0
- teuthology-1.2.0/docs/docker-compose/start.sh +48 -0
- teuthology-1.2.0/docs/docker-compose/testnode/Dockerfile +26 -0
- teuthology-1.2.0/docs/docker-compose/testnode/testnode_start.sh +17 -0
- teuthology-1.2.0/docs/docker-compose/testnode/testnode_stop.sh +9 -0
- teuthology-1.2.0/docs/docker-compose/testnode/testnode_sudoers +4 -0
- teuthology-1.2.0/docs/docker-compose/teuthology/.teuthology.yaml +9 -0
- teuthology-1.2.0/docs/docker-compose/teuthology/Dockerfile +47 -0
- teuthology-1.2.0/docs/docker-compose/teuthology/containerized_node.yaml +8 -0
- teuthology-1.2.0/docs/docker-compose/teuthology/teuthology.sh +46 -0
- teuthology-1.2.0/docs/downburst_vms.rst +89 -0
- teuthology-1.2.0/docs/exporter.rst +67 -0
- teuthology-1.2.0/docs/fragment_merging.rst +318 -0
- teuthology-1.2.0/docs/index.rst +26 -0
- teuthology-1.2.0/docs/intro_testers.rst +81 -0
- teuthology-1.2.0/docs/laptop/README.md +434 -0
- teuthology-1.2.0/docs/laptop/default-pool.xml +7 -0
- teuthology-1.2.0/docs/laptop/front.xml +15 -0
- teuthology-1.2.0/docs/laptop/hosts +7 -0
- teuthology-1.2.0/docs/laptop/ssh_config +6 -0
- teuthology-1.2.0/docs/laptop/targets.sql +9 -0
- teuthology-1.2.0/docs/laptop/teuthology.yaml +30 -0
- teuthology-1.2.0/docs/libcloud_backend.rst +43 -0
- teuthology-1.2.0/docs/openstack_backend.rst +214 -0
- teuthology-1.2.0/docs/requirements.txt +3 -0
- teuthology-1.2.0/docs/siteconfig.rst +260 -0
- teuthology-1.2.0/examples/3node_ceph.yaml +15 -0
- teuthology-1.2.0/examples/3node_rgw.yaml +24 -0
- teuthology-1.2.0/examples/parallel_example.yaml +20 -0
- teuthology-1.2.0/hammer.sh +32 -0
- teuthology-1.2.0/openstack-delegate.sh +7 -0
- teuthology-1.2.0/pyproject.toml +10 -0
- teuthology-1.2.0/pytest.ini +5 -0
- teuthology-1.2.0/requirements.txt +206 -0
- teuthology-1.2.0/requirements.yml +12 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/describe.py +1 -0
- teuthology-1.2.0/scripts/dispatcher.py +62 -0
- teuthology-1.2.0/scripts/exporter.py +18 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/lock.py +1 -1
- teuthology-1.2.0/scripts/node_cleanup.py +58 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/openstack.py +9 -9
- teuthology-1.2.0/scripts/results.py +25 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/schedule.py +4 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/suite.py +57 -16
- teuthology-1.2.0/scripts/supervisor.py +44 -0
- teuthology-1.2.0/scripts/test/script.py +16 -0
- teuthology-1.2.0/scripts/test/test_dispatcher_.py +5 -0
- teuthology-1.2.0/scripts/test/test_exporter_.py +5 -0
- teuthology-1.2.0/scripts/test/test_lock.py +5 -0
- teuthology-1.2.0/scripts/test/test_ls.py +15 -0
- teuthology-1.2.0/scripts/test/test_prune_logs.py +5 -0
- teuthology-1.2.0/scripts/test/test_report.py +5 -0
- teuthology-1.2.0/scripts/test/test_results.py +5 -0
- teuthology-1.2.0/scripts/test/test_run.py +45 -0
- teuthology-1.2.0/scripts/test/test_schedule.py +5 -0
- teuthology-1.2.0/scripts/test/test_suite.py +5 -0
- teuthology-1.2.0/scripts/test/test_supervisor_.py +5 -0
- teuthology-1.2.0/scripts/test/test_updatekeys.py +21 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/update_inventory.py +10 -4
- teuthology-1.2.0/setup.cfg +156 -0
- teuthology-1.2.0/systemd/teuthology-dispatcher@.service +18 -0
- teuthology-1.2.0/systemd/teuthology-exporter.service +12 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/__init__.py +24 -26
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/beanstalk.py +4 -3
- teuthology-1.2.0/teuthology/ceph.conf.template +101 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/config.py +16 -6
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/contextutil.py +18 -14
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/describe_tests.py +25 -18
- teuthology-1.2.0/teuthology/dispatcher/__init__.py +365 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/dispatcher/supervisor.py +140 -58
- teuthology-1.2.0/teuthology/dispatcher/test/test_dispatcher.py +203 -0
- teuthology-1.2.0/teuthology/dispatcher/test/test_reimage_error_mark_machine_down.py +104 -0
- teuthology-1.2.0/teuthology/dispatcher/test/test_supervisor.py +117 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/exceptions.py +43 -0
- teuthology-1.2.0/teuthology/exporter.py +347 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/kill.py +76 -81
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/cli.py +3 -3
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/ops.py +135 -61
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/query.py +61 -44
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/ls.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/misc.py +61 -75
- teuthology-1.2.0/teuthology/nuke/__init__.py +20 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/__init__.py +4 -3
- teuthology-1.2.0/teuthology/openstack/bootstrap-teuthology.sh +33 -0
- teuthology-1.2.0/teuthology/openstack/openstack-basic.yaml +15 -0
- teuthology-1.2.0/teuthology/openstack/openstack-buildpackages.yaml +10 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-centos-7.0-user-data.txt +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-centos-7.1-user-data.txt +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-centos-7.2-user-data.txt +1 -1
- teuthology-1.2.0/teuthology/openstack/openstack-centos-7.3-user-data.txt +21 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-debian-8.0-user-data.txt +1 -1
- teuthology-1.2.0/teuthology/openstack/openstack-opensuse-15.0-user-data.txt +26 -0
- teuthology-1.2.0/teuthology/openstack/openstack-opensuse-15.1-user-data.txt +26 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-opensuse-42.1-user-data.txt +1 -1
- teuthology-1.2.0/teuthology/openstack/openstack-opensuse-42.2-user-data.txt +28 -0
- teuthology-1.2.0/teuthology/openstack/openstack-opensuse-42.3-user-data.txt +27 -0
- teuthology-1.2.0/teuthology/openstack/openstack-sle-12.1-user-data.txt +25 -0
- teuthology-1.2.0/teuthology/openstack/openstack-sle-12.2-user-data.txt +27 -0
- teuthology-1.2.0/teuthology/openstack/openstack-sle-12.3-user-data.txt +24 -0
- teuthology-1.2.0/teuthology/openstack/openstack-sle-15.0-user-data.txt +25 -0
- teuthology-1.2.0/teuthology/openstack/openstack-sle-15.1-user-data.txt +37 -0
- teuthology-1.2.0/teuthology/openstack/openstack-teuthology.cron +1 -0
- teuthology-1.2.0/teuthology/openstack/openstack-ubuntu-14.04-user-data.txt +21 -0
- teuthology-1.2.0/teuthology/openstack/openstack-ubuntu-16.04-user-data.txt +21 -0
- teuthology-1.2.0/teuthology/openstack/test/archive-on-error.yaml +1 -0
- teuthology-1.2.0/teuthology/openstack/test/noop.yaml +12 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/test/openstack-integration.py +3 -46
- teuthology-1.2.0/teuthology/openstack/test/resources_hint.yaml +25 -0
- teuthology-1.2.0/teuthology/openstack/test/resources_hint_no_cinder.yaml +20 -0
- teuthology-1.2.0/teuthology/openstack/test/stop_worker.yaml +1 -0
- teuthology-1.2.0/teuthology/openstack/test/suites/noop/noop.yaml +9 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/test/test_config.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/test/test_openstack.py +7 -7
- teuthology-1.2.0/teuthology/openstack/test/user-data-test1.txt +5 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/cluster.py +49 -7
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/connection.py +16 -5
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/console.py +111 -50
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/cephadmunit.py +17 -4
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/state.py +8 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/systemd.py +4 -4
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/opsys.py +30 -11
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/remote.py +405 -338
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/run.py +3 -3
- teuthology-1.2.0/teuthology/orchestra/test/files/daemon-systemdstate-pid-ps-ef.output +5 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/integration/test_integration.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_cluster.py +66 -74
- teuthology-1.2.0/teuthology/orchestra/test/test_connection.py +119 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_console.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_opsys.py +24 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_remote.py +50 -13
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_run.py +2 -2
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/packaging.py +19 -16
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/__init__.py +30 -10
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/cloud/openstack.py +12 -6
- teuthology-1.2.0/teuthology/provision/cloud/test/test_base.py +90 -0
- teuthology-1.2.0/teuthology/provision/cloud/test/test_cloud_init.py +60 -0
- teuthology-1.2.0/teuthology/provision/cloud/test/test_cloud_util.py +172 -0
- teuthology-1.2.0/teuthology/provision/cloud/test/test_openstack.py +781 -0
- teuthology-1.2.0/teuthology/provision/cloud/test/test_openstack_userdata_conf.yaml +24 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/cloud/util.py +1 -2
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/downburst.py +4 -3
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/fog.py +68 -20
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/openstack.py +5 -4
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/pelagos.py +1 -1
- teuthology-1.2.0/teuthology/provision/test/test_downburst.py +105 -0
- teuthology-1.2.0/teuthology/provision/test/test_fog.py +339 -0
- teuthology-1.2.0/teuthology/provision/test/test_init_provision.py +46 -0
- teuthology-1.2.0/teuthology/provision/test/test_pelagos.py +46 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/repo_utils.py +43 -13
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/report.py +57 -35
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/results.py +5 -3
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/run.py +13 -14
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/run_tasks.py +27 -43
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/schedule.py +4 -3
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/scrape.py +28 -22
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/__init__.py +74 -45
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/build_matrix.py +34 -24
- teuthology-1.2.0/teuthology/suite/fragment-merge.lua +105 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/matrix.py +31 -2
- teuthology-1.2.0/teuthology/suite/merge.py +175 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/placeholder.py +6 -9
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/run.py +175 -100
- teuthology-1.2.0/teuthology/suite/test/conftest.py +4 -0
- teuthology-1.2.0/teuthology/suite/test/suites/noop/noop.yaml +7 -0
- teuthology-1.2.0/teuthology/suite/test/test_build_matrix.py +815 -0
- teuthology-1.2.0/teuthology/suite/test/test_init.py +267 -0
- teuthology-1.2.0/teuthology/suite/test/test_matrix.py +82 -0
- teuthology-1.2.0/teuthology/suite/test/test_merge.py +231 -0
- teuthology-1.2.0/teuthology/suite/test/test_placeholder.py +57 -0
- teuthology-1.2.0/teuthology/suite/test/test_run_.py +402 -0
- teuthology-1.2.0/teuthology/suite/test/test_util.py +267 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/suite/util.py +64 -218
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/__init__.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/ansible.py +101 -32
- teuthology-1.2.0/teuthology/task/buildpackages/Makefile +84 -0
- teuthology-1.2.0/teuthology/task/buildpackages/centos-6.5-user-data.txt +15 -0
- teuthology-1.2.0/teuthology/task/buildpackages/centos-7.0-user-data.txt +10 -0
- teuthology-1.2.0/teuthology/task/buildpackages/centos-7.1-user-data.txt +10 -0
- teuthology-1.2.0/teuthology/task/buildpackages/centos-7.2-user-data.txt +10 -0
- teuthology-1.2.0/teuthology/task/buildpackages/centos-7.3-user-data.txt +10 -0
- teuthology-1.2.0/teuthology/task/buildpackages/common.sh +169 -0
- teuthology-1.2.0/teuthology/task/buildpackages/debian-8.0-user-data.txt +12 -0
- teuthology-1.2.0/teuthology/task/buildpackages/make-deb.sh +160 -0
- teuthology-1.2.0/teuthology/task/buildpackages/make-rpm.sh +294 -0
- teuthology-1.2.0/teuthology/task/buildpackages/opensuse-15.0-user-data.txt +16 -0
- teuthology-1.2.0/teuthology/task/buildpackages/opensuse-42.1-user-data.txt +13 -0
- teuthology-1.2.0/teuthology/task/buildpackages/opensuse-42.2-user-data.txt +14 -0
- teuthology-1.2.0/teuthology/task/buildpackages/opensuse-42.3-user-data.txt +14 -0
- teuthology-1.2.0/teuthology/task/buildpackages/sle-12.1-user-data.txt +14 -0
- teuthology-1.2.0/teuthology/task/buildpackages/sle-12.2-user-data.txt +14 -0
- teuthology-1.2.0/teuthology/task/buildpackages/sle-12.3-user-data.txt +14 -0
- teuthology-1.2.0/teuthology/task/buildpackages/sle-15.0-user-data.txt +14 -0
- teuthology-1.2.0/teuthology/task/buildpackages/ubuntu-12.04-user-data.txt +10 -0
- teuthology-1.2.0/teuthology/task/buildpackages/ubuntu-14.04-user-data.txt +10 -0
- teuthology-1.2.0/teuthology/task/buildpackages/ubuntu-16.04-user-data.txt +10 -0
- teuthology-1.2.0/teuthology/task/buildpackages/user-data.txt +10 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/buildpackages.py +2 -2
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/ceph_ansible.py +13 -6
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/cephmetrics.py +2 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/clock.py +33 -14
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/exec.py +18 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/hadoop.py +2 -2
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/__init__.py +29 -7
- teuthology-1.2.0/teuthology/task/install/bin/adjust-ulimits +16 -0
- teuthology-1.2.0/teuthology/task/install/bin/daemon-helper +114 -0
- teuthology-1.2.0/teuthology/task/install/bin/stdin-killer +263 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/deb.py +1 -1
- teuthology-1.2.0/teuthology/task/install/packages.yaml +37 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/rpm.py +17 -5
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/util.py +3 -3
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/__init__.py +41 -10
- teuthology-1.2.0/teuthology/task/internal/edit_sudoers.sh +10 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/lock_machines.py +2 -9
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/redhat.py +31 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/syslog.py +31 -8
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/kernel.py +152 -145
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/lockfile.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/mpi.py +10 -10
- teuthology-1.2.0/teuthology/task/pcp.j2 +15 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/pcp.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/selinux.py +16 -8
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/ssh_keys.py +4 -4
- teuthology-1.2.0/teuthology/task/tests/__init__.py +170 -0
- teuthology-1.2.0/teuthology/task/tests/test_fetch_coredumps.py +116 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/tests/test_run.py +4 -4
- teuthology-1.2.0/teuthology/templates/email-sleep-before-teardown.jinja2 +10 -0
- teuthology-1.2.0/teuthology/templates/rocketchat-sleep-before-teardown.jinja2 +6 -0
- teuthology-1.2.0/teuthology/test/__init__.py +9 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/fake_fs.py +2 -4
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/integration/test_suite.py +20 -20
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/__init__.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_ansible.py +68 -33
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_ceph_ansible.py +2 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_console_log.py +14 -10
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_install.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_internal.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_kernel.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_pcp.py +2 -2
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/task/test_selinux.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_config.py +4 -4
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_contextutil.py +30 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_describe_tests.py +3 -2
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_email_sleep_before_teardown.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_exit.py +2 -9
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_get_distro.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_get_distro_version.py +3 -3
- teuthology-1.2.0/teuthology/test/test_imports.py +31 -0
- teuthology-1.2.0/teuthology/test/test_kill.py +46 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_misc.py +18 -29
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_packaging.py +136 -105
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_repo_utils.py +48 -23
- teuthology-1.2.0/teuthology/test/test_report.py +86 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_results.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_run.py +14 -9
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_vps_os_vers_parameter_checking.py +1 -1
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/timer.py +3 -3
- teuthology-1.2.0/teuthology/util/__init__.py +0 -0
- teuthology-1.2.0/teuthology/util/loggerfile.py +19 -0
- teuthology-1.2.0/teuthology/util/scanner.py +159 -0
- teuthology-1.2.0/teuthology/util/sentry.py +52 -0
- teuthology-1.2.0/teuthology/util/test/files/test_unit_test.xml +7 -0
- teuthology-1.2.0/teuthology/util/test/files/test_valgrind.xml +31 -0
- teuthology-1.2.0/teuthology/util/test/test_scanner.py +191 -0
- teuthology-1.2.0/teuthology/util/test/test_time.py +54 -0
- teuthology-1.2.0/teuthology/util/time.py +52 -0
- teuthology-1.2.0/teuthology.egg-info/PKG-INFO +89 -0
- teuthology-1.2.0/teuthology.egg-info/SOURCES.txt +422 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology.egg-info/entry_points.txt +3 -2
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology.egg-info/requires.txt +40 -28
- teuthology-1.2.0/tox.ini +82 -0
- teuthology-1.2.0/update-requirements.sh +3 -0
- teuthology-1.2.0/watch-suite.sh +4 -0
- teuthology-1.1.0/PKG-INFO +0 -33
- teuthology-1.1.0/requirements.txt +0 -336
- teuthology-1.1.0/scripts/dispatcher.py +0 -33
- teuthology-1.1.0/scripts/nuke.py +0 -47
- teuthology-1.1.0/scripts/results.py +0 -24
- teuthology-1.1.0/scripts/worker.py +0 -37
- teuthology-1.1.0/setup.cfg +0 -4
- teuthology-1.1.0/setup.py +0 -138
- teuthology-1.1.0/teuthology/dispatcher/__init__.py +0 -190
- teuthology-1.1.0/teuthology/nuke/__init__.py +0 -361
- teuthology-1.1.0/teuthology/nuke/actions.py +0 -456
- teuthology-1.1.0/teuthology/openstack/openstack-teuthology.cron +0 -2
- teuthology-1.1.0/teuthology/orchestra/test/test_connection.py +0 -106
- teuthology-1.1.0/teuthology/task/tests/__init__.py +0 -110
- teuthology-1.1.0/teuthology/test/test_nuke.py +0 -290
- teuthology-1.1.0/teuthology/test/test_report.py +0 -77
- teuthology-1.1.0/teuthology/test/test_worker.py +0 -303
- teuthology-1.1.0/teuthology/worker.py +0 -354
- teuthology-1.1.0/teuthology.egg-info/PKG-INFO +0 -33
- teuthology-1.1.0/teuthology.egg-info/SOURCES.txt +0 -217
- {teuthology-1.1.0 → teuthology-1.2.0}/README.rst +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/__init__.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/kill.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/ls.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/prune_logs.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/queue.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/reimage.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/report.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/run.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/updatekeys.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/scripts/wait.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/exit.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/job_status.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/__init__.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/test/__init__.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/test/test_lock.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/lock/util.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/archive-key +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/archive-key.pub +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-centos-6.5-user-data.txt +0 -0
- /teuthology-1.1.0/teuthology/openstack/openstack-ubuntu-14.04-user-data.txt → /teuthology-1.2.0/teuthology/openstack/openstack-debian-7.0-user-data.txt +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-teuthology.init +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-ubuntu-12.04-user-data.txt +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/openstack-user-data.txt +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/setup-openstack.sh +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/openstack/test/__init__.py +0 -0
- /teuthology-1.1.0/teuthology/orchestra/__init__.py → /teuthology-1.2.0/teuthology/openstack/test/suites/noop/+ +0 -0
- /teuthology-1.1.0/teuthology/orchestra/test/__init__.py → /teuthology-1.2.0/teuthology/openstack/test/suites/nuke/+ +0 -0
- {teuthology-1.1.0/teuthology/orchestra/test/integration → teuthology-1.2.0/teuthology/orchestra}/__init__.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/__init__.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/daemon/group.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/monkey.py +0 -0
- {teuthology-1.1.0/teuthology → teuthology-1.2.0/teuthology/orchestra}/test/__init__.py +0 -0
- {teuthology-1.1.0/teuthology → teuthology-1.2.0/teuthology/orchestra}/test/integration/__init__.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/test_systemd.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/orchestra/test/util.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/parallel.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/cloud/__init__.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/provision/cloud/base.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/prune.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/reimage.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/safepath.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/args.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/background_exec.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/common_fs_utils.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/console_log.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/dump_ctx.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/full_sequential.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/full_sequential_finally.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/install/redhat.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/interactive.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/check_lock.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/git_ignore_ssl.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/internal/vm_setup.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/iscsi.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/knfsd.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/localdir.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/loop.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/nfs.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/nop.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/parallel.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/parallel_example.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/pexec.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/print.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/proc_thrasher.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/sequential.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/sleep.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/tasktest.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/tests/test_locking.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/task/timer.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/fake_archive.py +0 -0
- {teuthology-1.1.0/teuthology/util → teuthology-1.2.0/teuthology/test/integration}/__init__.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_get_multi_machine_types.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_job_status.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_ls.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_parallel.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_safepath.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_schedule.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_scrape.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/test/test_timer.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/util/compat.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology/util/flock.py +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology.egg-info/dependency_links.txt +0 -0
- {teuthology-1.1.0 → teuthology-1.2.0}/teuthology.egg-info/top_level.txt +0 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
branches:
|
6
|
+
- main
|
7
|
+
workflow_dispatch:
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
name: CI on python${{ matrix.python }} via ${{ matrix.os }}
|
12
|
+
runs-on: ${{ matrix.os }}
|
13
|
+
strategy:
|
14
|
+
matrix:
|
15
|
+
include:
|
16
|
+
- os: ubuntu-20.04
|
17
|
+
python: "3.10"
|
18
|
+
- os: ubuntu-22.04
|
19
|
+
python: "3.10"
|
20
|
+
- os: ubuntu-22.04
|
21
|
+
python: "3.11"
|
22
|
+
- os: ubuntu-24.04
|
23
|
+
python: "3.12"
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v4
|
26
|
+
- name: Add deadsnakes PPA
|
27
|
+
if: matrix.os == 'ubuntu-20.04'
|
28
|
+
run: sudo add-apt-repository --yes ppa:deadsnakes/ppa
|
29
|
+
- name: Setup Python
|
30
|
+
uses: actions/setup-python@v5
|
31
|
+
with:
|
32
|
+
python-version: ${{ matrix.python }}
|
33
|
+
- name: Install tox
|
34
|
+
run: pip install tox
|
35
|
+
- name: Run flake8
|
36
|
+
run: tox -e flake8
|
37
|
+
- name: Run unit tests
|
38
|
+
run: tox -e py3
|
39
|
+
- name: Run docs build
|
40
|
+
run: tox -e docs
|
@@ -0,0 +1,55 @@
|
|
1
|
+
name: dependencies
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
branches:
|
6
|
+
- main
|
7
|
+
workflow_dispatch:
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
upgrade:
|
11
|
+
name: Test dependencies
|
12
|
+
runs-on: ${{ matrix.os }}
|
13
|
+
strategy:
|
14
|
+
matrix:
|
15
|
+
include:
|
16
|
+
- os: ubuntu-20.04
|
17
|
+
python: "3.10"
|
18
|
+
- os: ubuntu-22.04
|
19
|
+
python: "3.10"
|
20
|
+
- os: ubuntu-22.04
|
21
|
+
python: "3.11"
|
22
|
+
steps:
|
23
|
+
- name: Add deadsnakes PPA
|
24
|
+
if: matrix.os == 'ubuntu-20.04'
|
25
|
+
run: sudo add-apt-repository --yes ppa:deadsnakes/ppa
|
26
|
+
- name: Set up Python
|
27
|
+
uses: actions/setup-python@v5
|
28
|
+
with:
|
29
|
+
python-version: ${{ matrix.python }}
|
30
|
+
- name: Checkout default branch
|
31
|
+
uses: actions/checkout@v4
|
32
|
+
with:
|
33
|
+
ref: main
|
34
|
+
path: teuthology
|
35
|
+
- name: virtualenv
|
36
|
+
run: |
|
37
|
+
pip install --user virtualenv
|
38
|
+
virtualenv ./virtualenv
|
39
|
+
cd ./virtualenv/lib/python*
|
40
|
+
touch no-global-site-packages.txt
|
41
|
+
working-directory: ./teuthology
|
42
|
+
- name: Initial bootstrap
|
43
|
+
run: ./bootstrap install
|
44
|
+
working-directory: ./teuthology
|
45
|
+
- name: Move initial repository
|
46
|
+
run: mv teuthology teuthology.orig
|
47
|
+
- name: Checkout desired ref
|
48
|
+
uses: actions/checkout@v4
|
49
|
+
with:
|
50
|
+
path: teuthology
|
51
|
+
- name: Move virtualenv to new checkout
|
52
|
+
run: mv ./teuthology.orig/virtualenv ./teuthology/
|
53
|
+
- name: Re-run bootstrap
|
54
|
+
run: ./bootstrap install
|
55
|
+
working-directory: ./teuthology
|
@@ -0,0 +1,37 @@
|
|
1
|
+
---
|
2
|
+
name: dev_container
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- main
|
7
|
+
workflow_dispatch:
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
docker:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
steps:
|
13
|
+
- name: Checkout
|
14
|
+
uses: actions/checkout@v4
|
15
|
+
- name: Set up QEMU
|
16
|
+
uses: docker/setup-qemu-action@v3
|
17
|
+
- name: Set up Docker Buildx
|
18
|
+
uses: docker/setup-buildx-action@v3
|
19
|
+
- name: Login to Quay.io
|
20
|
+
uses: docker/login-action@v3
|
21
|
+
with:
|
22
|
+
registry: quay.io
|
23
|
+
username: ${{ secrets.QUAY_USERNAME }}
|
24
|
+
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
|
25
|
+
- name: Build and push
|
26
|
+
uses: docker/build-push-action@v5
|
27
|
+
env:
|
28
|
+
QUAY_URI: quay.io/ceph-infra/teuthology-dev
|
29
|
+
QUAY_TAG: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
|
30
|
+
with:
|
31
|
+
context: .
|
32
|
+
file: containers/teuthology-dev/Dockerfile
|
33
|
+
platforms: linux/amd64,linux/arm64
|
34
|
+
push: true
|
35
|
+
tags: ${{ env.QUAY_URI }}:${{ env.QUAY_TAG }}
|
36
|
+
outputs: type=image,name=target
|
37
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
*~
|
2
|
+
.#*
|
3
|
+
## the next line needs to start with a backslash to avoid looking like
|
4
|
+
## a comment
|
5
|
+
\#*#
|
6
|
+
.*.swp
|
7
|
+
|
8
|
+
*.pyc
|
9
|
+
*.pyo
|
10
|
+
.tox
|
11
|
+
|
12
|
+
/*.egg-info
|
13
|
+
/virtualenv
|
14
|
+
/build
|
15
|
+
/*.yaml
|
16
|
+
docs/build
|
17
|
+
|
18
|
+
.ropeproject
|
19
|
+
.coverage
|
20
|
+
|
21
|
+
# autogenerated docs from sphinx-apidoc
|
22
|
+
docs/modules.rst
|
23
|
+
docs/teuthology.rst
|
24
|
+
docs/teuthology.*.rst
|
25
|
+
|
26
|
+
# PyCharm
|
27
|
+
.idea
|
28
|
+
|
29
|
+
# vscode
|
30
|
+
.vscode/
|
31
|
+
|
32
|
+
.ansible
|
@@ -0,0 +1,20 @@
|
|
1
|
+
---
|
2
|
+
# Read the Docs configuration file
|
3
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
4
|
+
|
5
|
+
version: 2
|
6
|
+
formats: []
|
7
|
+
build:
|
8
|
+
os: ubuntu-22.04
|
9
|
+
tools:
|
10
|
+
python: "3.10"
|
11
|
+
python:
|
12
|
+
install:
|
13
|
+
- method: pip
|
14
|
+
path: .
|
15
|
+
extra_requirements:
|
16
|
+
- orchestra
|
17
|
+
- requirements: docs/requirements.txt
|
18
|
+
sphinx:
|
19
|
+
builder: html
|
20
|
+
configuration: docs/conf.py
|
teuthology-1.2.0/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2014 Red Hat, Inc.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
@@ -0,0 +1,89 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: teuthology
|
3
|
+
Version: 1.2.0
|
4
|
+
Summary: Ceph test framework
|
5
|
+
Home-page: https://github.com/ceph/teuthology
|
6
|
+
Author: Ceph Community
|
7
|
+
License: MIT
|
8
|
+
Keywords: teuthology,test,ceph,cluster
|
9
|
+
Classifier: Intended Audience :: Developers
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
11
|
+
Classifier: Natural Language :: English
|
12
|
+
Classifier: Operating System :: POSIX :: Linux
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
14
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
18
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
19
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
20
|
+
Classifier: Topic :: Software Development :: Testing
|
21
|
+
Classifier: Topic :: System :: Distributed Computing
|
22
|
+
Classifier: Topic :: System :: Filesystems
|
23
|
+
Requires-Python: >=3.10
|
24
|
+
Description-Content-Type: text/x-rst
|
25
|
+
License-File: LICENSE
|
26
|
+
Requires-Dist: PyYAML
|
27
|
+
Requires-Dist: ansible-core==2.16.6
|
28
|
+
Requires-Dist: apache-libcloud
|
29
|
+
Requires-Dist: backports.ssl-match-hostname
|
30
|
+
Requires-Dist: beanstalkc3>=0.4.0
|
31
|
+
Requires-Dist: configobj
|
32
|
+
Requires-Dist: configparser
|
33
|
+
Requires-Dist: cryptography==41.0.7
|
34
|
+
Requires-Dist: docopt
|
35
|
+
Requires-Dist: gevent
|
36
|
+
Requires-Dist: httplib2
|
37
|
+
Requires-Dist: humanfriendly
|
38
|
+
Requires-Dist: lupa
|
39
|
+
Requires-Dist: lxml
|
40
|
+
Requires-Dist: ndg-httpsclient
|
41
|
+
Requires-Dist: netaddr
|
42
|
+
Requires-Dist: paramiko
|
43
|
+
Requires-Dist: pexpect
|
44
|
+
Requires-Dist: pip-tools
|
45
|
+
Requires-Dist: prettytable
|
46
|
+
Requires-Dist: prometheus_client>=0.16.0
|
47
|
+
Requires-Dist: psutil>=2.1.0
|
48
|
+
Requires-Dist: pyasn1
|
49
|
+
Requires-Dist: pynacl>=1.5.0
|
50
|
+
Requires-Dist: pyopenssl>=0.13
|
51
|
+
Requires-Dist: python-dateutil
|
52
|
+
Requires-Dist: requests>2.13.0
|
53
|
+
Requires-Dist: sentry-sdk
|
54
|
+
Requires-Dist: types-psutil
|
55
|
+
Requires-Dist: urllib3<1.27,>=1.25.4
|
56
|
+
Provides-Extra: manhole
|
57
|
+
Requires-Dist: manhole; extra == "manhole"
|
58
|
+
Provides-Extra: rocketchat
|
59
|
+
Requires-Dist: rocket-python>=1.2.15; extra == "rocketchat"
|
60
|
+
Provides-Extra: sentry
|
61
|
+
Requires-Dist: sentry-sdk; extra == "sentry"
|
62
|
+
Provides-Extra: test
|
63
|
+
Requires-Dist: PyJWT; extra == "test"
|
64
|
+
Requires-Dist: boto>=2.0b4; extra == "test"
|
65
|
+
Requires-Dist: boto3; extra == "test"
|
66
|
+
Requires-Dist: coverage; extra == "test"
|
67
|
+
Requires-Dist: ipy; extra == "test"
|
68
|
+
Requires-Dist: mock; extra == "test"
|
69
|
+
Requires-Dist: pynose; extra == "test"
|
70
|
+
Requires-Dist: pytest; extra == "test"
|
71
|
+
Requires-Dist: pytest-cov; extra == "test"
|
72
|
+
Requires-Dist: toml; extra == "test"
|
73
|
+
Requires-Dist: tox; extra == "test"
|
74
|
+
Requires-Dist: xmltodict; extra == "test"
|
75
|
+
Provides-Extra: openstack
|
76
|
+
Requires-Dist: python-openstackclient; extra == "openstack"
|
77
|
+
Requires-Dist: python-novaclient; extra == "openstack"
|
78
|
+
|
79
|
+
===================================================
|
80
|
+
`Teuthology` -- The Ceph integration test framework
|
81
|
+
===================================================
|
82
|
+
|
83
|
+
|
84
|
+
Welcome! Teuthology's documentation is primarily hosted at `docs.ceph.com
|
85
|
+
<https://docs.ceph.com/projects/teuthology/>`__.
|
86
|
+
|
87
|
+
You can also look at docs `inside this repository <docs/>`__, but note that
|
88
|
+
GitHub's `RST <http://docutils.sourceforge.net/rst.html>`__ rendering is quite
|
89
|
+
limited. Mainly that means that links between documents will be broken.
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# For beanstalkd 1.12 use edge branch
|
2
|
+
#FROM alpine:edge
|
3
|
+
|
4
|
+
FROM alpine:3.12.3
|
5
|
+
|
6
|
+
MAINTAINER Kyrylo Shatskyy <kyrylo.shatskyy@suse.com>
|
7
|
+
|
8
|
+
RUN apk update && apk add beanstalkd beanstalkd-doc
|
9
|
+
|
10
|
+
ENV BEANSTALK_ADDR "0.0.0.0"
|
11
|
+
ENV BEANSTALK_PORT "11300"
|
12
|
+
|
13
|
+
CMD /usr/bin/beanstalkd -V -l $BEANSTALK_ADDR -p $BEANSTALK_PORT
|
@@ -0,0 +1,251 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
if [ $# -eq 0 ]; then
|
4
|
+
install=false
|
5
|
+
else
|
6
|
+
if [ "$1" = "install" ]; then
|
7
|
+
install=true
|
8
|
+
else
|
9
|
+
echo "Invalid command, supported commands are: 'install'"
|
10
|
+
exit 1
|
11
|
+
fi
|
12
|
+
fi
|
13
|
+
|
14
|
+
if [[ "$PYTHON" =~ "python2" ]]; then
|
15
|
+
echo "python2 is not supported." >&2
|
16
|
+
exit 1
|
17
|
+
fi
|
18
|
+
|
19
|
+
# Use the newest version we find
|
20
|
+
if [ -z "$PYTHON" ]; then
|
21
|
+
for i in 12 11 10; do
|
22
|
+
command -v "python3.$i" && PYTHON="python3.$i" && break
|
23
|
+
done
|
24
|
+
fi
|
25
|
+
if [ -z "$PYTHON" ]; then
|
26
|
+
# This would be bizarre, but I suppose possible
|
27
|
+
PYTHON=${PYTHON:-"python3"}
|
28
|
+
fi
|
29
|
+
|
30
|
+
case "$(uname -s)" in
|
31
|
+
Linux)
|
32
|
+
if command -v lsb_release; then
|
33
|
+
OS=$(lsb_release --id --short)
|
34
|
+
else
|
35
|
+
. /etc/os-release
|
36
|
+
OS=$(echo $NAME | tr -d ' ')
|
37
|
+
fi
|
38
|
+
case "$OS" in
|
39
|
+
Ubuntu|Debian|LinuxMint)
|
40
|
+
deps=(qemu-utils python3-dev libssl-dev python3-pip python3-wheel $PYTHON-venv libev-dev libvirt-dev libffi-dev libyaml-dev)
|
41
|
+
for package in ${deps[@]}; do
|
42
|
+
if [ "$(dpkg --status -- $package|sed -n 's/^Status: //p')" != "install ok installed" ]; then
|
43
|
+
# add a space after old values
|
44
|
+
missing="${missing:+$missing }$package"
|
45
|
+
fi
|
46
|
+
done
|
47
|
+
if [ -n "$missing" ]; then
|
48
|
+
echo "$0: missing required packages:" 1>&2
|
49
|
+
echo "$missing"
|
50
|
+
if [ "$install" = true ]; then
|
51
|
+
echo "Updating metadata..."
|
52
|
+
sudo apt-get update
|
53
|
+
echo "Installing missing packages..."
|
54
|
+
sudo apt-get -y install $missing
|
55
|
+
else
|
56
|
+
echo "Please install missing packages or run './bootstrap install' if you have sudo"
|
57
|
+
echo "sudo apt-get -y install $missing"
|
58
|
+
exit 1
|
59
|
+
fi
|
60
|
+
fi
|
61
|
+
;;
|
62
|
+
RedHatEnterpriseWorkstation|RedHatEnterpriseServer|RedHatEnterprise|CentOS)
|
63
|
+
deps=(python39-pip python39-devel mariadb-devel libev-devel libvirt-devel libffi-devel)
|
64
|
+
for package in ${deps[@]}; do
|
65
|
+
if ! rpm -q --whatprovides $package ; then
|
66
|
+
missing="${missing:+$missing }$package"
|
67
|
+
fi
|
68
|
+
done
|
69
|
+
if [ -n "$missing" ]; then
|
70
|
+
echo "$0: missing required packages:" 1>&2
|
71
|
+
echo "$missing"
|
72
|
+
if [ "$install" = true ]; then
|
73
|
+
echo "Installing missing packages..."
|
74
|
+
sudo yum -y install $missing
|
75
|
+
else
|
76
|
+
echo "Please install missing packages or run './bootstrap install' if you have sudo"
|
77
|
+
echo "sudo yum -y install $missing"
|
78
|
+
exit 1
|
79
|
+
fi
|
80
|
+
fi
|
81
|
+
;;
|
82
|
+
CentOSStream)
|
83
|
+
PYTHON=python3.12
|
84
|
+
deps=($PYTHON-pip $PYTHON-devel)
|
85
|
+
for package in ${deps[@]}; do
|
86
|
+
if ! rpm -q --whatprovides $package ; then
|
87
|
+
missing="${missing:+$missing }$package"
|
88
|
+
fi
|
89
|
+
done
|
90
|
+
if [ -n "$missing" ]; then
|
91
|
+
echo "$0: missing required packages:" 1>&2
|
92
|
+
echo "$missing"
|
93
|
+
if [ "$install" = true ]; then
|
94
|
+
echo "Installing missing packages..."
|
95
|
+
sudo yum -y install $missing
|
96
|
+
else
|
97
|
+
echo "Please install missing packages or run './bootstrap install' if you have sudo"
|
98
|
+
echo "sudo yum -y install $missing"
|
99
|
+
exit 1
|
100
|
+
fi
|
101
|
+
fi
|
102
|
+
;;
|
103
|
+
AlmaLinux|RockyLinux)
|
104
|
+
PYTHON=python3.12
|
105
|
+
deps=($PYTHON-pip $PYTHON-devel libev-devel libvirt-devel libffi-devel)
|
106
|
+
for package in ${deps[@]}; do
|
107
|
+
if ! rpm -q --whatprovides $package; then
|
108
|
+
missing="${missing:+$missing }$package"
|
109
|
+
fi
|
110
|
+
done
|
111
|
+
if [ -n "$missing" ]; then
|
112
|
+
echo "$0: missing required packages:" 1>&2
|
113
|
+
echo "$missing"
|
114
|
+
if [ "$install" = true ]; then
|
115
|
+
echo "Installing missing packages..."
|
116
|
+
sudo yum -y install $missing
|
117
|
+
else
|
118
|
+
echo "Please install missing packages or run './bootstrap install' if you have sudo"
|
119
|
+
echo "sudo yum -y install $missing"
|
120
|
+
exit 1
|
121
|
+
fi
|
122
|
+
fi
|
123
|
+
;;
|
124
|
+
Fedora|FedoraLinux)
|
125
|
+
PYTHON=python3.12
|
126
|
+
deps=($PYTHON-pip $PYTHON-devel)
|
127
|
+
deps=($PYTHON-pip $PYTHON-devel libev-devel libvirt-devel libffi-devel)
|
128
|
+
for package in ${deps[@]}; do
|
129
|
+
if ! rpm -q --whatprovides $package; then
|
130
|
+
missing="${missing:+$missing }$package"
|
131
|
+
fi
|
132
|
+
done
|
133
|
+
fedora_release=$(lsb_release -rs)
|
134
|
+
package_manager=dnf
|
135
|
+
if [ $fedora_release -lt 23 ]; then
|
136
|
+
package_manager=yum
|
137
|
+
fi
|
138
|
+
if [ -n "$missing" ]; then
|
139
|
+
echo "$0: missing required packages:" 1>&2
|
140
|
+
echo "$missing"
|
141
|
+
if [ "$install" = true ]; then
|
142
|
+
echo "Installing missing packages..."
|
143
|
+
sudo $package_manager -y install $missing
|
144
|
+
else
|
145
|
+
echo "Please install missing packages or run './bootstrap install' if you have sudo"
|
146
|
+
echo "sudo $package_manager -y install $missing"
|
147
|
+
exit 1
|
148
|
+
fi
|
149
|
+
fi
|
150
|
+
;;
|
151
|
+
"openSUSE project"|"SUSE LINUX"|"openSUSE"|"openSUSELeap"|"openSUSETumbleweed")
|
152
|
+
PYTHON=python3.12
|
153
|
+
deps=(python312-pip python312-devel python312 libev-devel libvirt-devel libffi-devel)
|
154
|
+
for package in ${deps[@]}; do
|
155
|
+
if ! rpm -q --whatprovides $package; then
|
156
|
+
if [ "$(rpm -q --whatprovides $package)" == "no package provides $package" ]; then
|
157
|
+
missing="${missing:+$missing }$package"
|
158
|
+
fi
|
159
|
+
fi
|
160
|
+
done
|
161
|
+
if [ -n "$missing" ]; then
|
162
|
+
echo "$0: missing required packages, please install them:" 1>&2
|
163
|
+
echo "sudo zypper install $missing"
|
164
|
+
exit 1
|
165
|
+
fi
|
166
|
+
;;
|
167
|
+
*)
|
168
|
+
echo "This script does not support your Linux distribution yet. Patches encouraged!"
|
169
|
+
exit 1
|
170
|
+
;;
|
171
|
+
esac
|
172
|
+
;;
|
173
|
+
Darwin)
|
174
|
+
if ! brew --version &>/dev/null; then
|
175
|
+
echo "You need Homebrew: http://brew.sh/"
|
176
|
+
exit 1
|
177
|
+
fi
|
178
|
+
for keg in python libvirt libev libffi; do
|
179
|
+
if brew list $keg >/dev/null 2>&1; then
|
180
|
+
echo "Found $keg"
|
181
|
+
else
|
182
|
+
if [ "$install" = true ]; then
|
183
|
+
brew install $keg
|
184
|
+
else
|
185
|
+
missing="${missing:+$missing }$keg"
|
186
|
+
echo "Please install missing packages or run './bootstrap install':"
|
187
|
+
echo "brew install $missing"
|
188
|
+
exit 1
|
189
|
+
fi
|
190
|
+
fi
|
191
|
+
done
|
192
|
+
;;
|
193
|
+
*)
|
194
|
+
echo "This script does not support your OS yet. Patches encouraged!"
|
195
|
+
exit 1
|
196
|
+
;;
|
197
|
+
esac
|
198
|
+
|
199
|
+
PYTHON_BIN=$(command -v $PYTHON)
|
200
|
+
if [ -z $PYTHON_BIN -o ! -e $PYTHON_BIN -o ! -x $PYTHON_BIN ]; then
|
201
|
+
echo "Cannot find $PYTHON!"
|
202
|
+
exit 1
|
203
|
+
fi
|
204
|
+
PYTHON_VER_OUT=$($PYTHON_BIN --version)
|
205
|
+
|
206
|
+
VENV=${VENV:-"./virtualenv"}
|
207
|
+
# If the venv was set to use system site-packages, fix that
|
208
|
+
if [ -f "$VENV/pyvenv.cfg" ]; then
|
209
|
+
sed -i'' -e 's/\(include-system-site-packages\s*=\s*\)true/\1false/g' $VENV/pyvenv.cfg
|
210
|
+
fi
|
211
|
+
|
212
|
+
# Attempt to force a UTF-8 locale without being specific to English
|
213
|
+
export LANG=${LANG:-C.UTF-8}
|
214
|
+
(echo $LANG | grep -qi utf-8) || export LC_ALL=$LANG.UTF-8
|
215
|
+
|
216
|
+
if [ -z "$NO_CLOBBER" ] && \
|
217
|
+
[ ! -e "$VENV/bin/pip" -o ! -e "$VENV/bin/$PYTHON" ] || \
|
218
|
+
[ "${PYTHON_VER_OUT}" != "$($VENV/bin/$PYTHON --version)" ] \
|
219
|
+
; then
|
220
|
+
rm -rf virtualenv
|
221
|
+
fi
|
222
|
+
|
223
|
+
if [ -z "$NO_CLOBBER" ] || [ ! -e $VENV ]; then
|
224
|
+
$PYTHON_BIN -m venv $VENV
|
225
|
+
fi
|
226
|
+
|
227
|
+
$VENV/bin/pip install packaging
|
228
|
+
|
229
|
+
# It is impossible to upgrade ansible from 2.9 to 2.10 via pip.
|
230
|
+
# See https://docs.ansible.com/ansible/devel/porting_guides/porting_guide_2.10.html#known-issues
|
231
|
+
if [ -f "$VENV/bin/ansible" ]; then
|
232
|
+
uninstall_ansible=$($VENV/bin/python3 -c "import ansible; from packaging.version import parse; print(parse(ansible.__version__) < parse('2.10.0'))")
|
233
|
+
if [ "$uninstall_ansible" = "True" ]; then
|
234
|
+
$VENV/bin/pip uninstall -y ansible
|
235
|
+
fi
|
236
|
+
fi
|
237
|
+
|
238
|
+
# First, upgrade pip
|
239
|
+
$VENV/bin/pip install --upgrade pip
|
240
|
+
|
241
|
+
# See https://github.com/pypa/pip/issues/8559
|
242
|
+
$VENV/bin/pip install -r requirements.txt --use-pep517
|
243
|
+
|
244
|
+
# By default, install teuthology in editable mode
|
245
|
+
$VENV/bin/pip install ${PIP_INSTALL_FLAGS:---editable '.[test]'}
|
246
|
+
|
247
|
+
# Check to make sure requirements are met
|
248
|
+
$VENV/bin/pip check
|
249
|
+
|
250
|
+
# Install ansible collections
|
251
|
+
$VENV/bin/ansible-galaxy install -r requirements.yml
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/bin/sh -x
|
2
|
+
set -e
|
3
|
+
|
4
|
+
IMAGE_URL=http://cloud-images.ubuntu.com/releases/precise/release/ubuntu-12.04-server-cloudimg-amd64-disk1.img
|
5
|
+
|
6
|
+
wget -O base.qcow2 $IMAGE_URL
|
7
|
+
|
8
|
+
image=base.raw
|
9
|
+
qemu-img convert -O raw base.qcow2 $image
|
10
|
+
rm -f base.qcow2
|
11
|
+
|
12
|
+
# Note: this assumes that sector size is 512, and that there's only one
|
13
|
+
# partition. very brittle.
|
14
|
+
START_SECT=$(fdisk -lu $image | grep ^$image | awk '{print $3}')
|
15
|
+
START_BYTE=$(echo "$START_SECT * 512" | bc)
|
16
|
+
|
17
|
+
root=/tmp/$$
|
18
|
+
|
19
|
+
cleanup() {
|
20
|
+
sudo chroot $root rm -f /etc/resolv.conf || true
|
21
|
+
sudo chroot $root ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf || true
|
22
|
+
sudo umount $root/proc || true
|
23
|
+
sudo umount $root/sys || true
|
24
|
+
sudo umount $root/dev/pts || true
|
25
|
+
sudo umount $root
|
26
|
+
sudo rmdir $root
|
27
|
+
}
|
28
|
+
trap cleanup INT TERM EXIT
|
29
|
+
|
30
|
+
sudo mkdir $root
|
31
|
+
sudo mount -o loop,offset=$START_BYTE $image $root
|
32
|
+
|
33
|
+
# set up chroot
|
34
|
+
sudo mount -t proc proc $root/proc
|
35
|
+
sudo mount -t sysfs sysfs $root/sys
|
36
|
+
sudo mount -t devpts devptr $root/dev/pts
|
37
|
+
|
38
|
+
# set up network access
|
39
|
+
sudo chroot $root rm /etc/resolv.conf
|
40
|
+
sudo cp /etc/resolv.conf $root/etc/resolv.conf
|
41
|
+
|
42
|
+
# packages
|
43
|
+
# These should be kept in sync with ceph-qa-chef.git/cookbooks/ceph-qa/default.rb
|
44
|
+
sudo chroot $root apt-get -y --force-yes install iozone3 bonnie++ dbench \
|
45
|
+
tiobench build-essential attr libtool automake gettext uuid-dev \
|
46
|
+
libacl1-dev bc xfsdump dmapi xfslibs-dev
|
47
|
+
|
48
|
+
# install ltp without ltp-network-test, so we don't pull in xinetd and
|
49
|
+
# a bunch of other unnecessary stuff
|
50
|
+
sudo chroot $root apt-get -y --force-yes --no-install-recommends install ltp-kernel-test
|
51
|
+
|
52
|
+
# add 9p fs support
|
53
|
+
sudo chroot $root apt-get -y --force-yes install linux-image-extra-virtual
|
54
|
+
|
55
|
+
cleanup
|
56
|
+
trap - INT TERM EXIT
|
57
|
+
|
58
|
+
qemu-img convert -O qcow2 $image output.qcow2
|
59
|
+
rm -f $image
|
60
|
+
|
61
|
+
exit 0
|