- renamed _config_values_main to training_config.py and renamed the ConfigValuesMain class to TrainingConfig. Moved training_config.py to src/primaite/config/training_config.py - Renamed all training config yaml file keys to make creating an instance of TrainingConfig easier. Moved action_type and num_steps over to the training config. - Decoupled the training config and lay down config. - Refactored main.py so that it can be ran from CLI and can take a training config path and a lay down config path. - refactored all outputs so that they save to the session dir. - Added some necessary setup scripts that handle creating app dirs, fronting example config files to the user, fronting demo notebooks to the user, performing clean-up in between installations etc. - Added functions that attempt to retrieve the file path of users example config files that have been fronted by the primaite setup. - Added logging config and a getLogger function in the top-level init. - Refactored all logs entries logged to use a logger using the primaite logging config. - Added basic typer CLI for doing things like setup, viewing logs, viewing primaite version, running a basic session. - Updated test to use new features and config structures. - Began updating docs. More to do here.
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
# Crown Copyright (C) Dstl 2022. DEFCON 703. Shared in confidence.
|
|
"""The Passive Node class (i.e. an actuator)."""
|
|
from primaite.common.enums import HardwareState, NodeType, Priority
|
|
from primaite.config.training_config import TrainingConfig
|
|
from primaite.nodes.node import Node
|
|
|
|
|
|
class PassiveNode(Node):
|
|
"""The Passive Node class."""
|
|
|
|
def __init__(
|
|
self,
|
|
node_id: str,
|
|
name: str,
|
|
node_type: NodeType,
|
|
priority: Priority,
|
|
hardware_state: HardwareState,
|
|
config_values: TrainingConfig,
|
|
):
|
|
"""
|
|
Init.
|
|
|
|
:param node_id: The node id.
|
|
:param name: The name of the node.
|
|
:param node_type: The type of the node.
|
|
:param priority: The priority of the node.
|
|
:param hardware_state: The state of the node.
|
|
:param config_values: Config values.
|
|
"""
|
|
# Pass through to Super for now
|
|
super().__init__(
|
|
node_id, name, node_type, priority, hardware_state, config_values
|
|
)
|
|
|
|
@property
|
|
def ip_address(self) -> str:
|
|
"""
|
|
Gets the node IP address as an empty string.
|
|
|
|
No concept of IP address for passive nodes for now.
|
|
|
|
:return: The node IP address.
|
|
"""
|
|
return ""
|