зеркало из https://github.com/docker/docker-py.git
Merge pull request #2551 from haboustak/2550-add-driveropts-to-endpointconfig
Add support for DriverOpts in EndpointConfig
This commit is contained in:
Коммит
74a0734d37
|
@ -636,6 +636,8 @@ class ContainerApiMixin(object):
|
|||
network, using the IPv6 protocol. Defaults to ``None``.
|
||||
link_local_ips (:py:class:`list`): A list of link-local (IPv4/IPv6)
|
||||
addresses.
|
||||
driver_opt (dict): A dictionary of options to provide to the
|
||||
network driver. Defaults to ``None``.
|
||||
|
||||
Returns:
|
||||
(dict) An endpoint config.
|
||||
|
|
|
@ -216,7 +216,7 @@ class NetworkApiMixin(object):
|
|||
def connect_container_to_network(self, container, net_id,
|
||||
ipv4_address=None, ipv6_address=None,
|
||||
aliases=None, links=None,
|
||||
link_local_ips=None):
|
||||
link_local_ips=None, driver_opt=None):
|
||||
"""
|
||||
Connect a container to a network.
|
||||
|
||||
|
@ -240,7 +240,8 @@ class NetworkApiMixin(object):
|
|||
"Container": container,
|
||||
"EndpointConfig": self.create_endpoint_config(
|
||||
aliases=aliases, links=links, ipv4_address=ipv4_address,
|
||||
ipv6_address=ipv6_address, link_local_ips=link_local_ips
|
||||
ipv6_address=ipv6_address, link_local_ips=link_local_ips,
|
||||
driver_opt=driver_opt
|
||||
),
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,8 @@ class Network(Model):
|
|||
network, using the IPv6 protocol. Defaults to ``None``.
|
||||
link_local_ips (:py:class:`list`): A list of link-local (IPv4/IPv6)
|
||||
addresses.
|
||||
driver_opt (dict): A dictionary of options to provide to the
|
||||
network driver. Defaults to ``None``.
|
||||
|
||||
Raises:
|
||||
:py:class:`docker.errors.APIError`
|
||||
|
|
|
@ -4,7 +4,7 @@ from ..utils import normalize_links, version_lt
|
|||
|
||||
class EndpointConfig(dict):
|
||||
def __init__(self, version, aliases=None, links=None, ipv4_address=None,
|
||||
ipv6_address=None, link_local_ips=None):
|
||||
ipv6_address=None, link_local_ips=None, driver_opt=None):
|
||||
if version_lt(version, '1.22'):
|
||||
raise errors.InvalidVersion(
|
||||
'Endpoint config is not supported for API version < 1.22'
|
||||
|
@ -33,6 +33,15 @@ class EndpointConfig(dict):
|
|||
if ipam_config:
|
||||
self['IPAMConfig'] = ipam_config
|
||||
|
||||
if driver_opt:
|
||||
if version_lt(version, '1.32'):
|
||||
raise errors.InvalidVersion(
|
||||
'DriverOpts is not supported for API version < 1.32'
|
||||
)
|
||||
if not isinstance(driver_opt, dict):
|
||||
raise TypeError('driver_opt must be a dictionary')
|
||||
self['DriverOpts'] = driver_opt
|
||||
|
||||
|
||||
class NetworkingConfig(dict):
|
||||
def __init__(self, endpoints_config=None):
|
||||
|
|
|
@ -275,6 +275,27 @@ class TestNetworks(BaseAPIIntegrationTest):
|
|||
assert 'LinkLocalIPs' in net_cfg['IPAMConfig']
|
||||
assert net_cfg['IPAMConfig']['LinkLocalIPs'] == ['169.254.8.8']
|
||||
|
||||
@requires_api_version('1.32')
|
||||
def test_create_with_driveropt(self):
|
||||
container = self.client.create_container(
|
||||
TEST_IMG, 'top',
|
||||
networking_config=self.client.create_networking_config(
|
||||
{
|
||||
'bridge': self.client.create_endpoint_config(
|
||||
driver_opt={'com.docker-py.setting': 'on'}
|
||||
)
|
||||
}
|
||||
),
|
||||
host_config=self.client.create_host_config(network_mode='bridge')
|
||||
)
|
||||
self.tmp_containers.append(container)
|
||||
self.client.start(container)
|
||||
container_data = self.client.inspect_container(container)
|
||||
net_cfg = container_data['NetworkSettings']['Networks']['bridge']
|
||||
assert 'DriverOpts' in net_cfg
|
||||
assert 'com.docker-py.setting' in net_cfg['DriverOpts']
|
||||
assert net_cfg['DriverOpts']['com.docker-py.setting'] == 'on'
|
||||
|
||||
@requires_api_version('1.22')
|
||||
def test_create_with_links(self):
|
||||
net_name, net_id = self.create_network()
|
||||
|
|
|
@ -136,7 +136,8 @@ class NetworkTest(BaseAPIClientTest):
|
|||
container={'Id': container_id},
|
||||
net_id=network_id,
|
||||
aliases=['foo', 'bar'],
|
||||
links=[('baz', 'quux')]
|
||||
links=[('baz', 'quux')],
|
||||
driver_opt={'com.docker-py.setting': 'yes'},
|
||||
)
|
||||
|
||||
assert post.call_args[0][0] == (
|
||||
|
@ -148,6 +149,7 @@ class NetworkTest(BaseAPIClientTest):
|
|||
'EndpointConfig': {
|
||||
'Aliases': ['foo', 'bar'],
|
||||
'Links': ['baz:quux'],
|
||||
'DriverOpts': {'com.docker-py.setting': 'yes'},
|
||||
},
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче