From a719389e05aee3f2520685ab9944e718667377c5 Mon Sep 17 00:00:00 2001 From: Marek Wolan Date: Tue, 19 Sep 2023 11:24:42 +0100 Subject: [PATCH] Add placeholder actions --- src/primaite/notebooks/scratch.ipynb | 345 ++++++++++++------ .../simulator/file_system/file_system.py | 38 +- .../simulator/network/hardware/base.py | 16 +- 3 files changed, 284 insertions(+), 115 deletions(-) diff --git a/src/primaite/notebooks/scratch.ipynb b/src/primaite/notebooks/scratch.ipynb index 50a85e7a..023b7d12 100644 --- a/src/primaite/notebooks/scratch.ipynb +++ b/src/primaite/notebooks/scratch.ipynb @@ -2,83 +2,50 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ - "from primaite.simulator.network.networks import arcd_uc2_network\n" + "from primaite.simulator.network.networks import arcd_uc2_network\n", + "%load_ext autoreload\n", + "%autoreload 2" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 13, "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" + "2023-09-19 11:04:37,447: Added node 654e2f3e-1017-4f0a-9f77-addc1f652148 to Network f31c099e-6349-4f78-8a35-899443011640\n", + "2023-09-19 11:04:37,449: Added node 5953be77-ab77-43c0-a8bb-a72f94121358 to Network f31c099e-6349-4f78-8a35-899443011640\n", + "2023-09-19 11:04:37,453: Added node 7eeca128-bea5-4046-8b0c-c11a684f5638 to Network f31c099e-6349-4f78-8a35-899443011640\n", + "2023-09-19 11:04:37,457: Added node dc517f9b-699a-423a-8e68-40f45aece537 to Network f31c099e-6349-4f78-8a35-899443011640\n", + "2023-09-19 11:04:37,461: Added node 0b77284b-93c4-4820-91aa-46ef87d95afe to Network f31c099e-6349-4f78-8a35-899443011640\n", + "2023-09-19 11:04:37,467: Added node 5bbb11fb-d9d6-4e44-92e5-42b31a110bc7 to Network f31c099e-6349-4f78-8a35-899443011640\n", + "2023-09-19 11:04:37,469: Added node f6be7556-fdd9-4207-a588-447ccbdb1ee2 to Network f31c099e-6349-4f78-8a35-899443011640\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-09-19 11:04:37,539: Added node 51795116-f673-4c38-9524-525014565ac6 to Network f31c099e-6349-4f78-8a35-899443011640\n", + "2023-09-19 11:04:37,546: Added node 3fc6c09a-2918-4ae6-85ca-e85eeda8bd47 to Network f31c099e-6349-4f78-8a35-899443011640\n", + "2023-09-19 11:04:37,549: Added node 664bd02f-8c85-4766-8144-46944b9160cb to Network f31c099e-6349-4f78-8a35-899443011640\n", + "2023-09-19 11:04:37,552::ERROR::primaite.simulator.network.hardware.base::176::NIC fb:f1:07:56:1a:dc/192.168.10.110 cannot be enabled as it is not connected to a Link\n" ] } ], @@ -86,6 +53,38 @@ "net = arcd_uc2_network()" ] }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "ename": "RecursionError", + "evalue": "maximum recursion depth exceeded while calling a Python object", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mRecursionError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/IPython/core/formatters.py:708\u001b[0m, in \u001b[0;36mPlainTextFormatter.__call__\u001b[0;34m(self, obj)\u001b[0m\n\u001b[1;32m 701\u001b[0m stream \u001b[39m=\u001b[39m StringIO()\n\u001b[1;32m 702\u001b[0m printer \u001b[39m=\u001b[39m pretty\u001b[39m.\u001b[39mRepresentationPrinter(stream, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mverbose,\n\u001b[1;32m 703\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mmax_width, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mnewline,\n\u001b[1;32m 704\u001b[0m max_seq_length\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mmax_seq_length,\n\u001b[1;32m 705\u001b[0m singleton_pprinters\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39msingleton_printers,\n\u001b[1;32m 706\u001b[0m type_pprinters\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtype_printers,\n\u001b[1;32m 707\u001b[0m deferred_pprinters\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdeferred_printers)\n\u001b[0;32m--> 708\u001b[0m printer\u001b[39m.\u001b[39;49mpretty(obj)\n\u001b[1;32m 709\u001b[0m printer\u001b[39m.\u001b[39mflush()\n\u001b[1;32m 710\u001b[0m \u001b[39mreturn\u001b[39;00m stream\u001b[39m.\u001b[39mgetvalue()\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/IPython/lib/pretty.py:410\u001b[0m, in \u001b[0;36mRepresentationPrinter.pretty\u001b[0;34m(self, obj)\u001b[0m\n\u001b[1;32m 407\u001b[0m \u001b[39mreturn\u001b[39;00m meth(obj, \u001b[39mself\u001b[39m, cycle)\n\u001b[1;32m 408\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mcls\u001b[39m \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mobject\u001b[39m \\\n\u001b[1;32m 409\u001b[0m \u001b[39mand\u001b[39;00m \u001b[39mcallable\u001b[39m(\u001b[39mcls\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__dict__\u001b[39m\u001b[39m.\u001b[39mget(\u001b[39m'\u001b[39m\u001b[39m__repr__\u001b[39m\u001b[39m'\u001b[39m)):\n\u001b[0;32m--> 410\u001b[0m \u001b[39mreturn\u001b[39;00m _repr_pprint(obj, \u001b[39mself\u001b[39;49m, cycle)\n\u001b[1;32m 412\u001b[0m \u001b[39mreturn\u001b[39;00m _default_pprint(obj, \u001b[39mself\u001b[39m, cycle)\n\u001b[1;32m 413\u001b[0m \u001b[39mfinally\u001b[39;00m:\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/IPython/lib/pretty.py:778\u001b[0m, in \u001b[0;36m_repr_pprint\u001b[0;34m(obj, p, cycle)\u001b[0m\n\u001b[1;32m 776\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"A pprint that just redirects to the normal repr function.\"\"\"\u001b[39;00m\n\u001b[1;32m 777\u001b[0m \u001b[39m# Find newlines and replace them with p.break_()\u001b[39;00m\n\u001b[0;32m--> 778\u001b[0m output \u001b[39m=\u001b[39m \u001b[39mrepr\u001b[39;49m(obj)\n\u001b[1;32m 779\u001b[0m lines \u001b[39m=\u001b[39m output\u001b[39m.\u001b[39msplitlines()\n\u001b[1;32m 780\u001b[0m \u001b[39mwith\u001b[39;00m p\u001b[39m.\u001b[39mgroup():\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/main.py:859\u001b[0m, in \u001b[0;36mBaseModel.__repr__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 858\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr__\u001b[39m(\u001b[39mself\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[0;32m--> 859\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__repr_name__()\u001b[39m}\u001b[39;00m\u001b[39m(\u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m__repr_str__(\u001b[39m\"\u001b[39;49m\u001b[39m, \u001b[39;49m\u001b[39m\"\u001b[39;49m)\u001b[39m}\u001b[39;00m\u001b[39m)\u001b[39m\u001b[39m'\u001b[39m\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/_internal/_repr.py:55\u001b[0m, in \u001b[0;36mRepresentation.__repr_str__\u001b[0;34m(self, join_str)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr_str__\u001b[39m(\u001b[39mself\u001b[39m, join_str: \u001b[39mstr\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[0;32m---> 55\u001b[0m \u001b[39mreturn\u001b[39;00m join_str\u001b[39m.\u001b[39;49mjoin(\u001b[39mrepr\u001b[39;49m(v) \u001b[39mif\u001b[39;49;00m a \u001b[39mis\u001b[39;49;00m \u001b[39mNone\u001b[39;49;00m \u001b[39melse\u001b[39;49;00m \u001b[39mf\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39m{\u001b[39;49;00ma\u001b[39m}\u001b[39;49;00m\u001b[39m=\u001b[39;49m\u001b[39m{\u001b[39;49;00mv\u001b[39m!r}\u001b[39;49;00m\u001b[39m'\u001b[39;49m \u001b[39mfor\u001b[39;49;00m a, v \u001b[39min\u001b[39;49;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m__repr_args__())\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/_internal/_repr.py:55\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr_str__\u001b[39m(\u001b[39mself\u001b[39m, join_str: \u001b[39mstr\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[0;32m---> 55\u001b[0m \u001b[39mreturn\u001b[39;00m join_str\u001b[39m.\u001b[39mjoin(\u001b[39mrepr\u001b[39m(v) \u001b[39mif\u001b[39;00m a \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39m{\u001b[39;00ma\u001b[39m}\u001b[39;00m\u001b[39m=\u001b[39m\u001b[39m{\u001b[39;00mv\u001b[39m!r}\u001b[39;00m\u001b[39m'\u001b[39m \u001b[39mfor\u001b[39;00m a, v \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__repr_args__())\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/main.py:859\u001b[0m, in \u001b[0;36mBaseModel.__repr__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 858\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr__\u001b[39m(\u001b[39mself\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[0;32m--> 859\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__repr_name__()\u001b[39m}\u001b[39;00m\u001b[39m(\u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m__repr_str__(\u001b[39m\"\u001b[39;49m\u001b[39m, \u001b[39;49m\u001b[39m\"\u001b[39;49m)\u001b[39m}\u001b[39;00m\u001b[39m)\u001b[39m\u001b[39m'\u001b[39m\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/_internal/_repr.py:55\u001b[0m, in \u001b[0;36mRepresentation.__repr_str__\u001b[0;34m(self, join_str)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr_str__\u001b[39m(\u001b[39mself\u001b[39m, join_str: \u001b[39mstr\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[0;32m---> 55\u001b[0m \u001b[39mreturn\u001b[39;00m join_str\u001b[39m.\u001b[39;49mjoin(\u001b[39mrepr\u001b[39;49m(v) \u001b[39mif\u001b[39;49;00m a \u001b[39mis\u001b[39;49;00m \u001b[39mNone\u001b[39;49;00m \u001b[39melse\u001b[39;49;00m \u001b[39mf\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39m{\u001b[39;49;00ma\u001b[39m}\u001b[39;49;00m\u001b[39m=\u001b[39;49m\u001b[39m{\u001b[39;49;00mv\u001b[39m!r}\u001b[39;49;00m\u001b[39m'\u001b[39;49m \u001b[39mfor\u001b[39;49;00m a, v \u001b[39min\u001b[39;49;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m__repr_args__())\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/_internal/_repr.py:55\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr_str__\u001b[39m(\u001b[39mself\u001b[39m, join_str: \u001b[39mstr\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[0;32m---> 55\u001b[0m \u001b[39mreturn\u001b[39;00m join_str\u001b[39m.\u001b[39mjoin(\u001b[39mrepr\u001b[39m(v) \u001b[39mif\u001b[39;00m a \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39m{\u001b[39;00ma\u001b[39m}\u001b[39;00m\u001b[39m=\u001b[39m\u001b[39m{\u001b[39;00mv\u001b[39m!r}\u001b[39;00m\u001b[39m'\u001b[39m \u001b[39mfor\u001b[39;00m a, v \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__repr_args__())\n", + " \u001b[0;31m[... skipping similar frames: BaseModel.__repr__ at line 859 (589 times), at line 55 (588 times), Representation.__repr_str__ at line 55 (588 times)]\u001b[0m\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/_internal/_repr.py:55\u001b[0m, in \u001b[0;36mRepresentation.__repr_str__\u001b[0;34m(self, join_str)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr_str__\u001b[39m(\u001b[39mself\u001b[39m, join_str: \u001b[39mstr\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[0;32m---> 55\u001b[0m \u001b[39mreturn\u001b[39;00m join_str\u001b[39m.\u001b[39;49mjoin(\u001b[39mrepr\u001b[39;49m(v) \u001b[39mif\u001b[39;49;00m a \u001b[39mis\u001b[39;49;00m \u001b[39mNone\u001b[39;49;00m \u001b[39melse\u001b[39;49;00m \u001b[39mf\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39m{\u001b[39;49;00ma\u001b[39m}\u001b[39;49;00m\u001b[39m=\u001b[39;49m\u001b[39m{\u001b[39;49;00mv\u001b[39m!r}\u001b[39;49;00m\u001b[39m'\u001b[39;49m \u001b[39mfor\u001b[39;49;00m a, v \u001b[39min\u001b[39;49;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m__repr_args__())\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/_internal/_repr.py:55\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr_str__\u001b[39m(\u001b[39mself\u001b[39m, join_str: \u001b[39mstr\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[0;32m---> 55\u001b[0m \u001b[39mreturn\u001b[39;00m join_str\u001b[39m.\u001b[39mjoin(\u001b[39mrepr\u001b[39m(v) \u001b[39mif\u001b[39;00m a \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39m{\u001b[39;00ma\u001b[39m}\u001b[39;00m\u001b[39m=\u001b[39m\u001b[39m{\u001b[39;00mv\u001b[39m!r}\u001b[39;00m\u001b[39m'\u001b[39m \u001b[39mfor\u001b[39;00m a, v \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__repr_args__())\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/main.py:859\u001b[0m, in \u001b[0;36mBaseModel.__repr__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 858\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr__\u001b[39m(\u001b[39mself\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[0;32m--> 859\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m__repr_name__()\u001b[39m}\u001b[39;00m\u001b[39m(\u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__repr_str__(\u001b[39m\"\u001b[39m\u001b[39m, \u001b[39m\u001b[39m\"\u001b[39m)\u001b[39m}\u001b[39;00m\u001b[39m)\u001b[39m\u001b[39m'\u001b[39m\n", + "File \u001b[0;32m~/repos/PrimAITE/venv/lib/python3.10/site-packages/pydantic/_internal/_repr.py:52\u001b[0m, in \u001b[0;36mRepresentation.__repr_name__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__repr_name__\u001b[39m(\u001b[39mself\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mstr\u001b[39m:\n\u001b[1;32m 51\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"Name of the instance's class, used in __repr__.\"\"\"\u001b[39;00m\n\u001b[0;32m---> 52\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m\u001b[39m__class__\u001b[39;49m\u001b[39m.\u001b[39;49m\u001b[39m__name__\u001b[39;49m\n", + "\u001b[0;31mRecursionError\u001b[0m: maximum recursion depth exceeded while calling a Python object" + ] + } + ], + "source": [] + }, { "cell_type": "code", "execution_count": 3, @@ -95,6 +94,26 @@ "act_tree = net._action_manager.get_action_tree()" ] }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "115" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(act_tree)" + ] + }, { "cell_type": "code", "execution_count": 5, @@ -104,59 +123,165 @@ "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" + "[['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '9f5dfd4a-2727-466d-b7ab-6d4f18e0ce2b', 'enable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '9f5dfd4a-2727-466d-b7ab-6d4f18e0ce2b', 'disable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '7ba299f5-1d94-4f9d-a286-8fe3b903a581', 'enable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '7ba299f5-1d94-4f9d-a286-8fe3b903a581', 'disable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '022a1240-844d-4099-930d-052e0452472e', 'enable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '022a1240-844d-4099-930d-052e0452472e', 'disable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '829ff3c6-7e0b-4d28-93bf-b6dc2abd8e2a', 'enable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '829ff3c6-7e0b-4d28-93bf-b6dc2abd8e2a', 'disable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', 'ea185a03-8b34-4347-b0d7-ca2ed61303b4', 'enable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', 'ea185a03-8b34-4347-b0d7-ca2ed61303b4', 'disable'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'file_system', 'folder', '2615763e-d91b-46a5-982b-a21a18d7e02c', 'scan'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'file_system', 'folder', '2615763e-d91b-46a5-982b-a21a18d7e02c', 'checkhash'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'file_system', 'folder', '2615763e-d91b-46a5-982b-a21a18d7e02c', 'repair'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'file_system', 'folder', '2615763e-d91b-46a5-982b-a21a18d7e02c', 'restore'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'scan'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'shutdown'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'startup'], ['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'reset'], ['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'file_system', 'folder', '7afde692-db6f-4ca7-a806-629daf0d8098', 'scan'], ['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'file_system', 'folder', '7afde692-db6f-4ca7-a806-629daf0d8098', 'checkhash'], ['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'file_system', 'folder', '7afde692-db6f-4ca7-a806-629daf0d8098', 'repair'], ['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'file_system', 'folder', '7afde692-db6f-4ca7-a806-629daf0d8098', 'restore'], ['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'scan'], ['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'shutdown'], ['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'startup'], ['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'reset'], ['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'file_system', 'folder', '75cc4623-27c3-49c8-9ce3-220bbaf7e56a', 'scan'], ['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'file_system', 'folder', '75cc4623-27c3-49c8-9ce3-220bbaf7e56a', 'checkhash'], ['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'file_system', 'folder', '75cc4623-27c3-49c8-9ce3-220bbaf7e56a', 'repair'], ['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'file_system', 'folder', '75cc4623-27c3-49c8-9ce3-220bbaf7e56a', 'restore'], ['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'scan'], ['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'shutdown'], ['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'startup'], ['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'reset'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'nic', 'b9b3406a-3a46-4ce7-99d2-6eef00c01b17', 'enable'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'nic', 'b9b3406a-3a46-4ce7-99d2-6eef00c01b17', 'disable'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'file_system', 'folder', '8703d164-fee6-4014-8472-268066bface1', 'scan'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'file_system', 'folder', '8703d164-fee6-4014-8472-268066bface1', 'checkhash'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'file_system', 'folder', '8703d164-fee6-4014-8472-268066bface1', 'repair'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'file_system', 'folder', '8703d164-fee6-4014-8472-268066bface1', 'restore'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'scan'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'shutdown'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'startup'], ['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'reset'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'nic', '428b04e5-03e5-4046-8b4e-6ecf9dc25ff7', 'enable'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'nic', '428b04e5-03e5-4046-8b4e-6ecf9dc25ff7', 'disable'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'file_system', 'folder', 'e3296695-9096-4e92-8dcf-fdbc77956983', 'scan'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'file_system', 'folder', 'e3296695-9096-4e92-8dcf-fdbc77956983', 'checkhash'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'file_system', 'folder', 'e3296695-9096-4e92-8dcf-fdbc77956983', 'repair'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'file_system', 'folder', 'e3296695-9096-4e92-8dcf-fdbc77956983', 'restore'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'scan'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'shutdown'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'startup'], ['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'reset'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'nic', 'bc6c1fd1-4bda-4b98-9d5c-382b77879eee', 'enable'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'nic', 'bc6c1fd1-4bda-4b98-9d5c-382b77879eee', 'disable'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'file_system', 'folder', 'b7958051-da38-4a00-a4f2-8596fee9904d', 'scan'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'file_system', 'folder', 'b7958051-da38-4a00-a4f2-8596fee9904d', 'checkhash'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'file_system', 'folder', 'b7958051-da38-4a00-a4f2-8596fee9904d', 'repair'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'file_system', 'folder', 'b7958051-da38-4a00-a4f2-8596fee9904d', 'restore'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'scan'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'shutdown'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'startup'], ['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'reset'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'nic', '795ba4b5-a910-444d-b9f8-31944ea4ff17', 'enable'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'nic', '795ba4b5-a910-444d-b9f8-31944ea4ff17', 'disable'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', '70edd316-e521-4b09-9b9e-362558422439', 'scan'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', '70edd316-e521-4b09-9b9e-362558422439', 'checkhash'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', '70edd316-e521-4b09-9b9e-362558422439', 'repair'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', '70edd316-e521-4b09-9b9e-362558422439', 'restore'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', 'ee3d96b6-20b3-41d0-bbb1-70e7a7add2c0', 'scan'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', 'ee3d96b6-20b3-41d0-bbb1-70e7a7add2c0', 'checkhash'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', 'ee3d96b6-20b3-41d0-bbb1-70e7a7add2c0', 'repair'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', 'ee3d96b6-20b3-41d0-bbb1-70e7a7add2c0', 'restore'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'scan'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'checkhash'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'delete'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'repair'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'restore'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'scan'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'shutdown'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'startup'], ['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'reset'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'nic', 'aa5c5909-bf8c-4dce-8664-a74e9454cc4a', 'enable'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'nic', 'aa5c5909-bf8c-4dce-8664-a74e9454cc4a', 'disable'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'file_system', 'folder', '4b2f461c-ef93-4910-acc4-006d518c0d6e', 'scan'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'file_system', 'folder', '4b2f461c-ef93-4910-acc4-006d518c0d6e', 'checkhash'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'file_system', 'folder', '4b2f461c-ef93-4910-acc4-006d518c0d6e', 'repair'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'file_system', 'folder', '4b2f461c-ef93-4910-acc4-006d518c0d6e', 'restore'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'scan'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'shutdown'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'startup'], ['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'reset'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'nic', '21f32886-65e9-40a0-9483-a86e94dc0a3b', 'enable'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'nic', '21f32886-65e9-40a0-9483-a86e94dc0a3b', 'disable'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'file_system', 'folder', '9580a6b2-eeff-400a-948e-e8f3694dada0', 'scan'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'file_system', 'folder', '9580a6b2-eeff-400a-948e-e8f3694dada0', 'checkhash'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'file_system', 'folder', '9580a6b2-eeff-400a-948e-e8f3694dada0', 'repair'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'file_system', 'folder', '9580a6b2-eeff-400a-948e-e8f3694dada0', 'restore'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'scan'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'shutdown'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'startup'], ['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'reset'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'nic', 'a1287e24-97c6-4007-93ae-c6b5176f4fbe', 'enable'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'nic', 'a1287e24-97c6-4007-93ae-c6b5176f4fbe', 'disable'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'nic', '174b908b-e214-4efa-8837-d84924dad75f', 'enable'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'nic', '174b908b-e214-4efa-8837-d84924dad75f', 'disable'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'file_system', 'folder', '23d89e95-f6af-428d-809b-68c43c0d098a', 'scan'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'file_system', 'folder', '23d89e95-f6af-428d-809b-68c43c0d098a', 'checkhash'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'file_system', 'folder', '23d89e95-f6af-428d-809b-68c43c0d098a', 'repair'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'file_system', 'folder', '23d89e95-f6af-428d-809b-68c43c0d098a', 'restore'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'scan'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'shutdown'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'startup'], ['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'reset']]\n" + ] + } + ], + "source": [ + "print(act_tree)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '9f5dfd4a-2727-466d-b7ab-6d4f18e0ce2b', 'enable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '9f5dfd4a-2727-466d-b7ab-6d4f18e0ce2b', 'disable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '7ba299f5-1d94-4f9d-a286-8fe3b903a581', 'enable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '7ba299f5-1d94-4f9d-a286-8fe3b903a581', 'disable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '022a1240-844d-4099-930d-052e0452472e', 'enable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '022a1240-844d-4099-930d-052e0452472e', 'disable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '829ff3c6-7e0b-4d28-93bf-b6dc2abd8e2a', 'enable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', '829ff3c6-7e0b-4d28-93bf-b6dc2abd8e2a', 'disable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', 'ea185a03-8b34-4347-b0d7-ca2ed61303b4', 'enable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'nic', 'ea185a03-8b34-4347-b0d7-ca2ed61303b4', 'disable']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'file_system', 'folder', '2615763e-d91b-46a5-982b-a21a18d7e02c', 'scan']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'file_system', 'folder', '2615763e-d91b-46a5-982b-a21a18d7e02c', 'checkhash']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'file_system', 'folder', '2615763e-d91b-46a5-982b-a21a18d7e02c', 'repair']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'file_system', 'folder', '2615763e-d91b-46a5-982b-a21a18d7e02c', 'restore']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'scan']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'shutdown']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'startup']\n", + "['node', '72a46527-b4c6-4a51-a935-06b9a97c51da', 'reset']\n", + "['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'file_system', 'folder', '7afde692-db6f-4ca7-a806-629daf0d8098', 'scan']\n", + "['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'file_system', 'folder', '7afde692-db6f-4ca7-a806-629daf0d8098', 'checkhash']\n", + "['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'file_system', 'folder', '7afde692-db6f-4ca7-a806-629daf0d8098', 'repair']\n", + "['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'file_system', 'folder', '7afde692-db6f-4ca7-a806-629daf0d8098', 'restore']\n", + "['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'scan']\n", + "['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'shutdown']\n", + "['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'startup']\n", + "['node', '8efa0ed9-bbe8-4d8a-985a-6e8f281f4527', 'reset']\n", + "['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'file_system', 'folder', '75cc4623-27c3-49c8-9ce3-220bbaf7e56a', 'scan']\n", + "['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'file_system', 'folder', '75cc4623-27c3-49c8-9ce3-220bbaf7e56a', 'checkhash']\n", + "['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'file_system', 'folder', '75cc4623-27c3-49c8-9ce3-220bbaf7e56a', 'repair']\n", + "['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'file_system', 'folder', '75cc4623-27c3-49c8-9ce3-220bbaf7e56a', 'restore']\n", + "['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'scan']\n", + "['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'shutdown']\n", + "['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'startup']\n", + "['node', 'f80d3953-2165-48c9-935a-5ce65549f0fd', 'reset']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'nic', 'b9b3406a-3a46-4ce7-99d2-6eef00c01b17', 'enable']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'nic', 'b9b3406a-3a46-4ce7-99d2-6eef00c01b17', 'disable']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'file_system', 'folder', '8703d164-fee6-4014-8472-268066bface1', 'scan']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'file_system', 'folder', '8703d164-fee6-4014-8472-268066bface1', 'checkhash']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'file_system', 'folder', '8703d164-fee6-4014-8472-268066bface1', 'repair']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'file_system', 'folder', '8703d164-fee6-4014-8472-268066bface1', 'restore']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'scan']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'shutdown']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'startup']\n", + "['node', '7d8f5581-f87b-4623-b9e9-87e0a335c5ca', 'reset']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'nic', '428b04e5-03e5-4046-8b4e-6ecf9dc25ff7', 'enable']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'nic', '428b04e5-03e5-4046-8b4e-6ecf9dc25ff7', 'disable']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'file_system', 'folder', 'e3296695-9096-4e92-8dcf-fdbc77956983', 'scan']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'file_system', 'folder', 'e3296695-9096-4e92-8dcf-fdbc77956983', 'checkhash']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'file_system', 'folder', 'e3296695-9096-4e92-8dcf-fdbc77956983', 'repair']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'file_system', 'folder', 'e3296695-9096-4e92-8dcf-fdbc77956983', 'restore']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'scan']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'shutdown']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'startup']\n", + "['node', '520615e4-0e98-4aef-becf-5be9c22a02e8', 'reset']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'nic', 'bc6c1fd1-4bda-4b98-9d5c-382b77879eee', 'enable']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'nic', 'bc6c1fd1-4bda-4b98-9d5c-382b77879eee', 'disable']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'file_system', 'folder', 'b7958051-da38-4a00-a4f2-8596fee9904d', 'scan']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'file_system', 'folder', 'b7958051-da38-4a00-a4f2-8596fee9904d', 'checkhash']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'file_system', 'folder', 'b7958051-da38-4a00-a4f2-8596fee9904d', 'repair']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'file_system', 'folder', 'b7958051-da38-4a00-a4f2-8596fee9904d', 'restore']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'scan']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'shutdown']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'startup']\n", + "['node', '36f21fb5-9c5f-4b03-8797-a925b4a4edb0', 'reset']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'nic', '795ba4b5-a910-444d-b9f8-31944ea4ff17', 'enable']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'nic', '795ba4b5-a910-444d-b9f8-31944ea4ff17', 'disable']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', '70edd316-e521-4b09-9b9e-362558422439', 'scan']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', '70edd316-e521-4b09-9b9e-362558422439', 'checkhash']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', '70edd316-e521-4b09-9b9e-362558422439', 'repair']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', '70edd316-e521-4b09-9b9e-362558422439', 'restore']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', 'ee3d96b6-20b3-41d0-bbb1-70e7a7add2c0', 'scan']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', 'ee3d96b6-20b3-41d0-bbb1-70e7a7add2c0', 'checkhash']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', 'ee3d96b6-20b3-41d0-bbb1-70e7a7add2c0', 'repair']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'folder', 'ee3d96b6-20b3-41d0-bbb1-70e7a7add2c0', 'restore']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'scan']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'checkhash']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'delete']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'repair']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'file_system', 'file', 'deaeb707-de1b-4040-9462-f59941c5afd3', 'restore']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'scan']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'shutdown']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'startup']\n", + "['node', '0b14139f-d0d8-4656-b9de-587c53357d4c', 'reset']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'nic', 'aa5c5909-bf8c-4dce-8664-a74e9454cc4a', 'enable']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'nic', 'aa5c5909-bf8c-4dce-8664-a74e9454cc4a', 'disable']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'file_system', 'folder', '4b2f461c-ef93-4910-acc4-006d518c0d6e', 'scan']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'file_system', 'folder', '4b2f461c-ef93-4910-acc4-006d518c0d6e', 'checkhash']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'file_system', 'folder', '4b2f461c-ef93-4910-acc4-006d518c0d6e', 'repair']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'file_system', 'folder', '4b2f461c-ef93-4910-acc4-006d518c0d6e', 'restore']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'scan']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'shutdown']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'startup']\n", + "['node', '6c5cdd15-fdf8-4695-8462-8b8704ef616b', 'reset']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'nic', '21f32886-65e9-40a0-9483-a86e94dc0a3b', 'enable']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'nic', '21f32886-65e9-40a0-9483-a86e94dc0a3b', 'disable']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'file_system', 'folder', '9580a6b2-eeff-400a-948e-e8f3694dada0', 'scan']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'file_system', 'folder', '9580a6b2-eeff-400a-948e-e8f3694dada0', 'checkhash']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'file_system', 'folder', '9580a6b2-eeff-400a-948e-e8f3694dada0', 'repair']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'file_system', 'folder', '9580a6b2-eeff-400a-948e-e8f3694dada0', 'restore']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'scan']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'shutdown']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'startup']\n", + "['node', 'f8e4eebc-30b7-4d54-bbef-959e456a7649', 'reset']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'nic', 'a1287e24-97c6-4007-93ae-c6b5176f4fbe', 'enable']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'nic', 'a1287e24-97c6-4007-93ae-c6b5176f4fbe', 'disable']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'nic', '174b908b-e214-4efa-8837-d84924dad75f', 'enable']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'nic', '174b908b-e214-4efa-8837-d84924dad75f', 'disable']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'file_system', 'folder', '23d89e95-f6af-428d-809b-68c43c0d098a', 'scan']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'file_system', 'folder', '23d89e95-f6af-428d-809b-68c43c0d098a', 'checkhash']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'file_system', 'folder', '23d89e95-f6af-428d-809b-68c43c0d098a', 'repair']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'file_system', 'folder', '23d89e95-f6af-428d-809b-68c43c0d098a', 'restore']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'scan']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'shutdown']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'startup']\n", + "['node', '87190295-f369-49f4-ae7e-b5aced13bdf1', 'reset']\n" ] } ], "source": [ "for a in act_tree:\n", " print(a)\n", - "simController.apply_action(\n", - " {\n", - " 'network':'', \n", - " 'node': '26e189bb-442e-4f73-ab7a-1c4dd162e986', \n", - " 'nic': 'eb6dfd45-d688-47cf-b061-5f45820a6bc7', \n", - " 'verb': 'enable', \n", - " 'options':{'...':'...'}\n", - " })\n", + "# simController.apply_action(\n", + "# {\n", + "# 'network':'', \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': '',\n", - " 'target_type': '',\n", - " 'target_options': {\n", - " 'identifier': '',\n", + "# a = {\n", + "# 'target_type': 'network',\n", + "# 'target_options': {\n", + "# 'identifier': '',\n", + "# 'target_type': '',\n", + "# 'target_options': {\n", + "# 'identifier': '',\n", " \n", - " }\n", - " }\n", - "}\n", - "# ^ do something like this where the requests are k:v pairs instead, have a simple/similar approach " + "# }\n", + "# }\n", + "# }\n", + "# # ^ do something like this where the requests are k:v pairs instead, have a simple/similar approach " ] }, { diff --git a/src/primaite/simulator/file_system/file_system.py b/src/primaite/simulator/file_system/file_system.py index b2037729..cbe30c96 100644 --- a/src/primaite/simulator/file_system/file_system.py +++ b/src/primaite/simulator/file_system/file_system.py @@ -9,7 +9,7 @@ from typing import Dict, Optional from prettytable import MARKDOWN, PrettyTable from primaite import getLogger -from primaite.simulator.core import SimComponent +from primaite.simulator.core import Action, ActionManager, SimComponent from primaite.simulator.file_system.file_type import FileType, get_file_type_from_extension from primaite.simulator.system.core.sys_log import SysLog @@ -94,6 +94,17 @@ class FileSystem(SimComponent): if not self.folders: self.create_folder("root") + def _init_action_manager(self) -> ActionManager: + am = super()._init_action_manager() + + self._folder_action_manager = ActionManager() + am.add_action("folder", Action(func=self._folder_action_manager)) + + self._file_action_manager = ActionManager() + am.add_action("file", Action(func=self._file_action_manager)) + + return am + @property def size(self) -> int: """ @@ -154,6 +165,7 @@ class FileSystem(SimComponent): self.folders[folder.uuid] = folder self._folders_by_name[folder.name] = folder self.sys_log.info(f"Created folder /{folder.name}") + self._folder_action_manager.add_action(folder.uuid, Action(func=folder._action_manager)) return folder def delete_folder(self, folder_name: str): @@ -172,6 +184,7 @@ class FileSystem(SimComponent): self.folders.pop(folder.uuid) self._folders_by_name.pop(folder.name) self.sys_log.info(f"Deleted folder /{folder.name} and its contents") + self._folder_action_manager.remove_action(folder.uuid) else: _LOGGER.debug(f"Cannot delete folder as it does not exist: {folder_name}") @@ -213,6 +226,7 @@ class FileSystem(SimComponent): ) folder.add_file(file) self.sys_log.info(f"Created file /{file.path}") + self._file_action_manager.add_action(file.uuid, Action(func=file._action_manager)) return file def get_file(self, folder_name: str, file_name: str) -> Optional[File]: @@ -240,6 +254,7 @@ class FileSystem(SimComponent): file = folder.get_file(file_name) if file: folder.remove_file(file) + self._file_action_manager.remove_action(file.uuid) self.sys_log.info(f"Deleted file /{file.path}") def move_file(self, src_folder_name: str, src_file_name: str, dst_folder_name: str): @@ -317,6 +332,16 @@ class Folder(FileSystemItemABC): is_quarantined: bool = False "Flag that marks the folder as quarantined if true." + def _init_action_manager(sekf) -> ActionManager: + am = super()._init_action_manager() + + am.add_action("scan", Action(func=lambda request, context: ...)) # TODO implement action + am.add_action("checkhash", Action(func=lambda request, context: ...)) # TODO implement action + am.add_action("repair", Action(func=lambda request, context: ...)) # TODO implement action + am.add_action("restore", Action(func=lambda request, context: ...)) # TODO implement action + + return am + def describe_state(self) -> Dict: """ Produce a dictionary describing the current state of this object. @@ -482,6 +507,17 @@ class File(FileSystemItemABC): with open(self.sim_path, mode="a"): pass + def _init_action_manager(self) -> ActionManager: + am = super()._init_action_manager() + + am.add_action("scan", Action(func=lambda request, context: ...)) # TODO implement action + am.add_action("checkhash", Action(func=lambda request, context: ...)) # TODO implement action + am.add_action("delete", Action(func=lambda request, context: ...)) # TODO implement action + am.add_action("repair", Action(func=lambda request, context: ...)) # TODO implement action + am.add_action("restore", Action(func=lambda request, context: ...)) # TODO implement action + + return am + def make_copy(self, dst_folder: Folder) -> File: """ Create a copy of the current File object in the given destination folder. diff --git a/src/primaite/simulator/network/hardware/base.py b/src/primaite/simulator/network/hardware/base.py index 24844cc3..713c293b 100644 --- a/src/primaite/simulator/network/hardware/base.py +++ b/src/primaite/simulator/network/hardware/base.py @@ -951,15 +951,23 @@ class Node(SimComponent): # since there are potentially many services, create an action manager that can map service name self._service_action_manager = ActionManager() am.add_action("service", Action(func=self._service_action_manager)) - self._process_action_manager = ActionManager() - am.add_action("process", Action(func=self._process_action_manager)) - self._application_action_manager = ActionManager() - am.add_action("application", Action(func=self._application_action_manager)) self._nic_action_manager = ActionManager() am.add_action("nic", Action(func=self._nic_action_manager)) am.add_action("file_system", Action(func=self.file_system._action_manager)) + # currently we don't have any applications nor processes, so these will be empty + self._process_action_manager = ActionManager() + am.add_action("process", Action(func=self._process_action_manager)) + self._application_action_manager = ActionManager() + am.add_action("application", Action(func=self._application_action_manager)) + + am.add_action("scan", Action(func=lambda request, context: ...)) # TODO implement OS scan + + am.add_action("shutdown", Action(func=lambda request, context: self.power_off())) + am.add_action("startup", Action(func=lambda request, context: self.power_on())) + am.add_action("reset", Action(func=lambda request, context: ...)) # TODO implement node reset + return am def describe_state(self) -> Dict: