Corrections
This commit is contained in:
parent
73771be70d
commit
a21312ee61
@ -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)
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user