diff --git a/awx/main/management/commands/host_metric.py b/awx/main/management/commands/host_metric.py index c0862ea1a3..b778545148 100644 --- a/awx/main/management/commands/host_metric.py +++ b/awx/main/management/commands/host_metric.py @@ -35,15 +35,7 @@ class Command(BaseCommand): def host_metric_summary_monthly_queryset(self, result, offset=0, limit=BATCHED_FETCH_COUNT): list_of_queryset = list( - result.values( - 'id', - 'date', - 'license_consumed', - 'license_capacity', - 'hosts_added', - 'hosts_deleted', - 'indirectly_managed_hosts', - ).order_by( + result.values('id', 'date', 'license_consumed', 'license_capacity', 'hosts_added', 'hosts_deleted', 'indirectly_managed_hosts',).order_by( 'date' )[offset : offset + limit] ) diff --git a/awx/main/management/commands/run_heartbeet.py b/awx/main/management/commands/run_heartbeet.py index 7d888146bc..5161769488 100644 --- a/awx/main/management/commands/run_heartbeet.py +++ b/awx/main/management/commands/run_heartbeet.py @@ -3,6 +3,7 @@ import logging import os import time import signal +import sys from django.core.management.base import BaseCommand from django.conf import settings @@ -51,14 +52,19 @@ class Command(BaseCommand): } return json.dumps(payload) + def notify_listener_and_exit(self, *args): + with pg_bus_conn(new_connection=False) as conn: + conn.notify('web_heartbeet', self.construct_payload(action='offline')) + sys.exit(1) + def do_hearbeat_loop(self): with pg_bus_conn(new_connection=True) as conn: + signal.signal(signal.SIGTERM, self.notify_listener_and_exit) + signal.signal(signal.SIGINT, self.notify_listener_and_exit) while True: logger.debug('Sending heartbeat') conn.notify('web_heartbeet', self.construct_payload()) time.sleep(settings.BROADCAST_WEBSOCKET_BEACON_FROM_WEB_RATE_SECONDS) - signal.signal(signal.SIGTERM, conn.notify('web_heartbeet', self.construct_payload(action='offline'))) - signal.signal(signal.SIGINT, conn.notify('web_heartbeet', self.construct_payload(action='offline'))) # TODO: Send a message with action=offline if we notice a SIGTERM or SIGINT # (wsrelay can use this to remove the node quicker)