Browse Source

Move device requests to service_dict to avoid adding another field to config hash

Signed-off-by: aiordache <[email protected]>
aiordache 4 years ago
parent
commit
21c07bd76c
3 changed files with 3 additions and 33 deletions
  1. 1 2
      compose/project.py
  2. 2 8
      compose/service.py
  3. 0 23
      tests/unit/service_test.py

+ 1 - 2
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)
             )

+ 2 - 8
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'),

+ 0 - 23
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(