summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorAanand Prasad <aanand.prasad@gmail.com>2016-01-14 16:33:26 +0000
committerAanand Prasad <aanand.prasad@gmail.com>2016-01-14 18:19:35 +0000
commitd00a5bb08671dc43c4db1fb8dc2ea90b68bbc1d9 (patch)
tree85c95101938ddfdb5fe38d8389d0ea98823bf808 /docker
parente2878cbcc3a7eef99917adc1be252800b0e41ece (diff)
downloaddocker-py-d00a5bb08671dc43c4db1fb8dc2ea90b68bbc1d9.tar.gz
Implement support for network-scoped aliases
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
Diffstat (limited to 'docker')
-rw-r--r--docker/api/container.py11
-rw-r--r--docker/api/network.py9
-rw-r--r--docker/utils/__init__.py2
-rw-r--r--docker/utils/utils.py23
4 files changed, 39 insertions, 6 deletions
diff --git a/docker/api/container.py b/docker/api/container.py
index 78cd216..ceac173 100644
--- a/docker/api/container.py
+++ b/docker/api/container.py
@@ -4,6 +4,7 @@ from datetime import datetime
from .. import errors
from .. import utils
+from ..utils.utils import create_networking_config, create_endpoint_config
class ContainerApiMixin(object):
@@ -98,7 +99,7 @@ class ContainerApiMixin(object):
cpu_shares=None, working_dir=None, domainname=None,
memswap_limit=None, cpuset=None, host_config=None,
mac_address=None, labels=None, volume_driver=None,
- stop_signal=None):
+ stop_signal=None, networking_config=None):
if isinstance(volumes, six.string_types):
volumes = [volumes, ]
@@ -113,7 +114,7 @@ class ContainerApiMixin(object):
tty, mem_limit, ports, environment, dns, volumes, volumes_from,
network_disabled, entrypoint, cpu_shares, working_dir, domainname,
memswap_limit, cpuset, host_config, mac_address, labels,
- volume_driver, stop_signal
+ volume_driver, stop_signal, networking_config,
)
return self.create_container_from_config(config, name)
@@ -139,6 +140,12 @@ class ContainerApiMixin(object):
kwargs['version'] = self._version
return utils.create_host_config(*args, **kwargs)
+ def create_networking_config(self, *args, **kwargs):
+ return create_networking_config(*args, **kwargs)
+
+ def create_endpoint_config(self, *args, **kwargs):
+ return create_endpoint_config(self._version, *args, **kwargs)
+
@utils.check_resource
def diff(self, container):
return self._result(
diff --git a/docker/api/network.py b/docker/api/network.py
index ce3f511..37b409c 100644
--- a/docker/api/network.py
+++ b/docker/api/network.py
@@ -47,8 +47,13 @@ class NetworkApiMixin(object):
@check_resource
@minimum_version('1.21')
- def connect_container_to_network(self, container, net_id):
- data = {"container": container}
+ def connect_container_to_network(self, container, net_id, aliases=None):
+ data = {
+ "Container": container,
+ "EndpointConfig": {
+ "Aliases": aliases,
+ },
+ }
url = self._url("/networks/{0}/connect", net_id)
self._post_json(url, data=data)
diff --git a/docker/utils/__init__.py b/docker/utils/__init__.py
index 2f308bf..70c0e9d 100644
--- a/docker/utils/__init__.py
+++ b/docker/utils/__init__.py
@@ -4,7 +4,7 @@ from .utils import (
kwargs_from_env, convert_filters, datetime_to_timestamp, create_host_config,
create_container_config, parse_bytes, ping_registry, parse_env_file,
version_lt, version_gte, decode_json_header, split_command,
- create_ipam_config, create_ipam_pool
+ create_ipam_config, create_ipam_pool,
) # flake8: noqa
from .types import Ulimit, LogConfig # flake8: noqa
diff --git a/docker/utils/utils.py b/docker/utils/utils.py
index e7b6616..5a23201 100644
--- a/docker/utils/utils.py
+++ b/docker/utils/utils.py
@@ -715,6 +715,26 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
return host_config
+def create_networking_config(endpoints_config=None):
+ networking_config = {}
+
+ if endpoints_config:
+ networking_config["EndpointsConfig"] = endpoints_config
+
+ return networking_config
+
+
+def create_endpoint_config(version, aliases=None):
+ endpoint_config = {}
+
+ if aliases:
+ if version_lt(version, '1.22'):
+ raise host_config_version_error('endpoint_config.aliases', '1.22')
+ endpoint_config["Aliases"] = aliases
+
+ return endpoint_config
+
+
def parse_env_file(env_file):
"""
Reads a line-separated environment file.
@@ -752,7 +772,7 @@ def create_container_config(
dns=None, volumes=None, volumes_from=None, network_disabled=False,
entrypoint=None, cpu_shares=None, working_dir=None, domainname=None,
memswap_limit=None, cpuset=None, host_config=None, mac_address=None,
- labels=None, volume_driver=None, stop_signal=None
+ labels=None, volume_driver=None, stop_signal=None, networking_config=None,
):
if isinstance(command, six.string_types):
command = split_command(command)
@@ -878,6 +898,7 @@ def create_container_config(
'WorkingDir': working_dir,
'MemorySwap': memswap_limit,
'HostConfig': host_config,
+ 'NetworkingConfig': networking_config,
'MacAddress': mac_address,
'Labels': labels,
'VolumeDriver': volume_driver,