teuthology 1.2.0__py3-none-any.whl → 1.2.2__py3-none-any.whl
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.
- scripts/node_cleanup.py +18 -2
- scripts/suite.py +2 -0
- teuthology/__init__.py +0 -1
- teuthology/config.py +28 -7
- teuthology/dispatcher/supervisor.py +9 -6
- teuthology/lock/cli.py +4 -2
- teuthology/lock/ops.py +10 -9
- teuthology/lock/query.py +28 -4
- teuthology/lock/util.py +1 -1
- teuthology/misc.py +13 -58
- teuthology/openstack/__init__.py +202 -176
- teuthology/openstack/setup-openstack.sh +52 -27
- teuthology/orchestra/connection.py +3 -1
- teuthology/orchestra/daemon/cephadmunit.py +2 -2
- teuthology/orchestra/opsys.py +15 -0
- teuthology/orchestra/remote.py +54 -2
- teuthology/orchestra/run.py +8 -2
- teuthology/provision/downburst.py +84 -43
- teuthology/provision/fog.py +2 -2
- teuthology/repo_utils.py +3 -1
- teuthology/run.py +1 -1
- teuthology/scrape.py +5 -2
- teuthology/suite/merge.py +3 -1
- teuthology/suite/run.py +51 -37
- teuthology/suite/util.py +2 -2
- teuthology/task/install/rpm.py +8 -16
- teuthology/task/internal/__init__.py +2 -1
- teuthology/task/internal/syslog.py +17 -13
- teuthology/task/kernel.py +1 -1
- {teuthology-1.2.0.dist-info → teuthology-1.2.2.dist-info}/METADATA +11 -10
- {teuthology-1.2.0.dist-info → teuthology-1.2.2.dist-info}/RECORD +38 -44
- {teuthology-1.2.0.dist-info → teuthology-1.2.2.dist-info}/WHEEL +1 -1
- teuthology/lock/test/__init__.py +0 -0
- teuthology/lock/test/test_lock.py +0 -7
- teuthology/task/tests/__init__.py +0 -170
- teuthology/task/tests/test_fetch_coredumps.py +0 -116
- teuthology/task/tests/test_locking.py +0 -25
- teuthology/task/tests/test_run.py +0 -40
- {teuthology-1.2.0.data → teuthology-1.2.2.data}/scripts/adjust-ulimits +0 -0
- {teuthology-1.2.0.data → teuthology-1.2.2.data}/scripts/daemon-helper +0 -0
- {teuthology-1.2.0.data → teuthology-1.2.2.data}/scripts/stdin-killer +0 -0
- {teuthology-1.2.0.dist-info → teuthology-1.2.2.dist-info}/entry_points.txt +0 -0
- {teuthology-1.2.0.dist-info → teuthology-1.2.2.dist-info/licenses}/LICENSE +0 -0
- {teuthology-1.2.0.dist-info → teuthology-1.2.2.dist-info}/top_level.txt +0 -0
teuthology/suite/run.py
CHANGED
@@ -7,16 +7,17 @@ import yaml
|
|
7
7
|
import re
|
8
8
|
import time
|
9
9
|
|
10
|
+
from pathlib import Path
|
11
|
+
|
10
12
|
from humanfriendly import format_timespan
|
11
13
|
|
12
|
-
from tempfile import NamedTemporaryFile
|
13
14
|
from teuthology import repo_utils
|
14
15
|
|
15
16
|
from teuthology.config import config, JobConfig
|
16
17
|
from teuthology.exceptions import (
|
17
18
|
BranchMismatchError, BranchNotFoundError, CommitNotFoundError,
|
18
19
|
)
|
19
|
-
from teuthology.misc import deep_merge, get_results_url
|
20
|
+
from teuthology.misc import deep_merge, get_results_url, update_key
|
20
21
|
from teuthology.orchestra.opsys import OS
|
21
22
|
from teuthology.repo_utils import build_git_url
|
22
23
|
|
@@ -45,10 +46,8 @@ class Run(object):
|
|
45
46
|
# We assume timestamp is a datetime.datetime object
|
46
47
|
self.timestamp = self.args.timestamp or \
|
47
48
|
datetime.datetime.now().strftime(TIMESTAMP_FMT)
|
48
|
-
self.user = self.args.
|
49
|
-
|
49
|
+
self.user = self.args.owner or pwd.getpwuid(os.getuid()).pw_name
|
50
50
|
self.name = self.make_run_name()
|
51
|
-
|
52
51
|
if self.args.ceph_repo:
|
53
52
|
config.ceph_git_url = self.args.ceph_repo
|
54
53
|
if self.args.suite_repo:
|
@@ -108,7 +107,7 @@ class Run(object):
|
|
108
107
|
self.suite_repo_path = self.args.suite_dir
|
109
108
|
else:
|
110
109
|
self.suite_repo_path = util.fetch_repos(
|
111
|
-
suite_branch, test_name=self.name, dry_run=self.args.dry_run)
|
110
|
+
suite_branch, test_name=self.name, dry_run=self.args.dry_run, commit=suite_hash)
|
112
111
|
teuthology_branch, teuthology_sha1 = self.choose_teuthology_branch()
|
113
112
|
|
114
113
|
|
@@ -169,13 +168,16 @@ class Run(object):
|
|
169
168
|
# Put together a stanza specifying the kernel hash
|
170
169
|
if self.args.kernel_branch == 'distro':
|
171
170
|
kernel_hash = 'distro'
|
171
|
+
kernel_branch = 'distro'
|
172
172
|
# Skip the stanza if '-k none' is given
|
173
173
|
elif self.args.kernel_branch is None or \
|
174
174
|
self.args.kernel_branch.lower() == 'none':
|
175
175
|
kernel_hash = None
|
176
|
+
kernel_branch = None
|
176
177
|
else:
|
178
|
+
kernel_branch = self.args.kernel_branch
|
177
179
|
kernel_hash = util.get_gitbuilder_hash(
|
178
|
-
'kernel',
|
180
|
+
'kernel', kernel_branch, 'default',
|
179
181
|
self.args.machine_type, self.args.distro,
|
180
182
|
self.args.distro_version,
|
181
183
|
)
|
@@ -191,7 +193,7 @@ class Run(object):
|
|
191
193
|
|
192
194
|
if kernel_hash:
|
193
195
|
log.info("kernel sha1: {hash}".format(hash=kernel_hash))
|
194
|
-
kernel_dict = dict(kernel=dict(kdb=kdb, sha1=kernel_hash))
|
196
|
+
kernel_dict = dict(kernel=dict(branch=kernel_branch, kdb=kdb, sha1=kernel_hash))
|
195
197
|
if kernel_hash != 'distro':
|
196
198
|
kernel_dict['kernel']['flavor'] = 'default'
|
197
199
|
else:
|
@@ -305,7 +307,7 @@ class Run(object):
|
|
305
307
|
if not teuthology_branch:
|
306
308
|
teuthology_branch = actual_branch
|
307
309
|
teuthology_sha1 = util.git_ls_remote(
|
308
|
-
f"file://{config.teuthology_path}",
|
310
|
+
f"file://{Path(config.teuthology_path).resolve()}",
|
309
311
|
teuthology_branch
|
310
312
|
)
|
311
313
|
else:
|
@@ -367,14 +369,27 @@ class Run(object):
|
|
367
369
|
|
368
370
|
def choose_suite_hash(self, suite_branch):
|
369
371
|
suite_repo_name = self.suite_repo_name
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
372
|
+
suite_hash = None
|
373
|
+
if self.args.suite_sha1:
|
374
|
+
suite_hash = self.args.suite_sha1
|
375
|
+
if self.args.validate_sha1:
|
376
|
+
suite_hash = util.git_validate_sha1(suite_repo_name, suite_hash)
|
377
|
+
if not suite_hash:
|
378
|
+
exc = CommitNotFoundError(
|
379
|
+
self.args.suite_sha1,
|
380
|
+
'%s.git' % suite_repo_name
|
381
|
+
)
|
382
|
+
util.schedule_fail(message=str(exc), name=self.name, dry_run=self.args.dry_run)
|
383
|
+
log.info("suite sha1 explicitly supplied")
|
384
|
+
else:
|
385
|
+
suite_repo_project_or_url = self.args.suite_repo or 'ceph-qa-suite'
|
386
|
+
suite_hash = util.git_ls_remote(
|
387
|
+
suite_repo_project_or_url,
|
388
|
+
suite_branch
|
389
|
+
)
|
390
|
+
if not suite_hash:
|
391
|
+
exc = BranchNotFoundError(suite_branch, suite_repo_name)
|
392
|
+
util.schedule_fail(message=str(exc), name=self.name, dry_run=self.args.dry_run)
|
378
393
|
log.info("%s branch: %s %s", suite_repo_name, suite_branch, suite_hash)
|
379
394
|
return suite_hash
|
380
395
|
|
@@ -493,6 +508,14 @@ class Run(object):
|
|
493
508
|
log.info('Skipping due to excluded_os_type: %s facets %s',
|
494
509
|
exclude_os_type, description)
|
495
510
|
continue
|
511
|
+
update_key('sha1', parsed_yaml, self.base_config)
|
512
|
+
update_key('suite_sha1', parsed_yaml, self.base_config)
|
513
|
+
|
514
|
+
full_job_config = copy.deepcopy(self.base_config.to_dict())
|
515
|
+
deep_merge(full_job_config, parsed_yaml)
|
516
|
+
flavor = util.get_install_task_flavor(full_job_config)
|
517
|
+
|
518
|
+
parsed_yaml['flavor'] = flavor
|
496
519
|
|
497
520
|
arg = copy.deepcopy(self.base_args)
|
498
521
|
arg.extend([
|
@@ -516,9 +539,6 @@ class Run(object):
|
|
516
539
|
sha1 = self.base_config.sha1
|
517
540
|
if parsed_yaml.get('verify_ceph_hash',
|
518
541
|
config.suite_verify_ceph_hash):
|
519
|
-
full_job_config = copy.deepcopy(self.base_config.to_dict())
|
520
|
-
deep_merge(full_job_config, parsed_yaml)
|
521
|
-
flavor = util.get_install_task_flavor(full_job_config)
|
522
542
|
version = util.package_version_for_hash(sha1, flavor, os_type,
|
523
543
|
os_version, self.args.machine_type)
|
524
544
|
if not version:
|
@@ -611,6 +631,9 @@ Note: If you still want to go ahead, use --job-threshold 0'''
|
|
611
631
|
log.debug('Suite %s in %s' % (suite_name, suite_path))
|
612
632
|
log.debug(f"subset = {self.args.subset}")
|
613
633
|
log.debug(f"no_nested_subset = {self.args.no_nested_subset}")
|
634
|
+
if self.args.dry_run:
|
635
|
+
log.debug("Base job config:\n%s" % self.base_config)
|
636
|
+
|
614
637
|
configs = build_matrix(suite_path,
|
615
638
|
subset=self.args.subset,
|
616
639
|
no_nested_subset=self.args.no_nested_subset,
|
@@ -622,20 +645,10 @@ Note: If you still want to go ahead, use --job-threshold 0'''
|
|
622
645
|
filter_out=self.args.filter_out,
|
623
646
|
filter_all=self.args.filter_all,
|
624
647
|
filter_fragments=self.args.filter_fragments,
|
648
|
+
base_config=self.base_config,
|
625
649
|
seed=self.args.seed,
|
626
650
|
suite_name=suite_name))
|
627
651
|
|
628
|
-
if self.args.dry_run:
|
629
|
-
log.debug("Base job config:\n%s" % self.base_config)
|
630
|
-
|
631
|
-
# create, but do not write, the temp file here, so it can be
|
632
|
-
# added to the args in collect_jobs, but not filled until
|
633
|
-
# any backtracking is done
|
634
|
-
base_yaml_path = NamedTemporaryFile(
|
635
|
-
prefix='schedule_suite_', delete=False
|
636
|
-
).name
|
637
|
-
self.base_yaml_paths.insert(0, base_yaml_path)
|
638
|
-
|
639
652
|
# compute job limit in respect of --sleep-before-teardown
|
640
653
|
job_limit = self.args.limit or 0
|
641
654
|
sleep_before_teardown = int(self.args.sleep_before_teardown or 0)
|
@@ -684,7 +697,13 @@ Note: If you still want to go ahead, use --job-threshold 0'''
|
|
684
697
|
sha1s = util.find_git_parents('ceph', str(self.base_config.sha1), self.args.newest)
|
685
698
|
if not sha1s:
|
686
699
|
util.schedule_fail('Backtrack for --newest failed', name, dry_run=self.args.dry_run)
|
687
|
-
|
700
|
+
cur_sha1 = sha1s.pop(0)
|
701
|
+
self.config_input['ceph_hash'] = cur_sha1
|
702
|
+
# If ceph_branch and suite_branch are the same and
|
703
|
+
# ceph_repo and suite_repo are the same, update suite_hash
|
704
|
+
if (self.args.ceph_repo == self.args.suite_repo) and \
|
705
|
+
(self.args.ceph_branch == self.args.suite_branch):
|
706
|
+
self.config_input['suite_hash'] = cur_sha1
|
688
707
|
self.base_config = self.build_base_config()
|
689
708
|
backtrack += 1
|
690
709
|
continue
|
@@ -700,9 +719,6 @@ Note: If you still want to go ahead, use --job-threshold 0'''
|
|
700
719
|
dry_run=self.args.dry_run,
|
701
720
|
)
|
702
721
|
|
703
|
-
with open(base_yaml_path, 'w+b') as base_yaml:
|
704
|
-
base_yaml.write(str(self.base_config).encode())
|
705
|
-
|
706
722
|
if jobs_to_schedule:
|
707
723
|
self.write_rerun_memo()
|
708
724
|
|
@@ -714,8 +730,6 @@ Note: If you still want to go ahead, use --job-threshold 0'''
|
|
714
730
|
|
715
731
|
self.schedule_jobs(jobs_missing_packages, jobs_to_schedule, name)
|
716
732
|
|
717
|
-
os.remove(base_yaml_path)
|
718
|
-
|
719
733
|
count = len(jobs_to_schedule)
|
720
734
|
missing_count = len(jobs_missing_packages)
|
721
735
|
total_count = count
|
teuthology/suite/util.py
CHANGED
@@ -29,7 +29,7 @@ CONTAINER_DISTRO = 'centos/9' # the one to check for build_complete
|
|
29
29
|
CONTAINER_FLAVOR = 'default'
|
30
30
|
|
31
31
|
|
32
|
-
def fetch_repos(branch, test_name, dry_run):
|
32
|
+
def fetch_repos(branch, test_name, dry_run, commit=None):
|
33
33
|
"""
|
34
34
|
Fetch the suite repo (and also the teuthology repo) so that we can use it
|
35
35
|
to build jobs. Repos are stored in ~/src/.
|
@@ -49,7 +49,7 @@ def fetch_repos(branch, test_name, dry_run):
|
|
49
49
|
# We use teuthology's main branch in all cases right now
|
50
50
|
if config.teuthology_path is None:
|
51
51
|
fetch_teuthology('main')
|
52
|
-
suite_repo_path = fetch_qa_suite(branch)
|
52
|
+
suite_repo_path = fetch_qa_suite(branch, commit)
|
53
53
|
except BranchNotFoundError as exc:
|
54
54
|
schedule_fail(message=str(exc), name=test_name, dry_run=dry_run)
|
55
55
|
return suite_repo_path
|
teuthology/task/install/rpm.py
CHANGED
@@ -180,16 +180,7 @@ def _update_package_list_and_install(ctx, remote, rpm, config):
|
|
180
180
|
for copr in enable_coprs:
|
181
181
|
remote.run(args=['sudo', 'dnf', '-y', 'copr', 'enable', copr])
|
182
182
|
|
183
|
-
# rpm does not force installation of a particular version of the project
|
184
|
-
# packages, so we can put extra_system_packages together with the rest
|
185
|
-
system_pkglist = config.get('extra_system_packages')
|
186
|
-
if system_pkglist:
|
187
|
-
if isinstance(system_pkglist, dict):
|
188
|
-
rpm += system_pkglist.get('rpm')
|
189
|
-
else:
|
190
|
-
rpm += system_pkglist
|
191
183
|
remote_os = remote.os
|
192
|
-
|
193
184
|
dist_release = remote_os.name
|
194
185
|
log.debug("_update_package_list_and_install: config is {}".format(config))
|
195
186
|
repos = config.get('repos')
|
@@ -214,25 +205,26 @@ def _update_package_list_and_install(ctx, remote, rpm, config):
|
|
214
205
|
log.info("repos_only was specified: not installing any packages")
|
215
206
|
return None
|
216
207
|
|
208
|
+
packages = list(rpm)
|
217
209
|
if not install_ceph_packages:
|
218
210
|
log.info("install_ceph_packages set to False: not installing Ceph packages")
|
219
211
|
# Although "librados2" is an indirect dependency of ceph-test, we
|
220
212
|
# install it separately because, otherwise, ceph-test cannot be
|
221
213
|
# installed (even with --force) when there are several conflicting
|
222
214
|
# repos from different vendors.
|
223
|
-
|
215
|
+
packages = ["librados2", "ceph-test"]
|
224
216
|
|
225
217
|
# rpm does not force installation of a particular version of the project
|
226
218
|
# packages, so we can put extra_system_packages together with the rest
|
227
219
|
system_pkglist = config.get('extra_system_packages', [])
|
228
220
|
if system_pkglist:
|
229
221
|
if isinstance(system_pkglist, dict):
|
230
|
-
|
222
|
+
packages += system_pkglist.get('rpm')
|
231
223
|
else:
|
232
|
-
|
224
|
+
packages += system_pkglist
|
233
225
|
|
234
226
|
log.info("Installing packages: {pkglist} on remote rpm {arch}".format(
|
235
|
-
pkglist=", ".join(
|
227
|
+
pkglist=", ".join(packages), arch=remote.arch))
|
236
228
|
|
237
229
|
if dist_release not in ['opensuse', 'sle']:
|
238
230
|
project = builder.project
|
@@ -257,15 +249,15 @@ def _update_package_list_and_install(ctx, remote, rpm, config):
|
|
257
249
|
install_cmd = 'sudo yum -y install'
|
258
250
|
# to compose version string like "0.94.10-87.g116a558.el7"
|
259
251
|
pkg_version = '.'.join([builder.version, builder.dist_release])
|
260
|
-
|
252
|
+
packages = _downgrade_packages(ctx, remote, packages, pkg_version, config)
|
261
253
|
|
262
254
|
if system_pkglist:
|
263
255
|
_retry_if_failures_are_recoverable(remote,
|
264
256
|
args='{install_cmd} {rpms}'
|
265
|
-
.format(install_cmd=install_cmd, rpms=' '.join(
|
257
|
+
.format(install_cmd=install_cmd, rpms=' '.join(packages))
|
266
258
|
)
|
267
259
|
else:
|
268
|
-
for cpack in
|
260
|
+
for cpack in packages:
|
269
261
|
if ldir:
|
270
262
|
_retry_if_failures_are_recoverable(remote,
|
271
263
|
args='''
|
@@ -334,7 +334,8 @@ def fetch_binaries_for_coredumps(path, remote):
|
|
334
334
|
log.error(e)
|
335
335
|
continue
|
336
336
|
try:
|
337
|
-
|
337
|
+
dump_command = re.findall("from '([^ ']+)", dump_out)[0]
|
338
|
+
dump_program = dump_command.split()[0]
|
338
339
|
log.info(f' dump_program: {dump_program}')
|
339
340
|
except Exception as e:
|
340
341
|
log.info("core doesn't have the desired format, moving on ...")
|
@@ -159,6 +159,18 @@ def syslog(ctx, config):
|
|
159
159
|
ctx.summary['failure_reason'] = \
|
160
160
|
"'{error}' in syslog".format(error=stdout)
|
161
161
|
|
162
|
+
log.info('Gathering journactl...')
|
163
|
+
run.wait(
|
164
|
+
cluster.run(
|
165
|
+
args=[
|
166
|
+
'sudo', 'journalctl',
|
167
|
+
run.Raw('>'),
|
168
|
+
f'{archive_dir}/syslog/journalctl.log',
|
169
|
+
],
|
170
|
+
wait=False,
|
171
|
+
)
|
172
|
+
)
|
173
|
+
|
162
174
|
log.info('Compressing syslogs...')
|
163
175
|
run.wait(
|
164
176
|
cluster.run(
|
@@ -172,25 +184,17 @@ def syslog(ctx, config):
|
|
172
184
|
'sudo',
|
173
185
|
'xargs',
|
174
186
|
'-0',
|
187
|
+
'--max-args=1',
|
188
|
+
'--max-procs=0',
|
189
|
+
'--verbose',
|
175
190
|
'--no-run-if-empty',
|
176
191
|
'--',
|
177
192
|
'gzip',
|
193
|
+
'-5',
|
194
|
+
'--verbose',
|
178
195
|
'--',
|
179
196
|
],
|
180
197
|
wait=False,
|
181
198
|
)
|
182
199
|
)
|
183
200
|
|
184
|
-
log.info('Gathering journactl -b0...')
|
185
|
-
run.wait(
|
186
|
-
cluster.run(
|
187
|
-
args=[
|
188
|
-
'sudo', 'journalctl', '-b0',
|
189
|
-
run.Raw('|'),
|
190
|
-
'gzip', '-9',
|
191
|
-
run.Raw('>'),
|
192
|
-
f'{archive_dir}/syslog/journalctl-b0.gz',
|
193
|
-
],
|
194
|
-
wait=False,
|
195
|
-
)
|
196
|
-
)
|
teuthology/task/kernel.py
CHANGED
@@ -33,7 +33,7 @@ from teuthology.task.install.deb import install_dep_packages
|
|
33
33
|
|
34
34
|
log = logging.getLogger(__name__)
|
35
35
|
|
36
|
-
CONFIG_DEFAULT = {'branch': '
|
36
|
+
CONFIG_DEFAULT = {'branch': 'distro', 'sha1': 'distro'}
|
37
37
|
TIMEOUT_DEFAULT = 300
|
38
38
|
|
39
39
|
VERSION_KEYS = ['branch', 'tag', 'sha1', 'deb', 'rpm', 'koji', 'koji_task']
|
@@ -1,9 +1,9 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: teuthology
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.2
|
4
4
|
Summary: Ceph test framework
|
5
5
|
Home-page: https://github.com/ceph/teuthology
|
6
|
-
Author:
|
6
|
+
Author: Red Hat, Inc.
|
7
7
|
License: MIT
|
8
8
|
Keywords: teuthology,test,ceph,cluster
|
9
9
|
Classifier: Intended Audience :: Developers
|
@@ -24,26 +24,26 @@ Requires-Python: >=3.10
|
|
24
24
|
Description-Content-Type: text/x-rst
|
25
25
|
License-File: LICENSE
|
26
26
|
Requires-Dist: PyYAML
|
27
|
-
Requires-Dist: ansible-core==2.
|
27
|
+
Requires-Dist: ansible-core==2.17.7
|
28
28
|
Requires-Dist: apache-libcloud
|
29
29
|
Requires-Dist: backports.ssl-match-hostname
|
30
30
|
Requires-Dist: beanstalkc3>=0.4.0
|
31
31
|
Requires-Dist: configobj
|
32
32
|
Requires-Dist: configparser
|
33
|
-
Requires-Dist: cryptography==41.0.7
|
34
33
|
Requires-Dist: docopt
|
35
|
-
Requires-Dist: gevent
|
34
|
+
Requires-Dist: gevent<25
|
36
35
|
Requires-Dist: httplib2
|
37
36
|
Requires-Dist: humanfriendly
|
38
37
|
Requires-Dist: lupa
|
39
38
|
Requires-Dist: lxml
|
40
39
|
Requires-Dist: ndg-httpsclient
|
41
40
|
Requires-Dist: netaddr
|
41
|
+
Requires-Dist: openstacksdk
|
42
42
|
Requires-Dist: paramiko
|
43
43
|
Requires-Dist: pexpect
|
44
44
|
Requires-Dist: pip-tools
|
45
45
|
Requires-Dist: prettytable
|
46
|
-
Requires-Dist:
|
46
|
+
Requires-Dist: prometheus_client>=0.16.0
|
47
47
|
Requires-Dist: psutil>=2.1.0
|
48
48
|
Requires-Dist: pyasn1
|
49
49
|
Requires-Dist: pynacl>=1.5.0
|
@@ -55,9 +55,6 @@ Requires-Dist: types-psutil
|
|
55
55
|
Requires-Dist: urllib3<1.27,>=1.25.4
|
56
56
|
Provides-Extra: manhole
|
57
57
|
Requires-Dist: manhole; extra == "manhole"
|
58
|
-
Provides-Extra: openstack
|
59
|
-
Requires-Dist: python-openstackclient; extra == "openstack"
|
60
|
-
Requires-Dist: python-novaclient; extra == "openstack"
|
61
58
|
Provides-Extra: rocketchat
|
62
59
|
Requires-Dist: rocket-python>=1.2.15; extra == "rocketchat"
|
63
60
|
Provides-Extra: sentry
|
@@ -75,6 +72,10 @@ Requires-Dist: pytest-cov; extra == "test"
|
|
75
72
|
Requires-Dist: toml; extra == "test"
|
76
73
|
Requires-Dist: tox; extra == "test"
|
77
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
|
+
Dynamic: license-file
|
78
79
|
|
79
80
|
===================================================
|
80
81
|
`Teuthology` -- The Ceph integration test framework
|
@@ -5,7 +5,7 @@ scripts/exporter.py,sha256=gp7PjO9xLXIuElRiAbKUNxZd2D70j0WgirHHgfInQ_Q,423
|
|
5
5
|
scripts/kill.py,sha256=EvkEA8_60WfCyvifVyaqYlVJfFRJxSoM0iTmUnXXHR8,1662
|
6
6
|
scripts/lock.py,sha256=E0J6HP-Y7aw9mHSM9LbS3CpzDz-tiTeDB0rFmkx4bJw,5222
|
7
7
|
scripts/ls.py,sha256=3-mobC_B9WpsSx0Oa6hf-bjEx1N-BAU_jgNGFLQgtYE,393
|
8
|
-
scripts/node_cleanup.py,sha256=
|
8
|
+
scripts/node_cleanup.py,sha256=dfuHUe23LDsEXML_yFQV6BkJGb6KkHLu9zHIBTgQaRQ,2249
|
9
9
|
scripts/openstack.py,sha256=T8lHFiy41Ja3hFgu4hn0oFzX3JlBVReUAUzZd-gRjfU,13127
|
10
10
|
scripts/prune_logs.py,sha256=VL5yXKMBqGHtpkEQ7p4yCaNuAMrmifnCRUA_aRUW3hM,1377
|
11
11
|
scripts/queue.py,sha256=JAusXNUem4X-rnZ8cqHsfndBqzjKsmB5J05KvaxOpUw,1175
|
@@ -14,14 +14,14 @@ scripts/report.py,sha256=OaF7lQzxx7bwvrXEDhoLANzULGuvIUtEHIRgoxHjImE,1704
|
|
14
14
|
scripts/results.py,sha256=I13-JfHdPLEc0Hb6rJ9TdppNEG8t5LnkhAbFbpWTXOc,989
|
15
15
|
scripts/run.py,sha256=Hk4mJ_ECG8Det-vQue5zizUWZMPaWHVpwd3JN28Gl3Y,1516
|
16
16
|
scripts/schedule.py,sha256=2KKIdUCDmSqzQnnQ3ubyPvpNCxFAYb53_08J9h4K6Xs,2965
|
17
|
-
scripts/suite.py,sha256=
|
17
|
+
scripts/suite.py,sha256=UFmwVjBaNeSsWQsMRzJUaArxnPQZxwfi5acqp1ThMXI,14386
|
18
18
|
scripts/supervisor.py,sha256=yoMUfoEioh73IpTN9DjUCSYHWvIGuCxp7ubj73lbIWU,973
|
19
19
|
scripts/update_inventory.py,sha256=3DnKrLCRlje44xkLNX1X1Cvkqs4FiWKLZj20ouGxNB8,1272
|
20
20
|
scripts/updatekeys.py,sha256=JKrf8md1pW_R91yN51vGXtUJqs9bWCXshqaFFBRwNFI,859
|
21
21
|
scripts/wait.py,sha256=YtJ3rXb8sIUl1ojtzadjD3TE-YXRdOtkFXlJAmEh1IU,728
|
22
|
-
teuthology/__init__.py,sha256=
|
22
|
+
teuthology/__init__.py,sha256=I6HUxgPso5E_LTGLGFz5y_XjTefUqAqfZeN1d-rVqks,3778
|
23
23
|
teuthology/beanstalk.py,sha256=glA75hY8j3nQVn8T9DbQBHCQfoVDhpdNLgGHZywDYzM,6308
|
24
|
-
teuthology/config.py,sha256=
|
24
|
+
teuthology/config.py,sha256=ytJplrDjqMy34_gEFeTI85cAbVhRgrPVVDxoHvriZi0,9587
|
25
25
|
teuthology/contextutil.py,sha256=GhtTPbl8McNmCrlovQ79G-fjgUTxnQQjYLVSj6FpBU8,5242
|
26
26
|
teuthology/describe_tests.py,sha256=R0Wjern-RaUohYoIMy6q5ZHe2JZfSUZWJy4-DZoG0yA,12654
|
27
27
|
teuthology/exceptions.py,sha256=afFFYIb54lu7a-dTICr7_3v_qANY4ixyjYrjlGN0Cyk,5858
|
@@ -30,31 +30,29 @@ teuthology/exporter.py,sha256=Vnk4f85C0xhae4OjdeibbzyXEG41coSLLfNmvHz5428,9855
|
|
30
30
|
teuthology/job_status.py,sha256=3CWkKOFvRtqj_xYnRBeth-RYidKynum4Qcdu-HVuv_4,975
|
31
31
|
teuthology/kill.py,sha256=161h7ne1-aYpUAXzUE4aNPSKT1PSgZWPJCy_S1YPoSw,8601
|
32
32
|
teuthology/ls.py,sha256=dyWawq4aJHrgxaWnq4J1iG4VMx7Kk_By8mZd5vAV0ws,1993
|
33
|
-
teuthology/misc.py,sha256=
|
33
|
+
teuthology/misc.py,sha256=n6uopfUZ8faHazVHE8laDEO9A3gSt-iVHd_1Bqf4mQw,40370
|
34
34
|
teuthology/packaging.py,sha256=Q_x2aXy3RJ19iJc4WszMfpXaSeKa44EOvuZXAiT15Dc,35566
|
35
35
|
teuthology/parallel.py,sha256=x4q5Fr4iLn52usjJBkI0EbGSpD9JI6AXItvuf7sBgBg,2890
|
36
36
|
teuthology/prune.py,sha256=vRxHf-yQ1bkNu6TsFUzeapdTR2C7kUQcCHBEuL8rnRc,7345
|
37
37
|
teuthology/reimage.py,sha256=rIe4PfA6uF3vAEWpyQUxfVFLP8ueAw4CtJFLsw9Ymls,1904
|
38
|
-
teuthology/repo_utils.py,sha256=
|
38
|
+
teuthology/repo_utils.py,sha256=sFVzm11RWfULlCaei8CYopA7-6aX6mX_jwpSfhqoEUg,16424
|
39
39
|
teuthology/report.py,sha256=hxj5w28HW938QFnLGWFcSZ1Kzn8f56khRJAKTCBMAPw,20475
|
40
40
|
teuthology/results.py,sha256=-myx_dTehDV0D48l26U5oywEAMsaqtEaWlMkjfCkeqA,8588
|
41
|
-
teuthology/run.py,sha256=
|
41
|
+
teuthology/run.py,sha256=FHHJlZYOzuzndTLuT2GPd9zE1JNd1gQ8_89QXkRfelY,13273
|
42
42
|
teuthology/run_tasks.py,sha256=VcGK7WEWelg6iE0rJ8il8TyHzS75Kpu4tSeDLP17EYA,12472
|
43
43
|
teuthology/safepath.py,sha256=AvzzYmXIySHdz9mEVSQU1UnTV6lni3yTe_XKv-nXPSY,1226
|
44
44
|
teuthology/schedule.py,sha256=8IFkDi191gD8HGjnjcu8RGTUtKN84p1p_GDiyfbelpc,4712
|
45
|
-
teuthology/scrape.py,sha256=
|
45
|
+
teuthology/scrape.py,sha256=m8kFIIXUBQVwfp36A4hdHy984Zrxh_PLWEfjk_A2VaY,17593
|
46
46
|
teuthology/timer.py,sha256=_FxgyNvAJhL60PIdnZevufUjp0K0A_Te1wf61VdNsSo,3468
|
47
47
|
teuthology/dispatcher/__init__.py,sha256=XfhkKgnfQ92xr8a864N8Y5H50sz0flcqPeoZcRfCYGA,12438
|
48
|
-
teuthology/dispatcher/supervisor.py,sha256=
|
48
|
+
teuthology/dispatcher/supervisor.py,sha256=98VpM-hpIyJ7EdK0O_DjmUpIjBaHx_gecPWuCkGMvOM,13880
|
49
49
|
teuthology/lock/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
|
-
teuthology/lock/cli.py,sha256=
|
51
|
-
teuthology/lock/ops.py,sha256=
|
52
|
-
teuthology/lock/query.py,sha256=
|
53
|
-
teuthology/lock/util.py,sha256=
|
54
|
-
teuthology/lock/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
|
-
teuthology/lock/test/test_lock.py,sha256=Sxppi_4puEzXln6UtKY69ZC8ReXGRFV7ObPTOqRG-lI,229
|
50
|
+
teuthology/lock/cli.py,sha256=hu9fIiMxHMVEprTDOtX73CofSU2x0zzCPOgkyWa_53I,12047
|
51
|
+
teuthology/lock/ops.py,sha256=3lHBWrbkUkVPO6yuArBq7B1qkQCp5yEeitMCZlzsdoc,19969
|
52
|
+
teuthology/lock/query.py,sha256=QF9deBzwexAIaZjl2FKtxRLDv6y6C162iRqzHvw6PxI,6603
|
53
|
+
teuthology/lock/util.py,sha256=RpU-nwWTHpZWu0YHhA7LCWdQNqFrz_f6oaz28gfwGHw,3758
|
56
54
|
teuthology/nuke/__init__.py,sha256=qlnMNKy3ULSuJhq9NO9PaUrFn7Gv35HmZlMWOCHfykk,619
|
57
|
-
teuthology/openstack/__init__.py,sha256=
|
55
|
+
teuthology/openstack/__init__.py,sha256=F6wH0YDLxbyymd90zRBBesb8wJAnRReWqMPLi6RWjYk,56405
|
58
56
|
teuthology/openstack/archive-key,sha256=x_4TjSfktzupIuRYnJA8vwFj6jspXGNVR_8YvajZBtU,1675
|
59
57
|
teuthology/openstack/archive-key.pub,sha256=k0jel1IFoPHxamhXEqkhcA2n_czoQLZeCMn_N-onbqY,391
|
60
58
|
teuthology/openstack/openstack-centos-6.5-user-data.txt,sha256=MAXQr7PH2sQmx9EUr9XdmEcnhlN7L0e0LEdL7LlnF-Q,1201
|
@@ -68,23 +66,23 @@ teuthology/openstack/openstack-teuthology.init,sha256=jjARL833tMT6RmbrrGCkitpc9N
|
|
68
66
|
teuthology/openstack/openstack-ubuntu-12.04-user-data.txt,sha256=poTBKswDTm98VjXHnNLlO5p2OuLBWp5aKivM52yKxvU,988
|
69
67
|
teuthology/openstack/openstack-ubuntu-14.04-user-data.txt,sha256=Cko6ek8dU0VXXFD-HVYj179UZTzUu4ZGjze3DDJSz5w,905
|
70
68
|
teuthology/openstack/openstack-user-data.txt,sha256=lyzGBNI0hPury7DSsgqEyUfkc0GVyw6uHdKkZrg_5Wc,1024
|
71
|
-
teuthology/openstack/setup-openstack.sh,sha256=
|
69
|
+
teuthology/openstack/setup-openstack.sh,sha256=TKtlSRarN3Fm3EuS8ZywIEunaTwnYJW3vylSI6PB_LE,25695
|
72
70
|
teuthology/orchestra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
73
71
|
teuthology/orchestra/cluster.py,sha256=o46Q1L05YKWNB5szNMfZU8l0X8ndqXWU7tDrBlIgjB0,6697
|
74
|
-
teuthology/orchestra/connection.py,sha256=
|
72
|
+
teuthology/orchestra/connection.py,sha256=OFb8ahpg0e04ICijevnhut_ckN0Ls7oQxhVXQt-p90Q,4078
|
75
73
|
teuthology/orchestra/console.py,sha256=DVW2T3F0_Kcm1KyjIu05ngj8c3v5WxScJeH3fZtr81k,15718
|
76
74
|
teuthology/orchestra/monkey.py,sha256=YtwEnrQyEOEJG2_oozzDmnfsB33jeAmtzvsxEbnLkfA,1385
|
77
|
-
teuthology/orchestra/opsys.py,sha256=
|
78
|
-
teuthology/orchestra/remote.py,sha256=
|
79
|
-
teuthology/orchestra/run.py,sha256=
|
75
|
+
teuthology/orchestra/opsys.py,sha256=BwITAeKJMAFAeQoeu8AMvBIarR1gHsT2oDPGYEfaBzg,7412
|
76
|
+
teuthology/orchestra/remote.py,sha256=pBlTf9bdl0lVFgYoQr0sZnQq0IsSQQWowgCT3swHRtM,27974
|
77
|
+
teuthology/orchestra/run.py,sha256=z_iFiZ2-GkfF0OG_1d8u9uQ_PLe2ggFQ0u9_PfYr-Qc,16444
|
80
78
|
teuthology/orchestra/daemon/__init__.py,sha256=gB0iOtyIROajsYE-UTT-unCnLxkeyYJxLQ7u2bqoaxk,66
|
81
|
-
teuthology/orchestra/daemon/cephadmunit.py,sha256=
|
79
|
+
teuthology/orchestra/daemon/cephadmunit.py,sha256=C_k3T__3CXK4zCctega5C16_oyzXWJIyPIYlOHTR6s8,6133
|
82
80
|
teuthology/orchestra/daemon/group.py,sha256=ydMrCtJYFc2rIa1YUVdFS2UZ3exBkTvpPq8LCojxA7M,7625
|
83
81
|
teuthology/orchestra/daemon/state.py,sha256=MdzAgBf0HubzuFP33v8UGMfhwuVYboS9W0z41bKp3sk,5598
|
84
82
|
teuthology/orchestra/daemon/systemd.py,sha256=InMxghFVqKa26DkX14Io-SW1XWTm1G8OfPEx0eUbzAU,7529
|
85
83
|
teuthology/provision/__init__.py,sha256=SBofH0pLmuP3Omlz-Y1t446ye29c319Ru2m5uL-zXJc,4859
|
86
|
-
teuthology/provision/downburst.py,sha256=
|
87
|
-
teuthology/provision/fog.py,sha256=
|
84
|
+
teuthology/provision/downburst.py,sha256=LH5FK3FG00hnJDyM50dWEkzwlMxw7R5XETydB_K1QGU,13897
|
85
|
+
teuthology/provision/fog.py,sha256=Rv303wtaQF1S2dGPm5vITVBEonknx28bEWqOVbhqlts,12849
|
88
86
|
teuthology/provision/openstack.py,sha256=aXFYQMAuSwi2obVWtdMP8OfN7_e_xF0bxBe4L0rcxpo,9589
|
89
87
|
teuthology/provision/pelagos.py,sha256=1yEE1nn3n8qdCvBoF08TvfyWkT3evXoqI4yUo19vVXA,6267
|
90
88
|
teuthology/provision/cloud/__init__.py,sha256=7MkeRHOFGqZcZbDElEK9ImHAvX_v3tmr7whpCq5WqEo,1274
|
@@ -95,10 +93,10 @@ teuthology/suite/__init__.py,sha256=Q6g2Al575h7b4LSJpZSxP8Ntiv1szhBf7ObpvKtwsmo,
|
|
95
93
|
teuthology/suite/build_matrix.py,sha256=1Ng0AY3sqjFit_K0po5YZZv0BVi4iqASZX5Ds5OzZ9Y,7432
|
96
94
|
teuthology/suite/fragment-merge.lua,sha256=nO5ER2ByU5euLfPsogj2OtKwa6YJNTgQ7h-Z9Sb8pmQ,2701
|
97
95
|
teuthology/suite/matrix.py,sha256=JhHk1ZPWUIdSYewQlsqsqMsvlwJTrNSjO4sqdXxQQg4,11468
|
98
|
-
teuthology/suite/merge.py,sha256=
|
96
|
+
teuthology/suite/merge.py,sha256=lOOYZ5vN2gYhZumIcsidlNfxYYIdgN7QjjFfhYnmCis,6519
|
99
97
|
teuthology/suite/placeholder.py,sha256=KGjq2WhfwUK_485rsZhrU3IDgwHohgDdRUA6V0fFfQ8,3652
|
100
|
-
teuthology/suite/run.py,sha256=
|
101
|
-
teuthology/suite/util.py,sha256=
|
98
|
+
teuthology/suite/run.py,sha256=V_KTiGadsOz3Bbu2AfTwamejnMVVq5gg9FOloada7ws,30727
|
99
|
+
teuthology/suite/util.py,sha256=xD0pg7-9MHMEP3vZU13XY_h26de6hjVRIVWXcz7pOt4,12774
|
102
100
|
teuthology/task/__init__.py,sha256=wkcn1hCM9W805s6_3u0F2YAagW1qbAlx5fNaCrXOBp0,4723
|
103
101
|
teuthology/task/ansible.py,sha256=O3y8T9gFyCWfTf6H9FcpFvJwkoOH7hTSNQuOI_9OQV4,18716
|
104
102
|
teuthology/task/args.py,sha256=JUw2nCCEz4pUdEJT03l_PLHSJhV3bVBIEOOtkahapRY,1731
|
@@ -116,7 +114,7 @@ teuthology/task/full_sequential_finally.py,sha256=C1sXt1n1JM4S6RChZu6pjahpsHAKVs
|
|
116
114
|
teuthology/task/hadoop.py,sha256=nS_raErpq8PMRgXCoHZfJkOTSuk1eH6mIU3npmkcmq0,12817
|
117
115
|
teuthology/task/interactive.py,sha256=BRhp2vkm_2YcZTSn-oBjFto32-jJ9Edw0gWUPYfKVrM,974
|
118
116
|
teuthology/task/iscsi.py,sha256=jjAYmzmvbXkAzZ0XmBZwy6ZuImSDZGBlRsTtfkiwRvA,5580
|
119
|
-
teuthology/task/kernel.py,sha256=
|
117
|
+
teuthology/task/kernel.py,sha256=RmnHZITwc2ustY8_skpe25SpcJRQJR652olsUx3XywI,49474
|
120
118
|
teuthology/task/knfsd.py,sha256=ZmCdqnE0oHp1T3bOLJerJjhx7FOlsGcKOWm2QgbKvf4,5395
|
121
119
|
teuthology/task/localdir.py,sha256=uFJ7nvQBgbe3oW2fmFFldwrGN8C8H5vhOPNGAmH2zyQ,1620
|
122
120
|
teuthology/task/lockfile.py,sha256=sx_MRVUu7Aqi0InY8sRO34DLOPRxGwoumsoKD7s9gA8,9002
|
@@ -139,23 +137,19 @@ teuthology/task/timer.py,sha256=EsRwXAVofdAez6mpP7TO5A7lCVQU2nAZ3mXS-oDYn3c,1260
|
|
139
137
|
teuthology/task/install/__init__.py,sha256=tTt1DLv24i1E1pah_hU3mb3cmS-2o8HTp1L7WT_Soys,21237
|
140
138
|
teuthology/task/install/deb.py,sha256=wMYfaOZ5Jf36CzGmb3jTM94BMv5l15iiH8b3_DeKeHg,7442
|
141
139
|
teuthology/task/install/redhat.py,sha256=XVVS4BP3hy2q2URs9-d4fOwNO9K7nvnTlS1XT2oVuO4,7871
|
142
|
-
teuthology/task/install/rpm.py,sha256=
|
140
|
+
teuthology/task/install/rpm.py,sha256=dTUWmSot8PvOdNXFhvh6uuqocM0KmSTnvb0YKkUUKGs,15865
|
143
141
|
teuthology/task/install/util.py,sha256=Sc7q_CgfkWXrIssFEf2SZwpqF9ZZvFAzzWHUVFgN7Qc,4179
|
144
142
|
teuthology/task/install/bin/adjust-ulimits,sha256=Bgdmytehcl6Y3e2Lmg2Gstx5r_Xkl9DvWO7g74DLzfs,299
|
145
143
|
teuthology/task/install/bin/daemon-helper,sha256=3uG_2u1jnLVLfUzJ7TDi-fWAGoFAaiQc_FRw7UtjLX0,3058
|
146
144
|
teuthology/task/install/bin/stdin-killer,sha256=qPF2v7_Q4Y1S1qz6whNIMQ0TVtKJTvnhvO3attyREvo,8633
|
147
|
-
teuthology/task/internal/__init__.py,sha256=
|
145
|
+
teuthology/task/internal/__init__.py,sha256=Og1vF1TMgnlUeigtmBZiZmo0tf5I5Xb_QHN_5m7Q1_4,19225
|
148
146
|
teuthology/task/internal/check_lock.py,sha256=n6DpqdQhoqGBefpufekofYQ1sV_7dmR8m1abGahz50w,1188
|
149
147
|
teuthology/task/internal/edit_sudoers.sh,sha256=6uJoT44TNfZnPiQp1Qbz0Fgqt0RRcYzmu8tuMfd4xJw,119
|
150
148
|
teuthology/task/internal/git_ignore_ssl.py,sha256=GxYGFfP2_sBhQCRDd1cQ3ZRVQFu9ff46vYROF-F8FLw,489
|
151
149
|
teuthology/task/internal/lock_machines.py,sha256=Bn3TR5ItJ-NGBw7s4-PdCJekxemS6HpmvzMBmYowTKE,1003
|
152
150
|
teuthology/task/internal/redhat.py,sha256=I0U-OULBfPMLYtenduRts4wG3WSg3TXuUoWVm3ChrWA,9991
|
153
|
-
teuthology/task/internal/syslog.py,sha256=
|
151
|
+
teuthology/task/internal/syslog.py,sha256=0PqJm9cVbPCzD98tNnpCiDe6NmyynwbbeCLz-PC1bhs,6823
|
154
152
|
teuthology/task/internal/vm_setup.py,sha256=cNlsBmVqXTYA6BgF5Sqd3k2eh87cnfuR1KdPUsOKskw,1825
|
155
|
-
teuthology/task/tests/__init__.py,sha256=Ve_jx04qLF7gYtMnjBhV9ILdqQrh29SQvS84eXf3XxY,6099
|
156
|
-
teuthology/task/tests/test_fetch_coredumps.py,sha256=qXwk7egZ6XjEuOiqqS62y95ZwA0EjUh11FliwPQ7ovU,4863
|
157
|
-
teuthology/task/tests/test_locking.py,sha256=g2lkKkr8etr7dlCwSeIui61CAMzeGWtSgprf4ASkkk4,947
|
158
|
-
teuthology/task/tests/test_run.py,sha256=4pNUgb2qdOzJ_3u_V8tZPsvRijTuCy16RBkeZ4XO2tY,1074
|
159
153
|
teuthology/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
154
|
teuthology/util/compat.py,sha256=3jWbf2QSMSwq2t5ZgoGZ7z0fk98sY489P7im8j6eoOU,458
|
161
155
|
teuthology/util/flock.py,sha256=iGliYoXBzaBdMCq6dSSSQOkXC3ByrIlxvdRtJaYOG4I,604
|
@@ -163,12 +157,12 @@ teuthology/util/loggerfile.py,sha256=mg6jjC2kJzhctX7VRmYms-iaJoGXEEU-8E-ud21RKXI
|
|
163
157
|
teuthology/util/scanner.py,sha256=SLcQQuUz7sgCLMXwlW_5qQFZJWbD_IETSXqd3RYsAdg,5769
|
164
158
|
teuthology/util/sentry.py,sha256=pDe_wW5wGstu8NH3FmqaWa1GYBUA8n4o6gWNa_RHklY,1529
|
165
159
|
teuthology/util/time.py,sha256=Pn2sMtP0BQd6mUKyrOp3SGJmV8uJ5hLKaQvdf1rBXJM,1575
|
166
|
-
teuthology-1.2.
|
167
|
-
teuthology-1.2.
|
168
|
-
teuthology-1.2.
|
169
|
-
teuthology-1.2.
|
170
|
-
teuthology-1.2.
|
171
|
-
teuthology-1.2.
|
172
|
-
teuthology-1.2.
|
173
|
-
teuthology-1.2.
|
174
|
-
teuthology-1.2.
|
160
|
+
teuthology-1.2.2.data/scripts/adjust-ulimits,sha256=Bgdmytehcl6Y3e2Lmg2Gstx5r_Xkl9DvWO7g74DLzfs,299
|
161
|
+
teuthology-1.2.2.data/scripts/daemon-helper,sha256=R8GE83f41E_p5SO6egeyIhABmXz1qwuCwfrc89Uo3ug,3048
|
162
|
+
teuthology-1.2.2.data/scripts/stdin-killer,sha256=GuhUjSBxU81FL8F7mUOpdIl1yH4gFpEd_Dt3KJu60DU,8627
|
163
|
+
teuthology-1.2.2.dist-info/licenses/LICENSE,sha256=ghAkcYBW8nQm9oZJTob8w6h4Ga8ovjAv3boORc0qbYs,1057
|
164
|
+
teuthology-1.2.2.dist-info/METADATA,sha256=U8UOTqUFvSbkjbGO4r4GSH0T-ilr5cASs6KzXDWBhY4,3241
|
165
|
+
teuthology-1.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
166
|
+
teuthology-1.2.2.dist-info/entry_points.txt,sha256=7TnOX2EuE5RkoVzz_rXt-12Dn5ZTk3Ie2RDu8Dw591c,910
|
167
|
+
teuthology-1.2.2.dist-info/top_level.txt,sha256=h2iGdGnj97Y9V5XwADbLYyhjY4Fek6KMSxrvYVNnphQ,19
|
168
|
+
teuthology-1.2.2.dist-info/RECORD,,
|
teuthology/lock/test/__init__.py
DELETED
File without changes
|