Fix typos and improve validation
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
# © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK
|
# © Crown-owned copyright 2024, Defence Science and Technology Laboratory UK
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from ipaddress import IPv4Address
|
from ipaddress import IPv4Address
|
||||||
from typing import Any, ClassVar, Dict, Literal, Type
|
from typing import Any, ClassVar, Dict, Literal, Self, Type
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, model_validator
|
||||||
|
|
||||||
from primaite.simulator.network.container import Network
|
from primaite.simulator.network.container import Network
|
||||||
from primaite.simulator.network.hardware.nodes.host.computer import Computer
|
from primaite.simulator.network.hardware.nodes.host.computer import Computer
|
||||||
@@ -27,8 +27,12 @@ class NetworkNodeAdder(BaseModel):
|
|||||||
property_1 : str
|
property_1 : str
|
||||||
property_2 : int
|
property_2 : int
|
||||||
|
|
||||||
@classmetho
|
@classmethod
|
||||||
def __call__()
|
def add_nodes_to_net(cls, config: ConfigSchema, network: Network) -> None:
|
||||||
|
node_1 = Node(property_1, ...)
|
||||||
|
node_2 = Node(...)
|
||||||
|
network.connect(node_1.network_interface[1], node_2.network_interface[1])
|
||||||
|
...
|
||||||
```
|
```
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -112,6 +116,16 @@ class OfficeLANAdder(NetworkNodeAdder, identifier="office_lan"):
|
|||||||
bandwidth: int = 100
|
bandwidth: int = 100
|
||||||
"""Data bandwidth to the LAN measured in Mbps."""
|
"""Data bandwidth to the LAN measured in Mbps."""
|
||||||
|
|
||||||
|
@model_validator(mode="after")
|
||||||
|
def check_ip_range(self) -> Self:
|
||||||
|
"""Make sure the ip addresses of hosts don't exceed the maximum possible ip address."""
|
||||||
|
if self.pcs_ip_block_start + self.num_pcs >= 254:
|
||||||
|
raise ValueError(
|
||||||
|
f"Cannot create {self.num_pcs} pcs starting at ip block {self.pcs_ip_block_start} "
|
||||||
|
f"because ip address octets cannot exceed 254."
|
||||||
|
)
|
||||||
|
return self
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def add_nodes_to_net(cls, config: ConfigSchema, network: Network) -> None:
|
def add_nodes_to_net(cls, config: ConfigSchema, network: Network) -> None:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user