From e3e70db364505a5f9e7eb5aa922f636300d3a0d1 Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Fri, 17 Aug 2018 16:49:46 +1000 Subject: [PATCH] tools: Indicate container startup failure When running lxc-autostart we do not currently indicate failure to start containers, either partial failure i.e. some of the containers failed to start or total failure i.e. all of the containers failed to start. Indicate container startup failure. For total failure exit(1), for partial failure exit(2). Signed-off-by: Tobin C. Harding --- src/lxc/tools/lxc_autostart.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lxc/tools/lxc_autostart.c b/src/lxc/tools/lxc_autostart.c index 5d0445258..e2702f6e9 100644 --- a/src/lxc/tools/lxc_autostart.c +++ b/src/lxc/tools/lxc_autostart.c @@ -318,7 +318,7 @@ static int toss_list(struct lxc_list *c_groups_list) int main(int argc, char *argv[]) { - int count = 0, i = 0, ret = 0; + int count = 0, failed = 0, i = 0, ret = 0; struct lxc_list *cmd_group; struct lxc_container **containers = NULL; struct lxc_list **c_groups_lists = NULL; @@ -491,11 +491,15 @@ int main(int argc, char *argv[]) } - /* clean up any lingering detritus */ + /* clean up any lingering detritus, if container exists here + * then it must have failed to start. + */ + failed = 0; for (i = 0; i < count; i++) { - if (containers[i]) + if (containers[i]) { + failed++; lxc_container_put(containers[i]); - + } if (c_groups_lists && c_groups_lists[i]) toss_list(c_groups_lists[i]); } @@ -504,5 +508,10 @@ int main(int argc, char *argv[]) toss_list(cmd_groups_list); free(containers); + if (failed == count) + exit(1); /* Total failure */ + else if (failed > 0) + exit(2); /* Partial failure */ + exit(EXIT_SUCCESS); } -- 2.47.2