Do not force remove containers
Paunch does docker/podman rm -f, when removes containers. It seems it returns too early, having some leftovers (like docker service endpoints) behind or pending for it to be removed later, in case of big fat deamons. Long story short, don't do rm -f and allow it to do its job gracefully and without a hurry. Change-Id: I346c49cb204f273bd7077ca5153412cda9846534 Closes-Bug: #1860004 Co-authored-by: Sergii Golovatiuk <sgolovat@redhat.com> Signed-off-by: Bogdan Dobrelya <bdobreli@redhat.com> (cherry picked from commit3813fc7f2b
) (cherry picked from commitd56765a0af
)
This commit is contained in:
parent
3c38fe6001
commit
7a00269856
|
@ -284,7 +284,8 @@ class BaseRunner(object):
|
|||
def remove_container(self, container):
|
||||
if self.cont_cmd == 'podman':
|
||||
systemd.service_delete(container=container, log=self.log)
|
||||
cmd = [self.cont_cmd, 'rm', '-f', container]
|
||||
self.execute([self.cont_cmd, 'stop', container], self.log)
|
||||
cmd = [self.cont_cmd, 'rm', container]
|
||||
cmd_stdout, cmd_stderr, returncode = self.execute(cmd, self.log)
|
||||
if returncode != 0:
|
||||
self.log.error('Error removing container: %s' % container)
|
||||
|
|
|
@ -246,12 +246,18 @@ class TestBaseBuilder(base.TestCase):
|
|||
six six
|
||||
two-12345678 two
|
||||
three-12345678 three''', '', 0),
|
||||
# stop five
|
||||
('', '', 0),
|
||||
# rm five
|
||||
('', '', 0),
|
||||
# stop six
|
||||
('', '', 0),
|
||||
# rm six
|
||||
('', '', 0),
|
||||
# inspect two
|
||||
('{"start_order": 1, "image": "centos:6"}', '', 0),
|
||||
# stop two, changed config data
|
||||
('', '', 0),
|
||||
# rm two, changed config data
|
||||
('', '', 0),
|
||||
# inspect three
|
||||
|
@ -297,13 +303,16 @@ three-12345678 three''', '', 0),
|
|||
mock.ANY
|
||||
),
|
||||
# rm containers not in config
|
||||
mock.call(['docker', 'rm', '-f', 'five'], mock.ANY),
|
||||
mock.call(['docker', 'rm', '-f', 'six'], mock.ANY),
|
||||
mock.call(['docker', 'stop', 'five'], mock.ANY),
|
||||
mock.call(['docker', 'rm', 'five'], mock.ANY),
|
||||
mock.call(['docker', 'stop', 'six'], mock.ANY),
|
||||
mock.call(['docker', 'rm', 'six'], mock.ANY),
|
||||
# rm two, changed config
|
||||
mock.call(['docker', 'inspect', '--type', 'container',
|
||||
'--format', '{{index .Config.Labels "config_data"}}',
|
||||
'two-12345678'], mock.ANY, False),
|
||||
mock.call(['docker', 'rm', '-f', 'two-12345678'], mock.ANY),
|
||||
mock.call(['docker', 'stop', 'two-12345678'], mock.ANY),
|
||||
mock.call(['docker', 'rm', 'two-12345678'], mock.ANY),
|
||||
# check three, config hasn't changed
|
||||
mock.call(['docker', 'inspect', '--type', 'container',
|
||||
'--format', '{{index .Config.Labels "config_data"}}',
|
||||
|
|
|
@ -269,7 +269,7 @@ class TestBaseRunner(base.TestCase):
|
|||
|
||||
self.runner.remove_container('one')
|
||||
self.assert_execute(
|
||||
popen, ['docker', 'rm', '-f', 'one']
|
||||
popen, ['docker', 'rm', 'one']
|
||||
)
|
||||
|
||||
@mock.patch('subprocess.Popen')
|
||||
|
|
Loading…
Reference in New Issue