|
|
@@ -1,6 +1,7 @@
|
|
|
from __future__ import absolute_import
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
+import copy
|
|
|
import json
|
|
|
import os
|
|
|
import random
|
|
|
@@ -1500,34 +1501,47 @@ class ProjectTest(DockerClientTestCase):
|
|
|
def test_project_up_with_added_secrets(self):
|
|
|
node = create_host_file(self.client, os.path.abspath('tests/fixtures/secrets/default'))
|
|
|
|
|
|
- config_data = build_config(
|
|
|
- version=V3_1,
|
|
|
- services=[{
|
|
|
- 'name': 'web',
|
|
|
- 'image': 'busybox:latest',
|
|
|
- 'command': 'cat /run/secrets/special',
|
|
|
- # 'secrets': [
|
|
|
- # types.ServiceSecret.parse({'source': 'super', 'target': 'special'}),
|
|
|
- # ],
|
|
|
- 'environment': ['constraint:node=={}'.format(node if node is not None else '*')]
|
|
|
- }],
|
|
|
- secrets={
|
|
|
+ config_input1 = {
|
|
|
+ 'version': V3_1,
|
|
|
+ 'services': [
|
|
|
+ {
|
|
|
+ 'name': 'web',
|
|
|
+ 'image': 'busybox:latest',
|
|
|
+ 'command': 'cat /run/secrets/special',
|
|
|
+ 'environment': ['constraint:node=={}'.format(node if node is not None else '')]
|
|
|
+ }
|
|
|
+
|
|
|
+ ],
|
|
|
+ 'secrets': {
|
|
|
'super': {
|
|
|
- 'file': os.path.abspath('tests/fixtures/secrets/default'),
|
|
|
- },
|
|
|
- },
|
|
|
- )
|
|
|
+ 'file': os.path.abspath('tests/fixtures/secrets/default')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ config_input2 = copy.deepcopy(config_input1)
|
|
|
+ # Add the secret
|
|
|
+ config_input2['services'][0]['secrets'] = [
|
|
|
+ types.ServiceSecret.parse({'source': 'super', 'target': 'special'})
|
|
|
+ ]
|
|
|
|
|
|
+ config_data1 = build_config(**config_input1)
|
|
|
+ config_data2 = build_config(**config_input2)
|
|
|
+
|
|
|
+ # First up with non-secret
|
|
|
project = Project.from_config(
|
|
|
client=self.client,
|
|
|
name='composetest',
|
|
|
- config_data=config_data,
|
|
|
+ config_data=config_data1,
|
|
|
)
|
|
|
project.up()
|
|
|
project.stop()
|
|
|
- project.services[0].secrets = [
|
|
|
- types.ServiceSecret.parse({'source': 'super', 'target': 'special'})
|
|
|
- ]
|
|
|
+
|
|
|
+ # Then up with secret
|
|
|
+ project = Project.from_config(
|
|
|
+ client=self.client,
|
|
|
+ name='composetest',
|
|
|
+ config_data=config_data2,
|
|
|
+ )
|
|
|
project.up()
|
|
|
project.stop()
|
|
|
|