Merge pull request #11454 from AlexSCorey/ReceptorEndPoints

Creates end point and beginning of serializer for receptor mesh
This commit is contained in:
Alex Corey 2022-01-13 11:51:34 -05:00 committed by GitHub
commit d33a0d5dde
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 51 additions and 0 deletions

View File

@ -57,6 +57,7 @@ from awx.main.models import (
Host,
Instance,
InstanceGroup,
InstanceLink,
Inventory,
InventorySource,
InventoryUpdate,
@ -4767,6 +4768,28 @@ class ScheduleSerializer(LaunchConfigurationBaseSerializer, SchedulePreviewSeria
return super(ScheduleSerializer, self).validate(attrs)
class InstanceLinkSerializer(BaseSerializer):
class Meta:
model = InstanceLink
fields = ('source', 'target')
source = serializers.SlugRelatedField(slug_field="hostname", read_only=True)
target = serializers.SlugRelatedField(slug_field="hostname", read_only=True)
class InstanceNodeSerializer(BaseSerializer):
class Meta:
model = Instance
fields = ('id', 'hostname', 'node_type', 'node_state')
node_state = serializers.SerializerMethodField()
def get_node_state(self, obj):
if not obj.enabled:
return "disabled"
return "unhealthy" if obj.errors else "healthy"
class InstanceSerializer(BaseSerializer):
consumed_capacity = serializers.SerializerMethodField()

View File

@ -0,0 +1 @@
Make a GET request to this resource to obtain a list all Receptor Nodes and their links.

View File

@ -28,6 +28,7 @@ from awx.api.views import (
OAuth2TokenList,
ApplicationOAuth2TokenList,
OAuth2ApplicationDetail,
MeshVisualizer,
)
from awx.api.views.metrics import MetricsView
@ -95,6 +96,7 @@ v2_urls = [
url(r'^me/$', UserMeList.as_view(), name='user_me_list'),
url(r'^dashboard/$', DashboardView.as_view(), name='dashboard_view'),
url(r'^dashboard/graphs/jobs/$', DashboardJobsGraphView.as_view(), name='dashboard_jobs_graph_view'),
url(r'^mesh_visualizer/', MeshVisualizer.as_view(), name='mesh_visualizer_view'),
url(r'^settings/', include('awx.conf.urls')),
url(r'^instances/', include(instance_urls)),
url(r'^instance_groups/', include(instance_group_urls)),

View File

@ -159,6 +159,7 @@ from awx.api.views.inventory import ( # noqa
InventoryJobTemplateList,
InventoryCopy,
)
from awx.api.views.mesh_visualizer import MeshVisualizer # noqa
from awx.api.views.root import ( # noqa
ApiRootView,
ApiOAuthAuthorizationRootView,

View File

@ -0,0 +1,23 @@
# Copyright (c) 2018 Red Hat, Inc.
# All Rights Reserved.
from awx.main.models import InstanceLink, Instance
from django.utils.translation import ugettext_lazy as _
from awx.api.generics import APIView, Response
from awx.api.serializers import InstanceLinkSerializer, InstanceNodeSerializer
class MeshVisualizer(APIView):
name = _("Mesh Visualizer")
def get(self, request, format=None):
data = {
'nodes': InstanceNodeSerializer(Instance.objects.all(), many=True).data,
'links': InstanceLinkSerializer(InstanceLink.objects.all(), many=True).data,
}
return Response(data)

View File

@ -123,6 +123,7 @@ class ApiVersionRootView(APIView):
data['workflow_approvals'] = reverse('api:workflow_approval_list', request=request)
data['workflow_job_template_nodes'] = reverse('api:workflow_job_template_node_list', request=request)
data['workflow_job_nodes'] = reverse('api:workflow_job_node_list', request=request)
data['mesh_visualizer_view'] = reverse('api:mesh_visualizer_view', request=request)
return Response(data)