diff --git a/tools/ansible/roles/dockerfile/files/stop-supervisor b/tools/ansible/roles/dockerfile/files/stop-supervisor new file mode 100755 index 0000000000..1c27714aaf --- /dev/null +++ b/tools/ansible/roles/dockerfile/files/stop-supervisor @@ -0,0 +1,8 @@ +#!/bin/bash + +printf "READY\n"; + +while read line; do + echo "Processing Event: $line" >&2; + kill -SIGQUIT $PPID +done < /dev/stdin diff --git a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 index c75616540d..7db685a266 100644 --- a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 +++ b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 @@ -194,6 +194,7 @@ RUN mkdir -p /etc/containers/registries.conf.d/ && echo "unqualified-search-regi # Create default awx rsyslog config ADD tools/ansible/roles/dockerfile/files/rsyslog.conf /var/lib/awx/rsyslog/rsyslog.conf ADD tools/ansible/roles/dockerfile/files/wait-for-migrations /usr/local/bin/wait-for-migrations +ADD tools/ansible/roles/dockerfile/files/stop-supervisor /usr/local/bin/stop-supervisor ## File mappings {% if build_dev|bool %} @@ -264,9 +265,9 @@ RUN for dir in \ for file in \ /etc/containers/containers.conf \ /var/lib/awx/.config/containers/containers.conf \ - /var/lib/shared/overlay-images/images.lock \ + /var/lib/shared/overlay-images/images.lock \ /var/lib/shared/overlay-layers/layers.lock \ - /var/lib/shared/vfs-images/images.lock \ + /var/lib/shared/vfs-images/images.lock \ /var/lib/shared/vfs-layers/layers.lock \ /var/run/nginx.pid \ /var/lib/awx/venv/awx/lib/python3.9/site-packages/awx.egg-link ; \ diff --git a/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 b/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 index cb93755e44..a79606951b 100644 --- a/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 +++ b/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 @@ -96,18 +96,13 @@ stdout_logfile_maxbytes=0 programs=nginx,uwsgi,daphne,wsbroadcast,awx-rsyslogd priority=5 -# TODO: Exit Handler - -{% if kube_dev | bool %} -[eventlistener:awx-config-watcher] -command=/usr/bin/config-watcher +[eventlistener:superwatcher] +command=stop-supervisor +events=PROCESS_STATE_FATAL,PROCESS_STATE_EXITED stderr_logfile=/dev/stdout stderr_logfile_maxbytes=0 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 -events=TICK_60 -priority=0 -{% endif %} [unix_http_server] file=/var/run/supervisor/supervisor.web.sock diff --git a/tools/ansible/roles/dockerfile/templates/supervisor_task.conf.j2 b/tools/ansible/roles/dockerfile/templates/supervisor_task.conf.j2 index df19747ca9..81f67da2c0 100644 --- a/tools/ansible/roles/dockerfile/templates/supervisor_task.conf.j2 +++ b/tools/ansible/roles/dockerfile/templates/supervisor_task.conf.j2 @@ -45,7 +45,13 @@ stderr_logfile_maxbytes=0 programs=dispatcher,callback-receiver priority=5 -# TODO: Exit Handler +[eventlistener:superwatcher] +command=stop-supervisor +events=PROCESS_STATE_FATAL,PROCESS_STATE_EXITED +stderr_logfile=/dev/stdout +stderr_logfile_maxbytes=0 +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 [unix_http_server] file=/var/run/supervisor/supervisor.sock diff --git a/tools/docker-compose/supervisor.conf b/tools/docker-compose/supervisor.conf index 9d0cd4ded3..618197696c 100644 --- a/tools/docker-compose/supervisor.conf +++ b/tools/docker-compose/supervisor.conf @@ -99,6 +99,14 @@ stderr_events_enabled = true programs=awx-dispatcher,awx-receiver,awx-uwsgi,awx-daphne,awx-nginx,awx-wsbroadcast,awx-rsyslogd priority=5 +[eventlistener:superwatcher] +command=stop-supervisor +events=PROCESS_STATE_FATAL,PROCESS_STATE_EXITED +stderr_logfile=/dev/stdout +stderr_logfile_maxbytes=0 +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 + [unix_http_server] file=/var/run/supervisor/supervisor.sock