mirror of https://github.com/docker/docker-py.git
Add support for ingress in create_network
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
7af7e1b73a
commit
ff718f5dac
|
@ -41,7 +41,8 @@ class NetworkApiMixin(object):
|
||||||
@minimum_version('1.21')
|
@minimum_version('1.21')
|
||||||
def create_network(self, name, driver=None, options=None, ipam=None,
|
def create_network(self, name, driver=None, options=None, ipam=None,
|
||||||
check_duplicate=None, internal=False, labels=None,
|
check_duplicate=None, internal=False, labels=None,
|
||||||
enable_ipv6=False, attachable=None, scope=None):
|
enable_ipv6=False, attachable=None, scope=None,
|
||||||
|
ingress=None):
|
||||||
"""
|
"""
|
||||||
Create a network. Similar to the ``docker network create``.
|
Create a network. Similar to the ``docker network create``.
|
||||||
|
|
||||||
|
@ -60,6 +61,8 @@ class NetworkApiMixin(object):
|
||||||
attachable (bool): If enabled, and the network is in the global
|
attachable (bool): If enabled, and the network is in the global
|
||||||
scope, non-service containers on worker nodes will be able to
|
scope, non-service containers on worker nodes will be able to
|
||||||
connect to the network.
|
connect to the network.
|
||||||
|
ingress (bool): If set, create an ingress network which provides
|
||||||
|
the routing-mesh in swarm mode.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
(dict): The created network reference object
|
(dict): The created network reference object
|
||||||
|
@ -129,6 +132,14 @@ class NetworkApiMixin(object):
|
||||||
)
|
)
|
||||||
data['Attachable'] = attachable
|
data['Attachable'] = attachable
|
||||||
|
|
||||||
|
if ingress is not None:
|
||||||
|
if version_lt(self._version, '1.29'):
|
||||||
|
raise InvalidVersion(
|
||||||
|
'ingress is not supported in API version < 1.29'
|
||||||
|
)
|
||||||
|
|
||||||
|
data['Ingress'] = ingress
|
||||||
|
|
||||||
url = self._url("/networks/create")
|
url = self._url("/networks/create")
|
||||||
res = self._post_json(url, data=data)
|
res = self._post_json(url, data=data)
|
||||||
return self._result(res, json=True)
|
return self._result(res, json=True)
|
||||||
|
|
|
@ -111,6 +111,8 @@ class NetworkCollection(Collection):
|
||||||
labels (dict): Map of labels to set on the network. Default
|
labels (dict): Map of labels to set on the network. Default
|
||||||
``None``.
|
``None``.
|
||||||
enable_ipv6 (bool): Enable IPv6 on the network. Default ``False``.
|
enable_ipv6 (bool): Enable IPv6 on the network. Default ``False``.
|
||||||
|
ingress (bool): If set, create an ingress network which provides
|
||||||
|
the routing-mesh in swarm mode.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
(:py:class:`Network`): The network that was created.
|
(:py:class:`Network`): The network that was created.
|
||||||
|
|
|
@ -452,6 +452,14 @@ class TestNetworks(BaseAPIIntegrationTest):
|
||||||
net = self.client.inspect_network(net_id)
|
net = self.client.inspect_network(net_id)
|
||||||
assert net['Attachable'] is True
|
assert net['Attachable'] is True
|
||||||
|
|
||||||
|
@requires_api_version('1.29')
|
||||||
|
def test_create_network_ingress(self):
|
||||||
|
assert self.client.init_swarm('eth0')
|
||||||
|
self.client.remove_network('ingress')
|
||||||
|
_, net_id = self.create_network(driver='overlay', ingress=True)
|
||||||
|
net = self.client.inspect_network(net_id)
|
||||||
|
assert net['Ingress'] is True
|
||||||
|
|
||||||
@requires_api_version('1.25')
|
@requires_api_version('1.25')
|
||||||
def test_prune_networks(self):
|
def test_prune_networks(self):
|
||||||
net_name, _ = self.create_network()
|
net_name, _ = self.create_network()
|
||||||
|
|
Loading…
Reference in New Issue