mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 18:20:34 +00:00
tools/dev_container: stop old container if new image is available
When the container image is updated, developers may not notice and continue running a different version. Detect this and restart the container. BUG=b:217465164 TEST=./tools/dev_container while changing image_version Change-Id: Ib1df871c5c6fba9421c436d39ab7065be966f41e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3469050 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com>
This commit is contained in:
parent
9b7471e51a
commit
2b1b78c6ef
1 changed files with 12 additions and 0 deletions
|
@ -59,6 +59,13 @@ DOCKER_ARGS = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def container_revision(container_id: str):
|
||||||
|
image = docker("container inspect -f {{.Config.Image}}", container_id).stdout()
|
||||||
|
parts = image.split(":")
|
||||||
|
assert len(parts) == 2, f"Invalid image name {image}"
|
||||||
|
return parts[1]
|
||||||
|
|
||||||
|
|
||||||
@arg("command", nargs=argparse.REMAINDER)
|
@arg("command", nargs=argparse.REMAINDER)
|
||||||
def main(command: tuple[str, ...], stop: bool = False, hermetic: bool = False):
|
def main(command: tuple[str, ...], stop: bool = False, hermetic: bool = False):
|
||||||
chdir(CROSVM_ROOT)
|
chdir(CROSVM_ROOT)
|
||||||
|
@ -79,6 +86,11 @@ def main(command: tuple[str, ...], stop: bool = False, hermetic: bool = False):
|
||||||
if hermetic:
|
if hermetic:
|
||||||
docker(f"run --rm", *DOCKER_ARGS, *command).fg()
|
docker(f"run --rm", *DOCKER_ARGS, *command).fg()
|
||||||
else:
|
else:
|
||||||
|
if container_id and container_revision(container_id) != IMAGE_VERSION:
|
||||||
|
print(f"New image is available. Stopping old container ({container_id}).")
|
||||||
|
docker("rm -f", container_id).fg(quiet=True)
|
||||||
|
container_id = None
|
||||||
|
|
||||||
if not container_id:
|
if not container_id:
|
||||||
container_id = docker(f"run --detach --name {CONTAINER_NAME}", *DOCKER_ARGS).stdout()
|
container_id = docker(f"run --detach --name {CONTAINER_NAME}", *DOCKER_ARGS).stdout()
|
||||||
print(f"Started dev-container ({container_id}).")
|
print(f"Started dev-container ({container_id}).")
|
||||||
|
|
Loading…
Reference in a new issue