mirror of
https://github.com/netinvent/npbackup.git
synced 2024-09-20 14:56:14 +08:00
ugrade_server: Add host identity statistics
This commit is contained in:
parent
e073324ce2
commit
c3dc022a2d
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in a new issue