summaryrefslogtreecommitdiff
path: root/docker/api/container.py
diff options
context:
space:
mode:
Diffstat (limited to 'docker/api/container.py')
-rw-r--r--docker/api/container.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/docker/api/container.py b/docker/api/container.py
index 94889e9..142bd0f 100644
--- a/docker/api/container.py
+++ b/docker/api/container.py
@@ -75,6 +75,12 @@ class ContainerApiMixin(object):
@utils.check_resource
def copy(self, container, resource):
+ if utils.version_gte(self._version, '1.20'):
+ warnings.warn(
+ 'Client.copy() is deprecated for API version >= 1.20, '
+ 'please use get_archive() instead',
+ DeprecationWarning
+ )
res = self._post_json(
self._url("/containers/{0}/copy".format(container)),
data={"Resource": resource},
@@ -146,6 +152,21 @@ class ContainerApiMixin(object):
return res.raw
@utils.check_resource
+ @utils.minimum_version('1.20')
+ def get_archive(self, container, path):
+ params = {
+ 'path': path
+ }
+ url = self._url('/containers/{0}/archive', container)
+ res = self._get(url, params=params, stream=True)
+ self._raise_for_status(res)
+ encoded_stat = res.headers.get('x-docker-container-path-stat')
+ return (
+ res.raw,
+ utils.decode_json_header(encoded_stat) if encoded_stat else None
+ )
+
+ @utils.check_resource
def inspect_container(self, container):
return self._result(
self._get(self._url("/containers/{0}/json", container)), True
@@ -215,6 +236,15 @@ class ContainerApiMixin(object):
return h_ports
@utils.check_resource
+ @utils.minimum_version('1.20')
+ def put_archive(self, container, path, data):
+ params = {'path': path}
+ url = self._url('/containers/{0}/archive', container)
+ res = self._put(url, params=params, data=data)
+ self._raise_for_status(res)
+ return res.status_code == 200
+
+ @utils.check_resource
def remove_container(self, container, v=False, link=False, force=False):
params = {'v': v, 'link': link, 'force': force}
res = self._delete(