From b642bab351e73fd3d2fe7d56ae8a28701f82a77d Mon Sep 17 00:00:00 2001 From: avollkopf <43980694+avollkopf@users.noreply.github.com> Date: Fri, 12 Jan 2024 17:57:34 +0100 Subject: [PATCH] another test on log export --- cbpi/__init__.py | 2 +- cbpi/controller/system_controller.py | 53 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/cbpi/__init__.py b/cbpi/__init__.py index 4dae592..869226b 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1,3 +1,3 @@ -__version__ = "4.3.2.a1" +__version__ = "4.3.2.a2" __codename__ = "Winter Storm" diff --git a/cbpi/controller/system_controller.py b/cbpi/controller/system_controller.py index d5d01fd..ebf6f42 100644 --- a/cbpi/controller/system_controller.py +++ b/cbpi/controller/system_controller.py @@ -1,11 +1,8 @@ import logging import os -import importlib, importlib_metadata -#from importlib_metadata import metadata -import pkgutil import shutil +import pkgutil import psutil -from tabulate import tabulate import pathlib import json import aiohttp @@ -16,6 +13,8 @@ from cbpi.api.config import ConfigType from cbpi.api import * import zipfile import socket +import importlib +from tabulate import tabulate class SystemController: @@ -45,6 +44,26 @@ class SystemController: dir_name = pathlib.Path(self.cbpi.config_folder.get_file_path('')) shutil.make_archive(output_filename, 'zip', dir_name) + async def plugins_list(self): + result = [] + discovered_plugins = { + name: importlib.import_module(name) + for finder, name, ispkg + in pkgutil.iter_modules() + if name.startswith('cbpi') and len(name) > 4 + } + for key, module in discovered_plugins.items(): + from importlib.metadata import version + try: + from importlib.metadata import (distribution, metadata, + version) + meta = metadata(key) + result.append(dict(Name=meta["Name"], Version=meta["Version"], Author=meta["Author"], Homepage=meta["Home-page"], Summary=meta["Summary"])) + + except Exception as e: + print(e) + return tabulate(result, headers="keys") + async def downloadlog(self, logtime): filename = "cbpi4.log" fullname = pathlib.Path(os.path.join(".",filename)) @@ -64,11 +83,12 @@ class SystemController: else: os.system('journalctl --since \"{} hours ago\" -u craftbeerpi.service --output cat > {}'.format(logtime, fullname)) - plugins=self.plugins_list() - with open(fullpluginname) as f: + plugins = await self.plugins_list() + + with open(fullpluginname, 'w') as f: f.write(plugins) - #os.system('cbpi plugins > {}'.format(fullpluginname)) + #os.system('echo "{}" >> {}'.format(plugins,fullpluginname)) try: actors = self.cbpi.actor.get_state() @@ -113,25 +133,6 @@ class SystemController: for filename in filenames: shutil.chown(os.path.join(dirpath, filename), owner, group) - def plugins_list(self): - result = [] - - discovered_plugins = { - name: importlib.import_module(name) - for finder, name, ispkg - in pkgutil.iter_modules() - if name.startswith('cbpi') and len(name) > 4 - } - for key, module in discovered_plugins.items(): - try: - meta = importlib_metadata.metadata(key) - result.append(dict(Name=meta["Name"], Version=meta["Version"], Author=meta["Author"], Homepage=meta["Home-page"], Summary=meta["Summary"])) - - except Exception as e: - print(e) - #print(tabulate(result, headers="keys")) - return tabulate(result, headers="keys") - async def restoreConfig(self, data): fileData = data['File'] filename = fileData.filename