This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ponymail-foal.git

commit 6d02e81d1ee747d0cb8c56cb9b32dd152835c707
Author: Sebb <[email protected]>
AuthorDate: Wed Dec 29 00:28:55 2021 +0000

    Extract various versions
---
 server/endpoints/preferences.py | 9 +++++++++
 server/main.py                  | 5 +++++
 server/plugins/background.py    | 7 +++++++
 3 files changed, 21 insertions(+)

diff --git a/server/endpoints/preferences.py b/server/endpoints/preferences.py
index dcf49b1..c082a50 100644
--- a/server/endpoints/preferences.py
+++ b/server/endpoints/preferences.py
@@ -29,7 +29,16 @@ import fnmatch
 async def process(
     server: plugins.server.BaseServer, session: plugins.session.SessionObject, 
indata: dict
 ) -> typing.Union[dict, aiohttp.web.Response]:
+
+    versions: dict = {
+        "server": server.server_version,
+        "foal": server.foal_version,
+        "elasticsearch_engine": server.engine_version,
+        "elasticsearch_library": server.library_version
+    }
+
     prefs: dict = {"login": {}}
+    prefs['versions'] = versions
     lists: dict = {}
     for ml, entry in server.data.lists.items():
         if "@" in ml:
diff --git a/server/main.py b/server/main.py
index 09fc483..b7e9447 100644
--- a/server/main.py
+++ b/server/main.py
@@ -66,6 +66,11 @@ class Server(plugins.server.BaseServer):
         self.server = None
         self.streamlock = asyncio.Lock()
         self.api_logger = None
+        self.foal_version = PONYMAIL_FOAL_VERSION
+        self.server_version = PONYMAIL_SERVER_VERSION
+        # provided by background.py
+        self.library_version: str
+        self.engine_version: str
 
         # Make a pool of database connections for async queries
         pool_size = self.config.database.pool_size
diff --git a/server/plugins/background.py b/server/plugins/background.py
index d61f872..cc08052 100644
--- a/server/plugins/background.py
+++ b/server/plugins/background.py
@@ -24,6 +24,7 @@ import sys
 import time
 
 from elasticsearch_dsl import Search
+from elasticsearch import VERSION as ES_VERSION
 
 import plugins.configuration
 import plugins.server
@@ -215,6 +216,12 @@ async def run_tasks(server: plugins.server.BaseServer) -> 
None:
 
         Generally runs every 2½ minutes, or whatever is set in 
tasks/refresh_rate in ponymail.yaml
     """
+
+    # Initial setup
+    server.library_version = ".".join([str(v) for v in ES_VERSION])
+    db = plugins.database.Database(server.config.database)
+    server.engine_version = (await db.info())['version']['number']
+
     while True:
         async with ProgTimer("Gathering list of archived mailing lists"):
             try:

Reply via email to