ugrade_server: Add host identity statistics

This commit is contained in:
Orsiris de Jong 2023-02-02 20:14:54 +01:00
parent e073324ce2
commit c3dc022a2d
3 changed files with 30 additions and 5 deletions

View file

@ -7,8 +7,8 @@ __intname__ = "npbackup.upgrade_server.upgrade_server"
__author__ = "Orsiris de Jong"
__copyright__ = "Copyright (C) 2023 NetInvent"
__license__ = "GPL-3.0-only"
__build__ = "202303101"
__version__ = "1.0.0"
__build__ = "202303102"
__version__ = "1.1.0"
DEVEL = True

View file

@ -5,14 +5,14 @@ __intname__ = "npbackup.upgrade_server.api"
__author__ = "Orsiris de Jong"
__copyright__ = "Copyright (C) 2023 NetInvent"
__license__ = "GPL-3.0-only"
__build__ = "202303101"
__build__ = "202303102"
__appname__ = "npbackup.upgrader"
from typing import Literal
import logging
import secrets
from fastapi import FastAPI, HTTPException, Response, Depends, status
from fastapi import FastAPI, HTTPException, Response, Depends, status, Request
from fastapi.security import HTTPBasic, HTTPBasicCredentials
from fastapi_offline import FastAPIOffline
from upgrade_server.models.files import FileGet, FileSend, Platform, Arch
@ -80,7 +80,23 @@ async def current_version(auth=Depends(get_current_username)):
@app.get("/upgrades/{platform}/{arch}", response_model=FileSend, status_code=200)
async def upgrades(platform: Platform, arch: Arch, auth=Depends(get_current_username)):
@app.get("/upgrades/{platform}/{arch}/{host_identity}", response_model=FileSend, status_code=200)
@app.get("/upgrades/{platform}/{arch}/{host_identity}/{installed_version}", response_model=FileSend, status_code=200)
@app.get("/upgrades/{platform}/{arch}/{host_identity}/{installed_version}/{group}", response_model=FileSend, status_code=200)
async def upgrades(request: Request, platform: Platform, arch: Arch, host_identity: str = None, installed_version: str = None, group: str = None, auth=Depends(get_current_username)):
data = {
"ip": request.client.host,
"host_identity": host_identity,
"installed_version": installed_version,
"group": group,
"platform": platform.value,
"arch": arch.value
}
try:
crud.store_host_info(config_dict['upgrades']['statistics_file'], host_id = data)
except KeyError:
logger.error("No statistics file set.")
file = FileGet(platform=platform, arch=arch)
try:

View file

@ -38,6 +38,15 @@ def is_enabled() -> bool:
return not os.path.isfile("DISABLED")
def store_host_info(destination: str, host_id: dict) -> None:
try:
data = ",".join(host_id.values()) + "\n"
with open(destination, 'a', encoding='utf-8') as fpw:
fpw.write(data)
except OSError:
logger.error("Cannot write statistics file")
def get_current_version() -> Optional[CurrentVersion]:
try:
path = os.path.join(config_dict["upgrades"]["data_root"], "VERSION")