Corrections

This commit is contained in:
Sebastian Lenzlinger 2024-05-08 01:38:53 +02:00
parent 73771be70d
commit a21312ee61
5 changed files with 18 additions and 15 deletions

View File

@ -2,7 +2,6 @@ import logging
import sys import sys
from logging.handlers import RotatingFileHandler from logging.handlers import RotatingFileHandler
def setup_logging(): def setup_logging():
logger_obj = logging.getLogger('iottbLogger') logger_obj = logging.getLogger('iottbLogger')
logger_obj.setLevel(logging.DEBUG) logger_obj.setLevel(logging.DEBUG)
@ -14,7 +13,7 @@ def setup_logging():
console_handler.setLevel(logging.DEBUG) console_handler.setLevel(logging.DEBUG)
file_fmt = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') file_fmt = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
console_fmt = logging.Formatter('%(name)s - %(name)s - %(levelname)s - %(message)s') console_fmt = logging.Formatter('%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s')
file_handler.setFormatter(file_fmt) file_handler.setFormatter(file_fmt)
console_handler.setFormatter(console_fmt) console_handler.setFormatter(console_fmt)

View File

@ -2,12 +2,11 @@ import json
import uuid import uuid
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import Optional, List, Any from typing import Optional, List
# iottb modules # iottb modules
from iottb.definitions import ReturnCodes, DEVICE_METADATA_FILE from iottb.definitions import ReturnCodes, DEVICE_METADATA_FILE
from iottb.logger import logger from iottb.logger import logger
# 3rd party libs # 3rd party libs
IMMUTABLE_FIELDS = {"device_name", "device_short_name", "device_id", "date_created"} IMMUTABLE_FIELDS = {"device_name", "device_short_name", "device_id", "date_created"}
@ -17,8 +16,8 @@ class DeviceMetadata:
# Required fields # Required fields
device_name: str device_name: str
device_short_name: str device_short_name: str
device_id: str = lambda: str(uuid.uuid4()) device_id: str
date_created: str = lambda: datetime.now().strftime('%d-%m-%YT%H:%M:%S').lower() date_created: str
device_root_path: Path device_root_path: Path
# Optional Fields # Optional Fields
@ -30,15 +29,18 @@ class DeviceMetadata:
capture_files: Optional[List[str]] = [] capture_files: Optional[List[str]] = []
def __init__(self, device_name: str, device_root_dir: Path): def __init__(self, device_name: str, device_root_path: Path):
self.device_name = device_name self.device_name = device_name
self.device_short_name = device_name.lower().replace(" ", "_") self.device_short_name = device_name.lower().replace(" ", "_")
# assert dir_contains_device_metadata(device_root_dir), \ self.device_id = str(uuid.uuid4())
# f"Directory {device_root_dir} is missing a {DEVICE_METADATA_FILE} file" self.date_created = datetime.now().strftime('%d-%m-%YT%H:%M:%S').lower()
self.device_root_dir = device_root_dir self.device_root_path = device_root_path
if not self.device_root_path or not self.device_root_path.is_dir():
logger.error(f"Invalid device root path: {device_root_path}")
raise ValueError(f"Invalid device root path: {device_root_path}")
logger.debug(f"Device name: {device_name}") logger.debug(f"Device name: {device_name}")
logger.debug(f"Device short_name: {self.device_short_name}") logger.debug(f"Device short_name: {self.device_short_name}")
logger.debug(f"Device root dir: {device_root_dir}") logger.debug(f"Device root dir: {device_root_path}")
logger.info(f"Initialized DeviceMetadata model: {device_name}") logger.info(f"Initialized DeviceMetadata model: {device_name}")
@classmethod @classmethod
@ -82,7 +84,7 @@ class DeviceMetadata:
"device_type": False, "device_type": False,
"device_serial_number": False, "device_serial_number": False,
"device_firmware_version": False, "device_firmware_version": False,
"date_updated": True, "date_updated": False,
"capture_files": False, "capture_files": False,
} }
@ -90,8 +92,9 @@ class DeviceMetadata:
value = getattr(self, field, None) value = getattr(self, field, None)
if value not in [None, ""] or is_mandatory: if value not in [None, ""] or is_mandatory:
if value in [None, ""] and is_mandatory: if value in [None, ""] and is_mandatory:
logger.debug(f"Mandatory field {field}: {value}")
raise ValueError(f"Field {field} is required and cannot be empty.") raise ValueError(f"Field {field} is required and cannot be empty.")
data[field] = str(value) if not isinstance(value, Path) else value data[field] = str(value) if not isinstance(value, str) else value
logger.debug(f"Device metadata: {data}") logger.debug(f"Device metadata: {data}")
return json.dumps(data, indent=indent) return json.dumps(data, indent=indent)

View File

@ -29,11 +29,12 @@ def handle_add(args):
metadata = DeviceMetadata(device_name, args.root_dir) metadata = DeviceMetadata(device_name, args.root_dir)
file_path = args.root_dir / DEVICE_METADATA_FILE file_path = args.root_dir / DEVICE_METADATA_FILE
response = input(f"Confirm device metadata: {metadata.model_dump()} [y/N]")
response = input(f"Confirm device metadata: {metadata.to_json()} [y/N]")
if response.lower() not in definitions.AFFIRMATIVE_USER_RESPONSE.add(""): if response.lower() not in definitions.AFFIRMATIVE_USER_RESPONSE.add(""):
configure_metadata() configure_metadata()
assert False, "TODO implement dynamic setup" assert False, "TODO implement dynamic setup"
args.root_dir.mkdir(parents=True, exist_ok=True) # else metadata.save_to_file will fail TODO: unclear
if metadata.save_to_json(file_path) == ReturnCodes.FILE_ALREADY_EXISTS: if metadata.save_to_json(file_path) == ReturnCodes.FILE_ALREADY_EXISTS:
print("Directory already contains a device metadata file. Aborting operation.") print("Directory already contains a device metadata file. Aborting operation.")
return ReturnCodes.ABORTED return ReturnCodes.ABORTED