|
5 | 5 | import pytest
|
6 | 6 |
|
7 | 7 | import docker
|
8 |
| -from ..helpers import random_name |
9 |
| -from ..helpers import requires_api_version |
10 | 8 | from .base import BaseIntegrationTest
|
11 | 9 | from .base import TEST_API_VERSION
|
| 10 | +from ..helpers import random_name |
| 11 | +from ..helpers import requires_api_version |
12 | 12 |
|
13 | 13 |
|
14 | 14 | class ContainerCollectionTest(BaseIntegrationTest):
|
@@ -104,6 +104,96 @@ def test_run_with_network(self):
|
104 | 104 | assert 'Networks' in attrs['NetworkSettings']
|
105 | 105 | assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name]
|
106 | 106 |
|
| 107 | + def test_run_with_networking_config(self): |
| 108 | + net_name = random_name() |
| 109 | + client = docker.from_env(version=TEST_API_VERSION) |
| 110 | + client.networks.create(net_name) |
| 111 | + self.tmp_networks.append(net_name) |
| 112 | + |
| 113 | + test_aliases = ['hello'] |
| 114 | + test_driver_opt = {'key1': 'a'} |
| 115 | + |
| 116 | + networking_config = { |
| 117 | + net_name: client.api.create_endpoint_config( |
| 118 | + aliases=test_aliases, |
| 119 | + driver_opt=test_driver_opt |
| 120 | + ) |
| 121 | + } |
| 122 | + |
| 123 | + container = client.containers.run( |
| 124 | + 'alpine', 'echo hello world', network=net_name, |
| 125 | + networking_config=networking_config, |
| 126 | + detach=True |
| 127 | + ) |
| 128 | + self.tmp_containers.append(container.id) |
| 129 | + |
| 130 | + attrs = container.attrs |
| 131 | + |
| 132 | + assert 'NetworkSettings' in attrs |
| 133 | + assert 'Networks' in attrs['NetworkSettings'] |
| 134 | + assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name] |
| 135 | + assert attrs['NetworkSettings']['Networks'][net_name]['Aliases'] == \ |
| 136 | + test_aliases |
| 137 | + assert attrs['NetworkSettings']['Networks'][net_name]['DriverOpts'] \ |
| 138 | + == test_driver_opt |
| 139 | + |
| 140 | + def test_run_with_networking_config_with_undeclared_network(self): |
| 141 | + net_name = random_name() |
| 142 | + client = docker.from_env(version=TEST_API_VERSION) |
| 143 | + client.networks.create(net_name) |
| 144 | + self.tmp_networks.append(net_name) |
| 145 | + |
| 146 | + test_aliases = ['hello'] |
| 147 | + test_driver_opt = {'key1': 'a'} |
| 148 | + |
| 149 | + networking_config = { |
| 150 | + net_name: client.api.create_endpoint_config( |
| 151 | + aliases=test_aliases, |
| 152 | + driver_opt=test_driver_opt |
| 153 | + ), |
| 154 | + 'bar': client.api.create_endpoint_config( |
| 155 | + aliases=['test'], |
| 156 | + driver_opt={'key2': 'b'} |
| 157 | + ), |
| 158 | + } |
| 159 | + |
| 160 | + with pytest.raises(docker.errors.APIError) as e: |
| 161 | + container = client.containers.run( |
| 162 | + 'alpine', 'echo hello world', network=net_name, |
| 163 | + networking_config=networking_config, |
| 164 | + detach=True |
| 165 | + ) |
| 166 | + self.tmp_containers.append(container.id) |
| 167 | + |
| 168 | + def test_run_with_networking_config_only_undeclared_network(self): |
| 169 | + net_name = random_name() |
| 170 | + client = docker.from_env(version=TEST_API_VERSION) |
| 171 | + client.networks.create(net_name) |
| 172 | + self.tmp_networks.append(net_name) |
| 173 | + |
| 174 | + networking_config = { |
| 175 | + 'bar': client.api.create_endpoint_config( |
| 176 | + aliases=['hello'], |
| 177 | + driver_opt={'key1': 'a'} |
| 178 | + ), |
| 179 | + } |
| 180 | + |
| 181 | + container = client.containers.run( |
| 182 | + 'alpine', 'echo hello world', network=net_name, |
| 183 | + networking_config=networking_config, |
| 184 | + detach=True |
| 185 | + ) |
| 186 | + self.tmp_containers.append(container.id) |
| 187 | + |
| 188 | + attrs = container.attrs |
| 189 | + |
| 190 | + assert 'NetworkSettings' in attrs |
| 191 | + assert 'Networks' in attrs['NetworkSettings'] |
| 192 | + assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name] |
| 193 | + assert attrs['NetworkSettings']['Networks'][net_name]['Aliases'] is None |
| 194 | + assert (attrs['NetworkSettings']['Networks'][net_name]['DriverOpts'] |
| 195 | + is None) |
| 196 | + |
107 | 197 | def test_run_with_none_driver(self):
|
108 | 198 | client = docker.from_env(version=TEST_API_VERSION)
|
109 | 199 |
|
@@ -187,7 +277,7 @@ def test_get(self):
|
187 | 277 | container = client.containers.run("alpine", "sleep 300", detach=True)
|
188 | 278 | self.tmp_containers.append(container.id)
|
189 | 279 | assert client.containers.get(container.id).attrs[
|
190 |
| - 'Config']['Image'] == "alpine" |
| 280 | + 'Config']['Image'] == "alpine" |
191 | 281 |
|
192 | 282 | def test_list(self):
|
193 | 283 | client = docker.from_env(version=TEST_API_VERSION)
|
|
0 commit comments