From 4b804e85165a29f9d712f1ec4f289040f942f459 Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Thu, 17 May 2018 11:57:59 -0700 Subject: Implement podman.containers.commit() - Add API support - Update tests - Make changes from reviews Signed-off-by: Jhon Honce Closes: #798 Approved by: mheon --- contrib/python/podman/libs/containers.py | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'contrib/python/podman/libs/containers.py') diff --git a/contrib/python/podman/libs/containers.py b/contrib/python/podman/libs/containers.py index cbbef23b1..0655010f1 100644 --- a/contrib/python/podman/libs/containers.py +++ b/contrib/python/podman/libs/containers.py @@ -1,6 +1,7 @@ """Models for manipulating containers and storage.""" import collections import functools +import getpass import json import signal @@ -93,6 +94,45 @@ class Container(collections.UserDict): results = podman.ExportContainer(self.id, target) return results['tarfile'] + def commit(self, + image_name, + *args, + changes=[], + message='', + pause=True, + **kwargs): + """Create image from container. + + All changes overwrite existing values. + See inspect() to obtain current settings. + + Changes: + CMD=/usr/bin/zsh + ENTRYPOINT=/bin/sh date + ENV=TEST=test_containers.TestContainers.test_commit + EXPOSE=8888/tcp + LABEL=unittest=test_commit + USER=bozo:circus + VOLUME=/data + WORKDIR=/data/application + """ + # TODO: Clean up *args, **kwargs after Commit() is complete + try: + author = kwargs.get('author', getpass.getuser()) + except Exception: + author = '' + + for c in changes: + if c.startswith('LABEL=') and c.count('=') < 2: + raise ValueError( + 'LABEL should have the format: LABEL=label=value, not {}'. + format(c)) + + with self._client() as podman: + results = podman.Commit(self.id, image_name, changes, author, + message, pause) + return results['image'] + def start(self): """Start container, return id on success.""" with self._client() as podman: -- cgit v1.2.3-54-g00ecf