mirror of
https://github.com/ansible/awx.git
synced 2026-03-18 09:27:31 -02:30
add facts recent endpoints
* Hang most recent listing of facts per-host off of /hosts/n/
This commit is contained in:
@@ -1157,6 +1157,7 @@ class HostSerializer(BaseSerializerWithVariables):
|
|||||||
ad_hoc_commands = self.reverse('api:host_ad_hoc_commands_list', kwargs={'pk': obj.pk}),
|
ad_hoc_commands = self.reverse('api:host_ad_hoc_commands_list', kwargs={'pk': obj.pk}),
|
||||||
ad_hoc_command_events = self.reverse('api:host_ad_hoc_command_events_list', kwargs={'pk': obj.pk}),
|
ad_hoc_command_events = self.reverse('api:host_ad_hoc_command_events_list', kwargs={'pk': obj.pk}),
|
||||||
fact_versions = self.reverse('api:host_fact_versions_list', kwargs={'pk': obj.pk}),
|
fact_versions = self.reverse('api:host_fact_versions_list', kwargs={'pk': obj.pk}),
|
||||||
|
facts_recent = self.reverse('api:host_facts_recent_list', kwargs={'pk': obj.pk}),
|
||||||
))
|
))
|
||||||
if obj.inventory:
|
if obj.inventory:
|
||||||
res['inventory'] = self.reverse('api:inventory_detail', kwargs={'pk': obj.inventory.pk})
|
res['inventory'] = self.reverse('api:inventory_detail', kwargs={'pk': obj.inventory.pk})
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ host_urls = patterns('awx.api.views',
|
|||||||
#url(r'^(?P<pk>[0-9]+)/single_fact/$', 'host_single_fact_view'),
|
#url(r'^(?P<pk>[0-9]+)/single_fact/$', 'host_single_fact_view'),
|
||||||
url(r'^(?P<pk>[0-9]+)/fact_versions/$', 'host_fact_versions_list'),
|
url(r'^(?P<pk>[0-9]+)/fact_versions/$', 'host_fact_versions_list'),
|
||||||
url(r'^(?P<pk>[0-9]+)/fact_view/$', 'host_fact_compare_view'),
|
url(r'^(?P<pk>[0-9]+)/fact_view/$', 'host_fact_compare_view'),
|
||||||
|
url(r'^(?P<pk>[0-9]+)/facts_recent/$', 'host_facts_recent_list'),
|
||||||
)
|
)
|
||||||
|
|
||||||
group_urls = patterns('awx.api.views',
|
group_urls = patterns('awx.api.views',
|
||||||
|
|||||||
@@ -1835,6 +1835,15 @@ class HostFactCompareView(SystemTrackingEnforcementMixin, SubDetailAPIView):
|
|||||||
return Response(self.serializer_class(instance=fact_entry).data)
|
return Response(self.serializer_class(instance=fact_entry).data)
|
||||||
|
|
||||||
|
|
||||||
|
class HostFactsRecentList(SubListAPIView):
|
||||||
|
|
||||||
|
model = FactRecent
|
||||||
|
parent_model = Host
|
||||||
|
relationship = 'facts_recent'
|
||||||
|
serializer_class = FactSerializer
|
||||||
|
new_in_320 = True
|
||||||
|
|
||||||
|
|
||||||
class GroupList(ListCreateAPIView):
|
class GroupList(ListCreateAPIView):
|
||||||
|
|
||||||
model = Group
|
model = Group
|
||||||
|
|||||||
@@ -2264,7 +2264,12 @@ class RoleAccess(BaseAccess):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
class FactRecentAccess(BaseAccess):
|
||||||
|
|
||||||
|
model = FactRecent
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return FactRecent.objects.distinct()
|
||||||
|
|
||||||
|
|
||||||
register_access(User, UserAccess)
|
register_access(User, UserAccess)
|
||||||
@@ -2299,3 +2304,4 @@ register_access(WorkflowJobTemplateNode, WorkflowJobTemplateNodeAccess)
|
|||||||
register_access(WorkflowJobNode, WorkflowJobNodeAccess)
|
register_access(WorkflowJobNode, WorkflowJobNodeAccess)
|
||||||
register_access(WorkflowJobTemplate, WorkflowJobTemplateAccess)
|
register_access(WorkflowJobTemplate, WorkflowJobTemplateAccess)
|
||||||
register_access(WorkflowJob, WorkflowJobAccess)
|
register_access(WorkflowJob, WorkflowJobAccess)
|
||||||
|
register_access(FactRecent, FactRecentAccess)
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ class JSONField(upstream_JSONField):
|
|||||||
return {}
|
return {}
|
||||||
return super(JSONField, self).from_db_value(value, expression, connection, context)
|
return super(JSONField, self).from_db_value(value, expression, connection, context)
|
||||||
|
|
||||||
|
|
||||||
class JSONBField(upstream_JSONField):
|
class JSONBField(upstream_JSONField):
|
||||||
def get_db_prep_value(self, value, connection, prepared=False):
|
def get_db_prep_value(self, value, connection, prepared=False):
|
||||||
if connection.vendor == 'sqlite':
|
if connection.vendor == 'sqlite':
|
||||||
|
|||||||
@@ -4,12 +4,11 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from jsonbfield.fields import JSONField
|
|
||||||
|
|
||||||
from awx.main.fields import JSONBField
|
from awx.main.fields import JSONBField
|
||||||
|
|
||||||
__all__ = ('Fact', 'FactRecent')
|
__all__ = ('Fact', 'FactRecent')
|
||||||
|
|
||||||
|
|
||||||
class FactRecent(models.Model):
|
class FactRecent(models.Model):
|
||||||
host = models.ForeignKey(
|
host = models.ForeignKey(
|
||||||
'Host',
|
'Host',
|
||||||
@@ -97,3 +96,4 @@ class Fact(models.Model):
|
|||||||
fact_obj = Fact.objects.create(host_id=host_id, module=module, timestamp=timestamp, facts=facts)
|
fact_obj = Fact.objects.create(host_id=host_id, module=module, timestamp=timestamp, facts=facts)
|
||||||
fact_obj.save()
|
fact_obj.save()
|
||||||
return fact_obj
|
return fact_obj
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user