Kaydet (Commit) 8645d1d4 authored tarafından Joffrey F's avatar Joffrey F Kaydeden (comit) GitHub

Merge pull request #1617 from docker/create-ingress-network

Add support for ingress in create_network
...@@ -41,7 +41,8 @@ class NetworkApiMixin(object): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment