config = load_config(arguments)
configure_logging(config)
try:
- run(config, docker.Client(version='1.14'))
+ run(config, docker.APIClient(version='1.35'))
except KeyboardInterrupt:
sys.exit(1)
('share/doc/arvados-docker-cleaner', ['agpl-3.0.txt', 'arvados-docker-cleaner.service']),
],
install_requires=[
- 'docker-py==1.7.2',
+ # The requirements for the docker library broke when requests started
+ # supporting urllib3 2.0.
+ # See <https://github.com/docker/docker-py/issues/3113>.
+ # Make sure we get a version with the bugfix, assuming Python is
+ # recent enough.
+ 'docker>=6.1.0; python_version>"3.6"',
+ # If Python is too old, install the latest version we can and pin
+ # urllib3 ourselves.
+ 'docker~=5.0; python_version<"3.7"',
+ 'urllib3~=1.26; python_version<"3.7"',
'setuptools',
],
test_suite='tests',
self.assertEqual(event_kwargs[0]['until'], event_kwargs[1]['since'])
-@mock.patch('docker.Client', name='docker_client')
+@mock.patch('docker.APIClient', name='docker_client')
@mock.patch('arvados_docker.cleaner.run', name='cleaner_run')
class MainTestCase(unittest.TestCase):
cf.flush()
cleaner.main(['--config', cf.name])
self.assertEqual(1, docker_client.call_count)
- # 1.14 is the first version that's well defined, going back to
- # Docker 1.2, and still supported up to at least Docker 1.9.
- # See
- # <https://docs.docker.com/engine/reference/api/docker_remote_api/>.
- self.assertEqual('1.14',
+ # We are standardized on Docker API version 1.35.
+ # See DockerAPIVersion in lib/crunchrun/docker.go.
+ self.assertEqual('1.35',
docker_client.call_args[1].get('version'))
self.assertEqual(1, run_mock.call_count)
self.assertIs(run_mock.call_args[0][1], docker_client())