#3075: Fix final two demo notebooks
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
"source": [
|
||||
"# Build a simulation using the Python API\n",
|
||||
"\n",
|
||||
"© Crown-owned copyright 2024, Defence Science and Technology Laboratory UK\n",
|
||||
"© Crown-owned copyright 2025, Defence Science and Technology Laboratory UK\n",
|
||||
"\n",
|
||||
"Currently, this notebook manipulates the simulation by directly placing objects inside of the attributes of the network and domain. It should be refactored when proper methods exist for adding these objects."
|
||||
]
|
||||
@@ -70,9 +70,23 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"my_pc = Computer(hostname=\"Computer\", ip_address=\"192.168.1.10\", subnet_mask=\"255.255.255.0\")\n",
|
||||
"my_pc = Computer.from_config(\n",
|
||||
" config={\n",
|
||||
" \"type\": \"computer\",\n",
|
||||
" \"hostname\":\"pc_1\",\n",
|
||||
" \"ip_address\":\"192.168.1.10\",\n",
|
||||
" \"subnet_mask\":\"255.255.255.0\",\n",
|
||||
" }\n",
|
||||
" )\n",
|
||||
"net.add_node(my_pc)\n",
|
||||
"my_server = Server(hostname=\"Server\", ip_address=\"192.168.1.11\", subnet_mask=\"255.255.255.0\")\n",
|
||||
"my_server = Server.from_config(\n",
|
||||
" config={\n",
|
||||
" \"type\": \"server\",\n",
|
||||
" \"hostname\":\"Server\",\n",
|
||||
" \"ip_address\":\"192.168.1.11\",\n",
|
||||
" \"subnet_mask\":\"255.255.255.0\"\n",
|
||||
" }\n",
|
||||
")\n",
|
||||
"net.add_node(my_server)\n"
|
||||
]
|
||||
},
|
||||
@@ -99,7 +113,13 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"my_switch = Switch(hostname=\"switch1\", num_ports=12)\n",
|
||||
"my_switch = Switch.from_config(\n",
|
||||
" config = {\n",
|
||||
" \"type\":\"switch\",\n",
|
||||
" \"hostname\":\"switch1\",\n",
|
||||
" \"num_ports\":12\n",
|
||||
" }\n",
|
||||
")\n",
|
||||
"net.add_node(my_switch)\n",
|
||||
"\n",
|
||||
"pc_nic = NIC(ip_address=\"130.1.1.1\", gateway=\"130.1.1.255\", subnet_mask=\"255.255.255.0\")\n",
|
||||
@@ -163,16 +183,30 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from pydantic import Field\n",
|
||||
"\n",
|
||||
"from pathlib import Path\n",
|
||||
"from primaite.simulator.system.applications.application import Application, ApplicationOperatingState\n",
|
||||
"from primaite.simulator.system.software import SoftwareHealthState, SoftwareCriticality\n",
|
||||
"from primaite.simulator.file_system.file_system import FileSystem\n",
|
||||
"from primaite.utils.validation.ip_protocol import PROTOCOL_LOOKUP\n",
|
||||
"from primaite.utils.validation.port import PORT_LOOKUP\n",
|
||||
"from primaite.simulator.system.core.sys_log import SysLog\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# no applications exist yet so we will create our own.\n",
|
||||
"class MSPaint(Application, discriminator=\"MSPaint\"):\n",
|
||||
" class ConfigSchema(Application.ConfigSchema):\n",
|
||||
" type: str = \"MSPaint\"\n",
|
||||
"\n",
|
||||
" config: ConfigSchema = Field(default_factory=lambda: MSPaint.ConfigSchema())\n",
|
||||
"\n",
|
||||
" def __init__(self, **kwargs):\n",
|
||||
" kwargs[\"name\"] = \"MSPaint\"\n",
|
||||
" kwargs[\"port\"] = PORT_LOOKUP[\"HTTP\"]\n",
|
||||
" kwargs[\"protocol\"] = PROTOCOL_LOOKUP[\"NONE\"]\n",
|
||||
" super().__init__(**kwargs)\n",
|
||||
"\n",
|
||||
" def describe_state(self):\n",
|
||||
" return super().describe_state()"
|
||||
]
|
||||
@@ -183,7 +217,8 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"mspaint = MSPaint(name = \"mspaint\", health_state_actual=SoftwareHealthState.GOOD, health_state_visible=SoftwareHealthState.GOOD, criticality=SoftwareCriticality.MEDIUM, port=PORT_LOOKUP[\"HTTP\"], protocol = PROTOCOL_LOOKUP[\"NONE\"],operating_state=ApplicationOperatingState.RUNNING,execution_control_status='manual', file_system=FileSystem(sys_log=SysLog(hostname=\"Test\"), sim_root=Path(__name__).parent),)"
|
||||
"my_pc.software_manager.install(MSPaint)\n",
|
||||
"mspaint = my_pc.software_manager.software.get(\"MSPaint\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -250,7 +285,7 @@
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": ".venv",
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
@@ -264,7 +299,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.11"
|
||||
"version": "3.10.12"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"source": [
|
||||
"# PrimAITE Router Simulation Demo\n",
|
||||
"\n",
|
||||
"© Crown-owned copyright 2024, Defence Science and Technology Laboratory UK\n",
|
||||
"© Crown-owned copyright 2025, Defence Science and Technology Laboratory UK\n",
|
||||
"\n",
|
||||
"This demo uses a modified version of the ARCD Use Case 2 Network (seen below) to demonstrate the capabilities of the Network simulator in PrimAITE."
|
||||
]
|
||||
@@ -650,21 +650,9 @@
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": ".venv",
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
@@ -295,7 +295,7 @@ def arcd_uc2_network() -> Network:
|
||||
# Security Suite
|
||||
security_suite_cfg = {
|
||||
"type": "server",
|
||||
"hostname": "backup_server",
|
||||
"hostname": "security_suite",
|
||||
"ip_address": "192.168.1.110",
|
||||
"subnet_mask": "255.255.255.0",
|
||||
"default_gateway": "192.168.1.1",
|
||||
|
||||
Reference in New Issue
Block a user