From 39339053ec921e99d2e5d0583e3f0bf79fe63277 Mon Sep 17 00:00:00 2001 From: Florian Apolloner Date: Thu, 20 Dec 2018 17:52:05 +0100 Subject: [PATCH] Added endpoint exposing ara and python version. Change-Id: Ic0fead79c0b87d87b990cc6c6526a44414a4546e --- ara/api/tests/tests_utils.py | 25 +++++++++++++++++++++++++ ara/api/urls.py | 1 + ara/api/views.py | 13 +++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 ara/api/tests/tests_utils.py diff --git a/ara/api/tests/tests_utils.py b/ara/api/tests/tests_utils.py new file mode 100644 index 0000000..30f175c --- /dev/null +++ b/ara/api/tests/tests_utils.py @@ -0,0 +1,25 @@ +# Copyright (c) 2018 Red Hat, Inc. +# +# This file is part of ARA Records Ansible. +# +# ARA is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# ARA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with ARA. If not, see . + +from rest_framework.test import APITestCase + + +class InfoTestCase(APITestCase): + def test_info_endpoint(self): + result = self.client.get("/api/v1/info") + self.assertEqual(set(result.data.keys()), set(["python_version", "ara_version"])) + self.assertTrue(result.data["python_version"].startswith("3.")) diff --git a/ara/api/urls.py b/ara/api/urls.py index 10e7dc5..3a47252 100644 --- a/ara/api/urls.py +++ b/ara/api/urls.py @@ -29,5 +29,6 @@ router.register("results", views.ResultViewSet, base_name="result") router.register("files", views.FileViewSet, base_name="file") router.register("records", views.RecordViewSet, base_name="record") router.register("stats", views.StatsViewSet, base_name="stats") +router.register("info", views.InfoView, base_name="info") urlpatterns = router.urls diff --git a/ara/api/views.py b/ara/api/views.py index fc21d1e..7a602a6 100644 --- a/ara/api/views.py +++ b/ara/api/views.py @@ -14,12 +14,25 @@ # # You should have received a copy of the GNU General Public License # along with ARA. If not, see . +import sys +import pbr.version from rest_framework import viewsets +from rest_framework.response import Response from ara.api import models, serializers +class InfoView(viewsets.ViewSet): + def list(self, request): + return Response( + { + "python_version": ".".join(map(str, sys.version_info[:3])), + "ara_version": pbr.version.VersionInfo("ara-server").release_string(), + } + ) + + class LabelViewSet(viewsets.ModelViewSet): queryset = models.Label.objects.all() serializer_class = serializers.LabelSerializer