Skip to content

Commit a85cb94

Browse files
committed
fix: keyerror when creating new config(#3110)
Signed-off-by: Khushiyant <[email protected]>
1 parent 7d8a161 commit a85cb94

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

docker/models/configs.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class ConfigCollection(Collection):
3030

3131
def create(self, **kwargs):
3232
obj = self.client.api.create_config(**kwargs)
33+
obj.setdefault("Spec", {})["Name"] = kwargs.get("name")
3334
return self.prepare_model(obj)
3435
create.__doc__ = APIClient.create_config.__doc__
3536

tests/unit/fake_api.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
FAKE_NODE_ID = '24ifsmvkjbyhk'
2020
FAKE_SECRET_ID = 'epdyrw4tsi03xy3deu8g8ly6o'
2121
FAKE_SECRET_NAME = 'super_secret'
22+
FAKE_CONFIG_ID = 'sekvs771242jfdjnvfuds8232'
23+
FAKE_CONFIG_NAME = 'super_config'
2224

2325
# Each method is prefixed with HTTP method (get, post...)
2426
# for clarity and readability
@@ -512,6 +514,11 @@ def post_fake_secret():
512514
response = {'ID': FAKE_SECRET_ID}
513515
return status_code, response
514516

517+
def post_fake_config():
518+
status_code = 200
519+
response = {'ID': FAKE_CONFIG_ID}
520+
return status_code, response
521+
515522

516523
# Maps real api url to fake response callback
517524
prefix = 'http+docker://localhost'
@@ -630,4 +637,6 @@ def post_fake_secret():
630637
post_fake_network_disconnect,
631638
f'{prefix}/{CURRENT_VERSION}/secrets/create':
632639
post_fake_secret,
640+
f'{prefix}/{CURRENT_VERSION}/configs/create':
641+
post_fake_config,
633642
}

tests/unit/fake_api_client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def make_fake_api_client(overrides=None):
3737
'create_host_config.side_effect': api_client.create_host_config,
3838
'create_network.return_value': fake_api.post_fake_network()[1],
3939
'create_secret.return_value': fake_api.post_fake_secret()[1],
40+
'create_config.return_value': fake_api.post_fake_config()[1],
4041
'exec_create.return_value': fake_api.post_fake_exec_create()[1],
4142
'exec_start.return_value': fake_api.post_fake_exec_start()[1],
4243
'images.return_value': fake_api.get_fake_images()[1],

tests/unit/models_configs_test.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import unittest
2+
3+
from .fake_api_client import make_fake_client
4+
from .fake_api import FAKE_CONFIG_NAME
5+
6+
class CreateConfigsTest(unittest.TestCase):
7+
def test_create_config(self):
8+
client = make_fake_client()
9+
config = client.configs.create(name="super_config", data="config")
10+
assert config.__repr__() == "<Config: '{}'>".format(FAKE_CONFIG_NAME)

0 commit comments

Comments
 (0)