This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
devicehub-teal/ereuse_devicehub/resources/versions/versions.py

83 lines
2.2 KiB
Python
Raw Normal View History

2020-09-15 15:44:12 +00:00
import json
2020-09-15 11:22:28 +00:00
from typing import Callable, Iterable, Tuple
2020-09-17 19:09:22 +00:00
from urllib.parse import urlparse
2023-03-21 11:08:13 +00:00
import flask
import requests
from flask import g, make_response
2020-10-09 09:00:49 +00:00
from flask.json import jsonify
2020-09-15 15:44:12 +00:00
2023-03-21 11:08:13 +00:00
import ereuse_devicehub.teal.marshmallow
from ereuse_devicehub import __version__
2023-03-21 11:08:13 +00:00
from ereuse_devicehub.resources.inventory.model import Inventory
from ereuse_devicehub.teal.resource import Resource, View
2020-09-17 19:09:22 +00:00
def get_tag_version(app):
2020-09-17 19:09:22 +00:00
"""Get version of microservice ereuse-tag."""
2020-09-17 19:09:22 +00:00
path = "/versions/version/"
url = urlparse(Inventory.current.tag_provider.to_text())._replace(path=path)
try:
res = requests.get(url.geturl())
except requests.exceptions.ConnectionError:
app.logger.error("The microservice Tags is down!!")
return {}
2020-09-17 19:09:22 +00:00
if res.status_code == 200:
return json.loads(res.content)
else:
return {}
2020-09-15 15:44:12 +00:00
2023-03-21 11:08:13 +00:00
2020-09-15 15:44:12 +00:00
class VersionView(View):
def get(self, *args, **kwargs):
2020-09-17 19:09:22 +00:00
"""Get version of DeviceHub and ereuse-tag."""
tag_version = get_tag_version(self.resource_def.app)
versions = {'devicehub': __version__, "ereuse_tag": "0.0.0"}
2020-09-17 19:09:22 +00:00
versions.update(tag_version)
2020-10-09 09:00:49 +00:00
ret = jsonify(versions)
ret.status_code = 200
2020-10-09 09:35:16 +00:00
return ret
2020-09-15 11:22:28 +00:00
class VersionDef(Resource):
__type__ = 'Version'
SCHEMA = None
VIEW = None # We do not want to create default / documents endpoint
AUTH = False
2023-03-21 11:08:13 +00:00
def __init__(
self,
app,
import_name=__name__,
static_folder=None,
static_url_path=None,
template_folder=None,
url_prefix=None,
subdomain=None,
url_defaults=None,
root_path=None,
cli_commands: Iterable[Tuple[Callable, str or None]] = tuple(),
):
super().__init__(
app,
import_name,
static_folder,
static_url_path,
template_folder,
url_prefix,
subdomain,
url_defaults,
root_path,
cli_commands,
)
2020-09-15 11:22:28 +00:00
d = {'devicehub': __version__, "ereuse_tag": "0.0.0"}
2020-09-15 15:44:12 +00:00
get = {'GET'}
2020-09-15 11:22:28 +00:00
2020-09-16 15:40:16 +00:00
version_view = VersionView.as_view('VersionView', definition=self)
2020-09-15 15:44:12 +00:00
self.add_url_rule('/', defaults=d, view_func=version_view, methods=get)