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"
|
__author__ = "Orsiris de Jong"
|
||||||
__copyright__ = "Copyright (C) 2023 NetInvent"
|
__copyright__ = "Copyright (C) 2023 NetInvent"
|
||||||
__license__ = "GPL-3.0-only"
|
__license__ = "GPL-3.0-only"
|
||||||
__build__ = "202303101"
|
__build__ = "202303102"
|
||||||
__version__ = "1.0.0"
|
__version__ = "1.1.0"
|
||||||
|
|
||||||
|
|
||||||
DEVEL = True
|
DEVEL = True
|
||||||
|
|
|
@ -5,14 +5,14 @@ __intname__ = "npbackup.upgrade_server.api"
|
||||||
__author__ = "Orsiris de Jong"
|
__author__ = "Orsiris de Jong"
|
||||||
__copyright__ = "Copyright (C) 2023 NetInvent"
|
__copyright__ = "Copyright (C) 2023 NetInvent"
|
||||||
__license__ = "GPL-3.0-only"
|
__license__ = "GPL-3.0-only"
|
||||||
__build__ = "202303101"
|
__build__ = "202303102"
|
||||||
__appname__ = "npbackup.upgrader"
|
__appname__ = "npbackup.upgrader"
|
||||||
|
|
||||||
|
|
||||||
from typing import Literal
|
from typing import Literal
|
||||||
import logging
|
import logging
|
||||||
import secrets
|
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.security import HTTPBasic, HTTPBasicCredentials
|
||||||
from fastapi_offline import FastAPIOffline
|
from fastapi_offline import FastAPIOffline
|
||||||
from upgrade_server.models.files import FileGet, FileSend, Platform, Arch
|
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)
|
@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)
|
file = FileGet(platform=platform, arch=arch)
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -38,6 +38,15 @@ def is_enabled() -> bool:
|
||||||
return not os.path.isfile("DISABLED")
|
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]:
|
def get_current_version() -> Optional[CurrentVersion]:
|
||||||
try:
|
try:
|
||||||
path = os.path.join(config_dict["upgrades"]["data_root"], "VERSION")
|
path = os.path.join(config_dict["upgrades"]["data_root"], "VERSION")
|
||||||
|
|
Loading…
Reference in a new issue