diff options
author | Joffrey F <f.joffrey@gmail.com> | 2017-06-16 12:06:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-16 12:06:56 -0700 |
commit | 8645d1d41b69763b7dfb4dd0cbe3a3ab2d7f5321 (patch) | |
tree | 0e484946fa0852adfdb37a4d7c5589d4fbf2eb18 | |
parent | 0ac926b1128ccb8d9088a50243c66221a1351d13 (diff) | |
parent | ff718f5dac2ba00ffbb52c0f3b1af5b687f07930 (diff) | |
download | docker-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.py | 13 | ||||
-rw-r--r-- | docker/models/networks.py | 2 | ||||
-rw-r--r-- | tests/integration/api_network_test.py | 8 |
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() |