From 21c07bd76c2da2f6b20408810186f87d2250ecf2 Mon Sep 17 00:00:00 2001 From: aiordache Date: Tue, 1 Dec 2020 16:46:29 +0100 Subject: [PATCH] Move device requests to service_dict to avoid adding another field to config hash Signed-off-by: aiordache --- compose/project.py | 3 +-- compose/service.py | 10 ++-------- tests/unit/service_test.py | 23 ----------------------- 3 files changed, 3 insertions(+), 33 deletions(-) diff --git a/compose/project.py b/compose/project.py index 900487d4f..d1fecf017 100644 --- a/compose/project.py +++ b/compose/project.py @@ -128,7 +128,7 @@ class Project: config_data.secrets) service_dict['scale'] = project.get_service_scale(service_dict) - device_requests = project.get_device_requests(service_dict) + service_dict['device_requests'] = project.get_device_requests(service_dict) service_dict = translate_credential_spec_to_security_opt(service_dict) service_dict, ignored_keys = translate_deploy_keys_to_container_config( service_dict @@ -154,7 +154,6 @@ class Project: ipc_mode=ipc_mode, platform=service_dict.pop('platform', None), default_platform=default_platform, - device_requests=device_requests, extra_labels=extra_labels, **service_dict) ) diff --git a/compose/service.py b/compose/service.py index cb0baefc6..f94ba2e30 100644 --- a/compose/service.py +++ b/compose/service.py @@ -181,7 +181,6 @@ class Service: pid_mode=None, default_platform=None, extra_labels=None, - device_requests=None, **options ): self.name = name @@ -197,7 +196,6 @@ class Service: self.secrets = secrets or [] self.scale_num = scale self.default_platform = default_platform - self.device_requests = device_requests self.options = options self.extra_labels = extra_labels or [] @@ -709,7 +707,7 @@ class Service: except NoSuchImageError: return None - c = { + return { 'options': self.options, 'image_id': image_id(), 'links': self.get_link_names(), @@ -722,10 +720,6 @@ class Service: ] } - if self.device_requests: - c['devices'] = self.device_requests - return c - def get_dependency_names(self): net_name = self.network_mode.service_name pid_namespace = self.pid_mode.service_name @@ -1023,7 +1017,7 @@ class Service: privileged=options.get('privileged', False), network_mode=self.network_mode.mode, devices=options.get('devices'), - device_requests=self.device_requests, + device_requests=options.get('device_requests'), dns=options.get('dns'), dns_opt=options.get('dns_opt'), dns_search=options.get('dns_search'), diff --git a/tests/unit/service_test.py b/tests/unit/service_test.py index 4d49d2f25..72cb1d7f9 100644 --- a/tests/unit/service_test.py +++ b/tests/unit/service_test.py @@ -732,29 +732,6 @@ class ServiceTest(unittest.TestCase): } assert config_dict == expected - def test_config_dict_with_device_requests(self): - self.mock_client.inspect_image.return_value = {'Id': 'abcd'} - service = Service( - 'foo', - image='example.com/foo', - client=self.mock_client, - network_mode=ServiceNetworkMode(Service('other')), - networks={'default': None}, - device_requests=[{'driver': 'nvidia', 'device_ids': ['0'], 'capabilities': ['gpu']}]) - - config_dict = service.config_dict() - expected = { - 'image_id': 'abcd', - 'options': {'image': 'example.com/foo'}, - 'links': [], - 'net': 'other', - 'secrets': [], - 'networks': {'default': None}, - 'volumes_from': [], - 'devices': [{'driver': 'nvidia', 'device_ids': ['0'], 'capabilities': ['gpu']}], - } - assert config_dict == expected - def test_config_hash_matches_label(self): self.mock_client.inspect_image.return_value = {'Id': 'abcd'} service = Service(