Start changing to dict instead of string actions.
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -150,5 +150,5 @@ src/primaite/outputs/
|
||||
|
||||
# benchmark session outputs
|
||||
benchmark/output
|
||||
src/primaite/notebooks/scratch.ipynb
|
||||
# src/primaite/notebooks/scratch.ipynb
|
||||
src/primaite/notebooks/scratch.py
|
||||
|
||||
194
src/primaite/notebooks/scratch.ipynb
Normal file
194
src/primaite/notebooks/scratch.ipynb
Normal file
@@ -0,0 +1,194 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from primaite.simulator.network.networks import arcd_uc2_network\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"2023-09-05 15:52:13,305: Added node 26e189bb-442e-4f73-ab7a-1c4dd162e986 to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,307: Added node 9d07f591-1e44-41c9-9d7a-0eecf0c53fa4 to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,322: NIC d5:3d:df:8d:21:94/192.168.1.1 connected to Link d5:3d:df:8d:21:94/192.168.1.1<-->70:63:71:75:0f:84\n",
|
||||
"2023-09-05 15:52:13,324: SwitchPort 70:63:71:75:0f:84 connected to Link d5:3d:df:8d:21:94/192.168.1.1<-->70:63:71:75:0f:84\n",
|
||||
"2023-09-05 15:52:13,326: Link d5:3d:df:8d:21:94/192.168.1.1<-->70:63:71:75:0f:84 up\n",
|
||||
"2023-09-05 15:52:13,327: Link d5:3d:df:8d:21:94/192.168.1.1<-->70:63:71:75:0f:84 up\n",
|
||||
"2023-09-05 15:52:13,329: Added link 497f7357-e14e-4f00-b6cd-68286b053496 to connect d5:3d:df:8d:21:94/192.168.1.1 and 70:63:71:75:0f:84\n",
|
||||
"2023-09-05 15:52:13,333: Added node 9cf37bd7-9f67-47f8-836b-3b5e69dd600c to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,336: NIC c7:ca:5f:6c:50:c9/192.168.10.1 connected to Link c7:ca:5f:6c:50:c9/192.168.10.1<-->e7:21:66:e4:da:2c\n",
|
||||
"2023-09-05 15:52:13,338: SwitchPort e7:21:66:e4:da:2c connected to Link c7:ca:5f:6c:50:c9/192.168.10.1<-->e7:21:66:e4:da:2c\n",
|
||||
"2023-09-05 15:52:13,340: Link c7:ca:5f:6c:50:c9/192.168.10.1<-->e7:21:66:e4:da:2c up\n",
|
||||
"2023-09-05 15:52:13,341: Link c7:ca:5f:6c:50:c9/192.168.10.1<-->e7:21:66:e4:da:2c up\n",
|
||||
"2023-09-05 15:52:13,343: Added link b1165845-46af-400d-b408-9f6b0fe4a51a to connect c7:ca:5f:6c:50:c9/192.168.10.1 and e7:21:66:e4:da:2c\n",
|
||||
"2023-09-05 15:52:13,345: Added node 9c7f4049-30fa-40bd-b0c8-2119bef7936c to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,347: SwitchPort e9:5c:26:c2:74:a2 connected to Link e9:5c:26:c2:74:a2<-->fb:05:aa:54:2d:3e/192.168.10.21\n",
|
||||
"2023-09-05 15:52:13,351: Link e9:5c:26:c2:74:a2<-->fb:05:aa:54:2d:3e/192.168.10.21 up\n",
|
||||
"2023-09-05 15:52:13,353: NIC fb:05:aa:54:2d:3e/192.168.10.21 connected to Link e9:5c:26:c2:74:a2<-->fb:05:aa:54:2d:3e/192.168.10.21\n",
|
||||
"2023-09-05 15:52:13,354: Link e9:5c:26:c2:74:a2<-->fb:05:aa:54:2d:3e/192.168.10.21 up\n",
|
||||
"2023-09-05 15:52:13,356: Added link 7d9ade8d-ed9c-4688-8375-18b58102b2a7 to connect e9:5c:26:c2:74:a2 and fb:05:aa:54:2d:3e/192.168.10.21\n",
|
||||
"2023-09-05 15:52:13,358: Added node 88c26ce5-4243-4247-98a3-315ff54f7ef6 to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,360: SwitchPort 30:fd:61:15:db:ad connected to Link 30:fd:61:15:db:ad<-->c1:e2:46:a2:cb:b2/192.168.10.22\n",
|
||||
"2023-09-05 15:52:13,362: Link 30:fd:61:15:db:ad<-->c1:e2:46:a2:cb:b2/192.168.10.22 up\n",
|
||||
"2023-09-05 15:52:13,363: NIC c1:e2:46:a2:cb:b2/192.168.10.22 connected to Link 30:fd:61:15:db:ad<-->c1:e2:46:a2:cb:b2/192.168.10.22\n",
|
||||
"2023-09-05 15:52:13,365: Link 30:fd:61:15:db:ad<-->c1:e2:46:a2:cb:b2/192.168.10.22 up\n",
|
||||
"2023-09-05 15:52:13,367: Added link bcfe4c45-d680-4f72-a90a-9fa57c2a6fba to connect 30:fd:61:15:db:ad and c1:e2:46:a2:cb:b2/192.168.10.22\n",
|
||||
"2023-09-05 15:52:13,370: Added node d7e5389a-9970-4c47-926c-9069b925e934 to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,372: SwitchPort 35:0c:3a:21:7c:d1 connected to Link 35:0c:3a:21:7c:d1<-->40:4f:3e:f0:32:66/192.168.1.10\n",
|
||||
"2023-09-05 15:52:13,375: Link 35:0c:3a:21:7c:d1<-->40:4f:3e:f0:32:66/192.168.1.10 up\n",
|
||||
"2023-09-05 15:52:13,376: NIC 40:4f:3e:f0:32:66/192.168.1.10 connected to Link 35:0c:3a:21:7c:d1<-->40:4f:3e:f0:32:66/192.168.1.10\n",
|
||||
"2023-09-05 15:52:13,378: Link 35:0c:3a:21:7c:d1<-->40:4f:3e:f0:32:66/192.168.1.10 up\n",
|
||||
"2023-09-05 15:52:13,380: Added link 34254262-beeb-4967-b7ff-3480928e47f9 to connect 35:0c:3a:21:7c:d1 and 40:4f:3e:f0:32:66/192.168.1.10\n",
|
||||
"2023-09-05 15:52:13,386: Added node 02c25642-baa5-49a4-aadd-f5d549696351 to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,388: SwitchPort a4:ab:83:f0:b5:fe connected to Link a4:ab:83:f0:b5:fe<-->4b:a9:6c:90:ae:8f/192.168.1.12\n",
|
||||
"2023-09-05 15:52:13,390: Link a4:ab:83:f0:b5:fe<-->4b:a9:6c:90:ae:8f/192.168.1.12 up\n",
|
||||
"2023-09-05 15:52:13,392: NIC 4b:a9:6c:90:ae:8f/192.168.1.12 connected to Link a4:ab:83:f0:b5:fe<-->4b:a9:6c:90:ae:8f/192.168.1.12\n",
|
||||
"2023-09-05 15:52:13,393: Link a4:ab:83:f0:b5:fe<-->4b:a9:6c:90:ae:8f/192.168.1.12 up\n",
|
||||
"2023-09-05 15:52:13,395: Added link 433b0cec-445d-4447-9502-c8727eb14a81 to connect a4:ab:83:f0:b5:fe and 4b:a9:6c:90:ae:8f/192.168.1.12\n",
|
||||
"2023-09-05 15:52:13,398: Added node 6f89bce8-34e4-4fdf-b860-b34027efa639 to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,400: SwitchPort c2:9f:42:ec:ea:a0 connected to Link c2:9f:42:ec:ea:a0<-->c7:61:9d:6e:0b:29/192.168.1.14\n",
|
||||
"2023-09-05 15:52:13,403: Link c2:9f:42:ec:ea:a0<-->c7:61:9d:6e:0b:29/192.168.1.14 up\n",
|
||||
"2023-09-05 15:52:13,405: NIC c7:61:9d:6e:0b:29/192.168.1.14 connected to Link c2:9f:42:ec:ea:a0<-->c7:61:9d:6e:0b:29/192.168.1.14\n",
|
||||
"2023-09-05 15:52:13,407: Link c2:9f:42:ec:ea:a0<-->c7:61:9d:6e:0b:29/192.168.1.14 up\n",
|
||||
"2023-09-05 15:52:13,408: Added link 30b18ea0-ea2b-494a-8a63-d5b4bd703668 to connect c2:9f:42:ec:ea:a0 and c7:61:9d:6e:0b:29/192.168.1.14\n",
|
||||
"2023-09-05 15:52:13,412: Added node 15eb1a5c-50f4-4681-81f8-7ad457c6b1af to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,414: SwitchPort 5c:0e:20:b3:65:cb connected to Link 5c:0e:20:b3:65:cb<-->bd:06:4d:19:fb:f2/192.168.1.16\n",
|
||||
"2023-09-05 15:52:13,417: Link 5c:0e:20:b3:65:cb<-->bd:06:4d:19:fb:f2/192.168.1.16 up\n",
|
||||
"2023-09-05 15:52:13,419: NIC bd:06:4d:19:fb:f2/192.168.1.16 connected to Link 5c:0e:20:b3:65:cb<-->bd:06:4d:19:fb:f2/192.168.1.16\n",
|
||||
"2023-09-05 15:52:13,420: Link 5c:0e:20:b3:65:cb<-->bd:06:4d:19:fb:f2/192.168.1.16 up\n",
|
||||
"2023-09-05 15:52:13,421: Added link deb1ee09-9731-46e2-99fb-1276ca48ccb3 to connect 5c:0e:20:b3:65:cb and bd:06:4d:19:fb:f2/192.168.1.16\n",
|
||||
"2023-09-05 15:52:13,424: Added node 5c5b1c84-5d06-4319-80c0-ca3adf9ce2c6 to Network 16435554-f108-479e-a4de-719f39898d0a\n",
|
||||
"2023-09-05 15:52:13,425: SwitchPort e6:fa:f7:9a:d3:8c connected to Link e6:fa:f7:9a:d3:8c<-->37:5b:c5:ac:e5:08/192.168.1.110\n",
|
||||
"2023-09-05 15:52:13,429: Link e6:fa:f7:9a:d3:8c<-->37:5b:c5:ac:e5:08/192.168.1.110 up\n",
|
||||
"2023-09-05 15:52:13,430: NIC 37:5b:c5:ac:e5:08/192.168.1.110 connected to Link e6:fa:f7:9a:d3:8c<-->37:5b:c5:ac:e5:08/192.168.1.110\n",
|
||||
"2023-09-05 15:52:13,432: Link e6:fa:f7:9a:d3:8c<-->37:5b:c5:ac:e5:08/192.168.1.110 up\n",
|
||||
"2023-09-05 15:52:13,434: Added link cf4ecad7-3b24-4f8f-9de8-01b9f64b270b to connect e6:fa:f7:9a:d3:8c and 37:5b:c5:ac:e5:08/192.168.1.110\n",
|
||||
"2023-09-05 15:52:13,436::ERROR::primaite.simulator.network.hardware.base::176::NIC 4f:4b:3f:f1:02:c0/192.168.10.110 cannot be enabled as it is not connected to a Link\n",
|
||||
"2023-09-05 15:52:13,438: SwitchPort 57:0a:35:80:1c:38 connected to Link 57:0a:35:80:1c:38<-->4f:4b:3f:f1:02:c0/192.168.10.110\n",
|
||||
"2023-09-05 15:52:13,440: Link 57:0a:35:80:1c:38<-->4f:4b:3f:f1:02:c0/192.168.10.110 up\n",
|
||||
"2023-09-05 15:52:13,441: NIC 4f:4b:3f:f1:02:c0/192.168.10.110 connected to Link 57:0a:35:80:1c:38<-->4f:4b:3f:f1:02:c0/192.168.10.110\n",
|
||||
"2023-09-05 15:52:13,443: Link 57:0a:35:80:1c:38<-->4f:4b:3f:f1:02:c0/192.168.10.110 up\n",
|
||||
"2023-09-05 15:52:13,447: Added link 035d9749-1bf6-4bd5-b945-c931f207ffb9 to connect 57:0a:35:80:1c:38 and 4f:4b:3f:f1:02:c0/192.168.10.110\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"net = arcd_uc2_network()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"act_tree = net._action_manager.get_action_tree()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', 'eb6dfd45-d688-47cf-b061-5f45820a6bc7', 'enable']\n",
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', 'eb6dfd45-d688-47cf-b061-5f45820a6bc7', 'disable']\n",
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', '2192673d-ad8c-437f-a4d6-0e222ab7e190', 'enable']\n",
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', '2192673d-ad8c-437f-a4d6-0e222ab7e190', 'disable']\n",
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', '3c3fb3d8-c5d1-41aa-8e3e-db1cc0445b0b', 'enable']\n",
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', '3c3fb3d8-c5d1-41aa-8e3e-db1cc0445b0b', 'disable']\n",
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', '29e90915-815f-4505-b957-6f46681950b3', 'enable']\n",
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', '29e90915-815f-4505-b957-6f46681950b3', 'disable']\n",
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', '0915f437-6ed3-4134-b754-7d903c98eb57', 'enable']\n",
|
||||
"['node', '26e189bb-442e-4f73-ab7a-1c4dd162e986', 'nic', '0915f437-6ed3-4134-b754-7d903c98eb57', 'disable']\n",
|
||||
"['node', '9c7f4049-30fa-40bd-b0c8-2119bef7936c', 'nic', '199c9558-6a73-423e-9c69-ced05cd597cb', 'enable']\n",
|
||||
"['node', '9c7f4049-30fa-40bd-b0c8-2119bef7936c', 'nic', '199c9558-6a73-423e-9c69-ced05cd597cb', 'disable']\n",
|
||||
"['node', '88c26ce5-4243-4247-98a3-315ff54f7ef6', 'nic', '6f871129-d13e-4c8a-85ff-7102fa1e7b8e', 'enable']\n",
|
||||
"['node', '88c26ce5-4243-4247-98a3-315ff54f7ef6', 'nic', '6f871129-d13e-4c8a-85ff-7102fa1e7b8e', 'disable']\n",
|
||||
"['node', 'd7e5389a-9970-4c47-926c-9069b925e934', 'nic', 'b6c15c77-8869-400c-8a47-62856dd27ce6', 'enable']\n",
|
||||
"['node', 'd7e5389a-9970-4c47-926c-9069b925e934', 'nic', 'b6c15c77-8869-400c-8a47-62856dd27ce6', 'disable']\n",
|
||||
"['node', '02c25642-baa5-49a4-aadd-f5d549696351', 'nic', '398660cc-20ce-444e-b93e-d45b8b865e10', 'enable']\n",
|
||||
"['node', '02c25642-baa5-49a4-aadd-f5d549696351', 'nic', '398660cc-20ce-444e-b93e-d45b8b865e10', 'disable']\n",
|
||||
"['node', '6f89bce8-34e4-4fdf-b860-b34027efa639', 'nic', '43c0f913-a203-4436-8649-ab73363bd8cb', 'enable']\n",
|
||||
"['node', '6f89bce8-34e4-4fdf-b860-b34027efa639', 'nic', '43c0f913-a203-4436-8649-ab73363bd8cb', 'disable']\n",
|
||||
"['node', '15eb1a5c-50f4-4681-81f8-7ad457c6b1af', 'nic', '1d42ed40-b6f9-4dba-aa23-10143842aac8', 'enable']\n",
|
||||
"['node', '15eb1a5c-50f4-4681-81f8-7ad457c6b1af', 'nic', '1d42ed40-b6f9-4dba-aa23-10143842aac8', 'disable']\n",
|
||||
"['node', '5c5b1c84-5d06-4319-80c0-ca3adf9ce2c6', 'nic', 'f921e45e-5a11-4c87-bfe9-47bdba7d6828', 'enable']\n",
|
||||
"['node', '5c5b1c84-5d06-4319-80c0-ca3adf9ce2c6', 'nic', 'f921e45e-5a11-4c87-bfe9-47bdba7d6828', 'disable']\n",
|
||||
"['node', '5c5b1c84-5d06-4319-80c0-ca3adf9ce2c6', 'nic', '0ed5ed4a-e36f-4060-a13d-a7832d391887', 'enable']\n",
|
||||
"['node', '5c5b1c84-5d06-4319-80c0-ca3adf9ce2c6', 'nic', '0ed5ed4a-e36f-4060-a13d-a7832d391887', 'disable']\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"for a in act_tree:\n",
|
||||
" print(a)\n",
|
||||
"simController.apply_action(\n",
|
||||
" {\n",
|
||||
" 'network':'<net-uuid>', \n",
|
||||
" 'node': '26e189bb-442e-4f73-ab7a-1c4dd162e986', \n",
|
||||
" 'nic': 'eb6dfd45-d688-47cf-b061-5f45820a6bc7', \n",
|
||||
" 'verb': 'enable', \n",
|
||||
" 'options':{'...':'...'}\n",
|
||||
" })\n",
|
||||
"\n",
|
||||
"a = {\n",
|
||||
" 'target_type': 'network',\n",
|
||||
" 'target_options': {\n",
|
||||
" 'identifier': '<network-uid>',\n",
|
||||
" 'target_type': '<node>',\n",
|
||||
" 'target_options': {\n",
|
||||
" 'identifier': '<node-uid>',\n",
|
||||
" \n",
|
||||
" }\n",
|
||||
" }\n",
|
||||
"}\n",
|
||||
"# ^ do something like this where the requests are k:v pairs instead, have a simple/similar approach "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "venv",
|
||||
"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.12"
|
||||
},
|
||||
"orig_nbformat": 4
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
# flake8: noqa
|
||||
"""Core of the PrimAITE Simulator."""
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Callable, Dict, List, Optional, Union
|
||||
from typing import Callable, ClassVar, Dict, List, Optional, Union
|
||||
from uuid import uuid4
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
@@ -42,7 +42,7 @@ class Action(BaseModel):
|
||||
the action can be performed or not.
|
||||
"""
|
||||
|
||||
func: Callable[[List[str], Dict], None]
|
||||
func: Callable[[Dict], None]
|
||||
"""
|
||||
``func`` is a function that accepts a request and a context dict. Typically this would be a lambda function
|
||||
that invokes a class method of your SimComponent. For example if the component is a node and the action is for
|
||||
@@ -74,7 +74,7 @@ class ActionManager(BaseModel):
|
||||
actions: Dict[str, Action] = {}
|
||||
"""maps action verb to an action object."""
|
||||
|
||||
def __call__(self, request: List[str], context: Dict) -> None:
|
||||
def __call__(self, request: Dict, context: Dict) -> None:
|
||||
"""
|
||||
Process an action request.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user