diff options
author | Joffrey F <joffrey@docker.com> | 2018-01-08 18:11:29 -0800 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2018-01-23 16:59:09 -0800 |
commit | f95b958429b38dab50929e013db3c636a12e1536 (patch) | |
tree | b8de1cfd18d1c3c932592388143665f446e871f6 /docker/api | |
parent | bf5e7702df3c835a5db4fc6b86500b4f4b659c14 (diff) | |
download | docker-py-1855-platform-option.tar.gz |
Add support for experimental platform flag in build and pull1855-platform-option
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'docker/api')
-rw-r--r-- | docker/api/build.py | 10 | ||||
-rw-r--r-- | docker/api/image.py | 13 |
2 files changed, 20 insertions, 3 deletions
diff --git a/docker/api/build.py b/docker/api/build.py index 34456ab..32238ef 100644 --- a/docker/api/build.py +++ b/docker/api/build.py @@ -19,7 +19,7 @@ class BuildApiMixin(object): forcerm=False, dockerfile=None, container_limits=None, decode=False, buildargs=None, gzip=False, shmsize=None, labels=None, cache_from=None, target=None, network_mode=None, - squash=None, extra_hosts=None): + squash=None, extra_hosts=None, platform=None): """ Similar to the ``docker build`` command. Either ``path`` or ``fileobj`` needs to be set. ``path`` can be a local path (to a directory @@ -103,6 +103,7 @@ class BuildApiMixin(object): single layer. extra_hosts (dict): Extra hosts to add to /etc/hosts in building containers, as a mapping of hostname to IP address. + platform (str): Platform in the format ``os[/arch[/variant]]`` Returns: A generator for the build output. @@ -243,6 +244,13 @@ class BuildApiMixin(object): extra_hosts = utils.format_extra_hosts(extra_hosts) params.update({'extrahosts': extra_hosts}) + if platform is not None: + if utils.version_lt(self._version, '1.32'): + raise errors.InvalidVersion( + 'platform was only introduced in API version 1.32' + ) + params['platform'] = platform + if context is not None: headers = {'Content-Type': 'application/tar'} if encoding: diff --git a/docker/api/image.py b/docker/api/image.py index 7755312..065fae3 100644 --- a/docker/api/image.py +++ b/docker/api/image.py @@ -323,7 +323,8 @@ class ImageApiMixin(object): return self._result(self._post(url, params=params), True) def pull(self, repository, tag=None, stream=False, - insecure_registry=False, auth_config=None, decode=False): + insecure_registry=False, auth_config=None, decode=False, + platform=None): """ Pulls an image. Similar to the ``docker pull`` command. @@ -336,6 +337,7 @@ class ImageApiMixin(object): :py:meth:`~docker.api.daemon.DaemonApiMixin.login` has set for this request. ``auth_config`` should contain the ``username`` and ``password`` keys to be valid. + platform (str): Platform in the format ``os[/arch[/variant]]`` Returns: (generator or str): The output @@ -376,7 +378,7 @@ class ImageApiMixin(object): } headers = {} - if utils.compare_version('1.5', self._version) >= 0: + if utils.version_gte(self._version, '1.5'): if auth_config is None: header = auth.get_config_header(self, registry) if header: @@ -385,6 +387,13 @@ class ImageApiMixin(object): log.debug('Sending supplied auth config') headers['X-Registry-Auth'] = auth.encode_header(auth_config) + if platform is not None: + if utils.version_lt(self._version, '1.32'): + raise errors.InvalidVersion( + 'platform was only introduced in API version 1.32' + ) + params['platform'] = platform + response = self._post( self._url('/images/create'), params=params, headers=headers, stream=stream, timeout=None |