#2248 - Removed redundant code and added more documentation from PR suggestions

This commit is contained in:
Chris McCarthy
2024-02-09 10:27:22 +00:00
parent a036160515
commit 0acd9a2938
4 changed files with 34 additions and 36 deletions

View File

@@ -21,24 +21,42 @@ NetworkInterface
Node
====
The Node class stands as a central component in ``base.py``, acting as the superclass for all network nodes within a
PrimAITE simulation.
The Node class is the most crucial component defined in base.py, serving as the parent class for all nodes within a
PrimAITE network simulation.
It encapsulates the following key attributes and behaviors:
- ``hostname`` - The node's hostname on the network.
- ``network_interfaces`` - Dict of NetworkInterface objects attached to the node.
- ``operating_state`` - The hardware state (on/off) of the node.
- ``sys_log`` - System log to record node events.
- ``session_manager`` - Manages user sessions on the node.
- ``software_manager`` - Manages software and services installed on the node.
- ``connect_nic()`` - Connects a NetworkInterface to the node.
- ``disconnect_nic()`` - Disconnects a NetworkInterface from the node.
- ``receive_frame()`` - Receive and process an incoming network frame.
- ``apply_timestep()`` - Progresses node state for a simulation timestep.
- ``power_on()`` - Powers on the node and enables NICs.
- ``power_off()`` - Powers off the node and disables NICs.
Node Attributes
---------------
- **hostname**: The network hostname of the node.
- **operating_state**: Indicates the current hardware state of the node.
- **network_interfaces**: Maps interface names to NetworkInterface objects on the node.
- **network_interface**: Maps port IDs to ``NetworkInterface`` objects on the node.
- **dns_server**: Specifies DNS servers for domain name resolution.
- **start_up_duration**: The time it takes for the node to become fully operational after being powered on.
- **shut_down_duration**: The time required for the node to properly shut down.
- **sys_log**: A system log for recording events related to the node.
- **session_manager**: Manages user sessions within the node.
- **software_manager**: Controls the installation and management of software and services on the node.
Node Behaviours/Functions
-------------------------
- **connect_nic()**: Connects a ``NetworkInterface`` to the node for network communication.
- **disconnect_nic()**: Removes a ``NetworkInterface`` from the node.
- **receive_frame()**: Handles the processing of incoming network frames.
- **apply_timestep()**: Advances the state of the node according to the simulation timestep.
- **power_on()**: Initiates the node, enabling all connected Network Interfaces and starting all Services and
Applications, taking into account the `start_up_duration`.
- **power_off()**: Stops the node's operations, adhering to the `shut_down_duration`.
- **ping()**: Sends ICMP echo requests to a specified IP address to test connectivity.
- **has_enabled_network_interface()**: Checks if the node has any network interfaces enabled, facilitating network
communication.
- **show()**: Provides a summary of the node's current state, including network interfaces, operational status, and
other key attributes.
The Node class handles installation of system software, network connectivity, frame processing, system logging, and