summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorAanand Prasad <aanand.prasad@gmail.com>2015-09-23 17:00:37 +0200
committerJoffrey F <joffrey@docker.com>2015-10-14 17:26:50 -0700
commit53589e5f0a4ddfc3cec8f48b5f3d807e2deb0ace (patch)
tree10fdb46ecbd9ed961c92ca43ea0f774781a15cf8 /docker
parenta1393ee8ac4a55e6215079baacc9ec7777a9c965 (diff)
downloaddocker-py-53589e5f0a4ddfc3cec8f48b5f3d807e2deb0ace.tar.gz
Implement methods for managing networks
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
Diffstat (limited to 'docker')
-rw-r--r--docker/api/__init__.py1
-rw-r--r--docker/api/network.py49
-rw-r--r--docker/client.py3
3 files changed, 52 insertions, 1 deletions
diff --git a/docker/api/__init__.py b/docker/api/__init__.py
index 7979634..9e74428 100644
--- a/docker/api/__init__.py
+++ b/docker/api/__init__.py
@@ -5,3 +5,4 @@ from .daemon import DaemonApiMixin
from .exec_api import ExecApiMixin
from .image import ImageApiMixin
from .volume import VolumeApiMixin
+from .network import NetworkApiMixin
diff --git a/docker/api/network.py b/docker/api/network.py
new file mode 100644
index 0000000..f6ad4a7
--- /dev/null
+++ b/docker/api/network.py
@@ -0,0 +1,49 @@
+import json
+
+from ..utils import check_resource
+
+
+class NetworkApiMixin(object):
+ def networks(self, names=None, ids=None):
+ filters = {}
+ if names:
+ filters['name'] = names
+ if ids:
+ filters['id'] = ids
+
+ params = {'filters': json.dumps(filters)}
+
+ url = self._url("/networks")
+ res = self._get(url, params=params)
+ return self._result(res, json=True)
+
+ def create_network(self, name, driver=None):
+ data = {
+ 'name': name,
+ 'driver': driver,
+ }
+ url = self._url("/networks/create")
+ res = self._post_json(url, data=data)
+ return self._result(res, json=True)
+
+ def remove_network(self, net_id):
+ url = self._url("/networks/{0}", net_id)
+ res = self._delete(url)
+ self._raise_for_status(res)
+
+ def inspect_network(self, net_id):
+ url = self._url("/networks/{0}", net_id)
+ res = self._get(url)
+ return self._result(res, json=True)
+
+ @check_resource
+ def connect_container_to_network(self, container, net_id):
+ data = {"container": container}
+ url = self._url("/networks/{0}/connect", net_id)
+ self._post_json(url, data=data)
+
+ @check_resource
+ def disconnect_container_from_network(self, container, net_id):
+ data = {"container": container}
+ url = self._url("/networks/{0}/disconnect", net_id)
+ self._post_json(url, data=data)
diff --git a/docker/client.py b/docker/client.py
index 9decd61..79efc9f 100644
--- a/docker/client.py
+++ b/docker/client.py
@@ -39,7 +39,8 @@ class Client(
api.DaemonApiMixin,
api.ExecApiMixin,
api.ImageApiMixin,
- api.VolumeApiMixin):
+ api.VolumeApiMixin,
+ api.NetworkApiMixin):
def __init__(self, base_url=None, version=None,
timeout=constants.DEFAULT_TIMEOUT_SECONDS, tls=False):
super(Client, self).__init__()