Implement podman.containers.commit()

- Add API support
- Update tests
- Make changes from reviews

Signed-off-by: Jhon Honce <jhonce@redhat.com>

Closes: #798
Approved by: mheon
This commit is contained in:
Jhon Honce
2018-05-17 11:57:59 -07:00
committed by Atomic Bot
parent 228c71b1da
commit 4b804e8516
4 changed files with 87 additions and 17 deletions

View File

@ -109,13 +109,13 @@ class TestContainers(PodmanTestCase):
self.alpine_ctnr.refresh()
self.assertFalse(self.alpine_ctnr.running)
@unittest.skip('Datetime values from inspect missing offset')
def test_inspect(self):
actual = self.alpine_ctnr.inspect()
self.assertEqual(actual.id, self.alpine_ctnr.id)
self.assertEqual(
datetime_parse(actual.created),
datetime_parse(self.alpine_ctnr.createdat))
# TODO: Datetime values from inspect missing offset in CI instance
# self.assertEqual(
# datetime_parse(actual.created),
# datetime_parse(self.alpine_ctnr.createdat))
def test_export(self):
target = os.path.join(self.tmpdir, 'alpine_export_ctnr.tar')
@ -125,6 +125,44 @@ class TestContainers(PodmanTestCase):
self.assertTrue(os.path.isfile(target))
self.assertGreater(os.path.getsize(target), 0)
def test_commit(self):
# TODO: Test for STOPSIGNAL when supported by OCI
# TODO: Test for message when supported by OCI
# TODO: Test for EXPOSE when issue#795 fixed
# 'EXPOSE=8888/tcp, 8888/udp'
id = self.alpine_ctnr.commit(
'alpine3',
author='Bozo the clown',
changes=[
'CMD=/usr/bin/zsh',
'ENTRYPOINT=/bin/sh date',
'ENV=TEST=test_containers.TestContainers.test_commit',
'LABEL=unittest=test_commit',
'USER=bozo:circus',
'VOLUME=/data',
'WORKDIR=/data/application',
],
pause=True)
img = self.pclient.images.get(id)
self.assertIsNotNone(img)
details = img.inspect()
self.assertEqual(details.author, 'Bozo the clown')
self.assertListEqual(['/usr/bin/zsh'], details.containerconfig['cmd'])
self.assertListEqual(['/bin/sh date'],
details.containerconfig['entrypoint'])
self.assertListEqual(
['TEST=test_containers.TestContainers.test_commit'],
details.containerconfig['env'])
# self.assertDictEqual({
# '8888/tcp': {}
# }, details.containerconfig['exposedports'])
self.assertDictEqual({'unittest': 'test_commit'}, details.labels)
self.assertEqual('bozo:circus', details.containerconfig['user'])
self.assertEqual({'/data': {}}, details.containerconfig['volumes'])
self.assertEqual('/data/application',
details.containerconfig['workingdir'])
def test_remove(self):
before = self.loadCache()

View File

@ -49,11 +49,6 @@ class TestImages(PodmanTestCase):
with self.assertRaisesNotImplemented():
self.pclient.images.create()
@unittest.skip('Code implemented')
def test_create_from(self):
with self.assertRaisesNotImplemented():
self.pclient.images.create_from()
def test_export(self):
path = os.path.join(self.tmpdir, 'alpine_export.tar')
target = 'oci-archive:{}:latest'.format(path)
@ -125,7 +120,7 @@ class TestImages(PodmanTestCase):
self.assertIn(new_img, actual)
after = self.loadCache()
self.assertEqual(len(before), len(after))
self.assertGreaterEqual(len(before), len(after))
TestImages.setUpClass()
self.loadCache()