added fact view tests

* Add related link from host to fact_versions
* Add related link from fact_versions to fact_view
This commit is contained in:
Chris Meyers
2015-05-08 21:13:42 -04:00
parent 0c6a4782fd
commit 5ff696f708
17 changed files with 547 additions and 270 deletions

View File

@@ -36,7 +36,7 @@ from polymorphic import PolymorphicModel
# AWX
from awx.main.constants import SCHEDULEABLE_PROVIDERS
from awx.main.models import * # noqa
from awx.main.utils import get_type_for_model, get_model_for_type
from awx.main.utils import get_type_for_model, get_model_for_type, build_url, timestamp_apiformat
from awx.main.redact import REPLACE_STR
from awx.fact.models import * # noqa
@@ -2017,10 +2017,23 @@ class AuthTokenSerializer(serializers.Serializer):
class FactVersionSerializer(MongoEngineModelSerializer):
related = serializers.SerializerMethodField('get_related')
class Meta:
model = FactVersion
fields = ('module', 'timestamp',)
fields = ('related', 'module', 'timestamp',)
def get_related(self, obj):
host_obj = self.context.get('host_obj')
res = {}
params = {
'datetime': timestamp_apiformat(obj.timestamp),
'module': obj.module,
}
res.update(dict(
fact_view = build_url('api:host_fact_compare_view', args=(host_obj.pk,), get=params),
))
return res
class FactSerializer(MongoEngineModelSerializer):

View File

@@ -1037,12 +1037,17 @@ class HostFactVersionsList(MongoListAPIView):
if from_spec is not None:
from_actual = dateutil.parser.parse(from_spec)
kv['timestamp__gt'] = from_actual
if from_spec is not None and to_spec is not None:
if to_spec is not None:
to_actual = dateutil.parser.parse(to_spec)
kv['timestamp__lte'] = to_actual
return FactVersion.objects.filter(**kv).order_by("-timestamp")
def list(self, *args, **kwargs):
queryset = self.get_queryset() or []
serializer = FactVersionSerializer(queryset, many=True, context=dict(host_obj=self.get_parent_object()))
return Response(dict(results=serializer.data))
class HostSingleFactView(MongoAPIView):
model = Fact
@@ -1062,7 +1067,7 @@ class HostSingleFactView(MongoAPIView):
datetime_actual = dateutil.parser.parse(datetime_spec) if datetime_spec is not None else now()
host_obj = self.get_parent_object()
fact_data = Fact.get_single_facts([host_obj.name], fact_key, fact_value, datetime_actual, module_spec)
return Response(FactSerializer(fact_data).data if fact_data is not None else {})
return Response(FactSerializer(fact_data, context=dict(host_obj=host_obj)).data if fact_data is not None else {})
class HostFactCompareView(MongoAPIView):
@@ -1082,7 +1087,6 @@ class HostFactCompareView(MongoAPIView):
return Response(host_data)
class GroupList(ListCreateAPIView):
model = Group