summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoffrey F <f.joffrey@gmail.com>2017-06-16 12:06:56 -0700
committerGitHub <noreply@github.com>2017-06-16 12:06:56 -0700
commit8645d1d41b69763b7dfb4dd0cbe3a3ab2d7f5321 (patch)
tree0e484946fa0852adfdb37a4d7c5589d4fbf2eb18
parent0ac926b1128ccb8d9088a50243c66221a1351d13 (diff)
parentff718f5dac2ba00ffbb52c0f3b1af5b687f07930 (diff)
downloaddocker-py-8645d1d41b69763b7dfb4dd0cbe3a3ab2d7f5321.tar.gz
Merge pull request #1617 from docker/create-ingress-network
Add support for ingress in create_network
-rw-r--r--docker/api/network.py13
-rw-r--r--docker/models/networks.py2
-rw-r--r--tests/integration/api_network_test.py8
3 files changed, 22 insertions, 1 deletions
diff --git a/docker/api/network.py b/docker/api/network.py
index 74f4cd2..3a45454 100644
--- a/docker/api/network.py
+++ b/docker/api/network.py
@@ -41,7 +41,8 @@ class NetworkApiMixin(object):
@minimum_version('1.21')
def create_network(self, name, driver=None, options=None, ipam=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``.
@@ -60,6 +61,8 @@ class NetworkApiMixin(object):
attachable (bool): If enabled, and the network is in the global
scope, non-service containers on worker nodes will be able to
connect to the network.
+ ingress (bool): If set, create an ingress network which provides
+ the routing-mesh in swarm mode.
Returns:
(dict): The created network reference object
@@ -129,6 +132,14 @@ class NetworkApiMixin(object):
)
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")
res = self._post_json(url, data=data)
return self._result(res, json=True)
diff --git a/docker/models/networks.py b/docker/models/networks.py
index 5868097..afb0ebe 100644
--- a/docker/models/networks.py
+++ b/docker/models/networks.py
@@ -111,6 +111,8 @@ class NetworkCollection(Collection):
labels (dict): Map of labels to set on the network. Default
``None``.
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:
(:py:class:`Network`): The network that was created.
diff --git a/tests/integration/api_network_test.py b/tests/integration/api_network_test.py
index b3ae512..5439dd7 100644
--- a/tests/integration/api_network_test.py
+++ b/tests/integration/api_network_test.py
@@ -452,6 +452,14 @@ class TestNetworks(BaseAPIIntegrationTest):
net = self.client.inspect_network(net_id)
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')
def test_prune_networks(self):
net_name, _ = self.create_network()