summaryrefslogtreecommitdiff
path: root/contrib/python/podman/libs/containers.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/python/podman/libs/containers.py')
-rw-r--r--contrib/python/podman/libs/containers.py40
1 files changed, 40 insertions, 0 deletions
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: