diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 3a6ebf85e8..685331d4ce 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -4505,7 +4505,12 @@ class InstanceSerializer(BaseSerializer): consumed_capacity = serializers.SerializerMethodField() percent_capacity_remaining = serializers.SerializerMethodField() - jobs_running = serializers.SerializerMethodField() + jobs_running = serializers.IntegerField( + help_text=_('Count of jobs in the running or waiting state that ' + 'are targeted for this instance'), + read_only=True + ) + class Meta: model = Instance @@ -4529,9 +4534,6 @@ class InstanceSerializer(BaseSerializer): else: return float("{0:.2f}".format(((float(obj.capacity) - float(obj.consumed_capacity)) / (float(obj.capacity))) * 100)) - def get_jobs_running(self, obj): - return UnifiedJob.objects.filter(execution_node=obj.hostname, status__in=('running', 'waiting',)).count() - class InstanceGroupSerializer(BaseSerializer): diff --git a/awx/api/views.py b/awx/api/views.py index d5ae7782c6..d3378c127d 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -631,7 +631,7 @@ class InstanceDetail(RetrieveUpdateAPIView): class InstanceUnifiedJobsList(SubListAPIView): - view_name = _("Instance Running Jobs") + view_name = _("Instance Jobs") model = UnifiedJob serializer_class = UnifiedJobSerializer parent_model = Instance diff --git a/awx/main/models/ha.py b/awx/main/models/ha.py index 3356dc3a5d..b7e50ec2b4 100644 --- a/awx/main/models/ha.py +++ b/awx/main/models/ha.py @@ -85,6 +85,10 @@ class Instance(models.Model): # NOTE: TODO: Likely to repurpose this once standalone ramparts are a thing return "awx" + @property + def jobs_running(self): + return UnifiedJob.objects.filter(execution_node=self.hostname, status__in=('running', 'waiting',)).count() + def is_lost(self, ref_time=None, isolated=False): if ref_time is None: ref_time = now()