From a21312ee61a781d52a22aa4cbf96337b78056414 Mon Sep 17 00:00:00 2001 From: Sebastian Lenzlinger Date: Wed, 8 May 2024 01:38:53 +0200 Subject: [PATCH] Corrections --- code/iottb/logger.py | 3 +-- code/iottb/models/device_metadata_model.py | 25 +++++++++++-------- code/iottb/subcommands/add_device.py | 5 ++-- .../test_initialize_device_root_dir.py | 0 code/tests/subcommands/test_sniff.py | 0 5 files changed, 18 insertions(+), 15 deletions(-) delete mode 100644 code/tests/subcommands/test_initialize_device_root_dir.py delete mode 100644 code/tests/subcommands/test_sniff.py diff --git a/code/iottb/logger.py b/code/iottb/logger.py index 243d467..2d60e6d 100644 --- a/code/iottb/logger.py +++ b/code/iottb/logger.py @@ -2,7 +2,6 @@ import logging import sys from logging.handlers import RotatingFileHandler - def setup_logging(): logger_obj = logging.getLogger('iottbLogger') logger_obj.setLevel(logging.DEBUG) @@ -14,7 +13,7 @@ def setup_logging(): console_handler.setLevel(logging.DEBUG) 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) console_handler.setFormatter(console_fmt) diff --git a/code/iottb/models/device_metadata_model.py b/code/iottb/models/device_metadata_model.py index 72d063c..67bda78 100644 --- a/code/iottb/models/device_metadata_model.py +++ b/code/iottb/models/device_metadata_model.py @@ -2,12 +2,11 @@ import json import uuid from datetime import datetime from pathlib import Path -from typing import Optional, List, Any +from typing import Optional, List # iottb modules from iottb.definitions import ReturnCodes, DEVICE_METADATA_FILE from iottb.logger import logger - # 3rd party libs IMMUTABLE_FIELDS = {"device_name", "device_short_name", "device_id", "date_created"} @@ -17,8 +16,8 @@ class DeviceMetadata: # Required fields device_name: str device_short_name: str - device_id: str = lambda: str(uuid.uuid4()) - date_created: str = lambda: datetime.now().strftime('%d-%m-%YT%H:%M:%S').lower() + device_id: str + date_created: str device_root_path: Path # Optional Fields @@ -30,15 +29,18 @@ class DeviceMetadata: 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_short_name = device_name.lower().replace(" ", "_") - # assert dir_contains_device_metadata(device_root_dir), \ - # f"Directory {device_root_dir} is missing a {DEVICE_METADATA_FILE} file" - self.device_root_dir = device_root_dir + self.device_id = str(uuid.uuid4()) + self.date_created = datetime.now().strftime('%d-%m-%YT%H:%M:%S').lower() + 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 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}") @classmethod @@ -82,7 +84,7 @@ class DeviceMetadata: "device_type": False, "device_serial_number": False, "device_firmware_version": False, - "date_updated": True, + "date_updated": False, "capture_files": False, } @@ -90,8 +92,9 @@ class DeviceMetadata: value = getattr(self, field, None) if value not in [None, ""] or 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.") - 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}") return json.dumps(data, indent=indent) diff --git a/code/iottb/subcommands/add_device.py b/code/iottb/subcommands/add_device.py index 4dd189d..3cf1b4a 100644 --- a/code/iottb/subcommands/add_device.py +++ b/code/iottb/subcommands/add_device.py @@ -29,11 +29,12 @@ def handle_add(args): metadata = DeviceMetadata(device_name, args.root_dir) 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(""): configure_metadata() 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: print("Directory already contains a device metadata file. Aborting operation.") return ReturnCodes.ABORTED diff --git a/code/tests/subcommands/test_initialize_device_root_dir.py b/code/tests/subcommands/test_initialize_device_root_dir.py deleted file mode 100644 index e69de29..0000000 diff --git a/code/tests/subcommands/test_sniff.py b/code/tests/subcommands/test_sniff.py deleted file mode 100644 index e69de29..0000000