mirror of https://gitee.com/openkylin/qemu.git
tests/docker: reduce scary warnings by cleaning up clean up
There was in the clean-up code caused by attempting to inspect images which finished before we got there. Clean up the clean up code by: - only track the one instance at a time - use --filter for docker ps instead of doing it by hand - just call docker rm -f to be done with it - use uuid.uuid4() for a random uid Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
5fac0cfaaa
commit
529994e204
|
@ -215,7 +215,7 @@ class Docker(object):
|
|||
""" Running Docker commands """
|
||||
def __init__(self):
|
||||
self._command = _guess_engine_command()
|
||||
self._instances = []
|
||||
self._instance = None
|
||||
atexit.register(self._kill_instances)
|
||||
signal.signal(signal.SIGTERM, self._kill_instances)
|
||||
signal.signal(signal.SIGHUP, self._kill_instances)
|
||||
|
@ -234,21 +234,19 @@ def _do_kill_instances(self, only_known, only_active=True):
|
|||
cmd = ["ps", "-q"]
|
||||
if not only_active:
|
||||
cmd.append("-a")
|
||||
|
||||
filter = "--filter=label=com.qemu.instance.uuid"
|
||||
if only_known:
|
||||
if self._instance:
|
||||
filter += "=%s" % (self._instance)
|
||||
else:
|
||||
# no point trying to kill, we finished
|
||||
return
|
||||
|
||||
print("filter=%s" % (filter))
|
||||
cmd.append(filter)
|
||||
for i in self._output(cmd).split():
|
||||
resp = self._output(["inspect", i])
|
||||
labels = json.loads(resp)[0]["Config"]["Labels"]
|
||||
active = json.loads(resp)[0]["State"]["Running"]
|
||||
if not labels:
|
||||
continue
|
||||
instance_uuid = labels.get("com.qemu.instance.uuid", None)
|
||||
if not instance_uuid:
|
||||
continue
|
||||
if only_known and instance_uuid not in self._instances:
|
||||
continue
|
||||
print("Terminating", i)
|
||||
if active:
|
||||
self._do(["kill", i])
|
||||
self._do(["rm", i])
|
||||
self._do(["rm", "-f", i])
|
||||
|
||||
def clean(self):
|
||||
self._do_kill_instances(False, False)
|
||||
|
@ -325,9 +323,9 @@ def image_matches_dockerfile(self, tag, dockerfile):
|
|||
return checksum == _text_checksum(_dockerfile_preprocess(dockerfile))
|
||||
|
||||
def run(self, cmd, keep, quiet, as_user=False):
|
||||
label = uuid.uuid1().hex
|
||||
label = uuid.uuid4().hex
|
||||
if not keep:
|
||||
self._instances.append(label)
|
||||
self._instance = label
|
||||
|
||||
if as_user:
|
||||
uid = os.getuid()
|
||||
|
@ -340,7 +338,7 @@ def run(self, cmd, keep, quiet, as_user=False):
|
|||
"com.qemu.instance.uuid=" + label] + cmd,
|
||||
quiet=quiet)
|
||||
if not keep:
|
||||
self._instances.remove(label)
|
||||
self._instance = None
|
||||
return ret
|
||||
|
||||
def command(self, cmd, argv, quiet):
|
||||
|
|
Loading…
Reference in New Issue