images/create: add support for specifying custom message

CLI and server supports it since 2015 -
936b2c6afe.
It's part of docs since v1.40 -
https://docs.docker.com/engine/api/v1.40/#operation/ImageCreate

Signed-off-by: Jan Chren ~rindeal <dev.rindeal@gmail.com>
This commit is contained in:
Jan Chren ~rindeal 2018-07-30 19:33:32 +02:00 committed by rindeal
parent a3652028b1
commit 871698b41b
1 changed files with 19 additions and 13 deletions

View File

@ -100,7 +100,7 @@ class ImageApiMixin:
return res return res
def import_image(self, src=None, repository=None, tag=None, image=None, def import_image(self, src=None, repository=None, tag=None, image=None,
changes=None, stream_src=False): changes=None, stream_src=False, message=None):
""" """
Import an image. Similar to the ``docker import`` command. Import an image. Similar to the ``docker import`` command.
@ -129,7 +129,7 @@ class ImageApiMixin:
params = _import_image_params( params = _import_image_params(
repository, tag, image, repository, tag, image,
src=(src if isinstance(src, str) else None), src=(src if isinstance(src, str) else None),
changes=changes changes=changes, message=message
) )
headers = {'Content-Type': 'application/tar'} headers = {'Content-Type': 'application/tar'}
@ -152,7 +152,7 @@ class ImageApiMixin:
) )
def import_image_from_data(self, data, repository=None, tag=None, def import_image_from_data(self, data, repository=None, tag=None,
changes=None): changes=None, message=None):
""" """
Like :py:meth:`~docker.api.image.ImageApiMixin.import_image`, but Like :py:meth:`~docker.api.image.ImageApiMixin.import_image`, but
allows importing in-memory bytes data. allows importing in-memory bytes data.
@ -165,7 +165,7 @@ class ImageApiMixin:
u = self._url('/images/create') u = self._url('/images/create')
params = _import_image_params( params = _import_image_params(
repository, tag, src='-', changes=changes repository, tag, src='-', changes=changes, message=message
) )
headers = {'Content-Type': 'application/tar'} headers = {'Content-Type': 'application/tar'}
return self._result( return self._result(
@ -175,7 +175,7 @@ class ImageApiMixin:
) )
def import_image_from_file(self, filename, repository=None, tag=None, def import_image_from_file(self, filename, repository=None, tag=None,
changes=None): changes=None, message=None):
""" """
Like :py:meth:`~docker.api.image.ImageApiMixin.import_image`, but only Like :py:meth:`~docker.api.image.ImageApiMixin.import_image`, but only
supports importing from a tar file on disk. supports importing from a tar file on disk.
@ -190,18 +190,19 @@ class ImageApiMixin:
""" """
return self.import_image( return self.import_image(
src=filename, repository=repository, tag=tag, changes=changes src=filename, repository=repository, tag=tag, changes=changes,
message=message
) )
def import_image_from_stream(self, stream, repository=None, tag=None, def import_image_from_stream(self, stream, repository=None, tag=None,
changes=None): changes=None, message=None):
return self.import_image( return self.import_image(
src=stream, stream_src=True, repository=repository, tag=tag, src=stream, stream_src=True, repository=repository, tag=tag,
changes=changes changes=changes, message=message
) )
def import_image_from_url(self, url, repository=None, tag=None, def import_image_from_url(self, url, repository=None, tag=None,
changes=None): changes=None, message=None):
""" """
Like :py:meth:`~docker.api.image.ImageApiMixin.import_image`, but only Like :py:meth:`~docker.api.image.ImageApiMixin.import_image`, but only
supports importing from a URL. supports importing from a URL.
@ -212,11 +213,12 @@ class ImageApiMixin:
tag (str): The tag to apply tag (str): The tag to apply
""" """
return self.import_image( return self.import_image(
src=url, repository=repository, tag=tag, changes=changes src=url, repository=repository, tag=tag, changes=changes,
message=message
) )
def import_image_from_image(self, image, repository=None, tag=None, def import_image_from_image(self, image, repository=None, tag=None,
changes=None): changes=None, message=None):
""" """
Like :py:meth:`~docker.api.image.ImageApiMixin.import_image`, but only Like :py:meth:`~docker.api.image.ImageApiMixin.import_image`, but only
supports importing from another image, like the ``FROM`` Dockerfile supports importing from another image, like the ``FROM`` Dockerfile
@ -228,7 +230,8 @@ class ImageApiMixin:
tag (str): The tag to apply tag (str): The tag to apply
""" """
return self.import_image( return self.import_image(
image=image, repository=repository, tag=tag, changes=changes image=image, repository=repository, tag=tag, changes=changes,
message=message
) )
@utils.check_resource('image') @utils.check_resource('image')
@ -583,7 +586,7 @@ def is_file(src):
def _import_image_params(repo, tag, image=None, src=None, def _import_image_params(repo, tag, image=None, src=None,
changes=None): changes=None, message=None):
params = { params = {
'repo': repo, 'repo': repo,
'tag': tag, 'tag': tag,
@ -598,4 +601,7 @@ def _import_image_params(repo, tag, image=None, src=None,
if changes: if changes:
params['changes'] = changes params['changes'] = changes
if message:
params['message'] = message
return params return params